From 334d9d5970455b741bec8bfcbce1c2e5420e4776 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2026 19:10:17 +0000 Subject: [PATCH 001/280] Bump lodash from 4.17.23 to 4.18.1 in /frontend Bumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.18.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index a8cd0b52cf4..c126b748858 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -96,7 +96,7 @@ "jquery.cookie": "^1.4.1", "json5": "^2.2.2", "lit-html": "^3.3.2", - "lodash": "^4.17.23", + "lodash": "^4.18.1", "luxon": "^3.7.2", "mark.js": "^8.11.0", "mdx-embed": "^1.1.2", @@ -17961,9 +17961,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==" + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" }, "node_modules/lodash-es": { "version": "4.18.1", @@ -37549,9 +37549,9 @@ } }, "lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==" + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" }, "lodash-es": { "version": "4.18.1", diff --git a/frontend/package.json b/frontend/package.json index c06f5e829b7..e3b7e6774b8 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -151,7 +151,7 @@ "jquery.cookie": "^1.4.1", "json5": "^2.2.2", "lit-html": "^3.3.2", - "lodash": "^4.17.23", + "lodash": "^4.18.1", "luxon": "^3.7.2", "mark.js": "^8.11.0", "mdx-embed": "^1.1.2", From 1c5017d62c34577394902da57d4ae45c1d7affeb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Apr 2026 09:39:19 +0000 Subject: [PATCH 002/280] Bump follow-redirects from 1.15.6 to 1.16.0 in /frontend Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.6 to 1.16.0. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.6...v1.16.0) --- updated-dependencies: - dependency-name: follow-redirects dependency-version: 1.16.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- frontend/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6df5080db5d..4c94ae1b0cf 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -14956,9 +14956,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -35473,9 +35473,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==" }, "for-each": { "version": "0.3.5", From b3a14b74bf8af3e3f158e8700299cdcbd445f7ae Mon Sep 17 00:00:00 2001 From: Eric Schubert Date: Wed, 15 Apr 2026 16:55:31 +0200 Subject: [PATCH 003/280] [#73909] add new view component structure - https://community.openproject.org/work_packages/73909 - add new sections - add new border boxes for all sections - add collapsing logic - add empty state for the whole tab --- .../inline_page_links_component.html.erb | 18 ++++----- .../wikis/inline_page_links_component.rb | 17 +------- ...b => referencing_pages_component.html.erb} | 12 ++++-- ...nent.rb => referencing_pages_component.rb} | 9 +---- .../relation_page_links_component.html.erb | 16 ++++---- .../work_package_wikis_tab_component.html.erb | 39 +++++++++++++++++-- .../wikis/work_package_wikis_tab_component.rb | 18 +++++++++ .../app/services/wikis/page_link_service.rb | 14 ++++--- modules/wikis/config/locales/en.yml | 13 +++++-- 9 files changed, 99 insertions(+), 57 deletions(-) rename modules/wikis/app/components/wikis/{provider_link_group_component.html.erb => referencing_pages_component.html.erb} (74%) rename modules/wikis/app/components/wikis/{provider_link_group_component.rb => referencing_pages_component.rb} (86%) diff --git a/modules/wikis/app/components/wikis/inline_page_links_component.html.erb b/modules/wikis/app/components/wikis/inline_page_links_component.html.erb index 88b539035c6..8c21bb36055 100644 --- a/modules/wikis/app/components/wikis/inline_page_links_component.html.erb +++ b/modules/wikis/app/components/wikis/inline_page_links_component.html.erb @@ -28,20 +28,16 @@ See COPYRIGHT and LICENSE files for more details. ++#%> <%= - flex_layout do |container| - container.with_row(mb: 2) { render(Primer::Beta::Text.new(font_weight: :bold)) { t(".heading") } } - - if page_links.empty? - container.with_row do - render(Primer::Beta::Blankslate.new(border: false)) do |blankslate| - blankslate.with_heading(tag: :h2).with_content(t(".empty_heading")) - blankslate.with_description { t(".empty_text") } - end + render(Primer::Beta::BorderBox.new(padding: :condensed)) do |box| + box.with_header do + render(Primer::OpenProject::BorderBox::CollapsibleHeader.new(collapsed: true)) do |header| + header.with_title { t(".heading") } + header.with_count(count: inline_page_links.count) end end - page_links.each do |page_link| - container.with_row(mt: 3) { render(Wikis::PageLinkComponent.new(page_link)) } + inline_page_links.each do |page_link| + box.with_row { render(Wikis::PageLinkComponent.new(page_link)) } end end %> diff --git a/modules/wikis/app/components/wikis/inline_page_links_component.rb b/modules/wikis/app/components/wikis/inline_page_links_component.rb index cc3c7e44407..2776668a07e 100644 --- a/modules/wikis/app/components/wikis/inline_page_links_component.rb +++ b/modules/wikis/app/components/wikis/inline_page_links_component.rb @@ -33,21 +33,6 @@ module Wikis include ApplicationHelper include OpPrimer::ComponentHelpers - alias_method :provider, :model - - def initialize(model = nil, work_package: nil, **) - @work_package = work_package - super(model, **) - end - - def page_links - @page_links ||= page_link_service.inline_page_links_for(provider:, linkable: @work_package) - end - - private - - def page_link_service - @page_link_service ||= PageLinkService.new - end + alias_method :inline_page_links, :model end end diff --git a/modules/wikis/app/components/wikis/provider_link_group_component.html.erb b/modules/wikis/app/components/wikis/referencing_pages_component.html.erb similarity index 74% rename from modules/wikis/app/components/wikis/provider_link_group_component.html.erb rename to modules/wikis/app/components/wikis/referencing_pages_component.html.erb index 8f6fb847895..f1be4032537 100644 --- a/modules/wikis/app/components/wikis/provider_link_group_component.html.erb +++ b/modules/wikis/app/components/wikis/referencing_pages_component.html.erb @@ -28,12 +28,16 @@ See COPYRIGHT and LICENSE files for more details. ++#%> <%= - render(Primer::Beta::BorderBox.new) do |box| + render(Primer::Beta::BorderBox.new(padding: :condensed)) do |box| box.with_header do - render(Primer::Beta::Text.new(font_weight: :bold)) { provider.name } + render(Primer::OpenProject::BorderBox::CollapsibleHeader.new(collapsed: true)) do |header| + header.with_title { t(".heading") } + header.with_count(count: referencing_page_links.count) + end end - box.with_row { render(Wikis::RelationPageLinksComponent.new(provider, work_package: @work_package)) } - box.with_row { render(Wikis::InlinePageLinksComponent.new(provider, work_package: @work_package)) } + referencing_page_links.each do |page_link| + box.with_row { render(Wikis::PageLinkComponent.new(page_link)) } + end end %> diff --git a/modules/wikis/app/components/wikis/provider_link_group_component.rb b/modules/wikis/app/components/wikis/referencing_pages_component.rb similarity index 86% rename from modules/wikis/app/components/wikis/provider_link_group_component.rb rename to modules/wikis/app/components/wikis/referencing_pages_component.rb index bb99600b8e0..0e494f1d10f 100644 --- a/modules/wikis/app/components/wikis/provider_link_group_component.rb +++ b/modules/wikis/app/components/wikis/referencing_pages_component.rb @@ -29,15 +29,10 @@ #++ module Wikis - class ProviderLinkGroupComponent < ApplicationComponent + class ReferencingPagesComponent < ApplicationComponent include ApplicationHelper include OpPrimer::ComponentHelpers - alias_method :provider, :model - - def initialize(model = nil, work_package: nil, **) - @work_package = work_package - super(model, **) - end + alias_method :referencing_page_links, :model end end diff --git a/modules/wikis/app/components/wikis/relation_page_links_component.html.erb b/modules/wikis/app/components/wikis/relation_page_links_component.html.erb index ba7a0d0b9f0..ad2989ce32b 100644 --- a/modules/wikis/app/components/wikis/relation_page_links_component.html.erb +++ b/modules/wikis/app/components/wikis/relation_page_links_component.html.erb @@ -28,11 +28,13 @@ See COPYRIGHT and LICENSE files for more details. ++#%> <%= - flex_layout do |container| - container.with_row(mb: 2) do - flex_layout(justify_content: :space_between, align_items: :center) do |header| - header.with_column { render(Primer::Beta::Text.new(font_weight: :bold)) { t(".heading") } } - + render(Primer::Beta::BorderBox.new(padding: :condensed)) do |box| + box.with_header do + flex_layout(align_items: :center, justify_content: :space_between) do |header| + header.with_column do + concat(render(Primer::Beta::Text.new(font_weight: :bold, mr: 2)) { provider.name }) + concat(render(Primer::Beta::Counter.new(count: page_links.count, round: true, scheme: :primary))) + end header.with_column do render(Primer::Alpha::ActionMenu.new) do |menu| menu.with_show_button(disabled: true) do |button| @@ -49,7 +51,7 @@ See COPYRIGHT and LICENSE files for more details. end if page_links.empty? - container.with_row do + box.with_row do render(Primer::Beta::Blankslate.new(border: false)) do |blankslate| blankslate.with_heading(tag: :h2).with_content(t(".empty_heading")) blankslate.with_description { t(".empty_text") } @@ -58,7 +60,7 @@ See COPYRIGHT and LICENSE files for more details. end page_links.each do |page_link| - container.with_row(mt: 3) { render(Wikis::PageLinkComponent.new(page_link)) } + box.with_row { render(Wikis::PageLinkComponent.new(page_link)) } end end %> diff --git a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb index 01814295be3..31ac1bead97 100644 --- a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb +++ b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb @@ -30,10 +30,41 @@ See COPYRIGHT and LICENSE files for more details. <%= content_tag("turbo-frame", id: "work-package-wikis-tab-content") do component_wrapper do - flex_layout(test_selector: "op-work-package-wikis-tab-container") do |flex| - providers.each do |provider| - flex.with_row(mb: 3) do - render(Wikis::ProviderLinkGroupComponent.new(provider, work_package:)) + flex_layout(test_selector: "op-work-package-wikis-tab-container") do |container| + if providers.empty? + container.with_row do + render(Primer::Beta::Blankslate.new(border: false)) do |blankslate| + blankslate.with_heading(tag: :h2).with_content(t(".blankslate.heading")) + blankslate.with_description { t(".blankslate.description") } + end + end + else + container.with_row do + render(Primer::Beta::Heading.new(tag: :h4, mb: 3)) { t(".relation_page_links") } + end + + providers.each do |provider| + container.with_row(mb: 3) do + render(::Wikis::RelationPageLinksComponent.new(provider, work_package:)) + end + end + + if show_inline_and_references_section? + container.with_row(mb: 3) do + render(Primer::Beta::Heading.new(tag: :h4)) { t(".inline_page_links_and_references") } + end + end + + if inline_page_links.any? + container.with_row(mb: 3) do + render(::Wikis::InlinePageLinksComponent.new(inline_page_links)) + end + end + + if referencing_wiki_pages.any? + container.with_row(mb: 3) do + render(::Wikis::ReferencingPagesComponent.new(referencing_wiki_pages)) + end end end end diff --git a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.rb b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.rb index 254a45684e9..182dd48a75e 100644 --- a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.rb +++ b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.rb @@ -39,5 +39,23 @@ module Wikis def providers Wikis::Provider.enabled end + + def show_inline_and_references_section? + inline_page_links.any? || referencing_wiki_pages.any? + end + + def inline_page_links + @inline_page_links ||= page_link_service.inline_page_links_for(linkable: work_package) + end + + def referencing_wiki_pages + @referencing_wiki_pages ||= page_link_service.referencing_wiki_pages_for(linkable: work_package) + end + + private + + def page_link_service + @page_link_service ||= PageLinkService.new + end end end diff --git a/modules/wikis/app/services/wikis/page_link_service.rb b/modules/wikis/app/services/wikis/page_link_service.rb index edf3a234c17..3f58978019c 100644 --- a/modules/wikis/app/services/wikis/page_link_service.rb +++ b/modules/wikis/app/services/wikis/page_link_service.rb @@ -48,11 +48,15 @@ module Wikis .order(created_at: :desc) end - def inline_page_links_for(provider:, linkable:) - provider.page_links - .merge(InlinePageLink.all) - .where(linkable:) - .order(created_at: :desc) + def inline_page_links_for(linkable:) + InlinePageLink.where(linkable:) + .order(created_at: :desc) + end + + def referencing_wiki_pages_for(*) + # TODO: iterate over all providers and fetch mentions of this linkable + + [] end end end diff --git a/modules/wikis/config/locales/en.yml b/modules/wikis/config/locales/en.yml index 3ebdc90b179..af2a3a8eb40 100644 --- a/modules/wikis/config/locales/en.yml +++ b/modules/wikis/config/locales/en.yml @@ -27,16 +27,23 @@ en: buttons: save_and_continue: Save and continue wiki_page: Wiki page + work_package_wikis_tab_component: + relation_page_links: Related pages + inline_page_links_and_references: Inline page links and references + blankslate: + heading: No wiki providers enabled + description: >- + There are no wiki providers configured and enabled. Wiki page links can only be added for enabled providers. + To add wiki providers, visit Administration > Wikis. inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. heading: Inline page links + referencing_pages_component: + heading: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages admin: wiki_providers: index_description: Add an external wiki service to link work packages to existing wiki pages or create new ones directly from OpenProject. From a55630776973bd080d43b6ebb54750ce0e12033a Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 15 Apr 2026 20:03:16 +0300 Subject: [PATCH 004/280] Use formattedId in autocompleter and global search results These templates were still using hard-coded #{{ item.id }} which shows the numeric PK instead of the semantic identifier in search dropdowns and autocomplete results. --- .../global_search/input/global-search-input.component.html | 2 +- .../op-autocompleter/op-autocompleter.component.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/core/global_search/input/global-search-input.component.html b/frontend/src/app/core/global_search/input/global-search-input.component.html index 79ba5b741a7..0a5d28b4fc4 100644 --- a/frontend/src/app/core/global_search/input/global-search-input.component.html +++ b/frontend/src/app/core/global_search/input/global-search-input.component.html @@ -88,7 +88,7 @@ {{ item.type.name }} - #{{ item.id }} + {{ item.formattedId }} {{ item.status.name }} diff --git a/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html b/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html index e48812d1d84..256d20bac57 100644 --- a/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html +++ b/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html @@ -177,7 +177,7 @@ #{{ item.id }} + >{{ item.formattedId }} - {{ item.type?.name }} #{{ item.id }} {{ item.subject || item.name }} + {{ item.type?.name }} {{ item.formattedId }} {{ item.subject || item.name }} } } From 8a5034c0b86d062b36c4c0583c92d7186dfa1bb9 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 13 Apr 2026 14:24:10 +0300 Subject: [PATCH 005/280] Use displayId in work package URLs for semantic identifier routing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Routes already accept semantic identifiers (e.g. PROJ-7) via WP_ID_URL_PATTERN, but all frontend-generated links still used numeric PKs. This wires displayId into every navigation path so the browser URL bar shows the semantic form when available. Key design decision: data-work-package-id attributes on elements stay numeric — the selection/hover system is keyed by PK. Only the href gets the semantic ID via a new optional routingId parameter on UiStateLinkBuilder. Changes span table links (ID column, linked WP fields, details action), navigation handlers (list view, embedded tables, boards, BCF, calendar), breadcrumbs, tabs, hierarchy, single view, context menu, quickinfo macro, and post-creation redirect. API-only paths (time entries, share, hover cards, progress modal) are deliberately left with numeric IDs — they never appear in the address bar. --- .../ifc_models/bcf/list/bcf-list.component.ts | 8 +++++++- .../board/board-list/board-list.component.ts | 15 ++++++++++++--- .../board-list-container.component.ts | 7 ++++++- .../op-work-packages-calendar.service.ts | 13 +++++++++++-- .../wp-calendar/wp-calendar.component.ts | 7 ++++--- .../wp-breadcrumb-parent.component.ts | 3 ++- .../wp-breadcrumb/wp-breadcrumb.component.ts | 3 ++- .../builders/ui-state-link-builder.ts | 17 ++++++++--------- .../components/wp-new/wp-create.component.ts | 5 +++-- .../wp-relations-hierarchy.directive.ts | 2 +- .../wp-single-view/wp-single-view.component.ts | 3 ++- .../embedded/wp-embedded-table.component.ts | 14 ++++++++++++-- .../actions/details-table-action.ts | 2 ++ .../components/wp-tabs/wp-tabs.component.ts | 4 ++-- .../wp-list-view/wp-list-view.component.ts | 13 +++++++++++-- .../linked-work-package-display-field.module.ts | 2 ++ .../work-package-display-field.module.ts | 12 ++++++++++++ .../wp-id-display-field.module.spec.ts | 14 +++++++++++++- .../field-types/wp-id-display-field.module.ts | 3 +++ .../macros/work-package-quickinfo-macro.html | 2 +- .../wp-view-context-menu.directive.ts | 6 ++++-- 21 files changed, 120 insertions(+), 35 deletions(-) diff --git a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts index 6593200dd8f..e2adef37db5 100644 --- a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts +++ b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts @@ -129,8 +129,14 @@ export class BcfListComponent extends WorkPackageListViewComponent implements Un : 'bim.partitioned.show'; // Passing the card param to the new state because the router doesn't keep // it when going to 'bim.partitioned.show' - const params = { workPackageId, cards, focus }; + const routingId = this.resolveRoutingId(workPackageId); + const params = { workPackageId: routingId, cards, focus }; void this.$state.go(stateToGo, params); } + + private resolveRoutingId(workPackageId:string):string { + const wp = this.states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; + } } diff --git a/frontend/src/app/features/boards/board/board-list/board-list.component.ts b/frontend/src/app/features/boards/board/board-list/board-list.component.ts index baa4f648b35..680e309e084 100644 --- a/frontend/src/app/features/boards/board/board-list/board-list.component.ts +++ b/frontend/src/app/features/boards/board/board-list/board-list.component.ts @@ -26,6 +26,7 @@ import { AuthorisationService } from 'core-app/core/model-auth/model-auth.servic import { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions'; import { WorkPackageCardViewComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component'; import { WorkPackageStatesInitializationService } from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service'; +import { States } from 'core-app/core/states/states.service'; import { BoardService } from 'core-app/features/boards/board/board.service'; import { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; import { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service'; @@ -175,6 +176,7 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni readonly keepTab:KeepTabService, readonly currentProject:CurrentProjectService, readonly pathHelper:PathHelperService, + readonly states:States, ) { super(I18n, injector); } @@ -488,17 +490,19 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni openFullViewOnDoubleClick(event:{ workPackageId:string, double:boolean }) { if (event.double) { + const routingId = this.resolveRoutingId(event.workPackageId); const projectIdentifier = this.currentProject.identifier; - const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, event.workPackageId) + window.location.search; + const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; Turbo.visit(link, { action: 'advance' }); } } openStateLink(event:{ workPackageId:string; requestedState:string }) { + const routingId = this.resolveRoutingId(event.workPackageId); if (event.requestedState === 'split') { - this.goToSplitView(event.workPackageId); + this.goToSplitView(routingId); } else { - this.keepTab.goCurrentShowState(event.workPackageId); + this.keepTab.goCurrentShowState(routingId); } } @@ -509,6 +513,11 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni Turbo.visit(link, { frame: 'content-bodyRight', action: 'advance' }); } + private resolveRoutingId(workPackageId:string):string { + const wp = this.states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; + } + private schema(workPackage:WorkPackageResource) { return this.schemaCache.of(workPackage); } diff --git a/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts b/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts index fba32f8b51d..084aa45c966 100644 --- a/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts +++ b/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts @@ -39,6 +39,7 @@ import { import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; import { CurrentProjectService } from 'core-app/core/current-project/current-project.service'; +import { States } from 'core-app/core/states/states.service'; @Component({ selector: 'board-list-container', @@ -109,6 +110,7 @@ export class BoardListContainerComponent extends UntilDestroyedMixin implements readonly QueryUpdated:QueryUpdatedService, readonly pathHelper:PathHelperService, readonly currentProject:CurrentProjectService, + readonly wpStates:States, ) { super(); } @@ -134,7 +136,10 @@ export class BoardListContainerComponent extends UntilDestroyedMixin implements filter(() => window.location.pathname.includes('/details/')), ).subscribe((selection) => { // Update split screen - const base = this.pathHelper.boardDetailsPath(this.currentProject.identifier, id, selection.focusedWorkPackage!); + const wpId = selection.focusedWorkPackage!; + const wp = this.wpStates.workPackages.get(wpId)?.value; + const routingId = wp?.displayId ?? wpId; + const base = this.pathHelper.boardDetailsPath(this.currentProject.identifier, id, routingId); const search = window.location.search; Turbo.visit(search ? `${base}${search}` : base, { frame: 'content-bodyRight', action: 'advance' }); }); diff --git a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts index 86dbd0c0d09..d5dfb0c17b7 100644 --- a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts @@ -53,6 +53,7 @@ import { uiStateLinkClass, } from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder'; import { debugLog } from 'core-app/shared/helpers/debug_output'; +import { States } from 'core-app/core/states/states.service'; import { WorkPackageViewContextMenu, } from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive'; @@ -112,6 +113,7 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { readonly calendarService:OpCalendarService, readonly weekdayService:WeekdayService, readonly dayService:DayResourceService, + readonly states:States, ) { super(); } @@ -287,21 +289,28 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { return; } + const routingId = this.resolveRoutingId(id); void this.$state.go( `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: id, tabIdentifier: 'overview' }, + { workPackageId: routingId, tabIdentifier: 'overview' }, ); } public openFullView(id:string):void { this.wpTableSelection.setSelection(id, -1); + const routingId = this.resolveRoutingId(id); void this.$state.go( 'work-packages.show', - { workPackageId: id }, + { workPackageId: routingId }, ); } + private resolveRoutingId(workPackageId:string):string { + const wp = this.states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; + } + public onCardClicked({ workPackageId, event }:{ workPackageId:string, event:MouseEvent }):void { if (isClickedWithModifier(event)) { return; diff --git a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts index e0f6f2f5f2c..d1c36055438 100644 --- a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts +++ b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts @@ -342,15 +342,16 @@ export class WorkPackagesCalendarComponent extends UntilDestroyedMixin implement } if (evt.event.extendedProps.workPackage) { - const workPackageId = (evt.event.extendedProps.workPackage as WorkPackageResource).id!; + const wp = evt.event.extendedProps.workPackage as WorkPackageResource; // Currently the calendar widget is shown on multiple pages, // but only the calendar module itself is a partitioned query space which can deal with a split screen request if (this.$state.includes('calendar')) { - this.workPackagesCalendar.openSplitView(workPackageId); + this.workPackagesCalendar.openSplitView(wp.id!); } else { + const routingId = wp.displayId ?? wp.id!; void this.$state.go( 'work-packages.show', - { workPackageId }, + { workPackageId: routingId }, ); } } diff --git a/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.component.ts b/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.component.ts index 2adba03db45..7356201814a 100644 --- a/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.component.ts @@ -115,6 +115,7 @@ export class WorkPackageBreadcrumbParentComponent { } public parentLink(parent:WorkPackageResource):string { - return this.pathHelper.genericWorkPackagePath(parent.project?.identifier, parent.id!) + window.location.search; + const routingId = parent.displayId ?? parent.id!; + return this.pathHelper.genericWorkPackagePath(parent.project?.identifier, routingId) + window.location.search; } } diff --git a/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb.component.ts b/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb.component.ts index f56b4b1a23a..4e763cfa1f0 100644 --- a/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb.component.ts @@ -65,7 +65,8 @@ export class WorkPackageBreadcrumbComponent { } public ancestorPath(ancestor:WorkPackageResource):string { - return this.pathHelper.genericWorkPackagePath(this.workPackage.project?.identifier, ancestor.id!) + window.location.search; + const routingId = ancestor.displayId ?? ancestor.id!; + return this.pathHelper.genericWorkPackagePath(this.workPackage.project?.identifier, routingId) + window.location.search; } public updateActiveInput(val:boolean) { diff --git a/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts b/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts index 7446a591bc6..5b908ad3cdd 100644 --- a/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts +++ b/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts @@ -16,29 +16,28 @@ export class UiStateLinkBuilder { ) { } - public linkToDetails(workPackageId:string, title:string, content:string) { - return this.build(workPackageId, 'split', title, content); + public linkToDetails(workPackageId:string, title:string, content:string, routingId?:string) { + return this.build(workPackageId, 'split', title, content, routingId); } - public linkToShow(workPackageId:string, title:string, content:string) { - return this.build(workPackageId, 'show', title, content); + public linkToShow(workPackageId:string, title:string, content:string, routingId?:string) { + return this.build(workPackageId, 'show', title, content, routingId); } - private build(workPackageId:string, state:'show'|'split', title:string, content:string) { + private build(workPackageId:string, state:'show'|'split', title:string, content:string, routingId?:string) { const a = document.createElement('a'); - let tabState:string; - let tabIdentifier:string; + const idForHref = routingId ?? workPackageId; let href:string; if (state === 'show') { const projectIdentifier = this.currentProject.identifier; - href = this.pathHelper.genericWorkPackagePath(projectIdentifier, workPackageId, this.keepTab.currentShowTab) + window.location.search; + href = this.pathHelper.genericWorkPackagePath(projectIdentifier, idForHref, this.keepTab.currentShowTab) + window.location.search; } else { const tab = this.keepTab.currentDetailsTab; href = this.$state.href( 'work-packages.partitioned.list.details.tabs', { - workPackageId, + workPackageId: idForHref, tab, }, ); diff --git a/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts b/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts index 77a0449e7f8..c4c92021944 100644 --- a/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts @@ -130,15 +130,16 @@ export class WorkPackageCreateComponent extends UntilDestroyedMixin implements O this.editForm?.cancel(false); + const routingId = savedResource.displayId ?? savedResource.id!; if(this.routedFromAngular && this.successState) { - this.$state.go(this.successState, { workPackageId: savedResource.id }) + this.$state.go(this.successState, { workPackageId: routingId }) .then(() => { this.wpViewFocus.updateFocus(savedResource.id!); this.notificationService.showSave(savedResource, isInitial); }); } else { window.OpenProject.pageState = 'submitted'; - Turbo.visit(this.pathHelper.projectWorkPackagePath(savedResource.project.identifier, savedResource.id!) + window.location.search); + Turbo.visit(this.pathHelper.projectWorkPackagePath(savedResource.project.identifier, routingId) + window.location.search); } } diff --git a/frontend/src/app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.directive.ts b/frontend/src/app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.directive.ts index 1249d28bbe7..c1075e0a86c 100644 --- a/frontend/src/app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.directive.ts +++ b/frontend/src/app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.directive.ts @@ -81,7 +81,7 @@ export class WorkPackageRelationsHierarchyComponent extends UntilDestroyedMixin }; ngOnInit() { - this.workPackagePath = this.PathHelper.workPackagePath(this.workPackage.id!); + this.workPackagePath = this.PathHelper.workPackagePath(this.workPackage.displayId ?? this.workPackage.id!); this.canModifyHierarchy = !!this.workPackage.changeParent; this.canAddRelation = !!this.workPackage.addRelation; diff --git a/frontend/src/app/features/work-packages/components/wp-single-view/wp-single-view.component.ts b/frontend/src/app/features/work-packages/components/wp-single-view/wp-single-view.component.ts index 2dd276ba813..fdeb04d11dc 100644 --- a/frontend/src/app/features/work-packages/components/wp-single-view/wp-single-view.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-single-view/wp-single-view.component.ts @@ -203,9 +203,10 @@ export class WorkPackageSingleViewComponent extends UntilDestroyedMixin implemen throw new Error('work package id is invalid'); } + const routingId = this.workPackage.displayId ?? workPackageId; this.projectContext = { id: project.id, - href: this.PathHelper.projectWorkPackagePath(project.id, workPackageId), + href: this.PathHelper.projectWorkPackagePath(project.id, routingId), matches: project.href === this.currentProject.apiv3Path, }; } diff --git a/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts b/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts index d2306ca88d4..b90d118e90c 100644 --- a/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts @@ -23,6 +23,7 @@ import { InjectField } from 'core-app/shared/helpers/angular/inject-field.decora import { KeepTabService, } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service'; +import { States } from 'core-app/core/states/states.service'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { firstValueFrom } from 'rxjs'; import { QueryRequestParams } from 'core-app/features/work-packages/components/wp-query/url-params-helper'; @@ -63,6 +64,8 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo @InjectField() keepTab:KeepTabService; + @InjectField() states:States; + // Cache the form promise private formPromise:Promise|undefined; @@ -190,15 +193,17 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo handleWorkPackageClicked(event:{ workPackageId:string; double:boolean }) { if (event.double) { + const routingId = this.resolveRoutingId(event.workPackageId); const projectIdentifier = this.currentProject.identifier; - const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, event.workPackageId) + window.location.search; + const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; Turbo.visit(link, { action: 'advance' }); } } openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) { + const routingId = this.resolveRoutingId(event.workPackageId); const params = { - workPackageId: event.workPackageId, + workPackageId: routingId, focus: true, }; @@ -208,4 +213,9 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo this.keepTab.goCurrentShowState(params.workPackageId); } } + + private resolveRoutingId(workPackageId:string):string { + const wp = this.states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; + } } diff --git a/frontend/src/app/features/work-packages/components/wp-table/table-actions/actions/details-table-action.ts b/frontend/src/app/features/work-packages/components/wp-table/table-actions/actions/details-table-action.ts index e9ae14b0260..74a0b24fe1a 100644 --- a/frontend/src/app/features/work-packages/components/wp-table/table-actions/actions/details-table-action.ts +++ b/frontend/src/app/features/work-packages/components/wp-table/table-actions/actions/details-table-action.ts @@ -24,10 +24,12 @@ export class OpDetailsTableAction extends OpTableAction { public buildElement() { // Append details button + const routingId = this.workPackage.displayId ?? this.workPackage.id!; const detailsLink = this.uiStatebuilder.linkToDetails( this.workPackage.id!, this.text.button, '', + routingId, ); detailsLink.classList.add(detailsLinkClassName, contextColumnIcon, 'hidden-for-mobile'); diff --git a/frontend/src/app/features/work-packages/components/wp-tabs/components/wp-tabs/wp-tabs.component.ts b/frontend/src/app/features/work-packages/components/wp-tabs/components/wp-tabs/wp-tabs.component.ts index cd6bea042e3..551bfcb2790 100644 --- a/frontend/src/app/features/work-packages/components/wp-tabs/components/wp-tabs/wp-tabs.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-tabs/components/wp-tabs/wp-tabs.component.ts @@ -72,13 +72,13 @@ export class WpTabsComponent implements OnInit { return ({ ...tab, - path: this.pathHelper.genericWorkPackagePath(this.currentProject.identifier, this.workPackage.id!, tab.id), + path: this.pathHelper.genericWorkPackagePath(this.currentProject.identifier, this.workPackage.displayId ?? this.workPackage.id!, tab.id), }); }); } public switchToFullscreen():void { - this.keepTab.goCurrentShowState(this.workPackage.id!); + this.keepTab.goCurrentShowState(this.workPackage.displayId ?? this.workPackage.id!); } public close():void { diff --git a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts index 913a7fa4b57..da003c7def8 100644 --- a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts +++ b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts @@ -57,6 +57,7 @@ import { KeepTabService } from 'core-app/features/work-packages/components/wp-si import { WorkPackageViewBaselineService } from '../wp-view-base/view-services/wp-view-baseline.service'; import { combineLatest } from 'rxjs'; import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; +import { States } from 'core-app/core/states/states.service'; @Component({ selector: 'wp-list-view', @@ -85,6 +86,7 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements readonly elementRef = inject>(ElementRef); readonly wpTableBaseline = inject(WorkPackageViewBaselineService); readonly pathHelper = inject(PathHelperService); + readonly states = inject(States); text = { jump_to_pagination: this.I18n.t('js.work_packages.jump_marks.pagination'), @@ -178,8 +180,9 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements } openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) { + const routingId = this.resolveRoutingId(event.workPackageId); const params = { - workPackageId: event.workPackageId, + workPackageId: routingId, focus: true, }; @@ -203,7 +206,13 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements } private openInFullView(workPackageId:string) { + const routingId = this.resolveRoutingId(workPackageId); const projectIdentifier = this.CurrentProject.identifier; - window.location.href = this.pathHelper.genericWorkPackagePath(projectIdentifier, workPackageId) + window.location.search; + window.location.href = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; + } + + private resolveRoutingId(workPackageId:string):string { + const wp = this.states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; } } diff --git a/frontend/src/app/shared/components/fields/display/field-types/linked-work-package-display-field.module.ts b/frontend/src/app/shared/components/fields/display/field-types/linked-work-package-display-field.module.ts index 28ab5c4b385..2d1b247c619 100644 --- a/frontend/src/app/shared/components/fields/display/field-types/linked-work-package-display-field.module.ts +++ b/frontend/src/app/shared/components/fields/display/field-types/linked-work-package-display-field.module.ts @@ -56,10 +56,12 @@ export class LinkedWorkPackageDisplayField extends WorkPackageDisplayField { return; } + const routingId = this.wpRoutingId; const link = this.uiStateBuilder.linkToShow( this.wpId, this.text.linkTitle, this.valueString, + routingId, ); const title = document.createElement('span'); diff --git a/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts b/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts index 148b55517a2..3a828b0701f 100644 --- a/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts +++ b/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts @@ -57,6 +57,18 @@ export class WorkPackageDisplayField extends DisplayField { return this.value.href.match(/(\d+)$/)[0]; } + /** + * Returns the semantic identifier for URL routing when available, + * falling back to the numeric ID. Used in hrefs for pretty URLs. + */ + public get wpRoutingId():string { + if (this.value?.$loaded && this.value.displayId) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-call + return this.value.displayId.toString(); + } + return this.wpId; + } + /** * Returns the work package ID formatted for display. * Classic mode: `#123` (hash-prefixed), Semantic mode: `PROJ-42` (no prefix). diff --git a/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.spec.ts b/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.spec.ts index 1192c9d9eb7..ea6a8647423 100644 --- a/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.spec.ts +++ b/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.spec.ts @@ -75,7 +75,19 @@ describe('WorkPackageIdDisplayField', () => { expect(link!.textContent).toEqual('PROJ-7'); }); - it('uses the numeric id for routing (data-work-package-id)', () => { + it('uses the semantic displayId in the href for pretty URLs', () => { + buildField({ id: '42', displayId: 'PROJ-7' }); + + const container = document.createElement('span'); + field.render(container, 'PROJ-7'); + + const link = container.querySelector('a'); + + expect(link).toBeTruthy(); + expect(link!.href).toContain('/work_packages/PROJ-7'); + }); + + it('keeps the numeric id in data-work-package-id for selection', () => { buildField({ id: '42', displayId: 'PROJ-7' }); const container = document.createElement('span'); diff --git a/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.ts b/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.ts index 1d67e453921..a896cf6fa7f 100644 --- a/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.ts +++ b/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.ts @@ -54,11 +54,14 @@ export class WorkPackageIdDisplayField extends IdDisplayField { if (!this.value) { return; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-call + const routingId:string = this.resource.displayId?.toString() ?? this.value?.toString(); const link = this.uiStateBuilder.linkToShow( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument this.value, displayText, displayText, + routingId, ); element.appendChild(link); diff --git a/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.html b/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.html index 602cf75a37f..83dc76904d6 100644 --- a/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.html +++ b/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.html @@ -10,7 +10,7 @@ fieldName="type" /> {{workPackage.formattedId}}: diff --git a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts index f4e6953a8fe..2392f5b3af8 100644 --- a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts +++ b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts @@ -137,12 +137,14 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { void this.turboRequests.requestStream(String(link)); break; - case 'relations': + case 'relations': { + const routingId = this.workPackage.displayId ?? this.workPackageId; void this.$state.go( `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: this.workPackageId, tabIdentifier: 'relations' }, + { workPackageId: routingId, tabIdentifier: 'relations' }, ); break; + } default: window.location.href = link!; From 318700b6ab1107a496b7df440d1a7fdb1c0b44c4 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 13 Apr 2026 15:49:00 +0300 Subject: [PATCH 006/280] Split: keep only href-only displayId changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stateful navigation changes ($state.go callers) moved to a follow-up PR with P1 bug fixes for focus/selection, card highlight, bulk delete, and cache coherence. Retained changes only modify href attributes and URL strings — click handlers still read data-work-package-id (numeric PK), so no semantic IDs leak into Angular state params. --- .../bim/ifc_models/bcf/list/bcf-list.component.ts | 8 +------- .../board/board-list/board-list.component.ts | 15 +++------------ .../calendar/op-work-packages-calendar.service.ts | 13 ++----------- .../calendar/wp-calendar/wp-calendar.component.ts | 7 +++---- .../components/wp-new/wp-create.component.ts | 5 ++--- .../embedded/wp-embedded-table.component.ts | 14 ++------------ .../wp-list-view/wp-list-view.component.ts | 13 ++----------- .../wp-view-context-menu.directive.ts | 6 ++---- 8 files changed, 17 insertions(+), 64 deletions(-) diff --git a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts index e2adef37db5..6593200dd8f 100644 --- a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts +++ b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts @@ -129,14 +129,8 @@ export class BcfListComponent extends WorkPackageListViewComponent implements Un : 'bim.partitioned.show'; // Passing the card param to the new state because the router doesn't keep // it when going to 'bim.partitioned.show' - const routingId = this.resolveRoutingId(workPackageId); - const params = { workPackageId: routingId, cards, focus }; + const params = { workPackageId, cards, focus }; void this.$state.go(stateToGo, params); } - - private resolveRoutingId(workPackageId:string):string { - const wp = this.states.workPackages.get(workPackageId)?.value; - return wp?.displayId ?? workPackageId; - } } diff --git a/frontend/src/app/features/boards/board/board-list/board-list.component.ts b/frontend/src/app/features/boards/board/board-list/board-list.component.ts index 680e309e084..baa4f648b35 100644 --- a/frontend/src/app/features/boards/board/board-list/board-list.component.ts +++ b/frontend/src/app/features/boards/board/board-list/board-list.component.ts @@ -26,7 +26,6 @@ import { AuthorisationService } from 'core-app/core/model-auth/model-auth.servic import { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions'; import { WorkPackageCardViewComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component'; import { WorkPackageStatesInitializationService } from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service'; -import { States } from 'core-app/core/states/states.service'; import { BoardService } from 'core-app/features/boards/board/board.service'; import { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; import { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service'; @@ -176,7 +175,6 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni readonly keepTab:KeepTabService, readonly currentProject:CurrentProjectService, readonly pathHelper:PathHelperService, - readonly states:States, ) { super(I18n, injector); } @@ -490,19 +488,17 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni openFullViewOnDoubleClick(event:{ workPackageId:string, double:boolean }) { if (event.double) { - const routingId = this.resolveRoutingId(event.workPackageId); const projectIdentifier = this.currentProject.identifier; - const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; + const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, event.workPackageId) + window.location.search; Turbo.visit(link, { action: 'advance' }); } } openStateLink(event:{ workPackageId:string; requestedState:string }) { - const routingId = this.resolveRoutingId(event.workPackageId); if (event.requestedState === 'split') { - this.goToSplitView(routingId); + this.goToSplitView(event.workPackageId); } else { - this.keepTab.goCurrentShowState(routingId); + this.keepTab.goCurrentShowState(event.workPackageId); } } @@ -513,11 +509,6 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni Turbo.visit(link, { frame: 'content-bodyRight', action: 'advance' }); } - private resolveRoutingId(workPackageId:string):string { - const wp = this.states.workPackages.get(workPackageId)?.value; - return wp?.displayId ?? workPackageId; - } - private schema(workPackage:WorkPackageResource) { return this.schemaCache.of(workPackage); } diff --git a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts index d5dfb0c17b7..86dbd0c0d09 100644 --- a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts @@ -53,7 +53,6 @@ import { uiStateLinkClass, } from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder'; import { debugLog } from 'core-app/shared/helpers/debug_output'; -import { States } from 'core-app/core/states/states.service'; import { WorkPackageViewContextMenu, } from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive'; @@ -113,7 +112,6 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { readonly calendarService:OpCalendarService, readonly weekdayService:WeekdayService, readonly dayService:DayResourceService, - readonly states:States, ) { super(); } @@ -289,28 +287,21 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { return; } - const routingId = this.resolveRoutingId(id); void this.$state.go( `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: routingId, tabIdentifier: 'overview' }, + { workPackageId: id, tabIdentifier: 'overview' }, ); } public openFullView(id:string):void { this.wpTableSelection.setSelection(id, -1); - const routingId = this.resolveRoutingId(id); void this.$state.go( 'work-packages.show', - { workPackageId: routingId }, + { workPackageId: id }, ); } - private resolveRoutingId(workPackageId:string):string { - const wp = this.states.workPackages.get(workPackageId)?.value; - return wp?.displayId ?? workPackageId; - } - public onCardClicked({ workPackageId, event }:{ workPackageId:string, event:MouseEvent }):void { if (isClickedWithModifier(event)) { return; diff --git a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts index d1c36055438..e0f6f2f5f2c 100644 --- a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts +++ b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts @@ -342,16 +342,15 @@ export class WorkPackagesCalendarComponent extends UntilDestroyedMixin implement } if (evt.event.extendedProps.workPackage) { - const wp = evt.event.extendedProps.workPackage as WorkPackageResource; + const workPackageId = (evt.event.extendedProps.workPackage as WorkPackageResource).id!; // Currently the calendar widget is shown on multiple pages, // but only the calendar module itself is a partitioned query space which can deal with a split screen request if (this.$state.includes('calendar')) { - this.workPackagesCalendar.openSplitView(wp.id!); + this.workPackagesCalendar.openSplitView(workPackageId); } else { - const routingId = wp.displayId ?? wp.id!; void this.$state.go( 'work-packages.show', - { workPackageId: routingId }, + { workPackageId }, ); } } diff --git a/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts b/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts index c4c92021944..77a0449e7f8 100644 --- a/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts @@ -130,16 +130,15 @@ export class WorkPackageCreateComponent extends UntilDestroyedMixin implements O this.editForm?.cancel(false); - const routingId = savedResource.displayId ?? savedResource.id!; if(this.routedFromAngular && this.successState) { - this.$state.go(this.successState, { workPackageId: routingId }) + this.$state.go(this.successState, { workPackageId: savedResource.id }) .then(() => { this.wpViewFocus.updateFocus(savedResource.id!); this.notificationService.showSave(savedResource, isInitial); }); } else { window.OpenProject.pageState = 'submitted'; - Turbo.visit(this.pathHelper.projectWorkPackagePath(savedResource.project.identifier, routingId) + window.location.search); + Turbo.visit(this.pathHelper.projectWorkPackagePath(savedResource.project.identifier, savedResource.id!) + window.location.search); } } diff --git a/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts b/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts index b90d118e90c..d2306ca88d4 100644 --- a/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts @@ -23,7 +23,6 @@ import { InjectField } from 'core-app/shared/helpers/angular/inject-field.decora import { KeepTabService, } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service'; -import { States } from 'core-app/core/states/states.service'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { firstValueFrom } from 'rxjs'; import { QueryRequestParams } from 'core-app/features/work-packages/components/wp-query/url-params-helper'; @@ -64,8 +63,6 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo @InjectField() keepTab:KeepTabService; - @InjectField() states:States; - // Cache the form promise private formPromise:Promise|undefined; @@ -193,17 +190,15 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo handleWorkPackageClicked(event:{ workPackageId:string; double:boolean }) { if (event.double) { - const routingId = this.resolveRoutingId(event.workPackageId); const projectIdentifier = this.currentProject.identifier; - const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; + const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, event.workPackageId) + window.location.search; Turbo.visit(link, { action: 'advance' }); } } openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) { - const routingId = this.resolveRoutingId(event.workPackageId); const params = { - workPackageId: routingId, + workPackageId: event.workPackageId, focus: true, }; @@ -213,9 +208,4 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo this.keepTab.goCurrentShowState(params.workPackageId); } } - - private resolveRoutingId(workPackageId:string):string { - const wp = this.states.workPackages.get(workPackageId)?.value; - return wp?.displayId ?? workPackageId; - } } diff --git a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts index da003c7def8..913a7fa4b57 100644 --- a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts +++ b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts @@ -57,7 +57,6 @@ import { KeepTabService } from 'core-app/features/work-packages/components/wp-si import { WorkPackageViewBaselineService } from '../wp-view-base/view-services/wp-view-baseline.service'; import { combineLatest } from 'rxjs'; import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; -import { States } from 'core-app/core/states/states.service'; @Component({ selector: 'wp-list-view', @@ -86,7 +85,6 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements readonly elementRef = inject>(ElementRef); readonly wpTableBaseline = inject(WorkPackageViewBaselineService); readonly pathHelper = inject(PathHelperService); - readonly states = inject(States); text = { jump_to_pagination: this.I18n.t('js.work_packages.jump_marks.pagination'), @@ -180,9 +178,8 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements } openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) { - const routingId = this.resolveRoutingId(event.workPackageId); const params = { - workPackageId: routingId, + workPackageId: event.workPackageId, focus: true, }; @@ -206,13 +203,7 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements } private openInFullView(workPackageId:string) { - const routingId = this.resolveRoutingId(workPackageId); const projectIdentifier = this.CurrentProject.identifier; - window.location.href = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; - } - - private resolveRoutingId(workPackageId:string):string { - const wp = this.states.workPackages.get(workPackageId)?.value; - return wp?.displayId ?? workPackageId; + window.location.href = this.pathHelper.genericWorkPackagePath(projectIdentifier, workPackageId) + window.location.search; } } diff --git a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts index 2392f5b3af8..f4e6953a8fe 100644 --- a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts +++ b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts @@ -137,14 +137,12 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { void this.turboRequests.requestStream(String(link)); break; - case 'relations': { - const routingId = this.workPackage.displayId ?? this.workPackageId; + case 'relations': void this.$state.go( `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: routingId, tabIdentifier: 'relations' }, + { workPackageId: this.workPackageId, tabIdentifier: 'relations' }, ); break; - } default: window.location.href = link!; From 6b119b416fd0db1e6c7317b795a94ccbd2562389 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 13 Apr 2026 17:02:19 +0300 Subject: [PATCH 007/280] Add JSDoc to UiStateLinkBuilder.build() explaining href vs data-attribute contract --- .../wp-fast-table/builders/ui-state-link-builder.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts b/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts index 5b908ad3cdd..ba871fe2603 100644 --- a/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts +++ b/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts @@ -24,6 +24,18 @@ export class UiStateLinkBuilder { return this.build(workPackageId, 'show', title, content, routingId); } + /** + * Build an anchor element that serves two purposes: + * + * - **href** uses `routingId` (semantic, e.g. "PROJ-7") so the URL bar + * and "open in new tab" show human-readable identifiers. + * - **data-work-package-id** always uses the numeric `workPackageId` (PK) + * because the selection, focus, and hover systems are keyed by PK. + * + * Click handlers (WorkPackageStateLinksHandler) read the data attribute + * and call preventDefault() — the href is never followed during normal + * in-table clicks. It only matters for right-click / open-in-new-tab. + */ private build(workPackageId:string, state:'show'|'split', title:string, content:string, routingId?:string) { const a = document.createElement('a'); const idForHref = routingId ?? workPackageId; From 4d228eff9c9ad5017bc161a8c6b9dd05c8fbd75a Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 13 Apr 2026 14:24:10 +0300 Subject: [PATCH 008/280] Use displayId in work package URLs for semantic identifier routing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Routes already accept semantic identifiers (e.g. PROJ-7) via WP_ID_URL_PATTERN, but all frontend-generated links still used numeric PKs. This wires displayId into every navigation path so the browser URL bar shows the semantic form when available. Key design decision: data-work-package-id attributes on elements stay numeric — the selection/hover system is keyed by PK. Only the href gets the semantic ID via a new optional routingId parameter on UiStateLinkBuilder. Changes span table links (ID column, linked WP fields, details action), navigation handlers (list view, embedded tables, boards, BCF, calendar), breadcrumbs, tabs, hierarchy, single view, context menu, quickinfo macro, and post-creation redirect. API-only paths (time entries, share, hover cards, progress modal) are deliberately left with numeric IDs — they never appear in the address bar. --- .../bim/ifc_models/bcf/list/bcf-list.component.ts | 8 +++++++- .../board/board-list/board-list.component.ts | 15 ++++++++++++--- .../calendar/op-work-packages-calendar.service.ts | 13 +++++++++++-- .../calendar/wp-calendar/wp-calendar.component.ts | 7 ++++--- .../components/wp-new/wp-create.component.ts | 5 +++-- .../embedded/wp-embedded-table.component.ts | 14 ++++++++++++-- .../wp-list-view/wp-list-view.component.ts | 13 +++++++++++-- .../wp-view-context-menu.directive.ts | 6 ++++-- 8 files changed, 64 insertions(+), 17 deletions(-) diff --git a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts index 6593200dd8f..e2adef37db5 100644 --- a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts +++ b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts @@ -129,8 +129,14 @@ export class BcfListComponent extends WorkPackageListViewComponent implements Un : 'bim.partitioned.show'; // Passing the card param to the new state because the router doesn't keep // it when going to 'bim.partitioned.show' - const params = { workPackageId, cards, focus }; + const routingId = this.resolveRoutingId(workPackageId); + const params = { workPackageId: routingId, cards, focus }; void this.$state.go(stateToGo, params); } + + private resolveRoutingId(workPackageId:string):string { + const wp = this.states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; + } } diff --git a/frontend/src/app/features/boards/board/board-list/board-list.component.ts b/frontend/src/app/features/boards/board/board-list/board-list.component.ts index baa4f648b35..680e309e084 100644 --- a/frontend/src/app/features/boards/board/board-list/board-list.component.ts +++ b/frontend/src/app/features/boards/board/board-list/board-list.component.ts @@ -26,6 +26,7 @@ import { AuthorisationService } from 'core-app/core/model-auth/model-auth.servic import { Highlighting } from 'core-app/features/work-packages/components/wp-fast-table/builders/highlighting/highlighting.functions'; import { WorkPackageCardViewComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component'; import { WorkPackageStatesInitializationService } from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service'; +import { States } from 'core-app/core/states/states.service'; import { BoardService } from 'core-app/features/boards/board/board.service'; import { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; import { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service'; @@ -175,6 +176,7 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni readonly keepTab:KeepTabService, readonly currentProject:CurrentProjectService, readonly pathHelper:PathHelperService, + readonly states:States, ) { super(I18n, injector); } @@ -488,17 +490,19 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni openFullViewOnDoubleClick(event:{ workPackageId:string, double:boolean }) { if (event.double) { + const routingId = this.resolveRoutingId(event.workPackageId); const projectIdentifier = this.currentProject.identifier; - const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, event.workPackageId) + window.location.search; + const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; Turbo.visit(link, { action: 'advance' }); } } openStateLink(event:{ workPackageId:string; requestedState:string }) { + const routingId = this.resolveRoutingId(event.workPackageId); if (event.requestedState === 'split') { - this.goToSplitView(event.workPackageId); + this.goToSplitView(routingId); } else { - this.keepTab.goCurrentShowState(event.workPackageId); + this.keepTab.goCurrentShowState(routingId); } } @@ -509,6 +513,11 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni Turbo.visit(link, { frame: 'content-bodyRight', action: 'advance' }); } + private resolveRoutingId(workPackageId:string):string { + const wp = this.states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; + } + private schema(workPackage:WorkPackageResource) { return this.schemaCache.of(workPackage); } diff --git a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts index 86dbd0c0d09..d5dfb0c17b7 100644 --- a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts @@ -53,6 +53,7 @@ import { uiStateLinkClass, } from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder'; import { debugLog } from 'core-app/shared/helpers/debug_output'; +import { States } from 'core-app/core/states/states.service'; import { WorkPackageViewContextMenu, } from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive'; @@ -112,6 +113,7 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { readonly calendarService:OpCalendarService, readonly weekdayService:WeekdayService, readonly dayService:DayResourceService, + readonly states:States, ) { super(); } @@ -287,21 +289,28 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { return; } + const routingId = this.resolveRoutingId(id); void this.$state.go( `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: id, tabIdentifier: 'overview' }, + { workPackageId: routingId, tabIdentifier: 'overview' }, ); } public openFullView(id:string):void { this.wpTableSelection.setSelection(id, -1); + const routingId = this.resolveRoutingId(id); void this.$state.go( 'work-packages.show', - { workPackageId: id }, + { workPackageId: routingId }, ); } + private resolveRoutingId(workPackageId:string):string { + const wp = this.states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; + } + public onCardClicked({ workPackageId, event }:{ workPackageId:string, event:MouseEvent }):void { if (isClickedWithModifier(event)) { return; diff --git a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts index e0f6f2f5f2c..d1c36055438 100644 --- a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts +++ b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts @@ -342,15 +342,16 @@ export class WorkPackagesCalendarComponent extends UntilDestroyedMixin implement } if (evt.event.extendedProps.workPackage) { - const workPackageId = (evt.event.extendedProps.workPackage as WorkPackageResource).id!; + const wp = evt.event.extendedProps.workPackage as WorkPackageResource; // Currently the calendar widget is shown on multiple pages, // but only the calendar module itself is a partitioned query space which can deal with a split screen request if (this.$state.includes('calendar')) { - this.workPackagesCalendar.openSplitView(workPackageId); + this.workPackagesCalendar.openSplitView(wp.id!); } else { + const routingId = wp.displayId ?? wp.id!; void this.$state.go( 'work-packages.show', - { workPackageId }, + { workPackageId: routingId }, ); } } diff --git a/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts b/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts index 77a0449e7f8..c4c92021944 100644 --- a/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts @@ -130,15 +130,16 @@ export class WorkPackageCreateComponent extends UntilDestroyedMixin implements O this.editForm?.cancel(false); + const routingId = savedResource.displayId ?? savedResource.id!; if(this.routedFromAngular && this.successState) { - this.$state.go(this.successState, { workPackageId: savedResource.id }) + this.$state.go(this.successState, { workPackageId: routingId }) .then(() => { this.wpViewFocus.updateFocus(savedResource.id!); this.notificationService.showSave(savedResource, isInitial); }); } else { window.OpenProject.pageState = 'submitted'; - Turbo.visit(this.pathHelper.projectWorkPackagePath(savedResource.project.identifier, savedResource.id!) + window.location.search); + Turbo.visit(this.pathHelper.projectWorkPackagePath(savedResource.project.identifier, routingId) + window.location.search); } } diff --git a/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts b/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts index d2306ca88d4..b90d118e90c 100644 --- a/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts @@ -23,6 +23,7 @@ import { InjectField } from 'core-app/shared/helpers/angular/inject-field.decora import { KeepTabService, } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service'; +import { States } from 'core-app/core/states/states.service'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { firstValueFrom } from 'rxjs'; import { QueryRequestParams } from 'core-app/features/work-packages/components/wp-query/url-params-helper'; @@ -63,6 +64,8 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo @InjectField() keepTab:KeepTabService; + @InjectField() states:States; + // Cache the form promise private formPromise:Promise|undefined; @@ -190,15 +193,17 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo handleWorkPackageClicked(event:{ workPackageId:string; double:boolean }) { if (event.double) { + const routingId = this.resolveRoutingId(event.workPackageId); const projectIdentifier = this.currentProject.identifier; - const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, event.workPackageId) + window.location.search; + const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; Turbo.visit(link, { action: 'advance' }); } } openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) { + const routingId = this.resolveRoutingId(event.workPackageId); const params = { - workPackageId: event.workPackageId, + workPackageId: routingId, focus: true, }; @@ -208,4 +213,9 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo this.keepTab.goCurrentShowState(params.workPackageId); } } + + private resolveRoutingId(workPackageId:string):string { + const wp = this.states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; + } } diff --git a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts index 913a7fa4b57..da003c7def8 100644 --- a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts +++ b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts @@ -57,6 +57,7 @@ import { KeepTabService } from 'core-app/features/work-packages/components/wp-si import { WorkPackageViewBaselineService } from '../wp-view-base/view-services/wp-view-baseline.service'; import { combineLatest } from 'rxjs'; import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; +import { States } from 'core-app/core/states/states.service'; @Component({ selector: 'wp-list-view', @@ -85,6 +86,7 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements readonly elementRef = inject>(ElementRef); readonly wpTableBaseline = inject(WorkPackageViewBaselineService); readonly pathHelper = inject(PathHelperService); + readonly states = inject(States); text = { jump_to_pagination: this.I18n.t('js.work_packages.jump_marks.pagination'), @@ -178,8 +180,9 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements } openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) { + const routingId = this.resolveRoutingId(event.workPackageId); const params = { - workPackageId: event.workPackageId, + workPackageId: routingId, focus: true, }; @@ -203,7 +206,13 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements } private openInFullView(workPackageId:string) { + const routingId = this.resolveRoutingId(workPackageId); const projectIdentifier = this.CurrentProject.identifier; - window.location.href = this.pathHelper.genericWorkPackagePath(projectIdentifier, workPackageId) + window.location.search; + window.location.href = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; + } + + private resolveRoutingId(workPackageId:string):string { + const wp = this.states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; } } diff --git a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts index f4e6953a8fe..2392f5b3af8 100644 --- a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts +++ b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts @@ -137,12 +137,14 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { void this.turboRequests.requestStream(String(link)); break; - case 'relations': + case 'relations': { + const routingId = this.workPackage.displayId ?? this.workPackageId; void this.$state.go( `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: this.workPackageId, tabIdentifier: 'relations' }, + { workPackageId: routingId, tabIdentifier: 'relations' }, ); break; + } default: window.location.href = link!; From 950fdd003f676a17a1b6522665bce2d798950d6d Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 13 Apr 2026 15:56:08 +0300 Subject: [PATCH 009/280] Extract shared resolveRoutingId helper Replaces 5 identical private resolveRoutingId methods with a shared utility function that accepts States as a parameter. --- .../bim/ifc_models/bcf/list/bcf-list.component.ts | 4 ++-- .../boards/board/board-list/board-list.component.ts | 4 ++-- .../calendar/op-work-packages-calendar.service.ts | 4 ++-- .../embedded/wp-embedded-table.component.ts | 4 ++-- .../work-packages/helpers/resolve-routing-id.ts | 13 +++++++++++++ .../routing/wp-list-view/wp-list-view.component.ts | 4 ++-- 6 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts diff --git a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts index e2adef37db5..9d722956293 100644 --- a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts +++ b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts @@ -31,6 +31,7 @@ import { } from '@angular/core'; import { UIRouterGlobals } from '@uirouter/core'; import { States } from 'core-app/core/states/states.service'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; import { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator'; import { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin'; import { DragAndDropService } from 'core-app/shared/helpers/drag-and-drop/drag-and-drop.service'; @@ -136,7 +137,6 @@ export class BcfListComponent extends WorkPackageListViewComponent implements Un } private resolveRoutingId(workPackageId:string):string { - const wp = this.states.workPackages.get(workPackageId)?.value; - return wp?.displayId ?? workPackageId; + return resolveRoutingId(this.states, workPackageId); } } diff --git a/frontend/src/app/features/boards/board/board-list/board-list.component.ts b/frontend/src/app/features/boards/board/board-list/board-list.component.ts index 680e309e084..535899192a0 100644 --- a/frontend/src/app/features/boards/board/board-list/board-list.component.ts +++ b/frontend/src/app/features/boards/board/board-list/board-list.component.ts @@ -27,6 +27,7 @@ import { Highlighting } from 'core-app/features/work-packages/components/wp-fast import { WorkPackageCardViewComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component'; import { WorkPackageStatesInitializationService } from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service'; import { States } from 'core-app/core/states/states.service'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; import { BoardService } from 'core-app/features/boards/board/board.service'; import { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; import { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service'; @@ -514,8 +515,7 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni } private resolveRoutingId(workPackageId:string):string { - const wp = this.states.workPackages.get(workPackageId)?.value; - return wp?.displayId ?? workPackageId; + return resolveRoutingId(this.states, workPackageId); } private schema(workPackage:WorkPackageResource) { diff --git a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts index d5dfb0c17b7..8717cbde823 100644 --- a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts @@ -54,6 +54,7 @@ import { } from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder'; import { debugLog } from 'core-app/shared/helpers/debug_output'; import { States } from 'core-app/core/states/states.service'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; import { WorkPackageViewContextMenu, } from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive'; @@ -307,8 +308,7 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { } private resolveRoutingId(workPackageId:string):string { - const wp = this.states.workPackages.get(workPackageId)?.value; - return wp?.displayId ?? workPackageId; + return resolveRoutingId(this.states, workPackageId); } public onCardClicked({ workPackageId, event }:{ workPackageId:string, event:MouseEvent }):void { diff --git a/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts b/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts index b90d118e90c..c2af853f788 100644 --- a/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts @@ -24,6 +24,7 @@ import { KeepTabService, } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service'; import { States } from 'core-app/core/states/states.service'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { firstValueFrom } from 'rxjs'; import { QueryRequestParams } from 'core-app/features/work-packages/components/wp-query/url-params-helper'; @@ -215,7 +216,6 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo } private resolveRoutingId(workPackageId:string):string { - const wp = this.states.workPackages.get(workPackageId)?.value; - return wp?.displayId ?? workPackageId; + return resolveRoutingId(this.states, workPackageId); } } diff --git a/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts b/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts new file mode 100644 index 00000000000..2b054df138c --- /dev/null +++ b/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts @@ -0,0 +1,13 @@ +import { States } from 'core-app/core/states/states.service'; + +/** + * Resolve a numeric work package ID to its semantic routing ID (e.g. "PROJ-42"). + * Falls back to the input ID if the WP is not in cache or has no displayId. + * + * Used in navigation handlers where only the numeric PK is available from + * data-work-package-id attributes, but the URL should show the semantic form. + */ +export function resolveRoutingId(states:States, workPackageId:string):string { + const wp = states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; +} diff --git a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts index da003c7def8..e8ccfab1c3b 100644 --- a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts +++ b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts @@ -58,6 +58,7 @@ import { WorkPackageViewBaselineService } from '../wp-view-base/view-services/wp import { combineLatest } from 'rxjs'; import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; import { States } from 'core-app/core/states/states.service'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; @Component({ selector: 'wp-list-view', @@ -212,7 +213,6 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements } private resolveRoutingId(workPackageId:string):string { - const wp = this.states.workPackages.get(workPackageId)?.value; - return wp?.displayId ?? workPackageId; + return resolveRoutingId(this.states, workPackageId); } } From 4b285cb19a10596b89067ed7efb9e2388a88af8d Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 13 Apr 2026 15:57:29 +0300 Subject: [PATCH 010/280] Fix split view focus/selection using numeric ID instead of route param Defer focus and selection to init() (called after WP loads) so we use this.workPackage.id (always numeric) instead of the route param which may be a semantic identifier like "PROJ-7". --- .../wp-split-view/wp-split-view.component.ts | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/frontend/src/app/features/work-packages/routing/wp-split-view/wp-split-view.component.ts b/frontend/src/app/features/work-packages/routing/wp-split-view/wp-split-view.component.ts index eb2c1121b9b..1ba966071f1 100644 --- a/frontend/src/app/features/work-packages/routing/wp-split-view/wp-split-view.component.ts +++ b/frontend/src/app/features/work-packages/routing/wp-split-view/wp-split-view.component.ts @@ -101,19 +101,13 @@ export class WorkPackageSplitViewComponent extends WorkPackageSingleViewBase imp ngOnInit():void { this.observeWorkPackage(); - const wpId = (this.$state.params.workPackageId || this.workPackageId) as string; - this.wpTableFocus.updateFocus(wpId, false); - - if (this.wpTableSelection.isEmpty) { - this.wpTableSelection.setRowState(wpId, true); - } - this.wpTableFocus.whenChanged() .pipe( this.untilDestroyed(), ) .subscribe((newId) => { - const idSame = wpId.toString() === newId.toString(); + const currentId = this.workPackage?.id ?? this.workPackageId; + const idSame = currentId.toString() === newId.toString(); if (!idSame && this.$state.includes(`${this.baseRoute}.details`)) { this.$state.go( (this.$state.current.name!), @@ -121,7 +115,18 @@ export class WorkPackageSplitViewComponent extends WorkPackageSingleViewBase imp ); } }); - this.recentItemsService.add(wpId); + } + + protected override init():void { + super.init(); + const numericId = this.workPackage.id!; + this.wpTableFocus.updateFocus(numericId, false); + + if (this.wpTableSelection.isEmpty) { + this.wpTableSelection.setRowState(numericId, true); + } + + this.recentItemsService.add(numericId); } get activeTabComponent():Type|undefined { From 1924a8ccc0a462cdb393a5870db9f25aa728ace6 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 13 Apr 2026 15:57:35 +0300 Subject: [PATCH 011/280] Fix card view highlight by comparing route param against both id and displayId The route param may be a semantic identifier ("PROJ-7") which won't match workPackage.id (numeric "42"). Comparing against displayId as well handles both classic and semantic modes. --- .../wp-card-view/wp-single-card/wp-single-card.component.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index 70ea0c0272f..a03fa221ee4 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -142,7 +142,8 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen this.untilDestroyed(), map(() => { if (this.selectedWhenOpen) { - return this.uiRouterGlobals.params.workPackageId === this.workPackage.id; + const routeWpId = this.uiRouterGlobals.params.workPackageId; + return routeWpId === this.workPackage.id || routeWpId === this.workPackage.displayId; } return this.wpTableSelection.isSelected(this.workPackage.id!); From 118a5c8b33ee9fdfbf2320dc59f0f3dbb206b496 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 13 Apr 2026 15:57:40 +0300 Subject: [PATCH 012/280] Fix bulk delete split view close by resolving semantic route param Resolve $state.params.workPackageId to numeric PK via the States cache before comparing against the deleted IDs array. --- .../work-packages/services/work-package.service.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/features/work-packages/services/work-package.service.ts b/frontend/src/app/features/work-packages/services/work-package.service.ts index 919ba47ef9a..5010a044843 100644 --- a/frontend/src/app/features/work-packages/services/work-package.service.ts +++ b/frontend/src/app/features/work-packages/services/work-package.service.ts @@ -34,6 +34,7 @@ import { UrlParamsHelperService } from 'core-app/features/work-packages/componen import { ToastService } from 'core-app/shared/components/toaster/toast.service'; import { I18nService } from 'core-app/core/i18n/i18n.service'; import { HalDeletedEvent, HalEventsService } from 'core-app/features/hal/services/hal-events.service'; +import { States } from 'core-app/core/states/states.service'; @Injectable() export class WorkPackageService { @@ -47,7 +48,8 @@ export class WorkPackageService { private readonly UrlParamsHelper:UrlParamsHelperService, private readonly toastService:ToastService, private readonly I18n:I18nService, - private readonly halEvents:HalEventsService) { + private readonly halEvents:HalEventsService, + private readonly states:States) { } public performBulkDelete(ids:string[], defaultHandling:boolean) { @@ -68,8 +70,11 @@ export class WorkPackageService { ids.forEach((id) => this.halEvents.push({ _type: 'WorkPackage', id }, { eventType: 'deleted' } as HalDeletedEvent)); + const routeWpId = this.$state.params.workPackageId as string; + const wp = this.states.workPackages.get(routeWpId)?.value; + const numericId = wp?.id ?? routeWpId; if (this.$state.includes('**.list.details.**') - && ids.includes(this.$state.params.workPackageId)) { + && ids.includes(numericId)) { this.$state.go('work-packages.partitioned.list', this.$state.params); } }) From f38899eab7a4b2a59a71571710f61ba0f06375a9 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 13 Apr 2026 15:57:45 +0300 Subject: [PATCH 013/280] Fix WP cache dual-entry when route param is semantic ID Normalize this.workPackageId from semantic (e.g. "PROJ-7") to numeric PK after first WP load, ensuring downstream cache lookups use the canonical key. --- .../routing/wp-view-base/work-package-single-view.base.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/frontend/src/app/features/work-packages/routing/wp-view-base/work-package-single-view.base.ts b/frontend/src/app/features/work-packages/routing/wp-view-base/work-package-single-view.base.ts index 9e12b28fafb..ff01f9894df 100644 --- a/frontend/src/app/features/work-packages/routing/wp-view-base/work-package-single-view.base.ts +++ b/frontend/src/app/features/work-packages/routing/wp-view-base/work-package-single-view.base.ts @@ -150,6 +150,13 @@ export abstract class WorkPackageSingleViewBase extends UntilDestroyedMixin { .requireAndStream() .pipe(this.untilDestroyed()) .subscribe((wp:WorkPackageResource) => { + // Normalize semantic route param (e.g. "PROJ-7") to numeric PK + // for cache coherence — downstream code uses this.workPackageId + // as a cache key, and the canonical key is always numeric. + if (this.workPackageId !== wp.id && wp.id) { + this.workPackageId = wp.id; + } + if (!this.workPackage) { this.workPackage = wp; this.init(); From 1388c3ca5df9a99419f3f5022d6414ba657c6bad Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Mon, 13 Apr 2026 17:03:23 +0300 Subject: [PATCH 014/280] Add JSDoc to critical semantic ID functions Document the dual-purpose contract in observeWorkPackage (cache normalization), deferred focus in split view init, card highlight comparison logic, and best-effort fallback in resolveRoutingId. --- .../wp-single-card/wp-single-card.component.ts | 2 ++ .../features/work-packages/helpers/resolve-routing-id.ts | 4 +++- .../routing/wp-split-view/wp-split-view.component.ts | 8 ++++++++ .../routing/wp-view-base/work-package-single-view.base.ts | 6 ++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index a03fa221ee4..e2133009e7b 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -142,6 +142,8 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen this.untilDestroyed(), map(() => { if (this.selectedWhenOpen) { + // Route param may be semantic ("PROJ-7") or numeric ("42"). + // Compare against both id and displayId to handle both modes. const routeWpId = this.uiRouterGlobals.params.workPackageId; return routeWpId === this.workPackage.id || routeWpId === this.workPackage.displayId; } diff --git a/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts b/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts index 2b054df138c..b617ea088f3 100644 --- a/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts +++ b/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts @@ -2,7 +2,9 @@ import { States } from 'core-app/core/states/states.service'; /** * Resolve a numeric work package ID to its semantic routing ID (e.g. "PROJ-42"). - * Falls back to the input ID if the WP is not in cache or has no displayId. + * Falls back to the input ID if the WP is not in cache or has no displayId — + * this is a best-effort lookup, not a guarantee. The URL just shows the + * numeric ID temporarily until the WP is cached. * * Used in navigation handlers where only the numeric PK is available from * data-work-package-id attributes, but the URL should show the semantic form. diff --git a/frontend/src/app/features/work-packages/routing/wp-split-view/wp-split-view.component.ts b/frontend/src/app/features/work-packages/routing/wp-split-view/wp-split-view.component.ts index 1ba966071f1..7ce6e450907 100644 --- a/frontend/src/app/features/work-packages/routing/wp-split-view/wp-split-view.component.ts +++ b/frontend/src/app/features/work-packages/routing/wp-split-view/wp-split-view.component.ts @@ -117,6 +117,14 @@ export class WorkPackageSplitViewComponent extends WorkPackageSingleViewBase imp }); } + /** + * Set focus, selection, and recent-items after the WP has loaded. + * + * Intentionally deferred from ngOnInit because the route param + * (this.workPackageId) may be a semantic identifier like "PROJ-7", + * but focus/selection services are keyed by numeric PK. By the time + * init() runs, this.workPackage.id is guaranteed to be the numeric PK. + */ protected override init():void { super.init(); const numericId = this.workPackage.id!; diff --git a/frontend/src/app/features/work-packages/routing/wp-view-base/work-package-single-view.base.ts b/frontend/src/app/features/work-packages/routing/wp-view-base/work-package-single-view.base.ts index ff01f9894df..cd499bb647f 100644 --- a/frontend/src/app/features/work-packages/routing/wp-view-base/work-package-single-view.base.ts +++ b/frontend/src/app/features/work-packages/routing/wp-view-base/work-package-single-view.base.ts @@ -141,6 +141,12 @@ export abstract class WorkPackageSingleViewBase extends UntilDestroyedMixin { /** * Observe changes of work package and re-run initialization. * Needs to be run explicitly by descendants. + * + * Note: this.workPackageId may be a semantic identifier (e.g. "PROJ-7") + * from the route param. The API resolves it correctly, but the cache key + * would be "PROJ-7" while list queries cache the same WP under "42". + * After the first load we normalize to the numeric PK to prevent + * dual cache entries. */ protected observeWorkPackage():void { this From 44fd464bfbefbffe89ed32b3367255bd6efb1c6a Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Thu, 16 Apr 2026 10:48:18 +0300 Subject: [PATCH 015/280] Centralize displayId usage and extract formatWorkPackageId utility The displayId getter on WorkPackageBaseResource already handles the fallback to numeric id, so callers don't need to repeat the `displayId ?? id!` pattern. This simplifies 7 call sites across breadcrumbs, tabs, relations, single-view, and display fields. The formatting regex that decides whether to prefix with # (classic mode) or not (semantic mode) was duplicated in WorkPackageBaseResource and WorkPackageDisplayField. Extract it into a shared formatWorkPackageId() function in work-package-id-pattern.ts alongside the existing WP_ID_URL_PATTERN constant. --- .../hal/resources/work-package-resource.ts | 18 ++++++++++++---- .../wp-breadcrumb-parent.component.ts | 3 +-- .../wp-breadcrumb/wp-breadcrumb.component.ts | 3 +-- .../wp-relations-hierarchy.directive.ts | 2 +- .../wp-single-view.component.ts | 3 +-- .../actions/details-table-action.ts | 3 +-- .../components/wp-tabs/wp-tabs.component.ts | 4 ++-- .../work-package-display-field.module.ts | 21 ++++++++++--------- .../field-types/wp-id-display-field.module.ts | 6 ++---- .../macros/work-package-quickinfo-macro.html | 2 +- .../helpers/work-package-id-pattern.spec.ts | 15 +++++++++++++ .../shared/helpers/work-package-id-pattern.ts | 19 +++++++++++++++++ 12 files changed, 69 insertions(+), 30 deletions(-) create mode 100644 frontend/src/app/shared/helpers/work-package-id-pattern.spec.ts diff --git a/frontend/src/app/features/hal/resources/work-package-resource.ts b/frontend/src/app/features/hal/resources/work-package-resource.ts index 1210ce87e1b..e8faf6fa1bb 100644 --- a/frontend/src/app/features/hal/resources/work-package-resource.ts +++ b/frontend/src/app/features/hal/resources/work-package-resource.ts @@ -50,6 +50,7 @@ import { Attachable } from 'core-app/features/hal/resources/mixins/attachable-mi import { ICKEditorContext } from 'core-app/shared/components/editor/components/ckeditor/ckeditor.types'; import isNewResource from 'core-app/features/hal/helpers/is-new-resource'; import { IWorkPackageTimestamp } from 'core-app/features/hal/resources/work-package-timestamp-resource'; +import { formatWorkPackageId } from 'core-app/shared/helpers/work-package-id-pattern'; export interface WorkPackageResourceEmbedded { activities:CollectionResource; @@ -126,8 +127,18 @@ export class WorkPackageBaseResource extends HalResource { public subject:string; /** - * Returns the user-facing work package identifier. - * "PROJ-42" in semantic mode, "42" in classic mode. + * The canonical user-facing work package identifier. + * + * - Semantic mode: `"PROJ-42"` (project-scoped, contains letters) + * - Classic mode: `"42"` (numeric only) + * + * This is the correct value for URL path segments — use this rather + * than `id` when constructing work package hrefs. The numeric `id` + * (primary key) should only appear in data attributes and internal + * state management (selection, focus, hover). + * + * Falls back to `id` when `displayId` is absent from the API response + * (defensive against stale cache during rolling deploys). */ public get displayId():string { return this.$source.displayId?.toString() ?? this.id?.toString() ?? ''; @@ -139,8 +150,7 @@ export class WorkPackageBaseResource extends HalResource { * Semantic mode: `PROJ-42` (no prefix — the identifier is self-describing) */ public get formattedId():string { - const wpId = this.displayId; - return /[A-Za-z]/.test(wpId) ? wpId : `#${wpId}`; + return formatWorkPackageId(this.displayId); } public updatedAt:Date; diff --git a/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.component.ts b/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.component.ts index 7356201814a..ac29f91b335 100644 --- a/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb-parent.component.ts @@ -115,7 +115,6 @@ export class WorkPackageBreadcrumbParentComponent { } public parentLink(parent:WorkPackageResource):string { - const routingId = parent.displayId ?? parent.id!; - return this.pathHelper.genericWorkPackagePath(parent.project?.identifier, routingId) + window.location.search; + return this.pathHelper.genericWorkPackagePath(parent.project?.identifier, parent.displayId) + window.location.search; } } diff --git a/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb.component.ts b/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb.component.ts index 4e763cfa1f0..8f0662c6bb2 100644 --- a/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-breadcrumb/wp-breadcrumb.component.ts @@ -65,8 +65,7 @@ export class WorkPackageBreadcrumbComponent { } public ancestorPath(ancestor:WorkPackageResource):string { - const routingId = ancestor.displayId ?? ancestor.id!; - return this.pathHelper.genericWorkPackagePath(this.workPackage.project?.identifier, routingId) + window.location.search; + return this.pathHelper.genericWorkPackagePath(this.workPackage.project?.identifier, ancestor.displayId) + window.location.search; } public updateActiveInput(val:boolean) { diff --git a/frontend/src/app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.directive.ts b/frontend/src/app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.directive.ts index c1075e0a86c..c7f52ec6bdf 100644 --- a/frontend/src/app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.directive.ts +++ b/frontend/src/app/features/work-packages/components/wp-relations/wp-relations-hierarchy/wp-relations-hierarchy.directive.ts @@ -81,7 +81,7 @@ export class WorkPackageRelationsHierarchyComponent extends UntilDestroyedMixin }; ngOnInit() { - this.workPackagePath = this.PathHelper.workPackagePath(this.workPackage.displayId ?? this.workPackage.id!); + this.workPackagePath = this.PathHelper.workPackagePath(this.workPackage.displayId); this.canModifyHierarchy = !!this.workPackage.changeParent; this.canAddRelation = !!this.workPackage.addRelation; diff --git a/frontend/src/app/features/work-packages/components/wp-single-view/wp-single-view.component.ts b/frontend/src/app/features/work-packages/components/wp-single-view/wp-single-view.component.ts index fdeb04d11dc..9ebbde7098e 100644 --- a/frontend/src/app/features/work-packages/components/wp-single-view/wp-single-view.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-single-view/wp-single-view.component.ts @@ -203,10 +203,9 @@ export class WorkPackageSingleViewComponent extends UntilDestroyedMixin implemen throw new Error('work package id is invalid'); } - const routingId = this.workPackage.displayId ?? workPackageId; this.projectContext = { id: project.id, - href: this.PathHelper.projectWorkPackagePath(project.id, routingId), + href: this.PathHelper.projectWorkPackagePath(project.id, this.workPackage.displayId), matches: project.href === this.currentProject.apiv3Path, }; } diff --git a/frontend/src/app/features/work-packages/components/wp-table/table-actions/actions/details-table-action.ts b/frontend/src/app/features/work-packages/components/wp-table/table-actions/actions/details-table-action.ts index 74a0b24fe1a..f7e78b470e0 100644 --- a/frontend/src/app/features/work-packages/components/wp-table/table-actions/actions/details-table-action.ts +++ b/frontend/src/app/features/work-packages/components/wp-table/table-actions/actions/details-table-action.ts @@ -24,12 +24,11 @@ export class OpDetailsTableAction extends OpTableAction { public buildElement() { // Append details button - const routingId = this.workPackage.displayId ?? this.workPackage.id!; const detailsLink = this.uiStatebuilder.linkToDetails( this.workPackage.id!, this.text.button, '', - routingId, + this.workPackage.displayId, ); detailsLink.classList.add(detailsLinkClassName, contextColumnIcon, 'hidden-for-mobile'); diff --git a/frontend/src/app/features/work-packages/components/wp-tabs/components/wp-tabs/wp-tabs.component.ts b/frontend/src/app/features/work-packages/components/wp-tabs/components/wp-tabs/wp-tabs.component.ts index 551bfcb2790..71f111623e4 100644 --- a/frontend/src/app/features/work-packages/components/wp-tabs/components/wp-tabs/wp-tabs.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-tabs/components/wp-tabs/wp-tabs.component.ts @@ -72,13 +72,13 @@ export class WpTabsComponent implements OnInit { return ({ ...tab, - path: this.pathHelper.genericWorkPackagePath(this.currentProject.identifier, this.workPackage.displayId ?? this.workPackage.id!, tab.id), + path: this.pathHelper.genericWorkPackagePath(this.currentProject.identifier, this.workPackage.displayId, tab.id), }); }); } public switchToFullscreen():void { - this.keepTab.goCurrentShowState(this.workPackage.displayId ?? this.workPackage.id!); + this.keepTab.goCurrentShowState(this.workPackage.displayId); } public close():void { diff --git a/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts b/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts index 3a828b0701f..24677bedb23 100644 --- a/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts +++ b/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts @@ -27,6 +27,7 @@ //++ import { DisplayField } from 'core-app/shared/components/fields/display/display-field.module'; +import { formatWorkPackageId } from 'core-app/shared/helpers/work-package-id-pattern'; export class WorkPackageDisplayField extends DisplayField { public text = { @@ -58,8 +59,11 @@ export class WorkPackageDisplayField extends DisplayField { } /** - * Returns the semantic identifier for URL routing when available, - * falling back to the numeric ID. Used in hrefs for pretty URLs. + * Returns the identifier for URL routing when the linked WP is loaded, + * falling back to the numeric ID extracted from the href. + * + * Unlike `WorkPackageBaseResource.displayId`, this handles the case + * where the related resource is only a HAL link (not yet fetched). */ public get wpRoutingId():string { if (this.value?.$loaded && this.value.displayId) { @@ -71,23 +75,20 @@ export class WorkPackageDisplayField extends DisplayField { /** * Returns the work package ID formatted for display. - * Classic mode: `#123` (hash-prefixed), Semantic mode: `PROJ-42` (no prefix). * - * This mirrors the logic in `WorkPackageBaseResource.formattedId` - * but cannot delegate to it because the linked resource (`this.value`) - * may not be loaded — in that case `wpId` falls back to extracting the - * numeric ID from the self-link href, which won't have a `displayId`. + * Cannot delegate to `WorkPackageBaseResource.formattedId` because + * the linked resource (`this.value`) may not be loaded — in that case + * we fall back to extracting the numeric ID from the self-link href. */ public get wpFormattedId():string { if (this.value?.$loaded && this.value.displayId) { - const displayId = this.value.displayId.toString(); - return /[A-Za-z]/.test(displayId) ? displayId : `#${displayId}`; + return formatWorkPackageId(this.value.displayId.toString()); } const id = this.wpId; if (!id) return ''; - return `#${id}`; + return formatWorkPackageId(id); } public get valueString() { diff --git a/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.ts b/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.ts index a896cf6fa7f..93619bb9e5e 100644 --- a/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.ts +++ b/frontend/src/app/shared/components/fields/display/field-types/wp-id-display-field.module.ts @@ -46,7 +46,7 @@ export class WorkPackageIdDisplayField extends IdDisplayField { private uiStateBuilder:UiStateLinkBuilder = new UiStateLinkBuilder(this.$state, this.keepTab, this.currentProject, this.pathHelper); public get valueString():string { - // eslint-disable-next-line @typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access + // eslint-disable-next-line @typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-member-access return this.resource.displayId ?? this.value?.toString() ?? ''; } @@ -54,14 +54,12 @@ export class WorkPackageIdDisplayField extends IdDisplayField { if (!this.value) { return; } - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-call - const routingId:string = this.resource.displayId?.toString() ?? this.value?.toString(); const link = this.uiStateBuilder.linkToShow( // eslint-disable-next-line @typescript-eslint/no-unsafe-argument this.value, displayText, displayText, - routingId, + this.valueString, ); element.appendChild(link); diff --git a/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.html b/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.html index 83dc76904d6..ac1d7de48ae 100644 --- a/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.html +++ b/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.html @@ -10,7 +10,7 @@ fieldName="type" /> {{workPackage.formattedId}}: diff --git a/frontend/src/app/shared/helpers/work-package-id-pattern.spec.ts b/frontend/src/app/shared/helpers/work-package-id-pattern.spec.ts new file mode 100644 index 00000000000..89acdedfde4 --- /dev/null +++ b/frontend/src/app/shared/helpers/work-package-id-pattern.spec.ts @@ -0,0 +1,15 @@ +import { formatWorkPackageId } from './work-package-id-pattern'; + +describe('formatWorkPackageId', () => { + it('returns semantic identifiers as-is (no prefix)', () => { + expect(formatWorkPackageId('PROJ-42')).toBe('PROJ-42'); + }); + + it('prefixes numeric identifiers with #', () => { + expect(formatWorkPackageId('42')).toBe('#42'); + }); + + it('returns empty string for empty input', () => { + expect(formatWorkPackageId('')).toBe(''); + }); +}); diff --git a/frontend/src/app/shared/helpers/work-package-id-pattern.ts b/frontend/src/app/shared/helpers/work-package-id-pattern.ts index b189e59120a..3f79edfbd20 100644 --- a/frontend/src/app/shared/helpers/work-package-id-pattern.ts +++ b/frontend/src/app/shared/helpers/work-package-id-pattern.ts @@ -6,3 +6,22 @@ * The backend equivalent lives in WorkPackage::SemanticIdentifier::ID_ROUTE_CONSTRAINT. */ export const WP_ID_URL_PATTERN = '\\d+|[A-Za-z][A-Za-z0-9_]*-\\d+'; + +/** + * Format a work package identifier for inline UI display. + * + * OpenProject supports two identifier modes: + * - **Semantic**: project-scoped identifiers like `PROJ-42` that contain letters. + * These are self-describing and returned as-is. + * - **Classic**: numeric-only identifiers like `42`. + * These are prefixed with `#` to visually distinguish them as WP references. + * + * @example + * formatWorkPackageId('PROJ-42') // => 'PROJ-42' + * formatWorkPackageId('42') // => '#42' + * formatWorkPackageId('') // => '' + */ +export function formatWorkPackageId(id:string):string { + if (!id) return ''; + return /[A-Za-z]/.test(id) ? id : `#${id}`; +} From 89c4191038b63f7147d2c51fd7a997f2c2ebeec1 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Thu, 16 Apr 2026 11:21:54 +0300 Subject: [PATCH 016/280] Fix WP table click navigation to use semantic ID in URL Clicking a semantic ID link (e.g. PROJ-42) in the work package table navigated to the numeric ID URL (/work_packages/42) instead of the semantic one (/work_packages/PROJ-42). The href was correct but the click handler (WorkPackageStateLinksHandler) read data-work-package-id (the numeric PK) and used it for navigation. Add data-routing-id to link elements carrying the semantic identifier. The click handler now reads this attribute and flows it through the stateLinkClicked event so wp-list-view uses it for URL construction while keeping the numeric PK for selection and focus state. --- .../wp-card-view/wp-card-view.component.ts | 2 +- .../wp-single-card.component.ts | 2 +- .../builders/ui-state-link-builder.ts | 1 + .../handlers/row/wp-state-links-handler.ts | 3 +- .../components/wp-grid/wp-grid.component.ts | 2 +- .../components/wp-table/wp-table.component.ts | 2 +- .../wp-list-view/wp-list-view.component.ts | 7 ++-- .../event-handling/event-handler-registry.ts | 2 +- .../table/semantic_id_navigation_spec.rb | 37 +++++++++++++++++++ 9 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 spec/features/work_packages/table/semantic_id_navigation_spec.rb diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-card-view.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-card-view.component.ts index 9cf71531f98..e421b9d2613 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-card-view.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-card-view.component.ts @@ -87,7 +87,7 @@ export class WorkPackageCardViewComponent extends UntilDestroyedMixin implements @Output() itemClicked = new EventEmitter<{ workPackageId:string, double:boolean }>(); - @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>(); + @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, routingId?:string, requestedState:string }>(); public trackByHref = trackByHrefAndProperty('lockVersion'); diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index 70ea0c0272f..6f32603162f 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -87,7 +87,7 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen @Output() onRemove = new EventEmitter(); - @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>(); + @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, routingId?:string, requestedState:string }>(); @Output() cardClicked = new EventEmitter<{ workPackageId:string, event:MouseEvent }>(); diff --git a/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts b/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts index ba871fe2603..e281d5be829 100644 --- a/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts +++ b/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts @@ -58,6 +58,7 @@ export class UiStateLinkBuilder { a.href = href; a.classList.add(uiStateLinkClass); a.dataset.workPackageId = workPackageId; + a.dataset.routingId = idForHref; a.dataset.wpState = state; a.setAttribute('title', title); diff --git a/frontend/src/app/features/work-packages/components/wp-fast-table/handlers/row/wp-state-links-handler.ts b/frontend/src/app/features/work-packages/components/wp-fast-table/handlers/row/wp-state-links-handler.ts index 0dfd3be4e70..3880f3b8fe5 100644 --- a/frontend/src/app/features/work-packages/components/wp-fast-table/handlers/row/wp-state-links-handler.ts +++ b/frontend/src/app/features/work-packages/components/wp-fast-table/handlers/row/wp-state-links-handler.ts @@ -53,6 +53,7 @@ export class WorkPackageStateLinksHandler implements TableEventHandler { const element = target.closest(this.SELECTOR) as HTMLElement; const state = element.dataset.wpState; const workPackageId = element.dataset.workPackageId; + const routingId = element.dataset.routingId ?? workPackageId; // Normal link processing if there are no state and work package information if (!state || !workPackageId) { @@ -73,7 +74,7 @@ export class WorkPackageStateLinksHandler implements TableEventHandler { // Update single selection if no modifier present this.wpTableSelection.setSelection(workPackageId, index); - view.stateLinkClicked.emit({ workPackageId, requestedState: state }); + view.stateLinkClicked.emit({ workPackageId, routingId, requestedState: state }); evt.preventDefault(); return false; diff --git a/frontend/src/app/features/work-packages/components/wp-grid/wp-grid.component.ts b/frontend/src/app/features/work-packages/components/wp-grid/wp-grid.component.ts index 635b6060a39..6b08f133035 100644 --- a/frontend/src/app/features/work-packages/components/wp-grid/wp-grid.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-grid/wp-grid.component.ts @@ -86,7 +86,7 @@ export class WorkPackagesGridComponent implements WorkPackageViewOutputs, OnInit @Output() itemClicked = new EventEmitter<{ workPackageId:string, double:boolean }>(); - @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>(); + @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, routingId?:string, requestedState:string }>(); public canDragOutOf:() => boolean; diff --git a/frontend/src/app/features/work-packages/components/wp-table/wp-table.component.ts b/frontend/src/app/features/work-packages/components/wp-table/wp-table.component.ts index 311f9a11443..9b23a11dcdb 100644 --- a/frontend/src/app/features/work-packages/components/wp-table/wp-table.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-table/wp-table.component.ts @@ -90,7 +90,7 @@ export class WorkPackagesTableComponent extends UntilDestroyedMixin implements O @Output() itemClicked = new EventEmitter<{ workPackageId:string, double:boolean }>(); - @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>(); + @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, routingId?:string, requestedState:string }>(); public configuration:WorkPackageTableConfiguration; diff --git a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts index 913a7fa4b57..cf796759ea7 100644 --- a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts +++ b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts @@ -177,16 +177,17 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements } } - openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) { + openStateLink(event:{ workPackageId:string; routingId?:string; requestedState:'show'|'split' }) { + const routingId = event.routingId ?? event.workPackageId; const params = { - workPackageId: event.workPackageId, + workPackageId: routingId, focus: true, }; if (event.requestedState === 'split') { this.keepTab.goCurrentDetailsState(params); } else { - this.openInFullView(event.workPackageId); + this.openInFullView(routingId); } } diff --git a/frontend/src/app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry.ts b/frontend/src/app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry.ts index 636571d2d30..cafc19dc691 100644 --- a/frontend/src/app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry.ts +++ b/frontend/src/app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry.ts @@ -23,7 +23,7 @@ export interface WorkPackageViewOutputs { // On row (double) clicked itemClicked:EventEmitter<{ workPackageId:string, double:boolean }>; // On work package link / details icon clicked - stateLinkClicked:EventEmitter<{ workPackageId:string, requestedState:string }>; + stateLinkClicked:EventEmitter<{ workPackageId:string, routingId?:string, requestedState:string }>; } export const WorkPackageViewHandlerToken = new InjectionToken>('CardEventHandler'); diff --git a/spec/features/work_packages/table/semantic_id_navigation_spec.rb b/spec/features/work_packages/table/semantic_id_navigation_spec.rb new file mode 100644 index 00000000000..67ac80cc69b --- /dev/null +++ b/spec/features/work_packages/table/semantic_id_navigation_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require "spec_helper" + +RSpec.describe "Work package table semantic ID navigation", + :js, + :with_cuprite, + with_flag: { semantic_work_package_ids: true }, + with_settings: { work_packages_identifier: "semantic" } do + let(:user) { create(:admin) } + let(:project) { create(:project, identifier: "NAVTEST") } + let(:work_package) { create(:work_package, project:, subject: "Semantic nav test") } + + let(:wp_table) { Pages::WorkPackagesTable.new(project) } + + before do + work_package.allocate_and_register_semantic_id + login_as(user) + wp_table.visit! + wp_table.expect_work_package_listed(work_package) + end + + it "navigates to the semantic ID URL when clicking the ID link" do + semantic_id = work_package.reload.identifier + + # The ID column should show the semantic identifier + expect(page).to have_link(semantic_id) + + # Click the semantic ID link in the table + page.find("a", text: semantic_id).click + + # Should navigate to a URL containing the semantic identifier, not the numeric ID + expect(page).to have_current_path( + project_work_package_path(project, semantic_id, "activity") + ) + end +end From 21dec09b8622c45f45155ae689c6051988456e71 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Thu, 16 Apr 2026 12:22:36 +0300 Subject: [PATCH 017/280] Fix BcfListComponent compile error from duplicate private method Make resolveRoutingId protected in the parent class so BcfListComponent inherits it instead of redeclaring its own private copy, which TypeScript rejects as conflicting declarations. --- .../features/bim/ifc_models/bcf/list/bcf-list.component.ts | 4 ---- .../routing/wp-list-view/wp-list-view.component.ts | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts index 9d722956293..50e5352908f 100644 --- a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts +++ b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts @@ -31,7 +31,6 @@ import { } from '@angular/core'; import { UIRouterGlobals } from '@uirouter/core'; import { States } from 'core-app/core/states/states.service'; -import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; import { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator'; import { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin'; import { DragAndDropService } from 'core-app/shared/helpers/drag-and-drop/drag-and-drop.service'; @@ -136,7 +135,4 @@ export class BcfListComponent extends WorkPackageListViewComponent implements Un void this.$state.go(stateToGo, params); } - private resolveRoutingId(workPackageId:string):string { - return resolveRoutingId(this.states, workPackageId); - } } diff --git a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts index ac18f20f85a..956b52d2e6d 100644 --- a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts +++ b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts @@ -212,7 +212,7 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements window.location.href = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; } - private resolveRoutingId(workPackageId:string):string { + protected resolveRoutingId(workPackageId:string):string { return resolveRoutingId(this.states, workPackageId); } } From 4656ff102e311c8605d72c49c74966235183839b Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Thu, 16 Apr 2026 14:12:56 +0300 Subject: [PATCH 018/280] Revert "Use formattedId in autocompleter and global search results" This reverts commit a55630776973bd080d43b6ebb54750ce0e12033a. --- .../global_search/input/global-search-input.component.html | 2 +- .../op-autocompleter/op-autocompleter.component.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/core/global_search/input/global-search-input.component.html b/frontend/src/app/core/global_search/input/global-search-input.component.html index 0a5d28b4fc4..79ba5b741a7 100644 --- a/frontend/src/app/core/global_search/input/global-search-input.component.html +++ b/frontend/src/app/core/global_search/input/global-search-input.component.html @@ -88,7 +88,7 @@ {{ item.type.name }} - {{ item.formattedId }} + #{{ item.id }} {{ item.status.name }} diff --git a/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html b/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html index 256d20bac57..e48812d1d84 100644 --- a/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html +++ b/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html @@ -177,7 +177,7 @@ {{ item.formattedId }} + >#{{ item.id }} - {{ item.type?.name }} {{ item.formattedId }} {{ item.subject || item.name }} + {{ item.type?.name }} #{{ item.id }} {{ item.subject || item.name }} } } From 52709a7c85e119cd0d70d39979f1377ac603d358 Mon Sep 17 00:00:00 2001 From: Eric Schubert Date: Mon, 20 Apr 2026 15:52:42 +0200 Subject: [PATCH 019/280] [#73909] add view model for page links - use single collapsible page links component for inlines and mentions --- ...collapsible_page_links_component.html.erb} | 6 +-- ...rb => collapsible_page_links_component.rb} | 12 +++++- .../wikis/page_link_component.html.erb | 4 +- .../components/wikis/page_link_component.rb | 8 ---- .../referencing_pages_component.html.erb | 43 ------------------- .../work_package_wikis_tab_component.html.erb | 4 +- .../wikis/page_link_view_model.rb} | 15 +++++-- .../app/services/wikis/page_link_service.rb | 21 ++++++++- modules/wikis/config/locales/en.yml | 6 +-- 9 files changed, 50 insertions(+), 69 deletions(-) rename modules/wikis/app/components/wikis/{inline_page_links_component.html.erb => collapsible_page_links_component.html.erb} (91%) rename modules/wikis/app/components/wikis/{inline_page_links_component.rb => collapsible_page_links_component.rb} (85%) delete mode 100644 modules/wikis/app/components/wikis/referencing_pages_component.html.erb rename modules/wikis/app/{components/wikis/referencing_pages_component.rb => models/wikis/page_link_view_model.rb} (71%) diff --git a/modules/wikis/app/components/wikis/inline_page_links_component.html.erb b/modules/wikis/app/components/wikis/collapsible_page_links_component.html.erb similarity index 91% rename from modules/wikis/app/components/wikis/inline_page_links_component.html.erb rename to modules/wikis/app/components/wikis/collapsible_page_links_component.html.erb index 8c21bb36055..4c832c794b9 100644 --- a/modules/wikis/app/components/wikis/inline_page_links_component.html.erb +++ b/modules/wikis/app/components/wikis/collapsible_page_links_component.html.erb @@ -31,12 +31,12 @@ See COPYRIGHT and LICENSE files for more details. render(Primer::Beta::BorderBox.new(padding: :condensed)) do |box| box.with_header do render(Primer::OpenProject::BorderBox::CollapsibleHeader.new(collapsed: true)) do |header| - header.with_title { t(".heading") } - header.with_count(count: inline_page_links.count) + header.with_title { heading } + header.with_count(count: page_links.count) end end - inline_page_links.each do |page_link| + page_links.each do |page_link| box.with_row { render(Wikis::PageLinkComponent.new(page_link)) } end end diff --git a/modules/wikis/app/components/wikis/inline_page_links_component.rb b/modules/wikis/app/components/wikis/collapsible_page_links_component.rb similarity index 85% rename from modules/wikis/app/components/wikis/inline_page_links_component.rb rename to modules/wikis/app/components/wikis/collapsible_page_links_component.rb index 2776668a07e..51d51339952 100644 --- a/modules/wikis/app/components/wikis/inline_page_links_component.rb +++ b/modules/wikis/app/components/wikis/collapsible_page_links_component.rb @@ -29,10 +29,18 @@ #++ module Wikis - class InlinePageLinksComponent < ApplicationComponent + class CollapsiblePageLinksComponent < ApplicationComponent include ApplicationHelper include OpPrimer::ComponentHelpers - alias_method :inline_page_links, :model + attr_reader :heading + + alias_method :page_links, :model + + def initialize(model = nil, heading:, **) + @heading = heading + + super(model, **) + end end end diff --git a/modules/wikis/app/components/wikis/page_link_component.html.erb b/modules/wikis/app/components/wikis/page_link_component.html.erb index 37b53e51f17..89da3202956 100644 --- a/modules/wikis/app/components/wikis/page_link_component.html.erb +++ b/modules/wikis/app/components/wikis/page_link_component.html.erb @@ -32,12 +32,12 @@ See COPYRIGHT and LICENSE files for more details. <%= render(Primer::Alpha::StackItem.new(grow: true, classes: "ellipsis")) do - render(Primer::Beta::Link.new(href: link.href, scheme: :primary)) { page_title_service.read(link) } + render(Primer::Beta::Link.new(href: link.href, scheme: :primary)) { link.title } end %> <%= - if show_action_menu? + if link.actions.any? render(Primer::Alpha::ActionMenu.new) do |menu| menu.with_show_button(icon: :"kebab-horizontal", "aria-label": t(:label_more), scheme: :invisible) diff --git a/modules/wikis/app/components/wikis/page_link_component.rb b/modules/wikis/app/components/wikis/page_link_component.rb index 46a181aa508..c50556e25fd 100644 --- a/modules/wikis/app/components/wikis/page_link_component.rb +++ b/modules/wikis/app/components/wikis/page_link_component.rb @@ -34,13 +34,5 @@ module Wikis include OpPrimer::ComponentHelpers alias_method :link, :model - - def page_title_service - @page_title_service ||= PageTitleService.new - end - - def show_action_menu? - link.relation? - end end end diff --git a/modules/wikis/app/components/wikis/referencing_pages_component.html.erb b/modules/wikis/app/components/wikis/referencing_pages_component.html.erb deleted file mode 100644 index f1be4032537..00000000000 --- a/modules/wikis/app/components/wikis/referencing_pages_component.html.erb +++ /dev/null @@ -1,43 +0,0 @@ -<%#-- copyright -OpenProject is an open source project management software. -Copyright (C) the OpenProject GmbH - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License version 3. - -OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -Copyright (C) 2006-2013 Jean-Philippe Lang -Copyright (C) 2010-2013 the ChiliProject Team - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -See COPYRIGHT and LICENSE files for more details. - -++#%> - -<%= - render(Primer::Beta::BorderBox.new(padding: :condensed)) do |box| - box.with_header do - render(Primer::OpenProject::BorderBox::CollapsibleHeader.new(collapsed: true)) do |header| - header.with_title { t(".heading") } - header.with_count(count: referencing_page_links.count) - end - end - - referencing_page_links.each do |page_link| - box.with_row { render(Wikis::PageLinkComponent.new(page_link)) } - end - end -%> diff --git a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb index 31ac1bead97..23bf68954de 100644 --- a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb +++ b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb @@ -57,13 +57,13 @@ See COPYRIGHT and LICENSE files for more details. if inline_page_links.any? container.with_row(mb: 3) do - render(::Wikis::InlinePageLinksComponent.new(inline_page_links)) + render(::Wikis::CollapsiblePageLinksComponent.new(inline_page_links, heading: t(".inline_page_links"))) end end if referencing_wiki_pages.any? container.with_row(mb: 3) do - render(::Wikis::ReferencingPagesComponent.new(referencing_wiki_pages)) + render(::Wikis::CollapsiblePageLinksComponent.new(referencing_wiki_pages, heading: t(".referencing_pages"))) end end end diff --git a/modules/wikis/app/components/wikis/referencing_pages_component.rb b/modules/wikis/app/models/wikis/page_link_view_model.rb similarity index 71% rename from modules/wikis/app/components/wikis/referencing_pages_component.rb rename to modules/wikis/app/models/wikis/page_link_view_model.rb index 0e494f1d10f..dd12a364b0a 100644 --- a/modules/wikis/app/components/wikis/referencing_pages_component.rb +++ b/modules/wikis/app/models/wikis/page_link_view_model.rb @@ -29,10 +29,17 @@ #++ module Wikis - class ReferencingPagesComponent < ApplicationComponent - include ApplicationHelper - include OpPrimer::ComponentHelpers + PageLinkViewModel = Data.define(:page_identifier, :provider, :title, :href, :actions) do + def initialize(page_identifier:, provider:, title:, href:, actions: []) = super - alias_method :referencing_page_links, :model + def self.from_page_link(page_link:, title_service: PageTitleService.new) + new( + page_identifier: page_link.identifier, + provider: page_link.provider, + title: title_service.read(page_link), + href: page_link.href, + actions: page_link.relation? ? [:remove] : [] + ) + end end end diff --git a/modules/wikis/app/services/wikis/page_link_service.rb b/modules/wikis/app/services/wikis/page_link_service.rb index 3f58978019c..dc494071370 100644 --- a/modules/wikis/app/services/wikis/page_link_service.rb +++ b/modules/wikis/app/services/wikis/page_link_service.rb @@ -46,17 +46,36 @@ module Wikis .merge(RelationPageLink.all) .where(linkable:) .order(created_at: :desc) + .map { PageLinkViewModel.from_page_link(page_link: it, title_service: page_title_service) } end def inline_page_links_for(linkable:) InlinePageLink.where(linkable:) .order(created_at: :desc) + .map { PageLinkViewModel.from_page_link(page_link: it, title_service: page_title_service) } end - def referencing_wiki_pages_for(*) + def referencing_wiki_pages_for(linkable:) # TODO: iterate over all providers and fetch mentions of this linkable + if linkable.id % 2 == 0 + return [ + PageLinkViewModel.new( + page_identifier: "42", + provider: XWikiProvider.enabled.first, + title: "I come from the wiki down under", + href: "#" + ) + ] + end + [] end + + private + + def page_title_service + @page_title_service ||= PageTitleService.new + end end end diff --git a/modules/wikis/config/locales/en.yml b/modules/wikis/config/locales/en.yml index af2a3a8eb40..39e5af5ab98 100644 --- a/modules/wikis/config/locales/en.yml +++ b/modules/wikis/config/locales/en.yml @@ -30,15 +30,13 @@ en: work_package_wikis_tab_component: relation_page_links: Related pages inline_page_links_and_references: Inline page links and references + inline_page_links: Inline page links + referencing_pages: Referenced in blankslate: heading: No wiki providers enabled description: >- There are no wiki providers configured and enabled. Wiki page links can only be added for enabled providers. To add wiki providers, visit Administration > Wikis. - inline_page_links_component: - heading: Inline page links - referencing_pages_component: - heading: Referenced in page_link_component: remove: Remove page link relation_page_links_component: From cbf0fac8d3cb12446477a212cfd2bbc24e172635 Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Thu, 2 Apr 2026 15:39:07 +0200 Subject: [PATCH 020/280] Remove uiRouter from Calendars --- frontend/src/app/app.module.ts | 2 + .../src/app/core/main-menu/submenu.service.ts | 42 ++++----- .../app/core/routing/openproject.routes.ts | 2 - ...-routes.ts => calendar-entry.component.ts} | 28 ++++-- .../app/features/calendar/calendar.routes.ts | 84 ----------------- .../op-work-packages-calendar.service.ts | 55 ++++++------ .../calendar/openproject-calendar.module.ts | 7 +- .../wp-calendar-page.component.html | 49 ++++++++++ .../wp-calendar-page.component.ts | 23 ++++- .../wp-calendar/wp-calendar.component.ts | 32 ++++--- .../planner/team-planner.component.html | 2 +- .../planner/team-planner.component.ts | 30 +++++++ .../wp-list/wp-list-checksum.service.ts | 26 ++++++ .../components/wp-list/wp-list.service.ts | 29 +++++- .../wp-list/wp-query-view.service.ts | 28 +++--- .../calendar/add_button_component.rb | 2 +- .../calendar/calendars_controller.rb | 43 +++++++-- .../controllers/calendar/menus_controller.rb | 2 +- .../views/calendar/calendars/_form.html.erb | 89 ------------------- .../app/views/calendar/calendars/new.html.erb | 49 ++++++++-- .../views/calendar/calendars/show.html.erb | 11 ++- .../app/views/calendar/menus/_menu.html.erb | 2 +- modules/calendar/config/routes.rb | 11 ++- .../lib/open_project/calendar/engine.rb | 2 +- .../spec/features/team_planner_spec.rb | 1 + .../features/team_planner_view_modes_spec.rb | 1 + 26 files changed, 359 insertions(+), 293 deletions(-) rename frontend/src/app/features/calendar/{calendar.lazy-routes.ts => calendar-entry.component.ts} (62%) delete mode 100644 frontend/src/app/features/calendar/calendar.routes.ts create mode 100644 frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.html delete mode 100644 modules/calendar/app/views/calendar/calendars/_form.html.erb diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index a002c9df85e..c7c37370d5c 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -147,6 +147,7 @@ import { import { BoardEntryComponent, } from 'core-app/features/boards/board/board-partitioned-page/board-entry.component'; +import { CalendarEntryComponent } from 'core-app/features/calendar/calendar-entry.component'; import { StorageLoginButtonComponent, } from 'core-app/shared/components/storages/storage-login-button/storage-login-button.component'; @@ -393,6 +394,7 @@ export class OpenProjectModule implements DoBootstrap { registerCustomElement('opce-notification-center', InAppNotificationCenterComponent, { injector }); registerCustomElement('opce-wp-split-view', WorkPackageSplitViewEntryComponent, { injector }); registerCustomElement('opce-board-view', BoardEntryComponent, { injector }); + registerCustomElement('opce-calendar-view', CalendarEntryComponent, { injector }); registerCustomElement('opce-wp-full-view', WorkPackageFullViewEntryComponent, { injector }); registerCustomElement('opce-wp-full-create', WorkPackageFullCreateEntryComponent, { injector }); registerCustomElement('opce-wp-full-copy', WorkPackageFullCopyEntryComponent, { injector }); diff --git a/frontend/src/app/core/main-menu/submenu.service.ts b/frontend/src/app/core/main-menu/submenu.service.ts index dff74195f52..5ad6678b260 100644 --- a/frontend/src/app/core/main-menu/submenu.service.ts +++ b/frontend/src/app/core/main-menu/submenu.service.ts @@ -9,31 +9,31 @@ export class SubmenuService { reloadSubmenu(selectedQueryId:string|null, sidemenuId?:string):void { // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment const menuIdentifier:string|undefined = sidemenuId ?? this.$state.current.data?.sideMenuOptions?.sidemenuId; + if (!menuIdentifier) { return; } - if (menuIdentifier) { - const menu = document.getElementById(menuIdentifier) as FrameElement; - // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - const sideMenuOptions = this.$state.$current.data?.sideMenuOptions as { hardReloadOnBaseRoute?:boolean, defaultQuery?:string }; - const currentSrc = menu.getAttribute('src'); + const menu = document.getElementById(menuIdentifier) as FrameElement|null; + const currentSrc = menu?.getAttribute('src'); + if (!currentSrc || !menu) { return; } - if (currentSrc && menu) { - const frameUrl = new URL(currentSrc, window.location.origin); - const defaultQuery = sideMenuOptions?.defaultQuery; + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + const sideMenuOptions = this.$state.$current.data?.sideMenuOptions as { hardReloadOnBaseRoute?:boolean, defaultQuery?:string }; + const frameUrl = new URL(currentSrc, window.location.origin); - if (selectedQueryId) { - // If there is a default query passed in the route definition, it means that id passed as argument and not as parameter, - // e.g. calendars/:id, team_planner/:id, ... - // Otherwise, we will just replace the params - if (defaultQuery) { - frameUrl.search = `?id=${selectedQueryId}`; - } else { - frameUrl.search = `?query_id=${selectedQueryId}`; - } - } + if (selectedQueryId) { + // Prefer the data attribute on the frame, then fall back to route sideMenuOptions, + // then default to 'query_id'. Modules with path-based IDs (e.g. calendars/:id) + // set data-query-param="id" on the frame. + const queryParam = menu.getAttribute('data-query-param') + ?? (sideMenuOptions?.defaultQuery ? 'id' : 'query_id'); - // Override the frame src to enforce a reload - menu.setAttribute('src', frameUrl.href); - } + frameUrl.search = `?${queryParam}=${selectedQueryId}`; + } + + const newSrc = frameUrl.href; + if (menu.getAttribute('src') !== newSrc) { + menu.setAttribute('src', newSrc); + } else { + void menu.reload(); } } } diff --git a/frontend/src/app/core/routing/openproject.routes.ts b/frontend/src/app/core/routing/openproject.routes.ts index fb01324276b..59250162984 100644 --- a/frontend/src/app/core/routing/openproject.routes.ts +++ b/frontend/src/app/core/routing/openproject.routes.ts @@ -40,7 +40,6 @@ import { redirectToMobileAlternative, } from 'core-app/shared/helpers/routing/mobile-guard.helper'; import { TEAM_PLANNER_LAZY_ROUTES } from 'core-app/features/team-planner/team-planner/team-planner.lazy-routes'; -import { CALENDAR_LAZY_ROUTES } from 'core-app/features/calendar/calendar.lazy-routes'; export const OPENPROJECT_ROUTES:Ng2StateDeclaration[] = [ { @@ -75,7 +74,6 @@ export const OPENPROJECT_ROUTES:Ng2StateDeclaration[] = [ loadChildren: () => import('../../features/bim/ifc_models/openproject-ifc-models.module').then((m) => m.OpenprojectIFCModelsModule), }, ...TEAM_PLANNER_LAZY_ROUTES, - ...CALENDAR_LAZY_ROUTES, ]; /** diff --git a/frontend/src/app/features/calendar/calendar.lazy-routes.ts b/frontend/src/app/features/calendar/calendar-entry.component.ts similarity index 62% rename from frontend/src/app/features/calendar/calendar.lazy-routes.ts rename to frontend/src/app/features/calendar/calendar-entry.component.ts index 70e8ab18acc..1200e7da5b9 100644 --- a/frontend/src/app/features/calendar/calendar.lazy-routes.ts +++ b/frontend/src/app/features/calendar/calendar-entry.component.ts @@ -26,13 +26,23 @@ // See COPYRIGHT and LICENSE files for more details. //++ -import { Ng2StateDeclaration } from '@uirouter/angular'; +import { ChangeDetectionStrategy, Component, ElementRef, Input } from '@angular/core'; +import { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs'; +import { + WorkPackageIsolatedQuerySpaceDirective, +} from 'core-app/features/work-packages/directives/query-space/wp-isolated-query-space.directive'; -export const CALENDAR_LAZY_ROUTES:Ng2StateDeclaration[] = [ - { - name: 'calendar.**', - parent: 'optional_project', - url: '/calendars', - loadChildren: () => import('./openproject-calendar.module').then((m) => m.OpenprojectCalendarModule), - }, -]; +@Component({ + hostDirectives: [WorkPackageIsolatedQuerySpaceDirective], + template: '', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: false, +}) +export class CalendarEntryComponent { + @Input() queryId:string; + + constructor(readonly elementRef:ElementRef) { + populateInputsFromDataset(this); + document.body.classList.add('router--calendar'); + } +} diff --git a/frontend/src/app/features/calendar/calendar.routes.ts b/frontend/src/app/features/calendar/calendar.routes.ts deleted file mode 100644 index 4a2e1c34d1c..00000000000 --- a/frontend/src/app/features/calendar/calendar.routes.ts +++ /dev/null @@ -1,84 +0,0 @@ -//-- copyright -// OpenProject is an open source project management software. -// Copyright (C) the OpenProject GmbH -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License version 3. -// -// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -// Copyright (C) 2006-2013 Jean-Philippe Lang -// Copyright (C) 2010-2013 the ChiliProject Team -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// -// See COPYRIGHT and LICENSE files for more details. -//++ - -import { Ng2StateDeclaration } from '@uirouter/angular'; -import { makeSplitViewRoutes } from 'core-app/features/work-packages/routing/split-view-routes.template'; -import { WorkPackageSplitViewComponent } from 'core-app/features/work-packages/routing/wp-split-view/wp-split-view.component'; -import { WorkPackagesBaseComponent } from 'core-app/features/work-packages/routing/wp-base/wp--base.component'; -import { WorkPackagesCalendarComponent } from 'core-app/features/calendar/wp-calendar/wp-calendar.component'; -import { WorkPackagesCalendarPageComponent } from 'core-app/features/calendar/wp-calendar-page/wp-calendar-page.component'; - -export const sidemenuId = 'calendar_sidemenu'; -export const sideMenuOptions = { - sidemenuId, - hardReloadOnBaseRoute: true, - defaultQuery: 'new', -}; - -export const CALENDAR_ROUTES:Ng2StateDeclaration[] = [ - { - name: 'calendar', - parent: 'optional_project', - url: '/calendars/:query_id?&query_props&cdate&cview', - redirectTo: 'calendar.page', - views: { - '!$default': { component: WorkPackagesBaseComponent }, - }, - params: { - query_id: { type: 'opQueryId', dynamic: true }, - cdate: { type: 'string', dynamic: true }, - cview: { type: 'string', dynamic: true }, - // Use custom encoder/decoder that ensures validity of URL string - query_props: { type: 'opQueryString' }, - }, - }, - { - name: 'calendar.page', - component: WorkPackagesCalendarPageComponent, - redirectTo: 'calendar.page.show', - data: { - bodyClasses: 'router--calendar', - sideMenuOptions, - }, - }, - { - name: 'calendar.page.show', - data: { - baseRoute: 'calendar.page.show', - sideMenuOptions, - }, - views: { - 'content-left': { component: WorkPackagesCalendarComponent }, - }, - }, - ...makeSplitViewRoutes( - 'calendar.page.show', - undefined, - WorkPackageSplitViewComponent, - ), -]; diff --git a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts index 86dbd0c0d09..3a51ebeb6ad 100644 --- a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts @@ -15,9 +15,8 @@ import { ConfigurationService } from 'core-app/core/config/configuration.service import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource'; import { DomSanitizer } from '@angular/platform-browser'; import { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service'; -import { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper'; -import { StateService } from '@uirouter/angular'; import { WorkPackageCollectionResource } from 'core-app/features/hal/resources/wp-collection-resource'; +import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; import { ToastService } from 'core-app/shared/components/toaster/toast.service'; import { firstValueFrom, Observable } from 'rxjs'; import { @@ -34,7 +33,6 @@ import { UrlParamsHelperService, } from 'core-app/features/work-packages/components/wp-query/url-params-helper'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; -import { UIRouterGlobals } from '@uirouter/core'; import { TimezoneService } from 'core-app/core/datetime/timezone.service'; import { WorkPackagesListChecksumService, @@ -93,7 +91,6 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { private I18n:I18nService, private configuration:ConfigurationService, private sanitizer:DomSanitizer, - private $state:StateService, readonly injector:Injector, readonly schemaCache:SchemaCacheService, readonly toastService:ToastService, @@ -104,8 +101,8 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { readonly querySpace:IsolatedQuerySpace, readonly apiV3Service:ApiV3Service, readonly halResourceService:HalResourceService, - readonly uiRouterGlobals:UIRouterGlobals, readonly timezoneService:TimezoneService, + readonly pathHelper:PathHelperService, readonly halEditing:HalResourceEditingService, readonly wpTableSelection:WorkPackageViewSelectionService, readonly contextMenuService:OPContextMenuService, @@ -283,23 +280,18 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { this.wpTableSelection.setSelection(id, -1); // Only open the split view if already open, otherwise only clicking the details opens - if (onlyWhenOpen && !this.$state.includes('**.details.*')) { + if (onlyWhenOpen && !window.location.pathname.includes('/details/')) { return; } - void this.$state.go( - `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: id, tabIdentifier: 'overview' }, - ); + const basePath = window.location.pathname.replace(/\/details\/.*$/, ''); + const link = `${basePath}/details/${id}${window.location.search}`; + Turbo.visit(link, { frame: 'content-bodyRight', action: 'advance' }); } public openFullView(id:string):void { this.wpTableSelection.setSelection(id, -1); - - void this.$state.go( - 'work-packages.show', - { workPackageId: id }, - ); + Turbo.visit(this.pathHelper.workPackagePath(id)); } public onCardClicked({ workPackageId, event }:{ workPackageId:string, event:MouseEvent }):void { @@ -399,8 +391,22 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { && !this.urlParams.query_props; } - public get urlParams() { - return this.uiRouterGlobals.params; + public get urlParams():{ + query_id?:string; + query_props?:string; + cdate?:string; + cview?:string; + } { + const search = new URLSearchParams(window.location.search); + // Extract query_id from path-based routing (e.g. /calendars/, /team_planners/). + const match = /\/(?:calendars|team_planners)\/([^/]+)/.exec(window.location.pathname); + const rawId = match?.[1]; + return { + query_id: rawId === 'new' ? undefined : rawId, + query_props: search.get('query_props') ?? undefined, + cdate: search.get('cdate') ?? undefined, + cview: search.get('cview') ?? undefined, + }; } private get areFiltersEmpty():boolean { @@ -417,17 +423,10 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { } private updateDateParam(dates:DatesSetArg) { - void this.$state.go( - '.', - { - cdate: this.timezoneService.formattedISODate(dates.view.calendar.getDate()), - // v6.beta3 fails to have type on the ViewAPI - cview: (dates.view as unknown as { type:string }).type, - }, - { - custom: { notify: false }, - }, - ); + const url = new URL(window.location.href); + url.searchParams.set('cdate', this.timezoneService.formattedISODate(dates.view.calendar.getDate())); + url.searchParams.set('cview', (dates.view as unknown as { type:string }).type); + window.history.pushState({}, '', url); } updateDates(resizeInfo:EventResizeDoneArg|EventDropArg|EventReceiveArg, dragged?:boolean):ResourceChangeset { diff --git a/frontend/src/app/features/calendar/openproject-calendar.module.ts b/frontend/src/app/features/calendar/openproject-calendar.module.ts index ead83646fc5..fde87c840c5 100644 --- a/frontend/src/app/features/calendar/openproject-calendar.module.ts +++ b/frontend/src/app/features/calendar/openproject-calendar.module.ts @@ -32,12 +32,11 @@ import { ReactiveFormsModule } from '@angular/forms'; import { FullCalendarModule } from '@fullcalendar/angular'; import { WorkPackagesCalendarComponent } from 'core-app/features/calendar/wp-calendar/wp-calendar.component'; import { OpenprojectWorkPackagesModule } from 'core-app/features/work-packages/openproject-work-packages.module'; -import { UIRouterModule } from '@uirouter/angular'; import { TimeEntryCalendarComponent } from 'core-app/features/calendar/te-calendar/te-calendar.component'; import { OpenprojectFieldsModule } from 'core-app/shared/components/fields/openproject-fields.module'; import { OpenprojectTimeEntriesModule } from 'core-app/shared/components/time_entries/openproject-time-entries.module'; import { WorkPackagesCalendarPageComponent } from 'core-app/features/calendar/wp-calendar-page/wp-calendar-page.component'; -import { CALENDAR_ROUTES } from 'core-app/features/calendar/calendar.routes'; +import { CalendarEntryComponent } from 'core-app/features/calendar/calendar-entry.component'; import { QueryGetIcalUrlModalComponent } from 'core-app/shared/components/modals/get-ical-url-modal/query-get-ical-url.modal'; @NgModule({ @@ -45,9 +44,6 @@ import { QueryGetIcalUrlModalComponent } from 'core-app/shared/components/modals // Commons OpSharedModule, - // Routes for /calendar - UIRouterModule.forChild({ states: CALENDAR_ROUTES }), - // Work Package module OpenprojectWorkPackagesModule, @@ -65,6 +61,7 @@ import { QueryGetIcalUrlModalComponent } from 'core-app/shared/components/modals ], declarations: [ // Work package calendars + CalendarEntryComponent, WorkPackagesCalendarPageComponent, WorkPackagesCalendarComponent, TimeEntryCalendarComponent, diff --git a/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.html b/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.html new file mode 100644 index 00000000000..b81b824c8e6 --- /dev/null +++ b/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.html @@ -0,0 +1,49 @@ +
+ +
+
+

+ +

+ @if (showToolbar) { +
    + @for (definition of toolbarButtonComponents; track definition) { + @if (!definition.show || definition.show()) { +
  • + +
  • + } + } +
+ } +
+
+ +
+ @if (filterContainerDefinition) { + + } +
+ +
+
+ +
+
+
diff --git a/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.ts b/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.ts index 06bc7e78440..1c0a3052e78 100644 --- a/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.ts +++ b/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.ts @@ -29,6 +29,8 @@ import { ChangeDetectionStrategy, Component, + Input, + OnInit, ViewChild, } from '@angular/core'; import { WorkPackagesCalendarComponent } from 'core-app/features/calendar/wp-calendar/wp-calendar.component'; @@ -50,7 +52,8 @@ import { ActionsService } from 'core-app/core/state/actions/actions.service'; import { InjectField } from 'core-app/shared/helpers/angular/inject-field.decorator'; @Component({ - templateUrl: '../../work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.html', + selector: 'op-wp-calendar-page', + templateUrl: './wp-calendar-page.component.html', styleUrls: [ '../../work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.sass', ], @@ -60,7 +63,9 @@ import { InjectField } from 'core-app/shared/helpers/angular/inject-field.decora ], standalone: false, }) -export class WorkPackagesCalendarPageComponent extends PartitionedQuerySpacePageComponent { +export class WorkPackagesCalendarPageComponent extends PartitionedQuerySpacePageComponent implements OnInit { + @Input() queryId:string; + @InjectField(ActionsService) actions$:ActionsService; @ViewChild(WorkPackagesCalendarComponent, { static: true }) calendarElement:WorkPackagesCalendarComponent; @@ -121,6 +126,20 @@ export class WorkPackagesCalendarPageComponent extends PartitionedQuerySpacePage }, ]; + override ngOnInit():void { + super.ngOnInit(); + // Fix showToolbarSaveButton from actual URL params (not uiRouter state) + this.showToolbarSaveButton = !!new URLSearchParams(window.location.search).get('query_props'); + + // Update save button reactively when query_props changes via pushState (non-uiRouter pages) + this.wpListChecksumService.visibleChecksum$ + .pipe(this.untilDestroyed()) + .subscribe((checksum) => { + this.showToolbarSaveButton = !!checksum; + this.cdRef.detectChanges(); + }); + } + /** * We need to set the current partition to the grid to ensure * either side gets expanded to full width if we're not in '-split' mode. diff --git a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts index e0f6f2f5f2c..63e93f1ad67 100644 --- a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts +++ b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts @@ -57,7 +57,6 @@ import { WorkPackageViewFiltersService, } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service'; import { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service'; -import { StateService } from '@uirouter/core'; import { I18nService } from 'core-app/core/i18n/i18n.service'; import { ToastService } from 'core-app/shared/components/toaster/toast.service'; import { DomSanitizer } from '@angular/platform-browser'; @@ -70,7 +69,7 @@ import { HalResourceEditingService, } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; import { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service'; -import { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper'; +import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; import { CalendarViewEvent, OpWorkPackagesCalendarService, @@ -88,7 +87,6 @@ import { import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { ApiV3FilterBuilder } from 'core-app/shared/helpers/api-v3/api-v3-filter-builder'; import allLocales from '@fullcalendar/core/locales-all'; -import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; import { MeetingResource } from 'core-app/features/hal/resources/meeting-resource'; import { TimezoneService } from 'core-app/core/datetime/timezone.service'; @@ -128,7 +126,6 @@ export class WorkPackagesCalendarComponent extends UntilDestroyedMixin implement constructor( readonly actions$:ActionsService, readonly states:States, - readonly $state:StateService, readonly wpTableFilters:WorkPackageViewFiltersService, readonly wpListService:WorkPackagesListService, readonly querySpace:IsolatedQuerySpace, @@ -345,13 +342,10 @@ export class WorkPackagesCalendarComponent extends UntilDestroyedMixin implement const workPackageId = (evt.event.extendedProps.workPackage as WorkPackageResource).id!; // Currently the calendar widget is shown on multiple pages, // but only the calendar module itself is a partitioned query space which can deal with a split screen request - if (this.$state.includes('calendar')) { + if (window.location.pathname.includes('/calendars/')) { this.workPackagesCalendar.openSplitView(workPackageId); } else { - void this.$state.go( - 'work-packages.show', - { workPackageId }, - ); + window.location.href = this.pathHelper.workPackagePath(workPackageId); } } }, @@ -414,7 +408,7 @@ export class WorkPackagesCalendarComponent extends UntilDestroyedMixin implement durationEditable: this.workPackagesCalendar.eventDurationEditable(workPackage), end: exclusiveEnd, allDay: true, - className: `fc-event-clickable __hl_background_type_${workPackage.type.id || ''}`, + className: `fc-event-clickable __hl_background_type_${workPackage.type.id ?? ''}`, workPackage, }; }); @@ -444,13 +438,17 @@ export class WorkPackagesCalendarComponent extends UntilDestroyedMixin implement ignoreNonWorkingDays: nonWorkingDays, }; - void this.$state.go( - splitViewRoute(this.$state, 'new'), - { - defaults, - tabIdentifier: 'overview', - }, - ); + if (window.location.pathname.includes('/calendars/')) { + const basePath = window.location.pathname.replace(/\/details\/.*$/, ''); + const params = new URLSearchParams(window.location.search); + params.set('startDate', defaults.startDate); + params.set('dueDate', defaults.dueDate); + if (defaults.ignoreNonWorkingDays) { + params.set('ignoreNonWorkingDays', 'true'); + } + const link = `${basePath}/details/new?${params.toString()}`; + Turbo.visit(link, { frame: 'content-bodyRight', action: 'advance' }); + } } @EffectCallback(calendarRefreshRequest) diff --git a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html index 3ebc827c247..e43d51c6725 100644 --- a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html +++ b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.html @@ -98,7 +98,7 @@ [showStartDate]="!isWpStartDateInCurrentView(wp)" [showEndDate]="!isWpEndDateInCurrentView(wp)" (stateLinkClicked)="openStateLink($event)" - (cardClicked)="workPackagesCalendar.onCardClicked($event)" + (cardClicked)="onCardClicked($event)" (cardDblClicked)="workPackagesCalendar.onCardDblClicked($event)" (cardContextMenu)="workPackagesCalendar.showEventContextMenu($event)" /> diff --git a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts index 14a92373753..87846cdfd3e 100644 --- a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts +++ b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts @@ -40,6 +40,7 @@ import { import { CalendarOptions, DateSelectArg, + DatesSetArg, EventApi, EventDropArg, EventInput, @@ -78,6 +79,7 @@ import { WorkPackageViewFiltersService } from 'core-app/features/work-packages/r import { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space'; import { CurrentProjectService } from 'core-app/core/current-project/current-project.service'; import { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper'; +import { isClickedWithModifier } from 'core-app/shared/helpers/link-handling/link-handling'; import { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource'; import { PrincipalsResourceService } from 'core-app/core/state/principals/principals.service'; import { @@ -460,6 +462,7 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, .pipe( this.untilDestroyed(), debounceTime(0), + filter(() => !!this.ucCalendar), ) .subscribe(([principals, showAddAssignee]) => { const api = this.ucCalendar.getApi(); @@ -511,6 +514,19 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, .then(() => { this.calendarOptions$.next( this.workPackagesCalendar.calendarOptions({ + // Override datesSet to persist cdate/cview via uiRouter instead of pushState, + // because uiRouter manages the TeamPlanner URL and would otherwise strip these params. + // Remove once uiRouter is removed. + datesSet: (dates:DatesSetArg) => { + void this.$state.go( + '.', + { + cdate: this.workPackagesCalendar.timezoneService.formattedISODate(dates.view.calendar.getDate()), + cview: (dates.view as unknown as { type:string }).type, + }, + { custom: { notify: false } }, + ); + }, locales: allLocales, locale: this.I18n.locale, schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source', @@ -857,6 +873,20 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, } } + onCardClicked({ workPackageId, event }:{ workPackageId:string, event:MouseEvent }):void { + if (isClickedWithModifier(event)) { + return; + } + + // Only switch the split view if it is already open + if (!window.location.pathname.includes('/details/')) { + return; + } + + this.workPackagesCalendar.wpTableSelection.setSelection(workPackageId, -1); + this.keepTab.goCurrentDetailsState({ workPackageId }); + } + shouldShowAsGhost(id:string, globalDraggingId:string|undefined):boolean { if (globalDraggingId === undefined) { return false; diff --git a/frontend/src/app/features/work-packages/components/wp-list/wp-list-checksum.service.ts b/frontend/src/app/features/work-packages/components/wp-list/wp-list-checksum.service.ts index 45bcd15c26a..8b214522f5f 100644 --- a/frontend/src/app/features/work-packages/components/wp-list/wp-list-checksum.service.ts +++ b/frontend/src/app/features/work-packages/components/wp-list/wp-list-checksum.service.ts @@ -31,6 +31,7 @@ import { UrlParamsHelperService } from 'core-app/features/work-packages/componen import { Injectable } from '@angular/core'; import { WorkPackageViewPagination } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-table-pagination'; import { QueryResource } from 'core-app/features/hal/resources/query-resource'; +import { Subject } from 'rxjs'; @Injectable() export class WorkPackagesListChecksumService { @@ -44,6 +45,9 @@ export class WorkPackagesListChecksumService { public visibleChecksum:string|null; + /** Emits whenever visibleChecksum changes (useful for non-uiRouter pages to react to URL param changes) */ + public readonly visibleChecksum$ = new Subject(); + public updateIfDifferent(query:QueryResource, pagination:WorkPackageViewPagination):Promise { const newQueryChecksum = this.getNewChecksum(query, pagination); @@ -153,6 +157,28 @@ export class WorkPackagesListChecksumService { private maintainUrlQueryState(id:string|null, checksum:string|null):TransitionPromise { this.visibleChecksum = checksum; + this.visibleChecksum$.next(checksum); + + // When uiRouter is not managing the current page (e.g. calendar after Turbo migration), + // $state.current.name is empty and state.go('.') does nothing. Fall back to pushState. + if (!this.$state.current.name) { + const url = new URL(window.location.href); + + if (checksum) { + url.searchParams.set('query_props', checksum); + } else { + url.searchParams.delete('query_props'); + } + + if (id) { + url.searchParams.set('query_id', id); + } else { + url.searchParams.delete('query_id'); + } + + window.history.pushState({}, '', url.toString()); + return Promise.resolve() as unknown as TransitionPromise; + } return this.$state.go( '.', diff --git a/frontend/src/app/features/work-packages/components/wp-list/wp-list.service.ts b/frontend/src/app/features/work-packages/components/wp-list/wp-list.service.ts index 063442197c8..6b47e92c2b6 100644 --- a/frontend/src/app/features/work-packages/components/wp-list/wp-list.service.ts +++ b/frontend/src/app/features/work-packages/components/wp-list/wp-list.service.ts @@ -261,6 +261,7 @@ export class WorkPackagesListService { // Reload the query, and then reload the menu this.reloadQuery(createdQuery).subscribe(() => { + this.navigateToQueryOnNonRouterPage(createdQuery.id); this.states.changes.queries.next(createdQuery.id); this.reloadSidemenu(createdQuery.id); }); @@ -311,7 +312,11 @@ export class WorkPackagesListService { this.toastService.addSuccess(this.I18n.t('js.notice_successful_update')); const queryAccessibleByUser = query.public || query.user.id === this.currentUser.userId; if (queryAccessibleByUser) { - void this.$state.go('.', { query_id: query.id, query_props: null }, { reload: true }); + if (!this.$state.current.name) { + this.navigateToQueryOnNonRouterPage(query.id); + } else { + void this.$state.go('.', { query_id: query.id, query_props: null }, { reload: true }); + } this.states.changes.queries.next(query.id); this.reloadSidemenu(query.id); } else { @@ -463,7 +468,27 @@ export class WorkPackagesListService { } } + private navigateToQueryOnNonRouterPage(queryId:string|null):void { + if (this.$state.current.name) { return; } + + // update the URL path to reflect the saved query ID so subsequent refetches use the correct query_id. + const url = new URL(window.location.href); + url.pathname = url.pathname.replace(/\/[^/]+$/, `/${queryId}`); + url.searchParams.delete('query_id'); + url.searchParams.delete('query_props'); + window.history.pushState({}, '', url.toString()); + } + private reloadSidemenu(selectedQueryId:string|null):void { - this.submenuService.reloadSubmenu(selectedQueryId); + const sidemenuId = !this.$state.current.name ? this.getNonRouterSidemenuId() : undefined; + this.submenuService.reloadSubmenu(selectedQueryId, sidemenuId); + } + + private getNonRouterSidemenuId():string|undefined { + const { pathname } = window.location; + if (pathname.includes('/calendars')) return 'calendar_sidemenu'; + if (pathname.includes('/team_planners')) return 'team_planner_sidemenu'; + if (pathname.includes('/ifc_models')) return 'bim_sidemenu'; + return undefined; } } diff --git a/frontend/src/app/features/work-packages/components/wp-list/wp-query-view.service.ts b/frontend/src/app/features/work-packages/components/wp-list/wp-query-view.service.ts index 27ff2c11f0e..e9b7d05c6e0 100644 --- a/frontend/src/app/features/work-packages/components/wp-list/wp-query-view.service.ts +++ b/frontend/src/app/features/work-packages/components/wp-list/wp-query-view.service.ts @@ -34,20 +34,20 @@ export class WorkPackagesQueryViewService { } private get viewType() { - if (this.$state.includes('work-packages')) { - return 'work_packages_table'; - } - if (this.$state.includes('team_planner')) { - return 'team_planner'; - } - if (this.$state.includes('bim')) { - return 'bim'; - } - if (this.$state.includes('calendar')) { - return 'work_packages_calendar'; - } - if (this.$state.includes('gantt')) { - return 'gantt'; + if (this.$state.current.name) { + if (this.$state.includes('work-packages')) { return 'work_packages_table'; } + if (this.$state.includes('team_planner')) { return 'team_planner'; } + if (this.$state.includes('bim')) { return 'bim'; } + if (this.$state.includes('calendar')) { return 'work_packages_calendar'; } + if (this.$state.includes('gantt')) { return 'gantt'; } + } else { + // Non-uiRouter page — derive view type from URL path + const { pathname } = window.location; + if (pathname.includes('/calendars')) { return 'work_packages_calendar'; } + if (pathname.includes('/team_planners')) { return 'team_planner'; } + if (pathname.includes('/ifc_models')) { return 'bim'; } + if (pathname.includes('/gantt')) { return 'gantt'; } + if (pathname.includes('/work_packages')) { return 'work_packages_table'; } } throw new Error('Not on a path defined for query views'); diff --git a/modules/calendar/app/components/calendar/add_button_component.rb b/modules/calendar/app/components/calendar/add_button_component.rb index c825653bcce..1cad85460df 100644 --- a/modules/calendar/app/components/calendar/add_button_component.rb +++ b/modules/calendar/app/components/calendar/add_button_component.rb @@ -41,7 +41,7 @@ module Calendar def dynamic_path if current_project - new_project_calendars_path(current_project) + new_project_calendar_path(current_project) else new_calendar_path end diff --git a/modules/calendar/app/controllers/calendar/calendars_controller.rb b/modules/calendar/app/controllers/calendar/calendars_controller.rb index 4d34662cece..c515bdb82b3 100644 --- a/modules/calendar/app/controllers/calendar/calendars_controller.rb +++ b/modules/calendar/app/controllers/calendar/calendars_controller.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + #-- copyright # OpenProject is an open source project management software. # Copyright (C) the OpenProject GmbH @@ -31,14 +33,17 @@ module ::Calendar before_action :load_and_authorize_in_optional_project before_action :build_calendar_view, only: %i[new] before_action :authorize, except: %i[index new create] - before_action :authorize_global, only: %i[index new create] + before_action :authorize_global, only: %i[index create] + before_action :authorize_new, only: %i[new] + authorization_checked! :new - before_action :find_calendar, only: %i[destroy] + before_action :find_calendar, only: %i[show split_view destroy] menu_item :calendar_view include Layout include PaginationHelper include SortHelper + include WorkPackages::WithSplitView def index @views = visible_views @@ -46,10 +51,26 @@ module ::Calendar end def show - render layout: "angular/angular" + render end - def new; end + def split_view + respond_to do |format| + format.html do + if turbo_frame_request? + render "work_packages/split_view", layout: false + else + render :show + end + end + end + end + + def new + # In a project context, show the calendar view with an unsaved query. + # In the global context (no project), show the form so the user can select a project. + render :show if @project + end def create service_result = create_service_class.new(user: User.current) @@ -59,7 +80,7 @@ module ::Calendar if service_result.success? flash[:notice] = I18n.t(:notice_successful_create) - redirect_to project_calendar_path(@project, @view.query) + redirect_to project_calendar_path(@project || @view.query.project, @view.query) else render action: :new, status: :unprocessable_entity end @@ -77,6 +98,16 @@ module ::Calendar private + # In project context, `new` renders the calendar view and needs the same project-level + # permission as `show`. In global context (no project), it shows the creation form. + def authorize_new + @project ? authorize : authorize_global + end + + def split_view_base_route + project_calendar_path(@project, @view, request.query_parameters) + end + def build_calendar_view @view = Query.new end @@ -86,7 +117,7 @@ module ::Calendar end def calendar_view_params - params.require(:query).permit(:name, :public, :starred).merge(project_id: @project&.id) + params.expect(query: %i[name public starred project_id]) end def visible_views diff --git a/modules/calendar/app/controllers/calendar/menus_controller.rb b/modules/calendar/app/controllers/calendar/menus_controller.rb index d0a735356cc..bf2ff10413b 100644 --- a/modules/calendar/app/controllers/calendar/menus_controller.rb +++ b/modules/calendar/app/controllers/calendar/menus_controller.rb @@ -33,7 +33,7 @@ module ::Calendar def show @submenu_menu_items = ::Calendar::Menu.new(project: @project, params:).menu_items @create_btn_options = if User.current.allowed_in_project?(:manage_calendars, @project) - { href: new_project_calendars_path(@project), module_key: "calendar" } + { href: new_project_calendar_path(@project), module_key: "calendar" } end render layout: nil diff --git a/modules/calendar/app/views/calendar/calendars/_form.html.erb b/modules/calendar/app/views/calendar/calendars/_form.html.erb deleted file mode 100644 index 1e082372b43..00000000000 --- a/modules/calendar/app/views/calendar/calendars/_form.html.erb +++ /dev/null @@ -1,89 +0,0 @@ -<%#-- copyright -OpenProject is an open source project management software. -Copyright (C) the OpenProject GmbH - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License version 3. - -OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -Copyright (C) 2006-2013 Jean-Philippe Lang -Copyright (C) 2010-2013 the ChiliProject Team - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -See COPYRIGHT and LICENSE files for more details. - -++#%> - -<%= error_messages_for @view %> - -
- -
- <%= f.text_field :name, - label: t(:label_title), - required: true, - size: 60, - container_class: "-wide" %> -
- -
- -
- <%= angular_component_tag "opce-project-autocompleter", - inputs: { - filters: [{ name: :user_action, operator: "=", values: ["calendars/create"] }], - inputName: "project_id", - inputValue: @project&.id - }, - id: "project_id", - class: "form--select-container -wide remote-field--input", - data: { - "test-selector": "project_id" - } %> -
-
-

<%= t "help_texts.views.project", - singular: t(:label_calendar).downcase, - plural: t(:label_calendar_plural) %>

-
-
- -
- <%= styled_label_tag "query[public]", - Query.human_attribute_name(:public) %> -
- <%= styled_check_box_tag "query[public]", - "1", - @view.public %> -
-
-

<%= t "help_texts.views.public" %>

-
-
- -
- <%= styled_label_tag "query[starred]", - t(:label_favorite) %> -
- <%= styled_check_box_tag "query[starred]", - "1", - @view.starred %> -
-
-

<%= t "help_texts.views.favoured" %>

-
-
-
diff --git a/modules/calendar/app/views/calendar/calendars/new.html.erb b/modules/calendar/app/views/calendar/calendars/new.html.erb index 0de4281096f..78979bb28bc 100644 --- a/modules/calendar/app/views/calendar/calendars/new.html.erb +++ b/modules/calendar/app/views/calendar/calendars/new.html.erb @@ -39,9 +39,48 @@ See COPYRIGHT and LICENSE files for more details. end %> -<%= labelled_tabular_form_for @view, url: { controller: "/calendar/calendars", action: "create" }, html: { id: "calendar-form" } do |f| -%> - <%= render partial: "form", locals: { f: f } %> - <%= styled_button_tag t(:button_create), class: "-primary" %> - <%= link_to t(:button_cancel), { controller: "calendar/calendars", action: "index" }, - class: "button" %> +<%= primer_form_with(model: @view, scope: :query, url: calendars_path) do |f| %> + <%= render_inline_form(f) do |form| + project_id_value = @project&.id + form.text_field( + name: :name, + label: helpers.t(:label_title), + required: true, + input_width: :large + ) + + form.project_autocompleter( + name: :project_id, + label: Query.human_attribute_name(:project), + required: true, + caption: helpers.t("help_texts.views.project", + singular: helpers.t(:label_calendar).downcase, + plural: helpers.t(:label_calendar_plural)), + input_width: :large, + autocomplete_options: { + focusDirectly: false, + dropdownPosition: "bottom", + inputValue: project_id_value, + filters: [{ name: "user_action", operator: "=", values: ["calendars/create"] }], + data: { "test-selector": "project_id" } + } + ) + + form.check_box( + name: :public, + label: Query.human_attribute_name(:public), + caption: helpers.t("help_texts.views.public") + ) + + form.check_box( + name: :starred, + label: helpers.t(:label_favorite), + caption: helpers.t("help_texts.views.favoured") + ) + + form.group(layout: :horizontal) do |button_group| + button_group.submit(label: helpers.t(:button_create), name: :submit, scheme: :primary) + button_group.button(tag: :a, href: helpers.calendars_path, label: helpers.t(:button_cancel), name: :cancel) + end + end %> <% end %> diff --git a/modules/calendar/app/views/calendar/calendars/show.html.erb b/modules/calendar/app/views/calendar/calendars/show.html.erb index 71d24703371..9866eca179e 100644 --- a/modules/calendar/app/views/calendar/calendars/show.html.erb +++ b/modules/calendar/app/views/calendar/calendars/show.html.erb @@ -27,4 +27,13 @@ See COPYRIGHT and LICENSE files for more details. ++#%> -<% html_title(t(:label_calendar_plural)) -%> +<% html_title(@view.name.presence || t(:label_calendar_plural)) -%> + +<% content_for :content_body do %> + <%= angular_component_tag "opce-calendar-view", inputs: { queryId: @view.id.to_s } %> +<% end %> + +<% content_for :content_body_right do %> + <%= turbo_stream.set_title(title: page_title(*html_title_parts)) if turbo_frame_request? %> + <%= render(split_view_instance) if render_work_package_split_view? %> +<% end %> diff --git a/modules/calendar/app/views/calendar/menus/_menu.html.erb b/modules/calendar/app/views/calendar/menus/_menu.html.erb index 4ecb73e0680..dfce2ac8225 100644 --- a/modules/calendar/app/views/calendar/menus/_menu.html.erb +++ b/modules/calendar/app/views/calendar/menus/_menu.html.erb @@ -1,5 +1,5 @@ <%= turbo_frame_tag "calendar_sidemenu", src: menu_project_calendars_path(@project, **params.permit(:id)), target: "_top", - data: { turbo: false }, + data: { turbo: false, query_param: "id" }, loading: :lazy %> diff --git a/modules/calendar/config/routes.rb b/modules/calendar/config/routes.rb index ec673b259fc..d23071a44ed 100644 --- a/modules/calendar/config/routes.rb +++ b/modules/calendar/config/routes.rb @@ -2,14 +2,19 @@ Rails.application.routes.draw do scope "projects/:project_id", as: "project" do resources :calendars, controller: "calendar/calendars", - only: %i[index destroy], + only: %i[index show new create destroy], as: :calendars do collection do get "menu" => "calendar/menus#show" end - get "/new" => "calendar/calendars#show", on: :collection, as: "new" get "/ical" => "calendar/ical#show", on: :member, as: "ical" - get "(/*state)" => "calendar/calendars#show", on: :member, as: "" + member do + get "details/:work_package_id(/:tab)", + action: :split_view, + defaults: { tab: :overview }, + as: :details, + work_package_split_view: true + end end end diff --git a/modules/calendar/lib/open_project/calendar/engine.rb b/modules/calendar/lib/open_project/calendar/engine.rb index fc0f08a0e75..6fb9244572e 100644 --- a/modules/calendar/lib/open_project/calendar/engine.rb +++ b/modules/calendar/lib/open_project/calendar/engine.rb @@ -28,7 +28,7 @@ module OpenProject::Calendar settings: {} do project_module :calendar_view, dependencies: :work_package_tracking do permission :view_calendar, - { "calendar/calendars": %i[index show], + { "calendar/calendars": %i[index show split_view new], "calendar/menus": %i[show] }, permissible_on: :project, dependencies: %i[view_work_packages], diff --git a/modules/team_planner/spec/features/team_planner_spec.rb b/modules/team_planner/spec/features/team_planner_spec.rb index b4e11253832..45a54eca9e6 100644 --- a/modules/team_planner/spec/features/team_planner_spec.rb +++ b/modules/team_planner/spec/features/team_planner_spec.rb @@ -241,6 +241,7 @@ RSpec.describe "Team planner", it "can add and remove assignees" do team_planner.visit! + team_planner.wait_for_loaded team_planner.expect_empty_state team_planner.expect_assignee(user, present: false) team_planner.expect_assignee(other_user, present: false) diff --git a/modules/team_planner/spec/features/team_planner_view_modes_spec.rb b/modules/team_planner/spec/features/team_planner_view_modes_spec.rb index c7e19f93898..51251f46016 100644 --- a/modules/team_planner/spec/features/team_planner_view_modes_spec.rb +++ b/modules/team_planner/spec/features/team_planner_view_modes_spec.rb @@ -38,6 +38,7 @@ RSpec.describe "Team planner", it "allows switching of view modes", with_settings: { working_days: [1, 2, 3, 4, 5] } do team_planner.visit! + team_planner.wait_for_loaded team_planner.expect_empty_state team_planner.add_assignee user.name From 22a6d4e8b4db13df35ed9c7ef87588893dc27046 Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Tue, 14 Apr 2026 12:31:52 +0200 Subject: [PATCH 021/280] Create rails based split create --- .../split_create_component.html.erb | 2 + .../work_packages/split_create_component.rb | 37 +++++++++ .../work_packages/split_view_helper.rb | 8 ++ app/views/work_packages/split_create.html.erb | 3 + frontend/src/app/app.module.ts | 4 + .../op-work-packages-calendar.service.ts | 6 ++ .../wp-new/wp-new-split-view.component.ts | 83 ++++++++++++++++++- .../openproject-work-packages.module.ts | 4 + .../wp-split-create-entry.component.ts | 78 +++++++++++++++++ .../calendar/calendars_controller.rb | 13 +++ .../views/calendar/calendars/show.html.erb | 1 + modules/calendar/config/routes.rb | 4 + .../lib/open_project/calendar/engine.rb | 2 +- ...planner_add_existing_work_packages_spec.rb | 3 +- 14 files changed, 245 insertions(+), 3 deletions(-) create mode 100644 app/components/work_packages/split_create_component.html.erb create mode 100644 app/components/work_packages/split_create_component.rb create mode 100644 app/views/work_packages/split_create.html.erb create mode 100644 frontend/src/app/features/work-packages/routing/wp-split-create/wp-split-create-entry.component.ts diff --git a/app/components/work_packages/split_create_component.html.erb b/app/components/work_packages/split_create_component.html.erb new file mode 100644 index 00000000000..8e389eff581 --- /dev/null +++ b/app/components/work_packages/split_create_component.html.erb @@ -0,0 +1,2 @@ +<%= helpers.angular_component_tag "opce-wp-split-create", + inputs: { projectIdentifier: @project_identifier } %> diff --git a/app/components/work_packages/split_create_component.rb b/app/components/work_packages/split_create_component.rb new file mode 100644 index 00000000000..b33309649ed --- /dev/null +++ b/app/components/work_packages/split_create_component.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class WorkPackages::SplitCreateComponent < ApplicationComponent + def initialize(project_identifier:) + super + + @project_identifier = project_identifier + end +end diff --git a/app/helpers/work_packages/split_view_helper.rb b/app/helpers/work_packages/split_view_helper.rb index 9fc30f347ab..5b12485489a 100644 --- a/app/helpers/work_packages/split_view_helper.rb +++ b/app/helpers/work_packages/split_view_helper.rb @@ -33,6 +33,14 @@ module WorkPackages::SplitViewHelper params[:work_package_split_view].present? end + def render_work_package_split_create? + params[:work_package_split_create].present? + end + + def split_create_instance + WorkPackages::SplitCreateComponent.new(project_identifier: params[:project_id]) + end + def split_view_instance WorkPackages::SplitViewComponent.new(id: params[:work_package_id], tab: params[:tab], diff --git a/app/views/work_packages/split_create.html.erb b/app/views/work_packages/split_create.html.erb new file mode 100644 index 00000000000..f6140ad4c93 --- /dev/null +++ b/app/views/work_packages/split_create.html.erb @@ -0,0 +1,3 @@ +<%= turbo_frame_tag "content-bodyRight" do %> + <%= render(split_create_instance) %> +<% end %> diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index c7c37370d5c..1c97c54808f 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -144,6 +144,9 @@ import { import { WorkPackageSplitViewEntryComponent, } from 'core-app/features/work-packages/routing/wp-split-view/wp-split-view-entry.component'; +import { + WorkPackageSplitCreateEntryComponent, +} from 'core-app/features/work-packages/routing/wp-split-create/wp-split-create-entry.component'; import { BoardEntryComponent, } from 'core-app/features/boards/board/board-partitioned-page/board-entry.component'; @@ -393,6 +396,7 @@ export class OpenProjectModule implements DoBootstrap { registerCustomElement('opce-notification-center', InAppNotificationCenterComponent, { injector }); registerCustomElement('opce-wp-split-view', WorkPackageSplitViewEntryComponent, { injector }); + registerCustomElement('opce-wp-split-create', WorkPackageSplitCreateEntryComponent, { injector }); registerCustomElement('opce-board-view', BoardEntryComponent, { injector }); registerCustomElement('opce-calendar-view', CalendarEntryComponent, { injector }); registerCustomElement('opce-wp-full-view', WorkPackageFullViewEntryComponent, { injector }); diff --git a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts index 3a51ebeb6ad..4bb84a74627 100644 --- a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts @@ -289,6 +289,12 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { Turbo.visit(link, { frame: 'content-bodyRight', action: 'advance' }); } + public openSplitCreate():void { + const basePath = window.location.pathname.replace(/\/details\/.*$/, ''); + const link = `${basePath}/details/new${window.location.search}`; + Turbo.visit(link, { frame: 'content-bodyRight', action: 'advance' }); + } + public openFullView(id:string):void { this.wpTableSelection.setSelection(id, -1); Turbo.visit(this.pathHelper.workPackagePath(id)); diff --git a/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts b/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts index fb4b9b42630..48a3ef0eafb 100644 --- a/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts @@ -27,7 +27,10 @@ //++ import { WorkPackageCreateComponent } from 'core-app/features/work-packages/components/wp-new/wp-create.component'; -import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource'; +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { firstValueFrom } from 'rxjs'; +import { WorkPackagesListService } from 'core-app/features/work-packages/components/wp-list/wp-list.service'; @Component({ selector: 'wp-new-split-view', @@ -36,4 +39,82 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; standalone: false, }) export class WorkPackageNewSplitViewComponent extends WorkPackageCreateComponent { + private readonly wpListService = inject(WorkPackagesListService); + + /** + * Before creating the new WP form, load the current query (with its active filters) + * into the isolated query space so that WorkPackageCreateService.defaultsFromFilters() + * can pre-populate the form fields automatically — no manual filter mapping needed. + */ + protected override async createdWorkPackage() { + if (!this.routedFromAngular) { + const params = new URLSearchParams(window.location.search); + + // Load the active query into the isolated query space so that + // WorkPackageCreateService.defaultsFromFilters() can pre-populate filter-based fields. + const queryId = params.get('query_id'); + const queryProps = params.get('query_props'); + if (queryId || queryProps) { + await firstValueFrom( + this.wpListService.fromQueryParams( + { query_id: queryId ?? undefined, query_props: queryProps ?? undefined }, + this.currentProjectService.identifier ?? undefined, + ), + ); + } + + // Apply date defaults passed via URL params (e.g. when dragging to create on the calendar). + const startDate = params.get('startDate'); + const dueDate = params.get('dueDate'); + const ignoreNonWorkingDays = params.get('ignoreNonWorkingDays'); + if (startDate || dueDate || ignoreNonWorkingDays) { + this.stateParams = { + ...this.stateParams, + defaults: { + _links: {}, + ...this.stateParams?.defaults, + ...(startDate ? { startDate } : {}), + ...(dueDate ? { dueDate } : {}), + ...(ignoreNonWorkingDays ? { ignoreNonWorkingDays: true } : {}), + }, + }; + } + } + + return super.createdWorkPackage(); + } + + public override cancelAndBack():void { + if (this.routedFromAngular) { + super.cancelAndBack(); + return; + } + + this.wpCreate.cancelCreation(); + + // Close the split panel by navigating to the base URL (strips /details/new), + // replacing the history entry so back-navigation skips the create state. + const basePath = window.location.pathname.replace(/\/details\/.*$/, ''); + Turbo.visit(basePath + window.location.search, { frame: 'content-bodyRight', action: 'replace' }); + } + + public override onSaved(params:{ savedResource:WorkPackageResource, isInitial:boolean }):void { + if (this.routedFromAngular) { + super.onSaved(params); + return; + } + + const { savedResource, isInitial } = params; + this.editForm?.cancel(false); + + this.notificationService.showSave(savedResource, isInitial); + window.OpenProject.pageState = 'submitted'; + + // Open the newly created WP in the split panel. + const basePath = window.location.pathname.replace(/\/details\/.*$/, ''); + Turbo.visit(`${basePath}/details/${savedResource.id}${window.location.search}`, { + frame: 'content-bodyRight', + action: 'advance', + }); + } } diff --git a/frontend/src/app/features/work-packages/openproject-work-packages.module.ts b/frontend/src/app/features/work-packages/openproject-work-packages.module.ts index 490ca2e61c0..19616116d94 100644 --- a/frontend/src/app/features/work-packages/openproject-work-packages.module.ts +++ b/frontend/src/app/features/work-packages/openproject-work-packages.module.ts @@ -406,6 +406,9 @@ import { import { WorkPackageFullCopyEntryComponent } from 'core-app/features/work-packages/routing/wp-full-copy/wp-full-copy-entry.component'; import { WorkPackageFullCreateEntryComponent } from 'core-app/features/work-packages/routing/wp-full-create/wp-full-create-entry.component'; import { WorkPackageFullViewEntryComponent } from 'core-app/features/work-packages/routing/wp-full-view/wp-full-view-entry.component'; +import { + WorkPackageSplitCreateEntryComponent, +} from 'core-app/features/work-packages/routing/wp-split-create/wp-split-create-entry.component'; @NgModule({ imports: [ @@ -590,6 +593,7 @@ import { WorkPackageFullViewEntryComponent } from 'core-app/features/work-packag WorkPackageDetailsViewButtonComponent, WorkPackageSplitViewComponent, WorkPackageSplitViewEntryComponent, + WorkPackageSplitCreateEntryComponent, WorkPackageBreadcrumbComponent, WorkPackageSplitViewToolbarComponent, WorkPackageWatcherButtonComponent, diff --git a/frontend/src/app/features/work-packages/routing/wp-split-create/wp-split-create-entry.component.ts b/frontend/src/app/features/work-packages/routing/wp-split-create/wp-split-create-entry.component.ts new file mode 100644 index 00000000000..45b2a759e25 --- /dev/null +++ b/frontend/src/app/features/work-packages/routing/wp-split-create/wp-split-create-entry.component.ts @@ -0,0 +1,78 @@ +//-- copyright +// OpenProject is an open source project management software. +// Copyright (C) the OpenProject GmbH +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License version 3. +// +// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +// Copyright (C) 2006-2013 Jean-Philippe Lang +// Copyright (C) 2010-2013 the ChiliProject Team +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +// See COPYRIGHT and LICENSE files for more details. +//++ + +import { + AfterViewInit, + ChangeDetectionStrategy, + Component, + ElementRef, + Input, + OnDestroy, +} from '@angular/core'; +import { + WorkPackageIsolatedQuerySpaceDirective, +} from 'core-app/features/work-packages/directives/query-space/wp-isolated-query-space.directive'; +import { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs'; + +/** + * An entry component to be rendered by Rails which opens an isolated query space + * for the work package split create (create form in the split panel). + */ +@Component({ + hostDirectives: [WorkPackageIsolatedQuerySpaceDirective], + standalone: false, + template: ` +
+ +
+ `, + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class WorkPackageSplitCreateEntryComponent implements AfterViewInit, OnDestroy { + @Input() projectIdentifier?:string; + @Input() type?:string; + + constructor(readonly elementRef:ElementRef) { + populateInputsFromDataset(this); + document.body.classList.add('\'router--work-packages-partitioned-split-view-new'); + } + + ngAfterViewInit():void { + // wp-new-split-view sets pageState = 'edited' unconditionally on mount, + // which would block Turbo navigation in the split panel context. + // Reset it here after all children have initialized. + window.OpenProject.pageState = 'pristine'; + } + + ngOnDestroy():void { + document.body.classList.remove('\'router--work-packages-partitioned-split-view-new'); + } +} diff --git a/modules/calendar/app/controllers/calendar/calendars_controller.rb b/modules/calendar/app/controllers/calendar/calendars_controller.rb index c515bdb82b3..352c97749bd 100644 --- a/modules/calendar/app/controllers/calendar/calendars_controller.rb +++ b/modules/calendar/app/controllers/calendar/calendars_controller.rb @@ -36,6 +36,7 @@ module ::Calendar before_action :authorize_global, only: %i[index create] before_action :authorize_new, only: %i[new] authorization_checked! :new + authorize_with_permission :add_work_packages, only: %i[split_create] before_action :find_calendar, only: %i[show split_view destroy] menu_item :calendar_view @@ -66,6 +67,18 @@ module ::Calendar end end + def split_create + respond_to do |format| + format.html do + if turbo_frame_request? + render "work_packages/split_create", layout: false + else + render :show + end + end + end + end + def new # In a project context, show the calendar view with an unsaved query. # In the global context (no project), show the form so the user can select a project. diff --git a/modules/calendar/app/views/calendar/calendars/show.html.erb b/modules/calendar/app/views/calendar/calendars/show.html.erb index 9866eca179e..c0101485696 100644 --- a/modules/calendar/app/views/calendar/calendars/show.html.erb +++ b/modules/calendar/app/views/calendar/calendars/show.html.erb @@ -36,4 +36,5 @@ See COPYRIGHT and LICENSE files for more details. <% content_for :content_body_right do %> <%= turbo_stream.set_title(title: page_title(*html_title_parts)) if turbo_frame_request? %> <%= render(split_view_instance) if render_work_package_split_view? %> + <%= render(split_create_instance) if render_work_package_split_create? %> <% end %> diff --git a/modules/calendar/config/routes.rb b/modules/calendar/config/routes.rb index d23071a44ed..997d536f18b 100644 --- a/modules/calendar/config/routes.rb +++ b/modules/calendar/config/routes.rb @@ -9,6 +9,10 @@ Rails.application.routes.draw do end get "/ical" => "calendar/ical#show", on: :member, as: "ical" member do + get "details/new", + action: :split_create, + as: :split_create, + work_package_split_create: true get "details/:work_package_id(/:tab)", action: :split_view, defaults: { tab: :overview }, diff --git a/modules/calendar/lib/open_project/calendar/engine.rb b/modules/calendar/lib/open_project/calendar/engine.rb index 6fb9244572e..031234fdd6d 100644 --- a/modules/calendar/lib/open_project/calendar/engine.rb +++ b/modules/calendar/lib/open_project/calendar/engine.rb @@ -28,7 +28,7 @@ module OpenProject::Calendar settings: {} do project_module :calendar_view, dependencies: :work_package_tracking do permission :view_calendar, - { "calendar/calendars": %i[index show split_view new], + { "calendar/calendars": %i[index show split_view split_create new], "calendar/menus": %i[show] }, permissible_on: :project, dependencies: %i[view_work_packages], diff --git a/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb b/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb index c6d85903af1..d8e96b987df 100644 --- a/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb +++ b/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb @@ -130,8 +130,9 @@ RSpec.describe "Team planner add existing work packages", # Select work package in add existing add_existing_pane.card(second_wp).click split_screen = Pages::SplitWorkPackage.new second_wp - split_screen.expect_subject + # Wait for navigation to complete before checking the split panel DOM expect(page).to have_current_path /\/details\/#{second_wp.id}/ + split_screen.expect_subject end it "allows to add work packages via drag&drop from the left hand shortlist" do From acdc78f5ca1fd0b8fb23fc4faa85bc7aadd85207 Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Wed, 15 Apr 2026 09:02:17 +0200 Subject: [PATCH 022/280] Remove uiRouter from TeamPlanner --- frontend/src/app/app.module.ts | 5 ++ .../app/core/routing/openproject.routes.ts | 2 - .../add-existing-pane.component.ts | 9 +- .../page/team-planner-page.component.ts | 14 +++- .../planner/team-planner.component.ts | 67 ++++----------- .../team-planner-entry.component.ts | 27 ++++++ .../team-planner/team-planner.lazy-routes.ts | 38 --------- .../team-planner/team-planner.module.ts | 8 +- .../team-planner/team-planner.routes.ts | 84 ------------------- .../wp-new/wp-new-split-view.component.ts | 14 +++- .../wp-split-create-entry.component.ts | 4 +- .../team_planner/team_planner_controller.rb | 38 ++++++++- .../team_planner/team_planner/show.html.erb | 10 +++ modules/team_planner/config/routes.rb | 9 ++ .../lib/open_project/team_planner/engine.rb | 2 +- 15 files changed, 129 insertions(+), 202 deletions(-) create mode 100644 frontend/src/app/features/team-planner/team-planner/team-planner-entry.component.ts delete mode 100644 frontend/src/app/features/team-planner/team-planner/team-planner.lazy-routes.ts delete mode 100644 frontend/src/app/features/team-planner/team-planner/team-planner.routes.ts diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 1c97c54808f..1bca3a907a7 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -151,6 +151,8 @@ import { BoardEntryComponent, } from 'core-app/features/boards/board/board-partitioned-page/board-entry.component'; import { CalendarEntryComponent } from 'core-app/features/calendar/calendar-entry.component'; +import { TeamPlannerEntryComponent } from 'core-app/features/team-planner/team-planner/team-planner-entry.component'; +import { TeamPlannerModule } from 'core-app/features/team-planner/team-planner/team-planner.module'; import { StorageLoginButtonComponent, } from 'core-app/shared/components/storages/storage-login-button/storage-login-button.component'; @@ -304,6 +306,8 @@ export function runBootstrap(appRef:ApplicationRef) { OpenprojectWorkPackageGraphsModule, // Calendar module OpenprojectCalendarModule, + // Team Planner module + TeamPlannerModule, // MyPage OpenprojectMyPageModule, @@ -399,6 +403,7 @@ export class OpenProjectModule implements DoBootstrap { registerCustomElement('opce-wp-split-create', WorkPackageSplitCreateEntryComponent, { injector }); registerCustomElement('opce-board-view', BoardEntryComponent, { injector }); registerCustomElement('opce-calendar-view', CalendarEntryComponent, { injector }); + registerCustomElement('opce-team-planner-view', TeamPlannerEntryComponent, { injector }); registerCustomElement('opce-wp-full-view', WorkPackageFullViewEntryComponent, { injector }); registerCustomElement('opce-wp-full-create', WorkPackageFullCreateEntryComponent, { injector }); registerCustomElement('opce-wp-full-copy', WorkPackageFullCopyEntryComponent, { injector }); diff --git a/frontend/src/app/core/routing/openproject.routes.ts b/frontend/src/app/core/routing/openproject.routes.ts index 59250162984..e36af84a380 100644 --- a/frontend/src/app/core/routing/openproject.routes.ts +++ b/frontend/src/app/core/routing/openproject.routes.ts @@ -39,7 +39,6 @@ import { mobileGuardActivated, redirectToMobileAlternative, } from 'core-app/shared/helpers/routing/mobile-guard.helper'; -import { TEAM_PLANNER_LAZY_ROUTES } from 'core-app/features/team-planner/team-planner/team-planner.lazy-routes'; export const OPENPROJECT_ROUTES:Ng2StateDeclaration[] = [ { @@ -73,7 +72,6 @@ export const OPENPROJECT_ROUTES:Ng2StateDeclaration[] = [ url: '/bcf', loadChildren: () => import('../../features/bim/ifc_models/openproject-ifc-models.module').then((m) => m.OpenprojectIFCModelsModule), }, - ...TEAM_PLANNER_LAZY_ROUTES, ]; /** diff --git a/frontend/src/app/features/team-planner/team-planner/add-work-packages/add-existing-pane.component.ts b/frontend/src/app/features/team-planner/team-planner/add-work-packages/add-existing-pane.component.ts index 1636b2e96c3..6ef92b88a1b 100644 --- a/frontend/src/app/features/team-planner/team-planner/add-work-packages/add-existing-pane.component.ts +++ b/frontend/src/app/features/team-planner/team-planner/add-work-packages/add-existing-pane.component.ts @@ -32,12 +32,9 @@ import { UrlParamsHelperService } from 'core-app/features/work-packages/componen import { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space'; import { UntilDestroyedMixin } from 'core-app/shared/helpers/angular/until-destroyed.mixin'; import { CalendarDragDropService } from 'core-app/features/team-planner/team-planner/calendar-drag-drop.service'; -import { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper'; -import { StateService } from '@uirouter/core'; import { ActionsService } from 'core-app/core/state/actions/actions.service'; import { teamPlannerEventRemoved } from 'core-app/features/team-planner/team-planner/planner/team-planner.actions'; import { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service'; -import { OpCalendarService } from 'core-app/features/calendar/op-calendar.service'; import { OpWorkPackagesCalendarService } from 'core-app/features/calendar/op-work-packages-calendar.service'; @Component({ @@ -121,7 +118,6 @@ export class AddExistingPaneComponent extends UntilDestroyedMixin implements OnI private readonly urlParamsHelper:UrlParamsHelperService, private readonly workPackagesCalendar:OpWorkPackagesCalendarService, private readonly calendarDrag:CalendarDragDropService, - private readonly $state:StateService, private readonly actions$:ActionsService, private readonly wpFilters:WorkPackageViewFiltersService, ) { @@ -214,10 +210,7 @@ export class AddExistingPaneComponent extends UntilDestroyedMixin implements OnI } openStateLink(event:{ workPackageId:string; requestedState:string }):void { - void this.$state.go( - `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: event.workPackageId, tabIdentifier: 'overview' }, - ); + this.workPackagesCalendar.openSplitView(event.workPackageId); } private addExistingFilters(filters:ApiV3FilterBuilder) { diff --git a/frontend/src/app/features/team-planner/team-planner/page/team-planner-page.component.ts b/frontend/src/app/features/team-planner/team-planner/page/team-planner-page.component.ts index d77dd42af8a..9a960c1922e 100644 --- a/frontend/src/app/features/team-planner/team-planner/page/team-planner-page.component.ts +++ b/frontend/src/app/features/team-planner/team-planner/page/team-planner-page.component.ts @@ -31,7 +31,8 @@ import { OpWorkPackagesCalendarService } from 'core-app/features/calendar/op-wor import { OpCalendarService } from 'core-app/features/calendar/op-calendar.service'; @Component({ - templateUrl: '../../../work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.html', + selector: 'op-team-planner-page', + templateUrl: './team-planner-page.component.html', styleUrls: [ '../../../work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.sass', ], @@ -98,6 +99,17 @@ export class TeamPlannerPageComponent extends PartitionedQuerySpacePageComponent public ngOnInit():void { super.ngOnInit(); + // Fix showToolbarSaveButton from actual URL params (not uiRouter state) + this.showToolbarSaveButton = !!new URLSearchParams(window.location.search).get('query_props'); + + // Update save button reactively when query_props changes via pushState + this.wpListChecksumService.visibleChecksum$ + .pipe(this.untilDestroyed()) + .subscribe((checksum) => { + this.showToolbarSaveButton = !!checksum; + this.cdRef.detectChanges(); + }); + registerEffectCallbacks(this, this.untilDestroyed()); this.wpTableFilters.hidden.push( diff --git a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts index 87846cdfd3e..569a70aac64 100644 --- a/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts +++ b/frontend/src/app/features/team-planner/team-planner/planner/team-planner.component.ts @@ -40,7 +40,6 @@ import { import { CalendarOptions, DateSelectArg, - DatesSetArg, EventApi, EventDropArg, EventInput, @@ -64,7 +63,6 @@ import { take, withLatestFrom, } from 'rxjs/operators'; -import { StateService } from '@uirouter/angular'; import resourceTimelinePlugin from '@fullcalendar/resource-timeline'; import interactionPlugin, { EventDragStartArg, @@ -78,8 +76,6 @@ import { ConfigurationService } from 'core-app/core/config/configuration.service import { WorkPackageViewFiltersService } from 'core-app/features/work-packages/routing/wp-view-base/view-services/wp-view-filters.service'; import { IsolatedQuerySpace } from 'core-app/features/work-packages/directives/query-space/isolated-query-space'; import { CurrentProjectService } from 'core-app/core/current-project/current-project.service'; -import { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper'; -import { isClickedWithModifier } from 'core-app/shared/helpers/link-handling/link-handling'; import { QueryFilterInstanceResource } from 'core-app/features/hal/resources/query-filter-instance-resource'; import { PrincipalsResourceService } from 'core-app/core/state/principals/principals.service'; import { @@ -98,7 +94,6 @@ import { MAGIC_PAGE_NUMBER } from 'core-app/core/apiv3/helpers/get-paginated-res import { CalendarDragDropService } from 'core-app/features/team-planner/team-planner/calendar-drag-drop.service'; import { StatusResource } from 'core-app/features/hal/resources/status-resource'; import { ResourceChangeset } from 'core-app/shared/components/fields/changeset/resource-changeset'; -import { KeepTabService } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service'; import { HalError } from 'core-app/features/hal/services/hal-error'; import { ActionsService } from 'core-app/core/state/actions/actions.service'; import { @@ -409,7 +404,6 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, }; constructor( - private $state:StateService, private configuration:ConfigurationService, private principalsResourceService:PrincipalsResourceService, private capabilitiesResourceService:CapabilitiesResourceService, @@ -425,7 +419,6 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, readonly schemaCache:SchemaCacheService, readonly apiV3Service:ApiV3Service, readonly calendarDrag:CalendarDragDropService, - readonly keepTab:KeepTabService, readonly actions$:ActionsService, readonly toastService:ToastService, readonly loadingIndicatorService:LoadingIndicatorService, @@ -514,19 +507,6 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, .then(() => { this.calendarOptions$.next( this.workPackagesCalendar.calendarOptions({ - // Override datesSet to persist cdate/cview via uiRouter instead of pushState, - // because uiRouter manages the TeamPlanner URL and would otherwise strip these params. - // Remove once uiRouter is removed. - datesSet: (dates:DatesSetArg) => { - void this.$state.go( - '.', - { - cdate: this.workPackagesCalendar.timezoneService.formattedISODate(dates.view.calendar.getDate()), - cview: (dates.view as unknown as { type:string }).type, - }, - { custom: { notify: false } }, - ); - }, locales: allLocales, locale: this.I18n.locale, schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source', @@ -843,48 +823,29 @@ export class TeamPlannerComponent extends UntilDestroyedMixin implements OnInit, ['$event.detail.start', '$event.detail.end', '$event.detail.assignee'], ) openNewSplitCreate(start:string, end:string, resourceHref:string, nonWorkingDays?:boolean):void { - const defaults = { - startDate: start, - dueDate: end, - _links: { - assignee: { - href: resourceHref, - }, - }, - ignoreNonWorkingDays: nonWorkingDays, - }; - - void this.$state.go( - splitViewRoute(this.$state, 'new'), - { - defaults, - tabIdentifier: 'overview', - }, - ); + const basePath = window.location.pathname.replace(/\/details\/.*$/, ''); + const search = new URLSearchParams(window.location.search); + search.set('startDate', start); + search.set('dueDate', end); + if (resourceHref) { + search.set('assignee_href', resourceHref); + } + if (nonWorkingDays) { + search.set('ignoreNonWorkingDays', 'true'); + } + Turbo.visit(`${basePath}/details/new?${search.toString()}`, { frame: 'content-bodyRight', action: 'advance' }); } openStateLink(event:{ workPackageId:string; requestedState:string }):void { - const params = { workPackageId: event.workPackageId }; - if (event.requestedState === 'split') { - this.keepTab.goCurrentDetailsState(params); + this.workPackagesCalendar.openSplitView(event.workPackageId); } else { - this.keepTab.goCurrentShowState(params.workPackageId); + this.workPackagesCalendar.openFullView(event.workPackageId); } } onCardClicked({ workPackageId, event }:{ workPackageId:string, event:MouseEvent }):void { - if (isClickedWithModifier(event)) { - return; - } - - // Only switch the split view if it is already open - if (!window.location.pathname.includes('/details/')) { - return; - } - - this.workPackagesCalendar.wpTableSelection.setSelection(workPackageId, -1); - this.keepTab.goCurrentDetailsState({ workPackageId }); + this.workPackagesCalendar.onCardClicked({ workPackageId, event }); } shouldShowAsGhost(id:string, globalDraggingId:string|undefined):boolean { diff --git a/frontend/src/app/features/team-planner/team-planner/team-planner-entry.component.ts b/frontend/src/app/features/team-planner/team-planner/team-planner-entry.component.ts new file mode 100644 index 00000000000..a54474a0a69 --- /dev/null +++ b/frontend/src/app/features/team-planner/team-planner/team-planner-entry.component.ts @@ -0,0 +1,27 @@ +import { + ChangeDetectionStrategy, + Component, + ElementRef, + OnDestroy, +} from '@angular/core'; +import { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs'; +import { + WorkPackageIsolatedQuerySpaceDirective, +} from 'core-app/features/work-packages/directives/query-space/wp-isolated-query-space.directive'; + +@Component({ + hostDirectives: [WorkPackageIsolatedQuerySpaceDirective], + template: '', + changeDetection: ChangeDetectionStrategy.OnPush, + standalone: false, +}) +export class TeamPlannerEntryComponent implements OnDestroy { + constructor(readonly elementRef:ElementRef) { + populateInputsFromDataset(this); + document.body.classList.add('router--team-planner'); + } + + ngOnDestroy():void { + document.body.classList.remove('router--team-planner'); + } +} diff --git a/frontend/src/app/features/team-planner/team-planner/team-planner.lazy-routes.ts b/frontend/src/app/features/team-planner/team-planner/team-planner.lazy-routes.ts deleted file mode 100644 index d9449ae243a..00000000000 --- a/frontend/src/app/features/team-planner/team-planner/team-planner.lazy-routes.ts +++ /dev/null @@ -1,38 +0,0 @@ -//-- copyright -// OpenProject is an open source project management software. -// Copyright (C) the OpenProject GmbH -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License version 3. -// -// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -// Copyright (C) 2006-2013 Jean-Philippe Lang -// Copyright (C) 2010-2013 the ChiliProject Team -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// -// See COPYRIGHT and LICENSE files for more details. -//++ - -import { Ng2StateDeclaration } from '@uirouter/angular'; - -export const TEAM_PLANNER_LAZY_ROUTES:Ng2StateDeclaration[] = [ - { - name: 'team_planner.**', - parent: 'optional_project', - url: '/team_planner', - loadChildren: () => import('./team-planner.module').then((m) => m.TeamPlannerModule), - }, -]; diff --git a/frontend/src/app/features/team-planner/team-planner/team-planner.module.ts b/frontend/src/app/features/team-planner/team-planner/team-planner.module.ts index 3d3d2c1e744..769e1259220 100644 --- a/frontend/src/app/features/team-planner/team-planner/team-planner.module.ts +++ b/frontend/src/app/features/team-planner/team-planner/team-planner.module.ts @@ -1,16 +1,15 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { UIRouterModule } from '@uirouter/angular'; import { DynamicModule } from 'ng-dynamic-component'; import { FullCalendarModule } from '@fullcalendar/angular'; import { IconModule } from 'core-app/shared/components/icon/icon.module'; import { OpenprojectAutocompleterModule } from 'core-app/shared/components/autocompleter/openproject-autocompleter.module'; import { OpenprojectPrincipalRenderingModule } from 'core-app/shared/components/principal/principal-rendering.module'; import { OpenprojectWorkPackagesModule } from 'core-app/features/work-packages/openproject-work-packages.module'; -import { TEAM_PLANNER_ROUTES } from 'core-app/features/team-planner/team-planner/team-planner.routes'; import { TeamPlannerComponent } from 'core-app/features/team-planner/team-planner/planner/team-planner.component'; import { AddAssigneeComponent } from 'core-app/features/team-planner/team-planner/assignee/add-assignee.component'; import { TeamPlannerPageComponent } from 'core-app/features/team-planner/team-planner/page/team-planner-page.component'; +import { TeamPlannerEntryComponent } from 'core-app/features/team-planner/team-planner/team-planner-entry.component'; import { OpSharedModule } from 'core-app/shared/shared.module'; import { AddExistingPaneComponent } from './add-work-packages/add-existing-pane.component'; import { OpenprojectContentLoaderModule } from 'core-app/shared/components/op-content-loader/openproject-content-loader.module'; @@ -20,16 +19,13 @@ import { TeamPlannerViewSelectMenuDirective } from 'core-app/features/team-plann declarations: [ TeamPlannerComponent, TeamPlannerPageComponent, + TeamPlannerEntryComponent, AddAssigneeComponent, AddExistingPaneComponent, TeamPlannerViewSelectMenuDirective, ], imports: [ OpSharedModule, - // Routes for /team_planner - UIRouterModule.forChild({ - states: TEAM_PLANNER_ROUTES, - }), DynamicModule, CommonModule, IconModule, diff --git a/frontend/src/app/features/team-planner/team-planner/team-planner.routes.ts b/frontend/src/app/features/team-planner/team-planner/team-planner.routes.ts deleted file mode 100644 index 405fe948a81..00000000000 --- a/frontend/src/app/features/team-planner/team-planner/team-planner.routes.ts +++ /dev/null @@ -1,84 +0,0 @@ -//-- copyright -// OpenProject is an open source project management software. -// Copyright (C) the OpenProject GmbH -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License version 3. -// -// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -// Copyright (C) 2006-2013 Jean-Philippe Lang -// Copyright (C) 2010-2013 the ChiliProject Team -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation; either version 2 -// of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -// -// See COPYRIGHT and LICENSE files for more details. -//++ - -import { Ng2StateDeclaration } from '@uirouter/angular'; -import { makeSplitViewRoutes } from 'core-app/features/work-packages/routing/split-view-routes.template'; -import { WorkPackageSplitViewComponent } from 'core-app/features/work-packages/routing/wp-split-view/wp-split-view.component'; -import { WorkPackagesBaseComponent } from 'core-app/features/work-packages/routing/wp-base/wp--base.component'; -import { TeamPlannerPageComponent } from 'core-app/features/team-planner/team-planner/page/team-planner-page.component'; -import { TeamPlannerComponent } from 'core-app/features/team-planner/team-planner/planner/team-planner.component'; - -export const sidemenuId = 'team_planner_sidemenu'; -export const sideMenuOptions = { - sidemenuId, - hardReloadOnBaseRoute: true, - defaultQuery: 'new', -}; - -export const TEAM_PLANNER_ROUTES:Ng2StateDeclaration[] = [ - { - name: 'team_planner', - parent: 'optional_project', - url: '/team_planners/:query_id?query_props&cdate&cview', - redirectTo: 'team_planner.page', - views: { - '!$default': { component: WorkPackagesBaseComponent }, - }, - params: { - query_id: { type: 'opQueryId', dynamic: true }, - cdate: { type: 'string', dynamic: true }, - cview: { type: 'string', dynamic: true }, - // Use custom encoder/decoder that ensures validity of URL string - query_props: { type: 'opQueryString' }, - }, - }, - { - name: 'team_planner.page', - component: TeamPlannerPageComponent, - redirectTo: 'team_planner.page.show', - data: { - bodyClasses: 'router--team-planner', - sideMenuOptions, - }, - }, - { - name: 'team_planner.page.show', - data: { - baseRoute: 'team_planner.page.show', - sideMenuOptions, - }, - views: { - 'content-left': { component: TeamPlannerComponent }, - }, - }, - ...makeSplitViewRoutes( - 'team_planner.page.show', - undefined, - WorkPackageSplitViewComponent, - ), -]; diff --git a/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts b/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts index 48a3ef0eafb..baab2d08835 100644 --- a/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts @@ -63,19 +63,27 @@ export class WorkPackageNewSplitViewComponent extends WorkPackageCreateComponent ); } - // Apply date defaults passed via URL params (e.g. when dragging to create on the calendar). + // Apply defaults passed via URL params (e.g. when dragging to create on the calendar/team planner). const startDate = params.get('startDate'); const dueDate = params.get('dueDate'); const ignoreNonWorkingDays = params.get('ignoreNonWorkingDays'); - if (startDate || dueDate || ignoreNonWorkingDays) { + const assigneeHref = params.get('assignee_href'); + if (startDate || dueDate || ignoreNonWorkingDays || assigneeHref) { + const existingDefaults = this.stateParams?.defaults; this.stateParams = { ...this.stateParams, defaults: { _links: {}, - ...this.stateParams?.defaults, + ...existingDefaults, ...(startDate ? { startDate } : {}), ...(dueDate ? { dueDate } : {}), ...(ignoreNonWorkingDays ? { ignoreNonWorkingDays: true } : {}), + ...(assigneeHref ? { + _links: { + ...(existingDefaults?._links || {}), + assignee: { href: assigneeHref }, + }, + } : {}), }, }; } diff --git a/frontend/src/app/features/work-packages/routing/wp-split-create/wp-split-create-entry.component.ts b/frontend/src/app/features/work-packages/routing/wp-split-create/wp-split-create-entry.component.ts index 45b2a759e25..29da7e5f034 100644 --- a/frontend/src/app/features/work-packages/routing/wp-split-create/wp-split-create-entry.component.ts +++ b/frontend/src/app/features/work-packages/routing/wp-split-create/wp-split-create-entry.component.ts @@ -62,7 +62,7 @@ export class WorkPackageSplitCreateEntryComponent implements AfterViewInit, OnDe constructor(readonly elementRef:ElementRef) { populateInputsFromDataset(this); - document.body.classList.add('\'router--work-packages-partitioned-split-view-new'); + document.body.classList.add('router--work-packages-partitioned-split-view-new'); } ngAfterViewInit():void { @@ -73,6 +73,6 @@ export class WorkPackageSplitCreateEntryComponent implements AfterViewInit, OnDe } ngOnDestroy():void { - document.body.classList.remove('\'router--work-packages-partitioned-split-view-new'); + document.body.classList.remove('router--work-packages-partitioned-split-view-new'); } } diff --git a/modules/team_planner/app/controllers/team_planner/team_planner_controller.rb b/modules/team_planner/app/controllers/team_planner/team_planner_controller.rb index 2e02e579725..167fb37cf6c 100644 --- a/modules/team_planner/app/controllers/team_planner/team_planner_controller.rb +++ b/modules/team_planner/app/controllers/team_planner/team_planner_controller.rb @@ -1,10 +1,15 @@ +# frozen_string_literal: true + module ::TeamPlanner class TeamPlannerController < BaseController include EnterpriseHelper include Layout + include WorkPackages::WithSplitView + before_action :load_and_authorize_in_optional_project before_action :build_plan_view, only: %i[new] - before_action :find_plan_view, only: %i[destroy] + before_action :find_plan_view, only: %i[destroy split_view] + authorize_with_permission :add_work_packages, only: %i[split_create] guard_enterprise_feature(:team_planner_view, except: %i[index overview]) do redirect_to action: :index @@ -21,6 +26,7 @@ module ::TeamPlanner render layout: "global" end + def show; end def new; end def create @@ -37,8 +43,28 @@ module ::TeamPlanner end end - def show - render layout: "angular/angular" + def split_view + respond_to do |format| + format.html do + if turbo_frame_request? + render "work_packages/split_view", layout: false + else + render :show + end + end + end + end + + def split_create + respond_to do |format| + format.html do + if turbo_frame_request? + render "work_packages/split_create", layout: false + else + render :show + end + end + end end def upsell; end @@ -63,12 +89,16 @@ module ::TeamPlanner private + def split_view_base_route + project_team_planner_path(@project, @view, request.query_parameters) + end + def create_service_class TeamPlanner::Views::GlobalCreateService end def plan_view_params - params.require(:query).permit(:name, :public, :starred).merge(project_id: @project&.id) + params.expect(query: %i[name public starred]).merge(project_id: @project&.id) end def build_plan_view diff --git a/modules/team_planner/app/views/team_planner/team_planner/show.html.erb b/modules/team_planner/app/views/team_planner/team_planner/show.html.erb index 157af1b2b0e..21bd5a6398e 100644 --- a/modules/team_planner/app/views/team_planner/team_planner/show.html.erb +++ b/modules/team_planner/app/views/team_planner/team_planner/show.html.erb @@ -1 +1,11 @@ <% html_title(t("team_planner.label_team_planner")) -%> + +<% content_for :content_body do %> + <%= angular_component_tag "opce-team-planner-view" %> +<% end %> + +<% content_for :content_body_right do %> + <%= turbo_stream.set_title(title: page_title(*html_title_parts)) if turbo_frame_request? %> + <%= render(split_view_instance) if render_work_package_split_view? %> + <%= render(split_create_instance) if render_work_package_split_create? %> +<% end %> diff --git a/modules/team_planner/config/routes.rb b/modules/team_planner/config/routes.rb index 45b91bc3547..6937a39f73e 100644 --- a/modules/team_planner/config/routes.rb +++ b/modules/team_planner/config/routes.rb @@ -19,6 +19,15 @@ Rails.application.routes.draw do end member do + get "details/new", + action: :split_create, + as: :split_create, + work_package_split_create: true + get "details/:work_package_id(/:tab)", + action: :split_view, + defaults: { tab: :overview }, + as: :details, + work_package_split_view: true get "(/*state)" => "team_planner/team_planner#show", as: "" end end diff --git a/modules/team_planner/lib/open_project/team_planner/engine.rb b/modules/team_planner/lib/open_project/team_planner/engine.rb index c4c51f2303e..1a5a5c91875 100644 --- a/modules/team_planner/lib/open_project/team_planner/engine.rb +++ b/modules/team_planner/lib/open_project/team_planner/engine.rb @@ -40,7 +40,7 @@ module OpenProject::TeamPlanner dependencies: :work_package_tracking, enterprise_feature: "team_planner_view" do permission :view_team_planner, - { "team_planner/team_planner": %i[index show upsell overview], + { "team_planner/team_planner": %i[index show split_view split_create upsell overview], "team_planner/menus": %i[show] }, permissible_on: :project, dependencies: %i[view_work_packages], From e24cd06c0c60d74ac9240ccafb98c37e00387f42 Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Wed, 15 Apr 2026 09:03:07 +0200 Subject: [PATCH 023/280] Harmonize templates used for the non uiRouter pages --- .../board-entry.component.ts | 2 +- .../board-partitioned-page.component.html | 48 ------------------- .../board-partitioned-page.component.ts | 2 +- .../calendar/calendar-entry.component.ts | 2 +- .../wp-calendar-page.component.ts | 2 +- .../page/team-planner-page.component.ts | 2 +- .../team-planner-entry.component.ts | 2 +- ...rtitioned-query-space-page.component.html} | 2 +- 8 files changed, 7 insertions(+), 55 deletions(-) delete mode 100644 frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.html rename frontend/src/app/features/{calendar/wp-calendar-page/wp-calendar-page.component.html => work-packages/routing/partitioned-query-space-page/primerized-partitioned-query-space-page.component.html} (98%) diff --git a/frontend/src/app/features/boards/board/board-partitioned-page/board-entry.component.ts b/frontend/src/app/features/boards/board/board-partitioned-page/board-entry.component.ts index 0503484d44b..b3c1ea28203 100644 --- a/frontend/src/app/features/boards/board/board-partitioned-page/board-entry.component.ts +++ b/frontend/src/app/features/boards/board/board-partitioned-page/board-entry.component.ts @@ -43,7 +43,7 @@ import { QueryUpdatedService } from 'core-app/features/boards/board/query-update @Component({ selector: 'board-entry', hostDirectives: [WorkPackageIsolatedQuerySpaceDirective], - template: ``, + template: ``, changeDetection: ChangeDetectionStrategy.OnPush, providers: [ BoardConfigurationService, diff --git a/frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.html b/frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.html deleted file mode 100644 index a0ee9d566e0..00000000000 --- a/frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.html +++ /dev/null @@ -1,48 +0,0 @@ -
- -
-
-

- -

- @if (showToolbar) { -
    - @for (definition of toolbarButtonComponents; track definition) { - @if (!definition.show || definition.show()) { -
  • - -
  • - } - } -
- } -
-
- -
- @if (filterContainerDefinition) { - - } -
- -
- - -
-
diff --git a/frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.ts b/frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.ts index 9d33220ca41..464c05c4a7a 100644 --- a/frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.ts +++ b/frontend/src/app/features/boards/board/board-partitioned-page/board-partitioned-page.component.ts @@ -47,7 +47,7 @@ export function boardCardViewHandlerFactory(injector:Injector) { @Component({ selector: 'board-partitioned-page', - templateUrl: './board-partitioned-page.component.html', + templateUrl: '../../../work-packages/routing/partitioned-query-space-page/primerized-partitioned-query-space-page.component.html', styleUrls: [ '../../../work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.sass', './board-partitioned-page.component.sass', diff --git a/frontend/src/app/features/calendar/calendar-entry.component.ts b/frontend/src/app/features/calendar/calendar-entry.component.ts index 1200e7da5b9..79f8748768b 100644 --- a/frontend/src/app/features/calendar/calendar-entry.component.ts +++ b/frontend/src/app/features/calendar/calendar-entry.component.ts @@ -34,7 +34,7 @@ import { @Component({ hostDirectives: [WorkPackageIsolatedQuerySpaceDirective], - template: '', + template: '', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, }) diff --git a/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.ts b/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.ts index 1c0a3052e78..f307e19bb0b 100644 --- a/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.ts +++ b/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.ts @@ -53,7 +53,7 @@ import { InjectField } from 'core-app/shared/helpers/angular/inject-field.decora @Component({ selector: 'op-wp-calendar-page', - templateUrl: './wp-calendar-page.component.html', + templateUrl: '../../work-packages/routing/partitioned-query-space-page/primerized-partitioned-query-space-page.component.html', styleUrls: [ '../../work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.sass', ], diff --git a/frontend/src/app/features/team-planner/team-planner/page/team-planner-page.component.ts b/frontend/src/app/features/team-planner/team-planner/page/team-planner-page.component.ts index 9a960c1922e..9cb3167c497 100644 --- a/frontend/src/app/features/team-planner/team-planner/page/team-planner-page.component.ts +++ b/frontend/src/app/features/team-planner/team-planner/page/team-planner-page.component.ts @@ -32,7 +32,7 @@ import { OpCalendarService } from 'core-app/features/calendar/op-calendar.servic @Component({ selector: 'op-team-planner-page', - templateUrl: './team-planner-page.component.html', + templateUrl: '../../../work-packages/routing/partitioned-query-space-page/primerized-partitioned-query-space-page.component.html', styleUrls: [ '../../../work-packages/routing/partitioned-query-space-page/partitioned-query-space-page.component.sass', ], diff --git a/frontend/src/app/features/team-planner/team-planner/team-planner-entry.component.ts b/frontend/src/app/features/team-planner/team-planner/team-planner-entry.component.ts index a54474a0a69..639ef01f5b0 100644 --- a/frontend/src/app/features/team-planner/team-planner/team-planner-entry.component.ts +++ b/frontend/src/app/features/team-planner/team-planner/team-planner-entry.component.ts @@ -11,7 +11,7 @@ import { @Component({ hostDirectives: [WorkPackageIsolatedQuerySpaceDirective], - template: '', + template: '', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, }) diff --git a/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.html b/frontend/src/app/features/work-packages/routing/partitioned-query-space-page/primerized-partitioned-query-space-page.component.html similarity index 98% rename from frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.html rename to frontend/src/app/features/work-packages/routing/partitioned-query-space-page/primerized-partitioned-query-space-page.component.html index b81b824c8e6..cf85df4fc70 100644 --- a/frontend/src/app/features/calendar/wp-calendar-page/wp-calendar-page.component.html +++ b/frontend/src/app/features/work-packages/routing/partitioned-query-space-page/primerized-partitioned-query-space-page.component.html @@ -43,7 +43,7 @@
- +
From 1225a30fcaa75c42a49294d31326fd6d98cd525f Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Wed, 15 Apr 2026 09:46:12 +0200 Subject: [PATCH 024/280] Adapt tests to removed uiRouter --- .../op-work-packages-calendar.service.ts | 30 ++++++++--- .../wp-calendar/wp-calendar.component.ts | 29 ++++++---- .../wp-single-card.component.ts | 20 +++++-- .../wp-new/wp-new-split-view.component.ts | 4 +- .../wp-view-context-menu.directive.ts | 54 ++++++++++++++----- .../calendar/calendars_controller.rb | 14 ++++- .../views/calendar/calendars/show.html.erb | 4 +- modules/calendar/config/routes.rb | 7 +++ .../calendar/spec/features/calendars_spec.rb | 9 ++-- .../team_planner/team_planner_controller.rb | 14 ++++- .../views/team_planner/menus/_menu.html.erb | 2 +- modules/team_planner/config/routes.rb | 9 +++- ...planner_add_existing_work_packages_spec.rb | 5 +- .../spec/features/team_planner_dates_spec.rb | 1 + .../team_planner_error_handling_spec.rb | 2 +- .../spec/features/team_planner_spec.rb | 1 + .../spec/routing/team_planner_routing_spec.rb | 13 +++-- .../context_menu_shared_examples.rb | 4 +- .../pages/work_packages/work_package_cards.rb | 2 +- 19 files changed, 171 insertions(+), 53 deletions(-) diff --git a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts index 4bb84a74627..9855ce959b3 100644 --- a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts @@ -284,15 +284,20 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { return; } - const basePath = window.location.pathname.replace(/\/details\/.*$/, ''); - const link = `${basePath}/details/${id}${window.location.search}`; - Turbo.visit(link, { frame: 'content-bodyRight', action: 'advance' }); + this.visitSplitViewLink(id); } - public openSplitCreate():void { + public openSplitCreate(extraParams?:Record):void { + this.visitSplitViewLink('new', extraParams); + } + + private visitSplitViewLink(id:string, extraParams?:Record):void { const basePath = window.location.pathname.replace(/\/details\/.*$/, ''); - const link = `${basePath}/details/new${window.location.search}`; - Turbo.visit(link, { frame: 'content-bodyRight', action: 'advance' }); + const params = new URLSearchParams(window.location.search); + if (extraParams) { + Object.entries(extraParams).forEach(([key, value]) => params.set(key, value)); + } + Turbo.visit(`${basePath}/details/${id}?${params.toString()}`, { frame: 'content-bodyRight', action: 'advance' }); } public openFullView(id:string):void { @@ -430,8 +435,17 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { private updateDateParam(dates:DatesSetArg) { const url = new URL(window.location.href); - url.searchParams.set('cdate', this.timezoneService.formattedISODate(dates.view.calendar.getDate())); - url.searchParams.set('cview', (dates.view as unknown as { type:string }).type); + const newDate = this.timezoneService.formattedISODate(dates.view.calendar.getDate()); + const newView = (dates.view as unknown as { type:string }).type; + + // Skip if the URL already reflects both the date and view (e.g. after gotoDate was called + // from a popstate handler to restore the calendar to the history-entry's date and view). + if (url.searchParams.get('cdate') === newDate && url.searchParams.get('cview') === newView) { + return; + } + + url.searchParams.set('cdate', newDate); + url.searchParams.set('cview', newView); window.history.pushState({}, '', url); } diff --git a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts index 63e93f1ad67..f38c95fe5ac 100644 --- a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts +++ b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts @@ -46,7 +46,7 @@ import { import { FullCalendarComponent } from '@fullcalendar/angular'; import dayGridPlugin from '@fullcalendar/daygrid'; import moment from 'moment'; -import { Subject } from 'rxjs'; +import { fromEvent, Subject } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; import { States } from 'core-app/core/states/states.service'; @@ -168,6 +168,18 @@ export class WorkPackagesCalendarComponent extends UntilDestroyedMixin implement // Clear any old subscribers this.querySpace.stopAllSubscriptions.next(); + // Restore the calendar date when the user navigates back/forward via browser history. + // pushState in updateDateParam uses an empty state object, so Turbo ignores these + // popstate events. We handle them here to navigate FullCalendar in-page instead. + fromEvent(window, 'popstate') + .pipe(this.untilDestroyed()) + .subscribe(() => { + const cdate = new URLSearchParams(window.location.search).get('cdate'); + if (cdate && this.ucCalendar) { + this.ucCalendar.getApi().gotoDate(cdate); + } + }); + this.initializeCalendar(); } @@ -439,15 +451,12 @@ export class WorkPackagesCalendarComponent extends UntilDestroyedMixin implement }; if (window.location.pathname.includes('/calendars/')) { - const basePath = window.location.pathname.replace(/\/details\/.*$/, ''); - const params = new URLSearchParams(window.location.search); - params.set('startDate', defaults.startDate); - params.set('dueDate', defaults.dueDate); - if (defaults.ignoreNonWorkingDays) { - params.set('ignoreNonWorkingDays', 'true'); - } - const link = `${basePath}/details/new?${params.toString()}`; - Turbo.visit(link, { frame: 'content-bodyRight', action: 'advance' }); + const extraParams:Record = { + startDate: defaults.startDate, + dueDate: defaults.dueDate, + ...(defaults.ignoreNonWorkingDays ? { ignoreNonWorkingDays: 'true' } : {}), + }; + this.workPackagesCalendar.openSplitCreate(extraParams); } } diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index 70ea0c0272f..a266bc68d60 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -35,8 +35,8 @@ import { isClickedWithModifier } from 'core-app/shared/helpers/link-handling/lin import isNewResource from 'core-app/features/hal/helpers/is-new-resource'; import { TimezoneService } from 'core-app/core/datetime/timezone.service'; import { StatusResource } from 'core-app/features/hal/resources/status-resource'; -import { EMPTY, merge } from 'rxjs'; -import { map } from 'rxjs/operators'; +import { EMPTY, fromEvent, merge } from 'rxjs'; +import { distinctUntilChanged, map } from 'rxjs/operators'; import { SchemaCacheService } from 'core-app/core/schemas/schema-cache.service'; import SpotDropAlignmentOption from 'core-app/spot/drop-alignment-options'; import { BaselineMode, getBaselineState } from 'core-app/features/work-packages/components/wp-baseline/baseline-helpers'; @@ -134,19 +134,33 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen // Use merge instead of combineLatest: params$ only emits on uiRouter transitions and // may never emit on pages that don't use uiRouter (e.g. boards). With merge, any // emission from either source triggers re-evaluation of the selection state. + // turbo:frame-load is included so that URL-based detection updates when the split + // view opens or closes via Turbo frame navigation. merge( this.wpTableSelection.live$(), this.uiRouterGlobals.params$ ?? EMPTY, + fromEvent(document, 'turbo:frame-load'), ) .pipe( this.untilDestroyed(), map(() => { if (this.selectedWhenOpen) { - return this.uiRouterGlobals.params.workPackageId === this.workPackage.id; + // In uiRouter views, use the route param directly. + const wpIdFromRoute = this.uiRouterGlobals.params.workPackageId as string|undefined; + if (wpIdFromRoute) { + return wpIdFromRoute === this.workPackage.id; + } + + // In non-router views (e.g. Team Planner, Calendar): + // Use URL-based detection so that closing the split view (which changes the URL + // but does not clear the selection service) correctly deselects the card. + const urlMatch = /\/details\/(\d+)/.exec(window.location.pathname); + return urlMatch?.[1] === this.workPackage.id; } return this.wpTableSelection.isSelected(this.workPackage.id!); }), + distinctUntilChanged(), ) .subscribe((selected:boolean) => { this.selected = selected; diff --git a/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts b/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts index baab2d08835..e75f6e4ba29 100644 --- a/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-new/wp-new-split-view.component.ts @@ -68,10 +68,12 @@ export class WorkPackageNewSplitViewComponent extends WorkPackageCreateComponent const dueDate = params.get('dueDate'); const ignoreNonWorkingDays = params.get('ignoreNonWorkingDays'); const assigneeHref = params.get('assignee_href'); - if (startDate || dueDate || ignoreNonWorkingDays || assigneeHref) { + const parentId = params.get('parent_id'); + if (startDate || dueDate || ignoreNonWorkingDays || assigneeHref || parentId) { const existingDefaults = this.stateParams?.defaults; this.stateParams = { ...this.stateParams, + ...(parentId ? { parent_id: parentId } : {}), defaults: { _links: {}, ...existingDefaults, diff --git a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts index e3cf08e3a50..01a43e4621c 100644 --- a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts +++ b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts @@ -61,7 +61,13 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { ); // Get the base route for the current route to ensure we always link correctly - protected baseRoute = this.$state.current.data.baseRoute || this.$state.current.name; + protected baseRoute = this.$state.current.data?.baseRoute || this.$state.current.name; + + // Whether we are running inside a uiRouter context (e.g. work packages list/board). + // Calendar and Team Planner render without uiRouter and rely on Turbo navigation instead. + protected get hasUiRouterContext():boolean { + return this.$state.current.name !== ''; + } protected items = this.buildItems(); @@ -122,7 +128,14 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { break; case 'relation-new-child': - this.wpRelationsHierarchyService.addNewChildWp(this.baseRoute, this.workPackage); + if (this.hasUiRouterContext) { + this.wpRelationsHierarchyService.addNewChildWp(this.baseRoute, this.workPackage); + } else { + const newChildPath = `${window.location.pathname.replace(/\/details\/.*$/, '')}/details/new`; + const childParams = new URLSearchParams(window.location.search); + childParams.set('parent_id', id); + Turbo.visit(`${newChildPath}?${childParams.toString()}`, { frame: 'content-bodyRight', action: 'advance' }); + } break; case 'log_time': @@ -134,10 +147,15 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { break; case 'relations': - void this.$state.go( - `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: this.workPackageId, tabIdentifier: 'relations' }, - ); + if (this.hasUiRouterContext) { + void this.$state.go( + `${splitViewRoute(this.$state)}.tabs`, + { workPackageId: this.workPackageId, tabIdentifier: 'relations' }, + ); + } else { + const relationsPath = `${window.location.pathname.replace(/\/details\/.*$/, '')}/details/${this.workPackageId}${window.location.search}`; + Turbo.visit(relationsPath, { frame: 'content-bodyRight', action: 'advance' }); + } break; default: @@ -232,24 +250,32 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { }); if (selected.length === 1 && this.allowSplitScreenActions) { + const splitViewHref = this.hasUiRouterContext + ? this.$state.href( + `${splitViewRoute(this.$state)}.tabs`, + { workPackageId: this.workPackageId, tabIdentifier: 'overview' }, + ) + : `${window.location.pathname.replace(/\/details\/.*$/, '')}/details/${this.workPackageId}${window.location.search}`; + items.unshift({ disabled: false, icon: 'icon-view-split', class: 'detailsViewMenuItem', - href: this.$state.href( - `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: this.workPackageId, tabIdentifier: 'overview' }, - ), + href: splitViewHref, linkText: I18n.t('js.button_open_details'), onClick: (event) => { if (isClickedWithModifier(event)) { return false; } - this.$state.go( - `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: this.workPackageId, tabIdentifier: 'overview' }, - ); + if (this.hasUiRouterContext) { + this.$state.go( + `${splitViewRoute(this.$state)}.tabs`, + { workPackageId: this.workPackageId, tabIdentifier: 'overview' }, + ); + } else { + Turbo.visit(splitViewHref, { frame: 'content-bodyRight', action: 'advance' }); + } return true; }, }); diff --git a/modules/calendar/app/controllers/calendar/calendars_controller.rb b/modules/calendar/app/controllers/calendar/calendars_controller.rb index 352c97749bd..1b216e1cf9b 100644 --- a/modules/calendar/app/controllers/calendar/calendars_controller.rb +++ b/modules/calendar/app/controllers/calendar/calendars_controller.rb @@ -118,7 +118,14 @@ module ::Calendar end def split_view_base_route - project_calendar_path(@project, @view, request.query_parameters) + # Unsaved calendars use the /new path (no :id). + # In that case @view is nil and we return the /new path as the base route + # so that the split view close button navigates back correctly. + if @view + project_calendar_path(@project, @view, request.query_parameters) + else + new_project_calendar_path(@project, request.query_parameters) + end end def build_calendar_view @@ -147,6 +154,11 @@ module ::Calendar end def find_calendar + # split_view is also reachable via the /new collection path + # (e.g. /calendars/new/details/:wp_id) which carries no :id. + # In that case @view remains nil and split_view_base_route handles it. + return if params[:id].blank? + @view = Query .visible(current_user) .find(params[:id]) diff --git a/modules/calendar/app/views/calendar/calendars/show.html.erb b/modules/calendar/app/views/calendar/calendars/show.html.erb index c0101485696..e67fe9b0d8f 100644 --- a/modules/calendar/app/views/calendar/calendars/show.html.erb +++ b/modules/calendar/app/views/calendar/calendars/show.html.erb @@ -27,10 +27,10 @@ See COPYRIGHT and LICENSE files for more details. ++#%> -<% html_title(@view.name.presence || t(:label_calendar_plural)) -%> +<% html_title(@view&.name.presence || t(:label_calendar_plural)) -%> <% content_for :content_body do %> - <%= angular_component_tag "opce-calendar-view", inputs: { queryId: @view.id.to_s } %> + <%= angular_component_tag "opce-calendar-view", inputs: { queryId: @view&.id.to_s } %> <% end %> <% content_for :content_body_right do %> diff --git a/modules/calendar/config/routes.rb b/modules/calendar/config/routes.rb index 997d536f18b..1a3090c2fc7 100644 --- a/modules/calendar/config/routes.rb +++ b/modules/calendar/config/routes.rb @@ -6,6 +6,13 @@ Rails.application.routes.draw do as: :calendars do collection do get "menu" => "calendar/menus#show" + get "new/details/new", + action: :split_create, + work_package_split_create: true + get "new/details/:work_package_id(/:tab)", + action: :split_view, + defaults: { tab: :overview }, + work_package_split_view: true end get "/ical" => "calendar/ical#show", on: :member, as: "ical" member do diff --git a/modules/calendar/spec/features/calendars_spec.rb b/modules/calendar/spec/features/calendars_spec.rb index 9c559cc5606..a5d517200cb 100644 --- a/modules/calendar/spec/features/calendars_spec.rb +++ b/modules/calendar/spec/features/calendars_spec.rb @@ -63,7 +63,7 @@ RSpec.describe "Work package calendars", :js do due_date: Time.zone.today.at_beginning_of_month.next_month + 18.days) end let(:filters) { Components::WorkPackages::Filters.new } - let(:current_wp_split_screen) { Pages::SplitWorkPackage.new(current_work_package, project) } + let(:current_wp_split_screen) { Pages::PrimerizedSplitWorkPackage.new(current_work_package, project) } before do login_as(user) @@ -83,10 +83,11 @@ RSpec.describe "Work package calendars", :js do find('[data-test-selector="add-calendar-button"]', text: "Calendar").click loading_indicator_saveguard + expect_angular_frontend_initialized # should open the calendar with the current month displayed expect(page) - .to have_css ".fc-event-title", text: current_work_package.subject + .to have_css ".fc-event-title", text: current_work_package.subject, wait: 20 expect(page) .to have_css ".fc-event-title", text: another_current_work_package.subject expect(page) @@ -172,8 +173,9 @@ RSpec.describe "Work package calendars", :js do # go back a month by using the browser back functionality page.execute_script("window.history.back()") + expect_angular_frontend_initialized expect(page) - .to have_css ".fc-event-title", text: current_work_package.subject + .to have_css ".fc-event-title", text: current_work_package.subject, wait: 20 expect(page) .to have_css ".fc-event-title", text: another_current_work_package.subject expect(page) @@ -188,6 +190,7 @@ RSpec.describe "Work package calendars", :js do # Going back in browser history will lead us back to the calendar # Regression #29664 page.go_back + expect_angular_frontend_initialized expect(page) .to have_css(".fc-event-title", text: current_work_package.subject, wait: 20) current_wp_split_screen.expect_closed diff --git a/modules/team_planner/app/controllers/team_planner/team_planner_controller.rb b/modules/team_planner/app/controllers/team_planner/team_planner_controller.rb index 167fb37cf6c..19469857dc4 100644 --- a/modules/team_planner/app/controllers/team_planner/team_planner_controller.rb +++ b/modules/team_planner/app/controllers/team_planner/team_planner_controller.rb @@ -90,7 +90,14 @@ module ::TeamPlanner private def split_view_base_route - project_team_planner_path(@project, @view, request.query_parameters) + # Unsaved team planners use the /new collection path (no :id). + # In that case @view is nil and we return the /new path as the base route + # so that the split view close button navigates back correctly. + if @view + project_team_planner_path(@project, @view, request.query_parameters) + else + new_project_team_planners_path(@project, request.query_parameters) + end end def create_service_class @@ -106,6 +113,11 @@ module ::TeamPlanner end def find_plan_view + # The split_view action is also reachable via the /new collection path + # (e.g. /team_planners/new/details/:wp_id) which carries no :id. + # In that case @view remains nil and split_view_base_route handles it. + return if params[:id].blank? + @view = Query .visible(current_user) .find(params[:id]) diff --git a/modules/team_planner/app/views/team_planner/menus/_menu.html.erb b/modules/team_planner/app/views/team_planner/menus/_menu.html.erb index d27316de1e3..a5b5bd88753 100644 --- a/modules/team_planner/app/views/team_planner/menus/_menu.html.erb +++ b/modules/team_planner/app/views/team_planner/menus/_menu.html.erb @@ -1,5 +1,5 @@ <%= turbo_frame_tag "team_planner_sidemenu", src: menu_project_team_planners_path(@project, **params.permit(:id)), target: "_top", - data: { turbo: false }, + data: { turbo: false, query_param: "id" }, loading: :lazy %> diff --git a/modules/team_planner/config/routes.rb b/modules/team_planner/config/routes.rb index 6937a39f73e..cb40015d123 100644 --- a/modules/team_planner/config/routes.rb +++ b/modules/team_planner/config/routes.rb @@ -15,6 +15,13 @@ Rails.application.routes.draw do as: :team_planners do collection do get "menu" => "team_planner/menus#show" + get "new/details/new", + action: :split_create, + work_package_split_create: true + get "new/details/:work_package_id(/:tab)", + action: :split_view, + defaults: { tab: "overview" }, + work_package_split_view: true get "/new", to: "team_planner/team_planner#show", as: :new end @@ -25,7 +32,7 @@ Rails.application.routes.draw do work_package_split_create: true get "details/:work_package_id(/:tab)", action: :split_view, - defaults: { tab: :overview }, + defaults: { tab: "overview" }, as: :details, work_package_split_view: true get "(/*state)" => "team_planner/team_planner#show", as: "" diff --git a/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb b/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb index d8e96b987df..62816131342 100644 --- a/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb +++ b/modules/team_planner/spec/features/team_planner_add_existing_work_packages_spec.rb @@ -170,7 +170,10 @@ RSpec.describe "Team planner add existing work packages", # New events are directly clickable split_view = team_planner.open_split_view_by_info_icon(third_wp) - split_view.expect_open + wait_for_turbo_frame do + expect(page).to have_current_path /\/details\/#{third_wp.id}/ + split_view.expect_subject + end end context "with non-working days" do diff --git a/modules/team_planner/spec/features/team_planner_dates_spec.rb b/modules/team_planner/spec/features/team_planner_dates_spec.rb index 1f653a368f8..ef8bb3f3a6f 100644 --- a/modules/team_planner/spec/features/team_planner_dates_spec.rb +++ b/modules/team_planner/spec/features/team_planner_dates_spec.rb @@ -42,6 +42,7 @@ RSpec.describe "Team planner working days", it 'hides sat and sun in the "Work week" view andd renders sat and sun as non working in the "1-week" view' do team_planner.visit! + team_planner.wait_for_loaded team_planner.expect_empty_state team_planner.add_assignee user.name diff --git a/modules/team_planner/spec/features/team_planner_error_handling_spec.rb b/modules/team_planner/spec/features/team_planner_error_handling_spec.rb index 9b1bc621c4b..0c91f557db9 100644 --- a/modules/team_planner/spec/features/team_planner_error_handling_spec.rb +++ b/modules/team_planner/spec/features/team_planner_error_handling_spec.rb @@ -107,7 +107,7 @@ RSpec.describe "Team planner error handling", .perform end - team_planner.expect_toast(type: :error, message: I18n.t("api_v3.errors.code_409")) + expect_flash(type: :error, message: I18n.t("notice_locking_conflict_danger")) work_package.reload expect(work_package.start_date).to eq(Time.zone.today.beginning_of_week.next_occurring(:tuesday)) diff --git a/modules/team_planner/spec/features/team_planner_spec.rb b/modules/team_planner/spec/features/team_planner_spec.rb index 45a54eca9e6..20a1171f4be 100644 --- a/modules/team_planner/spec/features/team_planner_spec.rb +++ b/modules/team_planner/spec/features/team_planner_spec.rb @@ -46,6 +46,7 @@ RSpec.describe "Team planner", expect(page).to have_content "There is currently nothing to display." page.find_test_selector("add-team-planner-button").click + expect_angular_frontend_initialized team_planner.expect_title filters.expect_filter_count("1") diff --git a/modules/team_planner/spec/routing/team_planner_routing_spec.rb b/modules/team_planner/spec/routing/team_planner_routing_spec.rb index c8efea61ed9..be48e18b5a5 100644 --- a/modules/team_planner/spec/routing/team_planner_routing_spec.rb +++ b/modules/team_planner/spec/routing/team_planner_routing_spec.rb @@ -69,11 +69,18 @@ RSpec.describe "Team planner routing" do .to(controller: "team_planner/team_planner", action: :create) end - it "routes to team_planner#show with state" do + it "routes to team_planner#split_view" do expect(subject) .to route(:get, "/projects/foobar/team_planners/1234/details/555") - .to(controller: "team_planner/team_planner", action: :show, project_id: "foobar", id: "1234", - state: "details/555") + .to(controller: "team_planner/team_planner", action: :split_view, project_id: "foobar", id: "1234", + work_package_id: "555", tab: "overview", work_package_split_view: true) + end + + it "routes to team_planner#split_create" do + expect(subject) + .to route(:get, "/projects/foobar/team_planners/1234/details/new") + .to(controller: "team_planner/team_planner", action: :split_create, project_id: "foobar", id: "1234", + work_package_split_create: true) end it "routes to team_planner#destroy" do diff --git a/spec/features/work_packages/table/context_menu/context_menu_shared_examples.rb b/spec/features/work_packages/table/context_menu/context_menu_shared_examples.rb index 5dcbc4d33fc..ab2c1af9acd 100644 --- a/spec/features/work_packages/table/context_menu/context_menu_shared_examples.rb +++ b/spec/features/work_packages/table/context_menu/context_menu_shared_examples.rb @@ -56,7 +56,7 @@ RSpec.shared_examples_for "provides a single WP context menu" do open_context_menu.call menu.choose("Create new child") expect(page).to have_css(".inline-edit--container.subject input") - expect(current_url).to match(/.*\/create_new\?.*(&)*parent_id=#{work_package.id}/) + expect(current_url).to match(/.*\/(create_new|details\/new)\?.*(&)*parent_id=#{work_package.id}/) find_by_id("work-packages--edit-actions-cancel").click expect(page).to have_no_css(".inline-edit--container.subject input") @@ -82,7 +82,7 @@ RSpec.shared_examples_for "provides a single WP context menu" do open_context_menu.call menu.choose("Create new child") expect(page).to have_css(".inline-edit--container.subject input") - expect(current_url).to match(/.*\/create_new\?.*(&)*parent_id=#{work_package.id}/) + expect(current_url).to match(/.*\/(create_new|details\/new)\?.*(&)*parent_id=#{work_package.id}/) split_view = Pages::SplitWorkPackageCreate.new project: work_package.project subject = split_view.edit_field(:subject) diff --git a/spec/support/pages/work_packages/work_package_cards.rb b/spec/support/pages/work_packages/work_package_cards.rb index 388e39e8c7e..325b1e697cb 100644 --- a/spec/support/pages/work_packages/work_package_cards.rb +++ b/spec/support/pages/work_packages/work_package_cards.rb @@ -83,7 +83,7 @@ module Pages # The offset is needed to ensure that the resizer does not catch the click, instead of the info icon element.hover.find('[data-test-selector="op-wp-single-card--details-button"]').click(x: -5, y: 0) - ::Pages::SplitWorkPackage.new(work_package, project) + ::Pages::PrimerizedSplitWorkPackage.new(work_package, project) end def drag_and_drop_work_package(from:, to:) From a20442e729cd9029fa432e4d37933160ca3b5ebe Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Thu, 16 Apr 2026 14:38:11 +0200 Subject: [PATCH 025/280] Try to stabilize calendars spec --- .../board-entry.component.ts | 17 +++++++++++--- .../calendar/calendar-entry.component.ts | 14 ++++++++++-- .../op-work-packages-calendar.service.ts | 14 +++++++++--- .../wp-calendar/wp-calendar.component.ts | 14 +----------- .../wp-view-context-menu.directive.ts | 2 +- .../calendar/spec/features/calendars_spec.rb | 22 +++++++++++++------ 6 files changed, 54 insertions(+), 29 deletions(-) diff --git a/frontend/src/app/features/boards/board/board-partitioned-page/board-entry.component.ts b/frontend/src/app/features/boards/board/board-partitioned-page/board-entry.component.ts index b3c1ea28203..1fe536a15eb 100644 --- a/frontend/src/app/features/boards/board/board-partitioned-page/board-entry.component.ts +++ b/frontend/src/app/features/boards/board/board-partitioned-page/board-entry.component.ts @@ -26,7 +26,14 @@ // See COPYRIGHT and LICENSE files for more details. //++ -import { ChangeDetectionStrategy, Component, ElementRef, Injector, Input } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + ElementRef, + Injector, + Input, + OnDestroy, +} from '@angular/core'; import { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs'; import { WorkPackageIsolatedQuerySpaceDirective, @@ -43,7 +50,7 @@ import { QueryUpdatedService } from 'core-app/features/boards/board/query-update @Component({ selector: 'board-entry', hostDirectives: [WorkPackageIsolatedQuerySpaceDirective], - template: ``, + template: '', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ BoardConfigurationService, @@ -56,7 +63,7 @@ import { QueryUpdatedService } from 'core-app/features/boards/board/query-update ], standalone: false, }) -export class BoardEntryComponent { +export class BoardEntryComponent implements OnDestroy { @Input() boardId:string; constructor( @@ -74,4 +81,8 @@ export class BoardEntryComponent { registry.add('subproject', injector.get(BoardSubprojectActionService)); registry.add('subtasks', injector.get(BoardSubtasksActionService)); } + + ngOnDestroy() { + document.body.classList.remove('router--boards-full-view'); + } } diff --git a/frontend/src/app/features/calendar/calendar-entry.component.ts b/frontend/src/app/features/calendar/calendar-entry.component.ts index 79f8748768b..645a7efd35d 100644 --- a/frontend/src/app/features/calendar/calendar-entry.component.ts +++ b/frontend/src/app/features/calendar/calendar-entry.component.ts @@ -26,7 +26,13 @@ // See COPYRIGHT and LICENSE files for more details. //++ -import { ChangeDetectionStrategy, Component, ElementRef, Input } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + ElementRef, + Input, + OnDestroy, +} from '@angular/core'; import { populateInputsFromDataset } from 'core-app/shared/components/dataset-inputs'; import { WorkPackageIsolatedQuerySpaceDirective, @@ -38,11 +44,15 @@ import { changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, }) -export class CalendarEntryComponent { +export class CalendarEntryComponent implements OnDestroy { @Input() queryId:string; constructor(readonly elementRef:ElementRef) { populateInputsFromDataset(this); document.body.classList.add('router--calendar'); } + + ngOnDestroy() { + document.body.classList.add('router--calendar'); + } } diff --git a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts index 9855ce959b3..51dc9246bf8 100644 --- a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts @@ -435,18 +435,26 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { private updateDateParam(dates:DatesSetArg) { const url = new URL(window.location.href); + + // Don't push a history entry when a split view is open: the date params are already + // encoded in the details URL, and pushing here would add a spurious details-URL entry + // that browser-back would restore (with the split view still visible). + if (url.pathname.includes('/details/')) { + return; + } + const newDate = this.timezoneService.formattedISODate(dates.view.calendar.getDate()); const newView = (dates.view as unknown as { type:string }).type; - // Skip if the URL already reflects both the date and view (e.g. after gotoDate was called - // from a popstate handler to restore the calendar to the history-entry's date and view). if (url.searchParams.get('cdate') === newDate && url.searchParams.get('cview') === newView) { return; } url.searchParams.set('cdate', newDate); url.searchParams.set('cview', newView); - window.history.pushState({}, '', url); + // Use a Turbo-compatible state so that browser history.back() triggers Turbo's + // restoration visit (full page reload), which correctly resets any open split view frame. + window.history.pushState({ turbo: { restorationIdentifier: crypto.randomUUID() } }, '', url); } updateDates(resizeInfo:EventResizeDoneArg|EventDropArg|EventReceiveArg, dragged?:boolean):ResourceChangeset { diff --git a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts index f38c95fe5ac..8cd1568c57e 100644 --- a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts +++ b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts @@ -46,7 +46,7 @@ import { import { FullCalendarComponent } from '@fullcalendar/angular'; import dayGridPlugin from '@fullcalendar/daygrid'; import moment from 'moment'; -import { fromEvent, Subject } from 'rxjs'; +import { Subject } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; import { States } from 'core-app/core/states/states.service'; @@ -168,18 +168,6 @@ export class WorkPackagesCalendarComponent extends UntilDestroyedMixin implement // Clear any old subscribers this.querySpace.stopAllSubscriptions.next(); - // Restore the calendar date when the user navigates back/forward via browser history. - // pushState in updateDateParam uses an empty state object, so Turbo ignores these - // popstate events. We handle them here to navigate FullCalendar in-page instead. - fromEvent(window, 'popstate') - .pipe(this.untilDestroyed()) - .subscribe(() => { - const cdate = new URLSearchParams(window.location.search).get('cdate'); - if (cdate && this.ucCalendar) { - this.ucCalendar.getApi().gotoDate(cdate); - } - }); - this.initializeCalendar(); } diff --git a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts index 01a43e4621c..df17c20be48 100644 --- a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts +++ b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts @@ -61,7 +61,7 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { ); // Get the base route for the current route to ensure we always link correctly - protected baseRoute = this.$state.current.data?.baseRoute || this.$state.current.name; + protected baseRoute = this.$state.current.data?.baseRoute ?? this.$state.current.name; // Whether we are running inside a uiRouter context (e.g. work packages list/board). // Calendar and Team Planner render without uiRouter and rely on Turbo navigation instead. diff --git a/modules/calendar/spec/features/calendars_spec.rb b/modules/calendar/spec/features/calendars_spec.rb index a5d517200cb..8f32f4f2aa5 100644 --- a/modules/calendar/spec/features/calendars_spec.rb +++ b/modules/calendar/spec/features/calendars_spec.rb @@ -185,22 +185,30 @@ RSpec.describe "Work package calendars", :js do # click goes to work package split screen page.find(".fc-event-title", text: current_work_package.subject).click - current_wp_split_screen.expect_open + + wait_for_turbo_frame do + expect(page).to have_current_path("/projects/#{project.identifier}/calendars/new/details/#{current_work_package.id}", ignore_query: true) + current_wp_split_screen.expect_open + end # Going back in browser history will lead us back to the calendar # Regression #29664 - page.go_back - expect_angular_frontend_initialized - expect(page) - .to have_css(".fc-event-title", text: current_work_package.subject, wait: 20) - current_wp_split_screen.expect_closed + retry_block do + page.go_back + expect_angular_frontend_initialized + expect(page) + .to have_css(".fc-event-title", text: current_work_package.subject, wait: 20) + current_wp_split_screen.expect_closed + end # After go_back, the app may not be fully initialized even though the # calendar events are visible. Clicking too early can cause an "not # authorized" error on the split screen API call. Retry to handle this. retry_block do page.find(".fc-event-title", text: current_work_package.subject).click - current_wp_split_screen.expect_open + wait_for_turbo_frame do + current_wp_split_screen.expect_open + end end # click back goes back to calendar From 3cccc6038768ed94384e6c2cfc4a7dd5a0a9f82e Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Fri, 17 Apr 2026 13:26:20 +0200 Subject: [PATCH 026/280] Remove unnecessary title updates --- modules/boards/app/views/boards/boards/show.html.erb | 1 - modules/calendar/app/views/calendar/calendars/show.html.erb | 1 - .../app/views/team_planner/team_planner/show.html.erb | 1 - 3 files changed, 3 deletions(-) diff --git a/modules/boards/app/views/boards/boards/show.html.erb b/modules/boards/app/views/boards/boards/show.html.erb index 7b8705cd00d..8b4d6fb62b5 100644 --- a/modules/boards/app/views/boards/boards/show.html.erb +++ b/modules/boards/app/views/boards/boards/show.html.erb @@ -34,6 +34,5 @@ See COPYRIGHT and LICENSE files for more details. <% end %> <% content_for :content_body_right do %> - <%= turbo_stream.set_title(title: page_title(*html_title_parts)) if turbo_frame_request? %> <%= render(split_view_instance) if render_work_package_split_view? %> <% end %> diff --git a/modules/calendar/app/views/calendar/calendars/show.html.erb b/modules/calendar/app/views/calendar/calendars/show.html.erb index e67fe9b0d8f..8672b487dcc 100644 --- a/modules/calendar/app/views/calendar/calendars/show.html.erb +++ b/modules/calendar/app/views/calendar/calendars/show.html.erb @@ -34,7 +34,6 @@ See COPYRIGHT and LICENSE files for more details. <% end %> <% content_for :content_body_right do %> - <%= turbo_stream.set_title(title: page_title(*html_title_parts)) if turbo_frame_request? %> <%= render(split_view_instance) if render_work_package_split_view? %> <%= render(split_create_instance) if render_work_package_split_create? %> <% end %> diff --git a/modules/team_planner/app/views/team_planner/team_planner/show.html.erb b/modules/team_planner/app/views/team_planner/team_planner/show.html.erb index 21bd5a6398e..4621ccf2bc3 100644 --- a/modules/team_planner/app/views/team_planner/team_planner/show.html.erb +++ b/modules/team_planner/app/views/team_planner/team_planner/show.html.erb @@ -5,7 +5,6 @@ <% end %> <% content_for :content_body_right do %> - <%= turbo_stream.set_title(title: page_title(*html_title_parts)) if turbo_frame_request? %> <%= render(split_view_instance) if render_work_package_split_view? %> <%= render(split_create_instance) if render_work_package_split_create? %> <% end %> From 505f3ea3b7d338a59571515af9f5f9e8540d3b0c Mon Sep 17 00:00:00 2001 From: Eric Schubert Date: Tue, 21 Apr 2026 11:07:45 +0200 Subject: [PATCH 027/280] [#73909] remove headings from wiki tab content --- .../wikis/work_package_wikis_tab_component.html.erb | 12 +----------- modules/wikis/config/locales/en.yml | 2 -- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb index 23bf68954de..94ff2b5c594 100644 --- a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb +++ b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb @@ -39,22 +39,12 @@ See COPYRIGHT and LICENSE files for more details. end end else - container.with_row do - render(Primer::Beta::Heading.new(tag: :h4, mb: 3)) { t(".relation_page_links") } - end - providers.each do |provider| container.with_row(mb: 3) do render(::Wikis::RelationPageLinksComponent.new(provider, work_package:)) end end - if show_inline_and_references_section? - container.with_row(mb: 3) do - render(Primer::Beta::Heading.new(tag: :h4)) { t(".inline_page_links_and_references") } - end - end - if inline_page_links.any? container.with_row(mb: 3) do render(::Wikis::CollapsiblePageLinksComponent.new(inline_page_links, heading: t(".inline_page_links"))) @@ -62,7 +52,7 @@ See COPYRIGHT and LICENSE files for more details. end if referencing_wiki_pages.any? - container.with_row(mb: 3) do + container.with_row do render(::Wikis::CollapsiblePageLinksComponent.new(referencing_wiki_pages, heading: t(".referencing_pages"))) end end diff --git a/modules/wikis/config/locales/en.yml b/modules/wikis/config/locales/en.yml index d0d53da0ae3..080c2346991 100644 --- a/modules/wikis/config/locales/en.yml +++ b/modules/wikis/config/locales/en.yml @@ -30,8 +30,6 @@ en: save_and_continue: Save and continue wiki_page: Wiki page work_package_wikis_tab_component: - relation_page_links: Related pages - inline_page_links_and_references: Inline page links and references inline_page_links: Inline page links referencing_pages: Referenced in blankslate: From ecb914d48d67bbafc272c32f8005be9825c6bf8c Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 21 Apr 2026 14:50:11 +0300 Subject: [PATCH 028/280] Clarify wpFormattedId fallback comment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous wording implied that displayId may be absent from API responses, but it's always populated. The actual reason we can't delegate to WorkPackageResource#formattedId in the fallback is that an unloaded HAL link carries only the href — none of the resource's properties are reachable until the link is fetched. --- .../display/field-types/work-package-display-field.module.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts b/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts index 36eb4619074..c59f2d3e296 100644 --- a/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts +++ b/frontend/src/app/shared/components/fields/display/field-types/work-package-display-field.module.ts @@ -64,7 +64,9 @@ export class WorkPackageDisplayField extends DisplayField { * * Delegates to `WorkPackageResource#formattedId` when the linked resource * is loaded. When unloaded, falls back to the numeric ID extracted from - * the self-link href (which has no `displayId` available). + * the self-link href — an unloaded HAL link carries only the href, not + * the resource's properties (the API always populates `displayId`, but + * we can't reach it until the link is fetched). */ public get wpFormattedId():string { const linkedWp = this.value as WorkPackageResource | undefined; From 3c5bdcb2b0b4b0157f9735b2251b197117160c81 Mon Sep 17 00:00:00 2001 From: Eric Schubert Date: Tue, 21 Apr 2026 15:32:23 +0200 Subject: [PATCH 029/280] [#73909] use page info result to render page link component - amend page info result model - adapt page link service to return page info results --- .../wikis/page_link_component.html.erb | 8 ++- .../components/wikis/page_link_component.rb | 18 ++--- .../relation_page_links_component.html.erb | 8 +-- .../wikis/relation_page_links_component.rb | 4 +- .../wikis/work_package_wikis_tab_component.rb | 4 +- .../wikis/adapters/results/page_info.rb | 2 +- .../providers/internal/queries/page_info.rb | 70 +++++++++++-------- .../providers/xwiki/queries/page_info.rb | 50 +++++++------ .../app/services/wikis/page_link_service.rb | 33 ++++----- 9 files changed, 111 insertions(+), 86 deletions(-) diff --git a/modules/wikis/app/components/wikis/page_link_component.html.erb b/modules/wikis/app/components/wikis/page_link_component.html.erb index e7aefa705ec..df6d99bec5f 100644 --- a/modules/wikis/app/components/wikis/page_link_component.html.erb +++ b/modules/wikis/app/components/wikis/page_link_component.html.erb @@ -32,7 +32,7 @@ See COPYRIGHT and LICENSE files for more details. <%= render(Primer::Alpha::StackItem.new(grow: true, classes: "ellipsis")) do - render(Primer::Beta::Link.new(href: page.href, scheme: :primary)) { page.title } + render(Primer::Beta::Link.new(href: page_href, scheme: :primary)) { page_title } end %> @@ -41,8 +41,10 @@ See COPYRIGHT and LICENSE files for more details. render(Primer::Alpha::ActionMenu.new) do |menu| menu.with_show_button(icon: :"kebab-horizontal", "aria-label": t(:label_more), scheme: :invisible) - menu.with_item(label: t(".remove"), scheme: :danger) do |item| - item.with_leading_visual_icon(icon: :trash) + if actions.include?(:remove) + menu.with_item(label: t(".remove"), scheme: :danger) do |item| + item.with_leading_visual_icon(icon: :trash) + end end end end diff --git a/modules/wikis/app/components/wikis/page_link_component.rb b/modules/wikis/app/components/wikis/page_link_component.rb index 495aafc97b1..521db5bf1ee 100644 --- a/modules/wikis/app/components/wikis/page_link_component.rb +++ b/modules/wikis/app/components/wikis/page_link_component.rb @@ -33,7 +33,15 @@ module Wikis include ApplicationHelper include OpPrimer::ComponentHelpers - alias_method :page, :model + alias_method :page_info_result, :model + + attr_reader :actions + + def initialize(model = nil, actions: [], **) + @actions = actions + + super(model, **) + end def page_title # TODO: Define behaviour for errors @@ -46,13 +54,7 @@ module Wikis end def show_action_menu? - true - end - - private - - def page_info_result - @page_info_result ||= link.provider.resolve("queries.page_info").call(identifier: link.identifier) + actions.any? end end end diff --git a/modules/wikis/app/components/wikis/relation_page_links_component.html.erb b/modules/wikis/app/components/wikis/relation_page_links_component.html.erb index ad2989ce32b..9bfd9606222 100644 --- a/modules/wikis/app/components/wikis/relation_page_links_component.html.erb +++ b/modules/wikis/app/components/wikis/relation_page_links_component.html.erb @@ -33,7 +33,7 @@ See COPYRIGHT and LICENSE files for more details. flex_layout(align_items: :center, justify_content: :space_between) do |header| header.with_column do concat(render(Primer::Beta::Text.new(font_weight: :bold, mr: 2)) { provider.name }) - concat(render(Primer::Beta::Counter.new(count: page_links.count, round: true, scheme: :primary))) + concat(render(Primer::Beta::Counter.new(count: page_link_infos.count, round: true, scheme: :primary))) end header.with_column do render(Primer::Alpha::ActionMenu.new) do |menu| @@ -50,7 +50,7 @@ See COPYRIGHT and LICENSE files for more details. end end - if page_links.empty? + if page_link_infos.empty? box.with_row do render(Primer::Beta::Blankslate.new(border: false)) do |blankslate| blankslate.with_heading(tag: :h2).with_content(t(".empty_heading")) @@ -59,8 +59,8 @@ See COPYRIGHT and LICENSE files for more details. end end - page_links.each do |page_link| - box.with_row { render(Wikis::PageLinkComponent.new(page_link)) } + page_link_infos.each do |info| + box.with_row { render(Wikis::PageLinkComponent.new(info, actions: [:remove])) } end end %> diff --git a/modules/wikis/app/components/wikis/relation_page_links_component.rb b/modules/wikis/app/components/wikis/relation_page_links_component.rb index d882b52224f..41739ba0181 100644 --- a/modules/wikis/app/components/wikis/relation_page_links_component.rb +++ b/modules/wikis/app/components/wikis/relation_page_links_component.rb @@ -40,8 +40,8 @@ module Wikis super(model, **) end - def page_links - @page_links ||= page_link_service.relation_page_links_for(provider:, linkable: @work_package) + def page_link_infos + @page_link_infos ||= page_link_service.relation_page_link_infos_for(provider:, linkable: @work_package) end private diff --git a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.rb b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.rb index 182dd48a75e..ac729e92864 100644 --- a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.rb +++ b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.rb @@ -45,11 +45,11 @@ module Wikis end def inline_page_links - @inline_page_links ||= page_link_service.inline_page_links_for(linkable: work_package) + @inline_page_links ||= page_link_service.inline_page_link_infos_for(linkable: work_package) end def referencing_wiki_pages - @referencing_wiki_pages ||= page_link_service.referencing_wiki_pages_for(linkable: work_package) + @referencing_wiki_pages ||= page_link_service.referencing_wiki_page_infos_for(linkable: work_package) end private diff --git a/modules/wikis/app/models/wikis/adapters/results/page_info.rb b/modules/wikis/app/models/wikis/adapters/results/page_info.rb index 7a438cf7e65..e887846e240 100644 --- a/modules/wikis/app/models/wikis/adapters/results/page_info.rb +++ b/modules/wikis/app/models/wikis/adapters/results/page_info.rb @@ -29,5 +29,5 @@ #++ module Wikis::Adapters::Results - PageInfo = Data.define(:title, :href) + PageInfo = Data.define(:identifier, :provider, :title, :href) end diff --git a/modules/wikis/app/services/wikis/adapters/providers/internal/queries/page_info.rb b/modules/wikis/app/services/wikis/adapters/providers/internal/queries/page_info.rb index c679c6995d0..394676f557f 100644 --- a/modules/wikis/app/services/wikis/adapters/providers/internal/queries/page_info.rb +++ b/modules/wikis/app/services/wikis/adapters/providers/internal/queries/page_info.rb @@ -28,37 +28,47 @@ # See COPYRIGHT and LICENSE files for more details. #++ -module Wikis::Adapters::Providers::Internal::Queries - class PageInfo < Wikis::Adapters::BaseQuery - class << self - def call_contract - Wikis::Adapters::Input::PageInfoCallContract +module Wikis + module Adapters + module Providers + module Internal + module Queries + class PageInfo < BaseQuery + class << self + def call_contract + Input::PageInfoCallContract + end + end + + def handle_query(identifier:) + # TODO: should we accept implicit User.current or do we want to pass in a user explicitly? + wiki_page = WikiPage.visible.find_by(id: identifier) + return failure(code: :not_found) if wiki_page.nil? + + success( + Results::PageInfo.new( + identifier:, + provider: InternalProvider.first, + title: wiki_page.title, + href: url_for(only_path: true, + controller: "/wiki", + action: "show", + project_id: wiki_page.project.identifier, + id: wiki_page.slug) + ) + ) + end + + private + + delegate :url_for, to: :url_helpers + + def url_helpers + OpenProject::StaticRouting::StaticRouter.new.url_helpers + end + end + end end end - - def handle_query(identifier:) - # TODO: should we accept implicit User.current or do we want to pass in a user explicitly? - wiki_page = WikiPage.visible.find_by(id: identifier) - return failure(code: :not_found) if wiki_page.nil? - - success( - Wikis::Adapters::Results::PageInfo.new( - title: wiki_page.title, - href: url_for(only_path: true, - controller: "/wiki", - action: "show", - project_id: wiki_page.project.identifier, - id: wiki_page.slug) - ) - ) - end - - private - - delegate :url_for, to: :url_helpers - - def url_helpers - OpenProject::StaticRouting::StaticRouter.new.url_helpers - end end end diff --git a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb index b048315f3ce..45a7ad10228 100644 --- a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb +++ b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb @@ -28,27 +28,37 @@ # See COPYRIGHT and LICENSE files for more details. #++ -module Wikis::Adapters::Providers::XWiki::Queries - class PageInfo < Wikis::Adapters::BaseQuery - class << self - def call_contract - Wikis::Adapters::Input::PageInfoCallContract +module Wikis + module Adapters + module Providers + module XWiki + module Queries + class PageInfo < BaseQuery + class << self + def call_contract + Input::PageInfoCallContract + end + end + + def handle_query(identifier:) + title = [ + "What makes XWiki special?", + "API documentation", + "A brief introduction on configuring your own XWiki instance and connect it to OpenProject." + ].sample + + success( + Results::PageInfo.new( + identifier:, + provider: XWikiProvider.first, + title:, + href: "#" + ) + ) + end + end + end end end - - def handle_query(identifier:) # rubocop:disable Lint/UnusedMethodArgument - title = [ - "What makes XWiki special?", - "API documentation", - "A brief introduction on configuring your own XWiki instance and connect it to OpenProject." - ].sample - - success( - Wikis::Adapters::Results::PageInfo.new( - title:, - href: "#" - ) - ) - end end end diff --git a/modules/wikis/app/services/wikis/page_link_service.rb b/modules/wikis/app/services/wikis/page_link_service.rb index dc494071370..ed3260196d2 100644 --- a/modules/wikis/app/services/wikis/page_link_service.rb +++ b/modules/wikis/app/services/wikis/page_link_service.rb @@ -30,46 +30,47 @@ module Wikis class PageLinkService + include Dry::Monads[:result] + def count(linkable) # Incomplete implementation until connection to Wikis API is done to fetch relation wiki page links # from external providers. # TODO: Replace with complete implementation - Wikis::PageLink.joins(:provider) - .merge(Wikis::Provider.enabled) + PageLink.joins(:provider) + .merge(Provider.enabled) .where(linkable:) .count end - def relation_page_links_for(provider:, linkable:) + def relation_page_link_infos_for(provider:, linkable:) provider.page_links .merge(RelationPageLink.all) .where(linkable:) .order(created_at: :desc) - .map { PageLinkViewModel.from_page_link(page_link: it, title_service: page_title_service) } + .map { provider.resolve("queries.page_info").call(identifier: it.identifier) } end - def inline_page_links_for(linkable:) + def inline_page_link_infos_for(linkable:) InlinePageLink.where(linkable:) .order(created_at: :desc) - .map { PageLinkViewModel.from_page_link(page_link: it, title_service: page_title_service) } + .map { it.provider.resolve("queries.page_info").call(identifier: it.identifier) } end - def referencing_wiki_pages_for(linkable:) + def referencing_wiki_page_infos_for(linkable:) # TODO: iterate over all providers and fetch mentions of this linkable + referenced_in = [] + + # Show a random internal wiki page as a referencing wiki page for work packages with even ids if linkable.id % 2 == 0 - return [ - PageLinkViewModel.new( - page_identifier: "42", - provider: XWikiProvider.enabled.first, - title: "I come from the wiki down under", - href: "#" - ) - ] + InternalProvider.enabled.each do |provider| + random_wiki_page = WikiPage.order("RANDOM()").limit(1).first + referenced_in << provider.resolve("queries.page_info").call(identifier: random_wiki_page.id.to_s) + end end - [] + referenced_in end private From 6592137d0cafc9be3a710aebd9f1c50eb8fc6e88 Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Tue, 21 Apr 2026 17:03:51 +0200 Subject: [PATCH 030/280] dev: Make bin/compose pick up compose override --- bin/compose | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/compose b/bin/compose index 76861cedbb4..f86934a2cb3 100755 --- a/bin/compose +++ b/bin/compose @@ -13,6 +13,10 @@ fi COMPOSE_FILE=docker-compose.yml +if [ -f docker-compose.override.yml ]; then + COMPOSE_FILE="$COMPOSE_FILE -f docker-compose.override.yml" +fi + if [ $# -eq 0 ]; then echo "Usage: bin/compose [args*]" echo From 318728a677d26d9b0d033d6ca9f66767eb2171e9 Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Tue, 21 Apr 2026 17:06:35 +0200 Subject: [PATCH 031/280] Add bin/compose restart --- bin/compose | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/compose b/bin/compose index f86934a2cb3..66790402c8b 100755 --- a/bin/compose +++ b/bin/compose @@ -25,6 +25,7 @@ if [ $# -eq 0 ]; then echo " reset - Resets everything by removing all containers and deleting all volumes. You need to run \`setup\` again afterwards. " echo " start - Starts both backend and frontend in the background. Access via http://localhost:3000/ by default." echo " run - Starts the frontend in the background and backend in the foreground. Useful for debugging using pry." + echo " restart [service] - Restarts one or all running services." echo " rspec - Runs rspec inside the \`backend-test\` container which will be started if it's not running yet." echo " * - Everything else will be passed straight to \`docker-compose\`." echo @@ -58,6 +59,8 @@ elif [[ "$@" = "run" ]]; then elif [[ "$1" = "setup" ]]; then $DOCKER_COMPOSE -f $COMPOSE_FILE run backend setup yes no | $DOCKER_COMPOSE -f $COMPOSE_FILE run frontend npm install +elif [[ "$1" = "restart" ]]; then + $DOCKER_COMPOSE -f $COMPOSE_FILE restart "${@:2}" elif [[ "$1" = "reset" ]]; then $DOCKER_COMPOSE -f $COMPOSE_FILE down && docker volume rm `docker volume ls -q | grep ${PWD##*/}_` elif [[ "$1" = "rspec" ]]; then From 46556369062bd190e9bc3f2d793dfd31340e3ee7 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 15 Apr 2026 20:52:08 +0300 Subject: [PATCH 032/280] Include displayId in autocompleter sparse fieldset The autocompleter uses a `select` parameter for sparse fieldsets, which omitted `displayId`. This caused the HAL resource proxy to return undefined for displayId, breaking formattedId rendering in autocomplete dropdowns and selected value labels. --- .../op-autocompleter/services/op-autocompleter.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/shared/components/autocompleter/op-autocompleter/services/op-autocompleter.service.ts b/frontend/src/app/shared/components/autocompleter/op-autocompleter/services/op-autocompleter.service.ts index 5b1b0616ad6..ab94f9c5c13 100644 --- a/frontend/src/app/shared/components/autocompleter/op-autocompleter/services/op-autocompleter.service.ts +++ b/frontend/src/app/shared/components/autocompleter/op-autocompleter/services/op-autocompleter.service.ts @@ -64,7 +64,7 @@ export class OpAutocompleterService extends UntilDestroyedMixin { if (resource === 'work_packages') { return { // see op-autocompleter/op-autocompleter.component.html for required attributes - select: 'elements/id,elements/subject,elements/author,elements/type,elements/project,elements/status', + select: 'elements/id,elements/displayId,elements/subject,elements/author,elements/type,elements/project,elements/status', sortBy: '[["updatedAt","desc"]]', }; } From 4a72bd00f5b45efada7ffc9caa5551c46487ed1b Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 15 Apr 2026 21:03:02 +0300 Subject: [PATCH 033/280] Add specs for formattedId rendering in autocompleter MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tests that the dropdown option and selected value label correctly display formattedId — both classic (#1) and semantic (PROJ-2) modes. Also fixes pre-existing test setup by mocking window.OpenProject. --- .../op-autocompleter/op-autocompleter.spec.ts | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.spec.ts b/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.spec.ts index 35d11473846..c9a6b56b0a0 100644 --- a/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.spec.ts +++ b/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.spec.ts @@ -18,10 +18,14 @@ describe('autocompleter', () => { id: 1, subject: 'Workpackage 1', name: 'Workpackage 1', + formattedId: '#1', author: { href: '/api/v3/users/1', name: 'Author1', }, + type: { id: 1, name: 'Task' }, + status: { id: 1, name: 'Open' }, + project: { name: 'My Project' }, description: { format: 'markdown', raw: 'Description of WP1', @@ -36,10 +40,14 @@ describe('autocompleter', () => { id: 2, subject: 'Workpackage 2', name: 'Workpackage 2', + formattedId: 'PROJ-2', author: { href: '/api/v3/users/2', name: 'Author2', }, + type: { id: 2, name: 'Bug' }, + status: { id: 2, name: 'Closed' }, + project: { name: 'My Project' }, description: { format: 'markdown', raw: 'Description of WP2', @@ -52,6 +60,14 @@ describe('autocompleter', () => { }, ]; + beforeEach(() => { + (window as any).OpenProject = { environment: 'test' }; + }); + + afterEach(() => { + delete (window as any).OpenProject; + }); + beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [OpAutocompleterComponent], @@ -147,6 +163,113 @@ describe('autocompleter', () => { }); }); + describe('work package option rendering', () => { + it('should display formattedId in dropdown options', () => { + jasmine.clock().install(); + try { + jasmine.clock().tick(0); + fixture.detectChanges(); + fixture.componentInstance.ngAfterViewInit(); + jasmine.clock().tick(1000); + fixture.detectChanges(); + const select = fixture.componentInstance.ngSelectInstance; + + select.open(); + select.focus(); + + const inputDebugElement = fixture.debugElement.query(By.css('input[role=combobox]')); + const inputElement = inputDebugElement.nativeElement as HTMLInputElement; + + inputElement.value = 'Wor'; + inputElement.dispatchEvent(new Event('input')); + fixture.detectChanges(); + jasmine.clock().tick(0); + fixture.detectChanges(); + + const wpIdElements = document.querySelectorAll('.op-autocompleter--wp-id'); + expect(wpIdElements.length).toBeGreaterThanOrEqual(1); + // Verify at least one rendered option displays formattedId + const renderedIds = Array.from(wpIdElements).map(el => el.textContent?.trim()); + expect(renderedIds).toContain('#1'); + } finally { + jasmine.clock().uninstall(); + } + }); + + it('should display classic formattedId in selected value label', () => { + jasmine.clock().install(); + try { + jasmine.clock().tick(0); + fixture.detectChanges(); + fixture.componentInstance.ngAfterViewInit(); + jasmine.clock().tick(1000); + fixture.detectChanges(); + const select = fixture.componentInstance.ngSelectInstance; + + select.open(); + select.focus(); + + const inputDebugElement = fixture.debugElement.query(By.css('input[role=combobox]')); + const inputElement = inputDebugElement.nativeElement as HTMLInputElement; + + inputElement.value = 'Wor'; + inputElement.dispatchEvent(new Event('input')); + fixture.detectChanges(); + jasmine.clock().tick(0); + fixture.detectChanges(); + + // Select the first item (classic mode: #1) + const firstOption = document.querySelector('.ng-option') as HTMLElement; + firstOption.click(); + fixture.detectChanges(); + + const labelElement = document.querySelector('.ng-value-label'); + expect(labelElement).toBeTruthy(); + expect(labelElement!.textContent).toContain('#1'); + expect(labelElement!.textContent).toContain('Workpackage 1'); + } finally { + jasmine.clock().uninstall(); + } + }); + + it('should display semantic formattedId in selected value label', () => { + jasmine.clock().install(); + try { + jasmine.clock().tick(0); + fixture.detectChanges(); + fixture.componentInstance.ngAfterViewInit(); + jasmine.clock().tick(1000); + fixture.detectChanges(); + const select = fixture.componentInstance.ngSelectInstance; + + select.open(); + select.focus(); + + const inputDebugElement = fixture.debugElement.query(By.css('input[role=combobox]')); + const inputElement = inputDebugElement.nativeElement as HTMLInputElement; + + inputElement.value = 'package 2'; + inputElement.dispatchEvent(new Event('input')); + fixture.detectChanges(); + jasmine.clock().tick(0); + fixture.detectChanges(); + + // Select the semantic mode item (PROJ-2) + const option = document.querySelector('.ng-option') as HTMLElement; + option.click(); + fixture.detectChanges(); + + const labelElement = document.querySelector('.ng-value-label'); + expect(labelElement).toBeTruthy(); + expect(labelElement!.textContent).toContain('PROJ-2'); + expect(labelElement!.textContent).not.toContain('#PROJ-2'); + expect(labelElement!.textContent).toContain('Workpackage 2'); + } finally { + jasmine.clock().uninstall(); + } + }); + }); + describe('with debounce', () => { beforeEach(() => { fixture.componentInstance.debounceTimeMs = 50; From ff1c75d8f54fe5651399829b756f5899c2f9601a Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Thu, 16 Apr 2026 14:24:20 +0300 Subject: [PATCH 034/280] Use formattedId in autocompleter and global search results Replace hard-coded `#{{ item.id }}` with `{{ item.formattedId }}` in autocompleter and global search templates so semantic identifiers (e.g. PROJ-42) display correctly without a # prefix. --- .../global_search/input/global-search-input.component.html | 2 +- .../op-autocompleter/op-autocompleter.component.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/core/global_search/input/global-search-input.component.html b/frontend/src/app/core/global_search/input/global-search-input.component.html index 79ba5b741a7..0a5d28b4fc4 100644 --- a/frontend/src/app/core/global_search/input/global-search-input.component.html +++ b/frontend/src/app/core/global_search/input/global-search-input.component.html @@ -88,7 +88,7 @@ {{ item.type.name }} - #{{ item.id }} + {{ item.formattedId }} {{ item.status.name }} diff --git a/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html b/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html index e48812d1d84..256d20bac57 100644 --- a/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html +++ b/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.component.html @@ -177,7 +177,7 @@ #{{ item.id }} + >{{ item.formattedId }} - {{ item.type?.name }} #{{ item.id }} {{ item.subject || item.name }} + {{ item.type?.name }} {{ item.formattedId }} {{ item.subject || item.name }} } } From 143b3b2da99db85f8d75094540997764f8216e2e Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 21 Apr 2026 19:59:02 +0300 Subject: [PATCH 035/280] Fix autocompleter label for pre-populated work packages The reporting filter widget pre-populates opce-autocompleter with plain hashes ({id:, name:}). When the autocompleter template switched from `#{item.id}` to `{{ item.formattedId }}`, those hashes had no formattedId key and the ID prefix disappeared from the selected-value label, breaking work_package_costlog_spec and time_entry_activity_spec. Extend Widget::Filters::WorkPackage#map_filter_values to emit formattedId, displayId, and subject alongside id/name so the autocompleter template has the data it needs. Centralise the formatting logic in a new WorkPackage#formatted_id model method, mirroring the frontend formatWorkPackageId helper: semantic identifiers pass through (PROJ-42); numeric ids are prefixed with # (#42). --- app/models/work_package/semantic_identifier.rb | 9 +++++++++ .../lib/widget/filters/work_package.rb | 4 +++- .../work_package/semantic_identifier_spec.rb | 17 +++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/app/models/work_package/semantic_identifier.rb b/app/models/work_package/semantic_identifier.rb index d3feb920782..9bfa50fe5e8 100644 --- a/app/models/work_package/semantic_identifier.rb +++ b/app/models/work_package/semantic_identifier.rb @@ -76,6 +76,15 @@ module WorkPackage::SemanticIdentifier identifier.presence || id end + # Returns the user-facing identifier formatted for inline display. + # Semantic identifiers (e.g. "PROJ-42") are self-describing and returned as-is. + # Numeric identifiers (e.g. "42") are prefixed with "#" so they read as WP references. + # Mirror of the JS helper in frontend/src/app/shared/helpers/work-package-id-pattern.ts. + def formatted_id + id = display_id.to_s + id.match?(/[A-Za-z]/) ? id : "##{id}" + end + # Allocates the next semantic identifier in the current project and assigns it to the WP. # Also writes alias rows for every identifier the project has ever used (including "ghost" aliases). # diff --git a/modules/reporting/lib/widget/filters/work_package.rb b/modules/reporting/lib/widget/filters/work_package.rb index bcd1af2b12e..256c4c7c653 100644 --- a/modules/reporting/lib/widget/filters/work_package.rb +++ b/modules/reporting/lib/widget/filters/work_package.rb @@ -70,6 +70,8 @@ class Widget::Filters::WorkPackage < Widget::Filters::Base expand_comma_separated_values! work_packages = WorkPackage.visible.where(id: filter.values) - work_packages.map { |wp| { id: wp.id, name: wp.subject } } + work_packages.map do |wp| + { id: wp.id, displayId: wp.display_id.to_s, formattedId: wp.formatted_id, subject: wp.subject, name: wp.subject } + end end end diff --git a/spec/models/work_package/semantic_identifier_spec.rb b/spec/models/work_package/semantic_identifier_spec.rb index f00b8e769d0..6b75e1bfc07 100644 --- a/spec/models/work_package/semantic_identifier_spec.rb +++ b/spec/models/work_package/semantic_identifier_spec.rb @@ -386,6 +386,23 @@ RSpec.describe WorkPackage::SemanticIdentifier do end end + describe "#formatted_id" do + context "when semantic mode is active", + with_flag: { semantic_work_package_ids: true }, + with_settings: { work_packages_identifier: "semantic" } do + it "returns the semantic identifier as-is" do + expect(work_package.formatted_id).to eq("MYPROJ-1") + end + end + + context "when semantic mode is not active", + with_flag: { semantic_work_package_ids: false } do + it "returns the numeric id prefixed with #" do + expect(work_package.formatted_id).to eq("##{work_package.id}") + end + end + end + describe "#allocate_and_register_semantic_id" do let(:project) { create(:project, identifier: "PROJ", wp_sequence_counter: 0) } let(:target_project) { create(:project, identifier: "OTHER", wp_sequence_counter: 0) } From b1025e6a0df0c7b574b6842bb912b0fdab6570a9 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 21 Apr 2026 20:02:43 +0300 Subject: [PATCH 036/280] Align formatted_id with PR 22788 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adopts PR 22788's exact method body, comment, and spec text for WorkPackage#formatted_id so the two PRs produce byte-identical diffs on the overlapping hunks. Git's 3-way merge auto-resolves when either PR lands first — no rebase conflict either way. Functionally equivalent to the previous implementation; the is_a?(String) guard is a no-op since display_id never returns anything exotic in practice, but it keeps the two branches textually in sync. --- app/models/work_package/semantic_identifier.rb | 11 +++++------ .../work_package/semantic_identifier_spec.rb | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/app/models/work_package/semantic_identifier.rb b/app/models/work_package/semantic_identifier.rb index 9bfa50fe5e8..1045efef7c8 100644 --- a/app/models/work_package/semantic_identifier.rb +++ b/app/models/work_package/semantic_identifier.rb @@ -76,13 +76,12 @@ module WorkPackage::SemanticIdentifier identifier.presence || id end - # Returns the user-facing identifier formatted for inline display. - # Semantic identifiers (e.g. "PROJ-42") are self-describing and returned as-is. - # Numeric identifiers (e.g. "42") are prefixed with "#" so they read as WP references. - # Mirror of the JS helper in frontend/src/app/shared/helpers/work-package-id-pattern.ts. + # Returns the identifier formatted for inline UI display. + # Semantic mode: "PROJ-42" (no prefix — self-describing) + # Classic mode: "#42" (hash-prefixed) def formatted_id - id = display_id.to_s - id.match?(/[A-Za-z]/) ? id : "##{id}" + did = display_id + did.is_a?(String) && did.match?(/[A-Za-z]/) ? did : "##{did}" end # Allocates the next semantic identifier in the current project and assigns it to the WP. diff --git a/spec/models/work_package/semantic_identifier_spec.rb b/spec/models/work_package/semantic_identifier_spec.rb index 6b75e1bfc07..076bc536f0e 100644 --- a/spec/models/work_package/semantic_identifier_spec.rb +++ b/spec/models/work_package/semantic_identifier_spec.rb @@ -390,14 +390,24 @@ RSpec.describe WorkPackage::SemanticIdentifier do context "when semantic mode is active", with_flag: { semantic_work_package_ids: true }, with_settings: { work_packages_identifier: "semantic" } do - it "returns the semantic identifier as-is" do + it "returns the semantic identifier without hash prefix" do expect(work_package.formatted_id).to eq("MYPROJ-1") end end + context "when semantic mode is active but identifier is nil", + with_flag: { semantic_work_package_ids: true }, + with_settings: { work_packages_identifier: "semantic" } do + before { work_package.update_columns(identifier: nil) } + + it "falls back to hash-prefixed numeric id" do + expect(work_package.formatted_id).to eq("##{work_package.id}") + end + end + context "when semantic mode is not active", with_flag: { semantic_work_package_ids: false } do - it "returns the numeric id prefixed with #" do + it "returns hash-prefixed numeric id" do expect(work_package.formatted_id).to eq("##{work_package.id}") end end From a1ba7735b15c22757e5799c032cb56223172038f Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 21 Apr 2026 20:11:44 +0300 Subject: [PATCH 037/280] Use formatted_id in InfoLineComponent The shared info line rendered hard-coded `#` instead of respecting the semantic identifier setting. Use WorkPackage#formatted_id (added alongside the autocompleter/global-search work) so Relations, hover cards, version widgets, backlogs, meetings, and time tracking all pick up semantic IDs like "PROJ-42" in semantic mode, "#42" in classic mode. --- app/components/work_packages/info_line_component.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/components/work_packages/info_line_component.html.erb b/app/components/work_packages/info_line_component.html.erb index 1f590ec6550..e4e05ec8bdf 100644 --- a/app/components/work_packages/info_line_component.html.erb +++ b/app/components/work_packages/info_line_component.html.erb @@ -16,7 +16,7 @@ font_size: @font_size, color: :muted ) - ) { "##{@work_package.id}" } + ) { @work_package.formatted_id } end if @show_status From 54ba86e230c2a08aec0bac5c7194f4c4d60a97c4 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 21 Apr 2026 20:11:47 +0300 Subject: [PATCH 038/280] Add component spec for InfoLineComponent formatted_id display Covers semantic mode, semantic-mode-with-nil-identifier fallback, and classic mode. Also exercises the pre-existing rendering paths (type, status, link) that previously had no component-level coverage. --- .../work_packages/info_line_component_spec.rb | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 spec/components/work_packages/info_line_component_spec.rb diff --git a/spec/components/work_packages/info_line_component_spec.rb b/spec/components/work_packages/info_line_component_spec.rb new file mode 100644 index 00000000000..b9844fa4451 --- /dev/null +++ b/spec/components/work_packages/info_line_component_spec.rb @@ -0,0 +1,73 @@ +# frozen_string_literal: true + +require "rails_helper" + +RSpec.describe WorkPackages::InfoLineComponent, type: :component do + let(:project) { create(:project) } + let(:status) { create(:status) } + let(:type) { create(:type) } + let(:work_package) { create(:work_package, project:, type:, status:) } + + subject { render_inline(described_class.new(work_package:)) } + + it "renders the work package type" do + subject + + expect(page).to have_css("span", text: /#{Regexp.escape(type.name)}/i) + end + + it "renders the work package status" do + subject + + expect(page).to have_text(status.name) + end + + it "renders a link to the work package" do + subject + + expect(page).to have_link(href: /work_packages\/#{work_package.id}/) + end + + describe "formatted identifier display" do + context "when semantic mode is active", + with_flag: { semantic_work_package_ids: true }, + with_settings: { work_packages_identifier: "semantic" } do + let(:project) { create(:project, identifier: "MYPROJ") } + + before do + work_package.update_columns(identifier: "MYPROJ-1") + end + + it "displays the semantic identifier without hash prefix" do + subject + + expect(page).to have_link(text: "MYPROJ-1") + end + end + + context "when semantic mode is active but identifier is nil", + with_flag: { semantic_work_package_ids: true }, + with_settings: { work_packages_identifier: "semantic" } do + let(:project) { create(:project, identifier: "MYPROJ") } + + before do + work_package.update_columns(identifier: nil) + end + + it "falls back to hash-prefixed numeric id" do + subject + + expect(page).to have_link(text: "##{work_package.id}") + end + end + + context "when classic mode is active", + with_flag: { semantic_work_package_ids: false } do + it "displays hash-prefixed numeric id" do + subject + + expect(page).to have_link(text: "##{work_package.id}") + end + end + end +end From e8d41a3c4dd0f4633112afbc60136a25acca13d4 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 21 Apr 2026 20:47:13 +0300 Subject: [PATCH 039/280] Cover autocompleter label in classic and semantic modes Adds two test layers that would have caught the plain-hash bug the widget fix addressed: - Widget unit spec (modules/reporting/spec/lib/widget/filters/work_package_spec.rb) asserts map_filter_values emits id/displayId/formattedId/subject/name with the right values in both modes. Fast feedback, pins the Rails-to-Angular contract the autocompleter template depends on. - work_package_costlog_spec is now parameterised over classic and semantic modes via shared_examples, asserting the pre-populated autocompleter renders "#42 subject" and "MYPROJ-1 subject" respectively. End-to-end confidence that the widget, template, and formattedId helper agree in a real browser. --- .../features/work_package_costlog_spec.rb | 39 ++++++--- .../lib/widget/filters/work_package_spec.rb | 79 +++++++++++++++++++ 2 files changed, 108 insertions(+), 10 deletions(-) create mode 100644 modules/reporting/spec/lib/widget/filters/work_package_spec.rb diff --git a/modules/reporting/spec/features/work_package_costlog_spec.rb b/modules/reporting/spec/features/work_package_costlog_spec.rb index f8565b904b5..cdedc04413d 100644 --- a/modules/reporting/spec/features/work_package_costlog_spec.rb +++ b/modules/reporting/spec/features/work_package_costlog_spec.rb @@ -33,7 +33,6 @@ require "spec_helper" RSpec.describe "Cost report showing my own times", :js do include Components::Autocompleter::NgSelectAutocompleteHelpers - let(:project) { create(:project) } let(:user) do create(:user, member_with_roles: { project => role }) end @@ -64,16 +63,36 @@ RSpec.describe "Cost report showing my own times", :js do wp_page.visit! end - it "allows visiting the costs which redirects to cost reports" do - new_window = window_opened_by do - page.find(".costsByType a", text: "10 Foobar").click - end + shared_examples "redirects to cost reports with the work package filter pre-populated" do + it "allows visiting the costs which redirects to cost reports" do + new_window = window_opened_by do + page.find(".costsByType a", text: "10 Foobar").click + end - within_window new_window do - expect(page).to have_css("#query_saved_name", text: "New cost report") - wp_autocompleter = find("opce-autocompleter#work_package_id_select_1") - expect_current_autocompleter_value(wp_autocompleter, "##{work_package.id} #{work_package.subject}") - expect(page).to have_css("td.units", text: "10.0 Foobars") + within_window new_window do + expect(page).to have_css("#query_saved_name", text: "New cost report") + wp_autocompleter = find("opce-autocompleter#work_package_id_select_1") + expect_current_autocompleter_value(wp_autocompleter, expected_autocompleter_label) + expect(page).to have_css("td.units", text: "10.0 Foobars") + end end end + + context "in classic mode", + with_flag: { semantic_work_package_ids: false }, + with_settings: { work_packages_identifier: "classic" } do + let(:project) { create(:project) } + let(:expected_autocompleter_label) { "##{work_package.id} #{work_package.subject}" } + + include_examples "redirects to cost reports with the work package filter pre-populated" + end + + context "in semantic mode", + with_flag: { semantic_work_package_ids: true }, + with_settings: { work_packages_identifier: "semantic" } do + let(:project) { create(:project, identifier: "MYPROJ") } + let(:expected_autocompleter_label) { "MYPROJ-1 #{work_package.subject}" } + + include_examples "redirects to cost reports with the work package filter pre-populated" + end end diff --git a/modules/reporting/spec/lib/widget/filters/work_package_spec.rb b/modules/reporting/spec/lib/widget/filters/work_package_spec.rb new file mode 100644 index 00000000000..c9599457468 --- /dev/null +++ b/modules/reporting/spec/lib/widget/filters/work_package_spec.rb @@ -0,0 +1,79 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require_relative "../../../spec_helper" + +RSpec.describe Widget::Filters::WorkPackage do + let(:admin) { create(:admin) } + let(:work_package) { create(:work_package, project:) } + + let(:filter) do + CostQuery::Filter::WorkPackageId.new.tap { |f| f.values = [work_package.id.to_s] } + end + let(:widget) { described_class.new(filter) } + + before { login_as(admin) } + + subject(:payload) { widget.send(:map_filter_values).first } + + describe "#map_filter_values" do + context "in classic mode", + with_flag: { semantic_work_package_ids: false }, + with_settings: { work_packages_identifier: "classic" } do + let(:project) { create(:project) } + + it "emits the keys the opce-autocompleter template reads, with a hash-prefixed id" do + expect(payload).to include( + id: work_package.id, + displayId: work_package.id.to_s, + formattedId: "##{work_package.id}", + subject: work_package.subject, + name: work_package.subject + ) + end + end + + context "in semantic mode", + with_flag: { semantic_work_package_ids: true }, + with_settings: { work_packages_identifier: "semantic" } do + let(:project) { create(:project, identifier: "MYPROJ") } + + it "emits the semantic identifier without a hash prefix" do + expect(payload).to include( + id: work_package.id, + displayId: "MYPROJ-1", + formattedId: "MYPROJ-1", + subject: work_package.subject, + name: work_package.subject + ) + end + end + end +end From 64031e253fae1f539098f773842f93738a6cf8dd Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 21 Apr 2026 20:54:01 +0300 Subject: [PATCH 040/280] Cast uiRouterGlobals workPackageId param to string The extracted local variable triggered a new no-unsafe-assignment lint error because uiRouterGlobals.params.workPackageId is typed as any. Cast to string to silence it, matching how route params are treated throughout the codebase. --- .../wp-card-view/wp-single-card/wp-single-card.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index f5ff1649e43..c8b4c4cf72f 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -144,7 +144,7 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen if (this.selectedWhenOpen) { // Route param may be semantic ("PROJ-7") or numeric ("42"). // Compare against both id and displayId to handle both modes. - const routeWpId = this.uiRouterGlobals.params.workPackageId; + const routeWpId = this.uiRouterGlobals.params.workPackageId as string; return routeWpId === this.workPackage.id || routeWpId === this.workPackage.displayId; } From 7a0fa94d8d497718bb733d6c7b5a73dae651d1f5 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 21 Apr 2026 21:01:11 +0300 Subject: [PATCH 041/280] Drop redundant displayId fallback on typed WorkPackageResource The WorkPackageResource.displayId getter always returns a string (its internal chain ends in `?? ''`), so the outer `?? id` fallback is dead code wherever the variable is typed as WorkPackageResource. Fallbacks on `wp?` (cache lookups) and `this.resource` (loosely typed HalResource in display fields) remain intentional. --- .../features/calendar/wp-calendar/wp-calendar.component.ts | 3 +-- .../work-packages/components/wp-new/wp-create.component.ts | 5 ++--- .../wp-context-menu/wp-view-context-menu.directive.ts | 3 +-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts index d1c36055438..3855a1c0efc 100644 --- a/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts +++ b/frontend/src/app/features/calendar/wp-calendar/wp-calendar.component.ts @@ -348,10 +348,9 @@ export class WorkPackagesCalendarComponent extends UntilDestroyedMixin implement if (this.$state.includes('calendar')) { this.workPackagesCalendar.openSplitView(wp.id!); } else { - const routingId = wp.displayId ?? wp.id!; void this.$state.go( 'work-packages.show', - { workPackageId: routingId }, + { workPackageId: wp.displayId }, ); } } diff --git a/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts b/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts index c4c92021944..340847154b2 100644 --- a/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-new/wp-create.component.ts @@ -130,16 +130,15 @@ export class WorkPackageCreateComponent extends UntilDestroyedMixin implements O this.editForm?.cancel(false); - const routingId = savedResource.displayId ?? savedResource.id!; if(this.routedFromAngular && this.successState) { - this.$state.go(this.successState, { workPackageId: routingId }) + this.$state.go(this.successState, { workPackageId: savedResource.displayId }) .then(() => { this.wpViewFocus.updateFocus(savedResource.id!); this.notificationService.showSave(savedResource, isInitial); }); } else { window.OpenProject.pageState = 'submitted'; - Turbo.visit(this.pathHelper.projectWorkPackagePath(savedResource.project.identifier, routingId) + window.location.search); + Turbo.visit(this.pathHelper.projectWorkPackagePath(savedResource.project.identifier, savedResource.displayId) + window.location.search); } } diff --git a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts index 378cf39e27e..a13c6307d6d 100644 --- a/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts +++ b/frontend/src/app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive.ts @@ -134,10 +134,9 @@ export class WorkPackageViewContextMenu extends OpContextMenuHandler { break; case 'relations': { - const routingId = this.workPackage.displayId ?? this.workPackageId; void this.$state.go( `${splitViewRoute(this.$state)}.tabs`, - { workPackageId: routingId, tabIdentifier: 'relations' }, + { workPackageId: this.workPackage.displayId, tabIdentifier: 'relations' }, ); break; } From 9c08f8d73f463ceadea4717d2642daeac90a52c0 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Tue, 21 Apr 2026 21:08:59 +0300 Subject: [PATCH 042/280] Use resolveRoutingId helper in board-list-container The inline cache-lookup-then-fallback duplicated the shared helper. Replace with a call to resolveRoutingId and slightly generalize the helper's JSDoc, since the caller here pulls the ID from selection state rather than a data attribute. --- .../board-list-container.component.ts | 5 ++--- .../features/work-packages/helpers/resolve-routing-id.ts | 7 ++++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts b/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts index 084aa45c966..10b5787e23b 100644 --- a/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts +++ b/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts @@ -40,6 +40,7 @@ import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; import { CurrentProjectService } from 'core-app/core/current-project/current-project.service'; import { States } from 'core-app/core/states/states.service'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; @Component({ selector: 'board-list-container', @@ -136,9 +137,7 @@ export class BoardListContainerComponent extends UntilDestroyedMixin implements filter(() => window.location.pathname.includes('/details/')), ).subscribe((selection) => { // Update split screen - const wpId = selection.focusedWorkPackage!; - const wp = this.wpStates.workPackages.get(wpId)?.value; - const routingId = wp?.displayId ?? wpId; + const routingId = resolveRoutingId(this.wpStates, selection.focusedWorkPackage!); const base = this.pathHelper.boardDetailsPath(this.currentProject.identifier, id, routingId); const search = window.location.search; Turbo.visit(search ? `${base}${search}` : base, { frame: 'content-bodyRight', action: 'advance' }); diff --git a/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts b/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts index b617ea088f3..49770467aa0 100644 --- a/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts +++ b/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts @@ -1,13 +1,14 @@ import { States } from 'core-app/core/states/states.service'; /** - * Resolve a numeric work package ID to its semantic routing ID (e.g. "PROJ-42"). + * Resolve a work package identifier to its semantic routing ID (e.g. "PROJ-42"). * Falls back to the input ID if the WP is not in cache or has no displayId — * this is a best-effort lookup, not a guarantee. The URL just shows the * numeric ID temporarily until the WP is cached. * - * Used in navigation handlers where only the numeric PK is available from - * data-work-package-id attributes, but the URL should show the semantic form. + * Use this in navigation handlers where the caller only has an identifier + * string (typically a numeric PK from a data-work-package-id attribute or + * a selection state) but the URL should show the semantic form. */ export function resolveRoutingId(states:States, workPackageId:string):string { const wp = states.workPackages.get(workPackageId)?.value; From 0180bcd18faf5fd0a42a717e074798685d84d86f Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Wed, 22 Apr 2026 00:16:22 +0200 Subject: [PATCH 043/280] [#71645] Improve classic project identifier generation --- app/models/projects/identifier.rb | 7 +- ...classic_identifier_suggestion_generator.rb | 88 +++++++ .../convert_project_to_semantic_service.rb | 2 +- .../identifier_autofix/preview_query.rb | 2 +- .../problematic_identifiers.rb | 2 +- ...project_identifier_suggestion_generator.rb | 216 ------------------ .../revert_project_to_classic_service.rb | 13 +- ...emantic_identifier_suggestion_generator.rb | 214 +++++++++++++++++ spec/models/projects/identifier_spec.rb | 6 +- ...ic_identifier_suggestion_generator_spec.rb | 115 ++++++++++ ...onvert_project_to_semantic_service_spec.rb | 2 +- ...c_identifier_suggestion_generator_spec.rb} | 2 +- 12 files changed, 430 insertions(+), 239 deletions(-) create mode 100644 app/services/project_identifiers/classic_identifier_suggestion_generator.rb delete mode 100644 app/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator.rb create mode 100644 app/services/project_identifiers/semantic_identifier_suggestion_generator.rb create mode 100644 spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb rename spec/services/project_identifiers/{identifier_autofix/project_identifier_suggestion_generator_spec.rb => semantic_identifier_suggestion_generator_spec.rb} (99%) diff --git a/app/models/projects/identifier.rb b/app/models/projects/identifier.rb index eaed2ca133b..b83f63696a6 100644 --- a/app/models/projects/identifier.rb +++ b/app/models/projects/identifier.rb @@ -104,11 +104,10 @@ module Projects::Identifier def suggest_identifier(name) if Setting::WorkPackageIdentifier.semantic? exclude = ProjectIdentifiers::IdentifierAutofix::ProblematicIdentifiers.reserved_identifiers - ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator + ProjectIdentifiers::SemanticIdentifierSuggestionGenerator .suggest_identifier(name, exclude:) - else # This should closely enough emulate Project models' usage of acts_as_url - name.to_url.first(IDENTIFIER_MAX_LENGTH).presence || - "project-#{SecureRandom.alphanumeric(5).downcase}" + else + ProjectIdentifiers::ClassicIdentifierSuggestionGenerator.new.suggest_identifier(name) end end end diff --git a/app/services/project_identifiers/classic_identifier_suggestion_generator.rb b/app/services/project_identifiers/classic_identifier_suggestion_generator.rb new file mode 100644 index 00000000000..ea3c915db0b --- /dev/null +++ b/app/services/project_identifiers/classic_identifier_suggestion_generator.rb @@ -0,0 +1,88 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module ProjectIdentifiers + # Generates a unique classic-format (acts_as_url-style) identifier from a project name, + # mirroring acts_as_url's own duplicate loop: appends -1, -2, … until a free slug is found. + # + # Instantiate once to load the taken-identifier set from the DB, then call +restore_identifier+ + # and/or +suggest_identifier+ — both share the same snapshot so the DB is only hit once. + class ClassicIdentifierSuggestionGenerator + FALLBACK_BASE = "project" + + def initialize(project: nil) + @exclude = taken_identifiers(project:) + end + + # Returns the most-recent classic-format slug from the project's FriendlyId history + # that is not currently taken, or nil if none exists. + def restore_identifier(project) + project.slugs + .order(created_at: :desc) + .pluck(:slug) + .find { |slug| Project.classic_identifier_format?(slug) && @exclude.exclude?(slug.downcase) } + end + + # Generates a unique classic-format identifier from +name+, mirroring acts_as_url's + # duplicate loop: appends -1, -2, … until a slug not in the taken set is found. + # Falls back to a randomised +FALLBACK_BASE+ slug when +name+ produces a blank slug. + def suggest_identifier(name) + base = slugify(name) || fallback_base + + candidate = base + n = 1 + loop do + return candidate if @exclude.exclude?(candidate.downcase) + + candidate = "#{base}-#{n}" + n += 1 + end + end + + private + + def slugify(name) + name.to_url.first(Projects::Identifier::IDENTIFIER_MAX_LENGTH).presence + end + + def fallback_base + "#{FALLBACK_BASE}-#{SecureRandom.alphanumeric(6).downcase}" + end + + def taken_identifiers(project: nil) + current = Project.unscoped.pluck(:identifier).compact.to_set(&:downcase) + historical = FriendlyId::Slug.where(sluggable_type: "Project") + .then { |q| project ? q.where.not(sluggable_id: project.id) : q } + .pluck(:slug).to_set(&:downcase) + reserved = Projects::Identifier::RESERVED_IDENTIFIERS.to_set + current | historical | reserved + end + end +end diff --git a/app/services/project_identifiers/convert_project_to_semantic_service.rb b/app/services/project_identifiers/convert_project_to_semantic_service.rb index 23170b66a2d..add56f0875d 100644 --- a/app/services/project_identifiers/convert_project_to_semantic_service.rb +++ b/app/services/project_identifiers/convert_project_to_semantic_service.rb @@ -74,7 +74,7 @@ module ProjectIdentifiers # Re-instantiate inside the lock so the exclusion set reflects all # identifiers committed since this job started. detector = ProjectIdentifiers::IdentifierAutofix::ProblematicIdentifiers.new - generator = ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator + generator = ProjectIdentifiers::SemanticIdentifierSuggestionGenerator # Prefer restoring the project's last known semantic identifier (from # FriendlyId history) so that existing WP identifiers remain valid and diff --git a/app/services/project_identifiers/identifier_autofix/preview_query.rb b/app/services/project_identifiers/identifier_autofix/preview_query.rb index 11f9f22ff04..e79add27e36 100644 --- a/app/services/project_identifiers/identifier_autofix/preview_query.rb +++ b/app/services/project_identifiers/identifier_autofix/preview_query.rb @@ -51,7 +51,7 @@ module ProjectIdentifiers end def generate_suggestions(analysis) - ProjectIdentifierSuggestionGenerator.call( + ProjectIdentifiers::SemanticIdentifierSuggestionGenerator.call( preview_projects(analysis.scope), exclude: analysis.exclusion_set.to_set(&:upcase) ) diff --git a/app/services/project_identifiers/identifier_autofix/problematic_identifiers.rb b/app/services/project_identifiers/identifier_autofix/problematic_identifiers.rb index 769ddb9d633..b84c1321a80 100644 --- a/app/services/project_identifiers/identifier_autofix/problematic_identifiers.rb +++ b/app/services/project_identifiers/identifier_autofix/problematic_identifiers.rb @@ -77,7 +77,7 @@ module ProjectIdentifiers end def self.max_identifier_length - ProjectIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max] + ProjectIdentifiers::SemanticIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max] end def scope diff --git a/app/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator.rb b/app/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator.rb deleted file mode 100644 index 5945eb60db4..00000000000 --- a/app/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator.rb +++ /dev/null @@ -1,216 +0,0 @@ -# frozen_string_literal: true - -#-- copyright -# OpenProject is an open source project management software. -# Copyright (C) the OpenProject GmbH -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License version 3. -# -# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -# Copyright (C) 2006-2013 Jean-Philippe Lang -# Copyright (C) 2010-2013 the ChiliProject Team -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# See COPYRIGHT and LICENSE files for more details. -#++ - -module ProjectIdentifiers - module IdentifierAutofix - # Generates a short uppercase semantic identifier for each project. - # - # Identifiers are 2–10 uppercase alphanumeric characters that always start - # with a letter. - # - # == Algorithm - # - # *Multi-word names* use word initials, truncated to +IDENTIFIER_LENGTH[:base]+ (5): - # "Flight Planning Algorithm" → "FPA" - # "A B C D E F G H I J K" → "ABCDE" - # - # *Single-word names* use the first +IDENTIFIER_LENGTH[:single_word]+ (3) characters: - # "Banana" → "BAN" - # - # *Accented characters* are transliterated ("Cécile" → "CEC"). - # *Non-Latin scripts* that have no transliteration fall back to "PROJ". - # - # == Collision resolution - # - # When a candidate is already taken, the identifier is progressively widened - # with more characters from the name, up to +IDENTIFIER_LENGTH[:max]+ (10): - # - # Multi-word: "SC" → "STC" → "STCO" → "STRCO" → … → "STREACOMMU" - # Single-word: "BAN" → "BANA" → "BANAN" → "BANANA" - # Initials: "ABCDE" → "ABCDEF" → … → "ABCDEFGHIJ" - # - # If all expansion candidates are exhausted, a numeric suffix is appended - # as a last resort ("GO" → "GO2"). - # - class ProjectIdentifierSuggestionGenerator - IDENTIFIER_LENGTH = { min: 2, max: 10, base: 5, single_word: 3 }.freeze - FALLBACK_IDENTIFIER = "PROJ" - SUFFIX_LIMIT = 10_000 - - def self.call(projects, exclude: Set.new) - new.call(projects, exclude:) - end - - # Returns a single suggested identifier string for the given project name. - # - def self.suggest_identifier(name, exclude: Set.new) - new.suggest_identifier(name, exclude:) - end - - def call(projects, exclude:) - generate_suggestions(projects, exclude:) - end - - def suggest_identifier(name, exclude: Set.new) - candidates = identifier_candidates(name) - find_unique(candidates, exclude) - end - - private - - def generate_suggestions(projects, exclude:) - excluded = exclude.dup - - projects.map do |project| - candidates = identifier_candidates(project.name) - identifier = find_unique(candidates, excluded) - excluded << identifier - - { - project:, - current_identifier: project.identifier, - suggested_identifier: identifier - } - end - end - - # Returns an ordered list of progressively longer identifier candidates - # derived from the project name. The first unique candidate wins. - def identifier_candidates(name) - words = transliterated_words(name) - return [FALLBACK_IDENTIFIER] if words.empty? - - candidates = words.size == 1 ? single_word_candidates(words.first) : multi_word_candidates(words) - candidates = candidates.filter_map do |c| - stripped = ensure_starts_with_letter(c) - stripped if stripped&.length.to_i >= IDENTIFIER_LENGTH[:min] - end - candidates.presence || [FALLBACK_IDENTIFIER] - end - - # Splits a name into words and transliterates each, returning only words - # that contain at least one ASCII-alphanumeric character. - def transliterated_words(name) - # Use POSIX [[:alpha:]] so accented letters (é, ñ, ü…) are kept inside - # their word rather than treated as separators by the ASCII-only [a-zA-Z]. - raw_words = name.to_s.scan(/[[:alpha:][:digit:]]+/) - raw_words.filter_map do |word| - t = I18n.with_locale(:en) { I18n.transliterate(word) } - clean = t.gsub(/[^A-Za-z0-9]/, "") - clean.presence - end - end - - # "Banana" → ["BAN", "BANA", "BANAN", "BANANA"] - def single_word_candidates(word) - chars = word.upcase - max_len = [chars.length, IDENTIFIER_LENGTH[:max]].min - return [] if max_len < IDENTIFIER_LENGTH[:min] - - start_len = IDENTIFIER_LENGTH[:single_word].clamp(IDENTIFIER_LENGTH[:min], max_len) - (start_len..max_len).map { chars[0, it] } - end - - # "Stream Communicator" → ["SC", "STC", "STCO", "STRCO", …] - # "A B C D E F G H I J K" → ["ABCDE", "ABCDEF", …, "ABCDEFGHIJ"] - # - # Starts with initials truncated to IDENTIFIER_LENGTH[:base], progressively - # includes more initials, then expands words beyond single chars. - def multi_word_candidates(words) - upcased_words = words.map(&:upcase) - candidates = initial_candidates(upcased_words) - - append_expansion_candidates!(candidates, upcased_words) if candidates.last.length < IDENTIFIER_LENGTH[:max] - candidates - end - - def initial_candidates(upcased_words) - initials = upcased_words.pluck(0).join[0, IDENTIFIER_LENGTH[:max]] - start = [IDENTIFIER_LENGTH[:base], initials.length].min - (start..initials.length).map { initials[0, it] } - end - - # Progressively pulls more characters from each word left-to-right. - def append_expansion_candidates!(candidates, upcased_words) - chars_per_word = upcased_words.map { 1 } - - loop do - expandable = upcased_words.each_index.find { |i| chars_per_word[i] < upcased_words[i].length } - break unless expandable - - chars_per_word[expandable] += 1 - candidate = build_candidate(upcased_words, chars_per_word) - candidates << candidate unless candidates.include?(candidate) - break if candidate.length >= IDENTIFIER_LENGTH[:max] - end - end - - def build_candidate(upcased_words, chars_per_word) - parts = upcased_words.each_with_index.map { |w, i| w[0, chars_per_word[i]] } - parts.join[0, IDENTIFIER_LENGTH[:max]] - end - - # Strips leading digits so identifiers always start with a letter. - # For names like "3D Printing Lab", initials "3PL" become "PL". - # This is lossy but acceptable for auto-generated suggestions. - def ensure_starts_with_letter(candidate) - candidate.sub(/\A\d+/, "").presence - end - - # Iterates through expansion candidates, then falls back to numeric suffix. - # Candidates are already filtered to start with a letter and meet min length. - def find_unique(candidates, used_identifiers) - candidates.each do |candidate| - return candidate unless used_identifiers.include?(candidate) - end - - base = candidates.last || FALLBACK_IDENTIFIER - numeric_suffix_fallback(base, used_identifiers) - end - - def numeric_suffix_fallback(base, used_identifiers) - # Ensure the base itself starts with a letter before appending digits. - base = ensure_starts_with_letter(base) || FALLBACK_IDENTIFIER - - counter = 2 - loop do - raise "Could not find a unique identifier for base '#{base}' within #{SUFFIX_LIMIT} attempts" \ - if counter > SUFFIX_LIMIT - - suffix = counter.to_s - candidate = "#{base[0, IDENTIFIER_LENGTH[:max] - suffix.length]}#{suffix}" - return candidate unless used_identifiers.include?(candidate) - - counter += 1 - end - end - end - end -end diff --git a/app/services/project_identifiers/revert_project_to_classic_service.rb b/app/services/project_identifiers/revert_project_to_classic_service.rb index 87ad2d7b080..7a1045d574e 100644 --- a/app/services/project_identifiers/revert_project_to_classic_service.rb +++ b/app/services/project_identifiers/revert_project_to_classic_service.rb @@ -51,18 +51,9 @@ module ProjectIdentifiers attr_reader :project def restore_classic_identifier - classic = previous_classic_identifier.presence || Project.suggest_identifier(project.name) + generator = ProjectIdentifiers::ClassicIdentifierSuggestionGenerator.new + classic = generator.restore_identifier(project) || generator.suggest_identifier(project.name) project.update!(identifier: classic) end - - # Returns the most-recent FriendlyId slug for this project that is in classic - # acts_as_url format (lowercase letters, digits, hyphens, underscores; not - # all-numeric), or nil if no such slug exists. - def previous_classic_identifier - project.slugs - .order(created_at: :desc) - .pluck(:slug) - .find { |slug| Project.classic_identifier_format?(slug) } - end end end diff --git a/app/services/project_identifiers/semantic_identifier_suggestion_generator.rb b/app/services/project_identifiers/semantic_identifier_suggestion_generator.rb new file mode 100644 index 00000000000..ef04ad92019 --- /dev/null +++ b/app/services/project_identifiers/semantic_identifier_suggestion_generator.rb @@ -0,0 +1,214 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module ProjectIdentifiers + # Generates a short uppercase semantic identifier for each project. + # + # Identifiers are 2–10 uppercase alphanumeric characters that always start + # with a letter. + # + # == Algorithm + # + # *Multi-word names* use word initials, truncated to +IDENTIFIER_LENGTH[:base]+ (5): + # "Flight Planning Algorithm" → "FPA" + # "A B C D E F G H I J K" → "ABCDE" + # + # *Single-word names* use the first +IDENTIFIER_LENGTH[:single_word]+ (3) characters: + # "Banana" → "BAN" + # + # *Accented characters* are transliterated ("Cécile" → "CEC"). + # *Non-Latin scripts* that have no transliteration fall back to "PROJ". + # + # == Collision resolution + # + # When a candidate is already taken, the identifier is progressively widened + # with more characters from the name, up to +IDENTIFIER_LENGTH[:max]+ (10): + # + # Multi-word: "SC" → "STC" → "STCO" → "STRCO" → … → "STREACOMMU" + # Single-word: "BAN" → "BANA" → "BANAN" → "BANANA" + # Initials: "ABCDE" → "ABCDEF" → … → "ABCDEFGHIJ" + # + # If all expansion candidates are exhausted, a numeric suffix is appended + # as a last resort ("GO" → "GO2"). + # + class SemanticIdentifierSuggestionGenerator + IDENTIFIER_LENGTH = { min: 2, max: 10, base: 5, single_word: 3 }.freeze + FALLBACK_IDENTIFIER = "PROJ" + SUFFIX_LIMIT = 10_000 + + def self.call(projects, exclude: Set.new) + new.call(projects, exclude:) + end + + # Returns a single suggested identifier string for the given project name. + # + def self.suggest_identifier(name, exclude: Set.new) + new.suggest_identifier(name, exclude:) + end + + def call(projects, exclude:) + generate_suggestions(projects, exclude:) + end + + def suggest_identifier(name, exclude: Set.new) + candidates = identifier_candidates(name) + find_unique(candidates, exclude) + end + + private + + def generate_suggestions(projects, exclude:) + excluded = exclude.dup + + projects.map do |project| + candidates = identifier_candidates(project.name) + identifier = find_unique(candidates, excluded) + excluded << identifier + + { + project:, + current_identifier: project.identifier, + suggested_identifier: identifier + } + end + end + + # Returns an ordered list of progressively longer identifier candidates + # derived from the project name. The first unique candidate wins. + def identifier_candidates(name) + words = transliterated_words(name) + return [FALLBACK_IDENTIFIER] if words.empty? + + candidates = words.size == 1 ? single_word_candidates(words.first) : multi_word_candidates(words) + candidates = candidates.filter_map do |c| + stripped = ensure_starts_with_letter(c) + stripped if stripped&.length.to_i >= IDENTIFIER_LENGTH[:min] + end + candidates.presence || [FALLBACK_IDENTIFIER] + end + + # Splits a name into words and transliterates each, returning only words + # that contain at least one ASCII-alphanumeric character. + def transliterated_words(name) + # Use POSIX [[:alpha:]] so accented letters (é, ñ, ü…) are kept inside + # their word rather than treated as separators by the ASCII-only [a-zA-Z]. + raw_words = name.to_s.scan(/[[:alpha:][:digit:]]+/) + raw_words.filter_map do |word| + t = I18n.with_locale(:en) { I18n.transliterate(word) } + clean = t.gsub(/[^A-Za-z0-9]/, "") + clean.presence + end + end + + # "Banana" → ["BAN", "BANA", "BANAN", "BANANA"] + def single_word_candidates(word) + chars = word.upcase + max_len = [chars.length, IDENTIFIER_LENGTH[:max]].min + return [] if max_len < IDENTIFIER_LENGTH[:min] + + start_len = IDENTIFIER_LENGTH[:single_word].clamp(IDENTIFIER_LENGTH[:min], max_len) + (start_len..max_len).map { chars[0, it] } + end + + # "Stream Communicator" → ["SC", "STC", "STCO", "STRCO", …] + # "A B C D E F G H I J K" → ["ABCDE", "ABCDEF", …, "ABCDEFGHIJ"] + # + # Starts with initials truncated to IDENTIFIER_LENGTH[:base], progressively + # includes more initials, then expands words beyond single chars. + def multi_word_candidates(words) + upcased_words = words.map(&:upcase) + candidates = initial_candidates(upcased_words) + + append_expansion_candidates!(candidates, upcased_words) if candidates.last.length < IDENTIFIER_LENGTH[:max] + candidates + end + + def initial_candidates(upcased_words) + initials = upcased_words.pluck(0).join[0, IDENTIFIER_LENGTH[:max]] + start = [IDENTIFIER_LENGTH[:base], initials.length].min + (start..initials.length).map { initials[0, it] } + end + + # Progressively pulls more characters from each word left-to-right. + def append_expansion_candidates!(candidates, upcased_words) + chars_per_word = upcased_words.map { 1 } + + loop do + expandable = upcased_words.each_index.find { |i| chars_per_word[i] < upcased_words[i].length } + break unless expandable + + chars_per_word[expandable] += 1 + candidate = build_candidate(upcased_words, chars_per_word) + candidates << candidate unless candidates.include?(candidate) + break if candidate.length >= IDENTIFIER_LENGTH[:max] + end + end + + def build_candidate(upcased_words, chars_per_word) + parts = upcased_words.each_with_index.map { |w, i| w[0, chars_per_word[i]] } + parts.join[0, IDENTIFIER_LENGTH[:max]] + end + + # Strips leading digits so identifiers always start with a letter. + # For names like "3D Printing Lab", initials "3PL" become "PL". + # This is lossy but acceptable for auto-generated suggestions. + def ensure_starts_with_letter(candidate) + candidate.sub(/\A\d+/, "").presence + end + + # Iterates through expansion candidates, then falls back to numeric suffix. + # Candidates are already filtered to start with a letter and meet min length. + def find_unique(candidates, used_identifiers) + candidates.each do |candidate| + return candidate unless used_identifiers.include?(candidate) + end + + base = candidates.last || FALLBACK_IDENTIFIER + numeric_suffix_fallback(base, used_identifiers) + end + + def numeric_suffix_fallback(base, used_identifiers) + # Ensure the base itself starts with a letter before appending digits. + base = ensure_starts_with_letter(base) || FALLBACK_IDENTIFIER + + counter = 2 + loop do + raise "Could not find a unique identifier for base '#{base}' within #{SUFFIX_LIMIT} attempts" \ + if counter > SUFFIX_LIMIT + + suffix = counter.to_s + candidate = "#{base[0, IDENTIFIER_LENGTH[:max] - suffix.length]}#{suffix}" + return candidate unless used_identifiers.include?(candidate) + + counter += 1 + end + end + end +end diff --git a/spec/models/projects/identifier_spec.rb b/spec/models/projects/identifier_spec.rb index c6fb9455fed..b9b3b0d277c 100644 --- a/spec/models/projects/identifier_spec.rb +++ b/spec/models/projects/identifier_spec.rb @@ -194,11 +194,11 @@ RSpec.describe Projects::Identifier do describe ".suggest_identifier" do context "with semantic identifiers", with_settings: { work_packages_identifier: "semantic" } do - it "delegates to ProjectIdentifierSuggestionGenerator with an exclusion set" do - allow(ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator) + it "delegates to SemanticIdentifierSuggestionGenerator with an exclusion set" do + allow(ProjectIdentifiers::SemanticIdentifierSuggestionGenerator) .to receive(:suggest_identifier).and_return("MP") expect(Project.suggest_identifier("My Project")).to eq("MP") - expect(ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator) + expect(ProjectIdentifiers::SemanticIdentifierSuggestionGenerator) .to have_received(:suggest_identifier).with("My Project", exclude: a_kind_of(Set)) end end diff --git a/spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb b/spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb new file mode 100644 index 00000000000..bcf2ebc5b78 --- /dev/null +++ b/spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb @@ -0,0 +1,115 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "rails_helper" + +RSpec.describe ProjectIdentifiers::ClassicIdentifierSuggestionGenerator do + describe "#suggest_identifier" do + subject(:generator) { described_class.new } + + it "slugifies the name" do + expect(generator.suggest_identifier("My Project")).to eq("my-project") + end + + it "appends -1 when the base slug is taken by an existing project identifier" do + create(:project, identifier: "my-project") + expect(described_class.new.suggest_identifier("My Project")).to eq("my-project-1") + end + + it "increments the suffix until a free slot is found" do + create(:project, identifier: "my-project") + create(:project, identifier: "my-project-1") + expect(described_class.new.suggest_identifier("My Project")).to eq("my-project-2") + end + + it "avoids slugs reserved in FriendlyId history" do + project = create(:project, identifier: "other-id") + FriendlyId::Slug.create!(slug: "my-project", sluggable_type: "Project", sluggable_id: project.id) + expect(described_class.new.suggest_identifier("My Project")).to eq("my-project-1") + end + + it "avoids reserved identifiers, falling back to a suffixed version" do + expect(described_class.new.suggest_identifier("New")).to eq("new-1") + end + + context "when the name produces a blank slug" do + it "falls back to a randomised project-XXXXXX identifier" do + expect(described_class.new.suggest_identifier("!!!")).to match(/\Aproject-[a-z0-9]{6}\z/) + end + end + end + + describe "#restore_identifier" do + let(:project) { create(:project, identifier: "current-id") } + + before do + project # ensure created before we travel + + travel_to(2.days.ago) { FriendlyId::Slug.create!(slug: "older-classic", sluggable_type: "Project", sluggable_id: project.id) } + travel_to(1.day.ago) { FriendlyId::Slug.create!(slug: "old-classic", sluggable_type: "Project", sluggable_id: project.id) } + end + + subject(:generator) { described_class.new(project:) } + + it "returns the most recent classic-format slug from history" do + expect(generator.restore_identifier(project)).to eq("old-classic") + end + + it "skips non-classic (e.g. uppercase semantic) slugs in history" do + FriendlyId::Slug.create!(slug: "SEMANTIC1", sluggable_type: "Project", sluggable_id: project.id, created_at: 1.hour.ago) + expect(generator.restore_identifier(project)).to eq("old-classic") + end + + it "returns nil when history contains no classic-format slugs" do + FriendlyId::Slug.where(sluggable_id: project.id).delete_all + FriendlyId::Slug.create!(slug: "SEMANTIC1", sluggable_type: "Project", sluggable_id: project.id) + expect(described_class.new(project:).restore_identifier(project)).to be_nil + end + + context "when the prior slug is taken by another project's history" do + before do + other = create(:project, identifier: "other-project") + FriendlyId::Slug.create!(slug: "old-classic", sluggable_type: "Project", sluggable_id: other.id) + end + + it "skips the taken slug and falls through to the next candidate" do + expect(generator.restore_identifier(project)).to eq("older-classic") + end + end + + context "when initialized without project:" do + subject(:generator) { described_class.new } + + it "includes the project's own historical slugs in the taken set, so restore returns nil" do + expect(generator.restore_identifier(project)).to be_nil + end + end + end +end diff --git a/spec/services/project_identifiers/convert_project_to_semantic_service_spec.rb b/spec/services/project_identifiers/convert_project_to_semantic_service_spec.rb index 6e237c64574..a331ca2cfeb 100644 --- a/spec/services/project_identifiers/convert_project_to_semantic_service_spec.rb +++ b/spec/services/project_identifiers/convert_project_to_semantic_service_spec.rb @@ -73,7 +73,7 @@ RSpec.describe ProjectIdentifiers::ConvertProjectToSemanticService, end before do - allow(ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator) + allow(ProjectIdentifiers::SemanticIdentifierSuggestionGenerator) .to receive(:suggest_identifier) .and_return(nil) end diff --git a/spec/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator_spec.rb b/spec/services/project_identifiers/semantic_identifier_suggestion_generator_spec.rb similarity index 99% rename from spec/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator_spec.rb rename to spec/services/project_identifiers/semantic_identifier_suggestion_generator_spec.rb index 2905cc9cae2..1a9e3ddeab5 100644 --- a/spec/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator_spec.rb +++ b/spec/services/project_identifiers/semantic_identifier_suggestion_generator_spec.rb @@ -30,7 +30,7 @@ require "rails_helper" -RSpec.describe ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator do +RSpec.describe ProjectIdentifiers::SemanticIdentifierSuggestionGenerator do describe ".call" do context "when given an empty array" do it "returns an empty array" do From b00c6c877b861f7c806132823d4eae228a69fb29 Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Wed, 22 Apr 2026 00:25:51 +0200 Subject: [PATCH 044/280] revert the rename --- app/models/projects/identifier.rb | 2 +- .../identifier_autofix/preview_query.rb | 2 +- .../problematic_identifiers.rb | 2 +- ...project_identifier_suggestion_generator.rb | 216 ++++++++++++++++++ ...emantic_identifier_suggestion_generator.rb | 214 ----------------- ...t_identifier_suggestion_generator_spec.rb} | 2 +- 6 files changed, 220 insertions(+), 218 deletions(-) create mode 100644 app/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator.rb delete mode 100644 app/services/project_identifiers/semantic_identifier_suggestion_generator.rb rename spec/services/project_identifiers/{semantic_identifier_suggestion_generator_spec.rb => identifier_autofix/project_identifier_suggestion_generator_spec.rb} (99%) diff --git a/app/models/projects/identifier.rb b/app/models/projects/identifier.rb index b83f63696a6..26bca522297 100644 --- a/app/models/projects/identifier.rb +++ b/app/models/projects/identifier.rb @@ -104,7 +104,7 @@ module Projects::Identifier def suggest_identifier(name) if Setting::WorkPackageIdentifier.semantic? exclude = ProjectIdentifiers::IdentifierAutofix::ProblematicIdentifiers.reserved_identifiers - ProjectIdentifiers::SemanticIdentifierSuggestionGenerator + ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator .suggest_identifier(name, exclude:) else ProjectIdentifiers::ClassicIdentifierSuggestionGenerator.new.suggest_identifier(name) diff --git a/app/services/project_identifiers/identifier_autofix/preview_query.rb b/app/services/project_identifiers/identifier_autofix/preview_query.rb index e79add27e36..11f9f22ff04 100644 --- a/app/services/project_identifiers/identifier_autofix/preview_query.rb +++ b/app/services/project_identifiers/identifier_autofix/preview_query.rb @@ -51,7 +51,7 @@ module ProjectIdentifiers end def generate_suggestions(analysis) - ProjectIdentifiers::SemanticIdentifierSuggestionGenerator.call( + ProjectIdentifierSuggestionGenerator.call( preview_projects(analysis.scope), exclude: analysis.exclusion_set.to_set(&:upcase) ) diff --git a/app/services/project_identifiers/identifier_autofix/problematic_identifiers.rb b/app/services/project_identifiers/identifier_autofix/problematic_identifiers.rb index b84c1321a80..769ddb9d633 100644 --- a/app/services/project_identifiers/identifier_autofix/problematic_identifiers.rb +++ b/app/services/project_identifiers/identifier_autofix/problematic_identifiers.rb @@ -77,7 +77,7 @@ module ProjectIdentifiers end def self.max_identifier_length - ProjectIdentifiers::SemanticIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max] + ProjectIdentifierSuggestionGenerator::IDENTIFIER_LENGTH[:max] end def scope diff --git a/app/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator.rb b/app/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator.rb new file mode 100644 index 00000000000..5945eb60db4 --- /dev/null +++ b/app/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator.rb @@ -0,0 +1,216 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module ProjectIdentifiers + module IdentifierAutofix + # Generates a short uppercase semantic identifier for each project. + # + # Identifiers are 2–10 uppercase alphanumeric characters that always start + # with a letter. + # + # == Algorithm + # + # *Multi-word names* use word initials, truncated to +IDENTIFIER_LENGTH[:base]+ (5): + # "Flight Planning Algorithm" → "FPA" + # "A B C D E F G H I J K" → "ABCDE" + # + # *Single-word names* use the first +IDENTIFIER_LENGTH[:single_word]+ (3) characters: + # "Banana" → "BAN" + # + # *Accented characters* are transliterated ("Cécile" → "CEC"). + # *Non-Latin scripts* that have no transliteration fall back to "PROJ". + # + # == Collision resolution + # + # When a candidate is already taken, the identifier is progressively widened + # with more characters from the name, up to +IDENTIFIER_LENGTH[:max]+ (10): + # + # Multi-word: "SC" → "STC" → "STCO" → "STRCO" → … → "STREACOMMU" + # Single-word: "BAN" → "BANA" → "BANAN" → "BANANA" + # Initials: "ABCDE" → "ABCDEF" → … → "ABCDEFGHIJ" + # + # If all expansion candidates are exhausted, a numeric suffix is appended + # as a last resort ("GO" → "GO2"). + # + class ProjectIdentifierSuggestionGenerator + IDENTIFIER_LENGTH = { min: 2, max: 10, base: 5, single_word: 3 }.freeze + FALLBACK_IDENTIFIER = "PROJ" + SUFFIX_LIMIT = 10_000 + + def self.call(projects, exclude: Set.new) + new.call(projects, exclude:) + end + + # Returns a single suggested identifier string for the given project name. + # + def self.suggest_identifier(name, exclude: Set.new) + new.suggest_identifier(name, exclude:) + end + + def call(projects, exclude:) + generate_suggestions(projects, exclude:) + end + + def suggest_identifier(name, exclude: Set.new) + candidates = identifier_candidates(name) + find_unique(candidates, exclude) + end + + private + + def generate_suggestions(projects, exclude:) + excluded = exclude.dup + + projects.map do |project| + candidates = identifier_candidates(project.name) + identifier = find_unique(candidates, excluded) + excluded << identifier + + { + project:, + current_identifier: project.identifier, + suggested_identifier: identifier + } + end + end + + # Returns an ordered list of progressively longer identifier candidates + # derived from the project name. The first unique candidate wins. + def identifier_candidates(name) + words = transliterated_words(name) + return [FALLBACK_IDENTIFIER] if words.empty? + + candidates = words.size == 1 ? single_word_candidates(words.first) : multi_word_candidates(words) + candidates = candidates.filter_map do |c| + stripped = ensure_starts_with_letter(c) + stripped if stripped&.length.to_i >= IDENTIFIER_LENGTH[:min] + end + candidates.presence || [FALLBACK_IDENTIFIER] + end + + # Splits a name into words and transliterates each, returning only words + # that contain at least one ASCII-alphanumeric character. + def transliterated_words(name) + # Use POSIX [[:alpha:]] so accented letters (é, ñ, ü…) are kept inside + # their word rather than treated as separators by the ASCII-only [a-zA-Z]. + raw_words = name.to_s.scan(/[[:alpha:][:digit:]]+/) + raw_words.filter_map do |word| + t = I18n.with_locale(:en) { I18n.transliterate(word) } + clean = t.gsub(/[^A-Za-z0-9]/, "") + clean.presence + end + end + + # "Banana" → ["BAN", "BANA", "BANAN", "BANANA"] + def single_word_candidates(word) + chars = word.upcase + max_len = [chars.length, IDENTIFIER_LENGTH[:max]].min + return [] if max_len < IDENTIFIER_LENGTH[:min] + + start_len = IDENTIFIER_LENGTH[:single_word].clamp(IDENTIFIER_LENGTH[:min], max_len) + (start_len..max_len).map { chars[0, it] } + end + + # "Stream Communicator" → ["SC", "STC", "STCO", "STRCO", …] + # "A B C D E F G H I J K" → ["ABCDE", "ABCDEF", …, "ABCDEFGHIJ"] + # + # Starts with initials truncated to IDENTIFIER_LENGTH[:base], progressively + # includes more initials, then expands words beyond single chars. + def multi_word_candidates(words) + upcased_words = words.map(&:upcase) + candidates = initial_candidates(upcased_words) + + append_expansion_candidates!(candidates, upcased_words) if candidates.last.length < IDENTIFIER_LENGTH[:max] + candidates + end + + def initial_candidates(upcased_words) + initials = upcased_words.pluck(0).join[0, IDENTIFIER_LENGTH[:max]] + start = [IDENTIFIER_LENGTH[:base], initials.length].min + (start..initials.length).map { initials[0, it] } + end + + # Progressively pulls more characters from each word left-to-right. + def append_expansion_candidates!(candidates, upcased_words) + chars_per_word = upcased_words.map { 1 } + + loop do + expandable = upcased_words.each_index.find { |i| chars_per_word[i] < upcased_words[i].length } + break unless expandable + + chars_per_word[expandable] += 1 + candidate = build_candidate(upcased_words, chars_per_word) + candidates << candidate unless candidates.include?(candidate) + break if candidate.length >= IDENTIFIER_LENGTH[:max] + end + end + + def build_candidate(upcased_words, chars_per_word) + parts = upcased_words.each_with_index.map { |w, i| w[0, chars_per_word[i]] } + parts.join[0, IDENTIFIER_LENGTH[:max]] + end + + # Strips leading digits so identifiers always start with a letter. + # For names like "3D Printing Lab", initials "3PL" become "PL". + # This is lossy but acceptable for auto-generated suggestions. + def ensure_starts_with_letter(candidate) + candidate.sub(/\A\d+/, "").presence + end + + # Iterates through expansion candidates, then falls back to numeric suffix. + # Candidates are already filtered to start with a letter and meet min length. + def find_unique(candidates, used_identifiers) + candidates.each do |candidate| + return candidate unless used_identifiers.include?(candidate) + end + + base = candidates.last || FALLBACK_IDENTIFIER + numeric_suffix_fallback(base, used_identifiers) + end + + def numeric_suffix_fallback(base, used_identifiers) + # Ensure the base itself starts with a letter before appending digits. + base = ensure_starts_with_letter(base) || FALLBACK_IDENTIFIER + + counter = 2 + loop do + raise "Could not find a unique identifier for base '#{base}' within #{SUFFIX_LIMIT} attempts" \ + if counter > SUFFIX_LIMIT + + suffix = counter.to_s + candidate = "#{base[0, IDENTIFIER_LENGTH[:max] - suffix.length]}#{suffix}" + return candidate unless used_identifiers.include?(candidate) + + counter += 1 + end + end + end + end +end diff --git a/app/services/project_identifiers/semantic_identifier_suggestion_generator.rb b/app/services/project_identifiers/semantic_identifier_suggestion_generator.rb deleted file mode 100644 index ef04ad92019..00000000000 --- a/app/services/project_identifiers/semantic_identifier_suggestion_generator.rb +++ /dev/null @@ -1,214 +0,0 @@ -# frozen_string_literal: true - -#-- copyright -# OpenProject is an open source project management software. -# Copyright (C) the OpenProject GmbH -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License version 3. -# -# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -# Copyright (C) 2006-2013 Jean-Philippe Lang -# Copyright (C) 2010-2013 the ChiliProject Team -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# See COPYRIGHT and LICENSE files for more details. -#++ - -module ProjectIdentifiers - # Generates a short uppercase semantic identifier for each project. - # - # Identifiers are 2–10 uppercase alphanumeric characters that always start - # with a letter. - # - # == Algorithm - # - # *Multi-word names* use word initials, truncated to +IDENTIFIER_LENGTH[:base]+ (5): - # "Flight Planning Algorithm" → "FPA" - # "A B C D E F G H I J K" → "ABCDE" - # - # *Single-word names* use the first +IDENTIFIER_LENGTH[:single_word]+ (3) characters: - # "Banana" → "BAN" - # - # *Accented characters* are transliterated ("Cécile" → "CEC"). - # *Non-Latin scripts* that have no transliteration fall back to "PROJ". - # - # == Collision resolution - # - # When a candidate is already taken, the identifier is progressively widened - # with more characters from the name, up to +IDENTIFIER_LENGTH[:max]+ (10): - # - # Multi-word: "SC" → "STC" → "STCO" → "STRCO" → … → "STREACOMMU" - # Single-word: "BAN" → "BANA" → "BANAN" → "BANANA" - # Initials: "ABCDE" → "ABCDEF" → … → "ABCDEFGHIJ" - # - # If all expansion candidates are exhausted, a numeric suffix is appended - # as a last resort ("GO" → "GO2"). - # - class SemanticIdentifierSuggestionGenerator - IDENTIFIER_LENGTH = { min: 2, max: 10, base: 5, single_word: 3 }.freeze - FALLBACK_IDENTIFIER = "PROJ" - SUFFIX_LIMIT = 10_000 - - def self.call(projects, exclude: Set.new) - new.call(projects, exclude:) - end - - # Returns a single suggested identifier string for the given project name. - # - def self.suggest_identifier(name, exclude: Set.new) - new.suggest_identifier(name, exclude:) - end - - def call(projects, exclude:) - generate_suggestions(projects, exclude:) - end - - def suggest_identifier(name, exclude: Set.new) - candidates = identifier_candidates(name) - find_unique(candidates, exclude) - end - - private - - def generate_suggestions(projects, exclude:) - excluded = exclude.dup - - projects.map do |project| - candidates = identifier_candidates(project.name) - identifier = find_unique(candidates, excluded) - excluded << identifier - - { - project:, - current_identifier: project.identifier, - suggested_identifier: identifier - } - end - end - - # Returns an ordered list of progressively longer identifier candidates - # derived from the project name. The first unique candidate wins. - def identifier_candidates(name) - words = transliterated_words(name) - return [FALLBACK_IDENTIFIER] if words.empty? - - candidates = words.size == 1 ? single_word_candidates(words.first) : multi_word_candidates(words) - candidates = candidates.filter_map do |c| - stripped = ensure_starts_with_letter(c) - stripped if stripped&.length.to_i >= IDENTIFIER_LENGTH[:min] - end - candidates.presence || [FALLBACK_IDENTIFIER] - end - - # Splits a name into words and transliterates each, returning only words - # that contain at least one ASCII-alphanumeric character. - def transliterated_words(name) - # Use POSIX [[:alpha:]] so accented letters (é, ñ, ü…) are kept inside - # their word rather than treated as separators by the ASCII-only [a-zA-Z]. - raw_words = name.to_s.scan(/[[:alpha:][:digit:]]+/) - raw_words.filter_map do |word| - t = I18n.with_locale(:en) { I18n.transliterate(word) } - clean = t.gsub(/[^A-Za-z0-9]/, "") - clean.presence - end - end - - # "Banana" → ["BAN", "BANA", "BANAN", "BANANA"] - def single_word_candidates(word) - chars = word.upcase - max_len = [chars.length, IDENTIFIER_LENGTH[:max]].min - return [] if max_len < IDENTIFIER_LENGTH[:min] - - start_len = IDENTIFIER_LENGTH[:single_word].clamp(IDENTIFIER_LENGTH[:min], max_len) - (start_len..max_len).map { chars[0, it] } - end - - # "Stream Communicator" → ["SC", "STC", "STCO", "STRCO", …] - # "A B C D E F G H I J K" → ["ABCDE", "ABCDEF", …, "ABCDEFGHIJ"] - # - # Starts with initials truncated to IDENTIFIER_LENGTH[:base], progressively - # includes more initials, then expands words beyond single chars. - def multi_word_candidates(words) - upcased_words = words.map(&:upcase) - candidates = initial_candidates(upcased_words) - - append_expansion_candidates!(candidates, upcased_words) if candidates.last.length < IDENTIFIER_LENGTH[:max] - candidates - end - - def initial_candidates(upcased_words) - initials = upcased_words.pluck(0).join[0, IDENTIFIER_LENGTH[:max]] - start = [IDENTIFIER_LENGTH[:base], initials.length].min - (start..initials.length).map { initials[0, it] } - end - - # Progressively pulls more characters from each word left-to-right. - def append_expansion_candidates!(candidates, upcased_words) - chars_per_word = upcased_words.map { 1 } - - loop do - expandable = upcased_words.each_index.find { |i| chars_per_word[i] < upcased_words[i].length } - break unless expandable - - chars_per_word[expandable] += 1 - candidate = build_candidate(upcased_words, chars_per_word) - candidates << candidate unless candidates.include?(candidate) - break if candidate.length >= IDENTIFIER_LENGTH[:max] - end - end - - def build_candidate(upcased_words, chars_per_word) - parts = upcased_words.each_with_index.map { |w, i| w[0, chars_per_word[i]] } - parts.join[0, IDENTIFIER_LENGTH[:max]] - end - - # Strips leading digits so identifiers always start with a letter. - # For names like "3D Printing Lab", initials "3PL" become "PL". - # This is lossy but acceptable for auto-generated suggestions. - def ensure_starts_with_letter(candidate) - candidate.sub(/\A\d+/, "").presence - end - - # Iterates through expansion candidates, then falls back to numeric suffix. - # Candidates are already filtered to start with a letter and meet min length. - def find_unique(candidates, used_identifiers) - candidates.each do |candidate| - return candidate unless used_identifiers.include?(candidate) - end - - base = candidates.last || FALLBACK_IDENTIFIER - numeric_suffix_fallback(base, used_identifiers) - end - - def numeric_suffix_fallback(base, used_identifiers) - # Ensure the base itself starts with a letter before appending digits. - base = ensure_starts_with_letter(base) || FALLBACK_IDENTIFIER - - counter = 2 - loop do - raise "Could not find a unique identifier for base '#{base}' within #{SUFFIX_LIMIT} attempts" \ - if counter > SUFFIX_LIMIT - - suffix = counter.to_s - candidate = "#{base[0, IDENTIFIER_LENGTH[:max] - suffix.length]}#{suffix}" - return candidate unless used_identifiers.include?(candidate) - - counter += 1 - end - end - end -end diff --git a/spec/services/project_identifiers/semantic_identifier_suggestion_generator_spec.rb b/spec/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator_spec.rb similarity index 99% rename from spec/services/project_identifiers/semantic_identifier_suggestion_generator_spec.rb rename to spec/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator_spec.rb index 1a9e3ddeab5..2905cc9cae2 100644 --- a/spec/services/project_identifiers/semantic_identifier_suggestion_generator_spec.rb +++ b/spec/services/project_identifiers/identifier_autofix/project_identifier_suggestion_generator_spec.rb @@ -30,7 +30,7 @@ require "rails_helper" -RSpec.describe ProjectIdentifiers::SemanticIdentifierSuggestionGenerator do +RSpec.describe ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator do describe ".call" do context "when given an empty array" do it "returns an empty array" do From f3110e816fb8dc8c9357f714c9d897612a048c1f Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Wed, 22 Apr 2026 00:31:11 +0200 Subject: [PATCH 045/280] revert even more --- .../convert_project_to_semantic_service.rb | 2 +- spec/models/projects/identifier_spec.rb | 6 +++--- .../convert_project_to_semantic_service_spec.rb | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/services/project_identifiers/convert_project_to_semantic_service.rb b/app/services/project_identifiers/convert_project_to_semantic_service.rb index add56f0875d..23170b66a2d 100644 --- a/app/services/project_identifiers/convert_project_to_semantic_service.rb +++ b/app/services/project_identifiers/convert_project_to_semantic_service.rb @@ -74,7 +74,7 @@ module ProjectIdentifiers # Re-instantiate inside the lock so the exclusion set reflects all # identifiers committed since this job started. detector = ProjectIdentifiers::IdentifierAutofix::ProblematicIdentifiers.new - generator = ProjectIdentifiers::SemanticIdentifierSuggestionGenerator + generator = ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator # Prefer restoring the project's last known semantic identifier (from # FriendlyId history) so that existing WP identifiers remain valid and diff --git a/spec/models/projects/identifier_spec.rb b/spec/models/projects/identifier_spec.rb index b9b3b0d277c..c6fb9455fed 100644 --- a/spec/models/projects/identifier_spec.rb +++ b/spec/models/projects/identifier_spec.rb @@ -194,11 +194,11 @@ RSpec.describe Projects::Identifier do describe ".suggest_identifier" do context "with semantic identifiers", with_settings: { work_packages_identifier: "semantic" } do - it "delegates to SemanticIdentifierSuggestionGenerator with an exclusion set" do - allow(ProjectIdentifiers::SemanticIdentifierSuggestionGenerator) + it "delegates to ProjectIdentifierSuggestionGenerator with an exclusion set" do + allow(ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator) .to receive(:suggest_identifier).and_return("MP") expect(Project.suggest_identifier("My Project")).to eq("MP") - expect(ProjectIdentifiers::SemanticIdentifierSuggestionGenerator) + expect(ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator) .to have_received(:suggest_identifier).with("My Project", exclude: a_kind_of(Set)) end end diff --git a/spec/services/project_identifiers/convert_project_to_semantic_service_spec.rb b/spec/services/project_identifiers/convert_project_to_semantic_service_spec.rb index a331ca2cfeb..6e237c64574 100644 --- a/spec/services/project_identifiers/convert_project_to_semantic_service_spec.rb +++ b/spec/services/project_identifiers/convert_project_to_semantic_service_spec.rb @@ -73,7 +73,7 @@ RSpec.describe ProjectIdentifiers::ConvertProjectToSemanticService, end before do - allow(ProjectIdentifiers::SemanticIdentifierSuggestionGenerator) + allow(ProjectIdentifiers::IdentifierAutofix::ProjectIdentifierSuggestionGenerator) .to receive(:suggest_identifier) .and_return(nil) end From 6f8d3e90cffd79997e1dbbc0cfd08fead77cf5fa Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Wed, 22 Apr 2026 00:51:46 +0200 Subject: [PATCH 046/280] bits of refactoring --- ...classic_identifier_suggestion_generator.rb | 11 +++++----- ...ic_identifier_suggestion_generator_spec.rb | 20 +------------------ 2 files changed, 6 insertions(+), 25 deletions(-) diff --git a/app/services/project_identifiers/classic_identifier_suggestion_generator.rb b/app/services/project_identifiers/classic_identifier_suggestion_generator.rb index ea3c915db0b..31ebd695cc0 100644 --- a/app/services/project_identifiers/classic_identifier_suggestion_generator.rb +++ b/app/services/project_identifiers/classic_identifier_suggestion_generator.rb @@ -32,8 +32,7 @@ module ProjectIdentifiers # Generates a unique classic-format (acts_as_url-style) identifier from a project name, # mirroring acts_as_url's own duplicate loop: appends -1, -2, … until a free slug is found. # - # Instantiate once to load the taken-identifier set from the DB, then call +restore_identifier+ - # and/or +suggest_identifier+ — both share the same snapshot so the DB is only hit once. + # Instantiate once to load the taken-identifier set from the DB, then call +suggest_identifier+. class ClassicIdentifierSuggestionGenerator FALLBACK_BASE = "project" @@ -41,13 +40,13 @@ module ProjectIdentifiers @exclude = taken_identifiers(project:) end - # Returns the most-recent classic-format slug from the project's FriendlyId history - # that is not currently taken, or nil if none exists. + # Returns the most-recent classic-format slug from the project's FriendlyId history, + # or nil if none exists. Availability is not checked — callers must handle conflicts. def restore_identifier(project) project.slugs .order(created_at: :desc) .pluck(:slug) - .find { |slug| Project.classic_identifier_format?(slug) && @exclude.exclude?(slug.downcase) } + .find { |slug| Project.classic_identifier_format?(slug) } end # Generates a unique classic-format identifier from +name+, mirroring acts_as_url's @@ -73,7 +72,7 @@ module ProjectIdentifiers end def fallback_base - "#{FALLBACK_BASE}-#{SecureRandom.alphanumeric(6).downcase}" + "#{FALLBACK_BASE}-#{SecureRandom.alphanumeric(5).downcase}" end def taken_identifiers(project: nil) diff --git a/spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb b/spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb index bcf2ebc5b78..efa9a94eace 100644 --- a/spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb +++ b/spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb @@ -61,7 +61,7 @@ RSpec.describe ProjectIdentifiers::ClassicIdentifierSuggestionGenerator do context "when the name produces a blank slug" do it "falls back to a randomised project-XXXXXX identifier" do - expect(described_class.new.suggest_identifier("!!!")).to match(/\Aproject-[a-z0-9]{6}\z/) + expect(described_class.new.suggest_identifier("!!!")).to match(/\Aproject-[a-z0-9]{5}\z/) end end end @@ -93,23 +93,5 @@ RSpec.describe ProjectIdentifiers::ClassicIdentifierSuggestionGenerator do expect(described_class.new(project:).restore_identifier(project)).to be_nil end - context "when the prior slug is taken by another project's history" do - before do - other = create(:project, identifier: "other-project") - FriendlyId::Slug.create!(slug: "old-classic", sluggable_type: "Project", sluggable_id: other.id) - end - - it "skips the taken slug and falls through to the next candidate" do - expect(generator.restore_identifier(project)).to eq("older-classic") - end - end - - context "when initialized without project:" do - subject(:generator) { described_class.new } - - it "includes the project's own historical slugs in the taken set, so restore returns nil" do - expect(generator.restore_identifier(project)).to be_nil - end - end end end From 9660cef669f75d5e008c3b471c8efc587895dc43 Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Wed, 22 Apr 2026 00:56:59 +0200 Subject: [PATCH 047/280] patch an empty line --- .../classic_identifier_suggestion_generator_spec.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb b/spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb index efa9a94eace..622b376226e 100644 --- a/spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb +++ b/spec/services/project_identifiers/classic_identifier_suggestion_generator_spec.rb @@ -92,6 +92,5 @@ RSpec.describe ProjectIdentifiers::ClassicIdentifierSuggestionGenerator do FriendlyId::Slug.create!(slug: "SEMANTIC1", sluggable_type: "Project", sluggable_id: project.id) expect(described_class.new(project:).restore_identifier(project)).to be_nil end - end end From 3e0f738c2c28c46b4e7c4978e526eacdd8903dc1 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 22 Apr 2026 08:18:54 +0300 Subject: [PATCH 048/280] Expose displayId on work package ancestor and children HAL links In semantic mode, the work package breadcrumb renders numeric IDs instead of the semantic identifier because ancestor HAL resources are built from `_links.ancestors[]` entries that only carry `href` and `title`. With no top-level `displayId` in `$source`, the frontend getter falls through to the numeric id parsed from the href. Emit `displayId` alongside `href`/`title` on each ancestor and child link in the representer, and have the `displayId` getter fall back to the self link's `displayId` so resources built from a link payload alone still surface the semantic identifier. --- .../resources/work-package-resource.spec.ts | 19 +++++++++++++++++++ .../hal/resources/work-package-resource.ts | 13 ++++++++++--- .../work_packages/work_package_representer.rb | 6 ++++-- .../work_package_representer_spec.rb | 10 ++++++++++ 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/frontend/src/app/features/hal/resources/work-package-resource.spec.ts b/frontend/src/app/features/hal/resources/work-package-resource.spec.ts index aa47c69715e..d26ec87e685 100644 --- a/frontend/src/app/features/hal/resources/work-package-resource.spec.ts +++ b/frontend/src/app/features/hal/resources/work-package-resource.spec.ts @@ -141,6 +141,25 @@ describe('WorkPackage', () => { }); }); + describe('when displayId is absent but present on the self link (linked ancestor/child)', () => { + beforeEach(() => { + source = { + _links: { + self: { + href: '/api/v3/work_packages/11099', + title: 'subj child', + displayId: 'ACSMT-15', + }, + }, + }; + createWorkPackage(); + }); + + it('should fall back to the semantic identifier on the self link', () => { + expect(workPackage.displayId).toEqual('ACSMT-15'); + }); + }); + }); describe('formattedId', () => { diff --git a/frontend/src/app/features/hal/resources/work-package-resource.ts b/frontend/src/app/features/hal/resources/work-package-resource.ts index e8faf6fa1bb..681189d29fa 100644 --- a/frontend/src/app/features/hal/resources/work-package-resource.ts +++ b/frontend/src/app/features/hal/resources/work-package-resource.ts @@ -137,11 +137,18 @@ export class WorkPackageBaseResource extends HalResource { * (primary key) should only appear in data attributes and internal * state management (selection, focus, hover). * - * Falls back to `id` when `displayId` is absent from the API response - * (defensive against stale cache during rolling deploys). + * Falls back to the self link's `displayId` — ancestor/children links + * in the API expose `displayId` alongside `href`/`title` because those + * HAL resources are built from a link payload alone, without a + * top-level `displayId`. Finally falls back to `id` (defensive against + * stale cache during rolling deploys, and for resources built from + * bare hrefs). */ public get displayId():string { - return this.$source.displayId?.toString() ?? this.id?.toString() ?? ''; + return this.$source.displayId?.toString() + ?? this.$source._links?.self?.displayId?.toString() + ?? this.id?.toString() + ?? ''; } /** diff --git a/lib/api/v3/work_packages/work_package_representer.rb b/lib/api/v3/work_packages/work_package_representer.rb index 907ef4769c3..e97859b7010 100644 --- a/lib/api/v3/work_packages/work_package_representer.rb +++ b/lib/api/v3/work_packages/work_package_representer.rb @@ -327,7 +327,8 @@ module API visible_children.map do |child| { href: api_v3_paths.work_package(child.id), - title: child.subject + title: child.subject, + displayId: child.display_id.to_s } end end @@ -337,7 +338,8 @@ module API represented.visible_ancestors(current_user).map do |ancestor| { href: api_v3_paths.work_package(ancestor.id), - title: ancestor.subject + title: ancestor.subject, + displayId: ancestor.display_id.to_s } end end diff --git a/spec/lib/api/v3/work_packages/work_package_representer_spec.rb b/spec/lib/api/v3/work_packages/work_package_representer_spec.rb index 3cf332b8a4b..31eeff865f3 100644 --- a/spec/lib/api/v3/work_packages/work_package_representer_spec.rb +++ b/spec/lib/api/v3/work_packages/work_package_representer_spec.rb @@ -1121,6 +1121,12 @@ RSpec.describe API::V3::WorkPackages::WorkPackageRepresenter do .to eq(intermediate.subject) expect(work_package).to have_received(:visible_ancestors) end + + it "exposes displayId on each ancestor link" do + links = parse_json(subject)["_links"]["ancestors"] + expect(links[0]["displayId"]).to eq(root.display_id.to_s) + expect(links[1]["displayId"]).to eq(intermediate.display_id.to_s) + end end context "when ancestors are invisible" do @@ -1159,6 +1165,10 @@ RSpec.describe API::V3::WorkPackages::WorkPackageRepresenter do it do expect(parse_json(subject)["_links"]["children"][0]["title"]).to eq(child.subject) end + + it "exposes displayId on each child link" do + expect(parse_json(subject)["_links"]["children"][0]["displayId"]).to eq(child.display_id.to_s) + end end end end From b8471484e0c8bc90bc846d60eb2eb7599496018e Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 22 Apr 2026 08:50:32 +0300 Subject: [PATCH 049/280] Include identifier in Hierarchy eager loader's children SELECT The ancestors/children representer change calls `child.display_id`, which consults `identifier` in semantic mode. The Hierarchy eager loader preloads children with a minimal `SELECT id, subject, project_id, parent_id` for performance, so `identifier` was missing and `ActiveModel::MissingAttributeError` fired the moment a query endpoint rendered a work package with visible children in semantic mode. Add `identifier` to the SELECT. It's one extra short text column per child row. --- .../work_packages/eager_loading/hierarchy.rb | 2 +- .../hierarchy_integration_spec.rb | 62 +++++++++++++++++++ 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 spec/lib/api/v3/work_packages/eager_loading/hierarchy_integration_spec.rb diff --git a/lib/api/v3/work_packages/eager_loading/hierarchy.rb b/lib/api/v3/work_packages/eager_loading/hierarchy.rb index f10b2ad4677..408a076e975 100644 --- a/lib/api/v3/work_packages/eager_loading/hierarchy.rb +++ b/lib/api/v3/work_packages/eager_loading/hierarchy.rb @@ -41,7 +41,7 @@ module API def children(id) @children ||= WorkPackage .where(parent_id: work_packages.map(&:id)) - .select(:id, :subject, :project_id, :parent_id) + .select(:id, :identifier, :subject, :project_id, :parent_id) .group_by(&:parent_id) .to_h diff --git a/spec/lib/api/v3/work_packages/eager_loading/hierarchy_integration_spec.rb b/spec/lib/api/v3/work_packages/eager_loading/hierarchy_integration_spec.rb new file mode 100644 index 00000000000..93e836a262d --- /dev/null +++ b/spec/lib/api/v3/work_packages/eager_loading/hierarchy_integration_spec.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" +require_relative "eager_loading_mock_wrapper" + +RSpec.describe API::V3::WorkPackages::EagerLoading::Hierarchy do + let!(:parent_work_package) { create(:work_package) } + let!(:child_work_package) { create(:work_package, parent: parent_work_package) } + + describe ".apply" do + subject(:wrapped_children) do + wrapped = EagerLoadingMockWrapper.wrap(described_class, [parent_work_package]) + wrapped.first.children + end + + it "preloads the children association" do + wrapped = EagerLoadingMockWrapper.wrap(described_class, [parent_work_package]) + + expect(wrapped.first.association(:children)).to be_loaded + expect(wrapped_children.map(&:id)).to eq([child_work_package.id]) + end + + # Regression: children are loaded with a partial SELECT for performance, + # so the set of columns must cover everything the representer reads from + # each child — including `identifier`, which `display_id` consults to + # render the `_links.children[].displayId` payload in semantic mode. + it "includes identifier in the partial SELECT so display_id is available" do + child = wrapped_children.first + + expect(child).to have_attribute(:identifier) + expect { child.display_id }.not_to raise_error + end + end +end From 1d05b923039831ad19a67de30f09a98110522c92 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 22 Apr 2026 08:57:01 +0300 Subject: [PATCH 050/280] Preserve displayId through HalLink MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `setupLinks()` feeds every `_links.*` entry through `HalLink.fromObject`, and `setLinksAsProperties()` then passes `item.$link` to `createLinkedResource`, which becomes the ancestor HAL resource's `$source._links.self`. Any field not listed in HalLink's constructor gets dropped on the way — so the representer's new `displayId` payload never reached the `displayId` getter, and the breadcrumb's ancestor href stayed numeric. Add `displayId` to the HalLink interface, constructor, `fromObject`, `$prepare`, and `$callable` so it survives the full pipeline. Spec mirrors the real path: parent source with `_links.ancestors[]` → resolved ancestor resource reports the semantic displayId. --- .../src/app/features/hal/hal-link/hal-link.ts | 7 ++++- .../resources/work-package-resource.spec.ts | 27 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/features/hal/hal-link/hal-link.ts b/frontend/src/app/features/hal/hal-link/hal-link.ts index 8cd477a3f49..7a336ad204f 100644 --- a/frontend/src/app/features/hal/hal-link/hal-link.ts +++ b/frontend/src/app/features/hal/hal-link/hal-link.ts @@ -42,6 +42,7 @@ export interface HalLinkInterface { payload?:any; type?:string; identifier?:string; + displayId?:string; } export interface HalLinkSource { @@ -62,7 +63,8 @@ export class HalLink implements HalLinkInterface { public templated = false, public payload?:any, public type = 'application/json', - public identifier?:string) { + public identifier?:string, + public displayId?:string) { } /** @@ -78,6 +80,7 @@ export class HalLink implements HalLinkInterface { link.payload, link.type, link.identifier, + link.displayId, ); } @@ -114,6 +117,7 @@ export class HalLink implements HalLinkInterface { this.payload, this.type, this.identifier, + this.displayId, ).$callable(); } @@ -134,6 +138,7 @@ export class HalLink implements HalLinkInterface { payload: this.payload, type: this.type, identifier: this.identifier, + displayId: this.displayId, }); return linkFunc; diff --git a/frontend/src/app/features/hal/resources/work-package-resource.spec.ts b/frontend/src/app/features/hal/resources/work-package-resource.spec.ts index d26ec87e685..176764807a3 100644 --- a/frontend/src/app/features/hal/resources/work-package-resource.spec.ts +++ b/frontend/src/app/features/hal/resources/work-package-resource.spec.ts @@ -160,6 +160,33 @@ describe('WorkPackage', () => { }); }); + describe('when built from a parent work package _links.ancestors array', () => { + // Mirrors the real HAL pipeline: the parent exposes an ancestors link + // array; each entry carries displayId alongside href/title; the builder + // creates an ancestor WorkPackageResource through HalLink, which must + // preserve displayId end-to-end. + beforeEach(() => { + source = { + _links: { + self: { href: '/api/v3/work_packages/42' }, + ancestors: [ + { + href: '/api/v3/work_packages/11099', + title: 'subj child', + displayId: 'ACSMT-15', + }, + ], + }, + }; + createWorkPackage(); + }); + + it('surfaces the semantic displayId on each ancestor resource', () => { + const ancestor = (workPackage as any).ancestors[0] as WorkPackageResource; + expect(ancestor.displayId).toEqual('ACSMT-15'); + }); + }); + }); describe('formattedId', () => { From 5970c57ac789c875e261802a0d5e771c2952ad0b Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Wed, 22 Apr 2026 10:53:00 +0200 Subject: [PATCH 051/280] fix: Remove flakiness for an admin department test --- spec/support/pages/admin/departments.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/support/pages/admin/departments.rb b/spec/support/pages/admin/departments.rb index 0a9ac6582c7..5ee4d068c79 100644 --- a/spec/support/pages/admin/departments.rb +++ b/spec/support/pages/admin/departments.rb @@ -84,8 +84,8 @@ module Pages def expect_breadcrumbs(*names) within_detail_component do - breadcrumb_items = page.all("li.breadcrumb-item") - actual = breadcrumb_items.map(&:text) + expect(page).to have_css("li.breadcrumb-item", text: names.last) + actual = page.all("li.breadcrumb-item").map(&:text) expect(actual).to eq(names) end end From 54627f299b283f77406f643ff7817c38c4ada292 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 22 Apr 2026 12:26:53 +0300 Subject: [PATCH 052/280] Register WorkPackage attrTypes in HAL resource spec setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The spec's TestBed-scoped `registerResource('WorkPackage', …)` call overrode the default config from `OpenprojectHalModule`, stripping the `attrTypes` mapping (`parent`/`ancestors`/`children` → `WorkPackage`). With no mapping, `createLinkedResource` fell back to a bare `HalResource`, which has no `displayId` getter, so the ancestor-pipeline assertion saw `undefined` even though the HalLink carried the semantic identifier through the HAL pipeline correctly. Restoring the mapping makes ancestor resources resolve as `WorkPackageResource`, which is what production traffic gets. --- .../features/hal/resources/work-package-resource.spec.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/features/hal/resources/work-package-resource.spec.ts b/frontend/src/app/features/hal/resources/work-package-resource.spec.ts index 176764807a3..38bd71dfbef 100644 --- a/frontend/src/app/features/hal/resources/work-package-resource.spec.ts +++ b/frontend/src/app/features/hal/resources/work-package-resource.spec.ts @@ -95,7 +95,14 @@ describe('WorkPackage', () => { injector = TestBed.inject(Injector); halResourceNotification = injector.get(HalResourceNotificationService); - halResourceService.registerResource('WorkPackage', { cls: WorkPackageResource }); + halResourceService.registerResource('WorkPackage', { + cls: WorkPackageResource, + attrTypes: { + parent: 'WorkPackage', + ancestors: 'WorkPackage', + children: 'WorkPackage', + }, + }); }); describe('when creating an empty work package', () => { From 95d9fc82273d8b227187977b7b6547a77d5b30af Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Wed, 22 Apr 2026 12:22:17 +0200 Subject: [PATCH 053/280] fix: Remove flakiness for a project creation spec --- spec/features/projects/create_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/projects/create_spec.rb b/spec/features/projects/create_spec.rb index 8ec645533f4..ec94eba9337 100644 --- a/spec/features/projects/create_spec.rb +++ b/spec/features/projects/create_spec.rb @@ -428,7 +428,7 @@ RSpec.describe "Projects", "creation", it "enables custom fields with default values if not set to blank explicitly" do # don't touch the default value - click_on "Complete" + wait_for_turbo { click_on "Complete" } expect_and_dismiss_flash type: :success, message: "Successful creation." From 8ca79798dbae4b0666726b80c184bf6cf92bfe24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Wed, 22 Apr 2026 14:04:40 +0200 Subject: [PATCH 054/280] Validate conditions on execution of custom action https://community.openproject.org/projects/openproject/work_packages/74294/activity --- .../custom_actions/execute_contract.rb | 13 ++++++++++++ .../v3/custom_actions/custom_actions_api.rb | 3 ++- .../custom_actions/custom_actions_api_spec.rb | 21 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/app/contracts/custom_actions/execute_contract.rb b/app/contracts/custom_actions/execute_contract.rb index ea0d2b76ac7..8f327dd7806 100644 --- a/app/contracts/custom_actions/execute_contract.rb +++ b/app/contracts/custom_actions/execute_contract.rb @@ -35,6 +35,7 @@ module CustomActions validates :work_package_id, presence: true validate :work_package_visible + validate :custom_action_conditions_fulfilled private @@ -45,5 +46,17 @@ module CustomActions errors.add(:work_package_id, :does_not_exist) end end + + def custom_action_conditions_fulfilled + return unless model.work_package_id + return unless options[:custom_action] + + work_package = WorkPackage.visible(user).find_by(id: model.work_package_id) + return unless work_package + + unless options[:custom_action].conditions_fulfilled?(work_package, user) + errors.add(:base, :error_unauthorized) + end + end end end diff --git a/lib/api/v3/custom_actions/custom_actions_api.rb b/lib/api/v3/custom_actions/custom_actions_api.rb index f1b8a998e3e..9bcb30992ef 100644 --- a/lib/api/v3/custom_actions/custom_actions_api.rb +++ b/lib/api/v3/custom_actions/custom_actions_api.rb @@ -63,7 +63,8 @@ module API end after_validation do - contract = ::CustomActions::ExecuteContract.new(parsed_params, current_user) + contract = ::CustomActions::ExecuteContract.new(parsed_params, current_user, + options: { custom_action: }) unless contract.valid? fail ::API::Errors::ErrorBase.create_and_merge_errors(contract.errors) diff --git a/spec/requests/api/v3/custom_actions/custom_actions_api_spec.rb b/spec/requests/api/v3/custom_actions/custom_actions_api_spec.rb index 4f90ea0d8cf..985a434d113 100644 --- a/spec/requests/api/v3/custom_actions/custom_actions_api_spec.rb +++ b/spec/requests/api/v3/custom_actions/custom_actions_api_spec.rb @@ -208,5 +208,26 @@ RSpec.describe "API::V3::CustomActions::CustomActionsAPI" do .to be 422 end end + + context "when conditions are not fulfilled for the user" do + let(:admin_role) { create(:project_role) } + let(:action) do + create(:custom_action, + actions: [CustomActions::Actions::AssignedTo.new(nil)], + conditions: [CustomActions::Conditions::Role.new(admin_role.id)]) + end + + include_context "post request" + + it "returns a 403 error" do + expect(last_response.status) + .to be 403 + end + + it "does not modify the work package" do + expect { work_package.reload } + .not_to change(work_package, :assigned_to_id) + end + end end end From 26bd76a9b817c1e28487f2932bc6d2f7b84be3d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Wed, 22 Apr 2026 15:03:08 +0200 Subject: [PATCH 055/280] Try to fix modules/my_page/spec/features/my/work_package_table_spec.rb --- .../spec/features/my/work_package_table_spec.rb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/my_page/spec/features/my/work_package_table_spec.rb b/modules/my_page/spec/features/my/work_package_table_spec.rb index 1791c5f7c69..843b914ad32 100644 --- a/modules/my_page/spec/features/my/work_package_table_spec.rb +++ b/modules/my_page/spec/features/my/work_package_table_spec.rb @@ -177,13 +177,16 @@ RSpec.describe "Arbitrary WorkPackage query table widget on my page", expect(filter_area.area) .to have_css(".id", text: type_work_package.id) + # As other_type is filtered out — check this before the subject column check + # so that Capybara waits here until the saved type filter is actually applied. + # Without this ordering, have_no_css(".subject") can run while the widget is + # still in its initial unfiltered state and fail. + expect(filter_area.area) + .to have_no_css(".id", text: other_type_work_package.id) + # as the Subject column is disabled expect(filter_area.area) .to have_no_css(".subject", text: type_work_package.subject) - - # As other_type is filtered out - expect(filter_area.area) - .to have_no_css(".id", text: other_type_work_package.id) end end end From d3eae3a0fe20b08e44d4abf3ee3cb2c73271d2bf Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 22 Apr 2026 17:24:30 +0300 Subject: [PATCH 056/280] Simplify routing-id plumbing and drop dead link field MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Review feedback on PR #22733: - `WorkPackageStateLinksHandler` no longer reads `data-routing-id` from the clicked element; the click handler calls `preventDefault()` and the routing id is never needed there. Consumers of `stateLinkClicked` already resolve the routing id themselves via `resolveRoutingId`, so the handler emits only `{ workPackageId, requestedState }` now. - `UiStateLinkBuilder` stops writing the `data-routing-id` attribute — the anchor's `href` still carries the semantic id, which is the only thing that matters for open-in-new-tab and middle-click. With no consumer, the data attribute was dead. - `stateLinkClicked` EventEmitter signatures across `wp-table`, `wp-card-view`, `wp-single-card`, `wp-grid`, and the event-handler registry drop the optional `routingId?`. `wp-list-view.openStateLink` now calls `resolveRoutingId` unconditionally, removing the `event .routingId ??` fallback. - `WorkPackageQuickinfoMacroComponent` removes the unused `workPackageLink` field. The template already constructs the href inline via `pathHelper.workPackagePath(workPackage.displayId)`, so the component member (initialised with the numeric id) was dead code. --- .../components/wp-card-view/wp-card-view.component.ts | 2 +- .../wp-card-view/wp-single-card/wp-single-card.component.ts | 2 +- .../wp-fast-table/builders/ui-state-link-builder.ts | 1 - .../wp-fast-table/handlers/row/wp-state-links-handler.ts | 3 +-- .../work-packages/components/wp-grid/wp-grid.component.ts | 2 +- .../work-packages/components/wp-table/wp-table.component.ts | 2 +- .../routing/wp-list-view/wp-list-view.component.ts | 4 ++-- .../wp-view-base/event-handling/event-handler-registry.ts | 2 +- .../fields/macros/work-package-quickinfo-macro.component.ts | 3 --- 9 files changed, 8 insertions(+), 13 deletions(-) diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-card-view.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-card-view.component.ts index e421b9d2613..9cf71531f98 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-card-view.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-card-view.component.ts @@ -87,7 +87,7 @@ export class WorkPackageCardViewComponent extends UntilDestroyedMixin implements @Output() itemClicked = new EventEmitter<{ workPackageId:string, double:boolean }>(); - @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, routingId?:string, requestedState:string }>(); + @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>(); public trackByHref = trackByHrefAndProperty('lockVersion'); diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index c8b4c4cf72f..219ec4792fc 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -87,7 +87,7 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen @Output() onRemove = new EventEmitter(); - @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, routingId?:string, requestedState:string }>(); + @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>(); @Output() cardClicked = new EventEmitter<{ workPackageId:string, event:MouseEvent }>(); diff --git a/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts b/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts index e281d5be829..ba871fe2603 100644 --- a/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts +++ b/frontend/src/app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder.ts @@ -58,7 +58,6 @@ export class UiStateLinkBuilder { a.href = href; a.classList.add(uiStateLinkClass); a.dataset.workPackageId = workPackageId; - a.dataset.routingId = idForHref; a.dataset.wpState = state; a.setAttribute('title', title); diff --git a/frontend/src/app/features/work-packages/components/wp-fast-table/handlers/row/wp-state-links-handler.ts b/frontend/src/app/features/work-packages/components/wp-fast-table/handlers/row/wp-state-links-handler.ts index 3880f3b8fe5..0dfd3be4e70 100644 --- a/frontend/src/app/features/work-packages/components/wp-fast-table/handlers/row/wp-state-links-handler.ts +++ b/frontend/src/app/features/work-packages/components/wp-fast-table/handlers/row/wp-state-links-handler.ts @@ -53,7 +53,6 @@ export class WorkPackageStateLinksHandler implements TableEventHandler { const element = target.closest(this.SELECTOR) as HTMLElement; const state = element.dataset.wpState; const workPackageId = element.dataset.workPackageId; - const routingId = element.dataset.routingId ?? workPackageId; // Normal link processing if there are no state and work package information if (!state || !workPackageId) { @@ -74,7 +73,7 @@ export class WorkPackageStateLinksHandler implements TableEventHandler { // Update single selection if no modifier present this.wpTableSelection.setSelection(workPackageId, index); - view.stateLinkClicked.emit({ workPackageId, routingId, requestedState: state }); + view.stateLinkClicked.emit({ workPackageId, requestedState: state }); evt.preventDefault(); return false; diff --git a/frontend/src/app/features/work-packages/components/wp-grid/wp-grid.component.ts b/frontend/src/app/features/work-packages/components/wp-grid/wp-grid.component.ts index 6b08f133035..635b6060a39 100644 --- a/frontend/src/app/features/work-packages/components/wp-grid/wp-grid.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-grid/wp-grid.component.ts @@ -86,7 +86,7 @@ export class WorkPackagesGridComponent implements WorkPackageViewOutputs, OnInit @Output() itemClicked = new EventEmitter<{ workPackageId:string, double:boolean }>(); - @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, routingId?:string, requestedState:string }>(); + @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>(); public canDragOutOf:() => boolean; diff --git a/frontend/src/app/features/work-packages/components/wp-table/wp-table.component.ts b/frontend/src/app/features/work-packages/components/wp-table/wp-table.component.ts index 9b23a11dcdb..311f9a11443 100644 --- a/frontend/src/app/features/work-packages/components/wp-table/wp-table.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-table/wp-table.component.ts @@ -90,7 +90,7 @@ export class WorkPackagesTableComponent extends UntilDestroyedMixin implements O @Output() itemClicked = new EventEmitter<{ workPackageId:string, double:boolean }>(); - @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, routingId?:string, requestedState:string }>(); + @Output() stateLinkClicked = new EventEmitter<{ workPackageId:string, requestedState:string }>(); public configuration:WorkPackageTableConfiguration; diff --git a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts index 956b52d2e6d..ddd4008078f 100644 --- a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts +++ b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts @@ -180,8 +180,8 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements } } - openStateLink(event:{ workPackageId:string; routingId?:string; requestedState:'show'|'split' }) { - const routingId = event.routingId ?? this.resolveRoutingId(event.workPackageId); + openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) { + const routingId = this.resolveRoutingId(event.workPackageId); const params = { workPackageId: routingId, focus: true, diff --git a/frontend/src/app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry.ts b/frontend/src/app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry.ts index cafc19dc691..636571d2d30 100644 --- a/frontend/src/app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry.ts +++ b/frontend/src/app/features/work-packages/routing/wp-view-base/event-handling/event-handler-registry.ts @@ -23,7 +23,7 @@ export interface WorkPackageViewOutputs { // On row (double) clicked itemClicked:EventEmitter<{ workPackageId:string, double:boolean }>; // On work package link / details icon clicked - stateLinkClicked:EventEmitter<{ workPackageId:string, routingId?:string, requestedState:string }>; + stateLinkClicked:EventEmitter<{ workPackageId:string, requestedState:string }>; } export const WorkPackageViewHandlerToken = new InjectionToken>('CardEventHandler'); diff --git a/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.component.ts b/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.component.ts index e2d1d3cfc39..e2d605349d8 100644 --- a/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.component.ts +++ b/frontend/src/app/shared/components/fields/macros/work-package-quickinfo-macro.component.ts @@ -74,8 +74,6 @@ export class WorkPackageQuickinfoMacroComponent implements OnInit { combinedDateDisplayField = CombinedDateDisplayField; - workPackageLink:string; - workPackageHoverCardUrl:string; detailed = false; @@ -95,7 +93,6 @@ export class WorkPackageQuickinfoMacroComponent implements OnInit { const element = this.elementRef.nativeElement as HTMLElement; const id:string = element.dataset.id!; this.detailed = element.dataset.detailed === 'true'; - this.workPackageLink = this.pathHelper.workPackagePath(id); this.workPackageHoverCardUrl = this.pathHelper.workPackageHoverCardPath(id); this.workPackage$ = this From 3d463e484280f183dc6ba77e1f03feccc2722fa4 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 22 Apr 2026 17:56:13 +0300 Subject: [PATCH 057/280] Use inject() for newly added States fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewdog flagged the new `states:States` constructor params I added in this PR (for `resolveRoutingId` / `states.workPackages` lookups) under `@angular-eslint/prefer-inject`. Only the lines I actually introduced are touched — existing constructor params stay parameter-injected since reviewdog filters to diff lines and the surrounding constructors are pre-existing style. Files: - `board-list.component.ts` — new `states` field - `board-list-container.component.ts` — new `wpStates` field - `op-work-packages-calendar.service.ts` — new `states` field - `work-package.service.ts` — new `states` field (constructor now matches the `origin/dev` signature exactly, so reviewdog won't flag any of the constructor lines anymore) --- .../boards/board/board-list/board-list.component.ts | 4 +++- .../board-list-container.component.ts | 4 +++- .../features/calendar/op-work-packages-calendar.service.ts | 5 +++-- .../work-packages/services/work-package.service.ts | 7 ++++--- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/frontend/src/app/features/boards/board/board-list/board-list.component.ts b/frontend/src/app/features/boards/board/board-list/board-list.component.ts index 535899192a0..92fe114034a 100644 --- a/frontend/src/app/features/boards/board/board-list/board-list.component.ts +++ b/frontend/src/app/features/boards/board/board-list/board-list.component.ts @@ -4,6 +4,7 @@ import { Component, ElementRef, EventEmitter, + inject, Injector, Input, OnDestroy, @@ -150,6 +151,8 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni public buttonPlaceholder:DisabledButtonPlaceholder|undefined; + private readonly states = inject(States); + constructor( readonly apiv3Service:ApiV3Service, readonly I18n:I18nService, @@ -177,7 +180,6 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni readonly keepTab:KeepTabService, readonly currentProject:CurrentProjectService, readonly pathHelper:PathHelperService, - readonly states:States, ) { super(I18n, injector); } diff --git a/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts b/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts index 10b5787e23b..66c0be4a2c7 100644 --- a/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts +++ b/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts @@ -2,6 +2,7 @@ import { ChangeDetectionStrategy, Component, ElementRef, + inject, Input, Injector, OnInit, @@ -93,6 +94,8 @@ export class BoardListContainerComponent extends UntilDestroyedMixin implements private currentQueryUpdatedMonitoring:Subscription; + private readonly wpStates = inject(States); + constructor( readonly I18n:I18nService, readonly state:StateService, @@ -111,7 +114,6 @@ export class BoardListContainerComponent extends UntilDestroyedMixin implements readonly QueryUpdated:QueryUpdatedService, readonly pathHelper:PathHelperService, readonly currentProject:CurrentProjectService, - readonly wpStates:States, ) { super(); } diff --git a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts index 8717cbde823..de00e95a3f4 100644 --- a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts @@ -1,4 +1,4 @@ -import { Injectable, Injector } from '@angular/core'; +import { inject, Injectable, Injector } from '@angular/core'; import { CalendarOptions, DatesSetArg, @@ -91,6 +91,8 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { take(1), ); + private readonly states = inject(States); + constructor( private I18n:I18nService, private configuration:ConfigurationService, @@ -114,7 +116,6 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { readonly calendarService:OpCalendarService, readonly weekdayService:WeekdayService, readonly dayService:DayResourceService, - readonly states:States, ) { super(); } diff --git a/frontend/src/app/features/work-packages/services/work-package.service.ts b/frontend/src/app/features/work-packages/services/work-package.service.ts index 5010a044843..8f0edab2a45 100644 --- a/frontend/src/app/features/work-packages/services/work-package.service.ts +++ b/frontend/src/app/features/work-packages/services/work-package.service.ts @@ -27,7 +27,7 @@ //++ import { StateService } from '@uirouter/core'; -import { Injectable } from '@angular/core'; +import { inject, Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; import { UrlParamsHelperService } from 'core-app/features/work-packages/components/wp-query/url-params-helper'; @@ -42,14 +42,15 @@ export class WorkPackageService { successful_delete: this.I18n.t('js.work_packages.message_successful_bulk_delete'), }; + private readonly states = inject(States); + constructor(private readonly http:HttpClient, private readonly $state:StateService, private readonly PathHelper:PathHelperService, private readonly UrlParamsHelper:UrlParamsHelperService, private readonly toastService:ToastService, private readonly I18n:I18nService, - private readonly halEvents:HalEventsService, - private readonly states:States) { + private readonly halEvents:HalEventsService) { } public performBulkDelete(ids:string[], defaultHandling:boolean) { From f1f421368d70bb5b183e1191f772e0444b2c6723 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Wed, 22 Apr 2026 22:10:54 +0300 Subject: [PATCH 058/280] Extract work package id resolvers and remove wrapper duplication MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Centralises numeric-PK ↔ semantic-displayId conversion helpers in a single module, removing four identical `resolveRoutingId` wrapper methods that each component was defining. The wrappers shadowed the imported helper — same name, different call shape — which made every call site ambiguous to read. - Renamed `helpers/resolve-routing-id.ts` → `helpers/work-package-id-resolvers.ts` now that the file holds both directions; the old name only described one of them. - Added `resolveWorkPackagePk(states, routeParam): string | null`, the inverse of `resolveRoutingId`. Returns `null` on cache miss rather than falling back to the input: the forward helper's "fallback to input" is safe because a numeric URL still works, but an unresolved PK would silently corrupt cache lookups and `ids.includes()` checks. Callers must handle the miss explicitly. - `work-package.service.ts` bulk-delete handler now uses the new helper and gates on `numericId &&`, which also papers over a latent bug: the WP cache is keyed only by numeric PK, so a semantic route param (`"PROJ-7"`) reliably missed the cache and fell through to `ids.includes("PROJ-7")` which always returned false in semantic mode. - Deleted the `private resolveRoutingId` wrapper on four classes (`op-work-packages-calendar.service`, `board-list.component`, `wp-embedded-table.component`, `wp-list-view.component`) plus the inherited reference in `bcf-list.component`. Call sites now invoke the shared helper directly: `resolveRoutingId(this.states, x)`. Matches what `board-list-container.component` already did. --- .../ifc_models/bcf/list/bcf-list.component.ts | 3 +- .../board/board-list/board-list.component.ts | 10 ++---- .../board-list-container.component.ts | 2 +- .../op-work-packages-calendar.service.ts | 10 ++---- .../embedded/wp-embedded-table.component.ts | 10 ++---- .../helpers/resolve-routing-id.ts | 16 --------- .../helpers/work-package-id-resolvers.ts | 36 +++++++++++++++++++ .../wp-list-view/wp-list-view.component.ts | 10 ++---- .../services/work-package.service.ts | 7 ++-- 9 files changed, 55 insertions(+), 49 deletions(-) delete mode 100644 frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts create mode 100644 frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts diff --git a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts index 50e5352908f..b017ece49e8 100644 --- a/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts +++ b/frontend/src/app/features/bim/ifc_models/bcf/list/bcf-list.component.ts @@ -38,6 +38,7 @@ import { BcfApiService } from 'core-app/features/bim/bcf/api/bcf-api.service'; import { QueryResource } from 'core-app/features/hal/resources/query-resource'; import { BcfViewService } from 'core-app/features/bim/ifc_models/pages/viewer/bcf-view.service'; import { splitViewRoute } from 'core-app/features/work-packages/routing/split-view-routes.helper'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/work-package-id-resolvers'; import { ViewerBridgeService } from 'core-app/features/bim/bcf/bcf-viewer-bridge/viewer-bridge.service'; import { CausedUpdatesService } from 'core-app/features/boards/board/caused-updates/caused-updates.service'; import { IfcModelsDataService } from 'core-app/features/bim/ifc_models/pages/viewer/ifc-models-data.service'; @@ -129,7 +130,7 @@ export class BcfListComponent extends WorkPackageListViewComponent implements Un : 'bim.partitioned.show'; // Passing the card param to the new state because the router doesn't keep // it when going to 'bim.partitioned.show' - const routingId = this.resolveRoutingId(workPackageId); + const routingId = resolveRoutingId(this.states, workPackageId); const params = { workPackageId: routingId, cards, focus }; void this.$state.go(stateToGo, params); diff --git a/frontend/src/app/features/boards/board/board-list/board-list.component.ts b/frontend/src/app/features/boards/board/board-list/board-list.component.ts index 92fe114034a..cf85cae64e2 100644 --- a/frontend/src/app/features/boards/board/board-list/board-list.component.ts +++ b/frontend/src/app/features/boards/board/board-list/board-list.component.ts @@ -28,7 +28,7 @@ import { Highlighting } from 'core-app/features/work-packages/components/wp-fast import { WorkPackageCardViewComponent } from 'core-app/features/work-packages/components/wp-card-view/wp-card-view.component'; import { WorkPackageStatesInitializationService } from 'core-app/features/work-packages/components/wp-list/wp-states-initialization.service'; import { States } from 'core-app/core/states/states.service'; -import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/work-package-id-resolvers'; import { BoardService } from 'core-app/features/boards/board/board.service'; import { HalResourceEditingService } from 'core-app/shared/components/fields/edit/services/hal-resource-editing.service'; import { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service'; @@ -493,7 +493,7 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni openFullViewOnDoubleClick(event:{ workPackageId:string, double:boolean }) { if (event.double) { - const routingId = this.resolveRoutingId(event.workPackageId); + const routingId = resolveRoutingId(this.states, event.workPackageId); const projectIdentifier = this.currentProject.identifier; const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; Turbo.visit(link, { action: 'advance' }); @@ -501,7 +501,7 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni } openStateLink(event:{ workPackageId:string; requestedState:string }) { - const routingId = this.resolveRoutingId(event.workPackageId); + const routingId = resolveRoutingId(this.states, event.workPackageId); if (event.requestedState === 'split') { this.goToSplitView(routingId); } else { @@ -516,10 +516,6 @@ export class BoardListComponent extends AbstractWidgetComponent implements OnIni Turbo.visit(link, { frame: 'content-bodyRight', action: 'advance' }); } - private resolveRoutingId(workPackageId:string):string { - return resolveRoutingId(this.states, workPackageId); - } - private schema(workPackage:WorkPackageResource) { return this.schemaCache.of(workPackage); } diff --git a/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts b/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts index 66c0be4a2c7..d033ea67e5e 100644 --- a/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts +++ b/frontend/src/app/features/boards/board/board-partitioned-page/board-list-container.component.ts @@ -41,7 +41,7 @@ import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; import { CurrentProjectService } from 'core-app/core/current-project/current-project.service'; import { States } from 'core-app/core/states/states.service'; -import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/work-package-id-resolvers'; @Component({ selector: 'board-list-container', diff --git a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts index de00e95a3f4..05acc775e7d 100644 --- a/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts +++ b/frontend/src/app/features/calendar/op-work-packages-calendar.service.ts @@ -54,7 +54,7 @@ import { } from 'core-app/features/work-packages/components/wp-fast-table/builders/ui-state-link-builder'; import { debugLog } from 'core-app/shared/helpers/debug_output'; import { States } from 'core-app/core/states/states.service'; -import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/work-package-id-resolvers'; import { WorkPackageViewContextMenu, } from 'core-app/shared/components/op-context-menu/wp-context-menu/wp-view-context-menu.directive'; @@ -291,7 +291,7 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { return; } - const routingId = this.resolveRoutingId(id); + const routingId = resolveRoutingId(this.states, id); void this.$state.go( `${splitViewRoute(this.$state)}.tabs`, { workPackageId: routingId, tabIdentifier: 'overview' }, @@ -301,17 +301,13 @@ export class OpWorkPackagesCalendarService extends UntilDestroyedMixin { public openFullView(id:string):void { this.wpTableSelection.setSelection(id, -1); - const routingId = this.resolveRoutingId(id); + const routingId = resolveRoutingId(this.states, id); void this.$state.go( 'work-packages.show', { workPackageId: routingId }, ); } - private resolveRoutingId(workPackageId:string):string { - return resolveRoutingId(this.states, workPackageId); - } - public onCardClicked({ workPackageId, event }:{ workPackageId:string, event:MouseEvent }):void { if (isClickedWithModifier(event)) { return; diff --git a/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts b/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts index 260d611128b..be2f670e9c5 100644 --- a/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-table/embedded/wp-embedded-table.component.ts @@ -24,7 +24,7 @@ import { KeepTabService, } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service'; import { States } from 'core-app/core/states/states.service'; -import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/work-package-id-resolvers'; import { ApiV3Service } from 'core-app/core/apiv3/api-v3.service'; import { firstValueFrom } from 'rxjs'; import { QueryRequestParams } from 'core-app/features/work-packages/components/wp-query/url-params-helper'; @@ -196,7 +196,7 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo handleWorkPackageClicked(event:{ workPackageId:string; double:boolean }) { if (event.double) { - const routingId = this.resolveRoutingId(event.workPackageId); + const routingId = resolveRoutingId(this.states, event.workPackageId); const projectIdentifier = this.currentProject.identifier; const link = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; Turbo.visit(link, { action: 'advance' }); @@ -204,7 +204,7 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo } openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) { - const routingId = this.resolveRoutingId(event.workPackageId); + const routingId = resolveRoutingId(this.states, event.workPackageId); const params = { workPackageId: routingId, focus: true, @@ -216,8 +216,4 @@ export class WorkPackageEmbeddedTableComponent extends WorkPackageEmbeddedBaseCo this.keepTab.goCurrentShowState(params.workPackageId); } } - - private resolveRoutingId(workPackageId:string):string { - return resolveRoutingId(this.states, workPackageId); - } } diff --git a/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts b/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts deleted file mode 100644 index 49770467aa0..00000000000 --- a/frontend/src/app/features/work-packages/helpers/resolve-routing-id.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { States } from 'core-app/core/states/states.service'; - -/** - * Resolve a work package identifier to its semantic routing ID (e.g. "PROJ-42"). - * Falls back to the input ID if the WP is not in cache or has no displayId — - * this is a best-effort lookup, not a guarantee. The URL just shows the - * numeric ID temporarily until the WP is cached. - * - * Use this in navigation handlers where the caller only has an identifier - * string (typically a numeric PK from a data-work-package-id attribute or - * a selection state) but the URL should show the semantic form. - */ -export function resolveRoutingId(states:States, workPackageId:string):string { - const wp = states.workPackages.get(workPackageId)?.value; - return wp?.displayId ?? workPackageId; -} diff --git a/frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts b/frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts new file mode 100644 index 00000000000..0cfbfb6e71e --- /dev/null +++ b/frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts @@ -0,0 +1,36 @@ +import { States } from 'core-app/core/states/states.service'; + +/** + * Resolve a work package identifier to its semantic routing ID (e.g. "PROJ-42"). + * Falls back to the input ID if the WP is not in cache or has no displayId — + * this is a best-effort lookup, not a guarantee. The URL just shows the + * numeric ID temporarily until the WP is cached. + * + * Use this in navigation handlers where the caller only has an identifier + * string (typically a numeric PK from a data-work-package-id attribute or + * a selection state) but the URL should show the semantic form. + */ +export function resolveRoutingId(states:States, workPackageId:string):string { + const wp = states.workPackages.get(workPackageId)?.value; + return wp?.displayId ?? workPackageId; +} + +/** + * Resolve a URL route parameter (which may be numeric `"42"` or semantic + * `"PROJ-7"`) to the internal primary key we use for cache, selection, + * focus, and API calls. + * + * Returns `null` if the WP can't be found in the cache. Unlike + * {@link resolveRoutingId}, there is no safe fallback: returning the + * input unchanged would hand a semantic identifier to code that expects + * a numeric PK, silently corrupting comparisons and lookups. Callers + * must handle the `null` case explicitly. + * + * The cache is currently keyed only by numeric PK, so semantic route + * params will reliably miss until the cache is dual-keyed. Treat this + * helper as a temporary shim around that limitation. + */ +export function resolveWorkPackagePk(states:States, routeParam:string):string | null { + const wp = states.workPackages.get(routeParam)?.value; + return wp?.id ?? null; +} diff --git a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts index ddd4008078f..395889fec3b 100644 --- a/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts +++ b/frontend/src/app/features/work-packages/routing/wp-list-view/wp-list-view.component.ts @@ -58,7 +58,7 @@ import { WorkPackageViewBaselineService } from '../wp-view-base/view-services/wp import { combineLatest } from 'rxjs'; import { PathHelperService } from 'core-app/core/path-helper/path-helper.service'; import { States } from 'core-app/core/states/states.service'; -import { resolveRoutingId } from 'core-app/features/work-packages/helpers/resolve-routing-id'; +import { resolveRoutingId } from 'core-app/features/work-packages/helpers/work-package-id-resolvers'; @Component({ selector: 'wp-list-view', @@ -181,7 +181,7 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements } openStateLink(event:{ workPackageId:string; requestedState:'show'|'split' }) { - const routingId = this.resolveRoutingId(event.workPackageId); + const routingId = resolveRoutingId(this.states, event.workPackageId); const params = { workPackageId: routingId, focus: true, @@ -207,12 +207,8 @@ export class WorkPackageListViewComponent extends UntilDestroyedMixin implements } private openInFullView(workPackageId:string) { - const routingId = this.resolveRoutingId(workPackageId); + const routingId = resolveRoutingId(this.states, workPackageId); const projectIdentifier = this.CurrentProject.identifier; window.location.href = this.pathHelper.genericWorkPackagePath(projectIdentifier, routingId) + window.location.search; } - - protected resolveRoutingId(workPackageId:string):string { - return resolveRoutingId(this.states, workPackageId); - } } diff --git a/frontend/src/app/features/work-packages/services/work-package.service.ts b/frontend/src/app/features/work-packages/services/work-package.service.ts index 8f0edab2a45..addedda59f5 100644 --- a/frontend/src/app/features/work-packages/services/work-package.service.ts +++ b/frontend/src/app/features/work-packages/services/work-package.service.ts @@ -35,6 +35,7 @@ import { ToastService } from 'core-app/shared/components/toaster/toast.service'; import { I18nService } from 'core-app/core/i18n/i18n.service'; import { HalDeletedEvent, HalEventsService } from 'core-app/features/hal/services/hal-events.service'; import { States } from 'core-app/core/states/states.service'; +import { resolveWorkPackagePk } from 'core-app/features/work-packages/helpers/work-package-id-resolvers'; @Injectable() export class WorkPackageService { @@ -72,9 +73,9 @@ export class WorkPackageService { ids.forEach((id) => this.halEvents.push({ _type: 'WorkPackage', id }, { eventType: 'deleted' } as HalDeletedEvent)); const routeWpId = this.$state.params.workPackageId as string; - const wp = this.states.workPackages.get(routeWpId)?.value; - const numericId = wp?.id ?? routeWpId; - if (this.$state.includes('**.list.details.**') + const numericId = resolveWorkPackagePk(this.states, routeWpId); + if (numericId + && this.$state.includes('**.list.details.**') && ids.includes(numericId)) { this.$state.go('work-packages.partitioned.list', this.$state.params); } From 88e2ee2dc508216b634950e5006f4a4ffb9f4db5 Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Wed, 22 Apr 2026 22:48:58 +0100 Subject: [PATCH 059/280] [#73081] Refine backlog bucket spec helpers Align the backlog bucket page-object helpers with the local spec style. Use semantic locators where stable and fix menu dismissal for bucket actions. https://community.openproject.org/wp/73081 --- .../backlogs/spec/support/pages/backlog.rb | 126 +++++++++++++++++- 1 file changed, 124 insertions(+), 2 deletions(-) diff --git a/modules/backlogs/spec/support/pages/backlog.rb b/modules/backlogs/spec/support/pages/backlog.rb index c6503bf8edd..30c9eb5fbe8 100644 --- a/modules/backlogs/spec/support/pages/backlog.rb +++ b/modules/backlogs/spec/support/pages/backlog.rb @@ -334,6 +334,101 @@ module Pages expect(sprint_names_in_order).to eq(sprint_names) end + def bucket_names_in_order + page.find_all("#owner_backlogs_container > section .CollapsibleHeader-title").map(&:text) + end + + def expect_bucket_names_in_order(*bucket_names) + expect(bucket_names_in_order).to eq(bucket_names) + end + + def expect_no_backlog_bucket(bucket) + expect(page).to have_no_css(bucket_selector(bucket)) + end + + def expect_backlog_bucket_work_package_count(bucket, count) + within_backlog_bucket(bucket) do + label = count == 1 ? "1 story in backlog bucket" : "#{count} stories in backlog bucket" + expect(page).to have_css(".Counter", accessible_name: label) + end + end + + def expect_work_packages_in_backlog_bucket_in_order(bucket, work_packages: []) + within_backlog_bucket(bucket) do + expect_work_packages_in_order(work_packages:) + end + end + + def expect_work_packages_in_backlog_inbox_in_order(work_packages: []) + within_backlog_inbox do + expect_work_packages_in_order(work_packages:) + end + end + + def open_create_backlog_bucket_dialog + within_owner_backlogs do + click_on accessible_name: Agile::BacklogBucket.human_model_name + end + end + + def expect_new_backlog_bucket_button + within_owner_backlogs do + expect(page).to have_link(Agile::BacklogBucket.human_model_name, exact: true) + end + end + + def expect_no_new_backlog_bucket_button + within_owner_backlogs do + expect(page).to have_no_link(Agile::BacklogBucket.human_model_name, exact: true) + end + end + + def expect_backlog_bucket_dialog + expect(page).to have_dialog(I18n.t(:label_backlog_bucket_new)) + end + + def within_backlog_bucket_menu(bucket, &) + within_backlog_bucket(bucket) do + button = find(:button, accessible_name: "Backlog bucket actions") + within(open_controlled_menu(button), &) + end + dismiss_menu(bucket) + end + + def click_in_backlog_bucket_menu(bucket, item_name) + within_backlog_bucket_menu(bucket) do |menu| + menu.find(:menuitem, text: item_name).click + end + end + + def expect_no_backlog_bucket_menu(bucket) + within_backlog_bucket(bucket) do + expect(page).to have_no_button(accessible_name: "Backlog bucket actions") + end + end + + def drag_work_package_to_backlog_bucket(work_package, bucket) + moved_element = find(draggable_work_package_selector(work_package)) + target_element = find(bucket_selector(bucket)) + + wait_for_turbo_stream do + moved_element.native.drag_to(target_element.native, delay: 0.1) + end + rescue Capybara::Cuprite::ObsoleteNode + retry + end + + def drag_work_package_to_backlog_inbox(work_package) + moved_element = find(draggable_work_package_selector(work_package)) + target_element = find(backlog_inbox_selector) + + wait_for_turbo_stream do + moved_element.native.drag_to(target_element.native, delay: 0.1) + end + rescue Capybara::Cuprite::ObsoleteNode + retry + end + def expect_story_in_sprint(story, sprint) within_sprint(sprint) do expect(page) @@ -496,6 +591,18 @@ module Pages within("#inbox_#{project.id}", &) end + def within_backlog_bucket(bucket, &) + within(bucket_selector(bucket), &) + end + + def within_backlog_inbox(&) + within(backlog_inbox_selector, &) + end + + def within_owner_backlogs(&) + within("#owner_backlogs_container", &) + end + def within_sprint_backlogs(&) within("#sprint_backlogs_container", &) end @@ -504,6 +611,16 @@ module Pages test_selector("sprint-#{sprint.id}") end + def bucket_selector(bucket) + raise ArgumentError, "bucket must be persisted" unless bucket.persisted? + + test_selector("backlog-bucket-#{bucket.id}") + end + + def backlog_inbox_selector + "#new_agile_backlog_bucket" + end + def story_selector(story) "#story_#{story.id}" end @@ -531,8 +648,13 @@ module Pages page.find(:menu, id: move_item["aria-controls"]) end - def dismiss_menu(work_package) - find("#work_package_#{work_package.id}_menu-overlay").click + def dismiss_menu(menu_owner) + overlay_id = "#{ActionView::RecordIdentifier.dom_target(menu_owner, :menu)}-overlay" + selector = "##{overlay_id}" + + return unless page.has_css?(selector, visible: true, wait: 0) + + find(selector).click end end end From 09ef03eccfe66aac137076b936cb6d2a1167ef3a Mon Sep 17 00:00:00 2001 From: Alexander Brandon Coles Date: Wed, 22 Apr 2026 22:48:59 +0100 Subject: [PATCH 060/280] [#73081] Add backlog bucket feature specs Add end-to-end coverage for backlog bucket display, CRUD flows, and work-package dragging in the backlog and sprints view. https://community.openproject.org/wp/73081 --- .../features/backlog_buckets/create_spec.rb | 99 ++++++++++++++ .../features/backlog_buckets/delete_spec.rb | 89 ++++++++++++ .../features/backlog_buckets/display_spec.rb | 109 +++++++++++++++ .../features/backlog_buckets/edit_spec.rb | 99 ++++++++++++++ .../drag_in_backlog_bucket_spec.rb | 128 ++++++++++++++++++ 5 files changed, 524 insertions(+) create mode 100644 modules/backlogs/spec/features/backlog_buckets/create_spec.rb create mode 100644 modules/backlogs/spec/features/backlog_buckets/delete_spec.rb create mode 100644 modules/backlogs/spec/features/backlog_buckets/display_spec.rb create mode 100644 modules/backlogs/spec/features/backlog_buckets/edit_spec.rb create mode 100644 modules/backlogs/spec/features/work_packages/drag_in_backlog_bucket_spec.rb diff --git a/modules/backlogs/spec/features/backlog_buckets/create_spec.rb b/modules/backlogs/spec/features/backlog_buckets/create_spec.rb new file mode 100644 index 00000000000..c01c2e1fa02 --- /dev/null +++ b/modules/backlogs/spec/features/backlog_buckets/create_spec.rb @@ -0,0 +1,99 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" +require_relative "../../support/pages/backlog" + +RSpec.describe "Backlog bucket creation", + :js, + with_flag: { backlog_buckets: true } do + create_shared_association_defaults_for_work_package_factory + + shared_let(:project) do + create(:project, enabled_module_names: %w[work_package_tracking backlogs]) + end + + let(:backlogs_page) { Pages::Backlog.new(project) } + + current_user do + create(:user, + member_with_permissions: { + project => %i[view_sprints view_work_packages create_sprints] + }) + end + + it "creates a new backlog bucket via the dialog" do + backlogs_page.visit! + backlogs_page.expect_bucket_names_in_order("Inbox") + + backlogs_page.open_create_backlog_bucket_dialog + + within_dialog "New backlog bucket" do + fill_in "Name", with: "Discovery work" + click_on "Create" + end + + expect_and_dismiss_flash type: :success, exact_message: "Successful creation." + backlogs_page.expect_bucket_names_in_order("Discovery work", "Inbox") + + bucket = Agile::BacklogBucket.find_by!(project:, name: "Discovery work") + expect(bucket.work_packages).to be_empty + end + + it "validates that the name is present" do + backlogs_page.visit! + + backlogs_page.open_create_backlog_bucket_dialog + + within_dialog "New backlog bucket" do + fill_in "Name", with: "" + click_on "Create" + + expect(page).to have_field "Name", validation_error: "can't be blank" + end + + expect(Agile::BacklogBucket.where(project:)).to be_empty + end + + context "without the :create_sprints permission" do + current_user do + create(:user, + member_with_permissions: { + project => %i[view_sprints view_work_packages] + }) + end + + it "does not show the create button" do + backlogs_page.visit! + + backlogs_page.expect_no_new_backlog_bucket_button + end + end +end diff --git a/modules/backlogs/spec/features/backlog_buckets/delete_spec.rb b/modules/backlogs/spec/features/backlog_buckets/delete_spec.rb new file mode 100644 index 00000000000..32b51da78be --- /dev/null +++ b/modules/backlogs/spec/features/backlog_buckets/delete_spec.rb @@ -0,0 +1,89 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" +require_relative "../../support/pages/backlog" + +RSpec.describe "Backlog bucket deletion", + :js, + with_flag: { backlog_buckets: true } do + create_shared_association_defaults_for_work_package_factory + + shared_let(:project) do + create(:project, enabled_module_names: %w[work_package_tracking backlogs]) + end + shared_let(:bucket) { create(:backlog_bucket, project:, name: "Deprecated bucket") } + + shared_let(:bucket_wp1) { create(:work_package, project:, backlog_bucket: bucket, position: 1) } + shared_let(:bucket_wp2) { create(:work_package, project:, backlog_bucket: bucket, position: 2) } + + let(:backlogs_page) { Pages::Backlog.new(project) } + + current_user do + create(:user, + member_with_permissions: { + project => %i[view_sprints view_work_packages create_sprints] + }) + end + + it "deletes the bucket and moves its work packages to the Inbox" do + backlogs_page.visit! + backlogs_page.expect_bucket_names_in_order("Deprecated bucket", "Inbox") + + accept_confirm do + backlogs_page.click_in_backlog_bucket_menu(bucket, "Delete backlog bucket") + end + + expect_and_dismiss_flash type: :success, exact_message: "Successful deletion." + backlogs_page.expect_bucket_names_in_order("Inbox") + backlogs_page.expect_no_backlog_bucket(bucket) + + backlogs_page.expect_work_packages_in_backlog_inbox_in_order(work_packages: [bucket_wp1, bucket_wp2]) + + expect(Agile::BacklogBucket.where(id: bucket.id)).to be_empty + expect(bucket_wp1.reload.backlog_bucket_id).to be_nil + expect(bucket_wp2.reload.backlog_bucket_id).to be_nil + end + + context "without the :create_sprints permission" do + current_user do + create(:user, + member_with_permissions: { + project => %i[view_sprints view_work_packages] + }) + end + + it "does not expose the delete action" do + backlogs_page.visit! + + backlogs_page.expect_no_backlog_bucket_menu(bucket) + end + end +end diff --git a/modules/backlogs/spec/features/backlog_buckets/display_spec.rb b/modules/backlogs/spec/features/backlog_buckets/display_spec.rb new file mode 100644 index 00000000000..8c3609c465a --- /dev/null +++ b/modules/backlogs/spec/features/backlog_buckets/display_spec.rb @@ -0,0 +1,109 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" +require_relative "../../support/pages/backlog" + +RSpec.describe "Backlog bucket display", + :js, + with_flag: { backlog_buckets: true } do + create_shared_association_defaults_for_work_package_factory + + shared_let(:project) do + create(:project, enabled_module_names: %w[work_package_tracking backlogs]) + end + + shared_let(:bucket_beta) { create(:backlog_bucket, project:, name: "Beta bucket") } + shared_let(:bucket_alpha) { create(:backlog_bucket, project:, name: "Alpha bucket") } + shared_let(:bucket_gamma) { create(:backlog_bucket, project:, name: "Gamma bucket") } + + shared_let(:wp_alpha1) { create(:work_package, project:, backlog_bucket: bucket_alpha, position: 1) } + shared_let(:wp_alpha2) { create(:work_package, project:, backlog_bucket: bucket_alpha, position: 2) } + shared_let(:wp_beta1) { create(:work_package, project:, backlog_bucket: bucket_beta, position: 1) } + shared_let(:wp_inbox1) { create(:work_package, project:, backlog_bucket: nil, sprint: nil, position: 1) } + + let(:backlogs_page) { Pages::Backlog.new(project) } + + current_user do + create(:user, + member_with_permissions: { + project => %i[view_sprints view_work_packages create_sprints manage_sprint_items] + }) + end + + it "lists buckets alphabetically with Inbox at the bottom" do + backlogs_page.visit! + + backlogs_page.expect_bucket_names_in_order( + "Alpha bucket", + "Beta bucket", + "Gamma bucket", + "Inbox" + ) + end + + it "shows the work-package count on populated buckets" do + backlogs_page.visit! + + backlogs_page.expect_backlog_bucket_work_package_count(bucket_alpha, 2) + backlogs_page.expect_backlog_bucket_work_package_count(bucket_beta, 1) + end + + it "shows the '+ Backlog Bucket' button" do + backlogs_page.visit! + + backlogs_page.expect_new_backlog_bucket_button + end + + context "when the feature flag is disabled", with_flag: { backlog_buckets: false } do + it "shows the legacy inbox instead of backlog buckets" do + backlogs_page.visit! + + backlogs_page.expect_no_new_backlog_bucket_button + backlogs_page.expect_no_backlog_bucket(bucket_alpha) + expect(page).to have_css("#inbox_#{project.id}") + end + end + + context "without the :create_sprints permission" do + current_user do + create(:user, + member_with_permissions: { + project => %i[view_sprints view_work_packages manage_sprint_items] + }) + end + + it "hides the '+ Backlog Bucket' button" do + backlogs_page.visit! + + backlogs_page.expect_no_new_backlog_bucket_button + end + end +end diff --git a/modules/backlogs/spec/features/backlog_buckets/edit_spec.rb b/modules/backlogs/spec/features/backlog_buckets/edit_spec.rb new file mode 100644 index 00000000000..b1b1e982b03 --- /dev/null +++ b/modules/backlogs/spec/features/backlog_buckets/edit_spec.rb @@ -0,0 +1,99 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" +require_relative "../../support/pages/backlog" + +RSpec.describe "Backlog bucket renaming", + :js, + with_flag: { backlog_buckets: true } do + create_shared_association_defaults_for_work_package_factory + + shared_let(:project) do + create(:project, enabled_module_names: %w[work_package_tracking backlogs]) + end + shared_let(:bucket) { create(:backlog_bucket, project:, name: "Draft bucket") } + + let(:backlogs_page) { Pages::Backlog.new(project) } + + current_user do + create(:user, + member_with_permissions: { + project => %i[view_sprints view_work_packages create_sprints] + }) + end + + it "renames a backlog bucket via the menu" do + backlogs_page.visit! + backlogs_page.expect_bucket_names_in_order("Draft bucket", "Inbox") + + backlogs_page.click_in_backlog_bucket_menu(bucket, "Edit backlog bucket") + + within_dialog "Edit backlog bucket" do + expect(page).to have_field "Name", with: "Draft bucket" + fill_in "Name", with: "Polished bucket" + click_on "Save" + end + + expect_and_dismiss_flash type: :success, exact_message: "Successful update." + backlogs_page.expect_bucket_names_in_order("Polished bucket", "Inbox") + expect(bucket.reload.name).to eq "Polished bucket" + end + + it "validates that the name is present when saving" do + backlogs_page.visit! + + backlogs_page.click_in_backlog_bucket_menu(bucket, "Edit backlog bucket") + + within_dialog "Edit backlog bucket" do + fill_in "Name", with: "" + click_on "Save" + + expect(page).to have_field "Name", validation_error: "can't be blank" + end + + expect(bucket.reload.name).to eq "Draft bucket" + end + + context "without the :create_sprints permission" do + current_user do + create(:user, + member_with_permissions: { + project => %i[view_sprints view_work_packages] + }) + end + + it "does not expose the bucket actions menu" do + backlogs_page.visit! + + backlogs_page.expect_no_backlog_bucket_menu(bucket) + end + end +end diff --git a/modules/backlogs/spec/features/work_packages/drag_in_backlog_bucket_spec.rb b/modules/backlogs/spec/features/work_packages/drag_in_backlog_bucket_spec.rb new file mode 100644 index 00000000000..91d287952d4 --- /dev/null +++ b/modules/backlogs/spec/features/work_packages/drag_in_backlog_bucket_spec.rb @@ -0,0 +1,128 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" +require_relative "../../support/pages/backlog" + +RSpec.describe "Dragging work packages in backlog buckets", + :js, + with_flag: { backlog_buckets: true } do + create_shared_association_defaults_for_work_package_factory + + shared_let(:project) do + create(:project, enabled_module_names: %w[work_package_tracking backlogs]) + end + + shared_let(:bucket_alpha) { create(:backlog_bucket, project:, name: "Alpha bucket") } + shared_let(:bucket_beta) { create(:backlog_bucket, project:, name: "Beta bucket") } + + shared_let(:alpha_wp1) { create(:work_package, project:, backlog_bucket: bucket_alpha, position: 1) } + shared_let(:alpha_wp2) { create(:work_package, project:, backlog_bucket: bucket_alpha, position: 2) } + shared_let(:alpha_wp3) { create(:work_package, project:, backlog_bucket: bucket_alpha, position: 3) } + shared_let(:inbox_wp1) { create(:work_package, project:, backlog_bucket: nil, sprint: nil, position: 1) } + + let(:backlogs_page) { Pages::Backlog.new(project) } + + current_user do + create(:user, + member_with_permissions: { + project => %i[view_sprints view_work_packages create_sprints manage_sprint_items edit_work_packages] + }) + end + + it "reorders work packages within a bucket" do + backlogs_page.visit! + + backlogs_page.expect_work_packages_in_backlog_bucket_in_order( + bucket_alpha, work_packages: [alpha_wp1, alpha_wp2, alpha_wp3] + ) + + backlogs_page.drag_work_package(alpha_wp1, before: alpha_wp3) + + backlogs_page.expect_work_packages_in_backlog_bucket_in_order( + bucket_alpha, work_packages: [alpha_wp2, alpha_wp1, alpha_wp3] + ) + end + + it "moves a work package into another bucket" do + backlogs_page.visit! + + backlogs_page.drag_work_package_to_backlog_bucket(alpha_wp1, bucket_beta) + + backlogs_page.expect_work_packages_in_backlog_bucket_in_order( + bucket_alpha, work_packages: [alpha_wp2, alpha_wp3] + ) + backlogs_page.expect_work_packages_in_backlog_bucket_in_order( + bucket_beta, work_packages: [alpha_wp1] + ) + + expect(alpha_wp1.reload.backlog_bucket_id).to eq(bucket_beta.id) + end + + it "moves a work package from a bucket into the Inbox" do + backlogs_page.visit! + + backlogs_page.drag_work_package_to_backlog_inbox(alpha_wp1) + + backlogs_page.expect_work_packages_in_backlog_bucket_in_order( + bucket_alpha, work_packages: [alpha_wp2, alpha_wp3] + ) + + expect(alpha_wp1.reload.backlog_bucket_id).to be_nil + end + + it "moves a work package from the Inbox into a bucket" do + backlogs_page.visit! + + backlogs_page.drag_work_package_to_backlog_bucket(inbox_wp1, bucket_beta) + + backlogs_page.expect_work_packages_in_backlog_bucket_in_order( + bucket_beta, work_packages: [inbox_wp1] + ) + + expect(inbox_wp1.reload.backlog_bucket_id).to eq(bucket_beta.id) + end + + context "without the :manage_sprint_items permission" do + current_user do + create(:user, + member_with_permissions: { + project => %i[view_sprints view_work_packages edit_work_packages] + }) + end + + it "does not allow dragging bucketed work packages" do + backlogs_page.visit! + + backlogs_page.expect_work_package_not_draggable(alpha_wp1) + backlogs_page.expect_work_package_not_draggable(alpha_wp2) + end + end +end From 971fe2a45d1aad15abe447d42b92a55053ab8c56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Thu, 23 Apr 2026 08:35:04 +0200 Subject: [PATCH 061/280] Bumped version to 17.5.0 [ci skip] --- lib/open_project/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/open_project/version.rb b/lib/open_project/version.rb index 00cc8051491..a8220c747f3 100644 --- a/lib/open_project/version.rb +++ b/lib/open_project/version.rb @@ -32,7 +32,7 @@ require "open3" module OpenProject module VERSION # :nodoc: MAJOR = 17 - MINOR = 4 + MINOR = 5 PATCH = 0 class << self From 3292c37ac8b92261d8046c62101779fdd7062a8f Mon Sep 17 00:00:00 2001 From: Eric Schubert Date: Thu, 23 Apr 2026 10:20:12 +0200 Subject: [PATCH 062/280] [#73909] removed view model --- .../app/models/wikis/page_link_view_model.rb | 45 ------------------- 1 file changed, 45 deletions(-) delete mode 100644 modules/wikis/app/models/wikis/page_link_view_model.rb diff --git a/modules/wikis/app/models/wikis/page_link_view_model.rb b/modules/wikis/app/models/wikis/page_link_view_model.rb deleted file mode 100644 index dd12a364b0a..00000000000 --- a/modules/wikis/app/models/wikis/page_link_view_model.rb +++ /dev/null @@ -1,45 +0,0 @@ -# frozen_string_literal: true - -#-- copyright -# OpenProject is an open source project management software. -# Copyright (C) the OpenProject GmbH -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License version 3. -# -# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: -# Copyright (C) 2006-2013 Jean-Philippe Lang -# Copyright (C) 2010-2013 the ChiliProject Team -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# See COPYRIGHT and LICENSE files for more details. -#++ - -module Wikis - PageLinkViewModel = Data.define(:page_identifier, :provider, :title, :href, :actions) do - def initialize(page_identifier:, provider:, title:, href:, actions: []) = super - - def self.from_page_link(page_link:, title_service: PageTitleService.new) - new( - page_identifier: page_link.identifier, - provider: page_link.provider, - title: title_service.read(page_link), - href: page_link.href, - actions: page_link.relation? ? [:remove] : [] - ) - end - end -end From 349caed48c96a2db62a0302e76b736af78137b04 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 11:00:01 +0200 Subject: [PATCH 063/280] Introduce models for persisted views and queries --- app/models/persisted_query.rb | 52 + app/models/persisted_view.rb | 50 + config/locales/en.yml | 2464 +++++++++++------ ...20260422081417_create_persisted_queries.rb | 47 + .../20260422081810_create_persisted_views.rb | 48 + spec/models/persisted_query_spec.rb | 63 + spec/models/persisted_view_spec.rb | 114 + 7 files changed, 2012 insertions(+), 826 deletions(-) create mode 100644 app/models/persisted_query.rb create mode 100644 app/models/persisted_view.rb create mode 100644 db/migrate/20260422081417_create_persisted_queries.rb create mode 100644 db/migrate/20260422081810_create_persisted_views.rb create mode 100644 spec/models/persisted_query_spec.rb create mode 100644 spec/models/persisted_view_spec.rb diff --git a/app/models/persisted_query.rb b/app/models/persisted_query.rb new file mode 100644 index 00000000000..24b1f5dae0d --- /dev/null +++ b/app/models/persisted_query.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class PersistedQuery < ApplicationRecord + include Queries::BaseQuery + include Queries::Serialization::Hash + include ::Scopes::Scoped + + belongs_to :project, optional: true + belongs_to :principal, optional: true + + has_many :views, class_name: "PersistedView", + as: :query, + dependent: :restrict_with_error, + inverse_of: :query + + validates :name, presence: true, length: { maximum: 255 } + + def self.inherited(subclass) + super + subclass.serialize :filters, coder: Queries::Serialization::Filters.new(subclass) + subclass.serialize :orders, coder: Queries::Serialization::Orders.new(subclass) + subclass.serialize :selects, coder: Queries::Serialization::Selects.new(subclass) + end +end diff --git a/app/models/persisted_view.rb b/app/models/persisted_view.rb new file mode 100644 index 00000000000..60ade0e87aa --- /dev/null +++ b/app/models/persisted_view.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class PersistedView < ApplicationRecord + belongs_to :project, optional: true + belongs_to :principal, optional: true + belongs_to :query, polymorphic: true, optional: true + + belongs_to :parent, class_name: "PersistedView", optional: true + has_many :children, class_name: "PersistedView", foreign_key: "parent_id", dependent: :destroy, inverse_of: :parent + + acts_as_favoritable + + validates :name, presence: true, length: { maximum: 255 } + + scope :public_views, -> { where(public: true) } + scope :private_views, ->(principal: User.current) { where(public: false, principal:) } + + # Returns the query of this view or, if not set, the query of the parent view. + def effective_query + query || parent&.effective_query + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index 797f428cbfe..4c8c5dae6aa 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -35,7 +35,7 @@ en: work_packages: activity_tab: no_results_title_text: No activity to display - no_results_description_text: 'Choose "Show everything" to show all activity and comments' + no_results_description_text: "Choose \"Show everything\" to show all activity and comments" label_activity_show_all: "Show everything" label_activity_show_only_comments: "Show comments only" label_activity_show_only_changes: "Show changes only" @@ -55,7 +55,8 @@ en: internal_comment_confirmation: title: "Make this comment public?" heading: "Make this comment public?" - description: "Your comment will be visible to anyone who can access this work package. Are you sure you want to do this?" + description: "Your comment will be visible to anyone who can access this work + package. Are you sure you want to do this?" confirm_button_text: "Make public" admin: @@ -84,22 +85,26 @@ en: primary-button-color: "Strong accent color, used for the most important button on a screen." accent-color: "Color for links and other decently highlighted elements." main-menu-bg-color: "Left side menu's background color." - theme_warning: Changing the theme will overwrite you custom style. The design will then be lost. Are you sure you want to continue? + theme_warning: Changing the theme will overwrite you custom style. The design + will then be lost. Are you sure you want to continue? enterprise: delete_dialog: title: "Delete enterprise token" heading: "Delete this enterprise token?" - confirmation: "Are you sure you want to delete this Enterprise edition support token?" + confirmation: "Are you sure you want to delete this Enterprise edition support + token?" create_dialog: title: "Add Enterprise token" type_token_text: "Your Enterprise token text" token_placeholder: "Paste your Enterprise edition support token here" - token_caption: "To learn more about how to activate Enterprise edition check our [documentation](docs_url)." + token_caption: "To learn more about how to activate Enterprise edition check our + [documentation](docs_url)." add_token: "Upload an Enterprise edition support token" replace_token: "Replace your current support token" order: "Order Enterprise on-premises edition" paste: "Paste your Enterprise edition support token" - required_for_feature: "This add-on is only available with an active Enterprise edition support token." + required_for_feature: "This add-on is only available with an active Enterprise + edition support token." enterprise_link: "For more information, click here." start_trial: "Start free trial" book_now: "Book now" @@ -117,24 +122,34 @@ en: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. + User actions on a work package (changing description, status, values, or + writing comments) are grouped if performed within this period. It also + controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: title: "Jira Migrator" - description: "Use this tool to import data from your Jira instance. You can configure multiple Jira hosts and choose what to import in each import run." + description: "Use this tool to import data from your Jira instance. You can + configure multiple Jira hosts and choose what to import in each import + run." errors: cannot_delete_with_imports: "Cannot delete Jira host with existing imports" custom_field_creation_failed: "Failed to create custom field '%{name}': %{message}" blank: title: "No Jira hosts configured yet" - description: "Configure a Jira host to start importing items from Jira to this OpenProject instance." + description: "Configure a Jira host to start importing items from Jira to this + OpenProject instance." configuration: title: "Jira configuration" new: "New configuration" banner: title: "Limited import capabilities" - description: "This Jira Migrator is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." + description: "This Jira Migrator is currently in beta and can only import basic + data: projects, issues (name, title, description, attachments), users + (name, email, project membership), statuses, and types. It cannot + import workflows, custom fields, issue relations, or permissions. We + currently only support Jira Server/Data Center versions 10.x and 11.x. + Cloud instances are not supported at this time." form: fields: name: "Name" @@ -144,7 +159,8 @@ en: button_save: "Save configuration" button_test: "Test configuration" button_delete_token: "Delete token" - delete_token_confirm: "Are you sure you want to delete the token? This will disable the Jira connection." + delete_token_confirm: "Are you sure you want to delete the token? This will + disable the Jira connection." label_testing: "Testing configuration..." token_deleted: "Token was successfully deleted." test: @@ -152,17 +168,23 @@ en: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." - api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." - token_error: "Invalid API token. Please check your credentials in the configuration." - missing_credentials: "Please provide both URL and Personal Access Token to test the connection" + parse_error: "Failed to parse the response from the server. The server may not + be a valid Jira instance." + api_error: "Jira API returned error status %{status}. Please check your Jira + instance URL and API token." + token_error: "Invalid API token. Please check your credentials in the + configuration." + missing_credentials: "Please provide both URL and Personal Access Token to test + the connection" invalid_url: "Please provide a valid URL" client: connection_error: "Failed to connect to Jira server: %{message}" connection_timeout: "Connection to Jira server timed out: %{message}" parse_error: "Failed to parse Jira API response: %{message}" api_error: "Jira API returned error status %{status}" - 401_error: "Jira API returned a 401 error. Your authentication token may have expired or lack the required permissions. Please ensure the token belongs to a Jira administrator." + 401_error: "Jira API returned a 401 error. Your authentication token may have + expired or lack the required permissions. Please ensure the token + belongs to a Jira administrator." columns: projects: "Projects" last_change: "Last change" @@ -172,13 +194,20 @@ en: title: "Import run" history: "History" remove_error: "A Jira import run cannot be removed while it is running" - import_blocked_error: "Another Jira import run is currently in progress or awaiting review. Please complete or revert it before starting a new import." - project_identifier_taken: "You are trying to import a project with an already used identifier: %{taken_identifier}. Please update the project identifier in Jira then click on Retry." + import_blocked_error: "Another Jira import run is currently in progress or + awaiting review. Please complete or revert it before starting a new + import." + project_identifier_taken: "You are trying to import a project with an already + used identifier: %{taken_identifier}. Please update the project + identifier in Jira then click on Retry." blank: title: "No import runs set up yet" - description: "Create an import run to start importing information from this Jira instance" + description: "Create an import run to start importing information from this Jira + instance" index: - description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." + description: "You can import different sets of data with each import run. It is + possible to undo an import run immediately after in review mode but + not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -238,7 +267,8 @@ en: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Check what data is available for import in the host Jira instance." + description: "Check what data is available for import in the host Jira + instance." button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: @@ -247,8 +277,12 @@ en: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance offers for import and what this tool is able to import right now." - description: "Select what data you want to import from the available data fetched from the host Jira instance." + label_info: "Please note that this import tool is in beta and cannot import all + types of data. Here is a summary of what the host Jira instance + offers for import and what this tool is able to import right + now." + description: "Select what data you want to import from the available data + fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -281,7 +315,9 @@ en: label_revert: "Revert import" button_revert: "Revert import" button_done: "Finalize import" - preview_description: 'The imported data is currently in review mode. Click "Finalize import" to make the import permanent or "Revert import" to undo all changes made in this import run.' + preview_description: "The imported data is currently in review mode. Click + \"Finalize import\" to make the import permanent or \"Revert + import\" to undo all changes made in this import run." label_finalize_import: "Finalize import" label_finalizing: "Finalizing import..." label_finalizing_done: "Import finalized." @@ -293,17 +329,23 @@ en: title: "Start this import?" confirm_button: "Start import" description: > - This importer is an alpha feature. It is not yet able to import all data from Jira and might leave incomplete data on this OpenProject instance. + This importer is an alpha feature. It is not yet able to import + all data from Jira and might leave incomplete data on this + OpenProject instance. - Do not use a production environment and create a backup of your OpenProject data before starting. + Do not use a production environment and create a backup of your + OpenProject data before starting. confirm: "I understand and made the necessary preparations" revert_dialog: title: "Permanently revert this import?" - description: "This will delete all imported objects (including whole projects) even if there was user activity in those projects after the import on OpenProject." + description: "This will delete all imported objects (including whole projects) + even if there was user activity in those projects after the import + on OpenProject." confirm: "I understand that this reversion will delete data permanently" finalize_dialog: title: "Finalize this import?" - description: "Once finalized, this import can no longer be reverted. All imported data will become permanently imported." + description: "Once finalized, this import can no longer be reverted. All + imported data will become permanently imported." confirm: "I understand that this action cannot be undone" confirm_button: "Understood" select_projects: @@ -311,31 +353,43 @@ en: mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." + description: "The model context protocol allows AI agents to provide its users + with tools and resources exposed by this OpenProject instance. This + feature is still in beta." resources_heading: "Resources" - resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." + resources_description: "OpenProject implements the following resources. Each can + be enabled, renamed and described as you want. For more information, + please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" tools_heading: "Tools" - tools_description: "OpenProject implements the following tools. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP tools](docs_url)." + tools_description: "OpenProject implements the following tools. Each can be + enabled, renamed and described as you want. For more information, + please refer to the [documentation on MCP tools](docs_url)." tools_submit: "Update tools" multi_update: success: "MCP configurations were updated successfully." server_form: - description_caption: "How the MCP server will be described to other applications who connect to it." + description_caption: "How the MCP server will be described to other applications + who connect to it." title_caption: "A short title shown to applications that connect to the MCP server." tool_response_format: "Tool response format" tool_response_format_content_only_label: "Content only" tool_response_format_content_only_caption: > - Choose this if MCP clients connecting to this instance do not support structured content. - Tool responses will only contain plain text content and leave out the structured version. + Choose this if MCP clients connecting to this instance do not support + structured content. Tool responses will only contain plain text + content and leave out the structured version. tool_response_format_full_label: "Full" tool_response_format_full_caption: > - The most compatible option. Tool responses will include both regular and structured content, allowing MCP clients to choose which format they want to read. - This may increase the number of tokens that the language model has to process, potentially increasing cost and decreasing performance. + The most compatible option. Tool responses will include both regular + and structured content, allowing MCP clients to choose which format + they want to read. This may increase the number of tokens that the + language model has to process, potentially increasing cost and + decreasing performance. tool_response_format_structured_only_label: "Structured content only" tool_response_format_structured_only_caption: > - Choose this if you are certain that MCP clients connecting to this instance support structured content. - Tool responses will only include structured content and leave out its text representation. + Choose this if you are certain that MCP clients connecting to this + instance support structured content. Tool responses will only include + structured content and leave out its text representation. update: failure: "MCP configuration could not be updated." success: "MCP configuration was updated successfully." @@ -347,12 +401,14 @@ en: created_client_credentials_dialog_component: title: "Client credentials created" heading: "Client credentials have been generated" - one_time_hint: "This is the only time you will see the client secret. Make sure to copy it now." + one_time_hint: "This is the only time you will see the client secret. Make sure + to copy it now." created_token_dialog_component: title: "Token created" heading: "A token has been generated" label_token: "Token" - one_time_hint: "This is the only time you will see this token. Make sure to copy it now." + one_time_hint: "This is the only time you will see this token. Make sure to copy + it now." delete_scim_client_dialog_component: title: "Delete SCIM client" heading: "Are you sure you want to delete this SCIM client?" @@ -360,13 +416,24 @@ en: edit: label_delete_scim_client: "Delete SCIM client" form: - auth_provider_description: "This is the service that users added by the SCIM provider will use to authenticate in OpenProject." - authentication_method_description_html: "This is how the SCIM client authenticates at OpenProject. Please ensure that OAuth tokens include the scim_v2 scope." - description: "Please refer to our [documentation on configuring SCIM clients](docs_url) for more information on these configuration options." - jwt_sub_description: "For example, for Keycloak, this is the UUID of the service account associated with the SCIM client. Consult [our documentation](docs_url) to learn how to find the subject claim for your use case." - name_description: "Choose a name that will help other admins better understand why this client was configured." + auth_provider_description: "This is the service that users added by the SCIM + provider will use to authenticate in OpenProject." + authentication_method_description_html: "This is how the SCIM client + authenticates at OpenProject. Please ensure that OAuth tokens include + the scim_v2 scope." + description: "Please refer to our [documentation on configuring SCIM + clients](docs_url) for more information on these configuration + options." + jwt_sub_description: "For example, for Keycloak, this is the UUID of the service + account associated with the SCIM client. Consult [our + documentation](docs_url) to learn how to find the subject claim for + your use case." + name_description: "Choose a name that will help other admins better understand + why this client was configured." index: - description: "SCIM clients configured here are able to interact with OpenProject SCIM server API to provision, update, and deprovision user accounts and groups." + description: "SCIM clients configured here are able to interact with OpenProject + SCIM server API to provision, update, and deprovision user accounts + and groups." label_create_button: "Add SCIM client" new: title: "New SCIM client" @@ -374,14 +441,16 @@ en: confirm_button: "Revoke" title: "Revoke static token" heading: "Are you sure you want to revoke this token?" - description: "The SCIM client that uses this token will no longer be able to access OpenProject's SCIM server API." + description: "The SCIM client that uses this token will no longer be able to + access OpenProject's SCIM server API." table_component: blank_slate: title: "No SCIM clients configured yet" description: "Add clients to see them here" user_count: "Users" token_list_component: - description: "The tokens you generate here can be passed by a SCIM client to access the OpenProject SCIM API." + description: "The tokens you generate here can be passed by a SCIM client to + access the OpenProject SCIM API." heading: "Tokens" label_add_token: "Token" label_aria_add_token: "Add token" @@ -396,17 +465,21 @@ en: new_project: project_creation: "Project creation" notification_text_default: > -

Hello,

-

A new project has been created: projectValue:name

+

Hello,

A new project has been created: projectValue:name

Thank you

work_packages_identifier: page_header: - description: Choose between classic numerical work package IDs or semantic project-specific ones that prepend the project identifier to the work package ID. + description: Choose between classic numerical work package IDs or semantic + project-specific ones that prepend the project identifier to the + work package ID. banner: existing_identifiers_notice: > - Existing identifiers for %{project_count} projects don't meet requirements for project-based semantic identifiers. - OpenProject can automatically update these so that they are valid as in the examples below. - Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based semantic identifiers. + Existing identifiers for %{project_count} projects don't meet + requirements for project-based semantic identifiers. OpenProject can + automatically update these so that they are valid as in the examples + below. Click on 'Autofix and save' to update identifiers for all + projects in this manner and enable project-based semantic + identifiers. box_header: label_project: Project label_previous_identifier: Previous identifier @@ -429,15 +502,17 @@ en: title: Change work package identifiers heading: Enable project-based work package IDs? description: > - This will change IDs for all work packages in all projects in this instance. - Previous identifiers and URLs will continue to redirect properly. - This change will take some time to complete. + This will change IDs for all work packages in all projects in this + instance. Previous identifiers and URLs will continue to redirect + properly. This change will take some time to complete. confirm_button: Change identifiers checkbox_label: I understand that this will permanently change all work package IDs success_banner: Successfully updated work package identifier format. in_progress: - converting_banner_message: Project identifiers are currently being converted to semantic format. This may take some time. - reverting_banner_message: Project identifiers are currently being reverted to classic format. This may take some time. + converting_banner_message: Project identifiers are currently being converted to + semantic format. This may take some time. + reverting_banner_message: Project identifiers are currently being reverted to + classic format. This may take some time. workflows: tabs: default_transitions: "Default transitions" @@ -447,17 +522,20 @@ en: statuses_dialog: title: "Statuses" label: "Statuses enabled for this type" - caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." + caption: "Add or remove statuses you would like to associate with this type. + Removing a status will also delete the workflow associated with it." statuses_removal_dialog: title: "Remove statuses" heading: one: "Remove 1 status?" other: "Remove %{count} statuses?" - description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" + description: "Removing these statuses will make them unavailable to this type + and delete existing workflows. Are you sure you want to proceed?" confirm: "Remove" leave_confirmation: title: "Save changes before continuing?" - description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" + description: "You are about to leave this page but you have unsaved changes. + Would you like to save them before continuing?" ignore: "Ignore changes" save: "Save changes and continue" role_selector: @@ -468,12 +546,12 @@ en: description: "Add statuses to start configuring workflows for this role" info: database_deprecation_html: > - Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. - Your installation will remain functional with your current database, but anticipate incompatability - in future releases. -
- We have prepared [upgrade guides for all installation methods](upgrade_guide). - You can perform the upgrade ahead of the next release at any time by following the guides. + Starting with OpenProject 16.0, PostgreSQL 16 is required to use + OpenProject. Your installation will remain functional with your current + database, but anticipate incompatability in future releases.
We + have prepared [upgrade guides for all installation + methods](upgrade_guide). You can perform the upgrade ahead of the next + release at any time by following the guides. authentication: login_and_registration: "Login and registration" @@ -484,11 +562,14 @@ en: is_inactive: currently not displayed antivirus_scan: - not_processed_yet_message: "Downloading is blocked, as file was not scanned for viruses yet. Please try again later." - quarantined_message: "A virus was detected in file '%{filename}'. It has been quarantined and is not available for download." + not_processed_yet_message: "Downloading is blocked, as file was not scanned for + viruses yet. Please try again later." + quarantined_message: "A virus was detected in file '%{filename}'. It has been + quarantined and is not available for download." deleted_message: "A virus was detected in file '%{filename}'. The file has been deleted." deleted_by_admin: "The quarantined file '%{filename}' has been deleted by an administrator." - overridden_by_admin: "The quarantine for file '%{filename}' has been removed by %{user}. The file can now be acccessed." + overridden_by_admin: "The quarantine for file '%{filename}' has been removed by + %{user}. The file can now be acccessed." quarantined_attachments: container: "Container" delete: "Delete the quarantined file" @@ -497,8 +578,11 @@ en: attribute_help_texts: caption: "This short version will be displayed as caption of the attribute." - note_public: "Any text and images you add to this field are publicly visible to all logged in users." - text_overview: "In this view, you can create custom help texts for attributes view. When defined, these texts can be shown by clicking the help icon next to its belonging attribute." + note_public: "Any text and images you add to this field are publicly visible to + all logged in users." + text_overview: "In this view, you can create custom help texts for attributes + view. When defined, these texts can be shown by clicking the help icon + next to its belonging attribute." show_preview: "Preview text" add_new: "Add help text" edit_field_name: "Edit help text for %{attribute_field_name}" @@ -519,9 +603,13 @@ en: attribute_texts: name: Arbitrary name of the LDAP connection host: LDAP host name or IP address - login_map: The attribute key in LDAP that is used to identify the unique user login. Usually, this will be `uid` or `samAccountName`. - generic_map: The attribute key in LDAP that is mapped to the OpenProject `%{attribute}` attribute - admin_map_html: "Optional: The attribute key in LDAP that if present marks the OpenProject user an admin. Leave empty when in doubt." + login_map: The attribute key in LDAP that is used to identify the unique user + login. Usually, this will be `uid` or `samAccountName`. + generic_map: The attribute key in LDAP that is mapped to the OpenProject + `%{attribute}` attribute + admin_map_html: "Optional: The attribute key in LDAP that if + present marks the OpenProject user an admin. Leave empty when + in doubt." system_user_dn_html: | Enter the DN of the system user used for read-only access.
@@ -557,20 +645,27 @@ en: plain: "none" simple_tls: "LDAPS" start_tls: "STARTTLS" - plain_description: "Opens an unencrypted connection to the LDAP server. Not recommended for production." - simple_tls_description: "Use LDAPS. Requires a separate port on the LDAP server. This mode is often deprecated, we recommend using STARTTLS whenever possible." - start_tls_description: "Sends a STARTTLS command after connecting to the standard LDAP port. Recommended for encrypted connections." + plain_description: "Opens an unencrypted connection to the LDAP server. Not + recommended for production." + simple_tls_description: "Use LDAPS. Requires a separate port on the LDAP server. + This mode is often deprecated, we recommend using STARTTLS whenever + possible." + start_tls_description: "Sends a STARTTLS command after connecting to the + standard LDAP port. Recommended for encrypted connections." section_more_info_link_html: > - This section concerns the connection security of this LDAP authentication source. - For more information, visit
the Net::LDAP documentation. + This section concerns the connection security of this LDAP + authentication source. For more information, visit the + Net::LDAP documentation. tls_options: verify_peer: "Verify SSL certificate" verify_peer_description_html: > - Enables strict SSL verification of the certificate trusted chain. -
- Warning: Unchecking this option disables SSL verification of the LDAP server certificate. - This exposes your connection to Man in the Middle attacks. - tls_certificate_description: "If the LDAP server certificate is not in the trust sources of this system, you can add it manually here. Enter a PEM X509 certifiate string." + Enables strict SSL verification of the certificate trusted chain.
+ Warning: Unchecking this option disables SSL + verification of the LDAP server certificate. This exposes your + connection to Man in the Middle attacks. + tls_certificate_description: "If the LDAP server certificate is not in the trust + sources of this system, you can add it manually here. Enter a PEM X509 + certifiate string." forums: show: no_results_title_text: There are currently no posts for the forum. @@ -590,8 +685,8 @@ en: label_no_color: "No color" label_properties: "Properties" label_really_delete_color: > - Are you sure, you want to delete the following color? - Types using this color will not be deleted. + Are you sure, you want to delete the following color? Types using this + color will not be deleted. custom_actions: actions: @@ -610,26 +705,34 @@ en: custom_field_projects: is_for_all_blank_slate: heading: For all projects - description: This custom field is enabled in all projects since the "For all projects" option is checked. It cannot be deactivated for individual projects. + description: This custom field is enabled in all projects since the "For all + projects" option is checked. It cannot be deactivated for individual + projects. items: actions: "Item actions" blankslate: root: title: "Your list of items is empty" - description: "Start by adding items to the custom field of type hierarchy. Each item can be used to create a hierarchy bellow it. To navigate and create sub-items inside a hierarchy click on the created item." + description: "Start by adding items to the custom field of type hierarchy. Each + item can be used to create a hierarchy bellow it. To navigate and + create sub-items inside a hierarchy click on the created item." item: title: This item doesn't have any hierarchy level below description: Add items to this list to create sub-items inside another one delete_dialog: title: "Delete custom field item" heading: "Delete custom field item?" - description: "This action will irreversibly remove the item and all its sub-items. Any assigned values will be permanently deleted. If this field is required, removing items may cause existing work packages to become invalid." + description: "This action will irreversibly remove the item and all its + sub-items. Any assigned values will be permanently deleted. If this + field is required, removing items may cause existing work packages + to become invalid." placeholder: label: "Item label" short: "Short name" weight: "Weight" notice: - remember_items_and_projects: "Remember to set items and projects in the respective tabs for this custom field." + remember_items_and_projects: "Remember to set items and projects in the + respective tabs for this custom field." hierarchy: subitems: zero: no sub-items @@ -637,13 +740,20 @@ en: other: "%{count} sub-items" role_assignment: title: Role Assignment - description: You can automatically grant a certain project role to any user assigned to this project attribute, regardless of that user’s original role in that project. - warning: Depending on the role selected below, the user assigned to this project attribute might gain significantly more permissions than they previously had, including the ability to add new members and elevate their role. + description: You can automatically grant a certain project role to any user + assigned to this project attribute, regardless of that user’s original + role in that project. + warning: Depending on the role selected below, the user assigned to this project + attribute might gain significantly more permissions than they + previously had, including the ability to add new members and elevate + their role. role_field_label: "Project Role" - role_field_caption: This project role will automatically be granted to any user assigned to this project attribute + role_field_caption: This project role will automatically be granted to any user + assigned to this project attribute review_hint: > - There are %{user_count} who are already assigned to this project attribute in various projects. They - might get additional permissions and be added to projects they did not previously have access to. + There are %{user_count} who are already assigned to this project + attribute in various projects. They might get additional permissions + and be added to projects they did not previously have access to. review_button: Review users and permissions dialog: title: "Overview of users and permissions" @@ -661,16 +771,23 @@ en: is_enabled_globally: "Is enabled globally" enabled_in_project: "Enabled in project" contained_in_type: "Contained in type" - confirm_destroy_option: "Deleting an option will delete all of its occurrences (e.g. in work packages). Are you sure you want to delete it?" + confirm_destroy_option: "Deleting an option will delete all of its occurrences + (e.g. in work packages). Are you sure you want to delete it?" reorder_alphabetical: "Reorder values alphabetically" - reorder_confirmation: "Warning: The current order of available values as well as all unsaved values will be lost. Are you sure you want to continue?" + reorder_confirmation: "Warning: The current order of available values as well as + all unsaved values will be lost. Are you sure you want to continue?" placeholder_version_select: "Work package or project selection is required first" calculated_field_not_editable: "Non-editable attribute. This value is calculated automatically." no_role_assigment: "No role assignment" instructions: is_required: - all: "Mark the custom field as required. This will make it mandatory to fill in the field when creating new resources. Existing resources will not require a value when being updated." - project: "Required attributes need to be filled out by the user on project creation if the field is active ('For all projects' set or copying from a project/template in which the field is active). Existing projects will not require a value when being updated." + all: "Mark the custom field as required. This will make it mandatory to fill in + the field when creating new resources. Existing resources will not + require a value when being updated." + project: "Required attributes need to be filled out by the user on project + creation if the field is active ('For all projects' set or copying + from a project/template in which the field is active). Existing + projects will not require a value when being updated." is_for_all: all: "Mark the custom field as available in all existing and new projects." project: "Mark the attribute as available in all existing and new projects." @@ -683,14 +800,18 @@ en: editable: all: "Allow the field to be editable by users themselves." admin_only: - all: "Check to make this custom field only visible to administrators. Users without admin rights will not be able to view or edit it." - project: "Check to make this attribute only visible to administrators. Users without admin rights will not be able to view or edit it." + all: "Check to make this custom field only visible to administrators. Users + without admin rights will not be able to view or edit it." + project: "Check to make this attribute only visible to administrators. Users + without admin rights will not be able to view or edit it." is_filter: all: > Allow the custom field to be used in a filter in work package views. - Note that only with 'For all projects' selected, the custom field will show up in global views. + Note that only with 'For all projects' selected, the custom field will + show up in global views. formula: - project: "Add numeric values or type / to search for an attribute or a mathematical operator." + project: "Add numeric values or type / to search for an attribute or a + mathematical operator." regexp: all: "eg. ^[A-Z0-9]+$" project: "eg. ^[A-Z0-9]+$" @@ -698,7 +819,8 @@ en: all: "0 means no restriction" project: "0 means no restriction" has_comment: - project: "Allows the user to add a comment related to the project attribute when selecting the value in the project overview." + project: "Allows the user to add a comment related to the project attribute when + selecting the value in the project overview." tab: no_results_title_text: There are currently no custom fields. @@ -708,17 +830,22 @@ en: error_dialog: title: "Error with Calculated value" errors: - unknown: "An unknown error occurred. Please review the formula for this Calculated value." - mathematical: "The mathematical formula leads to an error. Please review the project calculation attribute and try again." - missing_value: The attribute "%{custom_field_name}" is required by this Calculated value, but is empty. - disabled_value: The attribute "%{custom_field_name}" is required by this Calculated value, but is disabled for the project. + unknown: "An unknown error occurred. Please review the formula for this + Calculated value." + mathematical: "The mathematical formula leads to an error. Please review the + project calculation attribute and try again." + missing_value: The attribute "%{custom_field_name}" is required by this + Calculated value, but is empty. + disabled_value: The attribute "%{custom_field_name}" is required by this + Calculated value, but is disabled for the project. concatenation: single: "or" danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." - confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." + confirmation_live_message_unchecked: "The button to proceed is now inactive. You + need to tick the checkbox to continue." departments: edit: "Edit department" @@ -727,8 +854,9 @@ en: blankslate: heading: "Your organization has no departments" description: > - Start by adding departments or users to the organization. Each department can be used to create - a hierarchy below it, to navigate and create sub-department inside a hierarchy click on the created item. + Start by adding departments or users to the organization. Each + department can be used to create a hierarchy below it, to navigate and + create sub-department inside a hierarchy click on the created item. add_button: "Add" detail_blankslate: heading: "This department doesn’t have any hierarchy level below" @@ -740,7 +868,8 @@ en: move_user_dialog: title: "User already in a department" heading: "Move user to this department?" - description: "%{user} is currently a member of %{from_department}. Moving them will remove them from that department." + description: "%{user} is currently a member of %{from_department}. Moving them + will remove them from that department." confirm: "Move user" context_menu: add_sub_department: "Add sub-department" @@ -763,7 +892,8 @@ en: mcp_configurations: server_url_component: - caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." + caption: "The URL at which the OpenProject MCP server will be reachable. + Required for setting up MCP clients." label: "Server URL" op_dry_validation: @@ -818,9 +948,9 @@ en: global_search: title: - all_projects: 'Search for "%{search_term}" in all projects' - current_project: 'Search for "%{search_term}" in %{project_name}' - project_and_subprojects: 'Search for "%{search_term}" in %{project_name} and all subprojects' + all_projects: "Search for \"%{search_term}\" in all projects" + current_project: "Search for \"%{search_term}\" in %{project_name}" + project_and_subprojects: "Search for \"%{search_term}\" in %{project_name} and all subprojects" placeholder: "Search in %{app_title}" overwritten_tabs: all: "All" @@ -831,7 +961,8 @@ en: edit: synchronized_groups: "Synchronized groups" index: - description: By grouping users together, you can add them as members to the same projects or assign the same global roles to them. + description: By grouping users together, you can add them as members to the same + projects or assign the same global roles to them. table_component: blank_slate: description: You can define named groups of users with specific permissions. @@ -844,13 +975,15 @@ en: synchronized_groups: blankslate: action: Authentication settings - description: When this group is automatically synced with groups in external identity providers like OpenID, they will appear here. You can set this up in your Authentication settings. + description: When this group is automatically synced with groups in external + identity providers like OpenID, they will appear here. You can set + this up in your Authentication settings. title: No synchronized groups yet incoming_mails: ignore_filenames: > - Specify a list of names to ignore when processing attachments for incoming mails (e.g., signatures or icons). - Enter one filename per line. + Specify a list of names to ignore when processing attachments for incoming + mails (e.g., signatures or icons). Enter one filename per line. portfolios: index: @@ -881,10 +1014,12 @@ en: notification_email_subject: "Your project '%{project_name}' has been created" complete_wizard_link: "Complete the %{artefact_name}" delete: - scheduled: "Deletion has been scheduled and is performed in the background. You will be notified of the result." + scheduled: "Deletion has been scheduled and is performed in the background. You + will be notified of the result." schedule_failed: "Project cannot be deleted: %{errors}" failed: "Deletion of project '%{name}' has failed" - failed_text: "The request to delete project '%{name}' has failed. The project was left archived." + failed_text: "The request to delete project '%{name}' has failed. The project + was left archived." completed: "Deletion of project '%{name}' completed" completed_text: "The request to delete project '%{name}' has been completed." completed_text_children: "Additionally, the following subprojects have been deleted:" @@ -907,7 +1042,8 @@ en: delete_modal: title: "Delete project list" heading: "Delete this project list?" - text: "This action will not delete any project the list contains. Are you sure you want to delete this project list?" + text: "This action will not delete any project the list contains. Are you sure + you want to delete this project list?" settings: header_details: Basic details header_status: Status @@ -916,35 +1052,44 @@ en: button_update_status_description: Update status description button_update_parent_project: Update parent project public_warning: > - This project is public. - Anyone who has access to this instance will be able to view and interact with this project depending on their role and associated permissions. - Sub-projects are not affected and have their own settings. + This project is public. Anyone who has access to this instance will be + able to view and interact with this project depending on their role and + associated permissions. Sub-projects are not affected and have their own + settings. public_confirmation: - checkbox: "I understand that this will make the previously private content public" + checkbox: "I understand that this will make the previously private content + public" title: "Make this project public?" description: > - Anyone who has access to this instance will be able to view and interact with this project depending on their role and authentication settings. - Sub-projects are not affected and have their own settings. + Anyone who has access to this instance will be able to view and + interact with this project depending on their role and authentication + settings. Sub-projects are not affected and have their own settings. private_confirmation: - checkbox: "I understand that this will make the previously public content private." + checkbox: "I understand that this will make the previously public content + private." title: "Make this project private?" description: > - The project will only be visible to project members depending on their role and associated permissions. - Sub-projects are not affected and have their own settings. + The project will only be visible to project members depending on their + role and associated permissions. Sub-projects are not affected and + have their own settings. change_identifier: Change identifier change_identifier_dialog_title: Change project identifier - change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers + or underscores. Max 10 characters. Must start with a letter." change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." change_identifier_warning: > - This will permanently change identifiers and URLs of all work packages in this project. - The previous identifier and URLs will nevertheless continue to redirect properly. + This will permanently change identifiers and URLs of all work packages + in this project. The previous identifier and URLs will nevertheless + continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. project_template_label: "Template for projects" - project_template_caption: "Select a template project to be used as the default for new subitems of this type." + project_template_caption: "Select a template project to be used as the default + for new subitems of this type." program_template_label: "Template for programs" - program_template_caption: "Select a template program to be used as the default for new subitems of this type." + program_template_caption: "Select a template program to be used as the default + for new subitems of this type." no_template: "No predefined template" template: menu_title: "Template" @@ -953,9 +1098,11 @@ en: members: excluded_roles_label: "Roles to exclude when template is applied" excluded_roles_caption: > - When creating a new project from this template, the roles selected above will be omitted. - This allows you to select which members will be excluded based on their project roles. - Users can then access the template for viewing purposes without being granted access to new projects created from it. + When creating a new project from this template, the roles selected + above will be omitted. This allows you to select which members will + be excluded based on their project roles. Users can then access the + template for viewing purposes without being granted access to new + projects created from it. actions: label_enable_all: "Enable all" label_disable_all: "Disable all" @@ -972,7 +1119,11 @@ en: life_cycle: header: title: "Project life cycle" - description_html: 'The active project phases define this project''s life cycle and are defined in the administration settings. Enabled phases will be displayed in your project overview.' + description_html: "The active project phases define this project's life cycle + and are defined in the administration settings. Enabled phases will + be displayed in your project overview." non_defined: "No phases are currently defined." section_header: "Phases" step: @@ -982,9 +1133,13 @@ en: project_custom_fields: header: title: "Project attributes" - description_html: - 'These project attributes will be displayed in your project overview page under their respective sections. You can enable or disable individual attributes. - Project attributes and sections are defined in the administration settings by the administrator of the instance. ' + description_html: "These project attributes will be displayed in your project overview page + under their respective sections. You can enable or disable + individual attributes. Project attributes and sections are defined + in the administration settings by the administrator + of the instance. " filter: label: "Search project attribute" actions: @@ -993,12 +1148,17 @@ en: remove_from_project: "Remove from project" is_for_all_blank_slate: heading: For all projects - description: This project attribute is enabled in all projects since the "For all projects" option is checked. It cannot be deactivated for individual projects. - enabled_via_assignee_when_submitted_html: This project attribute cannot be disabled since it is set as assignee when submitted for project initiation requests. + description: This project attribute is enabled in all projects since the "For + all projects" option is checked. It cannot be deactivated for + individual projects. + enabled_via_assignee_when_submitted_html: This project attribute cannot be + disabled since it is set as assignee when submitted for project initiation + requests. types: no_results_title_text: There are currently no types available. form: - enable_type_in_project: 'Enable type "%{type}"' + enable_type_in_project: "Enable type \"%{type}\"" versions: no_results_title_text: There are currently no versions for the project. no_results_content_text: Create a new version @@ -1010,23 +1170,39 @@ en: new_label: "New priority" creation_wizard: errors: - no_work_package_type: "Failed to enable project initiation request because it requires at least one active work package type and this project has none. Please add at least one work package type to this project." - no_status_when_submitted: "Failed to enable project initiation request because work package type %{type} requires at least one status associated with it. Please enable at least one status workflow for this work package type." + no_work_package_type: "Failed to enable project initiation request because it + requires at least one active work package type and this project has + none. Please add at least one work package type to this project." + no_status_when_submitted: "Failed to enable project initiation request because + work package type %{type} requires at least one status associated + with it. Please enable at least one status workflow for this work + package type." export: - description_attachment_export: "The generated artifact will be saved as a PDF attachment to the artifact work package." - description_file_link_export: "The artifact work package will have a file link to a PDF stored in an external file storage. Requires a working file storage with automatically-managed project folders for this project. At the moment only Nextcloud file storages are supported." - description_file_storage_selection: "Select which of the configured external file storages should be used." + description_attachment_export: "The generated artifact will be saved as a PDF + attachment to the artifact work package." + description_file_link_export: "The artifact work package will have a file link + to a PDF stored in an external file storage. Requires a working file + storage with automatically-managed project folders for this project. + At the moment only Nextcloud file storages are supported." + description_file_storage_selection: "Select which of the configured external + file storages should be used." external_file_storage: "External file storage" label_artifact_export: "Artifact export" label_attachment_export: "Save as work package file attachment" - label_file_link_export: "Upload file to external file storage and add file link to work package" + label_file_link_export: "Upload file to external file storage and add file link + to work package" pdf_file_storage: "PDF file storage" unavailable: "unavailable" label_request_submission: "Request submission" project_attributes_description: > - Select which project attributes should be included in the project initiation request. - This list only includes [project attributes](project_attributes_url) enabled for for this project. - enabled_because_required_html: This project attribute cannot be disabled for this project initiation request since it is defined as required. This can be changed in the administration settings by the administrator of the instance. + Select which project attributes should be included in the project + initiation request. This list only includes [project + attributes](project_attributes_url) enabled for for this project. + enabled_because_required_html: This project attribute cannot be disabled for + this project initiation request since it is defined as required. This + can be changed in the administration settings by the administrator of + the instance. status: button_edit: Edit status wizard: @@ -1034,7 +1210,8 @@ en: sections: "Sections" title: "Project initiation request" no_help_text: "This attribute has no help text defined." - success: "Project attributes saved and artifact work package created successfully." + success: "Project attributes saved and artifact work package created + successfully." progress_label: "%{current} of %{total}" create_artifact_work_package_error: "Failed to create artifact work package" create_artifact_storage_error: "Failed to store artifact in file storage" @@ -1076,24 +1253,45 @@ en: will_remove_the_users_role: "This will remove the user’s role from this project." will_remove_the_groups_role: "This will remove the group role from this project." however_work_packages_shared_with_user_html: - one: "However, %{shared_work_packages_link} has also been shared with this user." - other: "However, %{shared_work_packages_link} have also been shared with this user." + one: "However, %{shared_work_packages_link} has also been shared with this + user." + other: "However, %{shared_work_packages_link} have also been shared with this + user." however_work_packages_shared_with_group_html: - one: "However, %{shared_work_packages_link} has also been shared with this group." - other: "However, %{shared_work_packages_link} have also been shared with this group." - remove_work_packages_shared_with_user_too: "A user that has been removed as member can still access shared work packages. Would you like to remove the shares too?" - remove_work_packages_shared_with_group_too: "A group that has been removed as member can still access shared work packages. Would you like to remove the shares too?" + one: "However, %{shared_work_packages_link} has also been shared with this + group." + other: "However, %{shared_work_packages_link} have also been shared with this + group." + remove_work_packages_shared_with_user_too: "A user that has been removed as + member can still access shared work packages. Would you like to remove + the shares too?" + remove_work_packages_shared_with_group_too: "A group that has been removed as + member can still access shared work packages. Would you like to remove + the shares too?" will_not_affect_inherited_shares: "(This will not affect work packages shared with their group)." - can_remove_direct_but_not_shared_roles: "You can remove this user as a direct project member but a group they are in is also a member of this project, so they will continue being a member via the group." + can_remove_direct_but_not_shared_roles: "You can remove this user as a direct + project member but a group they are in is also a member of this project, + so they will continue being a member via the group." also_work_packages_shared_with_user_html: one: "Also, %{shared_work_packages_link} has been shared with this user." other: "Also, %{shared_work_packages_link} have been shared with this user." - remove_project_membership_or_work_package_shares_too: "Do you want to remove just the user as a direct member (and keep the shares) or remove the work package shares too?" - will_remove_all_user_access_priveleges: "Deleting this member will remove all access privileges of the user to the project. The user will still exist as part of the instance." - will_remove_all_group_access_priveleges: "Deleting this member will remove all access privileges of the group to the project. The group will still exist as part of the instance." - cannot_delete_inherited_membership: "You cannot delete this member because they belong to a group that is itself a member of this project." - cannot_delete_inherited_membership_note_admin_html: "You can either remove the group as a member of the project or this specific member from the group in the %{administration_settings_link}." - cannot_delete_inherited_membership_note_non_admin: "You can either remove the group as a member of the project or contact your administrator to remove this specific member from the group." + remove_project_membership_or_work_package_shares_too: "Do you want to remove + just the user as a direct member (and keep the shares) or remove the + work package shares too?" + will_remove_all_user_access_priveleges: "Deleting this member will remove all + access privileges of the user to the project. The user will still exist + as part of the instance." + will_remove_all_group_access_priveleges: "Deleting this member will remove all + access privileges of the group to the project. The group will still + exist as part of the instance." + cannot_delete_inherited_membership: "You cannot delete this member because they + belong to a group that is itself a member of this project." + cannot_delete_inherited_membership_note_admin_html: "You can either remove the + group as a member of the project or this specific member from the group + in the %{administration_settings_link}." + cannot_delete_inherited_membership_note_non_admin: "You can either remove the + group as a member of the project or contact your administrator to remove + this specific member from the group." delete_work_package_shares_dialog: title: "Revoke work package shares" shared_with_this_user_html: @@ -1103,15 +1301,24 @@ en: one: "%{all_shared_work_packages_link} has been shared with this group." other: "%{all_shared_work_packages_link} have been shared with this group." shared_with_permission_html: - one: "Only %{shared_work_packages_link} has been shared with %{shared_role_name} permissions." - other: "Only %{shared_work_packages_link} have been shared with %{shared_role_name} permissions." - revoke_all_or_with_role: "Would you like to revoke access to all shared work packages, or only those with %{shared_role_name} permissions?" + one: "Only %{shared_work_packages_link} has been shared with %{shared_role_name} + permissions." + other: "Only %{shared_work_packages_link} have been shared with + %{shared_role_name} permissions." + revoke_all_or_with_role: "Would you like to revoke access to all shared work + packages, or only those with %{shared_role_name} permissions?" will_not_affect_inherited_shares: "(This will not affect work packages shared with their group)." cannot_remove_inherited: "The work packages shares shared via groups cannot be removed." - cannot_remove_inherited_with_role: "The work packages shares with role %{shared_role_name} are shared via groups and cannot be removed." - cannot_remove_inherited_note_admin_html: "You can either revoke the share to the group or remove this specific member from the group in the %{administration_settings_link}." - cannot_remove_inherited_note_non_admin: "You can either revoke the share to the group or contact your administrator to remove this specific member from the group." - will_revoke_directly_granted_access: "This action will revoke their access to all of them, but the work packages shared with a group." + cannot_remove_inherited_with_role: "The work packages shares with role + %{shared_role_name} are shared via groups and cannot be removed." + cannot_remove_inherited_note_admin_html: "You can either revoke the share to the + group or remove this specific member from the group in the + %{administration_settings_link}." + cannot_remove_inherited_note_non_admin: "You can either revoke the share to the + group or contact your administrator to remove this specific member from + the group." + will_revoke_directly_granted_access: "This action will revoke their access to + all of them, but the work packages shared with a group." will_revoke_access_to_all: "This action will revoke their access to all of them." my: @@ -1119,12 +1326,17 @@ en: dialog: token/api: dialog_title: "Create new API token" - attention_text: "Treat API tokens like passwords. Anyone with this token will have access to information from this instance, share it only with trusted users." - dialog_body: "This token will allow third-party applications to communicate with your instance. To differentiate the new API token, please give it a name." + attention_text: "Treat API tokens like passwords. Anyone with this token will + have access to information from this instance, share it only with + trusted users." + dialog_body: "This token will allow third-party applications to communicate with + your instance. To differentiate the new API token, please give it a + name." create_button: "Create" name_label: "Token name" created_dialog: - one_time_warning: "This is the only time you will see this token. Make sure to copy it now." + one_time_warning: "This is the only time you will see this token. Make sure to + copy it now." token/api: title: "The API token has been generated" token/rss: @@ -1133,11 +1345,16 @@ en: failed_to_create_token: "Failed to create access token: %{error}" failed_to_revoke_token: "Failed to revoke access token: %{error}" notice_reset_token: "A new %{type} token has been generated. Your access token is:" - token_value_warning: "Note: This is the only time you will see this token, make sure to copy it now." + token_value_warning: "Note: This is the only time you will see this token, make + sure to copy it now." no_results_title_text: "There are currently no access tokens available." - notice_api_token_revoked: "The API token has been deleted. To create a new token please use the button in the API section." - notice_rss_token_revoked: "The RSS token has been deleted. To create a new token please use the link in the RSS section." - notice_ical_token_revoked: 'iCalendar token "%{token_name}" for calendar "%{calendar_name}" of project "%{project_name}" has been revoked. The iCalendar URL with this token is now invalid.' + notice_api_token_revoked: "The API token has been deleted. To create a new token + please use the button in the API section." + notice_rss_token_revoked: "The RSS token has been deleted. To create a new token + please use the link in the RSS section." + notice_ical_token_revoked: "iCalendar token \"%{token_name}\" for calendar + \"%{calendar_name}\" of project \"%{project_name}\" has been revoked. + The iCalendar URL with this token is now invalid." password_confirmation_dialog: confirmation_required: "You need to enter your account password to confirm this change." title: "Confirm your password to continue" @@ -1174,9 +1391,12 @@ en: browser_session: "(Browser session)" current: "Current (this device)" title: "Session management" - instructions: "You are logged in to your account through the following devices. Revoke sessions that you do not recognise or from devices you do not control." + instructions: "You are logged in to your account through the following devices. + Revoke sessions that you do not recognise or from devices you do not + control." may_not_delete_current: "You cannot delete your current session." - deletion_warning: "Are you sure you want to revoke this session? You will be logged out on this device." + deletion_warning: "Are you sure you want to revoke this session? You will be + logged out on this device." groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. @@ -1228,21 +1448,30 @@ en: label: "Role in %{project}" no_roles_found: "No roles were found" description: > - This is the role that the user will receive when they join your project. The role defines which actions they are allowed to take and which information they are allowed to see. - [Learn more about roles and permissions.](docs_url) + This is the role that the user will receive when they join your + project. The role defines which actions they are allowed to take and + which information they are allowed to see. [Learn more about roles and + permissions.](docs_url) required: "Please select a role" message: label: "Invitation message" - description: "We will send an email to the user, to which you can add a personal message here. An explanation for the invitation could be useful, or perhaps a bit of information regarding the project to help them get started." + description: "We will send an email to the user, to which you can add a personal + message here. An explanation for the invitation could be useful, or + perhaps a bit of information regarding the project to help them get + started." summary: next_button: "Send invitation" success_message: - user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." - placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." - group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." + user: "The user can now log in to access %{project}. Meanwhile you can already + plan with that user and assign work packages for instance." + placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you + can already plan with that user and assign work packages for + instance." + group: "The group is now a part of %{project}. Meanwhile you can already plan + with that group and assign work packages for instance." working_hours: current_schedule: title: "Current schedule" @@ -1255,7 +1484,8 @@ en: not_set: "Not set" future: title: "Future schedules" - description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." + description: "Plan working schedule changes ahead of time. Once the date arrives + your working schedules will be updated automatically." add_button: "Add future schedule" blank_title: "No future schedules planned" blank_description: "Create a future schedule to plan changes ahead of time" @@ -1281,7 +1511,10 @@ en: per_day: "per day" per_week: "per week" total_work_hours: "Total work hours" - availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." + availability_description: "The availability factor represents the actual + percentage of your working time dedicated to project tasks. This + accounts for meetings, emails, administrative work, and other + non-project activities." availability_factor: "Availability factor" availability_factor_caption: "Define the percentage of your working time dedicated to project work." total_available_hours: "Total available work hours" @@ -1300,23 +1533,27 @@ en: other: "%{count} working days" user_preferences: disable_keyboard_shortcuts_caption: > - You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. + You can choose to disable default [keyboard shortcuts](docs_url) if you + use a screen reader or want to avoid accidentally triggering an action + with a shortcut. page: text: "Text" placeholder_users: right_to_manage_members_missing: > - You are not allowed to delete the placeholder user. - You do not have the right to manage members for all projects that the placeholder user is a member of. + You are not allowed to delete the placeholder user. You do not have the + right to manage members for all projects that the placeholder user is a + member of. delete_tooltip: "Delete placeholder user" deletion_info: heading_html: "Delete placeholder user %{name}" data_consequences: > - All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) - will be reassigned to an account called "Deleted user". + All occurrences of the placeholder user (e.g., as assignee, responsible + or other user values) will be reassigned to an account called "Deleted + user". - As the data of every deleted account is reassigned to this account - it will not be possible to distinguish the data the user created from - the data of another deleted account. + As the data of every deleted account is reassigned to this account it + will not be possible to distinguish the data the user created from the + data of another deleted account. irreversible: "This action is irreversible" confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: @@ -1326,7 +1563,8 @@ en: It can be used for highlighting work packages in the table. admin: default: - caption: Making this priority default will override the previous default priority. + caption: Making this priority default will override the previous default + priority. reactions: action_title: "React" @@ -1390,15 +1628,20 @@ en: select_projects_description: Select the projects in which you would like to use this type. settings: tab: "Settings" - type_color_text: The selected color distinguishes different types in Gantt charts or work packages tables. It is therefore recommended to use a strong color. + type_color_text: The selected color distinguishes different types in Gantt + charts or work packages tables. It is therefore recommended to use a + strong color. subject_configuration: tab: "Subject configuration" manually_editable_subjects: label: "Manually editable subjects" - caption: "Users can manually enter and edit work package subjects without restrictions." + caption: "Users can manually enter and edit work package subjects without + restrictions." automatically_generated_subjects: label: "Automatically generated subjects" - caption: "Define a pattern using referenced attributes and text to automatically generate work package subjects. Users will not be able to manually edit subjects." + caption: "Define a pattern using referenced attributes and text to automatically + generate work package subjects. Users will not be able to manually + edit subjects." token: label_with_context: "%{attribute_context}: %{attribute_label}" context: @@ -1407,11 +1650,15 @@ en: project: "Project" pattern: label: "Subject pattern" - caption: Create patterns by adding text, or type "/" to search for [supported attributes](attributes_url). - insert_as_text: 'No attributes found. Add as text: "%{word}"' + caption: Create patterns by adding text, or type "/" to search for [supported + attributes](attributes_url). + insert_as_text: "No attributes found. Add as text: \"%{word}\"" export_configuration: tab: "Generate PDF" - intro: "Select which templates from those that are available you would like to enable for this type. The template determines the design and attributes visible in the exported PDF of a work package using this type. The first template on the list is selected by default." + intro: "Select which templates from those that are available you would like to + enable for this type. The template determines the design and + attributes visible in the exported PDF of a work package using this + type. The first template on the list is selected by default." pdf_export_templates: label: "PDF Export templates" actions: @@ -1420,11 +1667,14 @@ en: versions: overview: - work_packages_in_archived_projects: "The version is shared with archived projects which still have work packages assigned to this version. These are counted, but will not appear in the linked views." + work_packages_in_archived_projects: "The version is shared with archived + projects which still have work packages assigned to this version. These + are counted, but will not appear in the linked views." no_results_title_text: There are currently no work packages assigned to this version. wiki: - page_not_editable_index: The requested page does not (yet) exist. You have been redirected to the index of all wiki pages. + page_not_editable_index: The requested page does not (yet) exist. You have been + redirected to the index of all wiki pages. no_results_title_text: There are currently no wiki pages. print_hint: This will print the content of this wiki page without any navigation bars. @@ -1483,22 +1733,26 @@ en: delete_dialog: title: "Delete work package" heading: "Permanently delete this work package?" - description: 'Are you sure you want to delete the work package "%{name}"?' - confirm_descendants_deletion: "I acknowledge that ALL descendants of this work package will be recursively removed." + description: "Are you sure you want to delete the work package \"%{name}\"?" + confirm_descendants_deletion: "I acknowledge that ALL descendants of this work + package will be recursively removed." cross_project_warning: "Work packages from the following projects will be deleted: %{projects}" bulk_delete_dialog: title: "Delete %{count} work packages" heading: "Permanently delete these %{count} work packages?" - description: "The following work packages, including children and all associated data, will permanently be deleted:" - description_with_children: "The following work packages, including child work packages, and all associated data will be permanently deleted:" - confirm_children_deletion: "I acknowledge that all selected work packages and their children will be permanently deleted." + description: "The following work packages, including children and all associated + data, will permanently be deleted:" + description_with_children: "The following work packages, including child work + packages, and all associated data will be permanently deleted:" + confirm_children_deletion: "I acknowledge that all selected work packages and + their children will be permanently deleted." cross_project_warning: "These work packages span multiple projects: %{projects}" children_label: "The following children will also be deleted:" datepicker_modal: banner: description: automatic_mobile: "Start date derived." - click_on_show_relations_to_open_gantt: 'Click on "%{button_name}" for Gantt overview.' + click_on_show_relations_to_open_gantt: "Click on \"%{button_name}\" for Gantt overview." manual_mobile: "Ignoring relations." manual_gap_between_predecessors: "There is a gap between this and all predecessors." manual_overlap_with_predecessors: "Overlaps with at least one predecessor." @@ -1511,7 +1765,9 @@ en: manually_scheduled: "Manually scheduled. Dates not affected by relations." blankslate: title: "No predecessors" - description: "To enable automatic scheduling, this work package needs to have at least one predecessor. It will then automatically be scheduled to start after the closest predecessor." + description: "To enable automatic scheduling, this work package needs to have at + least one predecessor. It will then automatically be scheduled to + start after the closest predecessor." ignore_non_working_days: title: "Working days only" mode: @@ -1546,25 +1802,38 @@ en: move_failed: "The work packages could not be moved." could_not_be_saved: "The following work packages could not be saved:" none_could_be_saved: "None of the %{total} work packages could be updated." - x_out_of_y_could_be_saved: "%{failing} out of the %{total} work packages could not be updated while %{success} could." - selected_because_descendants: "While %{selected} work packages were selected, in total %{total} work packages are affected which includes descendants." + x_out_of_y_could_be_saved: "%{failing} out of the %{total} work packages could + not be updated while %{success} could." + selected_because_descendants: "While %{selected} work packages were selected, in + total %{total} work packages are affected which includes descendants." descendant: "descendant of selected" move: - no_common_statuses_exists: "There is no status available for all selected work packages. Their status cannot be changed." - unsupported_for_multiple_projects: "Bulk move/copy is not supported for work packages from multiple projects" + no_common_statuses_exists: "There is no status available for all selected work + packages. Their status cannot be changed." + unsupported_for_multiple_projects: "Bulk move/copy is not supported for work + packages from multiple projects" current_type_not_available_in_target_project: > - The current type of the work package is not enabled in the target project. - Please enable the type in the target project if you'd like it to remain unchanged. - Otherwise, select an available type in the target project from the list. + The current type of the work package is not enabled in the target + project. Please enable the type in the target project if you'd like it + to remain unchanged. Otherwise, select an available type in the target + project from the list. bulk_current_type_not_available_in_target_project: > - The current types of the work packages aren't enabled in the target project. - Please enable the types in the target project if you'd like them to remain unchanged. - Otherwise, select an available type in the target project from the list. + The current types of the work packages aren't enabled in the target + project. Please enable the types in the target project if you'd like + them to remain unchanged. Otherwise, select an available type in the + target project from the list. sharing: missing_workflow_warning: title: "Workflow missing for work package sharing" - message: "No workflow is configured for the 'Work package editor' role. Without a workflow, the shared with user cannot alter the status of the work package. Workflows can be copied. Select a source type (e.g. 'Task') and source role (e.g. 'Member'). Then select the target types. To start with, you could select all the types as targets. Finally, select the 'Work package editor' role as the target and press 'Copy'. After having thus created the defaults, fine tune the workflows as you do for every other role." + message: "No workflow is configured for the 'Work package editor' role. Without + a workflow, the shared with user cannot alter the status of the work + package. Workflows can be copied. Select a source type (e.g. 'Task') + and source role (e.g. 'Member'). Then select the target types. To + start with, you could select all the types as targets. Finally, select + the 'Work package editor' role as the target and press 'Copy'. After + having thus created the defaults, fine tune the workflows as you do + for every other role." link_message: "Configure the workflows in the administration." summary: @@ -1605,32 +1874,42 @@ en: label_relates_plural: "related to" label_relates_to_singular: "related to" label_relates_to_plural: "related to" - relates_description: "Creates a visible link between the two work packages with no additional effect" - relates_to_description: "Creates a visible link between the two work packages with no additional effect" + relates_description: "Creates a visible link between the two work packages with + no additional effect" + relates_to_description: "Creates a visible link between the two work packages + with no additional effect" label_precedes_singular: "successor (after)" label_precedes_plural: "successors (after)" - precedes_description: "The related work package necessarily needs to start after this one finishes" + precedes_description: "The related work package necessarily needs to start after + this one finishes" label_follows_singular: "predecessor (before)" label_follows_plural: "predecessors (before)" - follows_description: "The related work package necessarily needs to finish before this one can start" + follows_description: "The related work package necessarily needs to finish + before this one can start" label_child_singular: "child" label_child_plural: "children" new_child: "Create new child" - new_child_description: "Creates a related work package as a sub-item of the current (parent) work package" + new_child_description: "Creates a related work package as a sub-item of the + current (parent) work package" child: "Child" - child_description: "Makes the related work package a sub-item of the current (parent) work package" + child_description: "Makes the related work package a sub-item of the current + (parent) work package" parent: "Parent" - parent_description: "Makes the related work package a parent of the current (child) work package" + parent_description: "Makes the related work package a parent of the current + (child) work package" label_closest: "Closest" label_blocks_singular: "blocks" label_blocks_plural: "blocks" - blocks_description: "The related work package cannot be closed until this one is closed first" + blocks_description: "The related work package cannot be closed until this one is + closed first" label_blocked_singular: "blocked by" label_blocked_plural: "blocked by" label_blocked_by_singular: "blocked by" label_blocked__by_plural: "blocked by" - blocked_description: "This work package cannot be closed until the related one is closed first" - blocked_by_description: "This work package cannot be closed until the related one is closed first" + blocked_description: "This work package cannot be closed until the related one + is closed first" + blocked_by_description: "This work package cannot be closed until the related + one is closed first" label_duplicates_singular: "duplicates" label_duplicates_plural: "duplicates" duplicates_description: "This is a copy of the related work package" @@ -1642,13 +1921,16 @@ en: duplicated_description: "The related work package is a copy of this" label_includes_singular: "includes" label_includes_plural: "includes" - includes_description: "Marks the related work package as including this one with no additional effect" + includes_description: "Marks the related work package as including this one with + no additional effect" label_partof_singular: "part of" label_partof_plural: "part of" label_part_of_singular: "part of" label_part_of_plural: "part of" - partof_description: "Marks the related work package as being part of this one with no additional effect" - part_of_description: "Marks the related work package as being part of this one with no additional effect" + partof_description: "Marks the related work package as being part of this one + with no additional effect" + part_of_description: "Marks the related work package as being part of this one + with no additional effect" label_requires_singular: "requires" label_requires_plural: "requires" requires_description: "Marks the related work package as a requirement to this one" @@ -1666,27 +1948,38 @@ en: account: delete: "Delete account" delete_confirmation: "Are you sure you want to delete the account?" - deletion_pending: "Account has been scheduled for deletion. Note that this process takes place in the background. It might take a few moments until the user is fully deleted." + deletion_pending: "Account has been scheduled for deletion. Note that this + process takes place in the background. It might take a few moments until + the user is fully deleted." deletion_info: data_consequences: - other: "All user-specific data will be deleted. The user's activity in shared views such as work packages and meetings will not be deleted but instead be associated with a generic 'Deleted user' that cannot be linked to the original account." - self: "All user-specific data will be deleted. Your activity in shared views such as work packages and meetings will not be deleted but instead be associated with a generic 'Deleted user' that cannot be linked to your original account." + other: "All user-specific data will be deleted. The user's activity in shared + views such as work packages and meetings will not be deleted but + instead be associated with a generic 'Deleted user' that cannot be + linked to the original account." + self: "All user-specific data will be deleted. Your activity in shared views + such as work packages and meetings will not be deleted but instead be + associated with a generic 'Deleted user' that cannot be linked to your + original account." heading: "Delete %{name}'s account?" login_consequences: - other: "This account will immediately be removed from the system and the user will no longer be able to log in with their credentials." - self: "Your account will immediately be removed from the system and you will no longer be able to log in using your credentials." + other: "This account will immediately be removed from the system and the user + will no longer be able to log in with their credentials." + self: "Your account will immediately be removed from the system and you will no + longer be able to log in using your credentials." error_inactive_activation_by_mail: > - Your account has not yet been activated. - To activate your account, click on the link that was emailed to you. + Your account has not yet been activated. To activate your account, click + on the link that was emailed to you. error_inactive_manual_activation: > - Your account has not yet been activated. - Please wait for an administrator to activate your account. + Your account has not yet been activated. Please wait for an administrator + to activate your account. error_self_registration_disabled: > - User registration is disabled on this system. Please ask an administrator to create an - account for you. + User registration is disabled on this system. Please ask an administrator + to create an account for you. error_self_registration_limited_provider: > - User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the - account for you or change the self registration limit for this provider. + User registration is limited for the Single sign-on provider '%{name}'. + Please ask an administrator to activate the account for you or change the + self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" auth_source_login_html: Please login as %{login} to activate your account. @@ -1818,6 +2111,14 @@ en: resource: "Resource" oauth_client: client: "Client ID" + persisted_query: + name: "Name" + views: "Views" + persisted_view: + name: "Name" + query: "Query" + parent: "Parent view" + public: "Public" project: active_value: true: "unarchived" @@ -1983,18 +2284,23 @@ en: dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" - auto_hide_popups_caption: "When enabled, the green success banners will automatically disappear after 5 seconds." + auto_hide_popups_caption: "When enabled, the green success banners will + automatically disappear after 5 seconds." warn_on_leaving_unsaved: "Warn me when leaving a work package with unsaved changes" increase_theme_contrast: "Increase theme contrast" increase_contrast: "Increase contrast" increase_contrast_caption: "Enables high-contrast mode for the chosen colour mode." force_light_theme_contrast: "Force high-contrast when in Light mode" force_dark_theme_contrast: "Force high-contrast when in Dark mode" - force_light_theme_contrast_caption: "Uses the high-contrast version of Light mode when automatic color mode is selected." - force_dark_theme_contrast_caption: "Uses the high-contrast version of Dark mode when automatic color mode is selected." + force_light_theme_contrast_caption: "Uses the high-contrast version of Light + mode when automatic color mode is selected." + force_dark_theme_contrast_caption: "Uses the high-contrast version of Dark mode + when automatic color mode is selected." theme: "Color mode" time_zone: "Time zone" - mode_guideline: "Some modes will overwrite custom theme colors for accessibility and legibility. Please select Light mode for full custom theme support." + mode_guideline: "Some modes will overwrite custom theme colors for accessibility + and legibility. Please select Light mode for full custom theme + support." daily_reminders: "Daily reminders" workdays: "Working days" users/invitation/form_model: @@ -2093,7 +2399,8 @@ en: error_enterprise_only: "%{action} is only available in the OpenProject Enterprise edition." error_unauthorized: "may not be accessed." error_readonly: "was attempted to be written but is not writable." - error_conflict: "Information has been updated by at least one other user in the meantime." + error_conflict: "Information has been updated by at least one other user in the + meantime." error_not_found: "not found." email: "is not a valid email address." empty: "can't be empty." @@ -2150,7 +2457,8 @@ en: unknown_property_nested: "has the unknown path '%{path}'." unremovable: "cannot be removed." url_not_secure_context: > - is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. + is not providing a "Secure Context". Either use HTTPS or a loopback + address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: group: @@ -2167,17 +2475,21 @@ en: attributes: content_type: blank: "The content type of the file cannot be blank." - not_allowlisted: "The file was rejected by an automatic filter. '%{value}' is not allowed for upload." + not_allowlisted: "The file was rejected by an automatic filter. '%{value}' is + not allowed for upload." format: "%{message}" capability: context: global: "Global" query: filters: - minimum: "need to include at least one filter for principal, context or id with the '=' operator." + minimum: "need to include at least one filter for principal, context or id with + the '=' operator." custom_field: at_least_one_custom_option: "At least one option needs to be available." - previous_custom_field_recalculation_unprocessed: "The recalculation of previous changes for this custom field have not been applied yet, please try again in a few minutes." + previous_custom_field_recalculation_unprocessed: "The recalculation of previous + changes for this custom field have not been applied yet, please try + again in a few minutes." referenced_in_other_fields_html: one: "%{name} is used in project attribute calculation %{links}." other: "%{name} is used in project attribute calculations: %{links}." @@ -2185,8 +2497,12 @@ en: formula: blank: "Formula can't be blank." invalid: "Formula is invalid." - invalid_characters: "Only numeric values, mathematical operators and project attributes of type integer, float, calculated value and weighted list are allowed." - not_allowed_custom_fields_referenced: "The attribute %{custom_fields} cannot be used because it leads to a circular reference; one attribute depends on the other." + invalid_characters: "Only numeric values, mathematical operators and project + attributes of type integer, float, calculated value and weighted + list are allowed." + not_allowed_custom_fields_referenced: "The attribute %{custom_fields} cannot be + used because it leads to a circular reference; one attribute + depends on the other." format: "%{message}" required: cannot_be_true: "cannot be set to true." @@ -2209,7 +2525,8 @@ en: fragment_present: "cannot contain a fragment." invalid_uri: "must be a valid URI." relative_uri: "must be an absolute URI." - secured_uri: 'is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost.' + secured_uri: "is not providing a \"Secure Context\". Either use HTTPS or a + loopback address, such as localhost." forbidden_uri: "is forbidden by the server." scopes: not_match_configured: "doesn't match available scopes." @@ -2218,7 +2535,8 @@ en: failed_to_create: "Trial could not be created (%{status})" general_consent: "Please accept the terms and conditions." enterprise_token: - only_one_trial: "Only one trial token can be active. Please delete the previous trial token before adding another." + only_one_trial: "Only one trial token can be active. Please delete the previous + trial token before adding another." unreadable: "can't be read. Are you sure it is a support token?" already_added: "This token has already been added." favorite: @@ -2233,11 +2551,13 @@ en: blank: "is mandatory. Please select a name." not_unique: "is already in use. Please select another name." meeting: - error_conflict: "Unable to save because the meeting was updated by someone else in the meantime. Please reload the page." + error_conflict: "Unable to save because the meeting was updated by someone else + in the meantime. Please reload the page." message: cannot_move_message_to_forum_of_different_project: "A message cannot be moved to a forum of a different project." notifications: - at_least_one_channel: "At least one channel for sending notifications needs to be specified." + at_least_one_channel: "At least one channel for sending notifications needs to + be specified." attributes: read_ian: read_on_creation: "cannot be set to true on notification creation." @@ -2260,19 +2580,24 @@ en: id_filter_required: "An 'id' filter is required." project: archived_ancestor: "The project has an archived ancestor." - foreign_wps_reference_version: "Work packages in non descendant projects reference versions of the project or its descendants." + foreign_wps_reference_version: "Work packages in non descendant projects + reference versions of the project or its descendants." cannot_be_assigned_to_artifact_work_package: "The chosen user is not allowed to be assigned to work packages." attributes: base: - archive_permission_missing_on_subprojects: "You do not have the permissions required to archive all sub-projects. Please contact an administrator." - project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." + archive_permission_missing_on_subprojects: "You do not have the permissions + required to archive all sub-projects. Please contact an + administrator." + project_initiation_request_disabled: "Project initiation request is disabled. It + must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" identifier: must_start_with_letter: "must start with a letter" no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: - dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." + dependency_missing: "The module '%{dependency}' needs to be enabled as well + since the module '%{module}' depends on it." format: "%{message}" project_custom_field_project_mapping: attributes: @@ -2307,7 +2632,8 @@ en: name_not_included: "The 'Name' column needs to be included" nonexistent: "The column '%{column}' does not exist." format: "%{message}" - group_by_hierarchies_exclusive: "is mutually exclusive with group by '%{group_by}'. You cannot activate both." + group_by_hierarchies_exclusive: "is mutually exclusive with group by + '%{group_by}'. You cannot activate both." can_only_be_modified_by_owner: "The query can only be modified by its owner." need_permission_to_modify_public_query: "You cannot modify a public query." filters: @@ -2327,18 +2653,22 @@ en: circular_dependency: "The relationship creates a circle of relationships." attributes: base: - error_not_deletable: "This relation cannot be deleted because you do not have edit permissions for the selected work package." - error_not_editable: "This relation cannot be edited because you do not have edit permissions for the selected work package." + error_not_deletable: "This relation cannot be deleted because you do not have + edit permissions for the selected work package." + error_not_editable: "This relation cannot be edited because you do not have edit + permissions for the selected work package." to_id: format: "The selected work package %{message}" error_not_found: "could not be found." error_readonly: "cannot be changed for existing relations." - error_not_manageable: "cannot be added because you do not have edit permissions for the selected work package." + error_not_manageable: "cannot be added because you do not have edit permissions + for the selected work package." from_id: format: "The selected work package %{message}" error_not_found: "could not be found." error_readonly: "cannot be changed for existing relations." - error_not_manageable: "cannot be added because you do not have edit permissions for the selected work package." + error_not_manageable: "cannot be added because you do not have edit permissions + for the selected work package." repository: not_available: "SCM vendor is not available" not_whitelisted: "is not allowed by the configuration." @@ -2349,12 +2679,14 @@ en: role: attributes: permissions: - dependency_missing: "need to also include '%{dependency}' as '%{permission}' is selected." + dependency_missing: "need to also include '%{dependency}' as '%{permission}' is + selected." setting: attributes: base: working_days_are_missing: "At least one day of the week must be defined as a working day." - previous_working_day_changes_unprocessed: "The previous changes to the working days configuration have not been applied yet." + previous_working_day_changes_unprocessed: "The previous changes to the working + days configuration have not been applied yet." hours_per_day_are_missing: "The number of hours per day must be defined." durations_are_not_positive_numbers: "The durations must be positive numbers." hours_per_day_is_out_of_bounds: "Hours per day can't be more than 24" @@ -2384,16 +2716,19 @@ en: not_allowed_to_view: "is not allowed to view this resource." locked: "is locked." wiki_page: - error_conflict: "The wiki page has been updated by someone else while you were editing it." + error_conflict: "The wiki page has been updated by someone else while you were + editing it." attributes: slug: undeducible: "cannot be deduced from the title '%{title}'." work_package: - is_not_a_valid_target_for_time_entries: "Work package #%{id} is not a valid target for reassigning the time entries." + is_not_a_valid_target_for_time_entries: "Work package #%{id} is not a valid + target for reassigning the time entries." attributes: id: format: "%{message}" - cannot_add_child_because_of_lack_of_permission: "Cannot add child because you don't have permissions to edit the selected work package." + cannot_add_child_because_of_lack_of_permission: "Cannot add child because you + don't have permissions to edit the selected work package." blank: "ID can't be blank." identifier: semantic_identifier_incomplete: "and sequence_number must both be set at the same time." @@ -2409,8 +2744,10 @@ en: not_start_date: "is not on start date, although this is required for milestones." cannot_be_null: "can not be set to null as start date and duration are known." duration: - larger_than_dates: "is larger than the interval between the start and the finish date." - smaller_than_dates: "is smaller than the interval between the start and the finish date." + larger_than_dates: "is larger than the interval between the start and the finish + date." + smaller_than_dates: "is smaller than the interval between the start and the + finish date." not_available_for_milestones: "is not available for milestone typed work packages." cannot_be_null: "can not be set to null as start date and finish date are known." not_an_integer: "is not a valid duration." @@ -2420,19 +2757,24 @@ en: cannot_be_in_another_project: "cannot be in another project." not_a_valid_parent: "is invalid." schedule_manually: - cannot_be_automatically_scheduled: "cannot be set to false (automatically scheduled) as it has no predecessors or children." + cannot_be_automatically_scheduled: "cannot be set to false (automatically + scheduled) as it has no predecessors or children." start_date: - violates_relationships: "can only be set to %{soonest_start} or later so as not to violate the work package's relationships." + violates_relationships: "can only be set to %{soonest_start} or later so as not + to violate the work package's relationships." cannot_be_null: "can not be set to null as finish date and duration are known." status_id: - status_transition_invalid: "is invalid because no valid transition exists from old to new status for the current user's roles." - status_invalid_in_type: "is invalid because the current status does not exist in this type." + status_transition_invalid: "is invalid because no valid transition exists from + old to new status for the current user's roles." + status_invalid_in_type: "is invalid because the current status does not exist in + this type." type: cannot_be_milestone_due_to_children: "cannot be a milestone because this work package has children." priority_id: only_active_priorities_allowed: "needs to be active." category: - only_same_project_categories_allowed: "The category of a work package must be within the same project as the work package." + only_same_project_categories_allowed: "The category of a work package must be + within the same project as the work package." does_not_exist: "The specified category does not exist." estimated_hours: not_a_number: "is not a valid duration." @@ -2443,42 +2785,50 @@ en: cant_exceed_work: "cannot be higher than Work." must_be_set_when_work_is_set: "required when Work is set." must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set." - must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: - >- + must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >- must be 0h when Work is set and % Complete is 100%. must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >- must be empty when Work is empty and % Complete is 100%. - readonly_status: "The work package is in a readonly status so its attributes cannot be changed." + readonly_status: "The work package is in a readonly status so its attributes + cannot be changed." type: attributes: attribute_groups: attribute_unknown: "Invalid work package attribute used." attribute_unknown_name: "Invalid work package attribute used: %{attribute}" - duplicate_group: "The group name '%{group}' is used more than once. Group names must be unique." + duplicate_group: "The group name '%{group}' is used more than once. Group names + must be unique." query_invalid: "The embedded query '%{group}' is invalid: %{details}" group_without_name: "Unnamed groups are not allowed." patterns: - invalid_tokens: "One or more attributes inside the field are not valid. Please, fix the attributes before saving." + invalid_tokens: "One or more attributes inside the field are not valid. Please, + fix the attributes before saving." user: attributes: base: - user_limit_reached: "User limit reached. No more accounts can be created on the current plan." - one_must_be_active: "Admin User cannot be locked/removed. At least one admin must be active." + user_limit_reached: "User limit reached. No more accounts can be created on the + current plan." + one_must_be_active: "Admin User cannot be locked/removed. At least one admin + must be active." password_confirmation: confirmation: "Password confirmation does not match password." format: "%{message}" password: - requirements_not_met: "Must include characters of the following types: %{rules}" + weak: "Must contain characters of the following classes (at least %{min_count} + of %{all_count}): %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" special: "special (e.g. '%')" reused: - one: "has been used before. Please choose one that is different from your last one." - other: "has been used before. Please choose one that is different from your last %{count}." + one: "has been used before. Please choose one that is different from your last + one." + other: "has been used before. Please choose one that is different from your last + %{count}." match: confirm: "Confirm new password." - description: "'Password confirmation' should match the input in the 'New password' field." + description: "'Password confirmation' should match the input in the 'New + password' field." status: invalid_on_create: "is not a valid status for new users." user_working_hours: @@ -2495,8 +2845,10 @@ en: principal: unassignable: "cannot be assigned to a project." version: - undeletable_archived_projects: "The version cannot be deleted as it has work packages attached to it." - undeletable_work_packages_attached: "The version cannot be deleted as it has work packages attached to it." + undeletable_archived_projects: "The version cannot be deleted as it has work + packages attached to it." + undeletable_work_packages_attached: "The version cannot be deleted as it has + work packages attached to it." token/named: attributes: token_name: @@ -2583,7 +2935,9 @@ en: header_additional_invalid_fields: one: "Additionally, there was a problem with the following field:" other: "Additionally, there were problems with the following fields:" - field_erroneous_label: "This field is invalid: %{full_errors}\nPlease enter a valid value." + field_erroneous_label: "This field is invalid: %{full_errors} + + Please enter a valid value." messages: must_be_template: "must be template" unsupported_storage_type: "is not a supported storage type." @@ -2752,20 +3106,21 @@ en: heading_reset: "Reset backup token" heading_create: "Create backup token" implications: > - Enabling backups will allow any user with the required permissions and this backup token - to download a backup containing all data of this OpenProject installation. - This includes the data of all other users. + Enabling backups will allow any user with the required permissions and + this backup token to download a backup containing all data of this + OpenProject installation. This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. - Each time you want to request a backup you will have to provide this token. - You can delete the backup token to disable backups for this user. + Each time you want to request a backup you will have to provide this + token. You can delete the backup token to disable backups for this user. verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create warning: > - When you create a new token you will only be allowed to request a backup after - 24 hours. This is a safety measure. After that you can request a backup any time using that token. + When you create a new token you will only be allowed to request a backup + after 24 hours. This is a safety measure. After that you can request a + backup any time using that token. text_token_deleted: Backup token deleted. Backups are now disabled. error: invalid_token: Invalid or missing backup token @@ -2876,17 +3231,24 @@ en: failure_message: Consent failed, cannot proceed. title: User Consent decline_warning_message: You have declined to consent and have been logged out. - user_has_consented: The user gave their consent to your [configured consent information text](consent_settings). - not_yet_consented: The user has not yet given their consent to your [configured consent information text](consent_settings). They will be reminded the next time they log in. - contact_mail_instructions: Define the mail address that users can reach a data controller to perform data change or removal requests. + user_has_consented: The user gave their consent to your [configured consent + information text](consent_settings). + not_yet_consented: The user has not yet given their consent to your [configured + consent information text](consent_settings). They will be reminded the + next time they log in. + contact_mail_instructions: Define the mail address that users can reach a data + controller to perform data change or removal requests. contact_your_administrator: Please contact your administrator if you want to have your account deleted. contact_this_mail_address: Please contact %{mail_address} if you want to have your account deleted. - text_update_consent_time: Check this box to force users to consent again. Enable when you have changed the legal aspect of the consent information above. + text_update_consent_time: Check this box to force users to consent again. Enable + when you have changed the legal aspect of the consent information above. update_consent_last_time: "Last update of consent: %{update_time}" copy_project: - title: 'Copy project "%{source_project_name}"' - started: 'Started to copy project "%{source_project_name}" to "%{target_project_name}". You will be informed by mail as soon as "%{target_project_name}" is available.' + title: "Copy project \"%{source_project_name}\"" + started: "Started to copy project \"%{source_project_name}\" to + \"%{target_project_name}\". You will be informed by mail as soon as + \"%{target_project_name}\" is available." failed: "Cannot copy project %{source_project_name}" failed_internal: "Copying failed due to an internal error." succeeded: "Created project %{target_project_name}" @@ -2897,8 +3259,10 @@ en: one: "One object of this type" other: "%{count} objects of this type" text: - failed: 'Could not copy project "%{source_project_name}" to project "%{target_project_name}".' - succeeded: 'Copied project "%{source_project_name}" to "%{target_project_name}".' + failed: "Could not copy project \"%{source_project_name}\" to project + \"%{target_project_name}\"." + succeeded: "Copied project \"%{source_project_name}\" to + \"%{target_project_name}\"." source_project_label: "Project copied" copy_options: dependencies_label: "Copy from project" @@ -2906,7 +3270,8 @@ en: create_project: attributes_heading: "Fill in this mandatory information to work on your projects." template_label: "Use template" - template_heading: "Select a project template to work with the most common project management methods, or create a project from scratch." + template_heading: "Select a project template to work with the most common + project management methods, or create a project from scratch." copy_options: dependencies_label: "Copy from template" blank_template: @@ -2915,13 +3280,16 @@ en: blank_description: No description provided. create_portfolio: - template_heading: "Select a portfolio template to work with the most common project management methods, or create a portfolio from scratch." + template_heading: "Select a portfolio template to work with the most common + project management methods, or create a portfolio from scratch." blank_template: label: "Blank portfolio" - description: Start from scratch. Manually add portfolio attributes, members and modules. + description: Start from scratch. Manually add portfolio attributes, members and + modules. create_program: - template_heading: "Select a program template to work with the most common project management methods, or create a program from scratch." + template_heading: "Select a program template to work with the most common + project management methods, or create a program from scratch." blank_template: label: "Blank program" description: Start from scratch. Manually add program attributes, members and modules. @@ -2930,7 +3298,7 @@ en: create_wiki_page_button: "Wiki page" date: - abbr_day_names: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] + abbr_day_names: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ] abbr_month_names: [ ~, @@ -3056,10 +3424,10 @@ en: description_active: "Active?" description_attachment_toggle: "Show/Hide attachments" description_autocomplete: > - This field uses autocomplete. While typing the title of a work - package you will receive a list of possible candidates. Choose one - using the arrow up and arrow down key and select it with tab or - enter. Alternatively you can enter the work package number directly. + This field uses autocomplete. While typing the title of a work package you + will receive a list of possible candidates. Choose one using the arrow up + and arrow down key and select it with tab or enter. Alternatively you can + enter the work package number directly. description_available_columns: "Available Columns" description_choose_project: "Projects" description_compare_from: "Compare from" @@ -3131,10 +3499,14 @@ en: plan_text_html: "Available starting with the %{plan_name}." unlimited: "Unlimited" already_have_token: > - Already have a token? Add it using the button below to upgrade to the booked Enterprise plan. + Already have a token? Add it using the button below to upgrade to the + booked Enterprise plan. hide_banner: "Hide this banner" homescreen_description: > - Enterprise plans extend the Community edition of OpenProject with additional [Enterprise add-ons](enterprise_url) and professional support, ideal for organizations running OpenProject in a mission-critical environment. + Enterprise plans extend the Community edition of OpenProject with + additional [Enterprise add-ons](enterprise_url) and professional + support, ideal for organizations running OpenProject in a + mission-critical environment. homescreen_subline: By upgrading, you will also be supporting an open source project. baseline_comparison: description: Highlight changes made to this list since any point in the past. @@ -3143,18 +3515,26 @@ en: high_security: "Security features" high_security_text: "Single sign on (SAML, OpenID Connect, CAS), LDAP groups." installation: "Installation support" - installation_text: "Experienced software engineers guide you through the complete installation and setup process in your own infrastructure." + installation_text: "Experienced software engineers guide you through the + complete installation and setup process in your own infrastructure." premium_features: "Enterprise add-ons" - premium_features_text: "Agile boards, custom theme and logo, graphs, intelligent workflows with custom actions, full text search for work package attachments and multi-select custom fields." + premium_features_text: "Agile boards, custom theme and logo, graphs, intelligent + workflows with custom actions, full text search for work package + attachments and multi-select custom fields." professional_support: "Professional support" - professional_support_text: "Get reliable, high-touch support from senior support engineers with expert knowledge about running OpenProject in business-critical environments." + professional_support_text: "Get reliable, high-touch support from senior support + engineers with expert knowledge about running OpenProject in + business-critical environments." work_package_subject_generation: - description: "Create automatically generated subjects using referenced attributes and text." + description: "Create automatically generated subjects using referenced + attributes and text." customize_life_cycle: - description: "Create and organize different project phases than the ones provided by PM2 project cycle planning." + description: "Create and organize different project phases than the ones + provided by PM2 project cycle planning." capture_external_links: - description: "Prevent social engineering attacks by capturing and warning about external links before users visit them." + description: "Prevent social engineering attacks by capturing and warning about + external links before users visit them." work_package_query_relation_columns: description: "Need to see relations or child elements in the work package list?" edit_attribute_groups: @@ -3166,80 +3546,111 @@ en: readonly_work_packages: description: "Mark work packages as read-only for specific statuses." custom_field_hierarchies: - description: "Hierarchy custom fields allow organizing hierarchical structures in work packages and projects by making use of multi-level select lists." + description: "Hierarchy custom fields allow organizing hierarchical structures + in work packages and projects by making use of multi-level select + lists." date_alerts: - description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline." + description: "With date alerts, you will be notified of upcoming start or finish + dates so that you never miss or forget an important deadline." weighted_item_lists: - description: "Weighted item lists allow you to create a list with underlying numeric values associated." + description: "Weighted item lists allow you to create a list with underlying + numeric values associated." work_package_sharing: description: "Share work packages with users who are not members of the project." project_list_sharing: description: "Share project lists with individual users." calculated_values: - description: "Calculated values allow you to create a mathematical formula based attribute using numeric values and other project attributes and custom fields." + description: "Calculated values allow you to create a mathematical formula based + attribute using numeric values and other project attributes and custom + fields." define_custom_style: title: "Custom color theme and logo" more_info: "Note: the used logo will be publicly accessible." description: Customize your OpenProject installation with your own logo and colors. custom_actions: title: "Custom actions" - description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." + description: "Custom actions are one-click shortcuts to a set of pre-defined + actions that you can make available on certain work packages based on + status, role, type or project." mcp_server: description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: - description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." + description: "Define meeting templates with a set agenda structure and save time + by reusing them when creating new meetings." nextcloud_sso: title: "Single Sign-On for Nextcloud Storage" - description: "Enable seamless and secure authentication for your Nextcloud storage with Single Sign-On. Simplify access management and enhance user convenience." + description: "Enable seamless and secure authentication for your Nextcloud + storage with Single Sign-On. Simplify access management and enhance + user convenience." scim_api: title: "SCIM clients" - description: "Automate user management in OpenProject by seamlessly integrating external identity services like Microsoft Entra or Keycloak through our SCIM Server API. Available starting with the Enterprise corporate plan." + description: "Automate user management in OpenProject by seamlessly integrating + external identity services like Microsoft Entra or Keycloak through + our SCIM Server API. Available starting with the Enterprise corporate + plan." sso_auth_providers: title: "Single Sign-On (SSO)" - description: "Enable users to log in via external SSO providers using SAML or OpenID Connect for seamless access and integration with existing identity systems." + description: "Enable users to log in via external SSO providers using SAML or + OpenID Connect for seamless access and integration with existing + identity systems." virus_scanning: - description: "Ensure uploaded files in OpenProject are scanned for viruses before being accessible by other users." + description: "Ensure uploaded files in OpenProject are scanned for viruses + before being accessible by other users." project_creation_wizard: - description: "Generate a step-by-step wizard to help project managers fill out a project initiation request." + description: "Generate a step-by-step wizard to help project managers fill out a + project initiation request." placeholder_users: title: Placeholder users description: > - Placeholder users are a way to assign work packages to users who are not part of your project. - They can be useful in a range of scenarios; for example, if you need to track tasks for a resource that is not yet named or available, - or if you don’t want to give that person access to OpenProject but still want to track tasks assigned to them. + Placeholder users are a way to assign work packages to users who are + not part of your project. They can be useful in a range of scenarios; + for example, if you need to track tasks for a resource that is not yet + named or available, or if you don’t want to give that person access to + OpenProject but still want to track tasks assigned to them. internal_comments: title: Internal comments - description: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to certain project roles and will never be visible publicly." + description: "Internal comments allow an internal team to communicate amongst + themselves privately. These are only visible to certain project roles + and will never be visible publicly." internal_comments_inline: title: "Write internal comments only a small group can see" description: " " portfolio_management: - description: Align your projects to your strategic goals by organizing them into portfolios and programs. + description: Align your projects to your strategic goals by organizing them into + portfolios and programs. teaser: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" description_html: "You have access to all %{trial_plan} features." trial: - not_found: "You have requested a trial token, but that request is no longer available. Please try again." - wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." + not_found: "You have requested a trial token, but that request is no longer + available. Please try again." + wait_for_confirmation: "We sent you an email to confirm your address in order to + retrieve a trial token." already_retrieved: > - Your trial enterprise token was already retrieved. Please check your emails for the token being attached. - Please reach out to our support team if you need a new one. + Your trial enterprise token was already retrieved. Please check your + emails for the token being attached. Please reach out to our support + team if you need a new one. successfully_saved: "Your trial enterprise token has been successfully retrieved." token_sent: "Trial token requested" request_again: "Request again" resend_action: "Resend confirmation email" welcome_title: "Quick feature overview" - welcome_description: "Get a quick overview of project management and team collaboration with OpenProject Enterprise edition." + welcome_description: "Get a quick overview of project management and team + collaboration with OpenProject Enterprise edition." confirmation_info: > - We sent you an email on %{date} to %{email} with all the information to start the free trial of OpenProject Enterprise. - Please check your inbox and click the confirmation link provided to start your 14-day free trial. + We sent you an email on %{date} to %{email} with all the information to + start the free trial of OpenProject Enterprise. Please check your inbox + and click the confirmation link provided to start your 14-day free + trial. confirmation_subline: > - Please, check your inbox and follow the steps to start your 14-day free trial. + Please, check your inbox and follow the steps to start your 14-day free + trial. domain_caption: The token will be valid for your currently configured host name. receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." - consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy + policy](privacy_url)." email_calendar_updates: state: @@ -3263,10 +3674,17 @@ en: error_can_not_archive_project: "This project cannot be archived: %{errors}" error_can_not_delete_entry: "Unable to delete entry" error_can_not_delete_custom_field: "Unable to delete custom field" - error_can_not_delete_in_use_archived_undisclosed: "There are also work packages in archived projects. You need to ask an administrator to perform the deletion to see which projects are affected." - error_can_not_delete_in_use_archived_work_packages: "There are also work packages in archived projects. You need to reactivate the following projects first, before you can change the attribute of the respective work packages: %{archived_projects_urls}" + error_can_not_delete_in_use_archived_undisclosed: "There are also work packages + in archived projects. You need to ask an administrator to perform the + deletion to see which projects are affected." + error_can_not_delete_in_use_archived_work_packages: "There are also work + packages in archived projects. You need to reactivate the following projects + first, before you can change the attribute of the respective work packages: + %{archived_projects_urls}" error_can_not_delete_type: - explanation: 'This type contains work packages and cannot be deleted. You can see all affected work packages in this view.' + explanation: "This type contains work packages and cannot be deleted. You can + see all affected work packages in this view." error_can_not_delete_standard_type: "Standard types cannot be deleted." error_can_not_invite_user: "Failed to send invitation to user." error_can_not_remove_role: "This role is in use and cannot be deleted." @@ -3276,36 +3694,59 @@ en: error_check_user_and_role: "Please choose a user and a role." error_code: "Error %{code}" error_color_could_not_be_saved: "Color could not be saved" - error_cookie_missing: "The OpenProject cookie is missing. Please ensure that cookies are enabled, as this application will not properly function without." + error_cookie_missing: "The OpenProject cookie is missing. Please ensure that + cookies are enabled, as this application will not properly function + without." error_custom_option_not_found: "Option does not exist." error_enterprise_plan_needed: "You need the %{plan} enterprise plan to perform this action." - error_enterprise_activation_user_limit: "Your account could not be activated (user limit reached). Please contact your administrator to gain access." - error_enterprise_token_invalid_domain: "The Enterprise edition is not active. Your Enterprise token's domain (%{actual}) does not match the system's host name (%{expected})." + error_enterprise_activation_user_limit: "Your account could not be activated + (user limit reached). Please contact your administrator to gain access." + error_enterprise_token_invalid_domain: "The Enterprise edition is not active. + Your Enterprise token's domain (%{actual}) does not match the system's host + name (%{expected})." error_failed_to_delete_entry: "Failed to delete this entry." - error_in_dependent: "Error attempting to alter dependent object: %{dependent_class} #%{related_id} - %{related_subject}: %{error}" - error_in_new_dependent: "Error attempting to create dependent object: %{dependent_class} - %{related_subject}: %{error}" + error_in_dependent: "Error attempting to alter dependent object: + %{dependent_class} #%{related_id} - %{related_subject}: %{error}" + error_in_new_dependent: "Error attempting to create dependent object: + %{dependent_class} - %{related_subject}: %{error}" error_invalid_selected_value: "Invalid selected value." error_journal_attribute_not_present: "Journal does not contain attribute %{attribute}." - error_pdf_export_too_many_columns: "Too many columns selected for the PDF export. Please reduce the number of columns." - error_pdf_date_range_too_long: "The selected work package date range exceeds the allowable PDF export limit. Please condense the range to a maximum of %{years} years." + error_pdf_export_too_many_columns: "Too many columns selected for the PDF + export. Please reduce the number of columns." + error_pdf_date_range_too_long: "The selected work package date range exceeds the + allowable PDF export limit. Please condense the range to a maximum of + %{years} years." error_pdf_failed_to_export: "The PDF export could not be saved: %{error}" - error_token_authenticity: "Unable to verify Cross-Site Request Forgery token. Did you try to submit data on multiple browsers or tabs? Please close all tabs and try again." + error_token_authenticity: "Unable to verify Cross-Site Request Forgery token. + Did you try to submit data on multiple browsers or tabs? Please close all + tabs and try again." error_reminder_not_found: "The reminder was not found or was already notified about." error_work_package_not_found_in_project: "The work package was not found or does not belong to this project" error_work_package_id_not_found: "The work package was not found." error_must_be_project_member: "must be project member" - error_migrations_are_pending: "Your OpenProject installation has pending database migrations. You have likely missed running the migrations on your last upgrade. Please check the upgrade guide to properly upgrade your installation." + error_migrations_are_pending: "Your OpenProject installation has pending + database migrations. You have likely missed running the migrations on your + last upgrade. Please check the upgrade guide to properly upgrade your + installation." error_migrations_visit_upgrade_guides: "Please visit our upgrade guide documentation" - error_no_default_work_package_status: 'No default work package status is defined. Please check your configuration (Go to "Administration -> Work package statuses").' + error_no_default_work_package_status: "No default work package status is + defined. Please check your configuration (Go to \"Administration -> Work + package statuses\")." error_no_type_in_project: "No type is associated to this project. Please check the Project settings." - error_omniauth_registration_timed_out: "The registration via an external authentication provider timed out. Please try again." - error_omniauth_invalid_auth: "The authentication information returned from the identity provider was invalid. Please contact your administrator for further help." + error_omniauth_registration_timed_out: "The registration via an external + authentication provider timed out. Please try again." + error_omniauth_invalid_auth: "The authentication information returned from the + identity provider was invalid. Please contact your administrator for further + help." error_password_change_failed: "An error occurred when trying to change the password." error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" error_scm_not_found: "The entry or revision was not found in the repository." error_type_could_not_be_saved: "Type could not be saved" - error_unable_delete_status: "The work package status cannot be deleted since it is used by at least one work package." - error_unable_delete_default_status: "Unable to delete the default work package status. Please select another default work package status before deleting the current one." + error_unable_delete_status: "The work package status cannot be deleted since it + is used by at least one work package." + error_unable_delete_default_status: "Unable to delete the default work package + status. Please select another default work package status before deleting + the current one." error_unable_to_connect: "Unable to connect (%{value})" error_unable_delete_wiki: "Unable to delete the wiki page." error_unable_update_wiki: "Unable to update the wiki page." @@ -3314,8 +3755,9 @@ en: error_menu_item_not_created: Menu item could not be added error_menu_item_not_saved: Menu item could not be saved error_wiki_root_menu_item_conflict: > - Can't rename "%{old_name}" to "%{new_name}" due to a conflict in the resulting menu item - with the existing menu item "%{existing_caption}" (%{existing_identifier}). + Can't rename "%{old_name}" to "%{new_name}" due to a conflict in the + resulting menu item with the existing menu item "%{existing_caption}" + (%{existing_identifier}). error_external_authentication_failed_message: "An error occurred during external authentication: %{message}" error_attribute_not_highlightable: "Attribute(s) not highlightable: %{attributes}" @@ -3354,9 +3796,14 @@ en: label: "XLS" columns: input_label_report: "Add columns to attribute table" - input_caption_report: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in the attribute table, but can be displayed below it." - input_caption_table: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in table based exports." - input_caption_required: "It is not possible to export the view without any column. Please add at least one column." + input_caption_report: "By default all attributes added as columns in the work + package list are selected. Long text fields are not available in the + attribute table, but can be displayed below it." + input_caption_table: "By default all attributes added as columns in the work + package list are selected. Long text fields are not available in table + based exports." + input_caption_required: "It is not possible to export the view without any + column. Please add at least one column." pdf: export_type: label: "PDF export type" @@ -3366,7 +3813,8 @@ en: caption: "Export the work packages list in a table with the desired columns." report: label: "Report" - caption: "Export the work package on a detailed report of all work packages in the list." + caption: "Export the work package on a detailed report of all work packages in + the list." gantt: label: "Gantt chart" caption: "Export the work packages list in a Gantt diagram view." @@ -3399,20 +3847,23 @@ en: xls: include_relations: label: "Include relations" - caption: "This option will create a duplicate of each work package for every relation this has with another work package." + caption: "This option will create a duplicate of each work package for every + relation this has with another work package." include_descriptions: label: "Include descriptions" caption: "This option will add a description column in raw format." your_work_packages_export: "Work packages are being exported" your_projects_export: "Projects are being exported" succeeded: "Export completed" - failed: "An error has occurred while trying to export the work packages: %{message}" + failed: "An error has occurred while trying to export the work packages: + %{message}" demo: heading: "Demo PDF" footer: "Generated by OpenProject" button_text: Generate Demo PDF errors: - embedded_table_with_too_many_columns: "This embedded work package table could not fit on the page, please reduce the number of columns." + embedded_table_with_too_many_columns: "This embedded work package table could + not fit on the page, please reduce the number of columns." format: atom: "Atom" csv: "CSV" @@ -3436,7 +3887,8 @@ en: page_nr_footer: "Page %{page} of %{total}" template_attributes: label: "Attributes and description" - caption: All the attributes present in the current form configuration using the default template. + caption: All the attributes present in the current form configuration using the + default template. template_contract: label: "Contract" caption: Work package details formatted to the standard German contract form. @@ -3517,7 +3969,8 @@ en: new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: "Big Agile update: dedicated sprint objects, all work packages visible on Backlogs, and automatic sprint board creation." + line_0: "Big Agile update: dedicated sprint objects, all work packages visible + on Backlogs, and automatic sprint board creation." line_1: In-place editing of project attributes on the Project Overview page. line_2: Sharing of meeting templates (Basic plan and higher). line_3: Better search in Time and Costs, Boards, and more. @@ -3553,7 +4006,9 @@ en: system_update: "OpenProject system update:" work_package_duplicate_closed: "Duplicate work package updated:" total_percent_complete_mode_changed_to_work_weighted_average: "Calculation of % Complete totals now weighted by Work." - total_percent_complete_mode_changed_to_simple_average: "Calculation of % Complete totals now based on a simple average of only % Complete values." + total_percent_complete_mode_changed_to_simple_average: "Calculation of % + Complete totals now based on a simple average of only % Complete + values." cause_descriptions: import: header: "changes by %{author}" @@ -3568,7 +4023,8 @@ en: work_package_parent_changed_times: by changes to parent %{link} work_package_children_changed_times: by changes to child %{link} work_package_related_changed_times: by changes to related %{link} - work_package_duplicate_closed: The status was automatically updated by the duplicated work package %{link} + work_package_duplicate_closed: The status was automatically updated by the + duplicated work package %{link} unaccessable_work_package_changed: by changes to a related work package budget_deleted: Budget has been deleted working_days_changed: @@ -3585,16 +4041,21 @@ en: status_percent_complete_changed: "% Complete changed from %{old_value}% to %{new_value}%" system_update: file_links_journal: > - From now on, activity related to file links (files stored in external storages) will appear here in the - Activity tab. The following represent activity concerning links that already existed: + From now on, activity related to file links (files stored in external + storages) will appear here in the Activity tab. The following + represent activity concerning links that already existed: progress_calculation_adjusted_from_disabled_mode: >- - Progress calculation automatically set to work-based mode and adjusted with version update. + Progress calculation automatically set to work-based mode and adjusted with version + update. progress_calculation_adjusted: >- - Progress calculation automatically adjusted with version update. + Progress calculation automatically adjusted with version update. scheduling_mode_adjusted: >- Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- - Work and progress totals automatically removed for non-parent work packages with version update. + Work and progress totals automatically removed for non-parent work + packages with version update. This is a maintenance task and can be safely ignored. sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- @@ -3605,9 +4066,11 @@ en: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." + instructions_after_registration_link: "You can sign in as soon as your account + has been activated by clicking [here](signin_url)." instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." - instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." + instructions_after_error_link: "You can try to sign in again by clicking + [here](signin_url). If the error persists, ask your admin for help." menus: admin: @@ -3627,10 +4090,13 @@ en: notifications: "Notification settings" email_reminders: "Email reminders" access_tokens: - description: "Provider tokens are issued by OpenProject, allowing other applications to access it. Client tokens are issued by other applications, allowing OpenProject to access them." + description: "Provider tokens are issued by OpenProject, allowing other + applications to access it. Client tokens are issued by other + applications, allowing OpenProject to access them." no_results: title: "No access tokens to display" - description: "All of them have been disabled. They can be re-enabled in the administration menu." + description: "All of them have been disabled. They can be re-enabled in the + administration menu." access_tokens: "Access tokens" headers: action: "Action" @@ -3647,34 +4113,46 @@ en: blank_title: "No API token" title: "API" table_title: "API tokens" - text_hint: "API tokens allow third-party applications to communicate with this OpenProject instance via REST APIs." + text_hint: "API tokens allow third-party applications to communicate with this + OpenProject instance via REST APIs." static_token_name: "API token" - disabled_text: "API tokens are not enabled by the administrator. Please contact your administrator to use this feature." + disabled_text: "API tokens are not enabled by the administrator. Please contact + your administrator to use this feature." add_button: "API token" ical: - blank_description: "To add an iCalendar token, subscribe to a new or existing calendar from within the Calendar module of a project. You must have the necessary permissions." + blank_description: "To add an iCalendar token, subscribe to a new or existing + calendar from within the Calendar module of a project. You must have + the necessary permissions." blank_title: "No iCalendar token" title: "iCalendar" table_title: "iCalendar tokens" - text_hint_link: "iCalendar tokens allow users to [subscribe to OpenProject calendars](docs_url) and view up-to-date work package information from external clients." - disabled_text: "iCalendar subscriptions are not enabled by the administrator. Please contact your administrator to use this feature." + text_hint_link: "iCalendar tokens allow users to [subscribe to OpenProject + calendars](docs_url) and view up-to-date work package information from + external clients." + disabled_text: "iCalendar subscriptions are not enabled by the administrator. + Please contact your administrator to use this feature." oauth_application: active_tokens: "Active tokens" - blank_description: "There is no third-party application access configured and active for you." + blank_description: "There is no third-party application access configured and + active for you." blank_title: "No OAuth application token" last_refreshed_at: "Last refreshed at" title: "OAuth" table_title: "OAuth application tokens" - text_hint: "OAuth application tokens allow third-party applications to connect with this OpenProject instance." + text_hint: "OAuth application tokens allow third-party applications to connect + with this OpenProject instance." oauth_client: blank_description: "There are no OAuth client tokens yet." blank_title: "No OAuth client tokens" - failed: "An error occurred and the token couldn't be removed. Please try again later." + failed: "An error occurred and the token couldn't be removed. Please try again + later." integration_type: "Integration type" table_title: "OAuth client tokens" - text_hint: "OAuth client tokens allow this OpenProject instance to connect with external applications, such as file storages." + text_hint: "OAuth client tokens allow this OpenProject instance to connect with + external applications, such as file storages." title: "OAuth" - remove_token: "Do you really want to remove this token? You will need to login again on %{integration}." + remove_token: "Do you really want to remove this token? You will need to login + again on %{integration}." removed: "OAuth client token successfully removed" unknown_integration: "Unknown" token/rss: @@ -3683,9 +4161,11 @@ en: blank_title: "No RSS token" title: "RSS" table_title: "RSS tokens" - text_hint: "RSS tokens allow users to keep up with the latest changes in this OpenProject instance via an external RSS reader." + text_hint: "RSS tokens allow users to keep up with the latest changes in this + OpenProject instance via an external RSS reader." static_token_name: "RSS token" - disabled_text: "RSS tokens are not enabled by the administrator. Please contact your administrator to use this feature." + disabled_text: "RSS tokens are not enabled by the administrator. Please contact + your administrator to use this feature." storages: unknown_storage: "Unknown storage" email_reminders: @@ -3695,7 +4175,9 @@ en: personal_reminder: "Notify me for personal reminders" daily_reminders: title: "Send me daily email reminders for unread notifications" - caption: "You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC." + caption: "You will receive these reminders only for unread notifications and + only at hours you specify. Until you configure a time zone for your + account, the times will be interpreted to be in UTC." enabled: "Enable daily email reminders" add_time: "Add time" remove_time: "Remove time" @@ -3807,7 +4289,10 @@ en: label_additional_workflow_transitions_for_author: "Additional transitions allowed when the user is the author" label_administration: "Administration" label_interface_colors: "Interface colors" - label_interface_colors_description: "These colors control how the application looks. If you modify them the theme will automatically be changed to Custom theme, but we can’t assure the compliance of the accessibility contrast minimums (WCAG 2.1). " + label_interface_colors_description: "These colors control how the application + looks. If you modify them the theme will automatically be changed to Custom + theme, but we can’t assure the compliance of the accessibility contrast + minimums (WCAG 2.1). " label_age: "Age" label_ago: "days ago" label_all: "all" @@ -3823,7 +4308,8 @@ en: label_api_access_key_type: "API" label_auto_option: "(auto)" label_ical_access_key_type: "iCalendar" - label_ical_access_key_description: 'iCalendar token "%{token_name}" for "%{calendar_name}" in "%{project_name}"' + label_ical_access_key_description: "iCalendar token \"%{token_name}\" for + \"%{calendar_name}\" in \"%{project_name}\"" label_ical_access_key_not_present: "iCalendar token(s) not present." label_ical_access_key_generation_hint: "Automatically generated when subscribing to a calendar." label_ical_access_key_latest: "latest" @@ -3933,7 +4419,9 @@ en: label_custom_field_plural: "Custom fields" label_custom_field_default_type: "Empty type" label_custom_style: "Design" - label_custom_style_description: "Choose how OpenProject looks to you with themes, select your default colors to use in the app and how exports look like." + label_custom_style_description: "Choose how OpenProject looks to you with + themes, select your default colors to use in the app and how exports look + like." label_dashboard: "Dashboard" label_database_version: "PostgreSQL version" label_date: "Date" @@ -4122,9 +4610,11 @@ en: label_custom_touch_icon: "Custom touch icon" label_departments: "Organization" label_departments_description_html: > - Define your company’s structure by creating departments and sub-departments in a hierarchical way. This allows you - to reflect reporting lines and maintain a clear, structured overview of your organization within OpenProject. You - can also import an existing organization structure through [LDAP group synchronisation](ldap_docs_article). + Define your company’s structure by creating departments and sub-departments + in a hierarchical way. This allows you to reflect reporting lines and + maintain a clear, structured overview of your organization within + OpenProject. You can also import an existing organization structure through + [LDAP group synchronisation](ldap_docs_article). label_logout: "Sign out" label_mapping_for: "Mapping for: %{attribute}" label_main_menu: "Side Menu" @@ -4222,8 +4712,9 @@ en: label_overview: "Overview" label_page_title: "Page title" label_parent_group_caption: > - Setting a parent group will make this group a subgroup of the selected parent group. - This will also inherit all memberships, including permissions of the parent group. + Setting a parent group will make this group a subgroup of the selected + parent group. This will also inherit all memberships, including permissions + of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -4519,7 +5010,8 @@ en: label_global_role: "Global role" label_not_changeable: "(not changeable)" label_global: "Global" - label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. + label_seeded_from_env_warning: This record has been created through a setting + environment variable. It is not editable through UI. label_schedule_and_availability: "Schedule and availability" label_working_hours: "Work schedule" label_non_working_days: "Availability calendar" @@ -4543,7 +5035,9 @@ en: errors: missing_or_invalid_parameter: "Missing or invalid macro parameter." legacy_warning: - timeline: "This legacy timeline macro has been removed and is no longer available. You can replace the functionality with an embedded table macro." + timeline: "This legacy timeline macro has been removed and is no longer + available. You can replace the functionality with an embedded table + macro." include_wiki_page: removed: "The macro does no longer exist." wiki_child_pages: @@ -4600,38 +5094,50 @@ en: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." - create_account: "To access this work package, you will need to create and activate an account on %{instance}." + allowed_actions_html: "You may %{allowed_actions} this work package. This can + change depending on your project role and permissions." + create_account: "To access this work package, you will need to create and + activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" enterprise_text: "Share work packages with users who are not members of the project." summary: user: "%{user} shared a work package with you with %{role_rights} rights" - group: "%{user} shared a work package with the group %{group} you are a member of" + group: "%{user} shared a work package with the group %{group} you are a member + of" storages: health: plaintext: storage: "Storage" healthy: - summary: 'Good news! The status of your storage, %{storage_name}, is currently displaying as "Healthy".' + summary: "Good news! The status of your storage, %{storage_name}, is currently + displaying as \"Healthy\"." error-solved-on: "Solved On" - recommendation: "We will continue monitoring the system to ensure it remains in good health. In case of any discrepancies, we will notify you." - details: "For more details or to make any necessary amendments, you can visit your storage configuration" + recommendation: "We will continue monitoring the system to ensure it remains in + good health. In case of any discrepancies, we will notify you." + details: "For more details or to make any necessary amendments, you can visit + your storage configuration" unhealthy: - summary: 'The status of your storage, %{storage_name}, is currently displaying as "Error". We''ve detected an issue that might require your attention.' + summary: "The status of your storage, %{storage_name}, is currently displaying + as \"Error\". We've detected an issue that might require your + attention." error-details: "Error Details" error-message: "Error Message" error-occurred-on: "Occurred On" - recommendation: "We recommend heading over to the storage configuration page to address this issue" - unsubscribe: "If you would no longer like to receive these notifications, you can unsubscribe at any time. To unsubscribe, please follow the instructions on this page" + recommendation: "We recommend heading over to the storage configuration page to + address this issue" + unsubscribe: "If you would no longer like to receive these notifications, you + can unsubscribe at any time. To unsubscribe, please follow the + instructions on this page" email_notification_settings: "Storage email notification settings" see_storage_settings: "See storage settings" healthy: - subject: 'Storage "%{name}" is now healthy!' + subject: "Storage \"%{name}\" is now healthy!" solved_at: "solved at" - summary: "The problem with your %{storage_name} storage integration is now solved" + summary: "The problem with your %{storage_name} storage integration is now + solved" unhealthy: - subject: 'Storage "%{name}" is unhealthy!' + subject: "Storage \"%{name}\" is unhealthy!" since: "since" summary: "There is a problem with your %{storage_name} storage integration" troubleshooting: @@ -4652,9 +5158,13 @@ en: mail_body_lost_password: "To change your password, click on the following link:" mail_password_change_not_possible: title: "Password change not possible" - body: "Your account at %{app_title} is connected to an external authentication provider (%{name})." - subtext: "Passwords for external account cannot be changed in the application. Please use the lost password functionality of your authentication provider." - mail_body_register: "Welcome to %{app_title}. Please activate your account by clicking on this link:" + body: "Your account at %{app_title} is connected to an external authentication + provider (%{name})." + subtext: "Passwords for external account cannot be changed in the application. + Please use the lost password functionality of your authentication + provider." + mail_body_register: "Welcome to %{app_title}. Please activate your account by + clicking on this link:" mail_body_register_header_title: "Project member invitation email" mail_body_register_user: "Dear %{name}, " mail_body_register_links_html: | @@ -4664,8 +5174,10 @@ en: If you have any further questions, consult our documentation (%{documentation_link}) or contact your administrator. mail_body_register_closing: "Your OpenProject team" mail_body_register_ending: "Stay connected! Kind regards," - mail_body_reminder: "%{count} work package(s) that are assigned to you are due in the next %{days} days:" - mail_body_group_reminder: '%{count} work package(s) that are assigned to group "%{group}" are due in the next %{days} days:' + mail_body_reminder: "%{count} work package(s) that are assigned to you are due + in the next %{days} days:" + mail_body_group_reminder: "%{count} work package(s) that are assigned to group + \"%{group}\" are due in the next %{days} days:" mail_body_wiki_page_added: "The '%{id}' wiki page has been added by %{author}." mail_body_wiki_page_updated: "The '%{id}' wiki page has been updated by %{author}." mail_subject_account_activation_request: "%{value} account activation request" @@ -4690,7 +5202,8 @@ en: body: updated_by: without_message: "%{user} updated the roles you have in the project '%{project}'." - with_message: "%{user} updated the roles you have in the project '%{project}' writing:" + with_message: "%{user} updated the roles you have in the project '%{project}' + writing:" roles: "You now have the following roles:" mail_member_updated_global: @@ -4722,24 +5235,30 @@ en: notice_account_already_activated: The account has already been activated. notice_account_invalid_token: Invalid activation token notice_account_invalid_credentials: "Invalid user or password" - notice_account_invalid_credentials_or_blocked: "Invalid user or password or the account is blocked due to multiple failed login attempts. If so, it will be unblocked automatically in a short time." + notice_account_invalid_credentials_or_blocked: "Invalid user or password or the + account is blocked due to multiple failed login attempts. If so, it will be + unblocked automatically in a short time." notice_account_lost_email_sent: "An email with instructions to choose a new password has been sent to you." notice_account_new_password_forced: "A new password is required." notice_account_password_expired: "Your password expired after %{days} days. Please set a new one." notice_account_password_updated: "Password was successfully updated." notice_account_pending: "Your account was created and is now pending administrator approval." - notice_account_register_done: "Account was successfully created. To activate your account, click on the link that was emailed to you." + notice_account_register_done: "Account was successfully created. To activate + your account, click on the link that was emailed to you." notice_account_unknown_email: "Unknown user." - notice_account_update_failed: "Account setting could not be saved. Please have a look at your account page." + notice_account_update_failed: "Account setting could not be saved. Please have a + look at your account page." notice_account_updated: "Account was successfully updated." notice_account_other_session_expired: "All other sessions tied to your account have been invalidated." notice_account_wrong_password: "Wrong password" notice_account_registered_and_logged_in: "Welcome, your account has been activated. You are logged in now." notice_activation_failed: The account could not be activated. notice_auth_stage_verification_error: "Could not verify stage '%{stage}'." - notice_auth_stage_wrong_stage: "Expected to finish authentication stage '%{expected}', but '%{actual}' returned." + notice_auth_stage_wrong_stage: "Expected to finish authentication stage + '%{expected}', but '%{actual}' returned." notice_auth_stage_error: "Authentication stage '%{stage}' failed." - notice_can_t_change_password: "This account uses an external authentication source. Impossible to change the password." + notice_can_t_change_password: "This account uses an external authentication + source. Impossible to change the password." notice_custom_options_deleted: "Option '%{option_value}' and its %{num_deleted} occurrences were deleted." notice_email_error: "An error occurred while sending mail (%{value})" notice_email_sent: "An email was sent to %{value}" @@ -4748,13 +5267,20 @@ en: notice_deletion_scheduled: "The deletion has been scheduled and is performed asynchronously." notice_file_not_found: "The page you were trying to access doesn't exist or has been removed." - notice_forced_logout: "You have been automatically logged out after %{ttl_time} minutes of inactivity." - notice_internal_server_error: "An error occurred on the page you were trying to access. If you continue to experience problems please contact your %{app_title} administrator for assistance." + notice_forced_logout: "You have been automatically logged out after %{ttl_time} + minutes of inactivity." + notice_internal_server_error: "An error occurred on the page you were trying to + access. If you continue to experience problems please contact your + %{app_title} administrator for assistance." notice_locking_conflict: "Information has been updated by at least one other user in the meantime." notice_locking_conflict_additional_information: "The update(s) came from %{users}." notice_locking_conflict_reload_page: "Please reload the page, review the changes and reapply your updates." - notice_locking_conflict_warning: "This page has been updated by someone else. To not lose your edits, copy them locally and reload to view the updated version." - notice_locking_conflict_danger: "Could not save your changes because of conflicting modifications. To not lose your edits, copy them locally and reload to view the updated version." + notice_locking_conflict_warning: "This page has been updated by someone else. To + not lose your edits, copy them locally and reload to view the updated + version." + notice_locking_conflict_danger: "Could not save your changes because of + conflicting modifications. To not lose your edits, copy them locally and + reload to view the updated version." notice_locking_conflict_action_button: "Discard changes and reload" notice_member_added: Added %{name} to the project. notice_members_added: Added %{number} users to the project. @@ -4766,12 +5292,13 @@ en: notice_not_authorized_archived_project: "The project you're trying to access has been archived." notice_requires_enterprise_token: "Enterprise token missing or doesn't allow access to this page." notice_password_confirmation_failed: "The entered password is not correct." - notice_principals_found_multiple: "There are %{number} results found. \n Tab to focus the first result." - notice_principals_found_single: "There is one result. \n Tab to focus it." + notice_principals_found_multiple: "There are %{number} results found. Tab to focus the first result." + notice_principals_found_single: "There is one result. Tab to focus it." notice_parent_item_not_found: "Parent item not found." notice_project_not_deleted: "The project wasn't deleted." notice_project_not_found: "Project not found." - notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable." + notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. + Please add it to the whitelist using the %{env_name} environment variable." notice_successful_connection: "Successful connection." notice_successful_create: "Successful creation." notice_successful_delete: "Successful deletion." @@ -4785,17 +5312,22 @@ en: notice_successful_update_custom_fields_added_to_project: | Successful update. The custom fields of the activated types are automatically activated on the work package form. See more. - notice_to_many_principals_to_display: "There are too many results.\nNarrow down the search by typing in the name of the new member (or group)." + notice_to_many_principals_to_display: "There are too many results. + + Narrow down the search by typing in the name of the new member (or group)." notice_user_missing_authentication_method: User has yet to choose a password or another way to sign in. notice_user_invitation_resent: An invitation has been sent to %{email}. present_access_key_value: "Your %{key_name} is: %{value}" notice_automatic_set_of_standard_type: "Set standard type automatically." notice_logged_out: "You have been logged out." - notice_wont_delete_auth_source: The LDAP connection cannot be deleted as long as there are still users using it. - notice_project_cannot_update_custom_fields: "You cannot update the project's available custom fields. The project is invalid: %{errors}" + notice_wont_delete_auth_source: The LDAP connection cannot be deleted as long as + there are still users using it. + notice_project_cannot_update_custom_fields: "You cannot update the project's + available custom fields. The project is invalid: %{errors}" notice_attachment_migration_wiki_page: > - This page was generated automatically during the update of OpenProject. - It contains all attachments previously associated with the %{container_type} "%{container_name}". + This page was generated automatically during the update of OpenProject. It + contains all attachments previously associated with the %{container_type} + "%{container_name}". # Default format for numbers number: @@ -4820,7 +5352,9 @@ en: onboarding: heading_getting_started: "Get an overview" - text_getting_started_description: "Get a quick overview of project management and team collaboration with OpenProject. You can restart this video from the help menu." + text_getting_started_description: "Get a quick overview of project management + and team collaboration with OpenProject. You can restart this video from + the help menu." welcome: "Welcome to %{app_title}" select_language: "Please select your language" @@ -4847,7 +5381,9 @@ en: permission_comment_news: "Comment news" permission_commit_access: "Read/write access to repository (commit)" permission_copy_projects: "Copy projects" - permission_copy_projects_explanation: "In template projects, this permission has a secondary function, it allows the creation of new projects derived from the template." + permission_copy_projects_explanation: "In template projects, this permission has + a secondary function, it allows the creation of new projects derived from + the template." permission_copy_work_packages: "Duplicate work packages" permission_create_backup: "Create backups" permission_delete_work_package_watchers: "Delete watchers" @@ -4867,7 +5403,8 @@ en: permission_edit_own_messages: "Edit own messages" permission_edit_own_time_entries: "Edit own time logs" permission_edit_others_internal_comments: "Moderate internal comments" - permission_edit_others_internal_comments_explanation: "Caution: Users with this permission are able to edit other users' internal comments." + permission_edit_others_internal_comments_explanation: "Caution: Users with this + permission are able to edit other users' internal comments." permission_edit_project: "Edit project" permission_edit_project_attributes: "Edit project attributes" permission_edit_project_phases: "Edit project phases" @@ -4880,9 +5417,9 @@ en: permission_export_wiki_pages: "Export wiki pages" permission_invite_members_by_email: "Invite members by email" permission_invite_members_by_email_explanation: > - Allows users to invite new members by email. - Invited users will receive an email with a link to set their password and activate their account. - Depends on the permission to manage members + Allows users to invite new members by email. Invited users will receive an + email with a link to set their password and activate their account. Depends + on the permission to manage members permission_list_attachments: "List attachments" permission_log_own_time: "Log own time" permission_log_time: "Log time for other users" @@ -4901,10 +5438,12 @@ en: permission_manage_wiki_menu: "Manage wiki menu" permission_manage_own_working_times: "Manage own working times" permission_manage_own_working_times_explanation: > - Allows users to manage their own working times, and personal non-working days. + Allows users to manage their own working times, and personal non-working + days. permission_manage_working_times: "Manage working times for all users" permission_manage_working_times_explanation: > - Allows users to manage working times for all users, including personal non-working days. + Allows users to manage working times for all users, including personal + non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -4913,14 +5452,18 @@ en: permission_select_custom_fields: "Select custom fields" permission_select_project_custom_fields: "Select project attributes" permission_select_project_phases: "Select project phases" - permission_select_project_phases_explanation: "Activate/Deactivate the phases in a project. Enables the user to select the life cycle appropriate for the project as inactive phases will not be visible in the project overview page nor the project list." + permission_select_project_phases_explanation: "Activate/Deactivate the phases in + a project. Enables the user to select the life cycle appropriate for the + project as inactive phases will not be visible in the project overview page + nor the project list." permission_select_project_modules: "Select project modules" permission_share_work_packages: "Share work packages" permission_manage_types: "Select types" permission_manage_own_reminders: "Create own reminders" permission_view_all_principals: "View all users and groups" permission_view_all_principals_explanation: > - Allows users to see all users and groups in the system, even if they are not members of any joined projects or groups. + Allows users to see all users and groups in the system, even if they are not + members of any joined projects or groups. permission_view_project: "View projects" permission_view_changesets: "View repository revisions in OpenProject" permission_view_internal_comments: "View internal comments" @@ -4939,7 +5482,8 @@ en: permission_view_wiki_edits: "View wiki history" permission_view_wiki_pages: "View wiki" permission_work_package_assigned: "Become assignee/responsible" - permission_work_package_assigned_explanation: "Work packages can be assigned to users and groups in possession of this role in the respective project" + permission_work_package_assigned_explanation: "Work packages can be assigned to + users and groups in possession of this role in the respective project" permission_view_project_activity: "View project activity" permission_view_project_attributes: "View project attributes" permission_view_project_phases: "View project phases" @@ -4980,11 +5524,14 @@ en: heading: "Permanently delete this project?" confirmation_message_for_subprojects_html: zero: > - You are about to permanently delete all data relating to project %{name}. + You are about to permanently delete all data relating to project + %{name}. one: > - You are about to permanently delete all data relating to project %{name} and this subproject: + You are about to permanently delete all data relating to project + %{name} and this subproject: other: > - You are about to permanently delete all data relating to project %{name} and these subprojects: + You are about to permanently delete all data relating to project + %{name} and these subprojects: filters: project_phase: "Project phase: %{phase}" project_phase_any: "Project phase: Any" @@ -4997,8 +5544,8 @@ en: template: copying_title: "Applying template" copying: > - Your project is being created from the selected template project. - You will be notified by mail as soon as the project is available. + Your project is being created from the selected template project. You + will be notified by mail as soon as the project is available. use_template: "Use template" make_template: "Set as template" remove_from_templates: "Remove from templates" @@ -5030,15 +5577,24 @@ en: repositories: at_identifier: "at %{identifier}" atom_revision_feed: "Atom revision feed" - autofetch_information: "Check this if you want repositories to be updated automatically when accessing the repository module page.\nThis encompasses the retrieval of commits from the repository and refreshing the required disk storage." + autofetch_information: "Check this if you want repositories to be updated + automatically when accessing the repository module page. + + This encompasses the retrieval of commits from the repository and + refreshing the required disk storage." checkout: access: readwrite: "Read + Write" read: "Read-only" - none: "No checkout access, you may only view the repository through this application." + none: "No checkout access, you may only view the repository through this + application." access_permission: "Your permissions on this repository" url: "Checkout URL" - base_url_text: "The base URL to use for generating checkout URLs (e.g., https://myserver.example.org/repos/).\nNote: The base URL is only used for rewriting checkout URLs in managed repositories. Other repositories are not altered." + base_url_text: "The base URL to use for generating checkout URLs (e.g., + https://myserver.example.org/repos/). + + Note: The base URL is only used for rewriting checkout URLs in managed + repositories. Other repositories are not altered." default_instructions: git: |- The data contained in this repository can be downloaded to your computer with Git. @@ -5046,65 +5602,87 @@ en: subversion: |- The data contained in this repository can be downloaded to your computer with Subversion. Please consult the documentation of Subversion if you need more information on the checkout procedure and available clients. - enable_instructions_text: "Displays checkout instructions defined below on all repository-related pages." + enable_instructions_text: "Displays checkout instructions defined below on all + repository-related pages." instructions: "Checkout instructions" show_instructions: "Display checkout instructions" - text_instructions: "This text is displayed alongside the checkout URL for guidance on how to check out the repository." - not_available: "Checkout instructions are not defined for this repository. Ask your administrator to enable them for this repository in the system settings." - create_managed_delay: "Please note: The repository is managed, it is created asynchronously on the disk and will be available shortly." + text_instructions: "This text is displayed alongside the checkout URL for + guidance on how to check out the repository." + not_available: "Checkout instructions are not defined for this repository. Ask + your administrator to enable them for this repository in the system + settings." + create_managed_delay: "Please note: The repository is managed, it is created + asynchronously on the disk and will be available shortly." create_successful: "The repository has been registered." delete_sucessful: "The repository has been deleted." destroy: confirmation: "If you continue, this will permanently delete the managed repository." info: "Deleting the repository is an irreversible action." - info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." + info_not_managed: "Note: This will NOT delete the contents of this repository, + as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." - subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" - subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" + repository_verification_html: "Enter the project's identifier %{identifier} to + verify the deletion of its repository." + subtitle: "Do you really want to delete the %{repository_type} of the project + %{project_name}?" + subtitle_not_managed_html: "Do you really want to remove the linked + %{repository_type} %{url} from the project %{project_name}?" title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: - build_failed: "Unable to create the repository with the selected configuration. %{reason}" + build_failed: "Unable to create the repository with the selected configuration. + %{reason}" managed_delete: "Unable to delete the managed repository." - managed_delete_local: "Unable to delete the local repository on filesystem at '%{path}': %{error_message}" - empty_repository: "The repository exists, but is empty. It does not contain any revisions yet." + managed_delete_local: "Unable to delete the local repository on filesystem at + '%{path}': %{error_message}" + empty_repository: "The repository exists, but is empty. It does not contain any + revisions yet." exists_on_filesystem: "The repository directory already exists in the filesystem." - filesystem_access_failed: "An error occurred while accessing the repository in the filesystem: %{message}" + filesystem_access_failed: "An error occurred while accessing the repository in + the filesystem: %{message}" not_manageable: "This repository vendor cannot be managed by OpenProject." - path_permission_failed: "An error occurred trying to create the following path: %{path}. Please ensure that OpenProject may write to that folder." - unauthorized: "You're not authorized to access the repository or the credentials are invalid." + path_permission_failed: "An error occurred trying to create the following path: + %{path}. Please ensure that OpenProject may write to that folder." + unauthorized: "You're not authorized to access the repository or the credentials + are invalid." unavailable: "The repository is unavailable." exception_title: "Cannot access the repository: %{message}" - disabled_or_unknown_type: "The selected type %{type} is disabled or no longer available for the SCM vendor %{vendor}." + disabled_or_unknown_type: "The selected type %{type} is disabled or no longer + available for the SCM vendor %{vendor}." disabled_or_unknown_vendor: "The SCM vendor %{vendor} is disabled or no longer available." - remote_call_failed: "Calling the managed remote failed with message '%{message}' (Code: %{code})" + remote_call_failed: "Calling the managed remote failed with message '%{message}' + (Code: %{code})" remote_invalid_response: "Received an invalid response from the managed remote." - remote_save_failed: "Could not save the repository with the parameters retrieved from the remote." + remote_save_failed: "Could not save the repository with the parameters retrieved + from the remote." git: instructions: managed_url: "This is the URL of the managed (local) Git repository." path: >- - Specify the path to your local Git repository ( e.g., %{example_path} ). - You can also use remote repositories which are cloned to a local copy by - using a value starting with http(s):// or file://. + Specify the path to your local Git repository ( e.g., %{example_path} + ). You can also use remote repositories which are cloned to a local + copy by using a value starting with http(s):// or file://. path_encoding: "Override Git path encoding (Default: UTF-8)" local_title: "Link existing local Git repository" local_url: "Local URL" - local_introduction: "If you have an existing local Git repository, you can link it with OpenProject to access it from within the application." - managed_introduction: "Let OpenProject create and integrate a local Git repository automatically." + local_introduction: "If you have an existing local Git repository, you can link + it with OpenProject to access it from within the application." + managed_introduction: "Let OpenProject create and integrate a local Git + repository automatically." managed_title: "Git repository integrated into OpenProject" managed_url: "Managed URL" path: "Path to Git repository" path_encoding: "Path encoding" go_to_revision: "Go to revision" managed_remote: "Managed repositories for this vendor are handled remotely." - managed_remote_note: "Information on the URL and path of this repository is not available prior to its creation." + managed_remote_note: "Information on the URL and path of this repository is not + available prior to its creation." managed_url: "Managed URL" settings: automatic_managed_repos_disabled: "Disable automatic creation" automatic_managed_repos: "Automatic creation of managed repositories" - automatic_managed_repos_text: "By setting a vendor here, newly created projects will automatically receive a managed repository of this vendor." + automatic_managed_repos_text: "By setting a vendor here, newly created projects + will automatically receive a managed repository of this vendor." scm_vendor: "Source control management system" scm_type: "Repository type" scm_types: @@ -5113,25 +5691,40 @@ en: managed: "Create new repository in OpenProject" storage: not_available: "Disk storage consumption is not available for this repository." - update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." - oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" + update_timeout: "Keep the last required disk space information for a repository + for N minutes. + + As counting the required disk space of a repository may be costly, + increase this value to reduce performance impact." + oauth_application_details_html: "The client secret value will not be accessible + again after you close this window. Please copy these values into the + Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" - setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " + setup_documentation_details: "If you need help configuring a new file storage + please check the documentation: " setup_documentation_details_link_text: "File storages setup" - show_warning_details: "To use this file storage remember to activate the module and the specific storage in the project settings of each desired project." + show_warning_details: "To use this file storage remember to activate the module + and the specific storage in the project settings of each desired + project." subversion: existing_title: "Existing Subversion repository" - existing_introduction: "If you have an existing Subversion repository, you can link it with OpenProject to access it from within the application." + existing_introduction: "If you have an existing Subversion repository, you can + link it with OpenProject to access it from within the application." existing_url: "Existing URL" instructions: managed_url: "This is the URL of the managed (local) Subversion repository." - url: "Enter the repository URL. This may either target a local repository (starting with %{local_proto} ), or a remote repository.\nThe following URL schemes are supported:" + url: "Enter the repository URL. This may either target a local repository + (starting with %{local_proto} ), or a remote repository. + + The following URL schemes are supported:" managed_title: "Subversion repository integrated into OpenProject" - managed_introduction: "Let OpenProject create and integrate a local Subversion repository automatically." + managed_introduction: "Let OpenProject create and integrate a local Subversion + repository automatically." managed_url: "Managed URL" password: "Repository Password" username: "Repository username" - truncated: "Sorry, we had to truncate this directory to %{limit} files. %{truncated} entries were omitted from the list." + truncated: "Sorry, we had to truncate this directory to %{limit} files. + %{truncated} entries were omitted from the list." named_repository: "%{vendor_name} repository" update_settings_successful: "The settings have been successfully saved." url: "URL to repository" @@ -5146,61 +5739,63 @@ en: setting_allowed_link_protocols: "Allowed link protocols" setting_allowed_link_protocols_text_html: >- - Allow these protocols to be rendered as links in work package descriptions, long text fields and comments. - For example, %{tel_code} or %{element_code}. Enter one protocol per line. -
- Protocols %{http_code}, %{https_code}, and %{mailto_code} are always allowed. + Allow these protocols to be rendered as links in work package descriptions, + long text fields and comments. For example, %{tel_code} or %{element_code}. + Enter one protocol per line.
Protocols %{http_code}, %{https_code}, + and %{mailto_code} are always allowed. setting_capture_external_links: "Capture external links" setting_capture_external_links_text: > - When enabled, all external links in formatted text will redirect through a warning page - before leaving the application. This helps protect users from potentially malicious external websites. + When enabled, all external links in formatted text will redirect through a + warning page before leaving the application. This helps protect users from + potentially malicious external websites. setting_capture_external_links_require_login: "Require users to be logged in" setting_capture_external_links_require_login_text: > - When enabled, users wanting to click on external links need to be logged in before being able to continue. + When enabled, users wanting to click on external links need to be logged in + before being able to continue. setting_after_first_login_redirect_url: "First login redirect" setting_after_first_login_redirect_url_text_html: > - Set a path to redirect users after their first login. If empty, redirects to the home page for the onboarding tour. -
- Example: /my/page + Set a path to redirect users after their first login. If empty, redirects to + the home page for the onboarding tour.
Example: /my/page setting_after_login_default_redirect_url: "After login redirect" setting_after_login_default_redirect_url_text_html: > - Set a default path to redirect users after login, if no back link was provided. Redirects to home page if not set. -
- Example: /my/page + Set a default path to redirect users after login, if no back link was + provided. Redirects to home page if not set.
Example: + /my/page setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" setting_apiv3_cors_origins_instructions_html: > - If CORS is enabled, these are the origins that are allowed to access OpenProject API. -
- Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. + If CORS is enabled, these are the origins that are allowed to access + OpenProject API.
Please check the [Documentation on the Origin + header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > - If enabled, the API will allow administrators to write static read-only attributes during creation, - such as createdAt and author. + If enabled, the API will allow administrators to write static read-only + attributes during creation, such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows - administrators to impersonate the creation of items as other users. All creation requests are being - logged however with the true author. + administrators to impersonate the creation of items as other users. All + creation requests are being logged however with the true author. setting_apiv3_write_readonly_attributes_additional_html: > - For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). + For more information on attributes and supported resources, please see the + [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > - Set the maximum page size the API will respond with. - It will not be possible to perform API requests that return more values on a single page. + Set the maximum page size the API will respond with. It will not be possible + to perform API requests that return more values on a single page. setting_apiv3_max_page_size_warning: > - Please only change this value if you are sure why you need it. - Setting to a high value will result in significant performance impacts, while a value lower than the per page options - will cause errors in paginated views. + Please only change this value if you are sure why you need it. Setting to a + high value will result in significant performance impacts, while a value + lower than the per page options will cause errors in paginated views. setting_apiv3_docs: "Documentation" setting_apiv3_docs_enabled: "Enable docs page" setting_apiv3_docs_enabled_instructions_html: > - If the docs page is enabled you can get an interactive view of the APIv3 documentation under - %{link}. + If the docs page is enabled you can get an interactive view of the APIv3 + documentation under %{link}. setting_apiv3_docs_enabled_instructions_warning: > - Please be aware that enabling the API docs on a production system may expose sensitive information - or result in accidental loss of data when not being careful. - We recommend to only enable this setting for development purposes. + Please be aware that enabling the API docs on a production system may expose + sensitive information or result in accidental loss of data when not being + careful. We recommend to only enable this setting for development purposes. setting_attachment_whitelist: "Attachment upload whitelist" setting_email_delivery_method: "Email delivery method" setting_emails_salutation: "Address user in emails with" @@ -5218,8 +5813,9 @@ en: setting_activity_days_default: "Days displayed on project activity" setting_api_tokens_enabled: "Enable API tokens" setting_api_tokens_enabled_caption: > - Decide whether users can create personal API tokens in their account settings. These tokens can be used to access the different - APIs of OpenProject, such as APIv3 and MCP. + Decide whether users can create personal API tokens in their account + settings. These tokens can be used to access the different APIs of + OpenProject, such as APIv3 and MCP. setting_app_subtitle: "Application subtitle" setting_app_title: "Application title" setting_organization_name: "Organization name" @@ -5234,7 +5830,8 @@ en: setting_brute_force_block_after_failed_logins: "Block user after this number of failed login attempts" setting_brute_force_block_minutes: "Time the user is blocked for" setting_cache_formatted_text: "Cache formatted text" - setting_use_wysiwyg_description: "Select to enable CKEditor5 WYSIWYG editor for all users by default. CKEditor has limited functionality for GFM Markdown." + setting_use_wysiwyg_description: "Select to enable CKEditor5 WYSIWYG editor for + all users by default. CKEditor has limited functionality for GFM Markdown." setting_column_options: "Default work package lists columns" setting_commit_fix_keywords: "Fixing keywords" setting_commit_logs_encoding: "Commit messages encoding" @@ -5258,7 +5855,8 @@ en: setting_duration_format: "Duration format" setting_duration_format_hours_only: "Hours only" setting_duration_format_days_and_hours: "Days and hours" - setting_duration_format_instructions: "This defines how Work, Remaining work, and Time spent durations are displayed." + setting_duration_format_instructions: "This defines how Work, Remaining work, + and Time spent durations are displayed." setting_emails_footer: "Emails footer" setting_emails_header: "Emails header" setting_email_login: "Use email as login" @@ -5273,23 +5871,24 @@ en: setting_collaborative_editing_hocuspocus_secret: "Hocuspocus server secret" setting_hours_per_day: "Hours per day" setting_hours_per_day_explanation: >- - This defines what is considered a "day" when displaying duration in days and hours - (for example, if a day is 8 hours, 32 hours would be 4 days). + This defines what is considered a "day" when displaying duration in days and + hours (for example, if a day is 8 hours, 32 hours would be 4 days). setting_invitation_expiration_days: "Activation email expires after" setting_invitation_expiration_days_caption: "Number of days after which the activation email expires." setting_work_package_done_ratio: "Progress calculation mode" setting_work_package_done_ratio_field: "Work-based" setting_work_package_done_ratio_field_caption_html: >- - % Complete can be freely set to any value. - If you optionally enter a value for Work, Remaining work will automatically be derived. + % Complete can be freely set to any value. If you optionally enter a + value for Work, Remaining work will automatically be derived. setting_work_package_done_ratio_status: "Status-based" setting_work_package_done_ratio_status_caption_html: >- - Each status has a % Complete value associated with it. - Changing status will change % Complete. + Each status has a % Complete value associated with it. Changing + status will change % Complete. setting_work_package_done_ratio_explanation_html: > - In work-based mode, % Complete can be freely set to any value. - If you optionally enter a value for Work, Remaining work will automatically be derived. - In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete. + In work-based mode, % Complete can be freely set to any value. If you + optionally enter a value for Work, Remaining work will automatically be + derived. In status-based mode, each status has a % Complete value + associated with it. Changing status will change % Complete. setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" @@ -5315,17 +5914,21 @@ en: setting_percent_complete_on_status_closed: "% Complete when status is closed" setting_percent_complete_on_status_closed_no_change: "No change" setting_percent_complete_on_status_closed_no_change_caption_html: >- - The value of % Complete will not change even when a work package is closed. + The value of % Complete will not change even when a work package is + closed. setting_percent_complete_on_status_closed_set_100p: "Automatically set to 100%" setting_percent_complete_on_status_closed_set_100p_caption: >- A closed work package is considered complete. setting_plain_text_mail: "Plain text mail (no HTML)" setting_protocol: "Protocol" setting_project_gantt_query: "Project portfolio Gantt view" - setting_project_gantt_query_text: "You can modify the query that is used to display Gantt chart from the project overview page." + setting_project_gantt_query_text: "You can modify the query that is used to + display Gantt chart from the project overview page." setting_security_badge_displayed: "Display security badge" setting_registration_footer: "Registration footer" - setting_registration_footer_caption: "This text is displayed in the footer of the registration page. Use the HTML editor to format the text for each selected language." + setting_registration_footer_caption: "This text is displayed in the footer of + the registration page. Use the HTML editor to format the text for each + selected language." setting_repositories_automatic_managed_vendor: "Automatic repository vendor type" setting_repositories_encodings: "Repositories encodings" setting_repository_storage_cache_minutes: "Repository disk size cache" @@ -5336,43 +5939,51 @@ en: setting_repository_truncate_at: "Maximum number of files displayed in the repository browser" setting_self_registration: "Self-registration" setting_self_registration_caption: > - Choose the self-registration mechanism for users. Be careful with the setting you choose, as some - options allow users to activate their own accounts to this instance. + Choose the self-registration mechanism for users. Be careful with the + setting you choose, as some options allow users to activate their own + accounts to this instance. setting_self_registration_warning: > - The user will be able to activate their own accounts. - Please note that this will give them access to all public projects and their content. - Please make sure that no sensitive or private data is exposed in public projects. + The user will be able to activate their own accounts. Please note that this + will give them access to all public projects and their content. Please make + sure that no sensitive or private data is exposed in public projects. setting_self_registration_disabled: "Disabled" setting_self_registration_disabled_caption: > - No accounts can be registered on their own. Only administrators and users with the global permission - to create new users are able to create new accounts. + No accounts can be registered on their own. Only administrators and users + with the global permission to create new users are able to create new + accounts. setting_self_registration_activation_by_email: "Account activation by email" setting_self_registration_activation_by_email_caption: > - Users can register on their own and activate their account after confirming their email address. - Administrators have no moderation control over the activation process. + Users can register on their own and activate their account after confirming + their email address. Administrators have no moderation control over the + activation process. setting_self_registration_automatic_activation: "Automatic account activation" setting_self_registration_automatic_activation_caption: > - Users can register on their own. Their accounts are immediately active without further action. - Administrators have no moderation control over the activation process. + Users can register on their own. Their accounts are immediately active + without further action. Administrators have no moderation control over the + activation process. setting_self_registration_manual_activation: "Manual account activation" setting_self_registration_manual_activation_caption: > - Users can register on their own. Their accounts are in a pending state until an administrator - or user with the global permission to create or manage users activates them. + Users can register on their own. Their accounts are in a pending state until + an administrator or user with the global permission to create or manage + users activates them. setting_session_ttl: "Session expiration time after inactivity" setting_session_ttl_hint: "Value below 5 works like disabled" setting_session_ttl_enabled: "Session expires" setting_start_of_week: "Week starts on" setting_sys_api_enabled: "Enable repository management web service" - setting_sys_api_description: "The repository management web service provides integration and user authorization for accessing repositories." + setting_sys_api_description: "The repository management web service provides + integration and user authorization for accessing repositories." setting_time_format: "Time" setting_total_percent_complete_mode: "Calculation of % Complete hierarchy totals" setting_total_percent_complete_mode_work_weighted_average: "Weighted by work" setting_total_percent_complete_mode_work_weighted_average_caption_html: >- - The total % Complete will be weighted against the Work of each work package in the hierarchy. - Work packages without Work will be ignored. + The total % Complete will be weighted against the Work of each + work package in the hierarchy. Work packages without Work will be + ignored. setting_total_percent_complete_mode_simple_average: "Simple average" setting_total_percent_complete_mode_simple_average_caption_html: >- - Work is ignored and the total % Complete will be a simple average of % Complete values of work packages in the hierarchy. + Work is ignored and the total % Complete will be a simple + average of % Complete values of work packages in the hierarchy. setting_accessibility_mode_for_anonymous: "Enable accessibility mode for anonymous users" setting_user_format: "Users name format" setting_user_default_timezone: "Users default time zone" @@ -5383,10 +5994,14 @@ en: setting_welcome_on_homescreen: "Display welcome block on homescreen" setting_work_packages_identifier_classic: Instance-wide numerical sequence (default) setting_work_packages_identifier_classic_caption: > - Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. + Every work package gets a sequential number starting with 1 and incremented + with every new one. The numbers are unique within this instance so they + remain the same even if work packages are moved between projects. setting_work_packages_identifier_semantic: Project-based semantic identifiers setting_work_packages_identifier_semantic_caption: > - Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. + Every project has a unique identifier that is prefixed to the work package + ID. If a work package moved to another project, a new identifier is + generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -5400,72 +6015,87 @@ en: registration: "Registration" sso: "Single Sign-On (SSO)" omniauth_direct_login_hint_html: > - If this option is active, login requests will redirect to the configured omniauth provider. - The login dropdown and sign-in page will be disabled. -
- Note: Unless you also disable password logins, with this option enabled, - users can still log in internally by visiting the %{internal_path} login page. + If this option is active, login requests will redirect to the configured + omniauth provider. The login dropdown and sign-in page will be disabled. +
Note: Unless you also disable password logins, + with this option enabled, users can still log in internally by visiting + the %{internal_path} login page. remapping_existing_users_hint: > - If enabled, allows any configured identity provider to login existing users based on their username, - even if the user never signed in through that provider before. This can be useful when migrating the OpenProject instance - to a new SSO provider, but is not recommended when using a provider that is not trusted by all users of your instance. + If enabled, allows any configured identity provider to login existing + users based on their username, even if the user never signed in through + that provider before. This can be useful when migrating the OpenProject + instance to a new SSO provider, but is not recommended when using a + provider that is not trusted by all users of your instance. attachments: whitelist_text_html: > - Define a list of valid file extensions and/or mime types for uploaded files. -
- Enter file extensions (e.g., %{ext_example}) or mime types (e.g., %{mime_example}). -
- Leave empty to allow any file type to be uploaded. - Multiple values allowed (one line for each value). + Define a list of valid file extensions and/or mime types for uploaded + files.
Enter file extensions (e.g., %{ext_example}) + or mime types (e.g., %{mime_example}).
Leave empty to + allow any file type to be uploaded. Multiple values allowed (one line + for each value). show_work_package_attachments: > - Deactivating this option will hide the attachments list on the work packages files tab for new projects. The - files attached in the description of a work package will still be uploaded in the internal attachments storage. + Deactivating this option will hide the attachments list on the work + packages files tab for new projects. The files attached in the + description of a work package will still be uploaded in the internal + attachments storage. antivirus: title: "Virus scanning" - clamav_ping_failed: "Failed to connect the the ClamAV daemon. Double-check the configuration and try again." + clamav_ping_failed: "Failed to connect the the ClamAV daemon. Double-check the + configuration and try again." remaining_quarantined_files_html: > - Virus scanning has been disbled. %{file_count} remain in quarantine. - To review quarantined files, please visit this link: %{link} + Virus scanning has been disbled. %{file_count} remain in quarantine. To + review quarantined files, please visit this link: %{link} remaining_scan_complete_html: > - Remaining files have been scanned. There are %{file_count} in quarantine. - You are being redirected to the quarantine page. Use this page to delete or override quarantined files. + Remaining files have been scanned. There are %{file_count} in + quarantine. You are being redirected to the quarantine page. Use this + page to delete or override quarantined files. remaining_rescanned_files: > - Virus scanning has been enabled successfully. - There are %{file_count} that were uploaded previously and still need to be scanned. - This process has been scheduled in the background. The files will remain accessible during the scan. + Virus scanning has been enabled successfully. There are %{file_count} + that were uploaded previously and still need to be scanned. This process + has been scheduled in the background. The files will remain accessible + during the scan. actions: delete: "Delete the file" quarantine: "Quarantine the file" instructions_html: > - Select the action to perform for files on which a virus has been detected: -
-
    -
  • %{quarantine_option}: Quarantine the file, preventing users from accessing it. Administrators can review and delete quarantined files in the administration.
  • -
  • %{delete_option}: Delete the file immediately.
  • -
+ Select the action to perform for files on which a virus has been + detected:
  • %{quarantine_option}: + Quarantine the file, preventing users from accessing it. + Administrators can review and delete quarantined files in the + administration.
  • %{delete_option}: Delete the + file immediately.
modes: clamav_socket_html: Enter the socket to the clamd daemon, e.g., %{example} - clamav_host_html: Enter the hostname and port to the clamd daemon separated by colon. e.g., %{example} + clamav_host_html: Enter the hostname and port to the clamd daemon separated by + colon. e.g., %{example} description_html: > - Select the mode in which the antivirus scanner integration should operate. -
-
    -
  • %{disabled_option}: Uploaded files are not scanned for viruses.
  • -
  • %{socket_option}: You have set up ClamAV on the same server as OpenProject and the scan daemon clamd is running in the background
  • -
  • %{host_option}: You are streaming files to an external virus scanning host.
  • -
+ Select the mode in which the antivirus scanner integration should + operate.
  • %{disabled_option}: Uploaded + files are not scanned for viruses.
  • +
  • %{socket_option}: You have set up ClamAV on the + same server as OpenProject and the scan daemon clamd is running in the + background
  • %{host_option}: You are streaming + files to an external virus scanning host.
brute_force_prevention: "Automated user blocking" date_format: first_date_of_week_and_year_set: > - If either options "%{day_of_week_setting_name}" or "%{first_week_setting_name}" are set, - the other has to be set as well to avoid inconsistencies in the frontend. + If either options "%{day_of_week_setting_name}" or + "%{first_week_setting_name}" are set, the other has to be set as well to + avoid inconsistencies in the frontend. first_week_of_year_text_html: > - Select the date of January that is contained in the first week of the year. - This value together with first day of the week determines the total number of weeks in a year. - For more information, please see our documentation on this topic. + Select the date of January that is contained in the first week of the + year. This value together with first day of the week determines the + total number of weeks in a year. For more information, please see our documentation on this topic. experimental: - save_confirmation: Caution! Risk of data loss! Only activate experimental features if you do not mind breaking your OpenProject installation and losing all of its data. - warning_toast: Feature flags are settings that activate features that are still under development. They shall only be used for testing purposes. They shall never be activated on OpenProject installations holding important data. These features will very likely corrupt your data. Use them at your own risk. + save_confirmation: Caution! Risk of data loss! Only activate experimental + features if you do not mind breaking your OpenProject installation and + losing all of its data. + warning_toast: Feature flags are settings that activate features that are still + under development. They shall only be used for testing purposes. They + shall never be activated on OpenProject installations holding important + data. These features will very likely corrupt your data. Use them at + your own risk. feature_flags: Feature flags general: "General" highlighting: @@ -5476,11 +6106,21 @@ en: type: "Entire row by Type" priority: "Entire row by Priority" icalendar: - enable_subscriptions_text_html: Allows users with the necessary permissions to subscribe to OpenProject calendars and access work package information via an external calendar client. Note: Please read about iCalendar subscriptions to understand potential security risks before enabling this. + enable_subscriptions_text_html: Allows users with the necessary permissions to + subscribe to OpenProject calendars and access work package information + via an external calendar client. Note: Please read + about iCalendar subscriptions to + understand potential security risks before enabling this. language_name_being_default: "%{language_name} (default)" notifications: - events_explanation: "Governs for which event an email is sent out. Work packages are excluded from this list as the notifications for them can be configured specifically for every user." - delay_minutes_explanation: "Email sending can be delayed to allow users with configured in app notification to confirm the notification within the application before a mail is sent out. Users who read a notification within the application will not receive an email for the already read notification." + events_explanation: "Governs for which event an email is sent out. Work packages + are excluded from this list as the notifications for them can be + configured specifically for every user." + delay_minutes_explanation: "Email sending can be delayed to allow users with + configured in app notification to confirm the notification within the + application before a mail is sent out. Users who read a notification + within the application will not receive an email for the already read + notification." other: "Other" passwords: "Passwords" project_attributes: @@ -5490,76 +6130,117 @@ en: label_new_section: "Section" label_edit_section: "Edit title" label_section_actions: "Section actions" - heading_description: "These project attributes appear in the overview page of each project. You can add new attributes, group them into sections and re-order them as you please. These attributes can be enabled or disabled but not re-ordered at a project level." + heading_description: "These project attributes appear in the overview page of + each project. You can add new attributes, group them into sections and + re-order them as you please. These attributes can be enabled or disabled + but not re-ordered at a project level." label_project_custom_field_actions: "Project attribute actions" label_no_project_custom_fields: "No project attributes defined in this section" edit: - description: "Changes to this project attribute will be reflected in all projects where it is enabled. Required attributes cannot be disabled on a per-project basis." + description: "Changes to this project attribute will be reflected in all + projects where it is enabled. Required attributes cannot be disabled + on a per-project basis." new: heading: "New attribute" - description: "Changes to this project attribute will be reflected in all projects where it is enabled. Required attributes cannot be disabled on a per-project basis." + description: "Changes to this project attribute will be reflected in all + projects where it is enabled. Required attributes cannot be disabled + on a per-project basis." sections: display_representation: overview: label: "Project attribute shown in:" main_area: label: "Main area" - description: "Add all the project attributes as individual widgets in the main section of the project overview." + description: "Add all the project attributes as individual widgets in the main + section of the project overview." side_panel: label: "Side panel" - description: "Add all the project attributes in a section inside the right side panel in the project overview." + description: "Add all the project attributes in a section inside the right side + panel in the project overview." project_initiation_request: header_description: > - OpenProject can generate a step-by-step wizard to help project managers fill out a project initiation request. - You can choose which project attributes should be included and create a PDF artifact as a result. + OpenProject can generate a step-by-step wizard to help project managers + fill out a project initiation request. You can choose which project + attributes should be included and create a PDF artifact as a result. status: submitted: "%{wizard_name} has been submitted" - submitted_description: "Click the button below to go to the work package for the submission process." + submitted_description: "Click the button below to go to the work package for the + submission process." submitted_button: "Open submission request" not_completed: "%{wizard_name} not yet completed" - not_completed_description: "Provide the necessary information by filling the attributes and get the project started." + not_completed_description: "Provide the necessary information by filling the + attributes and get the project started." wizard_status_button: project_initiation_request: "Open project initiation request" project_creation_wizard: "Open project creation wizard" project_mandate: "Open project mandate" blankslate: title: "Initiation request not enabled" - description: "OpenProject can generate a step-by-step wizard to help project managers fill out a project initiation request. You can choose which project attributes should be included and what to do with the output document. Enable it here to start configuring the wizard." + description: "OpenProject can generate a step-by-step wizard to help project + managers fill out a project initiation request. You can choose which + project attributes should be included and what to do with the output + document. Enable it here to start configuring the wizard." disable_dialog: title: "Disable project initiation request" heading: "Disable this project initiation request?" - confirmation_message: "The initiation request wizard will no longer be available to new projects based on this template. Project managers and project owners will need to manually configure and fill out the relevant information in the Project overview." + confirmation_message: "The initiation request wizard will no longer be available + to new projects based on this template. Project managers and project + owners will need to manually configure and fill out the relevant + information in the Project overview." checkbox_message: "I understand that this action is not reversible" name: artifact_name: "Artifact name" - artifact_name_caption: "Choose the name for this artifact that your project management framework recommends." + artifact_name_caption: "Choose the name for this artifact that your project + management framework recommends." options: project_initiation_request: "Project initiation request" project_creation_wizard: "Project creation wizard" project_mandate: "Project mandate" submission: description_template: > - **This work package was automatically created upon completion of the %{wizard_name} workflow.** + **This work package was automatically created upon completion of the + %{wizard_name} workflow.** - A PDF artifact containing all submitted information has been generated and attached to this work package for reference and audit purposes. + A PDF artifact containing all submitted information has been generated + and attached to this work package for reference and audit purposes. - If you need to update or re-run the initiation steps, you can reopen the wizard at any time by using the link below: - description: "When a user submits a project initiation request, a new work package will be created with the request artifact attached as a PDF file. The settings below define the type, status and assignee for this new work package." + If you need to update or re-run the initiation steps, you can reopen + the wizard at any time by using the link below: + description: "When a user submits a project initiation request, a new work + package will be created with the request artifact attached as a PDF + file. The settings below define the type, status and assignee for this + new work package." work_package_type: "Work package type" - work_package_type_caption: "The work package type that should be used to store the completed artifact." + work_package_type_caption: "The work package type that should be used to store + the completed artifact." status_when_submitted: "Status when submitted" - status_when_submitted_caption: "The status the generated work package will transition to once the request is submitted." - send_confirmation_email: "Send confirmation email to the user who submitted the project initiation request" + status_when_submitted_caption: "The status the generated work package will + transition to once the request is submitted." + send_confirmation_email: "Send confirmation email to the user who submitted the + project initiation request" assignee: "Assignee when submitted" - assignee_caption_html: "The user or group assigned to this project attribute will also become the assignee of the new work package. This list includes active project attributes of type User only." + assignee_caption_html: "The user or group assigned to this project attribute + will also become the assignee of the new work package. This list + includes active project attributes of type User only." confirmation_email_text: "Confirmation email text" - confirmation_email_default: "Hello,\n\nYou submitted a project initiation request for **%{project_name}**. It is now awaiting review.\nClick the link below to access the work package with your request." + confirmation_email_default: "Hello, + + + You submitted a project initiation request for **%{project_name}**. It + is now awaiting review. + + Click the link below to access the work package with your request." work_package_comment: "Work package comment" - work_package_comment_caption: "The assignee selected above will automatically be @mentioned in the comment." - work_package_comment_default: "A project initiation request for **%{project_name}** was submitted and is awaiting review." + work_package_comment_caption: "The assignee selected above will automatically be + @mentioned in the comment." + work_package_comment_default: "A project initiation request for + **%{project_name}** was submitted and is awaiting review." project_phase_definitions: heading: "Project life cycle" - heading_description: "Project life cycle defines the project phases that can be used for your project planning and will appear in the overview page of each project. These attributes can be enabled or disabled but not re-ordered at a project level." + heading_description: "Project life cycle defines the project phases that can be + used for your project planning and will appear in the overview page of + each project. These attributes can be enabled or disabled but not + re-ordered at a project level." label_add: "Add" label_add_description: "Add project phase definition" filter: @@ -5568,7 +6249,8 @@ en: non_defined: "No phases are currently defined." phase_gates: "Phase gates" new: - description: "Changes to this project phase will be reflected in all projects where it is enabled." + description: "Changes to this project phase will be reflected in all projects + where it is enabled." heading: "New phase" both_gate: "Start and finish gate" no_gate: "No gate" @@ -5577,7 +6259,8 @@ en: finish_gate: "Finish gate" finish_gate_caption: "Add a gate with the end date of the phase" projects: - missing_dependencies: "Project module %{module} was checked which depends on %{dependencies}. You need to check these dependencies as well." + missing_dependencies: "Project module %{module} was checked which depends on + %{dependencies}. You need to check these dependencies as well." section_new_projects: "Settings for new projects" section_project_overview: "Settings for project lists" session: "Session" @@ -5594,8 +6277,9 @@ en: activities: enable_internal_comments: "Enable internal comments" helper_text_html: > - Internal comments allow an internal team to communicate amongst themselves privately. - These are only visible to selected roles that have the necessary permissions and will not be visible publicly. + Internal comments allow an internal team to communicate amongst + themselves privately. These are only visible to selected roles that + have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: @@ -5616,19 +6300,25 @@ en: sentence_connector: "and" skip_last_comma: "false" - text_accessibility_hint: "The accessibility mode is designed for users who are blind, motorically handicaped or have a bad eyesight. For the latter focused elements are specially highlighted. Please notice, that the Backlogs module is not available in this mode." - text_access_token_hint: "Access tokens allow you to grant external applications access to resources in OpenProject." + text_accessibility_hint: "The accessibility mode is designed for users who are + blind, motorically handicaped or have a bad eyesight. For the latter focused + elements are specially highlighted. Please notice, that the Backlogs module + is not available in this mode." + text_access_token_hint: "Access tokens allow you to grant external applications + access to resources in OpenProject." text_analyze: "Further analyze: %{subject}" text_are_you_sure: "Are you sure?" open_link_in_a_new_tab: "Open link in a new tab" text_are_you_sure_continue: "Are you sure you want to continue?" text_are_you_sure_with_children: "Delete work package and all child work packages?" - text_are_you_sure_with_project_custom_fields: "Deleting this attribute will also delete its values in all projects. Are you sure you want to do this?" - text_are_you_sure_with_project_life_cycle_step: "Deleting this phase will also delete its usages in all projects. Are you sure you want to do this?" + text_are_you_sure_with_project_custom_fields: "Deleting this attribute will also + delete its values in all projects. Are you sure you want to do this?" + text_are_you_sure_with_project_life_cycle_step: "Deleting this phase will also + delete its usages in all projects. Are you sure you want to do this?" text_assign_to_project: "Assign to the project" text_form_configuration: > - You can customize which fields will be displayed in work package forms. - You can freely group the fields to reflect the needs for your domain. + You can customize which fields will be displayed in work package forms. You + can freely group the fields to reflect the needs for your domain. text_form_configuration_required_attribute: "Attribute is marked required and thus always shown" text_caracters_maximum: "%{count} characters maximum." text_caracters_minimum: "Must be at least %{count} characters long." @@ -5639,38 +6329,41 @@ en: When using custom fields: Keep in mind that custom fields need to be activated per project, too. text_custom_field_hint_activate_per_project_and_type: > - Custom fields need to be activated per work - package type and per project. + Custom fields need to be activated per work package type and per project. text_project_custom_field_html: > - The Enterprise edition will add these additional add-ons for projects' custom fields:
-
    + The Enterprise edition will add these additional add-ons for projects' + custom fields:
    • Add custom fields for projects to your Project list to create a project portfolio view
    text_custom_logo_instructions: > - The logo automatically scales to fit the header. - For best results, upload a white logo on a transparent 130×47px image. - You can add as much spacing inside that image as you like. + The logo automatically scales to fit the header. For best results, upload a + white logo on a transparent 130×47px image. You can add as much spacing + inside that image as you like. text_custom_logo_mobile_instructions: > - The logo automatically scales to fit the header. - For best results, upload a white logo on a transparent 130×33px image. - You can add as much spacing inside that image as you like. + The logo automatically scales to fit the header. For best results, upload a + white logo on a transparent 130×33px image. You can add as much spacing + inside that image as you like. text_custom_export_logo_instructions: > - This is the logo that appears in your PDF exports. - It needs to be a PNG or JPEG image file. - A black or colored logo on transparent or white background is recommended. + This is the logo that appears in your PDF exports. It needs to be a PNG or + JPEG image file. A black or colored logo on transparent or white background + is recommended. text_custom_export_cover_instructions: > - This is the image that appears in the background of a cover page in your PDF exports. - It needs to be an about 800px width by 500px height sized PNG or JPEG image file. + This is the image that appears in the background of a cover page in your PDF + exports. It needs to be an about 800px width by 500px height sized PNG or + JPEG image file. text_custom_export_footer_instructions: > - PDF exports will include a graphical element positioned to the left of the footer. - This image must be a PNG or JPEG file with approximately 200 pixels in width. + PDF exports will include a graphical element positioned to the left of the + footer. This image must be a PNG or JPEG file with approximately 200 pixels + in width. label_custom_export_font_instructions: > - Upload and manage custom TrueType (.ttf) fonts used in your PDF exports. - For best results, use matching files from the same font family. If no font is provided, the default NotoSans font will be used. + Upload and manage custom TrueType (.ttf) fonts used in your PDF exports. For + best results, use matching files from the same font family. If no font is + provided, the default NotoSans font will be used. label_custom_export_images_instructions: > Upload and manage custom image files used in your PDF exports. text_custom_export_font_regular_instructions: > - This is the font file for regular text. It needs to be in TTF format and is required. + This is the font file for regular text. It needs to be in TTF format and is + required. text_custom_export_font_bold_instructions: > This is the font file for bold text. It needs to be in TTF format. text_custom_export_font_italic_instructions: > @@ -5679,36 +6372,45 @@ en: This is the font file for bold and italic text. It needs to be in TTF format. text_custom_favicon_instructions: > This is the tiny icon that appears in your browser window/tab next to the - page's title. - It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background. + page's title. It needs to be a squared 32 by 32 pixels sized PNG image file + with a transparent background. text_custom_touch_icon_instructions: > This is the icon that appears in your mobile or tablet when you place a - bookmark on your homescreen. - It needs to be a squared 180 by 180 pixels sized PNG image file. Please - make sure the image's background is not transparent otherwise it will look - bad on iOS. + bookmark on your homescreen. It needs to be a squared 180 by 180 pixels + sized PNG image file. Please make sure the image's background is not + transparent otherwise it will look bad on iOS. text_database_allows_tsv: "Database allows TSVector (optional)" text_default_administrator_account_changed: "Default administrator account changed" text_default_encoding: "Default: UTF-8" text_destroy: "Delete" - text_destroy_with_associated: "There are additional objects associated with the work package(s) that are to be deleted. Those objects are of the following types:" + text_destroy_with_associated: "There are additional objects associated with the + work package(s) that are to be deleted. Those objects are of the following + types:" text_destroy_what_to_do: "What do you want to do?" - text_diff_truncated: "... This diff was truncated because it exceeds the maximum size that can be displayed." - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server to enable them." + text_diff_truncated: "... This diff was truncated because it exceeds the maximum + size that can be displayed." + text_email_delivery_not_configured: "Email delivery is not configured, and + notifications are disabled. + + Configure your SMTP server to enable them." text_enumeration_category_reassign_to: "Reassign them to this value:" text_enumeration_destroy_question: "%{count} objects are assigned to this value." text_file_repository_writable: "Attachments directory writable" text_git_repo_example: "a bare and local repository (e.g. /gitrepo, c:\\gitrepo)" - text_hint_date_format: "Enter a date in the form of YYYY-MM-DD. Other formats may be changed to an unwanted date." + text_hint_date_format: "Enter a date in the form of YYYY-MM-DD. Other formats + may be changed to an unwanted date." text_hint_disable_with_0: "Note: Disable with 0" text_hours_between: "Between %{min} and %{max} hours." text_work_package_added: "Work package %{id} has been reported by %{author}." text_work_package_category_destroy_assignments: "Remove category assignments" - text_work_package_category_destroy_question: "Some work packages (%{count}) are assigned to this category. What do you want to do?" + text_work_package_category_destroy_question: "Some work packages (%{count}) are + assigned to this category. What do you want to do?" text_work_package_category_reassign_to: "Reassign work packages to this category" text_work_package_updated: "Work package %{id} has been updated by %{author}." - text_work_package_watcher_added: "You have been added as a watcher to Work package %{id} by %{watcher_changer}." - text_work_package_watcher_removed: "You have been removed from watchers of Work package %{id} by %{watcher_changer}." + text_work_package_watcher_added: "You have been added as a watcher to Work + package %{id} by %{watcher_changer}." + text_work_package_watcher_removed: "You have been removed from watchers of Work + package %{id} by %{watcher_changer}." text_work_packages_destroy_confirmation: "Are you sure you want to delete the selected work package(s)?" text_work_packages_ref_in_commit_messages: "Referencing and fixing work packages in commit messages" text_journal_added: "%{label} %{value} added" @@ -5732,30 +6434,54 @@ en: text_load_default_configuration: "Load the default configuration" text_no_roles_defined: There are no roles defined. text_no_access_tokens_configurable: "There are no access tokens which can be configured." - text_no_configuration_data: "Roles, types, work package statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." + text_no_configuration_data: "Roles, types, work package statuses and workflow + have not been configured yet. + + It is highly recommended to load the default configuration. You will be able + to modify it once loaded." text_no_notes: "There are no comments available for this work package." - text_notice_too_many_values_are_inperformant: "Note: Displaying more than 100 items per page can increase the page load time." + text_notice_too_many_values_are_inperformant: "Note: Displaying more than 100 + items per page can increase the page load time." text_notice_security_badge_displayed_html: > - Note: if enabled, this will display a badge with your installation status in the %{information_panel_label} administration panel, - and on the home page. It is displayed to administrators only. -
    - The badge will check your current OpenProject version against the official OpenProject release database to alert you of any updates or known vulnerabilities. - For more information on what the check provides, what data is needed to provide available updates, and how to disable this check, please visit the configuration documentation. - text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" + Note: if enabled, this will display a badge with your installation status in + the %{information_panel_label} + administration panel, and on the home page. It is displayed to + administrators only.
    The badge will check your current OpenProject + version against the official OpenProject release database to alert you of + any updates or known vulnerabilities. For more information on what the check + provides, what data is needed to provide available updates, and how to + disable this check, please visit the + configuration documentation. + text_own_membership_delete_confirmation: "You are about to remove some or all of + your permissions and may no longer be able to edit this project after that. + + Are you sure you want to continue?" text_permanent_delete_confirmation_checkbox_label: "I understand that this deletion cannot be reversed" text_permanent_remove_confirmation_checkbox_label: "I understand that this removal cannot be reversed" text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" - text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." - text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' + text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes + and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: "The project identifier is prepended to all + work package IDs. If the identifier is \"PROJ\" for example, the work + package identifier will be \"PROJ-12\" or \"PROJ-246\"." text_project_identifier_url_description: "The project identifier is included in the URL of the project." - text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." - text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." + text_project_identifier_handle_format: "Must start with a letter and contain + only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only + lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" - text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' - text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." + text_regexp_multiline: "The regex is applied in a multi-line mode. e.g., ^---\\s+" + text_repository_usernames_mapping: "Select or update the OpenProject user mapped + to each username found in the repository log. + + Users with the same OpenProject and repository username or email are + automatically mapped." text_status_changed_by_changeset: "Applied in changeset %{value}." - text_table_difference_description: "In this table the single %{entries} are shown. You can view the difference between any two entries by first selecting the according checkboxes in the table. When clicking on the button below the table the differences are shown." + text_table_difference_description: "In this table the single %{entries} are + shown. You can view the difference between any two entries by first + selecting the according checkboxes in the table. When clicking on the button + below the table the differences are shown." text_time_logged_by_changeset: "Applied in changeset %{value}." text_tip_work_package_begin_day: "work package beginning this day" text_tip_work_package_begin_end_day: "work package beginning and ending this day" @@ -5765,11 +6491,13 @@ en: text_user_invited: The user has been invited and is pending registration. text_user_wrote: "%{value} wrote:" text_wrote: "wrote" - text_warn_on_leaving_unsaved: "The work package contains unsaved text that will be lost if you leave this page." + text_warn_on_leaving_unsaved: "The work package contains unsaved text that will + be lost if you leave this page." text_what_did_you_change_click_to_add_comment: "What did you change? Click to add comment" text_wiki_destroy_confirmation: "Are you sure you want to delete this wiki and all its content?" text_wiki_page_destroy_children: "Delete child pages and all their descendants" - text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" + text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and + descendant(s). What do you want to do?" text_wiki_page_nullify_children: "Keep child pages as root pages" text_wiki_page_reassign_children: "Reassign child pages to this parent page" text_workflow_edit: "Select a role and a type to edit the workflow" @@ -5780,11 +6508,15 @@ en: help_texts: views: project: > - %{plural} are always attached to a project. - You can only select projects here where the %{plural} module is active. - After creating a %{singular} you can add work packages from other projects to it. - public: "Publish this view, allowing other users to access your view. Users with the 'Manage public views' permission can modify or remove public query. This does not affect the visibility of work package results in that view and depending on their permissions, users may see different results." - favoured: "Mark this view as favourite and add to the saved views sidebar on the left." + %{plural} are always attached to a project. You can only select projects + here where the %{plural} module is active. After creating a %{singular} + you can add work packages from other projects to it. + public: "Publish this view, allowing other users to access your view. Users with + the 'Manage public views' permission can modify or remove public query. + This does not affect the visibility of work package results in that view + and depending on their permissions, users may see different results." + favoured: "Mark this view as favourite and add to the saved views sidebar on the + left." time: am: "am" formats: @@ -5805,16 +6537,16 @@ en: tooltip_user_default_timezone: > The default time zone for new users. Can be changed in a user's settings. tooltip_resend_invitation: > - Sends another invitation email with a fresh token in - case the old one expired or the user did not get the original email. - Can also be used for active users to choose a new authentication method. - When used with active users their status will be changed to 'invited'. + Sends another invitation email with a fresh token in case the old one + expired or the user did not get the original email. Can also be used for + active users to choose a new authentication method. When used with active + users their status will be changed to 'invited'. tooltip: setting_email_login: > If enabled a user will be unable to chose a login during registration. - Instead their given email address will serve as the login. - An administrator may still change the login separately. + Instead their given email address will serve as the login. An + administrator may still change the login separately. queries: apply_filter: Apply preconfigured filter @@ -5827,7 +6559,8 @@ en: sort_by: automatic: heading: "Automatic" - description: "Order the %{plural} by one or more sorting criteria. You will lose the previous sorting." + description: "Order the %{plural} by one or more sorting criteria. You will lose + the previous sorting." top_menu: additional_resources: "Additional resources" @@ -5844,15 +6577,16 @@ en: authentication_provider: "Authentication Provider" identity_url_text: "The internal unique identifier provided by the authentication provider." authentication_settings_disabled_due_to_external_authentication: > - This user authenticates via an external authentication provider, so there is no password - in OpenProject to be changed. + This user authenticates via an external authentication provider, so there + is no password in OpenProject to be changed. authorization_rejected: "You are not allowed to sign in." assign_random_password: "Assign random password (sent to user via email)" blocked: "locked temporarily" blocked_num_failed_logins: one: "locked temporarily (one failed login attempt)" other: "locked temporarily (%{count} failed login attempts)" - confirm_status_change: "You are about to change the status of '%{name}'. Are you sure you want to continue?" + confirm_status_change: "You are about to change the status of '%{name}'. Are you + sure you want to continue?" deleted: "Deleted user" error_status_change_self: "You cannot change your own user status." error_admin_change_on_non_admin: "Only administrators can change the status of administrator users." @@ -5861,13 +6595,15 @@ en: invited: invited lock: "Lock permanently" locked: "locked permanently" - no_login: "This user authenticates through login by password. Since it is disabled, they cannot log in." + no_login: "This user authenticates through login by password. Since it is + disabled, they cannot log in." password_change_unsupported: Change of password is not supported. registered: "registered" reset_failed_logins: "Reset failed logins" status_user_and_brute_force: "%{user} and %{brute_force}" status_change: "Status change" - text_change_disabled_for_provider_login: "The name and email is set by your login provider and can thus not be changed." + text_change_disabled_for_provider_login: "The name and email is set by your + login provider and can thus not be changed." unlock: "Unlock" unlock_and_reset_failed_logins: "Unlock and reset failed logins" error_cannot_delete_user: "User cannot be deleted" @@ -5877,51 +6613,61 @@ en: version_status_open: "open" note: Note - note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." + note_password_login_disabled_link: "Password login has been disabled through a + [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." warning_imminent_user_limit_html: > - You invited more users than are supported by your current plan. - Invited users may not be able to join your OpenProject environment. - Please [upgrade your plan](upgrade_url) or block existing - users in order to allow invited and registered users to join. + You invited more users than are supported by your current plan. Invited + users may not be able to join your OpenProject environment. Please [upgrade + your plan](upgrade_url) or block existing users in order to allow invited + and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > - Adding additional users will exceed the current limit. - Please contact an administrator to increase the user limit to ensure external users are able to access this instance. + Adding additional users will exceed the current limit. Please contact an + administrator to increase the user limit to ensure external users are able + to access this instance. warning_user_limit_reached_admin_html: > - Adding additional users will exceed the current limit. - Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. + Adding additional users will exceed the current limit. Please [upgrade your + plan](upgrade_url) to be able to ensure external users are able to access + this instance. warning_user_limit_reached_instructions: > - You reached your user limit (%{current}/%{max} active users). - Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. + You reached your user limit (%{current}/%{max} active users). Please contact + sales@openproject.com to upgrade your Enterprise edition plan and add + additional users. warning_protocol_mismatch_html: > warning_bar: https_mismatch: title: "HTTPS mode setup mismatch" text_html: > - Your application is running with HTTPS mode set to %{set_protocol}, but the request - is an %{actual_protocol} request. - This will result in errors! You will need to set the following configuration value: %{setting_value}. - Please see the installation documentation on how to set this configuration. + Your application is running with HTTPS mode set to + %{set_protocol}, but the request is an + %{actual_protocol} request. This will result in errors! You + will need to set the following configuration value: + %{setting_value}. Please see the installation documentation on how to + set this configuration. hostname_mismatch: title: "Hostname setting mismatch" text_html: > - Your application is running with its host name setting set to %{set_hostname}, but the request - is a %{actual_hostname} hostname. - This will result in errors! Go to System settings and change the "Host name" setting to correct this. + Your application is running with its host name setting set to + %{set_hostname}, but the request is a + %{actual_hostname} hostname. This will result in errors! Go + to System settings and change the "Host + name" setting to correct this. menu_item: "Menu item" menu_item_setting: "Visibility" - wiki_menu_item_for: 'Menu item for wikipage "%{title}"' + wiki_menu_item_for: "Menu item for wikipage \"%{title}\"" wiki_menu_item_setting: "Visibility" wiki_menu_item_new_main_item_explanation: > - You are deleting the only main wiki menu item. You now have to choose a wiki page for which a new main item will be generated. - To delete the wiki the wiki module can be deactivated by project administrators. + You are deleting the only main wiki menu item. You now have to choose a wiki + page for which a new main item will be generated. To delete the wiki the + wiki module can be deactivated by project administrators. wiki_menu_item_delete_not_permitted: The wiki menu item of the only wiki page cannot be deleted. # TODO: merge with work_packages top level key work_package: @@ -5933,9 +6679,12 @@ en: progress: label_note: "Note:" modal: - work_based_help_text: "Each field is automatically calculated from the two others when possible." + work_based_help_text: "Each field is automatically calculated from the two + others when possible." status_based_help_text: "% Complete is set by work package status." - migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first." + migration_warning_text: "In work-based progress calculation mode, % Complete + cannot be manually set and is tied to Work. The existing value has + been kept but cannot be edited. Please input Work first." derivation_hints: done_ratio: cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty." @@ -5962,7 +6711,8 @@ en: reminders: label_remind_at: "Date" note_placeholder: "Why are you setting this reminder?" - create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a + notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -5989,14 +6739,20 @@ en: text_empty_search_header: "We couldn't find any matching results." text_empty_state_description: "The %{entity} has not been shared with anyone yet." text_empty_state_header: "Not shared" - text_user_limit_reached: "Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}." - text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' + text_user_limit_reached: "Adding additional users will exceed the current limit. + Please contact an administrator to increase the user limit to ensure + external users are able to access this %{entity}." + text_user_limit_reached_admins: "Adding additional users will exceed the current + limit. Please upgrade your plan to be able + to add more users." warning_user_limit_reached: > - Adding additional users will exceed the current limit. - Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. + Adding additional users will exceed the current limit. Please contact an + administrator to increase the user limit to ensure external users are able + to access this %{entity}. warning_user_limit_reached_admin_html: > - Adding additional users will exceed the current limit. - Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. + Adding additional users will exceed the current limit. Please [upgrade + your plan](upgrade_url) to be able to ensure external users are able to + access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -6012,21 +6768,25 @@ en: additional_privileges_project_or_group: "Might have additional privileges (as project or group member)" project_queries: publishing_denied: "You do not have permission to make project lists public." - access_warning: "Users will only see the projects they have access to. Sharing project lists does not impact individual project permissions." + access_warning: "Users will only see the projects they have access to. Sharing + project lists does not impact individual project permissions." user_details: owner: "List owner" can_view_because_public: "Can already view because list is shared with everyone" can_manage_public_lists: "Can edit due to global permissions" public_flag: label: "Share with everyone at %{instance_name}" - caption: "Everyone can view this project list. Those with global edit permissions can modify it." + caption: "Everyone can view this project list. Those with global edit + permissions can modify it." blank_state: public: header: "Shared with everyone" - description: "Everyone can view this project list. You can also add individual users with extra permissions." + description: "Everyone can view this project list. You can also add individual + users with extra permissions." private: header: "Not shared: Private" - description: "This project list has not been shared with anyone yet. Only you can access this list." + description: "This project list has not been shared with anyone yet. Only you + can access this list." permissions: view: "View" view_description: "Can view this project list." @@ -6036,14 +6796,17 @@ en: message: "Sharing project lists with individual users is an enterprise add-on." working_days: info: > - Days that are not selected are skipped when scheduling work packages and project life cycles (and not included in the day count). - These can be overridden at a work-package level. + Days that are not selected are skipped when scheduling work packages and + project life cycles (and not included in the day count). These can be + overridden at a work-package level. instance_wide_info: > - Dates added to the list below are considered non-working and skipped when scheduling work packages. + Dates added to the list below are considered non-working and skipped when + scheduling work packages. change_button: "Change working days" warning: > - Changing which days of the week are considered working days or non-working days - can affect the start and finish days of all work packages and life cycles in all projects in this instance. + Changing which days of the week are considered working days or non-working + days can affect the start and finish days of all work packages and life + cycles in all projects in this instance. journal_note: changed: _**Working days** changed (%{changes})._ days: @@ -6066,8 +6829,10 @@ en: code_409: "Could not update the resource because of conflicting modifications." code_429: "Too many requests. Please try again later." code_500: "An internal error has occurred." - code_500_outbound_request_failure: "An outbound request to another resource has failed with status code %{status_code}." - code_500_missing_enterprise_token: "The request can not be handled due to invalid or missing Enterprise token." + code_500_outbound_request_failure: "An outbound request to another resource has + failed with status code %{status_code}." + code_500_missing_enterprise_token: "The request can not be handled due to + invalid or missing Enterprise token." bad_request: emoji_reactions_activity_type_not_supported: "This activity type does not support emoji reactions." invalid_link: "The link under key '%{key}' is not valid." @@ -6076,20 +6841,25 @@ en: multiple_reminders_not_allowed: |- You can only set one reminder at a time for a work package. Please delete or update the existing reminder. not_found: - work_package: "The work package you are looking for cannot be found or has been deleted." + work_package: "The work package you are looking for cannot be found or has been + deleted." reminder: "The reminder you are looking for cannot be found or has been deleted." expected: date: "YYYY-MM-DD (ISO 8601 date only)" datetime: "YYYY-MM-DDThh:mm:ss[.lll][+hh:mm] (any compatible ISO 8601 datetime)" duration: "ISO 8601 duration" invalid_content_type: "Expected CONTENT-TYPE to be '%{content_type}' but got '%{actual}'." - invalid_format: "Invalid format for property '%{property}': Expected format like '%{expected_format}', but got '%{actual}'." + invalid_format: "Invalid format for property '%{property}': Expected format like + '%{expected_format}', but got '%{actual}'." invalid_json: "The request could not be parsed as JSON." invalid_relation: "The relation is invalid." - invalid_resource: "For property '%{property}' a link like '%{expected}' is expected, but got '%{actual}'." + invalid_resource: "For property '%{property}' a link like '%{expected}' is + expected, but got '%{actual}'." invalid_signal: - embed: "The requested embedding of %{invalid} is not supported. Supported embeddings are %{supported}." - select: "The requested select of %{invalid} is not supported. Supported selects are %{supported}." + embed: "The requested embedding of %{invalid} is not supported. Supported + embeddings are %{supported}." + select: "The requested select of %{invalid} is not supported. Supported selects + are %{supported}." invalid_user_status_transition: "The current user account status does not allow this operation." missing_content_type: "not specified" missing_property: "Missing property '%{property}'." @@ -6098,16 +6868,19 @@ en: multipart_body_error: "The request body did not contain the expected multipart parts." multiple_errors: "Multiple field constraints have been violated." unable_to_create_attachment: "The attachment could not be created" - unable_to_create_attachment_permissions: "The attachment could not be saved due to lacking file system permissions" + unable_to_create_attachment_permissions: "The attachment could not be saved due + to lacking file system permissions" user: - name_readonly: "The name attribute is read-only. Changes can be written through the attributes firstname and lastname." + name_readonly: "The name attribute is read-only. Changes can be written through + the attributes firstname and lastname." render: context_not_parsable: "The context provided is not a link to a resource." unsupported_context: "The resource given is not supported as context." context_object_not_found: "Cannot find the resource given as the context." validation: due_date: "Finish date cannot be set on parent work packages." - invalid_user_assigned_to_work_package: "The chosen user is not allowed to be '%{property}' for this work package." + invalid_user_assigned_to_work_package: "The chosen user is not allowed to be + '%{property}' for this work package." start_date: "Start date cannot be set on parent work packages." eprops: invalid_gzip: "is invalid gzip: %{message}" @@ -6133,30 +6906,45 @@ en: messages: # Common error messages invalid_request: - unknown: "The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed." + unknown: "The request is missing a required parameter, includes an unsupported + parameter value, or is otherwise malformed." missing_param: "Missing required parameter: %{value}." - request_not_authorized: "Request need to be authorized. Required parameter for authorizing request is missing or invalid." - invalid_redirect_uri: "The requested redirect uri is malformed or doesn't match client redirect URI." - unauthorized_client: "The client is not authorized to perform this request using this method." + request_not_authorized: "Request need to be authorized. Required parameter for + authorizing request is missing or invalid." + invalid_redirect_uri: "The requested redirect uri is malformed or doesn't match + client redirect URI." + unauthorized_client: "The client is not authorized to perform this request using + this method." access_denied: "The resource owner or authorization server denied the request." invalid_scope: "The requested scope is invalid, unknown, or malformed." invalid_code_challenge_method: "The code challenge method must be plain or S256." - server_error: "The authorization server encountered an unexpected condition which prevented it from fulfilling the request." - temporarily_unavailable: "The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server." + server_error: "The authorization server encountered an unexpected condition + which prevented it from fulfilling the request." + temporarily_unavailable: "The authorization server is currently unable to handle + the request due to a temporary overloading or maintenance of the + server." # Configuration error messages - credential_flow_not_configured: "Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured." - resource_owner_authenticator_not_configured: "Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfigured." - admin_authenticator_not_configured: "Access to admin panel is forbidden due to Doorkeeper.configure.admin_authenticator being unconfigured." + credential_flow_not_configured: "Resource Owner Password Credentials flow failed + due to Doorkeeper.configure.resource_owner_from_credentials being + unconfigured." + resource_owner_authenticator_not_configured: "Resource Owner find failed due to + Doorkeeper.configure.resource_owner_authenticator being unconfigured." + admin_authenticator_not_configured: "Access to admin panel is forbidden due to + Doorkeeper.configure.admin_authenticator being unconfigured." # Access grant errors unsupported_response_type: "The authorization server does not support this response type." unsupported_response_mode: "The authorization server does not support this response mode." # Access token errors - invalid_client: "Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method." - invalid_grant: "The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client." - unsupported_grant_type: "The authorization grant type is not supported by the authorization server." + invalid_client: "Client authentication failed due to unknown client, no client + authentication included, or unsupported authentication method." + invalid_grant: "The provided authorization grant is invalid, expired, revoked, + does not match the redirection URI used in the authorization request, + or was issued to another client." + unsupported_grant_type: "The authorization grant type is not supported by the + authorization server." invalid_token: revoked: "The access token was revoked" @@ -6166,7 +6954,7 @@ en: unauthorized: "You are not authorized to revoke this token." forbidden_token: - missing_scope: 'Access to this resource requires scope "%{oauth_scopes}".' + missing_scope: "Access to this resource requires scope \"%{oauth_scopes}\"." unsupported_browser: title: "Your browser is outdated and unsupported." @@ -6187,16 +6975,24 @@ en: non_confidential: Non confidential default_scopes: "(Default scopes)" instructions: - enabled: "Enable this application, allowing users to perform authorization grants with it." - name: "The name of your application. This will be displayed to other users upon authorization." + enabled: "Enable this application, allowing users to perform authorization + grants with it." + name: "The name of your application. This will be displayed to other users upon + authorization." redirect_uri_html: > - The allowed URLs authorized users can be redirected to. One entry per line. -
    - If you're registering a desktop application, use the following URL. - confidential: "Check if the application will be used where the client secret can be kept confidential. Native mobile apps and Single Page Apps are assumed non-confidential." - scopes: "Check the scopes you want the application to grant access to. If no scope is checked, api_v3 is assumed." - client_credential_user_id: "Optional user ID to impersonate when clients use this application. Leave empty to allow public access only" - register_intro: "If you are developing an OAuth API client application for OpenProject, you can register it using this form for all users to use." + The allowed URLs authorized users can be redirected to. One entry per + line.
    If you're registering a desktop application, use the + following URL. + confidential: "Check if the application will be used where the client secret can + be kept confidential. Native mobile apps and Single Page Apps are + assumed non-confidential." + scopes: "Check the scopes you want the application to grant access to. If no + scope is checked, api_v3 is assumed." + client_credential_user_id: "Optional user ID to impersonate when clients use + this application. Leave empty to allow public access only" + register_intro: "If you are developing an OAuth API client application for + OpenProject, you can register it using this form for all users to + use." default_scopes: "" header: builtin_applications: Built-in OAuth applications @@ -6204,20 +7000,22 @@ en: empty_application_lists: No OAuth applications have been registered. client_id: "Client ID" client_secret_notice: > - This is the only time we can print the client secret, please note it down and keep it secure. - It should be treated as a password and cannot be retrieved by OpenProject at a later time. + This is the only time we can print the client secret, please note it down + and keep it secure. It should be treated as a password and cannot be + retrieved by OpenProject at a later time. authorization_dialog: authorize: "Authorize" cancel: "Cancel and deny authorization." - prompt_html: "Authorize %{application_name} to use your account %{login}?" + prompt_html: "Authorize %{application_name} to use your account + %{login}?" title: "Authorize %{application_name}" wants_to_access_html: > - This application requests access to your OpenProject account. -
    + This application requests access to your OpenProject account.
    It has requested the following permissions: scopes: api_v3: "Full API v3 access" - api_v3_text: "Application will receive full read & write access to the OpenProject API v3 to perform actions on your behalf." + api_v3_text: "Application will receive full read & write access to the + OpenProject API v3 to perform actions on your behalf." grants: created_date: "Approved on" scopes: "Permissions" @@ -6231,12 +7029,16 @@ en: client_credentials: "Client credentials flow" client_credentials: "User used for Client credentials" client_credentials_impersonation_set_to: "Client credentials user set to" - client_credentials_impersonation_warning: "Note: Clients using the 'Client credentials' flow in this application will have the rights of this user" + client_credentials_impersonation_warning: "Note: Clients using the 'Client + credentials' flow in this application will have the rights of this user" client_credentials_impersonation_html: > - By default, OpenProject provides OAuth 2.0 authorization via %{authorization_code_flow_link}. - You can optionally enable %{client_credentials_flow_link}, but you must provide a user on whose behalf requests will be performed. + By default, OpenProject provides OAuth 2.0 authorization via + %{authorization_code_flow_link}. You can optionally enable + %{client_credentials_flow_link}, but you must provide a user on whose + behalf requests will be performed. authorization_error: "An authorization error has occurred." - revoke_my_application_confirmation: "Do you really want to remove this application? This will revoke %{token_count} active for it." + revoke_my_application_confirmation: "Do you really want to remove this + application? This will revoke %{token_count} active for it." my_registered_applications: "Registered OAuth applications" oauth_client: @@ -6264,34 +7066,41 @@ en: Internal error: Called refresh_token without a previously existing token. refresh_token_updated_failed: "Error during update of OAuthClientToken" oauth_client_not_found_explanation: > - This error appears after you have updated the client_id and client_secret - in OpenProject, but haven't updated the 'Return URI' field in the OAuth2 provider. + This error appears after you have updated the client_id and + client_secret in OpenProject, but haven't updated the 'Return URI' field + in the OAuth2 provider. oauth_code_not_present: "OAuth2 'code' not found in 'callback' endpoint (redirect_uri)." oauth_code_not_present_explanation: > - This error appears if you have selected the wrong response_type - in the OAuth2 provider. Response_type should be 'code' or similar. + This error appears if you have selected the wrong response_type in the + OAuth2 provider. Response_type should be 'code' or similar. oauth_state_not_present: "OAuth2 'state' not found in 'callback' endpoint (redirect_uri)." oauth_state_not_present_explanation: > - The 'state' is used to indicate to OpenProject where to continue - after a successful OAuth2 authorization. - A missing 'state' is an internal error that may appear during setup. - Please contact your system administrator. + The 'state' is used to indicate to OpenProject where to continue after a + successful OAuth2 authorization. A missing 'state' is an internal error + that may appear during setup. Please contact your system administrator. rack_oauth2: client_secret_invalid: "Client secret is invalid (client_secret_invalid)" invalid_request: > - OAuth2 Authorization Server responded with 'invalid_request'. - This error appears if you try to authorize multiple times or in case of technical issues. - invalid_response: "OAuth2 Authorization Server provided an invalid response (invalid_response)" - invalid_grant: "The OAuth2 Authorization Server asks you to reauthorize (invalid_grant)." - invalid_client: "The OAuth2 Authorization Server doesn't recognize OpenProject (invalid_client)." - unauthorized_client: "The OAuth2 Authorization Server rejects the grant type (unauthorized_client)" - unsupported_grant_type: "The OAuth2 Authorization Server asks you to reauthorize (unsupported_grant_type)." + OAuth2 Authorization Server responded with 'invalid_request'. This + error appears if you try to authorize multiple times or in case of + technical issues. + invalid_response: "OAuth2 Authorization Server provided an invalid response + (invalid_response)" + invalid_grant: "The OAuth2 Authorization Server asks you to reauthorize + (invalid_grant)." + invalid_client: "The OAuth2 Authorization Server doesn't recognize OpenProject + (invalid_client)." + unauthorized_client: "The OAuth2 Authorization Server rejects the grant type + (unauthorized_client)" + unsupported_grant_type: "The OAuth2 Authorization Server asks you to reauthorize + (unsupported_grant_type)." invalid_scope: "You are not allowed to access the requested resource (invalid_scope)." http: request: failed_authorization: "The server side request failed authorizing itself." - missing_authorization: "The server side request failed due to missing authorization information." + missing_authorization: "The server side request failed due to missing + authorization information." response: unexpected: "Unexpected response received." @@ -6300,7 +7109,8 @@ en: plugin_openproject_auth_plugins: name: "OpenProject Auth Plugins" - description: "Integration of OmniAuth strategy providers for authentication in OpenProject." + description: "Integration of OmniAuth strategy providers for authentication in + OpenProject." plugin_openproject_auth_saml: name: "OmniAuth SAML / Single-Sign On" description: "Adds the OmniAuth SAML provider to OpenProject" @@ -6314,6 +7124,8 @@ en: external_link_warning: title: "Leaving OpenProject" - warning_message: "You are about to leave OpenProject and visit an external website. Please be aware that external websites are not under our control and may have different privacy and security policies." + warning_message: "You are about to leave OpenProject and visit an external + website. Please be aware that external websites are not under our control + and may have different privacy and security policies." continue_message: "Are you sure you want to proceed to the following external link?" continue_button: "Continue to external website" diff --git a/db/migrate/20260422081417_create_persisted_queries.rb b/db/migrate/20260422081417_create_persisted_queries.rb new file mode 100644 index 00000000000..b946394d55d --- /dev/null +++ b/db/migrate/20260422081417_create_persisted_queries.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class CreatePersistedQueries < ActiveRecord::Migration[8.1] + def change + create_table :persisted_queries do |t| + t.string :type + t.string :name + t.references :project, foreign_key: true, null: true + t.references :principal, foreign_key: { to_table: :users }, null: true + t.jsonb :filters, default: "[]", null: false + t.jsonb :selects, default: "[]", null: false + t.jsonb :orders, default: "[]", null: false + + t.timestamps + + t.index :type + end + end +end diff --git a/db/migrate/20260422081810_create_persisted_views.rb b/db/migrate/20260422081810_create_persisted_views.rb new file mode 100644 index 00000000000..70e0413e2b7 --- /dev/null +++ b/db/migrate/20260422081810_create_persisted_views.rb @@ -0,0 +1,48 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class CreatePersistedViews < ActiveRecord::Migration[8.1] + def change + create_table :persisted_views do |t| + t.string :type + t.string :name + t.references :project, foreign_key: true, null: true + t.references :principal, foreign_key: { to_table: :users }, null: true + t.references :query, polymorphic: true, null: true + t.references :parent, foreign_key: { to_table: :persisted_views }, null: true + t.jsonb :options + t.boolean :public, default: false, null: false + + t.timestamps + + t.index :type + end + end +end diff --git a/spec/models/persisted_query_spec.rb b/spec/models/persisted_query_spec.rb new file mode 100644 index 00000000000..809617ad5c2 --- /dev/null +++ b/spec/models/persisted_query_spec.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +require "rails_helper" + +RSpec.describe PersistedQuery do + # The base class has no serializers installed (the `inherited` hook only + # installs them on subclasses), so `filters`/`orders`/`selects` must be + # initialised explicitly for validations from Queries::BaseQuery to pass. + subject(:persisted_query) do + described_class.new(name: "My query", filters: [], orders: [], selects: []) + end + + describe "validations" do + it "is valid with a name" do + expect(persisted_query).to be_valid + end + + it "requires a name" do + persisted_query.name = nil + expect(persisted_query).not_to be_valid + expect(persisted_query.errors[:name]).to be_present + end + + it "rejects names longer than 255 characters" do + persisted_query.name = "a" * 256 + expect(persisted_query).not_to be_valid + expect(persisted_query.errors[:name]).to be_present + end + + it "accepts names of exactly 255 characters" do + persisted_query.name = "a" * 255 + expect(persisted_query).to be_valid + end + end + + describe "associations" do + it { is_expected.to belong_to(:project).optional } + it { is_expected.to belong_to(:principal).optional } + + it "has many views with restrict_with_error" do + association = described_class.reflect_on_association(:views) + expect(association.macro).to eq(:has_many) + expect(association.options[:as]).to eq(:query) + expect(association.options[:dependent]).to eq(:restrict_with_error) + expect(association.options[:class_name]).to eq("PersistedView") + end + end + + describe "persistence" do + it "can be saved and reloaded" do + persisted_query.save! + expect(described_class.find(persisted_query.id)).to be_present + end + + it "prevents deletion when views reference it" do + persisted_query.save! + PersistedView.create!(name: "V", query: persisted_query) + + expect { persisted_query.destroy }.not_to change(described_class, :count) + expect(persisted_query.errors[:base]).to include("Cannot delete record because dependent views exist") + end + end +end diff --git a/spec/models/persisted_view_spec.rb b/spec/models/persisted_view_spec.rb new file mode 100644 index 00000000000..e715b4c4aa5 --- /dev/null +++ b/spec/models/persisted_view_spec.rb @@ -0,0 +1,114 @@ +# frozen_string_literal: true + +require "rails_helper" + +RSpec.describe PersistedView do + subject(:persisted_view) { described_class.new(name: "My view") } + + describe "validations" do + it "is valid with a name" do + expect(persisted_view).to be_valid + end + + it "requires a name" do + persisted_view.name = nil + expect(persisted_view).not_to be_valid + expect(persisted_view.errors[:name]).to be_present + end + + it "rejects names longer than 255 characters" do + persisted_view.name = "a" * 256 + expect(persisted_view).not_to be_valid + expect(persisted_view.errors[:name]).to be_present + end + end + + describe "associations" do + it { is_expected.to belong_to(:project).optional } + it { is_expected.to belong_to(:principal).optional } + it { is_expected.to belong_to(:query).optional } + it { is_expected.to belong_to(:parent).class_name("PersistedView").optional } + + it "has many children that are destroyed with the parent" do + association = described_class.reflect_on_association(:children) + expect(association.macro).to eq(:has_many) + expect(association.options[:class_name]).to eq("PersistedView") + expect(association.options[:foreign_key]).to eq("parent_id") + expect(association.options[:dependent]).to eq(:destroy) + end + + it "allows a polymorphic query association" do + reflection = described_class.reflect_on_association(:query) + expect(reflection.options[:polymorphic]).to be true + end + end + + describe "favoritable" do + it "acts as favoritable" do + expect(described_class).to respond_to(:acts_as_favoritable) + expect(persisted_view).to respond_to(:favorites) + end + end + + describe "scopes" do + let(:user) { create(:user) } + let(:other_user) { create(:user) } + let!(:public_view) { described_class.create!(name: "Public", public: true) } + let!(:own_private_view) { described_class.create!(name: "Own", public: false, principal: user) } + let!(:other_private_view) { described_class.create!(name: "Other", public: false, principal: other_user) } + + describe ".public_views" do + it "returns only public views" do + expect(described_class.public_views).to contain_exactly(public_view) + end + end + + describe ".private_views" do + it "returns private views for the given principal" do + expect(described_class.private_views(principal: user)).to contain_exactly(own_private_view) + end + + it "defaults to User.current when no principal is given" do + login_as(user) + expect(described_class.private_views).to contain_exactly(own_private_view) + end + end + end + + describe "#effective_query" do + let(:query) { PersistedQuery.create!(name: "Q", filters: [], orders: [], selects: []) } + + it "returns its own query when set" do + view = described_class.create!(name: "V", query:) + expect(view.effective_query).to eq(query) + end + + it "returns the parent's query when no own query is set" do + parent = described_class.create!(name: "Parent", query:) + child = described_class.create!(name: "Child", parent:) + expect(child.effective_query).to eq(query) + end + + it "walks up the parent chain until a query is found" do + root = described_class.create!(name: "Root", query:) + middle = described_class.create!(name: "Middle", parent: root) + leaf = described_class.create!(name: "Leaf", parent: middle) + expect(leaf.effective_query).to eq(query) + end + + it "returns nil when neither the view nor any ancestor has a query" do + parent = described_class.create!(name: "Parent") + child = described_class.create!(name: "Child", parent:) + expect(child.effective_query).to be_nil + end + end + + describe "parent/children lifecycle" do + it "destroys children when the parent is destroyed" do + parent = described_class.create!(name: "Parent") + described_class.create!(name: "Child", parent:) + + expect { parent.destroy }.to change(described_class, :count).by(-2) + end + end +end From 8ad36144c3ddd2e9ee78592b5bfe88629349d4be Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 11:14:00 +0200 Subject: [PATCH 064/280] Allow adding single entities to the query --- app/models/ordered_persisted_query_entity.rb | 39 +++++++++ app/models/persisted_query.rb | 5 ++ config/locales/en.yml | 7 ++ ...create_ordered_persisted_query_entities.rb | 47 +++++++++++ .../ordered_persisted_query_entity_spec.rb | 83 +++++++++++++++++++ 5 files changed, 181 insertions(+) create mode 100644 app/models/ordered_persisted_query_entity.rb create mode 100644 db/migrate/20260422110809_create_ordered_persisted_query_entities.rb create mode 100644 spec/models/ordered_persisted_query_entity_spec.rb diff --git a/app/models/ordered_persisted_query_entity.rb b/app/models/ordered_persisted_query_entity.rb new file mode 100644 index 00000000000..55931d9b251 --- /dev/null +++ b/app/models/ordered_persisted_query_entity.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class OrderedPersistedQueryEntity < ApplicationRecord + belongs_to :persisted_query, optional: false + belongs_to :entity, polymorphic: true, optional: false + + validates :position, presence: true + validates :entity_id, uniqueness: { scope: %i[persisted_query_id entity_type] } + + default_scope { order(position: :asc) } +end diff --git a/app/models/persisted_query.rb b/app/models/persisted_query.rb index 24b1f5dae0d..baffa4dbb77 100644 --- a/app/models/persisted_query.rb +++ b/app/models/persisted_query.rb @@ -41,6 +41,11 @@ class PersistedQuery < ApplicationRecord dependent: :restrict_with_error, inverse_of: :query + has_many :ordered_entities, -> { order(position: :asc) }, + class_name: "OrderedPersistedQueryEntity", + dependent: :destroy, + inverse_of: :persisted_query + validates :name, presence: true, length: { maximum: 255 } def self.inherited(subclass) diff --git a/config/locales/en.yml b/config/locales/en.yml index 4c8c5dae6aa..59431817fcf 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2008,6 +2008,10 @@ en: jira_import: "Jira Migrator" announcements: show_until: "Display until" + ordered_persisted_query_entity: + persisted_query: "Persisted query" + entity: "Entity" + position: "Position" attachment: attachment_content: "Attachment content" attachment_file_name: "Attachment file name" @@ -2114,6 +2118,9 @@ en: persisted_query: name: "Name" views: "Views" + filters: "Filters" + orders: "Orders" + selects: "Selects" persisted_view: name: "Name" query: "Query" diff --git a/db/migrate/20260422110809_create_ordered_persisted_query_entities.rb b/db/migrate/20260422110809_create_ordered_persisted_query_entities.rb new file mode 100644 index 00000000000..f162dd06dd1 --- /dev/null +++ b/db/migrate/20260422110809_create_ordered_persisted_query_entities.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class CreateOrderedPersistedQueryEntities < ActiveRecord::Migration[8.1] + def change + create_table :ordered_persisted_query_entities do |t| # rubocop:disable Rails/CreateTableWithTimestamps + t.integer :position, null: false + t.references :persisted_query, + null: false, + foreign_key: { on_delete: :cascade } + t.references :entity, polymorphic: true, null: false + + t.index %i[persisted_query_id entity_type entity_id], + unique: true, + name: "index_ordered_pq_entities_on_query_and_entity" + t.index %i[persisted_query_id position], + name: "index_ordered_pq_entities_on_query_and_position" + end + end +end diff --git a/spec/models/ordered_persisted_query_entity_spec.rb b/spec/models/ordered_persisted_query_entity_spec.rb new file mode 100644 index 00000000000..a8fefba5426 --- /dev/null +++ b/spec/models/ordered_persisted_query_entity_spec.rb @@ -0,0 +1,83 @@ +# frozen_string_literal: true + +require "rails_helper" + +RSpec.describe OrderedPersistedQueryEntity do + let(:persisted_query) do + PersistedQuery.create!(name: "Q", filters: [], orders: [], selects: []) + end + let(:work_package) { create(:work_package) } + + subject(:entry) do + described_class.new(persisted_query:, entity: work_package, position: 1) + end + + describe "associations" do + it { is_expected.to belong_to(:persisted_query).required } + + it "belongs to a polymorphic entity" do + reflection = described_class.reflect_on_association(:entity) + expect(reflection.macro).to eq(:belongs_to) + expect(reflection.options[:polymorphic]).to be true + end + end + + describe "validations" do + it "is valid with a position, query and entity" do + expect(entry).to be_valid + end + + it "requires a position" do + entry.position = nil + expect(entry).not_to be_valid + expect(entry.errors[:position]).to be_present + end + + it "requires a persisted_query" do + entry.persisted_query = nil + expect(entry).not_to be_valid + end + + it "requires an entity" do + entry.entity = nil + expect(entry).not_to be_valid + end + + it "prevents duplicate entries for the same (query, entity_type, entity_id)" do + described_class.create!(persisted_query:, entity: work_package, position: 1) + duplicate = described_class.new(persisted_query:, entity: work_package, position: 2) + + expect(duplicate).not_to be_valid + expect(duplicate.errors[:entity_id]).to be_present + end + + it "allows the same entity in a different persisted_query" do + other_query = PersistedQuery.create!(name: "Other", filters: [], orders: [], selects: []) + described_class.create!(persisted_query:, entity: work_package, position: 1) + + expect(described_class.new(persisted_query: other_query, entity: work_package, position: 1)) + .to be_valid + end + end + + describe "default ordering" do + it "orders by position ascending" do + wp1 = create(:work_package) + wp2 = create(:work_package) + wp3 = create(:work_package) + + described_class.create!(persisted_query:, entity: wp1, position: 3) + described_class.create!(persisted_query:, entity: wp2, position: 1) + described_class.create!(persisted_query:, entity: wp3, position: 2) + + expect(persisted_query.ordered_entities.map(&:entity)).to eq([wp2, wp3, wp1]) + end + end + + describe "cascade on query deletion" do + it "is deleted when the persisted_query is destroyed" do + entry.save! + expect { persisted_query.destroy }.to change(described_class, :count).by(-1) + end + end +end From 67b714ef14e9e7cb8e031cf905918b14eb45656f Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 11:48:01 +0200 Subject: [PATCH 065/280] Fix default value and nullability of fields --- db/migrate/20260422081417_create_persisted_queries.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/db/migrate/20260422081417_create_persisted_queries.rb b/db/migrate/20260422081417_create_persisted_queries.rb index b946394d55d..a0facc92bb7 100644 --- a/db/migrate/20260422081417_create_persisted_queries.rb +++ b/db/migrate/20260422081417_create_persisted_queries.rb @@ -35,9 +35,9 @@ class CreatePersistedQueries < ActiveRecord::Migration[8.1] t.string :name t.references :project, foreign_key: true, null: true t.references :principal, foreign_key: { to_table: :users }, null: true - t.jsonb :filters, default: "[]", null: false - t.jsonb :selects, default: "[]", null: false - t.jsonb :orders, default: "[]", null: false + t.jsonb :filters, default: [] + t.jsonb :selects, default: [] + t.jsonb :orders, default: [] t.timestamps From 175de4c1cd7bc7181e71f94ac84b05a63983a6c9 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 11:48:22 +0200 Subject: [PATCH 066/280] Add helper method to allow registering query models --- app/models/persisted_query.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/models/persisted_query.rb b/app/models/persisted_query.rb index baffa4dbb77..66dcc2ea4ed 100644 --- a/app/models/persisted_query.rb +++ b/app/models/persisted_query.rb @@ -54,4 +54,8 @@ class PersistedQuery < ApplicationRecord subclass.serialize :orders, coder: Queries::Serialization::Orders.new(subclass) subclass.serialize :selects, coder: Queries::Serialization::Selects.new(subclass) end + + def self.register_query(&) + Queries::Register.register(self, &) + end end From 4e0634458ce32a63386bb1ed484cfdd02515119a Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 11:48:48 +0200 Subject: [PATCH 067/280] Introduce UserQuery model that is persisted trough PersistedQuery --- app/components/user_filter_component.rb | 2 +- app/models/{queries/users => }/user_query.rb | 24 +++++--- .../factories/user_query_factory.rb | 15 +---- .../{queries/users => }/user_query_spec.rb | 57 ++++++++++++++++++- 4 files changed, 74 insertions(+), 24 deletions(-) rename app/models/{queries/users => }/user_query.rb (69%) rename app/models/queries/users.rb => spec/factories/user_query_factory.rb (77%) rename spec/models/{queries/users => }/user_query_spec.rb (76%) diff --git a/app/components/user_filter_component.rb b/app/components/user_filter_component.rb index def2b0086f1..62f9f7753d2 100644 --- a/app/components/user_filter_component.rb +++ b/app/components/user_filter_component.rb @@ -55,7 +55,7 @@ class UserFilterComponent < IndividualPrincipalBaseFilterComponent end def base_query - Queries::Users::UserQuery + UserQuery end protected diff --git a/app/models/queries/users/user_query.rb b/app/models/user_query.rb similarity index 69% rename from app/models/queries/users/user_query.rb rename to app/models/user_query.rb index 5a63afd3b3f..be81b333f4a 100644 --- a/app/models/queries/users/user_query.rb +++ b/app/models/user_query.rb @@ -28,20 +28,26 @@ # See COPYRIGHT and LICENSE files for more details. #++ -class Queries::Users::UserQuery - include Queries::BaseQuery - include Queries::UnpersistedQuery - +class UserQuery < PersistedQuery def self.model User end def default_scope - # This seemingly duplication is necessary because of the builtin classes - # * SystemUser - # * DeletedUser - # * AnonymousUser - # inheriting from user. Without it, instances of those classes would show up. + # Excludes the SystemUser, DeletedUser, AnonymousUser STI descendants of User. User.user end + + register_query do + filter Queries::Users::Filters::NameFilter + filter Queries::Users::Filters::AnyNameAttributeFilter + filter Queries::Users::Filters::GroupFilter + filter Queries::Users::Filters::StatusFilter + filter Queries::Users::Filters::LoginFilter + filter Queries::Users::Filters::BlockedFilter + + order Queries::Users::Orders::DefaultOrder + order Queries::Users::Orders::NameOrder + order Queries::Users::Orders::GroupOrder + end end diff --git a/app/models/queries/users.rb b/spec/factories/user_query_factory.rb similarity index 77% rename from app/models/queries/users.rb rename to spec/factories/user_query_factory.rb index 8c09b0a743d..38a2ccbbb0a 100644 --- a/app/models/queries/users.rb +++ b/spec/factories/user_query_factory.rb @@ -28,17 +28,8 @@ # See COPYRIGHT and LICENSE files for more details. #++ -module Queries::Users - ::Queries::Register.register(UserQuery) do - filter Filters::NameFilter - filter Filters::AnyNameAttributeFilter - filter Filters::GroupFilter - filter Filters::StatusFilter - filter Filters::LoginFilter - filter Filters::BlockedFilter - - order Orders::DefaultOrder - order Orders::NameOrder - order Orders::GroupOrder +FactoryBot.define do + factory :user_query do + sequence(:name) { |n| "User query #{n}" } end end diff --git a/spec/models/queries/users/user_query_spec.rb b/spec/models/user_query_spec.rb similarity index 76% rename from spec/models/queries/users/user_query_spec.rb rename to spec/models/user_query_spec.rb index 1ac7d90ca00..28445f856f1 100644 --- a/spec/models/queries/users/user_query_spec.rb +++ b/spec/models/user_query_spec.rb @@ -30,8 +30,8 @@ require "spec_helper" -RSpec.describe Queries::Users::UserQuery do - let(:instance) { described_class.new } +RSpec.describe UserQuery do + let(:instance) { described_class.new(name: "Users") } let(:base_scope) { User.user.order(id: :desc) } context "without a filter" do @@ -232,4 +232,57 @@ RSpec.describe Queries::Users::UserQuery do end end end + + describe "persistence" do + it "saves successfully with just a name" do + uq = described_class.create!(name: "Named") + expect(uq.reload.name).to eq("Named") + end + + it "stores the subclass name in the type column" do + uq = described_class.create!(name: "Named") + expect(uq.reload.type).to eq("UserQuery") + expect(PersistedQuery.find(uq.id)).to be_a(UserQuery) + end + + it "round-trips filters through serialization" do + uq = described_class.new(name: "With filter") + uq.where("status", "=", ["active"]) + uq.save! + + reloaded = described_class.find(uq.id) + expect(reloaded.filters.size).to eq(1) + expect(reloaded.filters.first).to be_a(Queries::Users::Filters::StatusFilter) + expect(reloaded.filters.first.values).to eq(["active"]) + end + + it "round-trips orders through serialization" do + uq = described_class.new(name: "With order") + uq.order(name: :desc) + uq.save! + + reloaded = described_class.find(uq.id) + expect(reloaded.orders.size).to eq(1) + expect(reloaded.orders.first).to be_a(Queries::Users::Orders::NameOrder) + expect(reloaded.orders.first.direction).to eq(:desc) + end + end + + describe "registration" do + it "registers filters as a side-effect of loading the class" do + expect(Queries::Register.filters[described_class]).to include( + Queries::Users::Filters::NameFilter, + Queries::Users::Filters::StatusFilter, + Queries::Users::Filters::GroupFilter + ) + end + + it "registers orders as a side-effect of loading the class" do + expect(Queries::Register.orders[described_class]).to include( + Queries::Users::Orders::DefaultOrder, + Queries::Users::Orders::NameOrder, + Queries::Users::Orders::GroupOrder + ) + end + end end From d23ba80489f767000e4d34b6f008126b2b15aaf4 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 11:55:34 +0200 Subject: [PATCH 068/280] Fix default value for options hash in views --- db/migrate/20260422081810_create_persisted_views.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/20260422081810_create_persisted_views.rb b/db/migrate/20260422081810_create_persisted_views.rb index 70e0413e2b7..86712cf334e 100644 --- a/db/migrate/20260422081810_create_persisted_views.rb +++ b/db/migrate/20260422081810_create_persisted_views.rb @@ -37,7 +37,7 @@ class CreatePersistedViews < ActiveRecord::Migration[8.1] t.references :principal, foreign_key: { to_table: :users }, null: true t.references :query, polymorphic: true, null: true t.references :parent, foreign_key: { to_table: :persisted_views }, null: true - t.jsonb :options + t.jsonb :options, default: {}, null: false t.boolean :public, default: false, null: false t.timestamps From c31d4753f00c8e15361f14e4e5b83c9d0cd604a0 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 12:05:00 +0200 Subject: [PATCH 069/280] Rubocop on the specs --- spec/models/user_query_spec.rb | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/spec/models/user_query_spec.rb b/spec/models/user_query_spec.rb index 28445f856f1..65e7b4c62d9 100644 --- a/spec/models/user_query_spec.rb +++ b/spec/models/user_query_spec.rb @@ -65,7 +65,7 @@ RSpec.describe UserQuery do it "is invalid if the filter is invalid" do instance.where("name", "=", [""]) - expect(instance).to be_invalid + expect(instance).not_to be_valid end end end @@ -90,7 +90,7 @@ RSpec.describe UserQuery do it "is invalid if the filter is invalid" do instance.where("status", "=", [""]) - expect(instance).to be_invalid + expect(instance).not_to be_valid end end end @@ -100,12 +100,7 @@ RSpec.describe UserQuery do before do allow(Group) - .to receive(:exists?) - .and_return(true) - - allow(Group) - .to receive(:all) - .and_return([group_1]) + .to receive_messages(exists?: true, all: [group_1]) instance.where("group", "=", [group_1.id]) end @@ -127,7 +122,7 @@ RSpec.describe UserQuery do it "is invalid if the filter is invalid" do instance.where("group", "=", [""]) - expect(instance).to be_invalid + expect(instance).not_to be_valid end end end @@ -147,7 +142,7 @@ RSpec.describe UserQuery do describe "valid?" do it "is false" do - expect(instance).to be_invalid + expect(instance).not_to be_valid end it "returns the error on the filter" do @@ -179,7 +174,7 @@ RSpec.describe UserQuery do describe "#results", with_settings: { user_format: :firstname_lastname } do let(:order_sql) do - <<~SQL + <<~SQL.squish CASE WHEN users.type = 'User' THEN LOWER(concat_ws(' ', users.firstname, users.lastname)) WHEN users.type != 'User' THEN LOWER(users.lastname) @@ -228,7 +223,7 @@ RSpec.describe UserQuery do describe "valid?" do it "is false" do - expect(instance).to be_invalid + expect(instance).not_to be_valid end end end @@ -242,7 +237,7 @@ RSpec.describe UserQuery do it "stores the subclass name in the type column" do uq = described_class.create!(name: "Named") expect(uq.reload.type).to eq("UserQuery") - expect(PersistedQuery.find(uq.id)).to be_a(UserQuery) + expect(PersistedQuery.find(uq.id)).to be_a(described_class) end it "round-trips filters through serialization" do From 90e00035bb21ae8842a2e4dc5788bf33e29a7ba6 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 12:05:30 +0200 Subject: [PATCH 070/280] Implementation of a configurable UserCardView --- app/models/user_card_view.rb | 60 +++++++++++++++++ config/locales/en.yml | 8 +++ spec/models/user_card_view_spec.rb | 104 +++++++++++++++++++++++++++++ 3 files changed, 172 insertions(+) create mode 100644 app/models/user_card_view.rb create mode 100644 spec/models/user_card_view_spec.rb diff --git a/app/models/user_card_view.rb b/app/models/user_card_view.rb new file mode 100644 index 00000000000..27be460eeb5 --- /dev/null +++ b/app/models/user_card_view.rb @@ -0,0 +1,60 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +class UserCardView < PersistedView + SECONDARY_INFO = %w[role email login none].freeze + TAG_SOURCES = %w[groups roles none].freeze + CARD_SIZES = %w[compact default expanded].freeze + + store_attribute :options, :secondary_info, :string, default: "role" + store_attribute :options, :show_status_badge, :boolean, default: true + store_attribute :options, :show_email, :boolean, default: false + store_attribute :options, :tag_source, :string, default: "groups" + store_attribute :options, :tag_limit, :integer, default: 3 + store_attribute :options, :card_size, :string, default: "default" + store_attribute :options, :columns_per_row, :integer, default: 3 + + validates :secondary_info, inclusion: { in: SECONDARY_INFO } + validates :tag_source, inclusion: { in: TAG_SOURCES } + validates :card_size, inclusion: { in: CARD_SIZES } + validates :tag_limit, numericality: { only_integer: true, in: 0..10 } + validates :columns_per_row, numericality: { only_integer: true, in: 1..4 } + + validate :query_must_be_user_query + + private + + def query_must_be_user_query + resolved = effective_query + return if resolved.nil? || resolved.is_a?(UserQuery) + + errors.add(:query, :invalid) + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index 59431817fcf..d3277ef00fb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2126,6 +2126,14 @@ en: query: "Query" parent: "Parent view" public: "Public" + user_card_view: + secondary_info: "Secondary info" + show_status_badge: "Show status badge" + show_email: "Show email" + tag_source: "Tag source" + tag_limit: "Tag limit" + card_size: "Card size" + columns_per_row: "Columns per row" project: active_value: true: "unarchived" diff --git a/spec/models/user_card_view_spec.rb b/spec/models/user_card_view_spec.rb new file mode 100644 index 00000000000..e5ff64385d3 --- /dev/null +++ b/spec/models/user_card_view_spec.rb @@ -0,0 +1,104 @@ +# frozen_string_literal: true + +require "rails_helper" + +RSpec.describe UserCardView do + subject(:view) { described_class.new(name: "Team") } + + describe "defaults" do + it "exposes typed defaults for every option" do + expect(view.secondary_info).to eq("role") + expect(view.show_status_badge).to be(true) + expect(view.show_email).to be(false) + expect(view.tag_source).to eq("groups") + expect(view.tag_limit).to eq(3) + expect(view.card_size).to eq("default") + expect(view.columns_per_row).to eq(3) + end + + it "is valid with defaults" do + expect(view).to be_valid + end + end + + describe "round-tripping through JSONB" do + it "persists and reloads options with their declared types" do + view.secondary_info = "email" + view.show_status_badge = false + view.show_email = true + view.tag_source = "roles" + view.tag_limit = 5 + view.card_size = "compact" + view.columns_per_row = 4 + view.save! + + reloaded = described_class.find(view.id) + expect(reloaded.secondary_info).to eq("email") + expect(reloaded.show_status_badge).to be(false) + expect(reloaded.show_email).to be(true) + expect(reloaded.tag_source).to eq("roles") + expect(reloaded.tag_limit).to eq(5) + expect(reloaded.card_size).to eq("compact") + expect(reloaded.columns_per_row).to eq(4) + end + + it "coerces booleans stored as strings" do + view.show_status_badge = "false" + expect(view.show_status_badge).to be(false) + end + end + + describe "validations" do + it "rejects an unknown secondary_info" do + view.secondary_info = "bogus" + expect(view).not_to be_valid + expect(view.errors[:secondary_info]).to be_present + end + + it "rejects an unknown tag_source" do + view.tag_source = "bogus" + expect(view).not_to be_valid + expect(view.errors[:tag_source]).to be_present + end + + it "rejects an unknown card_size" do + view.card_size = "huge" + expect(view).not_to be_valid + expect(view.errors[:card_size]).to be_present + end + + it "rejects tag_limit outside 0..10" do + view.tag_limit = 11 + expect(view).not_to be_valid + expect(view.errors[:tag_limit]).to be_present + end + + it "rejects columns_per_row outside 1..4" do + view.columns_per_row = 0 + expect(view).not_to be_valid + expect(view.errors[:columns_per_row]).to be_present + end + end + + describe "query compatibility" do + let(:user_query) { UserQuery.create!(name: "UQ") } + let(:other_query) { PersistedQuery.create!(name: "PQ") } + + it "accepts a UserQuery" do + view.query = user_query + expect(view).to be_valid + end + + it "rejects a non-UserQuery" do + view.query = other_query + expect(view).not_to be_valid + expect(view.errors[:query]).to be_present + end + + it "walks up the parent chain and accepts a UserQuery from the parent" do + parent = described_class.create!(name: "Parent", query: user_query) + child = described_class.new(name: "Child", parent:) + expect(child).to be_valid + end + end +end From a9bcc0232234258cdca835a779963685fc68b7e1 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 12:12:50 +0200 Subject: [PATCH 071/280] Return manually managed entities, when they are present --- app/models/persisted_query.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/models/persisted_query.rb b/app/models/persisted_query.rb index 66dcc2ea4ed..a49e502912c 100644 --- a/app/models/persisted_query.rb +++ b/app/models/persisted_query.rb @@ -58,4 +58,14 @@ class PersistedQuery < ApplicationRecord def self.register_query(&) Queries::Register.register(self, &) end + + # Returns the query results, bypassing filters and orders when the query has + # manually-added entities — in that case they are returned in the order + # stored on the join records. + def results + return super if ordered_entities.empty? + + entity_ids = ordered_entities.pluck(:entity_id) + self.class.model.where(id: entity_ids).in_order_of(:id, entity_ids) + end end From 7fd0cf36a9d4de296283b8de61b8cb9a0e89ac28 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 12:13:07 +0200 Subject: [PATCH 072/280] Test UserCardView correctly handles the query it is linked with --- app/models/user_card_view.rb | 4 +++ spec/models/user_card_view_spec.rb | 52 ++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/app/models/user_card_view.rb b/app/models/user_card_view.rb index 27be460eeb5..f568951f75f 100644 --- a/app/models/user_card_view.rb +++ b/app/models/user_card_view.rb @@ -49,6 +49,10 @@ class UserCardView < PersistedView validate :query_must_be_user_query + def results + effective_query&.results + end + private def query_must_be_user_query diff --git a/spec/models/user_card_view_spec.rb b/spec/models/user_card_view_spec.rb index e5ff64385d3..72328481273 100644 --- a/spec/models/user_card_view_spec.rb +++ b/spec/models/user_card_view_spec.rb @@ -101,4 +101,56 @@ RSpec.describe UserCardView do expect(child).to be_valid end end + + describe "#results" do + let!(:alice) { create(:user, firstname: "Alice", lastname: "Anderson") } + let!(:bob) { create(:user, firstname: "Bob", lastname: "Brown") } + let!(:locked) { create(:locked_user, firstname: "Carol", lastname: "Clark") } + + it "returns nil when there is no query" do + expect(view.results).to be_nil + end + + it "delegates to the effective query and respects its filters" do + query = UserQuery.new(name: "Active only") + query.where("status", "=", ["active"]) + query.save! + + view.query = query + expect(view.results).to contain_exactly(alice, bob) + expect(view.results).not_to include(locked) + end + + it "applies a name filter and sort defined on the query" do + query = UserQuery.new(name: "By name") + query.where("name", "~", ["Brown"]) + query.save! + + view.query = query + expect(view.results).to contain_exactly(bob) + end + + it "bypasses filters and returns manually-added users in their stored order" do + query = UserQuery.new(name: "Manual") + query.where("status", "=", ["active"]) + query.save! + + OrderedPersistedQueryEntity.create!(persisted_query: query, entity: bob, position: 1) + OrderedPersistedQueryEntity.create!(persisted_query: query, entity: locked, position: 2) + OrderedPersistedQueryEntity.create!(persisted_query: query, entity: alice, position: 3) + + view.query = query + expect(view.results.to_a).to eq([bob, locked, alice]) + end + + it "walks up the parent chain to find the query" do + query = UserQuery.new(name: "Active only") + query.where("status", "=", ["active"]) + query.save! + + parent = described_class.create!(name: "Parent", query:) + child = described_class.create!(name: "Child", parent:) + expect(child.results).to contain_exactly(alice, bob) + end + end end From 472e0143aa882bafcc5ff79c1283ba6738e64253 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 12:19:36 +0200 Subject: [PATCH 073/280] Properly format native SQL in Principals.ordered_by_name scope --- app/models/principals/scopes/ordered_by_name.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/principals/scopes/ordered_by_name.rb b/app/models/principals/scopes/ordered_by_name.rb index ae34fb0548d..eaab098794b 100644 --- a/app/models/principals/scopes/ordered_by_name.rb +++ b/app/models/principals/scopes/ordered_by_name.rb @@ -41,7 +41,7 @@ module Principals::Scopes def ordered_by_name(desc: false) direction = desc ? "DESC" : "ASC" - order_case = Arel.sql <<~SQL + order_case = Arel.sql(<<~SQL.squish) CASE WHEN users.type = 'User' THEN LOWER(#{user_concat_sql}) WHEN users.type != 'User' THEN LOWER(users.lastname) From 2da690745edd94c33540a3cb58ece1657300b223 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 13:35:58 +0200 Subject: [PATCH 074/280] Allow queries to not have a name to properly work with in-memory --- app/models/persisted_query.rb | 10 +++++++++- db/migrate/20260422081417_create_persisted_queries.rb | 2 +- spec/models/persisted_query_spec.rb | 6 ------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/models/persisted_query.rb b/app/models/persisted_query.rb index a49e502912c..c17bf0cc30b 100644 --- a/app/models/persisted_query.rb +++ b/app/models/persisted_query.rb @@ -46,7 +46,7 @@ class PersistedQuery < ApplicationRecord dependent: :destroy, inverse_of: :persisted_query - validates :name, presence: true, length: { maximum: 255 } + validates :name, length: { maximum: 255, allow_nil: true } def self.inherited(subclass) super @@ -59,6 +59,14 @@ class PersistedQuery < ApplicationRecord Queries::Register.register(self, &) end + def user + principal if principal.is_a?(User) + end + + def user=(user) + self.principal = user + end + # Returns the query results, bypassing filters and orders when the query has # manually-added entities — in that case they are returned in the order # stored on the join records. diff --git a/db/migrate/20260422081417_create_persisted_queries.rb b/db/migrate/20260422081417_create_persisted_queries.rb index a0facc92bb7..35b28e08883 100644 --- a/db/migrate/20260422081417_create_persisted_queries.rb +++ b/db/migrate/20260422081417_create_persisted_queries.rb @@ -32,7 +32,7 @@ class CreatePersistedQueries < ActiveRecord::Migration[8.1] def change create_table :persisted_queries do |t| t.string :type - t.string :name + t.string :name, null: true t.references :project, foreign_key: true, null: true t.references :principal, foreign_key: { to_table: :users }, null: true t.jsonb :filters, default: [] diff --git a/spec/models/persisted_query_spec.rb b/spec/models/persisted_query_spec.rb index 809617ad5c2..484497ac6f0 100644 --- a/spec/models/persisted_query_spec.rb +++ b/spec/models/persisted_query_spec.rb @@ -15,12 +15,6 @@ RSpec.describe PersistedQuery do expect(persisted_query).to be_valid end - it "requires a name" do - persisted_query.name = nil - expect(persisted_query).not_to be_valid - expect(persisted_query.errors[:name]).to be_present - end - it "rejects names longer than 255 characters" do persisted_query.name = "a" * 256 expect(persisted_query).not_to be_valid From 461fbcebdd591b1aab467c7e9e8a946b8930f950 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 14:41:05 +0200 Subject: [PATCH 075/280] Reset changes done by autolint in the editor --- config/locales/en.yml | 2502 ++++++++++++++--------------------------- 1 file changed, 849 insertions(+), 1653 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index d3277ef00fb..9d4925c77ed 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -35,7 +35,7 @@ en: work_packages: activity_tab: no_results_title_text: No activity to display - no_results_description_text: "Choose \"Show everything\" to show all activity and comments" + no_results_description_text: 'Choose "Show everything" to show all activity and comments' label_activity_show_all: "Show everything" label_activity_show_only_comments: "Show comments only" label_activity_show_only_changes: "Show changes only" @@ -55,8 +55,7 @@ en: internal_comment_confirmation: title: "Make this comment public?" heading: "Make this comment public?" - description: "Your comment will be visible to anyone who can access this work - package. Are you sure you want to do this?" + description: "Your comment will be visible to anyone who can access this work package. Are you sure you want to do this?" confirm_button_text: "Make public" admin: @@ -85,26 +84,22 @@ en: primary-button-color: "Strong accent color, used for the most important button on a screen." accent-color: "Color for links and other decently highlighted elements." main-menu-bg-color: "Left side menu's background color." - theme_warning: Changing the theme will overwrite you custom style. The design - will then be lost. Are you sure you want to continue? + theme_warning: Changing the theme will overwrite you custom style. The design will then be lost. Are you sure you want to continue? enterprise: delete_dialog: title: "Delete enterprise token" heading: "Delete this enterprise token?" - confirmation: "Are you sure you want to delete this Enterprise edition support - token?" + confirmation: "Are you sure you want to delete this Enterprise edition support token?" create_dialog: title: "Add Enterprise token" type_token_text: "Your Enterprise token text" token_placeholder: "Paste your Enterprise edition support token here" - token_caption: "To learn more about how to activate Enterprise edition check our - [documentation](docs_url)." + token_caption: "To learn more about how to activate Enterprise edition check our [documentation](docs_url)." add_token: "Upload an Enterprise edition support token" replace_token: "Replace your current support token" order: "Order Enterprise on-premises edition" paste: "Paste your Enterprise edition support token" - required_for_feature: "This add-on is only available with an active Enterprise - edition support token." + required_for_feature: "This add-on is only available with an active Enterprise edition support token." enterprise_link: "For more information, click here." start_trial: "Start free trial" book_now: "Book now" @@ -122,34 +117,24 @@ en: jemalloc_allocator: Jemalloc memory allocator journal_aggregation: caption: > - User actions on a work package (changing description, status, values, or - writing comments) are grouped if performed within this period. It also - controls notification and [webhook](webhook_link) delays. + User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. import: title: "Import" jira: title: "Jira Migrator" - description: "Use this tool to import data from your Jira instance. You can - configure multiple Jira hosts and choose what to import in each import - run." + description: "Use this tool to import data from your Jira instance. You can configure multiple Jira hosts and choose what to import in each import run." errors: cannot_delete_with_imports: "Cannot delete Jira host with existing imports" custom_field_creation_failed: "Failed to create custom field '%{name}': %{message}" blank: title: "No Jira hosts configured yet" - description: "Configure a Jira host to start importing items from Jira to this - OpenProject instance." + description: "Configure a Jira host to start importing items from Jira to this OpenProject instance." configuration: title: "Jira configuration" new: "New configuration" banner: title: "Limited import capabilities" - description: "This Jira Migrator is currently in beta and can only import basic - data: projects, issues (name, title, description, attachments), users - (name, email, project membership), statuses, and types. It cannot - import workflows, custom fields, issue relations, or permissions. We - currently only support Jira Server/Data Center versions 10.x and 11.x. - Cloud instances are not supported at this time." + description: "This Jira Migrator is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time." form: fields: name: "Name" @@ -159,8 +144,7 @@ en: button_save: "Save configuration" button_test: "Test configuration" button_delete_token: "Delete token" - delete_token_confirm: "Are you sure you want to delete the token? This will - disable the Jira connection." + delete_token_confirm: "Are you sure you want to delete the token? This will disable the Jira connection." label_testing: "Testing configuration..." token_deleted: "Token was successfully deleted." test: @@ -168,23 +152,17 @@ en: failed: "Connection failed: Unable to retrieve server information" error: "An unexpected error occurred while testing the connection" connection_error: "Connection error: %{message}" - parse_error: "Failed to parse the response from the server. The server may not - be a valid Jira instance." - api_error: "Jira API returned error status %{status}. Please check your Jira - instance URL and API token." - token_error: "Invalid API token. Please check your credentials in the - configuration." - missing_credentials: "Please provide both URL and Personal Access Token to test - the connection" + parse_error: "Failed to parse the response from the server. The server may not be a valid Jira instance." + api_error: "Jira API returned error status %{status}. Please check your Jira instance URL and API token." + token_error: "Invalid API token. Please check your credentials in the configuration." + missing_credentials: "Please provide both URL and Personal Access Token to test the connection" invalid_url: "Please provide a valid URL" client: connection_error: "Failed to connect to Jira server: %{message}" connection_timeout: "Connection to Jira server timed out: %{message}" parse_error: "Failed to parse Jira API response: %{message}" api_error: "Jira API returned error status %{status}" - 401_error: "Jira API returned a 401 error. Your authentication token may have - expired or lack the required permissions. Please ensure the token - belongs to a Jira administrator." + 401_error: "Jira API returned a 401 error. Your authentication token may have expired or lack the required permissions. Please ensure the token belongs to a Jira administrator." columns: projects: "Projects" last_change: "Last change" @@ -194,20 +172,13 @@ en: title: "Import run" history: "History" remove_error: "A Jira import run cannot be removed while it is running" - import_blocked_error: "Another Jira import run is currently in progress or - awaiting review. Please complete or revert it before starting a new - import." - project_identifier_taken: "You are trying to import a project with an already - used identifier: %{taken_identifier}. Please update the project - identifier in Jira then click on Retry." + import_blocked_error: "Another Jira import run is currently in progress or awaiting review. Please complete or revert it before starting a new import." + project_identifier_taken: "You are trying to import a project with an already used identifier: %{taken_identifier}. Please update the project identifier in Jira then click on Retry." blank: title: "No import runs set up yet" - description: "Create an import run to start importing information from this Jira - instance" + description: "Create an import run to start importing information from this Jira instance" index: - description: "You can import different sets of data with each import run. It is - possible to undo an import run immediately after in review mode but - not after finalizing." + description: "You can import different sets of data with each import run. It is possible to undo an import run immediately after in review mode but not after finalizing." button_import_run: "Import run" button_edit_configuration: "Edit configuration" status: @@ -267,8 +238,7 @@ en: fetch_data: title: "Fetch instance meta data" caption_done: "Completed" - description: "Check what data is available for import in the host Jira - instance." + description: "Check what data is available for import in the host Jira instance." button_fetch: "Check available data" label_progress: "Fetching data from Jira..." groups_and_users: @@ -277,12 +247,8 @@ en: title: "Import scope" caption: "Choose what you want to import into OpenProject" caption_done: "Completed" - label_info: "Please note that this import tool is in beta and cannot import all - types of data. Here is a summary of what the host Jira instance - offers for import and what this tool is able to import right - now." - description: "Select what data you want to import from the available data - fetched from the host Jira instance." + label_info: "Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance offers for import and what this tool is able to import right now." + description: "Select what data you want to import from the available data fetched from the host Jira instance." label_available_data: "Available data" label_not_available_data: "Not available for import" button_select_projects: "Select projects to import" @@ -315,9 +281,7 @@ en: label_revert: "Revert import" button_revert: "Revert import" button_done: "Finalize import" - preview_description: "The imported data is currently in review mode. Click - \"Finalize import\" to make the import permanent or \"Revert - import\" to undo all changes made in this import run." + preview_description: 'The imported data is currently in review mode. Click "Finalize import" to make the import permanent or "Revert import" to undo all changes made in this import run.' label_finalize_import: "Finalize import" label_finalizing: "Finalizing import..." label_finalizing_done: "Import finalized." @@ -329,23 +293,17 @@ en: title: "Start this import?" confirm_button: "Start import" description: > - This importer is an alpha feature. It is not yet able to import - all data from Jira and might leave incomplete data on this - OpenProject instance. + This importer is an alpha feature. It is not yet able to import all data from Jira and might leave incomplete data on this OpenProject instance. - Do not use a production environment and create a backup of your - OpenProject data before starting. + Do not use a production environment and create a backup of your OpenProject data before starting. confirm: "I understand and made the necessary preparations" revert_dialog: title: "Permanently revert this import?" - description: "This will delete all imported objects (including whole projects) - even if there was user activity in those projects after the import - on OpenProject." + description: "This will delete all imported objects (including whole projects) even if there was user activity in those projects after the import on OpenProject." confirm: "I understand that this reversion will delete data permanently" finalize_dialog: title: "Finalize this import?" - description: "Once finalized, this import can no longer be reverted. All - imported data will become permanently imported." + description: "Once finalized, this import can no longer be reverted. All imported data will become permanently imported." confirm: "I understand that this action cannot be undone" confirm_button: "Understood" select_projects: @@ -353,43 +311,31 @@ en: mcp_configurations: index: - description: "The model context protocol allows AI agents to provide its users - with tools and resources exposed by this OpenProject instance. This - feature is still in beta." + description: "The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta." resources_heading: "Resources" - resources_description: "OpenProject implements the following resources. Each can - be enabled, renamed and described as you want. For more information, - please refer to the [documentation on MCP resources](docs_url)." + resources_description: "OpenProject implements the following resources. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP resources](docs_url)." resources_submit: "Update resources" tools_heading: "Tools" - tools_description: "OpenProject implements the following tools. Each can be - enabled, renamed and described as you want. For more information, - please refer to the [documentation on MCP tools](docs_url)." + tools_description: "OpenProject implements the following tools. Each can be enabled, renamed and described as you want. For more information, please refer to the [documentation on MCP tools](docs_url)." tools_submit: "Update tools" multi_update: success: "MCP configurations were updated successfully." server_form: - description_caption: "How the MCP server will be described to other applications - who connect to it." + description_caption: "How the MCP server will be described to other applications who connect to it." title_caption: "A short title shown to applications that connect to the MCP server." tool_response_format: "Tool response format" tool_response_format_content_only_label: "Content only" tool_response_format_content_only_caption: > - Choose this if MCP clients connecting to this instance do not support - structured content. Tool responses will only contain plain text - content and leave out the structured version. + Choose this if MCP clients connecting to this instance do not support structured content. + Tool responses will only contain plain text content and leave out the structured version. tool_response_format_full_label: "Full" tool_response_format_full_caption: > - The most compatible option. Tool responses will include both regular - and structured content, allowing MCP clients to choose which format - they want to read. This may increase the number of tokens that the - language model has to process, potentially increasing cost and - decreasing performance. + The most compatible option. Tool responses will include both regular and structured content, allowing MCP clients to choose which format they want to read. + This may increase the number of tokens that the language model has to process, potentially increasing cost and decreasing performance. tool_response_format_structured_only_label: "Structured content only" tool_response_format_structured_only_caption: > - Choose this if you are certain that MCP clients connecting to this - instance support structured content. Tool responses will only include - structured content and leave out its text representation. + Choose this if you are certain that MCP clients connecting to this instance support structured content. + Tool responses will only include structured content and leave out its text representation. update: failure: "MCP configuration could not be updated." success: "MCP configuration was updated successfully." @@ -401,14 +347,12 @@ en: created_client_credentials_dialog_component: title: "Client credentials created" heading: "Client credentials have been generated" - one_time_hint: "This is the only time you will see the client secret. Make sure - to copy it now." + one_time_hint: "This is the only time you will see the client secret. Make sure to copy it now." created_token_dialog_component: title: "Token created" heading: "A token has been generated" label_token: "Token" - one_time_hint: "This is the only time you will see this token. Make sure to copy - it now." + one_time_hint: "This is the only time you will see this token. Make sure to copy it now." delete_scim_client_dialog_component: title: "Delete SCIM client" heading: "Are you sure you want to delete this SCIM client?" @@ -416,24 +360,13 @@ en: edit: label_delete_scim_client: "Delete SCIM client" form: - auth_provider_description: "This is the service that users added by the SCIM - provider will use to authenticate in OpenProject." - authentication_method_description_html: "This is how the SCIM client - authenticates at OpenProject. Please ensure that OAuth tokens include - the scim_v2 scope." - description: "Please refer to our [documentation on configuring SCIM - clients](docs_url) for more information on these configuration - options." - jwt_sub_description: "For example, for Keycloak, this is the UUID of the service - account associated with the SCIM client. Consult [our - documentation](docs_url) to learn how to find the subject claim for - your use case." - name_description: "Choose a name that will help other admins better understand - why this client was configured." + auth_provider_description: "This is the service that users added by the SCIM provider will use to authenticate in OpenProject." + authentication_method_description_html: "This is how the SCIM client authenticates at OpenProject. Please ensure that OAuth tokens include the scim_v2 scope." + description: "Please refer to our [documentation on configuring SCIM clients](docs_url) for more information on these configuration options." + jwt_sub_description: "For example, for Keycloak, this is the UUID of the service account associated with the SCIM client. Consult [our documentation](docs_url) to learn how to find the subject claim for your use case." + name_description: "Choose a name that will help other admins better understand why this client was configured." index: - description: "SCIM clients configured here are able to interact with OpenProject - SCIM server API to provision, update, and deprovision user accounts - and groups." + description: "SCIM clients configured here are able to interact with OpenProject SCIM server API to provision, update, and deprovision user accounts and groups." label_create_button: "Add SCIM client" new: title: "New SCIM client" @@ -441,16 +374,14 @@ en: confirm_button: "Revoke" title: "Revoke static token" heading: "Are you sure you want to revoke this token?" - description: "The SCIM client that uses this token will no longer be able to - access OpenProject's SCIM server API." + description: "The SCIM client that uses this token will no longer be able to access OpenProject's SCIM server API." table_component: blank_slate: title: "No SCIM clients configured yet" description: "Add clients to see them here" user_count: "Users" token_list_component: - description: "The tokens you generate here can be passed by a SCIM client to - access the OpenProject SCIM API." + description: "The tokens you generate here can be passed by a SCIM client to access the OpenProject SCIM API." heading: "Tokens" label_add_token: "Token" label_aria_add_token: "Add token" @@ -465,21 +396,17 @@ en: new_project: project_creation: "Project creation" notification_text_default: > -

    Hello,

    A new project has been created: projectValue:name

    +

    Hello,

    +

    A new project has been created: projectValue:name

    Thank you

    work_packages_identifier: page_header: - description: Choose between classic numerical work package IDs or semantic - project-specific ones that prepend the project identifier to the - work package ID. + description: Choose between classic numerical work package IDs or semantic project-specific ones that prepend the project identifier to the work package ID. banner: existing_identifiers_notice: > - Existing identifiers for %{project_count} projects don't meet - requirements for project-based semantic identifiers. OpenProject can - automatically update these so that they are valid as in the examples - below. Click on 'Autofix and save' to update identifiers for all - projects in this manner and enable project-based semantic - identifiers. + Existing identifiers for %{project_count} projects don't meet requirements for project-based semantic identifiers. + OpenProject can automatically update these so that they are valid as in the examples below. + Click on 'Autofix and save' to update identifiers for all projects in this manner and enable project-based semantic identifiers. box_header: label_project: Project label_previous_identifier: Previous identifier @@ -502,17 +429,15 @@ en: title: Change work package identifiers heading: Enable project-based work package IDs? description: > - This will change IDs for all work packages in all projects in this - instance. Previous identifiers and URLs will continue to redirect - properly. This change will take some time to complete. + This will change IDs for all work packages in all projects in this instance. + Previous identifiers and URLs will continue to redirect properly. + This change will take some time to complete. confirm_button: Change identifiers checkbox_label: I understand that this will permanently change all work package IDs success_banner: Successfully updated work package identifier format. in_progress: - converting_banner_message: Project identifiers are currently being converted to - semantic format. This may take some time. - reverting_banner_message: Project identifiers are currently being reverted to - classic format. This may take some time. + converting_banner_message: Project identifiers are currently being converted to semantic format. This may take some time. + reverting_banner_message: Project identifiers are currently being reverted to classic format. This may take some time. workflows: tabs: default_transitions: "Default transitions" @@ -522,20 +447,17 @@ en: statuses_dialog: title: "Statuses" label: "Statuses enabled for this type" - caption: "Add or remove statuses you would like to associate with this type. - Removing a status will also delete the workflow associated with it." + caption: "Add or remove statuses you would like to associate with this type. Removing a status will also delete the workflow associated with it." statuses_removal_dialog: title: "Remove statuses" heading: one: "Remove 1 status?" other: "Remove %{count} statuses?" - description: "Removing these statuses will make them unavailable to this type - and delete existing workflows. Are you sure you want to proceed?" + description: "Removing these statuses will make them unavailable to this type and delete existing workflows. Are you sure you want to proceed?" confirm: "Remove" leave_confirmation: title: "Save changes before continuing?" - description: "You are about to leave this page but you have unsaved changes. - Would you like to save them before continuing?" + description: "You are about to leave this page but you have unsaved changes. Would you like to save them before continuing?" ignore: "Ignore changes" save: "Save changes and continue" role_selector: @@ -546,12 +468,12 @@ en: description: "Add statuses to start configuring workflows for this role" info: database_deprecation_html: > - Starting with OpenProject 16.0, PostgreSQL 16 is required to use - OpenProject. Your installation will remain functional with your current - database, but anticipate incompatability in future releases.
    We - have prepared [upgrade guides for all installation - methods](upgrade_guide). You can perform the upgrade ahead of the next - release at any time by following the guides. + Starting with OpenProject 16.0, PostgreSQL 16 is required to use OpenProject. + Your installation will remain functional with your current database, but anticipate incompatability + in future releases. +
    + We have prepared [upgrade guides for all installation methods](upgrade_guide). + You can perform the upgrade ahead of the next release at any time by following the guides. authentication: login_and_registration: "Login and registration" @@ -562,14 +484,11 @@ en: is_inactive: currently not displayed antivirus_scan: - not_processed_yet_message: "Downloading is blocked, as file was not scanned for - viruses yet. Please try again later." - quarantined_message: "A virus was detected in file '%{filename}'. It has been - quarantined and is not available for download." + not_processed_yet_message: "Downloading is blocked, as file was not scanned for viruses yet. Please try again later." + quarantined_message: "A virus was detected in file '%{filename}'. It has been quarantined and is not available for download." deleted_message: "A virus was detected in file '%{filename}'. The file has been deleted." deleted_by_admin: "The quarantined file '%{filename}' has been deleted by an administrator." - overridden_by_admin: "The quarantine for file '%{filename}' has been removed by - %{user}. The file can now be acccessed." + overridden_by_admin: "The quarantine for file '%{filename}' has been removed by %{user}. The file can now be acccessed." quarantined_attachments: container: "Container" delete: "Delete the quarantined file" @@ -578,11 +497,8 @@ en: attribute_help_texts: caption: "This short version will be displayed as caption of the attribute." - note_public: "Any text and images you add to this field are publicly visible to - all logged in users." - text_overview: "In this view, you can create custom help texts for attributes - view. When defined, these texts can be shown by clicking the help icon - next to its belonging attribute." + note_public: "Any text and images you add to this field are publicly visible to all logged in users." + text_overview: "In this view, you can create custom help texts for attributes view. When defined, these texts can be shown by clicking the help icon next to its belonging attribute." show_preview: "Preview text" add_new: "Add help text" edit_field_name: "Edit help text for %{attribute_field_name}" @@ -603,13 +519,9 @@ en: attribute_texts: name: Arbitrary name of the LDAP connection host: LDAP host name or IP address - login_map: The attribute key in LDAP that is used to identify the unique user - login. Usually, this will be `uid` or `samAccountName`. - generic_map: The attribute key in LDAP that is mapped to the OpenProject - `%{attribute}` attribute - admin_map_html: "Optional: The attribute key in LDAP that if - present marks the OpenProject user an admin. Leave empty when - in doubt." + login_map: The attribute key in LDAP that is used to identify the unique user login. Usually, this will be `uid` or `samAccountName`. + generic_map: The attribute key in LDAP that is mapped to the OpenProject `%{attribute}` attribute + admin_map_html: "Optional: The attribute key in LDAP that if present marks the OpenProject user an admin. Leave empty when in doubt." system_user_dn_html: | Enter the DN of the system user used for read-only access.
    @@ -645,27 +557,20 @@ en: plain: "none" simple_tls: "LDAPS" start_tls: "STARTTLS" - plain_description: "Opens an unencrypted connection to the LDAP server. Not - recommended for production." - simple_tls_description: "Use LDAPS. Requires a separate port on the LDAP server. - This mode is often deprecated, we recommend using STARTTLS whenever - possible." - start_tls_description: "Sends a STARTTLS command after connecting to the - standard LDAP port. Recommended for encrypted connections." + plain_description: "Opens an unencrypted connection to the LDAP server. Not recommended for production." + simple_tls_description: "Use LDAPS. Requires a separate port on the LDAP server. This mode is often deprecated, we recommend using STARTTLS whenever possible." + start_tls_description: "Sends a STARTTLS command after connecting to the standard LDAP port. Recommended for encrypted connections." section_more_info_link_html: > - This section concerns the connection security of this LDAP - authentication source. For more information, visit the - Net::LDAP documentation. + This section concerns the connection security of this LDAP authentication source. + For more information, visit the Net::LDAP documentation. tls_options: verify_peer: "Verify SSL certificate" verify_peer_description_html: > - Enables strict SSL verification of the certificate trusted chain.
    - Warning: Unchecking this option disables SSL - verification of the LDAP server certificate. This exposes your - connection to Man in the Middle attacks. - tls_certificate_description: "If the LDAP server certificate is not in the trust - sources of this system, you can add it manually here. Enter a PEM X509 - certifiate string." + Enables strict SSL verification of the certificate trusted chain. +
    + Warning: Unchecking this option disables SSL verification of the LDAP server certificate. + This exposes your connection to Man in the Middle attacks. + tls_certificate_description: "If the LDAP server certificate is not in the trust sources of this system, you can add it manually here. Enter a PEM X509 certifiate string." forums: show: no_results_title_text: There are currently no posts for the forum. @@ -685,8 +590,8 @@ en: label_no_color: "No color" label_properties: "Properties" label_really_delete_color: > - Are you sure, you want to delete the following color? Types using this - color will not be deleted. + Are you sure, you want to delete the following color? + Types using this color will not be deleted. custom_actions: actions: @@ -705,34 +610,26 @@ en: custom_field_projects: is_for_all_blank_slate: heading: For all projects - description: This custom field is enabled in all projects since the "For all - projects" option is checked. It cannot be deactivated for individual - projects. + description: This custom field is enabled in all projects since the "For all projects" option is checked. It cannot be deactivated for individual projects. items: actions: "Item actions" blankslate: root: title: "Your list of items is empty" - description: "Start by adding items to the custom field of type hierarchy. Each - item can be used to create a hierarchy bellow it. To navigate and - create sub-items inside a hierarchy click on the created item." + description: "Start by adding items to the custom field of type hierarchy. Each item can be used to create a hierarchy bellow it. To navigate and create sub-items inside a hierarchy click on the created item." item: title: This item doesn't have any hierarchy level below description: Add items to this list to create sub-items inside another one delete_dialog: title: "Delete custom field item" heading: "Delete custom field item?" - description: "This action will irreversibly remove the item and all its - sub-items. Any assigned values will be permanently deleted. If this - field is required, removing items may cause existing work packages - to become invalid." + description: "This action will irreversibly remove the item and all its sub-items. Any assigned values will be permanently deleted. If this field is required, removing items may cause existing work packages to become invalid." placeholder: label: "Item label" short: "Short name" weight: "Weight" notice: - remember_items_and_projects: "Remember to set items and projects in the - respective tabs for this custom field." + remember_items_and_projects: "Remember to set items and projects in the respective tabs for this custom field." hierarchy: subitems: zero: no sub-items @@ -740,20 +637,13 @@ en: other: "%{count} sub-items" role_assignment: title: Role Assignment - description: You can automatically grant a certain project role to any user - assigned to this project attribute, regardless of that user’s original - role in that project. - warning: Depending on the role selected below, the user assigned to this project - attribute might gain significantly more permissions than they - previously had, including the ability to add new members and elevate - their role. + description: You can automatically grant a certain project role to any user assigned to this project attribute, regardless of that user’s original role in that project. + warning: Depending on the role selected below, the user assigned to this project attribute might gain significantly more permissions than they previously had, including the ability to add new members and elevate their role. role_field_label: "Project Role" - role_field_caption: This project role will automatically be granted to any user - assigned to this project attribute + role_field_caption: This project role will automatically be granted to any user assigned to this project attribute review_hint: > - There are %{user_count} who are already assigned to this project - attribute in various projects. They might get additional permissions - and be added to projects they did not previously have access to. + There are %{user_count} who are already assigned to this project attribute in various projects. They + might get additional permissions and be added to projects they did not previously have access to. review_button: Review users and permissions dialog: title: "Overview of users and permissions" @@ -771,23 +661,16 @@ en: is_enabled_globally: "Is enabled globally" enabled_in_project: "Enabled in project" contained_in_type: "Contained in type" - confirm_destroy_option: "Deleting an option will delete all of its occurrences - (e.g. in work packages). Are you sure you want to delete it?" + confirm_destroy_option: "Deleting an option will delete all of its occurrences (e.g. in work packages). Are you sure you want to delete it?" reorder_alphabetical: "Reorder values alphabetically" - reorder_confirmation: "Warning: The current order of available values as well as - all unsaved values will be lost. Are you sure you want to continue?" + reorder_confirmation: "Warning: The current order of available values as well as all unsaved values will be lost. Are you sure you want to continue?" placeholder_version_select: "Work package or project selection is required first" calculated_field_not_editable: "Non-editable attribute. This value is calculated automatically." no_role_assigment: "No role assignment" instructions: is_required: - all: "Mark the custom field as required. This will make it mandatory to fill in - the field when creating new resources. Existing resources will not - require a value when being updated." - project: "Required attributes need to be filled out by the user on project - creation if the field is active ('For all projects' set or copying - from a project/template in which the field is active). Existing - projects will not require a value when being updated." + all: "Mark the custom field as required. This will make it mandatory to fill in the field when creating new resources. Existing resources will not require a value when being updated." + project: "Required attributes need to be filled out by the user on project creation if the field is active ('For all projects' set or copying from a project/template in which the field is active). Existing projects will not require a value when being updated." is_for_all: all: "Mark the custom field as available in all existing and new projects." project: "Mark the attribute as available in all existing and new projects." @@ -800,18 +683,14 @@ en: editable: all: "Allow the field to be editable by users themselves." admin_only: - all: "Check to make this custom field only visible to administrators. Users - without admin rights will not be able to view or edit it." - project: "Check to make this attribute only visible to administrators. Users - without admin rights will not be able to view or edit it." + all: "Check to make this custom field only visible to administrators. Users without admin rights will not be able to view or edit it." + project: "Check to make this attribute only visible to administrators. Users without admin rights will not be able to view or edit it." is_filter: all: > Allow the custom field to be used in a filter in work package views. - Note that only with 'For all projects' selected, the custom field will - show up in global views. + Note that only with 'For all projects' selected, the custom field will show up in global views. formula: - project: "Add numeric values or type / to search for an attribute or a - mathematical operator." + project: "Add numeric values or type / to search for an attribute or a mathematical operator." regexp: all: "eg. ^[A-Z0-9]+$" project: "eg. ^[A-Z0-9]+$" @@ -819,8 +698,7 @@ en: all: "0 means no restriction" project: "0 means no restriction" has_comment: - project: "Allows the user to add a comment related to the project attribute when - selecting the value in the project overview." + project: "Allows the user to add a comment related to the project attribute when selecting the value in the project overview." tab: no_results_title_text: There are currently no custom fields. @@ -830,22 +708,17 @@ en: error_dialog: title: "Error with Calculated value" errors: - unknown: "An unknown error occurred. Please review the formula for this - Calculated value." - mathematical: "The mathematical formula leads to an error. Please review the - project calculation attribute and try again." - missing_value: The attribute "%{custom_field_name}" is required by this - Calculated value, but is empty. - disabled_value: The attribute "%{custom_field_name}" is required by this - Calculated value, but is disabled for the project. + unknown: "An unknown error occurred. Please review the formula for this Calculated value." + mathematical: "The mathematical formula leads to an error. Please review the project calculation attribute and try again." + missing_value: The attribute "%{custom_field_name}" is required by this Calculated value, but is empty. + disabled_value: The attribute "%{custom_field_name}" is required by this Calculated value, but is disabled for the project. concatenation: single: "or" danger_dialog: confirmation_live_message_checked: "The button to proceed is now active." - confirmation_live_message_unchecked: "The button to proceed is now inactive. You - need to tick the checkbox to continue." + confirmation_live_message_unchecked: "The button to proceed is now inactive. You need to tick the checkbox to continue." departments: edit: "Edit department" @@ -854,9 +727,8 @@ en: blankslate: heading: "Your organization has no departments" description: > - Start by adding departments or users to the organization. Each - department can be used to create a hierarchy below it, to navigate and - create sub-department inside a hierarchy click on the created item. + Start by adding departments or users to the organization. Each department can be used to create + a hierarchy below it, to navigate and create sub-department inside a hierarchy click on the created item. add_button: "Add" detail_blankslate: heading: "This department doesn’t have any hierarchy level below" @@ -868,8 +740,7 @@ en: move_user_dialog: title: "User already in a department" heading: "Move user to this department?" - description: "%{user} is currently a member of %{from_department}. Moving them - will remove them from that department." + description: "%{user} is currently a member of %{from_department}. Moving them will remove them from that department." confirm: "Move user" context_menu: add_sub_department: "Add sub-department" @@ -892,8 +763,7 @@ en: mcp_configurations: server_url_component: - caption: "The URL at which the OpenProject MCP server will be reachable. - Required for setting up MCP clients." + caption: "The URL at which the OpenProject MCP server will be reachable. Required for setting up MCP clients." label: "Server URL" op_dry_validation: @@ -948,9 +818,9 @@ en: global_search: title: - all_projects: "Search for \"%{search_term}\" in all projects" - current_project: "Search for \"%{search_term}\" in %{project_name}" - project_and_subprojects: "Search for \"%{search_term}\" in %{project_name} and all subprojects" + all_projects: 'Search for "%{search_term}" in all projects' + current_project: 'Search for "%{search_term}" in %{project_name}' + project_and_subprojects: 'Search for "%{search_term}" in %{project_name} and all subprojects' placeholder: "Search in %{app_title}" overwritten_tabs: all: "All" @@ -961,8 +831,7 @@ en: edit: synchronized_groups: "Synchronized groups" index: - description: By grouping users together, you can add them as members to the same - projects or assign the same global roles to them. + description: By grouping users together, you can add them as members to the same projects or assign the same global roles to them. table_component: blank_slate: description: You can define named groups of users with specific permissions. @@ -975,15 +844,13 @@ en: synchronized_groups: blankslate: action: Authentication settings - description: When this group is automatically synced with groups in external - identity providers like OpenID, they will appear here. You can set - this up in your Authentication settings. + description: When this group is automatically synced with groups in external identity providers like OpenID, they will appear here. You can set this up in your Authentication settings. title: No synchronized groups yet incoming_mails: ignore_filenames: > - Specify a list of names to ignore when processing attachments for incoming - mails (e.g., signatures or icons). Enter one filename per line. + Specify a list of names to ignore when processing attachments for incoming mails (e.g., signatures or icons). + Enter one filename per line. portfolios: index: @@ -1014,12 +881,10 @@ en: notification_email_subject: "Your project '%{project_name}' has been created" complete_wizard_link: "Complete the %{artefact_name}" delete: - scheduled: "Deletion has been scheduled and is performed in the background. You - will be notified of the result." + scheduled: "Deletion has been scheduled and is performed in the background. You will be notified of the result." schedule_failed: "Project cannot be deleted: %{errors}" failed: "Deletion of project '%{name}' has failed" - failed_text: "The request to delete project '%{name}' has failed. The project - was left archived." + failed_text: "The request to delete project '%{name}' has failed. The project was left archived." completed: "Deletion of project '%{name}' completed" completed_text: "The request to delete project '%{name}' has been completed." completed_text_children: "Additionally, the following subprojects have been deleted:" @@ -1042,8 +907,7 @@ en: delete_modal: title: "Delete project list" heading: "Delete this project list?" - text: "This action will not delete any project the list contains. Are you sure - you want to delete this project list?" + text: "This action will not delete any project the list contains. Are you sure you want to delete this project list?" settings: header_details: Basic details header_status: Status @@ -1052,44 +916,35 @@ en: button_update_status_description: Update status description button_update_parent_project: Update parent project public_warning: > - This project is public. Anyone who has access to this instance will be - able to view and interact with this project depending on their role and - associated permissions. Sub-projects are not affected and have their own - settings. + This project is public. + Anyone who has access to this instance will be able to view and interact with this project depending on their role and associated permissions. + Sub-projects are not affected and have their own settings. public_confirmation: - checkbox: "I understand that this will make the previously private content - public" + checkbox: "I understand that this will make the previously private content public" title: "Make this project public?" description: > - Anyone who has access to this instance will be able to view and - interact with this project depending on their role and authentication - settings. Sub-projects are not affected and have their own settings. + Anyone who has access to this instance will be able to view and interact with this project depending on their role and authentication settings. + Sub-projects are not affected and have their own settings. private_confirmation: - checkbox: "I understand that this will make the previously public content - private." + checkbox: "I understand that this will make the previously public content private." title: "Make this project private?" description: > - The project will only be visible to project members depending on their - role and associated permissions. Sub-projects are not affected and - have their own settings. + The project will only be visible to project members depending on their role and associated permissions. + Sub-projects are not affected and have their own settings. change_identifier: Change identifier change_identifier_dialog_title: Change project identifier - change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers - or underscores. Max 10 characters. Must start with a letter." + change_identifier_format_hint_semantic: "Only uppercase letters (A–Z), numbers or underscores. Max 10 characters. Must start with a letter." change_identifier_format_hint_legacy: "Only lowercase letters (a–z), numbers, dashes or underscores." change_identifier_warning: > - This will permanently change identifiers and URLs of all work packages - in this project. The previous identifier and URLs will nevertheless - continue to redirect properly. + This will permanently change identifiers and URLs of all work packages in this project. + The previous identifier and URLs will nevertheless continue to redirect properly. subitems: template_section: > Select templates to be used when creating new subitems. project_template_label: "Template for projects" - project_template_caption: "Select a template project to be used as the default - for new subitems of this type." + project_template_caption: "Select a template project to be used as the default for new subitems of this type." program_template_label: "Template for programs" - program_template_caption: "Select a template program to be used as the default - for new subitems of this type." + program_template_caption: "Select a template program to be used as the default for new subitems of this type." no_template: "No predefined template" template: menu_title: "Template" @@ -1098,11 +953,9 @@ en: members: excluded_roles_label: "Roles to exclude when template is applied" excluded_roles_caption: > - When creating a new project from this template, the roles selected - above will be omitted. This allows you to select which members will - be excluded based on their project roles. Users can then access the - template for viewing purposes without being granted access to new - projects created from it. + When creating a new project from this template, the roles selected above will be omitted. + This allows you to select which members will be excluded based on their project roles. + Users can then access the template for viewing purposes without being granted access to new projects created from it. actions: label_enable_all: "Enable all" label_disable_all: "Disable all" @@ -1119,11 +972,7 @@ en: life_cycle: header: title: "Project life cycle" - description_html: "The active project phases define this project's life cycle - and are defined in the administration settings. Enabled phases will - be displayed in your project overview." + description_html: 'The active project phases define this project''s life cycle and are defined in the administration settings. Enabled phases will be displayed in your project overview.' non_defined: "No phases are currently defined." section_header: "Phases" step: @@ -1133,13 +982,9 @@ en: project_custom_fields: header: title: "Project attributes" - description_html: "These project attributes will be displayed in your project overview page - under their respective sections. You can enable or disable - individual attributes. Project attributes and sections are defined - in the administration settings by the administrator - of the instance. " + description_html: + 'These project attributes will be displayed in your project overview page under their respective sections. You can enable or disable individual attributes. + Project attributes and sections are defined in the administration settings by the administrator of the instance. ' filter: label: "Search project attribute" actions: @@ -1148,17 +993,12 @@ en: remove_from_project: "Remove from project" is_for_all_blank_slate: heading: For all projects - description: This project attribute is enabled in all projects since the "For - all projects" option is checked. It cannot be deactivated for - individual projects. - enabled_via_assignee_when_submitted_html: This project attribute cannot be - disabled since it is set as assignee when submitted for project initiation - requests. + description: This project attribute is enabled in all projects since the "For all projects" option is checked. It cannot be deactivated for individual projects. + enabled_via_assignee_when_submitted_html: This project attribute cannot be disabled since it is set as assignee when submitted for project initiation requests. types: no_results_title_text: There are currently no types available. form: - enable_type_in_project: "Enable type \"%{type}\"" + enable_type_in_project: 'Enable type "%{type}"' versions: no_results_title_text: There are currently no versions for the project. no_results_content_text: Create a new version @@ -1170,39 +1010,23 @@ en: new_label: "New priority" creation_wizard: errors: - no_work_package_type: "Failed to enable project initiation request because it - requires at least one active work package type and this project has - none. Please add at least one work package type to this project." - no_status_when_submitted: "Failed to enable project initiation request because - work package type %{type} requires at least one status associated - with it. Please enable at least one status workflow for this work - package type." + no_work_package_type: "Failed to enable project initiation request because it requires at least one active work package type and this project has none. Please add at least one work package type to this project." + no_status_when_submitted: "Failed to enable project initiation request because work package type %{type} requires at least one status associated with it. Please enable at least one status workflow for this work package type." export: - description_attachment_export: "The generated artifact will be saved as a PDF - attachment to the artifact work package." - description_file_link_export: "The artifact work package will have a file link - to a PDF stored in an external file storage. Requires a working file - storage with automatically-managed project folders for this project. - At the moment only Nextcloud file storages are supported." - description_file_storage_selection: "Select which of the configured external - file storages should be used." + description_attachment_export: "The generated artifact will be saved as a PDF attachment to the artifact work package." + description_file_link_export: "The artifact work package will have a file link to a PDF stored in an external file storage. Requires a working file storage with automatically-managed project folders for this project. At the moment only Nextcloud file storages are supported." + description_file_storage_selection: "Select which of the configured external file storages should be used." external_file_storage: "External file storage" label_artifact_export: "Artifact export" label_attachment_export: "Save as work package file attachment" - label_file_link_export: "Upload file to external file storage and add file link - to work package" + label_file_link_export: "Upload file to external file storage and add file link to work package" pdf_file_storage: "PDF file storage" unavailable: "unavailable" label_request_submission: "Request submission" project_attributes_description: > - Select which project attributes should be included in the project - initiation request. This list only includes [project - attributes](project_attributes_url) enabled for for this project. - enabled_because_required_html: This project attribute cannot be disabled for - this project initiation request since it is defined as required. This - can be changed in the administration settings by the administrator of - the instance. + Select which project attributes should be included in the project initiation request. + This list only includes [project attributes](project_attributes_url) enabled for for this project. + enabled_because_required_html: This project attribute cannot be disabled for this project initiation request since it is defined as required. This can be changed in the administration settings by the administrator of the instance. status: button_edit: Edit status wizard: @@ -1210,8 +1034,7 @@ en: sections: "Sections" title: "Project initiation request" no_help_text: "This attribute has no help text defined." - success: "Project attributes saved and artifact work package created - successfully." + success: "Project attributes saved and artifact work package created successfully." progress_label: "%{current} of %{total}" create_artifact_work_package_error: "Failed to create artifact work package" create_artifact_storage_error: "Failed to store artifact in file storage" @@ -1253,45 +1076,24 @@ en: will_remove_the_users_role: "This will remove the user’s role from this project." will_remove_the_groups_role: "This will remove the group role from this project." however_work_packages_shared_with_user_html: - one: "However, %{shared_work_packages_link} has also been shared with this - user." - other: "However, %{shared_work_packages_link} have also been shared with this - user." + one: "However, %{shared_work_packages_link} has also been shared with this user." + other: "However, %{shared_work_packages_link} have also been shared with this user." however_work_packages_shared_with_group_html: - one: "However, %{shared_work_packages_link} has also been shared with this - group." - other: "However, %{shared_work_packages_link} have also been shared with this - group." - remove_work_packages_shared_with_user_too: "A user that has been removed as - member can still access shared work packages. Would you like to remove - the shares too?" - remove_work_packages_shared_with_group_too: "A group that has been removed as - member can still access shared work packages. Would you like to remove - the shares too?" + one: "However, %{shared_work_packages_link} has also been shared with this group." + other: "However, %{shared_work_packages_link} have also been shared with this group." + remove_work_packages_shared_with_user_too: "A user that has been removed as member can still access shared work packages. Would you like to remove the shares too?" + remove_work_packages_shared_with_group_too: "A group that has been removed as member can still access shared work packages. Would you like to remove the shares too?" will_not_affect_inherited_shares: "(This will not affect work packages shared with their group)." - can_remove_direct_but_not_shared_roles: "You can remove this user as a direct - project member but a group they are in is also a member of this project, - so they will continue being a member via the group." + can_remove_direct_but_not_shared_roles: "You can remove this user as a direct project member but a group they are in is also a member of this project, so they will continue being a member via the group." also_work_packages_shared_with_user_html: one: "Also, %{shared_work_packages_link} has been shared with this user." other: "Also, %{shared_work_packages_link} have been shared with this user." - remove_project_membership_or_work_package_shares_too: "Do you want to remove - just the user as a direct member (and keep the shares) or remove the - work package shares too?" - will_remove_all_user_access_priveleges: "Deleting this member will remove all - access privileges of the user to the project. The user will still exist - as part of the instance." - will_remove_all_group_access_priveleges: "Deleting this member will remove all - access privileges of the group to the project. The group will still - exist as part of the instance." - cannot_delete_inherited_membership: "You cannot delete this member because they - belong to a group that is itself a member of this project." - cannot_delete_inherited_membership_note_admin_html: "You can either remove the - group as a member of the project or this specific member from the group - in the %{administration_settings_link}." - cannot_delete_inherited_membership_note_non_admin: "You can either remove the - group as a member of the project or contact your administrator to remove - this specific member from the group." + remove_project_membership_or_work_package_shares_too: "Do you want to remove just the user as a direct member (and keep the shares) or remove the work package shares too?" + will_remove_all_user_access_priveleges: "Deleting this member will remove all access privileges of the user to the project. The user will still exist as part of the instance." + will_remove_all_group_access_priveleges: "Deleting this member will remove all access privileges of the group to the project. The group will still exist as part of the instance." + cannot_delete_inherited_membership: "You cannot delete this member because they belong to a group that is itself a member of this project." + cannot_delete_inherited_membership_note_admin_html: "You can either remove the group as a member of the project or this specific member from the group in the %{administration_settings_link}." + cannot_delete_inherited_membership_note_non_admin: "You can either remove the group as a member of the project or contact your administrator to remove this specific member from the group." delete_work_package_shares_dialog: title: "Revoke work package shares" shared_with_this_user_html: @@ -1301,24 +1103,15 @@ en: one: "%{all_shared_work_packages_link} has been shared with this group." other: "%{all_shared_work_packages_link} have been shared with this group." shared_with_permission_html: - one: "Only %{shared_work_packages_link} has been shared with %{shared_role_name} - permissions." - other: "Only %{shared_work_packages_link} have been shared with - %{shared_role_name} permissions." - revoke_all_or_with_role: "Would you like to revoke access to all shared work - packages, or only those with %{shared_role_name} permissions?" + one: "Only %{shared_work_packages_link} has been shared with %{shared_role_name} permissions." + other: "Only %{shared_work_packages_link} have been shared with %{shared_role_name} permissions." + revoke_all_or_with_role: "Would you like to revoke access to all shared work packages, or only those with %{shared_role_name} permissions?" will_not_affect_inherited_shares: "(This will not affect work packages shared with their group)." cannot_remove_inherited: "The work packages shares shared via groups cannot be removed." - cannot_remove_inherited_with_role: "The work packages shares with role - %{shared_role_name} are shared via groups and cannot be removed." - cannot_remove_inherited_note_admin_html: "You can either revoke the share to the - group or remove this specific member from the group in the - %{administration_settings_link}." - cannot_remove_inherited_note_non_admin: "You can either revoke the share to the - group or contact your administrator to remove this specific member from - the group." - will_revoke_directly_granted_access: "This action will revoke their access to - all of them, but the work packages shared with a group." + cannot_remove_inherited_with_role: "The work packages shares with role %{shared_role_name} are shared via groups and cannot be removed." + cannot_remove_inherited_note_admin_html: "You can either revoke the share to the group or remove this specific member from the group in the %{administration_settings_link}." + cannot_remove_inherited_note_non_admin: "You can either revoke the share to the group or contact your administrator to remove this specific member from the group." + will_revoke_directly_granted_access: "This action will revoke their access to all of them, but the work packages shared with a group." will_revoke_access_to_all: "This action will revoke their access to all of them." my: @@ -1326,17 +1119,12 @@ en: dialog: token/api: dialog_title: "Create new API token" - attention_text: "Treat API tokens like passwords. Anyone with this token will - have access to information from this instance, share it only with - trusted users." - dialog_body: "This token will allow third-party applications to communicate with - your instance. To differentiate the new API token, please give it a - name." + attention_text: "Treat API tokens like passwords. Anyone with this token will have access to information from this instance, share it only with trusted users." + dialog_body: "This token will allow third-party applications to communicate with your instance. To differentiate the new API token, please give it a name." create_button: "Create" name_label: "Token name" created_dialog: - one_time_warning: "This is the only time you will see this token. Make sure to - copy it now." + one_time_warning: "This is the only time you will see this token. Make sure to copy it now." token/api: title: "The API token has been generated" token/rss: @@ -1345,16 +1133,11 @@ en: failed_to_create_token: "Failed to create access token: %{error}" failed_to_revoke_token: "Failed to revoke access token: %{error}" notice_reset_token: "A new %{type} token has been generated. Your access token is:" - token_value_warning: "Note: This is the only time you will see this token, make - sure to copy it now." + token_value_warning: "Note: This is the only time you will see this token, make sure to copy it now." no_results_title_text: "There are currently no access tokens available." - notice_api_token_revoked: "The API token has been deleted. To create a new token - please use the button in the API section." - notice_rss_token_revoked: "The RSS token has been deleted. To create a new token - please use the link in the RSS section." - notice_ical_token_revoked: "iCalendar token \"%{token_name}\" for calendar - \"%{calendar_name}\" of project \"%{project_name}\" has been revoked. - The iCalendar URL with this token is now invalid." + notice_api_token_revoked: "The API token has been deleted. To create a new token please use the button in the API section." + notice_rss_token_revoked: "The RSS token has been deleted. To create a new token please use the link in the RSS section." + notice_ical_token_revoked: 'iCalendar token "%{token_name}" for calendar "%{calendar_name}" of project "%{project_name}" has been revoked. The iCalendar URL with this token is now invalid.' password_confirmation_dialog: confirmation_required: "You need to enter your account password to confirm this change." title: "Confirm your password to continue" @@ -1391,12 +1174,9 @@ en: browser_session: "(Browser session)" current: "Current (this device)" title: "Session management" - instructions: "You are logged in to your account through the following devices. - Revoke sessions that you do not recognise or from devices you do not - control." + instructions: "You are logged in to your account through the following devices. Revoke sessions that you do not recognise or from devices you do not control." may_not_delete_current: "You cannot delete your current session." - deletion_warning: "Are you sure you want to revoke this session? You will be - logged out on this device." + deletion_warning: "Are you sure you want to revoke this session? You will be logged out on this device." groups: member_in_these_groups: "This user is currently a member of the following groups:" no_results_title_text: This user is currently not a member in any group. @@ -1448,30 +1228,21 @@ en: label: "Role in %{project}" no_roles_found: "No roles were found" description: > - This is the role that the user will receive when they join your - project. The role defines which actions they are allowed to take and - which information they are allowed to see. [Learn more about roles and - permissions.](docs_url) + This is the role that the user will receive when they join your project. The role defines which actions they are allowed to take and which information they are allowed to see. + [Learn more about roles and permissions.](docs_url) required: "Please select a role" message: label: "Invitation message" - description: "We will send an email to the user, to which you can add a personal - message here. An explanation for the invitation could be useful, or - perhaps a bit of information regarding the project to help them get - started." + description: "We will send an email to the user, to which you can add a personal message here. An explanation for the invitation could be useful, or perhaps a bit of information regarding the project to help them get started." summary: next_button: "Send invitation" success_message: - user: "The user can now log in to access %{project}. Meanwhile you can already - plan with that user and assign work packages for instance." - placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you - can already plan with that user and assign work packages for - instance." - group: "The group is now a part of %{project}. Meanwhile you can already plan - with that group and assign work packages for instance." + user: "The user can now log in to access %{project}. Meanwhile you can already plan with that user and assign work packages for instance." + placeholder_user: "The placeholder can now be used in %{project}. Meanwhile you can already plan with that user and assign work packages for instance." + group: "The group is now a part of %{project}. Meanwhile you can already plan with that group and assign work packages for instance." working_hours: current_schedule: title: "Current schedule" @@ -1484,8 +1255,7 @@ en: not_set: "Not set" future: title: "Future schedules" - description: "Plan working schedule changes ahead of time. Once the date arrives - your working schedules will be updated automatically." + description: "Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically." add_button: "Add future schedule" blank_title: "No future schedules planned" blank_description: "Create a future schedule to plan changes ahead of time" @@ -1511,10 +1281,7 @@ en: per_day: "per day" per_week: "per week" total_work_hours: "Total work hours" - availability_description: "The availability factor represents the actual - percentage of your working time dedicated to project tasks. This - accounts for meetings, emails, administrative work, and other - non-project activities." + availability_description: "The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities." availability_factor: "Availability factor" availability_factor_caption: "Define the percentage of your working time dedicated to project work." total_available_hours: "Total available work hours" @@ -1533,27 +1300,23 @@ en: other: "%{count} working days" user_preferences: disable_keyboard_shortcuts_caption: > - You can choose to disable default [keyboard shortcuts](docs_url) if you - use a screen reader or want to avoid accidentally triggering an action - with a shortcut. + You can choose to disable default [keyboard shortcuts](docs_url) if you use a screen reader or want to avoid accidentally triggering an action with a shortcut. page: text: "Text" placeholder_users: right_to_manage_members_missing: > - You are not allowed to delete the placeholder user. You do not have the - right to manage members for all projects that the placeholder user is a - member of. + You are not allowed to delete the placeholder user. + You do not have the right to manage members for all projects that the placeholder user is a member of. delete_tooltip: "Delete placeholder user" deletion_info: heading_html: "Delete placeholder user %{name}" data_consequences: > - All occurrences of the placeholder user (e.g., as assignee, responsible - or other user values) will be reassigned to an account called "Deleted - user". + All occurrences of the placeholder user (e.g., as assignee, responsible or other user values) + will be reassigned to an account called "Deleted user". - As the data of every deleted account is reassigned to this account it - will not be possible to distinguish the data the user created from the - data of another deleted account. + As the data of every deleted account is reassigned to this account + it will not be possible to distinguish the data the user created from + the data of another deleted account. irreversible: "This action is irreversible" confirmation_html: "Enter the placeholder user name %{name} to confirm the deletion." priorities: @@ -1563,8 +1326,7 @@ en: It can be used for highlighting work packages in the table. admin: default: - caption: Making this priority default will override the previous default - priority. + caption: Making this priority default will override the previous default priority. reactions: action_title: "React" @@ -1628,20 +1390,15 @@ en: select_projects_description: Select the projects in which you would like to use this type. settings: tab: "Settings" - type_color_text: The selected color distinguishes different types in Gantt - charts or work packages tables. It is therefore recommended to use a - strong color. + type_color_text: The selected color distinguishes different types in Gantt charts or work packages tables. It is therefore recommended to use a strong color. subject_configuration: tab: "Subject configuration" manually_editable_subjects: label: "Manually editable subjects" - caption: "Users can manually enter and edit work package subjects without - restrictions." + caption: "Users can manually enter and edit work package subjects without restrictions." automatically_generated_subjects: label: "Automatically generated subjects" - caption: "Define a pattern using referenced attributes and text to automatically - generate work package subjects. Users will not be able to manually - edit subjects." + caption: "Define a pattern using referenced attributes and text to automatically generate work package subjects. Users will not be able to manually edit subjects." token: label_with_context: "%{attribute_context}: %{attribute_label}" context: @@ -1650,15 +1407,11 @@ en: project: "Project" pattern: label: "Subject pattern" - caption: Create patterns by adding text, or type "/" to search for [supported - attributes](attributes_url). - insert_as_text: "No attributes found. Add as text: \"%{word}\"" + caption: Create patterns by adding text, or type "/" to search for [supported attributes](attributes_url). + insert_as_text: 'No attributes found. Add as text: "%{word}"' export_configuration: tab: "Generate PDF" - intro: "Select which templates from those that are available you would like to - enable for this type. The template determines the design and - attributes visible in the exported PDF of a work package using this - type. The first template on the list is selected by default." + intro: "Select which templates from those that are available you would like to enable for this type. The template determines the design and attributes visible in the exported PDF of a work package using this type. The first template on the list is selected by default." pdf_export_templates: label: "PDF Export templates" actions: @@ -1667,14 +1420,11 @@ en: versions: overview: - work_packages_in_archived_projects: "The version is shared with archived - projects which still have work packages assigned to this version. These - are counted, but will not appear in the linked views." + work_packages_in_archived_projects: "The version is shared with archived projects which still have work packages assigned to this version. These are counted, but will not appear in the linked views." no_results_title_text: There are currently no work packages assigned to this version. wiki: - page_not_editable_index: The requested page does not (yet) exist. You have been - redirected to the index of all wiki pages. + page_not_editable_index: The requested page does not (yet) exist. You have been redirected to the index of all wiki pages. no_results_title_text: There are currently no wiki pages. print_hint: This will print the content of this wiki page without any navigation bars. @@ -1733,26 +1483,22 @@ en: delete_dialog: title: "Delete work package" heading: "Permanently delete this work package?" - description: "Are you sure you want to delete the work package \"%{name}\"?" - confirm_descendants_deletion: "I acknowledge that ALL descendants of this work - package will be recursively removed." + description: 'Are you sure you want to delete the work package "%{name}"?' + confirm_descendants_deletion: "I acknowledge that ALL descendants of this work package will be recursively removed." cross_project_warning: "Work packages from the following projects will be deleted: %{projects}" bulk_delete_dialog: title: "Delete %{count} work packages" heading: "Permanently delete these %{count} work packages?" - description: "The following work packages, including children and all associated - data, will permanently be deleted:" - description_with_children: "The following work packages, including child work - packages, and all associated data will be permanently deleted:" - confirm_children_deletion: "I acknowledge that all selected work packages and - their children will be permanently deleted." + description: "The following work packages, including children and all associated data, will permanently be deleted:" + description_with_children: "The following work packages, including child work packages, and all associated data will be permanently deleted:" + confirm_children_deletion: "I acknowledge that all selected work packages and their children will be permanently deleted." cross_project_warning: "These work packages span multiple projects: %{projects}" children_label: "The following children will also be deleted:" datepicker_modal: banner: description: automatic_mobile: "Start date derived." - click_on_show_relations_to_open_gantt: "Click on \"%{button_name}\" for Gantt overview." + click_on_show_relations_to_open_gantt: 'Click on "%{button_name}" for Gantt overview.' manual_mobile: "Ignoring relations." manual_gap_between_predecessors: "There is a gap between this and all predecessors." manual_overlap_with_predecessors: "Overlaps with at least one predecessor." @@ -1765,9 +1511,7 @@ en: manually_scheduled: "Manually scheduled. Dates not affected by relations." blankslate: title: "No predecessors" - description: "To enable automatic scheduling, this work package needs to have at - least one predecessor. It will then automatically be scheduled to - start after the closest predecessor." + description: "To enable automatic scheduling, this work package needs to have at least one predecessor. It will then automatically be scheduled to start after the closest predecessor." ignore_non_working_days: title: "Working days only" mode: @@ -1802,38 +1546,25 @@ en: move_failed: "The work packages could not be moved." could_not_be_saved: "The following work packages could not be saved:" none_could_be_saved: "None of the %{total} work packages could be updated." - x_out_of_y_could_be_saved: "%{failing} out of the %{total} work packages could - not be updated while %{success} could." - selected_because_descendants: "While %{selected} work packages were selected, in - total %{total} work packages are affected which includes descendants." + x_out_of_y_could_be_saved: "%{failing} out of the %{total} work packages could not be updated while %{success} could." + selected_because_descendants: "While %{selected} work packages were selected, in total %{total} work packages are affected which includes descendants." descendant: "descendant of selected" move: - no_common_statuses_exists: "There is no status available for all selected work - packages. Their status cannot be changed." - unsupported_for_multiple_projects: "Bulk move/copy is not supported for work - packages from multiple projects" + no_common_statuses_exists: "There is no status available for all selected work packages. Their status cannot be changed." + unsupported_for_multiple_projects: "Bulk move/copy is not supported for work packages from multiple projects" current_type_not_available_in_target_project: > - The current type of the work package is not enabled in the target - project. Please enable the type in the target project if you'd like it - to remain unchanged. Otherwise, select an available type in the target - project from the list. + The current type of the work package is not enabled in the target project. + Please enable the type in the target project if you'd like it to remain unchanged. + Otherwise, select an available type in the target project from the list. bulk_current_type_not_available_in_target_project: > - The current types of the work packages aren't enabled in the target - project. Please enable the types in the target project if you'd like - them to remain unchanged. Otherwise, select an available type in the - target project from the list. + The current types of the work packages aren't enabled in the target project. + Please enable the types in the target project if you'd like them to remain unchanged. + Otherwise, select an available type in the target project from the list. sharing: missing_workflow_warning: title: "Workflow missing for work package sharing" - message: "No workflow is configured for the 'Work package editor' role. Without - a workflow, the shared with user cannot alter the status of the work - package. Workflows can be copied. Select a source type (e.g. 'Task') - and source role (e.g. 'Member'). Then select the target types. To - start with, you could select all the types as targets. Finally, select - the 'Work package editor' role as the target and press 'Copy'. After - having thus created the defaults, fine tune the workflows as you do - for every other role." + message: "No workflow is configured for the 'Work package editor' role. Without a workflow, the shared with user cannot alter the status of the work package. Workflows can be copied. Select a source type (e.g. 'Task') and source role (e.g. 'Member'). Then select the target types. To start with, you could select all the types as targets. Finally, select the 'Work package editor' role as the target and press 'Copy'. After having thus created the defaults, fine tune the workflows as you do for every other role." link_message: "Configure the workflows in the administration." summary: @@ -1874,42 +1605,32 @@ en: label_relates_plural: "related to" label_relates_to_singular: "related to" label_relates_to_plural: "related to" - relates_description: "Creates a visible link between the two work packages with - no additional effect" - relates_to_description: "Creates a visible link between the two work packages - with no additional effect" + relates_description: "Creates a visible link between the two work packages with no additional effect" + relates_to_description: "Creates a visible link between the two work packages with no additional effect" label_precedes_singular: "successor (after)" label_precedes_plural: "successors (after)" - precedes_description: "The related work package necessarily needs to start after - this one finishes" + precedes_description: "The related work package necessarily needs to start after this one finishes" label_follows_singular: "predecessor (before)" label_follows_plural: "predecessors (before)" - follows_description: "The related work package necessarily needs to finish - before this one can start" + follows_description: "The related work package necessarily needs to finish before this one can start" label_child_singular: "child" label_child_plural: "children" new_child: "Create new child" - new_child_description: "Creates a related work package as a sub-item of the - current (parent) work package" + new_child_description: "Creates a related work package as a sub-item of the current (parent) work package" child: "Child" - child_description: "Makes the related work package a sub-item of the current - (parent) work package" + child_description: "Makes the related work package a sub-item of the current (parent) work package" parent: "Parent" - parent_description: "Makes the related work package a parent of the current - (child) work package" + parent_description: "Makes the related work package a parent of the current (child) work package" label_closest: "Closest" label_blocks_singular: "blocks" label_blocks_plural: "blocks" - blocks_description: "The related work package cannot be closed until this one is - closed first" + blocks_description: "The related work package cannot be closed until this one is closed first" label_blocked_singular: "blocked by" label_blocked_plural: "blocked by" label_blocked_by_singular: "blocked by" label_blocked__by_plural: "blocked by" - blocked_description: "This work package cannot be closed until the related one - is closed first" - blocked_by_description: "This work package cannot be closed until the related - one is closed first" + blocked_description: "This work package cannot be closed until the related one is closed first" + blocked_by_description: "This work package cannot be closed until the related one is closed first" label_duplicates_singular: "duplicates" label_duplicates_plural: "duplicates" duplicates_description: "This is a copy of the related work package" @@ -1921,16 +1642,13 @@ en: duplicated_description: "The related work package is a copy of this" label_includes_singular: "includes" label_includes_plural: "includes" - includes_description: "Marks the related work package as including this one with - no additional effect" + includes_description: "Marks the related work package as including this one with no additional effect" label_partof_singular: "part of" label_partof_plural: "part of" label_part_of_singular: "part of" label_part_of_plural: "part of" - partof_description: "Marks the related work package as being part of this one - with no additional effect" - part_of_description: "Marks the related work package as being part of this one - with no additional effect" + partof_description: "Marks the related work package as being part of this one with no additional effect" + part_of_description: "Marks the related work package as being part of this one with no additional effect" label_requires_singular: "requires" label_requires_plural: "requires" requires_description: "Marks the related work package as a requirement to this one" @@ -1948,38 +1666,27 @@ en: account: delete: "Delete account" delete_confirmation: "Are you sure you want to delete the account?" - deletion_pending: "Account has been scheduled for deletion. Note that this - process takes place in the background. It might take a few moments until - the user is fully deleted." + deletion_pending: "Account has been scheduled for deletion. Note that this process takes place in the background. It might take a few moments until the user is fully deleted." deletion_info: data_consequences: - other: "All user-specific data will be deleted. The user's activity in shared - views such as work packages and meetings will not be deleted but - instead be associated with a generic 'Deleted user' that cannot be - linked to the original account." - self: "All user-specific data will be deleted. Your activity in shared views - such as work packages and meetings will not be deleted but instead be - associated with a generic 'Deleted user' that cannot be linked to your - original account." + other: "All user-specific data will be deleted. The user's activity in shared views such as work packages and meetings will not be deleted but instead be associated with a generic 'Deleted user' that cannot be linked to the original account." + self: "All user-specific data will be deleted. Your activity in shared views such as work packages and meetings will not be deleted but instead be associated with a generic 'Deleted user' that cannot be linked to your original account." heading: "Delete %{name}'s account?" login_consequences: - other: "This account will immediately be removed from the system and the user - will no longer be able to log in with their credentials." - self: "Your account will immediately be removed from the system and you will no - longer be able to log in using your credentials." + other: "This account will immediately be removed from the system and the user will no longer be able to log in with their credentials." + self: "Your account will immediately be removed from the system and you will no longer be able to log in using your credentials." error_inactive_activation_by_mail: > - Your account has not yet been activated. To activate your account, click - on the link that was emailed to you. + Your account has not yet been activated. + To activate your account, click on the link that was emailed to you. error_inactive_manual_activation: > - Your account has not yet been activated. Please wait for an administrator - to activate your account. + Your account has not yet been activated. + Please wait for an administrator to activate your account. error_self_registration_disabled: > - User registration is disabled on this system. Please ask an administrator - to create an account for you. + User registration is disabled on this system. Please ask an administrator to create an + account for you. error_self_registration_limited_provider: > - User registration is limited for the Single sign-on provider '%{name}'. - Please ask an administrator to activate the account for you or change the - self registration limit for this provider. + User registration is limited for the Single sign-on provider '%{name}'. Please ask an administrator to activate the + account for you or change the self registration limit for this provider. login_with_auth_provider: "or sign in with your existing account" signup_with_auth_provider: "or sign up using" auth_source_login_html: Please login as %{login} to activate your account. @@ -2008,10 +1715,6 @@ en: jira_import: "Jira Migrator" announcements: show_until: "Display until" - ordered_persisted_query_entity: - persisted_query: "Persisted query" - entity: "Entity" - position: "Position" attachment: attachment_content: "Attachment content" attachment_file_name: "Attachment file name" @@ -2115,25 +1818,6 @@ en: resource: "Resource" oauth_client: client: "Client ID" - persisted_query: - name: "Name" - views: "Views" - filters: "Filters" - orders: "Orders" - selects: "Selects" - persisted_view: - name: "Name" - query: "Query" - parent: "Parent view" - public: "Public" - user_card_view: - secondary_info: "Secondary info" - show_status_badge: "Show status badge" - show_email: "Show email" - tag_source: "Tag source" - tag_limit: "Tag limit" - card_size: "Card size" - columns_per_row: "Columns per row" project: active_value: true: "unarchived" @@ -2299,23 +1983,18 @@ en: dismissed_enterprise_banners: "Hidden enterprise banners" impaired: "Accessibility mode" auto_hide_popups: "Automatically hide success banners" - auto_hide_popups_caption: "When enabled, the green success banners will - automatically disappear after 5 seconds." + auto_hide_popups_caption: "When enabled, the green success banners will automatically disappear after 5 seconds." warn_on_leaving_unsaved: "Warn me when leaving a work package with unsaved changes" increase_theme_contrast: "Increase theme contrast" increase_contrast: "Increase contrast" increase_contrast_caption: "Enables high-contrast mode for the chosen colour mode." force_light_theme_contrast: "Force high-contrast when in Light mode" force_dark_theme_contrast: "Force high-contrast when in Dark mode" - force_light_theme_contrast_caption: "Uses the high-contrast version of Light - mode when automatic color mode is selected." - force_dark_theme_contrast_caption: "Uses the high-contrast version of Dark mode - when automatic color mode is selected." + force_light_theme_contrast_caption: "Uses the high-contrast version of Light mode when automatic color mode is selected." + force_dark_theme_contrast_caption: "Uses the high-contrast version of Dark mode when automatic color mode is selected." theme: "Color mode" time_zone: "Time zone" - mode_guideline: "Some modes will overwrite custom theme colors for accessibility - and legibility. Please select Light mode for full custom theme - support." + mode_guideline: "Some modes will overwrite custom theme colors for accessibility and legibility. Please select Light mode for full custom theme support." daily_reminders: "Daily reminders" workdays: "Working days" users/invitation/form_model: @@ -2390,6 +2069,29 @@ en: type: "Type" version: "Version" watcher: "Watcher" + ordered_persisted_query_entity: + persisted_query: "Persisted query" + entity: "Entity" + position: "Position" + persisted_query: + name: "Name" + views: "Views" + filters: "Filters" + orders: "Orders" + selects: "Selects" + persisted_view: + name: "Name" + query: "Query" + parent: "Parent view" + public: "Public" + user_card_view: + secondary_info: "Secondary info" + show_status_badge: "Show status badge" + show_email: "Show email" + tag_source: "Tag source" + tag_limit: "Tag limit" + card_size: "Card size" + columns_per_row: "Columns per row" errors: messages: @@ -2414,8 +2116,7 @@ en: error_enterprise_only: "%{action} is only available in the OpenProject Enterprise edition." error_unauthorized: "may not be accessed." error_readonly: "was attempted to be written but is not writable." - error_conflict: "Information has been updated by at least one other user in the - meantime." + error_conflict: "Information has been updated by at least one other user in the meantime." error_not_found: "not found." email: "is not a valid email address." empty: "can't be empty." @@ -2472,8 +2173,7 @@ en: unknown_property_nested: "has the unknown path '%{path}'." unremovable: "cannot be removed." url_not_secure_context: > - is not providing a "Secure Context". Either use HTTPS or a loopback - address, such as localhost. + is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost. wrong_length: "is the wrong length (should be %{count} characters)." models: group: @@ -2490,21 +2190,17 @@ en: attributes: content_type: blank: "The content type of the file cannot be blank." - not_allowlisted: "The file was rejected by an automatic filter. '%{value}' is - not allowed for upload." + not_allowlisted: "The file was rejected by an automatic filter. '%{value}' is not allowed for upload." format: "%{message}" capability: context: global: "Global" query: filters: - minimum: "need to include at least one filter for principal, context or id with - the '=' operator." + minimum: "need to include at least one filter for principal, context or id with the '=' operator." custom_field: at_least_one_custom_option: "At least one option needs to be available." - previous_custom_field_recalculation_unprocessed: "The recalculation of previous - changes for this custom field have not been applied yet, please try - again in a few minutes." + previous_custom_field_recalculation_unprocessed: "The recalculation of previous changes for this custom field have not been applied yet, please try again in a few minutes." referenced_in_other_fields_html: one: "%{name} is used in project attribute calculation %{links}." other: "%{name} is used in project attribute calculations: %{links}." @@ -2512,12 +2208,8 @@ en: formula: blank: "Formula can't be blank." invalid: "Formula is invalid." - invalid_characters: "Only numeric values, mathematical operators and project - attributes of type integer, float, calculated value and weighted - list are allowed." - not_allowed_custom_fields_referenced: "The attribute %{custom_fields} cannot be - used because it leads to a circular reference; one attribute - depends on the other." + invalid_characters: "Only numeric values, mathematical operators and project attributes of type integer, float, calculated value and weighted list are allowed." + not_allowed_custom_fields_referenced: "The attribute %{custom_fields} cannot be used because it leads to a circular reference; one attribute depends on the other." format: "%{message}" required: cannot_be_true: "cannot be set to true." @@ -2540,8 +2232,7 @@ en: fragment_present: "cannot contain a fragment." invalid_uri: "must be a valid URI." relative_uri: "must be an absolute URI." - secured_uri: "is not providing a \"Secure Context\". Either use HTTPS or a - loopback address, such as localhost." + secured_uri: 'is not providing a "Secure Context". Either use HTTPS or a loopback address, such as localhost.' forbidden_uri: "is forbidden by the server." scopes: not_match_configured: "doesn't match available scopes." @@ -2550,8 +2241,7 @@ en: failed_to_create: "Trial could not be created (%{status})" general_consent: "Please accept the terms and conditions." enterprise_token: - only_one_trial: "Only one trial token can be active. Please delete the previous - trial token before adding another." + only_one_trial: "Only one trial token can be active. Please delete the previous trial token before adding another." unreadable: "can't be read. Are you sure it is a support token?" already_added: "This token has already been added." favorite: @@ -2566,13 +2256,11 @@ en: blank: "is mandatory. Please select a name." not_unique: "is already in use. Please select another name." meeting: - error_conflict: "Unable to save because the meeting was updated by someone else - in the meantime. Please reload the page." + error_conflict: "Unable to save because the meeting was updated by someone else in the meantime. Please reload the page." message: cannot_move_message_to_forum_of_different_project: "A message cannot be moved to a forum of a different project." notifications: - at_least_one_channel: "At least one channel for sending notifications needs to - be specified." + at_least_one_channel: "At least one channel for sending notifications needs to be specified." attributes: read_ian: read_on_creation: "cannot be set to true on notification creation." @@ -2595,24 +2283,19 @@ en: id_filter_required: "An 'id' filter is required." project: archived_ancestor: "The project has an archived ancestor." - foreign_wps_reference_version: "Work packages in non descendant projects - reference versions of the project or its descendants." + foreign_wps_reference_version: "Work packages in non descendant projects reference versions of the project or its descendants." cannot_be_assigned_to_artifact_work_package: "The chosen user is not allowed to be assigned to work packages." attributes: base: - archive_permission_missing_on_subprojects: "You do not have the permissions - required to archive all sub-projects. Please contact an - administrator." - project_initiation_request_disabled: "Project initiation request is disabled. It - must be enabled to create the artifact work package." + archive_permission_missing_on_subprojects: "You do not have the permissions required to archive all sub-projects. Please contact an administrator." + project_initiation_request_disabled: "Project initiation request is disabled. It must be enabled to create the artifact work package." types: in_use_by_work_packages: "still in use by work packages: %{types}" identifier: must_start_with_letter: "must start with a letter" no_special_characters: "may only contain uppercase letters, numbers, and underscores" enabled_modules: - dependency_missing: "The module '%{dependency}' needs to be enabled as well - since the module '%{module}' depends on it." + dependency_missing: "The module '%{dependency}' needs to be enabled as well since the module '%{module}' depends on it." format: "%{message}" project_custom_field_project_mapping: attributes: @@ -2647,8 +2330,7 @@ en: name_not_included: "The 'Name' column needs to be included" nonexistent: "The column '%{column}' does not exist." format: "%{message}" - group_by_hierarchies_exclusive: "is mutually exclusive with group by - '%{group_by}'. You cannot activate both." + group_by_hierarchies_exclusive: "is mutually exclusive with group by '%{group_by}'. You cannot activate both." can_only_be_modified_by_owner: "The query can only be modified by its owner." need_permission_to_modify_public_query: "You cannot modify a public query." filters: @@ -2668,22 +2350,18 @@ en: circular_dependency: "The relationship creates a circle of relationships." attributes: base: - error_not_deletable: "This relation cannot be deleted because you do not have - edit permissions for the selected work package." - error_not_editable: "This relation cannot be edited because you do not have edit - permissions for the selected work package." + error_not_deletable: "This relation cannot be deleted because you do not have edit permissions for the selected work package." + error_not_editable: "This relation cannot be edited because you do not have edit permissions for the selected work package." to_id: format: "The selected work package %{message}" error_not_found: "could not be found." error_readonly: "cannot be changed for existing relations." - error_not_manageable: "cannot be added because you do not have edit permissions - for the selected work package." + error_not_manageable: "cannot be added because you do not have edit permissions for the selected work package." from_id: format: "The selected work package %{message}" error_not_found: "could not be found." error_readonly: "cannot be changed for existing relations." - error_not_manageable: "cannot be added because you do not have edit permissions - for the selected work package." + error_not_manageable: "cannot be added because you do not have edit permissions for the selected work package." repository: not_available: "SCM vendor is not available" not_whitelisted: "is not allowed by the configuration." @@ -2694,14 +2372,12 @@ en: role: attributes: permissions: - dependency_missing: "need to also include '%{dependency}' as '%{permission}' is - selected." + dependency_missing: "need to also include '%{dependency}' as '%{permission}' is selected." setting: attributes: base: working_days_are_missing: "At least one day of the week must be defined as a working day." - previous_working_day_changes_unprocessed: "The previous changes to the working - days configuration have not been applied yet." + previous_working_day_changes_unprocessed: "The previous changes to the working days configuration have not been applied yet." hours_per_day_are_missing: "The number of hours per day must be defined." durations_are_not_positive_numbers: "The durations must be positive numbers." hours_per_day_is_out_of_bounds: "Hours per day can't be more than 24" @@ -2731,19 +2407,16 @@ en: not_allowed_to_view: "is not allowed to view this resource." locked: "is locked." wiki_page: - error_conflict: "The wiki page has been updated by someone else while you were - editing it." + error_conflict: "The wiki page has been updated by someone else while you were editing it." attributes: slug: undeducible: "cannot be deduced from the title '%{title}'." work_package: - is_not_a_valid_target_for_time_entries: "Work package #%{id} is not a valid - target for reassigning the time entries." + is_not_a_valid_target_for_time_entries: "Work package #%{id} is not a valid target for reassigning the time entries." attributes: id: format: "%{message}" - cannot_add_child_because_of_lack_of_permission: "Cannot add child because you - don't have permissions to edit the selected work package." + cannot_add_child_because_of_lack_of_permission: "Cannot add child because you don't have permissions to edit the selected work package." blank: "ID can't be blank." identifier: semantic_identifier_incomplete: "and sequence_number must both be set at the same time." @@ -2759,10 +2432,8 @@ en: not_start_date: "is not on start date, although this is required for milestones." cannot_be_null: "can not be set to null as start date and duration are known." duration: - larger_than_dates: "is larger than the interval between the start and the finish - date." - smaller_than_dates: "is smaller than the interval between the start and the - finish date." + larger_than_dates: "is larger than the interval between the start and the finish date." + smaller_than_dates: "is smaller than the interval between the start and the finish date." not_available_for_milestones: "is not available for milestone typed work packages." cannot_be_null: "can not be set to null as start date and finish date are known." not_an_integer: "is not a valid duration." @@ -2772,24 +2443,19 @@ en: cannot_be_in_another_project: "cannot be in another project." not_a_valid_parent: "is invalid." schedule_manually: - cannot_be_automatically_scheduled: "cannot be set to false (automatically - scheduled) as it has no predecessors or children." + cannot_be_automatically_scheduled: "cannot be set to false (automatically scheduled) as it has no predecessors or children." start_date: - violates_relationships: "can only be set to %{soonest_start} or later so as not - to violate the work package's relationships." + violates_relationships: "can only be set to %{soonest_start} or later so as not to violate the work package's relationships." cannot_be_null: "can not be set to null as finish date and duration are known." status_id: - status_transition_invalid: "is invalid because no valid transition exists from - old to new status for the current user's roles." - status_invalid_in_type: "is invalid because the current status does not exist in - this type." + status_transition_invalid: "is invalid because no valid transition exists from old to new status for the current user's roles." + status_invalid_in_type: "is invalid because the current status does not exist in this type." type: cannot_be_milestone_due_to_children: "cannot be a milestone because this work package has children." priority_id: only_active_priorities_allowed: "needs to be active." category: - only_same_project_categories_allowed: "The category of a work package must be - within the same project as the work package." + only_same_project_categories_allowed: "The category of a work package must be within the same project as the work package." does_not_exist: "The specified category does not exist." estimated_hours: not_a_number: "is not a valid duration." @@ -2800,50 +2466,42 @@ en: cant_exceed_work: "cannot be higher than Work." must_be_set_when_work_is_set: "required when Work is set." must_be_set_when_work_and_percent_complete_are_set: "required when Work and % Complete are set." - must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: >- + must_be_set_to_zero_hours_when_work_is_set_and_percent_complete_is_100p: + >- must be 0h when Work is set and % Complete is 100%. must_be_empty_when_work_is_empty_and_percent_complete_is_100p: >- must be empty when Work is empty and % Complete is 100%. - readonly_status: "The work package is in a readonly status so its attributes - cannot be changed." + readonly_status: "The work package is in a readonly status so its attributes cannot be changed." type: attributes: attribute_groups: attribute_unknown: "Invalid work package attribute used." attribute_unknown_name: "Invalid work package attribute used: %{attribute}" - duplicate_group: "The group name '%{group}' is used more than once. Group names - must be unique." + duplicate_group: "The group name '%{group}' is used more than once. Group names must be unique." query_invalid: "The embedded query '%{group}' is invalid: %{details}" group_without_name: "Unnamed groups are not allowed." patterns: - invalid_tokens: "One or more attributes inside the field are not valid. Please, - fix the attributes before saving." + invalid_tokens: "One or more attributes inside the field are not valid. Please, fix the attributes before saving." user: attributes: base: - user_limit_reached: "User limit reached. No more accounts can be created on the - current plan." - one_must_be_active: "Admin User cannot be locked/removed. At least one admin - must be active." + user_limit_reached: "User limit reached. No more accounts can be created on the current plan." + one_must_be_active: "Admin User cannot be locked/removed. At least one admin must be active." password_confirmation: confirmation: "Password confirmation does not match password." format: "%{message}" password: - weak: "Must contain characters of the following classes (at least %{min_count} - of %{all_count}): %{rules}" + requirements_not_met: "Must include characters of the following types: %{rules}" lowercase: "lowercase (e.g. 'a')" uppercase: "uppercase (e.g. 'A')" numeric: "numeric (e.g. '1')" special: "special (e.g. '%')" reused: - one: "has been used before. Please choose one that is different from your last - one." - other: "has been used before. Please choose one that is different from your last - %{count}." + one: "has been used before. Please choose one that is different from your last one." + other: "has been used before. Please choose one that is different from your last %{count}." match: confirm: "Confirm new password." - description: "'Password confirmation' should match the input in the 'New - password' field." + description: "'Password confirmation' should match the input in the 'New password' field." status: invalid_on_create: "is not a valid status for new users." user_working_hours: @@ -2860,10 +2518,8 @@ en: principal: unassignable: "cannot be assigned to a project." version: - undeletable_archived_projects: "The version cannot be deleted as it has work - packages attached to it." - undeletable_work_packages_attached: "The version cannot be deleted as it has - work packages attached to it." + undeletable_archived_projects: "The version cannot be deleted as it has work packages attached to it." + undeletable_work_packages_attached: "The version cannot be deleted as it has work packages attached to it." token/named: attributes: token_name: @@ -2950,9 +2606,7 @@ en: header_additional_invalid_fields: one: "Additionally, there was a problem with the following field:" other: "Additionally, there were problems with the following fields:" - field_erroneous_label: "This field is invalid: %{full_errors} - - Please enter a valid value." + field_erroneous_label: "This field is invalid: %{full_errors}\nPlease enter a valid value." messages: must_be_template: "must be template" unsupported_storage_type: "is not a supported storage type." @@ -3121,21 +2775,20 @@ en: heading_reset: "Reset backup token" heading_create: "Create backup token" implications: > - Enabling backups will allow any user with the required permissions and - this backup token to download a backup containing all data of this - OpenProject installation. This includes the data of all other users. + Enabling backups will allow any user with the required permissions and this backup token + to download a backup containing all data of this OpenProject installation. + This includes the data of all other users. info: > You will need to generate a backup token to be able to create a backup. - Each time you want to request a backup you will have to provide this - token. You can delete the backup token to disable backups for this user. + Each time you want to request a backup you will have to provide this token. + You can delete the backup token to disable backups for this user. verification_html: > Enter %{word} to confirm you want to %{action} the backup token. verification_word_reset: reset verification_word_create: create warning: > - When you create a new token you will only be allowed to request a backup - after 24 hours. This is a safety measure. After that you can request a - backup any time using that token. + When you create a new token you will only be allowed to request a backup after + 24 hours. This is a safety measure. After that you can request a backup any time using that token. text_token_deleted: Backup token deleted. Backups are now disabled. error: invalid_token: Invalid or missing backup token @@ -3246,24 +2899,17 @@ en: failure_message: Consent failed, cannot proceed. title: User Consent decline_warning_message: You have declined to consent and have been logged out. - user_has_consented: The user gave their consent to your [configured consent - information text](consent_settings). - not_yet_consented: The user has not yet given their consent to your [configured - consent information text](consent_settings). They will be reminded the - next time they log in. - contact_mail_instructions: Define the mail address that users can reach a data - controller to perform data change or removal requests. + user_has_consented: The user gave their consent to your [configured consent information text](consent_settings). + not_yet_consented: The user has not yet given their consent to your [configured consent information text](consent_settings). They will be reminded the next time they log in. + contact_mail_instructions: Define the mail address that users can reach a data controller to perform data change or removal requests. contact_your_administrator: Please contact your administrator if you want to have your account deleted. contact_this_mail_address: Please contact %{mail_address} if you want to have your account deleted. - text_update_consent_time: Check this box to force users to consent again. Enable - when you have changed the legal aspect of the consent information above. + text_update_consent_time: Check this box to force users to consent again. Enable when you have changed the legal aspect of the consent information above. update_consent_last_time: "Last update of consent: %{update_time}" copy_project: - title: "Copy project \"%{source_project_name}\"" - started: "Started to copy project \"%{source_project_name}\" to - \"%{target_project_name}\". You will be informed by mail as soon as - \"%{target_project_name}\" is available." + title: 'Copy project "%{source_project_name}"' + started: 'Started to copy project "%{source_project_name}" to "%{target_project_name}". You will be informed by mail as soon as "%{target_project_name}" is available.' failed: "Cannot copy project %{source_project_name}" failed_internal: "Copying failed due to an internal error." succeeded: "Created project %{target_project_name}" @@ -3274,10 +2920,8 @@ en: one: "One object of this type" other: "%{count} objects of this type" text: - failed: "Could not copy project \"%{source_project_name}\" to project - \"%{target_project_name}\"." - succeeded: "Copied project \"%{source_project_name}\" to - \"%{target_project_name}\"." + failed: 'Could not copy project "%{source_project_name}" to project "%{target_project_name}".' + succeeded: 'Copied project "%{source_project_name}" to "%{target_project_name}".' source_project_label: "Project copied" copy_options: dependencies_label: "Copy from project" @@ -3285,8 +2929,7 @@ en: create_project: attributes_heading: "Fill in this mandatory information to work on your projects." template_label: "Use template" - template_heading: "Select a project template to work with the most common - project management methods, or create a project from scratch." + template_heading: "Select a project template to work with the most common project management methods, or create a project from scratch." copy_options: dependencies_label: "Copy from template" blank_template: @@ -3295,16 +2938,13 @@ en: blank_description: No description provided. create_portfolio: - template_heading: "Select a portfolio template to work with the most common - project management methods, or create a portfolio from scratch." + template_heading: "Select a portfolio template to work with the most common project management methods, or create a portfolio from scratch." blank_template: label: "Blank portfolio" - description: Start from scratch. Manually add portfolio attributes, members and - modules. + description: Start from scratch. Manually add portfolio attributes, members and modules. create_program: - template_heading: "Select a program template to work with the most common - project management methods, or create a program from scratch." + template_heading: "Select a program template to work with the most common project management methods, or create a program from scratch." blank_template: label: "Blank program" description: Start from scratch. Manually add program attributes, members and modules. @@ -3313,7 +2953,7 @@ en: create_wiki_page_button: "Wiki page" date: - abbr_day_names: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ] + abbr_day_names: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] abbr_month_names: [ ~, @@ -3439,10 +3079,10 @@ en: description_active: "Active?" description_attachment_toggle: "Show/Hide attachments" description_autocomplete: > - This field uses autocomplete. While typing the title of a work package you - will receive a list of possible candidates. Choose one using the arrow up - and arrow down key and select it with tab or enter. Alternatively you can - enter the work package number directly. + This field uses autocomplete. While typing the title of a work + package you will receive a list of possible candidates. Choose one + using the arrow up and arrow down key and select it with tab or + enter. Alternatively you can enter the work package number directly. description_available_columns: "Available Columns" description_choose_project: "Projects" description_compare_from: "Compare from" @@ -3514,14 +3154,10 @@ en: plan_text_html: "Available starting with the %{plan_name}." unlimited: "Unlimited" already_have_token: > - Already have a token? Add it using the button below to upgrade to the - booked Enterprise plan. + Already have a token? Add it using the button below to upgrade to the booked Enterprise plan. hide_banner: "Hide this banner" homescreen_description: > - Enterprise plans extend the Community edition of OpenProject with - additional [Enterprise add-ons](enterprise_url) and professional - support, ideal for organizations running OpenProject in a - mission-critical environment. + Enterprise plans extend the Community edition of OpenProject with additional [Enterprise add-ons](enterprise_url) and professional support, ideal for organizations running OpenProject in a mission-critical environment. homescreen_subline: By upgrading, you will also be supporting an open source project. baseline_comparison: description: Highlight changes made to this list since any point in the past. @@ -3530,26 +3166,18 @@ en: high_security: "Security features" high_security_text: "Single sign on (SAML, OpenID Connect, CAS), LDAP groups." installation: "Installation support" - installation_text: "Experienced software engineers guide you through the - complete installation and setup process in your own infrastructure." + installation_text: "Experienced software engineers guide you through the complete installation and setup process in your own infrastructure." premium_features: "Enterprise add-ons" - premium_features_text: "Agile boards, custom theme and logo, graphs, intelligent - workflows with custom actions, full text search for work package - attachments and multi-select custom fields." + premium_features_text: "Agile boards, custom theme and logo, graphs, intelligent workflows with custom actions, full text search for work package attachments and multi-select custom fields." professional_support: "Professional support" - professional_support_text: "Get reliable, high-touch support from senior support - engineers with expert knowledge about running OpenProject in - business-critical environments." + professional_support_text: "Get reliable, high-touch support from senior support engineers with expert knowledge about running OpenProject in business-critical environments." work_package_subject_generation: - description: "Create automatically generated subjects using referenced - attributes and text." + description: "Create automatically generated subjects using referenced attributes and text." customize_life_cycle: - description: "Create and organize different project phases than the ones - provided by PM2 project cycle planning." + description: "Create and organize different project phases than the ones provided by PM2 project cycle planning." capture_external_links: - description: "Prevent social engineering attacks by capturing and warning about - external links before users visit them." + description: "Prevent social engineering attacks by capturing and warning about external links before users visit them." work_package_query_relation_columns: description: "Need to see relations or child elements in the work package list?" edit_attribute_groups: @@ -3561,111 +3189,80 @@ en: readonly_work_packages: description: "Mark work packages as read-only for specific statuses." custom_field_hierarchies: - description: "Hierarchy custom fields allow organizing hierarchical structures - in work packages and projects by making use of multi-level select - lists." + description: "Hierarchy custom fields allow organizing hierarchical structures in work packages and projects by making use of multi-level select lists." date_alerts: - description: "With date alerts, you will be notified of upcoming start or finish - dates so that you never miss or forget an important deadline." + description: "With date alerts, you will be notified of upcoming start or finish dates so that you never miss or forget an important deadline." weighted_item_lists: - description: "Weighted item lists allow you to create a list with underlying - numeric values associated." + description: "Weighted item lists allow you to create a list with underlying numeric values associated." work_package_sharing: description: "Share work packages with users who are not members of the project." project_list_sharing: description: "Share project lists with individual users." calculated_values: - description: "Calculated values allow you to create a mathematical formula based - attribute using numeric values and other project attributes and custom - fields." + description: "Calculated values allow you to create a mathematical formula based attribute using numeric values and other project attributes and custom fields." define_custom_style: title: "Custom color theme and logo" more_info: "Note: the used logo will be publicly accessible." description: Customize your OpenProject installation with your own logo and colors. custom_actions: title: "Custom actions" - description: "Custom actions are one-click shortcuts to a set of pre-defined - actions that you can make available on certain work packages based on - status, role, type or project." + description: "Custom actions are one-click shortcuts to a set of pre-defined actions that you can make available on certain work packages based on status, role, type or project." mcp_server: description: "Bring OpenProject into your AI workflows with a secure MCP server." meeting_templates: - description: "Define meeting templates with a set agenda structure and save time - by reusing them when creating new meetings." + description: "Define meeting templates with a set agenda structure and save time by reusing them when creating new meetings." nextcloud_sso: title: "Single Sign-On for Nextcloud Storage" - description: "Enable seamless and secure authentication for your Nextcloud - storage with Single Sign-On. Simplify access management and enhance - user convenience." + description: "Enable seamless and secure authentication for your Nextcloud storage with Single Sign-On. Simplify access management and enhance user convenience." scim_api: title: "SCIM clients" - description: "Automate user management in OpenProject by seamlessly integrating - external identity services like Microsoft Entra or Keycloak through - our SCIM Server API. Available starting with the Enterprise corporate - plan." + description: "Automate user management in OpenProject by seamlessly integrating external identity services like Microsoft Entra or Keycloak through our SCIM Server API. Available starting with the Enterprise corporate plan." sso_auth_providers: title: "Single Sign-On (SSO)" - description: "Enable users to log in via external SSO providers using SAML or - OpenID Connect for seamless access and integration with existing - identity systems." + description: "Enable users to log in via external SSO providers using SAML or OpenID Connect for seamless access and integration with existing identity systems." virus_scanning: - description: "Ensure uploaded files in OpenProject are scanned for viruses - before being accessible by other users." + description: "Ensure uploaded files in OpenProject are scanned for viruses before being accessible by other users." project_creation_wizard: - description: "Generate a step-by-step wizard to help project managers fill out a - project initiation request." + description: "Generate a step-by-step wizard to help project managers fill out a project initiation request." placeholder_users: title: Placeholder users description: > - Placeholder users are a way to assign work packages to users who are - not part of your project. They can be useful in a range of scenarios; - for example, if you need to track tasks for a resource that is not yet - named or available, or if you don’t want to give that person access to - OpenProject but still want to track tasks assigned to them. + Placeholder users are a way to assign work packages to users who are not part of your project. + They can be useful in a range of scenarios; for example, if you need to track tasks for a resource that is not yet named or available, + or if you don’t want to give that person access to OpenProject but still want to track tasks assigned to them. internal_comments: title: Internal comments - description: "Internal comments allow an internal team to communicate amongst - themselves privately. These are only visible to certain project roles - and will never be visible publicly." + description: "Internal comments allow an internal team to communicate amongst themselves privately. These are only visible to certain project roles and will never be visible publicly." internal_comments_inline: title: "Write internal comments only a small group can see" description: " " portfolio_management: - description: Align your projects to your strategic goals by organizing them into - portfolios and programs. + description: Align your projects to your strategic goals by organizing them into portfolios and programs. teaser: title: one: "One day left of %{trial_plan} trial token" other: "%{count} days left of %{trial_plan} trial token" description_html: "You have access to all %{trial_plan} features." trial: - not_found: "You have requested a trial token, but that request is no longer - available. Please try again." - wait_for_confirmation: "We sent you an email to confirm your address in order to - retrieve a trial token." + not_found: "You have requested a trial token, but that request is no longer available. Please try again." + wait_for_confirmation: "We sent you an email to confirm your address in order to retrieve a trial token." already_retrieved: > - Your trial enterprise token was already retrieved. Please check your - emails for the token being attached. Please reach out to our support - team if you need a new one. + Your trial enterprise token was already retrieved. Please check your emails for the token being attached. + Please reach out to our support team if you need a new one. successfully_saved: "Your trial enterprise token has been successfully retrieved." token_sent: "Trial token requested" request_again: "Request again" resend_action: "Resend confirmation email" welcome_title: "Quick feature overview" - welcome_description: "Get a quick overview of project management and team - collaboration with OpenProject Enterprise edition." + welcome_description: "Get a quick overview of project management and team collaboration with OpenProject Enterprise edition." confirmation_info: > - We sent you an email on %{date} to %{email} with all the information to - start the free trial of OpenProject Enterprise. Please check your inbox - and click the confirmation link provided to start your 14-day free - trial. + We sent you an email on %{date} to %{email} with all the information to start the free trial of OpenProject Enterprise. + Please check your inbox and click the confirmation link provided to start your 14-day free trial. confirmation_subline: > - Please, check your inbox and follow the steps to start your 14-day free - trial. + Please, check your inbox and follow the steps to start your 14-day free trial. domain_caption: The token will be valid for your currently configured host name. receive_newsletter: "I want to receive the OpenProject [newsletter](newsletter_url)." - consent: "I agree with the [terms of service](tos_url) and the [privacy - policy](privacy_url)." + consent: "I agree with the [terms of service](tos_url) and the [privacy policy](privacy_url)." email_calendar_updates: state: @@ -3689,17 +3286,10 @@ en: error_can_not_archive_project: "This project cannot be archived: %{errors}" error_can_not_delete_entry: "Unable to delete entry" error_can_not_delete_custom_field: "Unable to delete custom field" - error_can_not_delete_in_use_archived_undisclosed: "There are also work packages - in archived projects. You need to ask an administrator to perform the - deletion to see which projects are affected." - error_can_not_delete_in_use_archived_work_packages: "There are also work - packages in archived projects. You need to reactivate the following projects - first, before you can change the attribute of the respective work packages: - %{archived_projects_urls}" + error_can_not_delete_in_use_archived_undisclosed: "There are also work packages in archived projects. You need to ask an administrator to perform the deletion to see which projects are affected." + error_can_not_delete_in_use_archived_work_packages: "There are also work packages in archived projects. You need to reactivate the following projects first, before you can change the attribute of the respective work packages: %{archived_projects_urls}" error_can_not_delete_type: - explanation: "This type contains work packages and cannot be deleted. You can - see all affected work packages in this view." + explanation: 'This type contains work packages and cannot be deleted. You can see all affected work packages in this view.' error_can_not_delete_standard_type: "Standard types cannot be deleted." error_can_not_invite_user: "Failed to send invitation to user." error_can_not_remove_role: "This role is in use and cannot be deleted." @@ -3709,59 +3299,36 @@ en: error_check_user_and_role: "Please choose a user and a role." error_code: "Error %{code}" error_color_could_not_be_saved: "Color could not be saved" - error_cookie_missing: "The OpenProject cookie is missing. Please ensure that - cookies are enabled, as this application will not properly function - without." + error_cookie_missing: "The OpenProject cookie is missing. Please ensure that cookies are enabled, as this application will not properly function without." error_custom_option_not_found: "Option does not exist." error_enterprise_plan_needed: "You need the %{plan} enterprise plan to perform this action." - error_enterprise_activation_user_limit: "Your account could not be activated - (user limit reached). Please contact your administrator to gain access." - error_enterprise_token_invalid_domain: "The Enterprise edition is not active. - Your Enterprise token's domain (%{actual}) does not match the system's host - name (%{expected})." + error_enterprise_activation_user_limit: "Your account could not be activated (user limit reached). Please contact your administrator to gain access." + error_enterprise_token_invalid_domain: "The Enterprise edition is not active. Your Enterprise token's domain (%{actual}) does not match the system's host name (%{expected})." error_failed_to_delete_entry: "Failed to delete this entry." - error_in_dependent: "Error attempting to alter dependent object: - %{dependent_class} #%{related_id} - %{related_subject}: %{error}" - error_in_new_dependent: "Error attempting to create dependent object: - %{dependent_class} - %{related_subject}: %{error}" + error_in_dependent: "Error attempting to alter dependent object: %{dependent_class} #%{related_id} - %{related_subject}: %{error}" + error_in_new_dependent: "Error attempting to create dependent object: %{dependent_class} - %{related_subject}: %{error}" error_invalid_selected_value: "Invalid selected value." error_journal_attribute_not_present: "Journal does not contain attribute %{attribute}." - error_pdf_export_too_many_columns: "Too many columns selected for the PDF - export. Please reduce the number of columns." - error_pdf_date_range_too_long: "The selected work package date range exceeds the - allowable PDF export limit. Please condense the range to a maximum of - %{years} years." + error_pdf_export_too_many_columns: "Too many columns selected for the PDF export. Please reduce the number of columns." + error_pdf_date_range_too_long: "The selected work package date range exceeds the allowable PDF export limit. Please condense the range to a maximum of %{years} years." error_pdf_failed_to_export: "The PDF export could not be saved: %{error}" - error_token_authenticity: "Unable to verify Cross-Site Request Forgery token. - Did you try to submit data on multiple browsers or tabs? Please close all - tabs and try again." + error_token_authenticity: "Unable to verify Cross-Site Request Forgery token. Did you try to submit data on multiple browsers or tabs? Please close all tabs and try again." error_reminder_not_found: "The reminder was not found or was already notified about." error_work_package_not_found_in_project: "The work package was not found or does not belong to this project" error_work_package_id_not_found: "The work package was not found." error_must_be_project_member: "must be project member" - error_migrations_are_pending: "Your OpenProject installation has pending - database migrations. You have likely missed running the migrations on your - last upgrade. Please check the upgrade guide to properly upgrade your - installation." + error_migrations_are_pending: "Your OpenProject installation has pending database migrations. You have likely missed running the migrations on your last upgrade. Please check the upgrade guide to properly upgrade your installation." error_migrations_visit_upgrade_guides: "Please visit our upgrade guide documentation" - error_no_default_work_package_status: "No default work package status is - defined. Please check your configuration (Go to \"Administration -> Work - package statuses\")." + error_no_default_work_package_status: 'No default work package status is defined. Please check your configuration (Go to "Administration -> Work package statuses").' error_no_type_in_project: "No type is associated to this project. Please check the Project settings." - error_omniauth_registration_timed_out: "The registration via an external - authentication provider timed out. Please try again." - error_omniauth_invalid_auth: "The authentication information returned from the - identity provider was invalid. Please contact your administrator for further - help." + error_omniauth_registration_timed_out: "The registration via an external authentication provider timed out. Please try again." + error_omniauth_invalid_auth: "The authentication information returned from the identity provider was invalid. Please contact your administrator for further help." error_password_change_failed: "An error occurred when trying to change the password." error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" error_scm_not_found: "The entry or revision was not found in the repository." error_type_could_not_be_saved: "Type could not be saved" - error_unable_delete_status: "The work package status cannot be deleted since it - is used by at least one work package." - error_unable_delete_default_status: "Unable to delete the default work package - status. Please select another default work package status before deleting - the current one." + error_unable_delete_status: "The work package status cannot be deleted since it is used by at least one work package." + error_unable_delete_default_status: "Unable to delete the default work package status. Please select another default work package status before deleting the current one." error_unable_to_connect: "Unable to connect (%{value})" error_unable_delete_wiki: "Unable to delete the wiki page." error_unable_update_wiki: "Unable to update the wiki page." @@ -3770,9 +3337,8 @@ en: error_menu_item_not_created: Menu item could not be added error_menu_item_not_saved: Menu item could not be saved error_wiki_root_menu_item_conflict: > - Can't rename "%{old_name}" to "%{new_name}" due to a conflict in the - resulting menu item with the existing menu item "%{existing_caption}" - (%{existing_identifier}). + Can't rename "%{old_name}" to "%{new_name}" due to a conflict in the resulting menu item + with the existing menu item "%{existing_caption}" (%{existing_identifier}). error_external_authentication_failed_message: "An error occurred during external authentication: %{message}" error_attribute_not_highlightable: "Attribute(s) not highlightable: %{attributes}" @@ -3811,14 +3377,9 @@ en: label: "XLS" columns: input_label_report: "Add columns to attribute table" - input_caption_report: "By default all attributes added as columns in the work - package list are selected. Long text fields are not available in the - attribute table, but can be displayed below it." - input_caption_table: "By default all attributes added as columns in the work - package list are selected. Long text fields are not available in table - based exports." - input_caption_required: "It is not possible to export the view without any - column. Please add at least one column." + input_caption_report: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in the attribute table, but can be displayed below it." + input_caption_table: "By default all attributes added as columns in the work package list are selected. Long text fields are not available in table based exports." + input_caption_required: "It is not possible to export the view without any column. Please add at least one column." pdf: export_type: label: "PDF export type" @@ -3828,8 +3389,7 @@ en: caption: "Export the work packages list in a table with the desired columns." report: label: "Report" - caption: "Export the work package on a detailed report of all work packages in - the list." + caption: "Export the work package on a detailed report of all work packages in the list." gantt: label: "Gantt chart" caption: "Export the work packages list in a Gantt diagram view." @@ -3862,23 +3422,20 @@ en: xls: include_relations: label: "Include relations" - caption: "This option will create a duplicate of each work package for every - relation this has with another work package." + caption: "This option will create a duplicate of each work package for every relation this has with another work package." include_descriptions: label: "Include descriptions" caption: "This option will add a description column in raw format." your_work_packages_export: "Work packages are being exported" your_projects_export: "Projects are being exported" succeeded: "Export completed" - failed: "An error has occurred while trying to export the work packages: - %{message}" + failed: "An error has occurred while trying to export the work packages: %{message}" demo: heading: "Demo PDF" footer: "Generated by OpenProject" button_text: Generate Demo PDF errors: - embedded_table_with_too_many_columns: "This embedded work package table could - not fit on the page, please reduce the number of columns." + embedded_table_with_too_many_columns: "This embedded work package table could not fit on the page, please reduce the number of columns." format: atom: "Atom" csv: "CSV" @@ -3902,8 +3459,7 @@ en: page_nr_footer: "Page %{page} of %{total}" template_attributes: label: "Attributes and description" - caption: All the attributes present in the current form configuration using the - default template. + caption: All the attributes present in the current form configuration using the default template. template_contract: label: "Contract" caption: Work package details formatted to the standard German contract form. @@ -3984,8 +3540,7 @@ en: new_features_title: > The release contains various new features and improvements, such as: new_features_list: - line_0: "Big Agile update: dedicated sprint objects, all work packages visible - on Backlogs, and automatic sprint board creation." + line_0: "Big Agile update: dedicated sprint objects, all work packages visible on Backlogs, and automatic sprint board creation." line_1: In-place editing of project attributes on the Project Overview page. line_2: Sharing of meeting templates (Basic plan and higher). line_3: Better search in Time and Costs, Boards, and more. @@ -4021,9 +3576,7 @@ en: system_update: "OpenProject system update:" work_package_duplicate_closed: "Duplicate work package updated:" total_percent_complete_mode_changed_to_work_weighted_average: "Calculation of % Complete totals now weighted by Work." - total_percent_complete_mode_changed_to_simple_average: "Calculation of % - Complete totals now based on a simple average of only % Complete - values." + total_percent_complete_mode_changed_to_simple_average: "Calculation of % Complete totals now based on a simple average of only % Complete values." cause_descriptions: import: header: "changes by %{author}" @@ -4038,8 +3591,7 @@ en: work_package_parent_changed_times: by changes to parent %{link} work_package_children_changed_times: by changes to child %{link} work_package_related_changed_times: by changes to related %{link} - work_package_duplicate_closed: The status was automatically updated by the - duplicated work package %{link} + work_package_duplicate_closed: The status was automatically updated by the duplicated work package %{link} unaccessable_work_package_changed: by changes to a related work package budget_deleted: Budget has been deleted working_days_changed: @@ -4056,21 +3608,16 @@ en: status_percent_complete_changed: "% Complete changed from %{old_value}% to %{new_value}%" system_update: file_links_journal: > - From now on, activity related to file links (files stored in external - storages) will appear here in the Activity tab. The following - represent activity concerning links that already existed: + From now on, activity related to file links (files stored in external storages) will appear here in the + Activity tab. The following represent activity concerning links that already existed: progress_calculation_adjusted_from_disabled_mode: >- - Progress calculation automatically set to work-based mode and adjusted with version - update. + Progress calculation automatically set to work-based mode and adjusted with version update. progress_calculation_adjusted: >- - Progress calculation automatically adjusted with version update. + Progress calculation automatically adjusted with version update. scheduling_mode_adjusted: >- Scheduling mode automatically adjusted with version update. totals_removed_from_childless_work_packages: >- - Work and progress totals automatically removed for non-parent work - packages with version update. + Work and progress totals automatically removed for non-parent work packages with version update. This is a maintenance task and can be safely ignored. sprint_migration: "Version '%{version_name}' has been copied as a sprint." total_percent_complete_mode_changed_to_work_weighted_average: >- @@ -4081,11 +3628,9 @@ en: configuration_guide: "Configuration guide" get_in_touch: "You have questions? Get in touch with us." - instructions_after_registration_link: "You can sign in as soon as your account - has been activated by clicking [here](signin_url)." + instructions_after_registration_link: "You can sign in as soon as your account has been activated by clicking [here](signin_url)." instructions_after_logout_link: "You can sign in again by clicking [here](signin_url)." - instructions_after_error_link: "You can try to sign in again by clicking - [here](signin_url). If the error persists, ask your admin for help." + instructions_after_error_link: "You can try to sign in again by clicking [here](signin_url). If the error persists, ask your admin for help." menus: admin: @@ -4105,13 +3650,10 @@ en: notifications: "Notification settings" email_reminders: "Email reminders" access_tokens: - description: "Provider tokens are issued by OpenProject, allowing other - applications to access it. Client tokens are issued by other - applications, allowing OpenProject to access them." + description: "Provider tokens are issued by OpenProject, allowing other applications to access it. Client tokens are issued by other applications, allowing OpenProject to access them." no_results: title: "No access tokens to display" - description: "All of them have been disabled. They can be re-enabled in the - administration menu." + description: "All of them have been disabled. They can be re-enabled in the administration menu." access_tokens: "Access tokens" headers: action: "Action" @@ -4128,46 +3670,34 @@ en: blank_title: "No API token" title: "API" table_title: "API tokens" - text_hint: "API tokens allow third-party applications to communicate with this - OpenProject instance via REST APIs." + text_hint: "API tokens allow third-party applications to communicate with this OpenProject instance via REST APIs." static_token_name: "API token" - disabled_text: "API tokens are not enabled by the administrator. Please contact - your administrator to use this feature." + disabled_text: "API tokens are not enabled by the administrator. Please contact your administrator to use this feature." add_button: "API token" ical: - blank_description: "To add an iCalendar token, subscribe to a new or existing - calendar from within the Calendar module of a project. You must have - the necessary permissions." + blank_description: "To add an iCalendar token, subscribe to a new or existing calendar from within the Calendar module of a project. You must have the necessary permissions." blank_title: "No iCalendar token" title: "iCalendar" table_title: "iCalendar tokens" - text_hint_link: "iCalendar tokens allow users to [subscribe to OpenProject - calendars](docs_url) and view up-to-date work package information from - external clients." - disabled_text: "iCalendar subscriptions are not enabled by the administrator. - Please contact your administrator to use this feature." + text_hint_link: "iCalendar tokens allow users to [subscribe to OpenProject calendars](docs_url) and view up-to-date work package information from external clients." + disabled_text: "iCalendar subscriptions are not enabled by the administrator. Please contact your administrator to use this feature." oauth_application: active_tokens: "Active tokens" - blank_description: "There is no third-party application access configured and - active for you." + blank_description: "There is no third-party application access configured and active for you." blank_title: "No OAuth application token" last_refreshed_at: "Last refreshed at" title: "OAuth" table_title: "OAuth application tokens" - text_hint: "OAuth application tokens allow third-party applications to connect - with this OpenProject instance." + text_hint: "OAuth application tokens allow third-party applications to connect with this OpenProject instance." oauth_client: blank_description: "There are no OAuth client tokens yet." blank_title: "No OAuth client tokens" - failed: "An error occurred and the token couldn't be removed. Please try again - later." + failed: "An error occurred and the token couldn't be removed. Please try again later." integration_type: "Integration type" table_title: "OAuth client tokens" - text_hint: "OAuth client tokens allow this OpenProject instance to connect with - external applications, such as file storages." + text_hint: "OAuth client tokens allow this OpenProject instance to connect with external applications, such as file storages." title: "OAuth" - remove_token: "Do you really want to remove this token? You will need to login - again on %{integration}." + remove_token: "Do you really want to remove this token? You will need to login again on %{integration}." removed: "OAuth client token successfully removed" unknown_integration: "Unknown" token/rss: @@ -4176,11 +3706,9 @@ en: blank_title: "No RSS token" title: "RSS" table_title: "RSS tokens" - text_hint: "RSS tokens allow users to keep up with the latest changes in this - OpenProject instance via an external RSS reader." + text_hint: "RSS tokens allow users to keep up with the latest changes in this OpenProject instance via an external RSS reader." static_token_name: "RSS token" - disabled_text: "RSS tokens are not enabled by the administrator. Please contact - your administrator to use this feature." + disabled_text: "RSS tokens are not enabled by the administrator. Please contact your administrator to use this feature." storages: unknown_storage: "Unknown storage" email_reminders: @@ -4190,9 +3718,7 @@ en: personal_reminder: "Notify me for personal reminders" daily_reminders: title: "Send me daily email reminders for unread notifications" - caption: "You will receive these reminders only for unread notifications and - only at hours you specify. Until you configure a time zone for your - account, the times will be interpreted to be in UTC." + caption: "You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC." enabled: "Enable daily email reminders" add_time: "Add time" remove_time: "Remove time" @@ -4304,10 +3830,7 @@ en: label_additional_workflow_transitions_for_author: "Additional transitions allowed when the user is the author" label_administration: "Administration" label_interface_colors: "Interface colors" - label_interface_colors_description: "These colors control how the application - looks. If you modify them the theme will automatically be changed to Custom - theme, but we can’t assure the compliance of the accessibility contrast - minimums (WCAG 2.1). " + label_interface_colors_description: "These colors control how the application looks. If you modify them the theme will automatically be changed to Custom theme, but we can’t assure the compliance of the accessibility contrast minimums (WCAG 2.1). " label_age: "Age" label_ago: "days ago" label_all: "all" @@ -4323,8 +3846,7 @@ en: label_api_access_key_type: "API" label_auto_option: "(auto)" label_ical_access_key_type: "iCalendar" - label_ical_access_key_description: "iCalendar token \"%{token_name}\" for - \"%{calendar_name}\" in \"%{project_name}\"" + label_ical_access_key_description: 'iCalendar token "%{token_name}" for "%{calendar_name}" in "%{project_name}"' label_ical_access_key_not_present: "iCalendar token(s) not present." label_ical_access_key_generation_hint: "Automatically generated when subscribing to a calendar." label_ical_access_key_latest: "latest" @@ -4434,9 +3956,7 @@ en: label_custom_field_plural: "Custom fields" label_custom_field_default_type: "Empty type" label_custom_style: "Design" - label_custom_style_description: "Choose how OpenProject looks to you with - themes, select your default colors to use in the app and how exports look - like." + label_custom_style_description: "Choose how OpenProject looks to you with themes, select your default colors to use in the app and how exports look like." label_dashboard: "Dashboard" label_database_version: "PostgreSQL version" label_date: "Date" @@ -4625,11 +4145,9 @@ en: label_custom_touch_icon: "Custom touch icon" label_departments: "Organization" label_departments_description_html: > - Define your company’s structure by creating departments and sub-departments - in a hierarchical way. This allows you to reflect reporting lines and - maintain a clear, structured overview of your organization within - OpenProject. You can also import an existing organization structure through - [LDAP group synchronisation](ldap_docs_article). + Define your company’s structure by creating departments and sub-departments in a hierarchical way. This allows you + to reflect reporting lines and maintain a clear, structured overview of your organization within OpenProject. You + can also import an existing organization structure through [LDAP group synchronisation](ldap_docs_article). label_logout: "Sign out" label_mapping_for: "Mapping for: %{attribute}" label_main_menu: "Side Menu" @@ -4727,9 +4245,8 @@ en: label_overview: "Overview" label_page_title: "Page title" label_parent_group_caption: > - Setting a parent group will make this group a subgroup of the selected - parent group. This will also inherit all memberships, including permissions - of the parent group. + Setting a parent group will make this group a subgroup of the selected parent group. + This will also inherit all memberships, including permissions of the parent group. label_part_of: "part of" label_password_lost: "Forgot your password?" label_password_rule_lowercase: "Lowercase" @@ -5025,8 +4542,7 @@ en: label_global_role: "Global role" label_not_changeable: "(not changeable)" label_global: "Global" - label_seeded_from_env_warning: This record has been created through a setting - environment variable. It is not editable through UI. + label_seeded_from_env_warning: This record has been created through a setting environment variable. It is not editable through UI. label_schedule_and_availability: "Schedule and availability" label_working_hours: "Work schedule" label_non_working_days: "Availability calendar" @@ -5050,9 +4566,7 @@ en: errors: missing_or_invalid_parameter: "Missing or invalid macro parameter." legacy_warning: - timeline: "This legacy timeline macro has been removed and is no longer - available. You can replace the functionality with an embedded table - macro." + timeline: "This legacy timeline macro has been removed and is no longer available. You can replace the functionality with an embedded table macro." include_wiki_page: removed: "The macro does no longer exist." wiki_child_pages: @@ -5109,50 +4623,38 @@ en: note: "Note: “%{note}”" sharing: work_packages: - allowed_actions_html: "You may %{allowed_actions} this work package. This can - change depending on your project role and permissions." - create_account: "To access this work package, you will need to create and - activate an account on %{instance}." + allowed_actions_html: "You may %{allowed_actions} this work package. This can change depending on your project role and permissions." + create_account: "To access this work package, you will need to create and activate an account on %{instance}." open_work_package: "Open work package" subject: "Work package #%{id} was shared with you" enterprise_text: "Share work packages with users who are not members of the project." summary: user: "%{user} shared a work package with you with %{role_rights} rights" - group: "%{user} shared a work package with the group %{group} you are a member - of" + group: "%{user} shared a work package with the group %{group} you are a member of" storages: health: plaintext: storage: "Storage" healthy: - summary: "Good news! The status of your storage, %{storage_name}, is currently - displaying as \"Healthy\"." + summary: 'Good news! The status of your storage, %{storage_name}, is currently displaying as "Healthy".' error-solved-on: "Solved On" - recommendation: "We will continue monitoring the system to ensure it remains in - good health. In case of any discrepancies, we will notify you." - details: "For more details or to make any necessary amendments, you can visit - your storage configuration" + recommendation: "We will continue monitoring the system to ensure it remains in good health. In case of any discrepancies, we will notify you." + details: "For more details or to make any necessary amendments, you can visit your storage configuration" unhealthy: - summary: "The status of your storage, %{storage_name}, is currently displaying - as \"Error\". We've detected an issue that might require your - attention." + summary: 'The status of your storage, %{storage_name}, is currently displaying as "Error". We''ve detected an issue that might require your attention.' error-details: "Error Details" error-message: "Error Message" error-occurred-on: "Occurred On" - recommendation: "We recommend heading over to the storage configuration page to - address this issue" - unsubscribe: "If you would no longer like to receive these notifications, you - can unsubscribe at any time. To unsubscribe, please follow the - instructions on this page" + recommendation: "We recommend heading over to the storage configuration page to address this issue" + unsubscribe: "If you would no longer like to receive these notifications, you can unsubscribe at any time. To unsubscribe, please follow the instructions on this page" email_notification_settings: "Storage email notification settings" see_storage_settings: "See storage settings" healthy: - subject: "Storage \"%{name}\" is now healthy!" + subject: 'Storage "%{name}" is now healthy!' solved_at: "solved at" - summary: "The problem with your %{storage_name} storage integration is now - solved" + summary: "The problem with your %{storage_name} storage integration is now solved" unhealthy: - subject: "Storage \"%{name}\" is unhealthy!" + subject: 'Storage "%{name}" is unhealthy!' since: "since" summary: "There is a problem with your %{storage_name} storage integration" troubleshooting: @@ -5173,13 +4675,9 @@ en: mail_body_lost_password: "To change your password, click on the following link:" mail_password_change_not_possible: title: "Password change not possible" - body: "Your account at %{app_title} is connected to an external authentication - provider (%{name})." - subtext: "Passwords for external account cannot be changed in the application. - Please use the lost password functionality of your authentication - provider." - mail_body_register: "Welcome to %{app_title}. Please activate your account by - clicking on this link:" + body: "Your account at %{app_title} is connected to an external authentication provider (%{name})." + subtext: "Passwords for external account cannot be changed in the application. Please use the lost password functionality of your authentication provider." + mail_body_register: "Welcome to %{app_title}. Please activate your account by clicking on this link:" mail_body_register_header_title: "Project member invitation email" mail_body_register_user: "Dear %{name}, " mail_body_register_links_html: | @@ -5189,10 +4687,8 @@ en: If you have any further questions, consult our documentation (%{documentation_link}) or contact your administrator. mail_body_register_closing: "Your OpenProject team" mail_body_register_ending: "Stay connected! Kind regards," - mail_body_reminder: "%{count} work package(s) that are assigned to you are due - in the next %{days} days:" - mail_body_group_reminder: "%{count} work package(s) that are assigned to group - \"%{group}\" are due in the next %{days} days:" + mail_body_reminder: "%{count} work package(s) that are assigned to you are due in the next %{days} days:" + mail_body_group_reminder: '%{count} work package(s) that are assigned to group "%{group}" are due in the next %{days} days:' mail_body_wiki_page_added: "The '%{id}' wiki page has been added by %{author}." mail_body_wiki_page_updated: "The '%{id}' wiki page has been updated by %{author}." mail_subject_account_activation_request: "%{value} account activation request" @@ -5217,8 +4713,7 @@ en: body: updated_by: without_message: "%{user} updated the roles you have in the project '%{project}'." - with_message: "%{user} updated the roles you have in the project '%{project}' - writing:" + with_message: "%{user} updated the roles you have in the project '%{project}' writing:" roles: "You now have the following roles:" mail_member_updated_global: @@ -5250,30 +4745,24 @@ en: notice_account_already_activated: The account has already been activated. notice_account_invalid_token: Invalid activation token notice_account_invalid_credentials: "Invalid user or password" - notice_account_invalid_credentials_or_blocked: "Invalid user or password or the - account is blocked due to multiple failed login attempts. If so, it will be - unblocked automatically in a short time." + notice_account_invalid_credentials_or_blocked: "Invalid user or password or the account is blocked due to multiple failed login attempts. If so, it will be unblocked automatically in a short time." notice_account_lost_email_sent: "An email with instructions to choose a new password has been sent to you." notice_account_new_password_forced: "A new password is required." notice_account_password_expired: "Your password expired after %{days} days. Please set a new one." notice_account_password_updated: "Password was successfully updated." notice_account_pending: "Your account was created and is now pending administrator approval." - notice_account_register_done: "Account was successfully created. To activate - your account, click on the link that was emailed to you." + notice_account_register_done: "Account was successfully created. To activate your account, click on the link that was emailed to you." notice_account_unknown_email: "Unknown user." - notice_account_update_failed: "Account setting could not be saved. Please have a - look at your account page." + notice_account_update_failed: "Account setting could not be saved. Please have a look at your account page." notice_account_updated: "Account was successfully updated." notice_account_other_session_expired: "All other sessions tied to your account have been invalidated." notice_account_wrong_password: "Wrong password" notice_account_registered_and_logged_in: "Welcome, your account has been activated. You are logged in now." notice_activation_failed: The account could not be activated. notice_auth_stage_verification_error: "Could not verify stage '%{stage}'." - notice_auth_stage_wrong_stage: "Expected to finish authentication stage - '%{expected}', but '%{actual}' returned." + notice_auth_stage_wrong_stage: "Expected to finish authentication stage '%{expected}', but '%{actual}' returned." notice_auth_stage_error: "Authentication stage '%{stage}' failed." - notice_can_t_change_password: "This account uses an external authentication - source. Impossible to change the password." + notice_can_t_change_password: "This account uses an external authentication source. Impossible to change the password." notice_custom_options_deleted: "Option '%{option_value}' and its %{num_deleted} occurrences were deleted." notice_email_error: "An error occurred while sending mail (%{value})" notice_email_sent: "An email was sent to %{value}" @@ -5282,20 +4771,13 @@ en: notice_deletion_scheduled: "The deletion has been scheduled and is performed asynchronously." notice_file_not_found: "The page you were trying to access doesn't exist or has been removed." - notice_forced_logout: "You have been automatically logged out after %{ttl_time} - minutes of inactivity." - notice_internal_server_error: "An error occurred on the page you were trying to - access. If you continue to experience problems please contact your - %{app_title} administrator for assistance." + notice_forced_logout: "You have been automatically logged out after %{ttl_time} minutes of inactivity." + notice_internal_server_error: "An error occurred on the page you were trying to access. If you continue to experience problems please contact your %{app_title} administrator for assistance." notice_locking_conflict: "Information has been updated by at least one other user in the meantime." notice_locking_conflict_additional_information: "The update(s) came from %{users}." notice_locking_conflict_reload_page: "Please reload the page, review the changes and reapply your updates." - notice_locking_conflict_warning: "This page has been updated by someone else. To - not lose your edits, copy them locally and reload to view the updated - version." - notice_locking_conflict_danger: "Could not save your changes because of - conflicting modifications. To not lose your edits, copy them locally and - reload to view the updated version." + notice_locking_conflict_warning: "This page has been updated by someone else. To not lose your edits, copy them locally and reload to view the updated version." + notice_locking_conflict_danger: "Could not save your changes because of conflicting modifications. To not lose your edits, copy them locally and reload to view the updated version." notice_locking_conflict_action_button: "Discard changes and reload" notice_member_added: Added %{name} to the project. notice_members_added: Added %{number} users to the project. @@ -5307,13 +4789,12 @@ en: notice_not_authorized_archived_project: "The project you're trying to access has been archived." notice_requires_enterprise_token: "Enterprise token missing or doesn't allow access to this page." notice_password_confirmation_failed: "The entered password is not correct." - notice_principals_found_multiple: "There are %{number} results found. Tab to focus the first result." - notice_principals_found_single: "There is one result. Tab to focus it." + notice_principals_found_multiple: "There are %{number} results found. \n Tab to focus the first result." + notice_principals_found_single: "There is one result. \n Tab to focus it." notice_parent_item_not_found: "Parent item not found." notice_project_not_deleted: "The project wasn't deleted." notice_project_not_found: "Project not found." - notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. - Please add it to the whitelist using the %{env_name} environment variable." + notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable." notice_successful_connection: "Successful connection." notice_successful_create: "Successful creation." notice_successful_delete: "Successful deletion." @@ -5327,22 +4808,17 @@ en: notice_successful_update_custom_fields_added_to_project: | Successful update. The custom fields of the activated types are automatically activated on the work package form. See more. - notice_to_many_principals_to_display: "There are too many results. - - Narrow down the search by typing in the name of the new member (or group)." + notice_to_many_principals_to_display: "There are too many results.\nNarrow down the search by typing in the name of the new member (or group)." notice_user_missing_authentication_method: User has yet to choose a password or another way to sign in. notice_user_invitation_resent: An invitation has been sent to %{email}. present_access_key_value: "Your %{key_name} is: %{value}" notice_automatic_set_of_standard_type: "Set standard type automatically." notice_logged_out: "You have been logged out." - notice_wont_delete_auth_source: The LDAP connection cannot be deleted as long as - there are still users using it. - notice_project_cannot_update_custom_fields: "You cannot update the project's - available custom fields. The project is invalid: %{errors}" + notice_wont_delete_auth_source: The LDAP connection cannot be deleted as long as there are still users using it. + notice_project_cannot_update_custom_fields: "You cannot update the project's available custom fields. The project is invalid: %{errors}" notice_attachment_migration_wiki_page: > - This page was generated automatically during the update of OpenProject. It - contains all attachments previously associated with the %{container_type} - "%{container_name}". + This page was generated automatically during the update of OpenProject. + It contains all attachments previously associated with the %{container_type} "%{container_name}". # Default format for numbers number: @@ -5367,9 +4843,7 @@ en: onboarding: heading_getting_started: "Get an overview" - text_getting_started_description: "Get a quick overview of project management - and team collaboration with OpenProject. You can restart this video from - the help menu." + text_getting_started_description: "Get a quick overview of project management and team collaboration with OpenProject. You can restart this video from the help menu." welcome: "Welcome to %{app_title}" select_language: "Please select your language" @@ -5396,9 +4870,7 @@ en: permission_comment_news: "Comment news" permission_commit_access: "Read/write access to repository (commit)" permission_copy_projects: "Copy projects" - permission_copy_projects_explanation: "In template projects, this permission has - a secondary function, it allows the creation of new projects derived from - the template." + permission_copy_projects_explanation: "In template projects, this permission has a secondary function, it allows the creation of new projects derived from the template." permission_copy_work_packages: "Duplicate work packages" permission_create_backup: "Create backups" permission_delete_work_package_watchers: "Delete watchers" @@ -5418,8 +4890,7 @@ en: permission_edit_own_messages: "Edit own messages" permission_edit_own_time_entries: "Edit own time logs" permission_edit_others_internal_comments: "Moderate internal comments" - permission_edit_others_internal_comments_explanation: "Caution: Users with this - permission are able to edit other users' internal comments." + permission_edit_others_internal_comments_explanation: "Caution: Users with this permission are able to edit other users' internal comments." permission_edit_project: "Edit project" permission_edit_project_attributes: "Edit project attributes" permission_edit_project_phases: "Edit project phases" @@ -5432,9 +4903,9 @@ en: permission_export_wiki_pages: "Export wiki pages" permission_invite_members_by_email: "Invite members by email" permission_invite_members_by_email_explanation: > - Allows users to invite new members by email. Invited users will receive an - email with a link to set their password and activate their account. Depends - on the permission to manage members + Allows users to invite new members by email. + Invited users will receive an email with a link to set their password and activate their account. + Depends on the permission to manage members permission_list_attachments: "List attachments" permission_log_own_time: "Log own time" permission_log_time: "Log time for other users" @@ -5453,12 +4924,10 @@ en: permission_manage_wiki_menu: "Manage wiki menu" permission_manage_own_working_times: "Manage own working times" permission_manage_own_working_times_explanation: > - Allows users to manage their own working times, and personal non-working - days. + Allows users to manage their own working times, and personal non-working days. permission_manage_working_times: "Manage working times for all users" permission_manage_working_times_explanation: > - Allows users to manage working times for all users, including personal - non-working days. + Allows users to manage working times for all users, including personal non-working days. permission_move_work_packages: "Move work packages" permission_protect_wiki_pages: "Protect wiki pages" permission_rename_wiki_pages: "Rename wiki pages" @@ -5467,18 +4936,14 @@ en: permission_select_custom_fields: "Select custom fields" permission_select_project_custom_fields: "Select project attributes" permission_select_project_phases: "Select project phases" - permission_select_project_phases_explanation: "Activate/Deactivate the phases in - a project. Enables the user to select the life cycle appropriate for the - project as inactive phases will not be visible in the project overview page - nor the project list." + permission_select_project_phases_explanation: "Activate/Deactivate the phases in a project. Enables the user to select the life cycle appropriate for the project as inactive phases will not be visible in the project overview page nor the project list." permission_select_project_modules: "Select project modules" permission_share_work_packages: "Share work packages" permission_manage_types: "Select types" permission_manage_own_reminders: "Create own reminders" permission_view_all_principals: "View all users and groups" permission_view_all_principals_explanation: > - Allows users to see all users and groups in the system, even if they are not - members of any joined projects or groups. + Allows users to see all users and groups in the system, even if they are not members of any joined projects or groups. permission_view_project: "View projects" permission_view_changesets: "View repository revisions in OpenProject" permission_view_internal_comments: "View internal comments" @@ -5497,8 +4962,7 @@ en: permission_view_wiki_edits: "View wiki history" permission_view_wiki_pages: "View wiki" permission_work_package_assigned: "Become assignee/responsible" - permission_work_package_assigned_explanation: "Work packages can be assigned to - users and groups in possession of this role in the respective project" + permission_work_package_assigned_explanation: "Work packages can be assigned to users and groups in possession of this role in the respective project" permission_view_project_activity: "View project activity" permission_view_project_attributes: "View project attributes" permission_view_project_phases: "View project phases" @@ -5539,14 +5003,11 @@ en: heading: "Permanently delete this project?" confirmation_message_for_subprojects_html: zero: > - You are about to permanently delete all data relating to project - %{name}. + You are about to permanently delete all data relating to project %{name}. one: > - You are about to permanently delete all data relating to project - %{name} and this subproject: + You are about to permanently delete all data relating to project %{name} and this subproject: other: > - You are about to permanently delete all data relating to project - %{name} and these subprojects: + You are about to permanently delete all data relating to project %{name} and these subprojects: filters: project_phase: "Project phase: %{phase}" project_phase_any: "Project phase: Any" @@ -5559,8 +5020,8 @@ en: template: copying_title: "Applying template" copying: > - Your project is being created from the selected template project. You - will be notified by mail as soon as the project is available. + Your project is being created from the selected template project. + You will be notified by mail as soon as the project is available. use_template: "Use template" make_template: "Set as template" remove_from_templates: "Remove from templates" @@ -5592,24 +5053,15 @@ en: repositories: at_identifier: "at %{identifier}" atom_revision_feed: "Atom revision feed" - autofetch_information: "Check this if you want repositories to be updated - automatically when accessing the repository module page. - - This encompasses the retrieval of commits from the repository and - refreshing the required disk storage." + autofetch_information: "Check this if you want repositories to be updated automatically when accessing the repository module page.\nThis encompasses the retrieval of commits from the repository and refreshing the required disk storage." checkout: access: readwrite: "Read + Write" read: "Read-only" - none: "No checkout access, you may only view the repository through this - application." + none: "No checkout access, you may only view the repository through this application." access_permission: "Your permissions on this repository" url: "Checkout URL" - base_url_text: "The base URL to use for generating checkout URLs (e.g., - https://myserver.example.org/repos/). - - Note: The base URL is only used for rewriting checkout URLs in managed - repositories. Other repositories are not altered." + base_url_text: "The base URL to use for generating checkout URLs (e.g., https://myserver.example.org/repos/).\nNote: The base URL is only used for rewriting checkout URLs in managed repositories. Other repositories are not altered." default_instructions: git: |- The data contained in this repository can be downloaded to your computer with Git. @@ -5617,87 +5069,65 @@ en: subversion: |- The data contained in this repository can be downloaded to your computer with Subversion. Please consult the documentation of Subversion if you need more information on the checkout procedure and available clients. - enable_instructions_text: "Displays checkout instructions defined below on all - repository-related pages." + enable_instructions_text: "Displays checkout instructions defined below on all repository-related pages." instructions: "Checkout instructions" show_instructions: "Display checkout instructions" - text_instructions: "This text is displayed alongside the checkout URL for - guidance on how to check out the repository." - not_available: "Checkout instructions are not defined for this repository. Ask - your administrator to enable them for this repository in the system - settings." - create_managed_delay: "Please note: The repository is managed, it is created - asynchronously on the disk and will be available shortly." + text_instructions: "This text is displayed alongside the checkout URL for guidance on how to check out the repository." + not_available: "Checkout instructions are not defined for this repository. Ask your administrator to enable them for this repository in the system settings." + create_managed_delay: "Please note: The repository is managed, it is created asynchronously on the disk and will be available shortly." create_successful: "The repository has been registered." delete_sucessful: "The repository has been deleted." destroy: confirmation: "If you continue, this will permanently delete the managed repository." info: "Deleting the repository is an irreversible action." - info_not_managed: "Note: This will NOT delete the contents of this repository, - as it is not managed by OpenProject." + info_not_managed: "Note: This will NOT delete the contents of this repository, as it is not managed by OpenProject." managed_path_note: "The following directory will be erased: %{path}" - repository_verification_html: "Enter the project's identifier %{identifier} to - verify the deletion of its repository." - subtitle: "Do you really want to delete the %{repository_type} of the project - %{project_name}?" - subtitle_not_managed_html: "Do you really want to remove the linked - %{repository_type} %{url} from the project %{project_name}?" + repository_verification_html: "Enter the project's identifier %{identifier} to verify the deletion of its repository." + subtitle: "Do you really want to delete the %{repository_type} of the project %{project_name}?" + subtitle_not_managed_html: "Do you really want to remove the linked %{repository_type} %{url} from the project %{project_name}?" title_html: "Delete the %{repository_type}" title_not_managed: "Remove the linked %{repository_type}?" errors: - build_failed: "Unable to create the repository with the selected configuration. - %{reason}" + build_failed: "Unable to create the repository with the selected configuration. %{reason}" managed_delete: "Unable to delete the managed repository." - managed_delete_local: "Unable to delete the local repository on filesystem at - '%{path}': %{error_message}" - empty_repository: "The repository exists, but is empty. It does not contain any - revisions yet." + managed_delete_local: "Unable to delete the local repository on filesystem at '%{path}': %{error_message}" + empty_repository: "The repository exists, but is empty. It does not contain any revisions yet." exists_on_filesystem: "The repository directory already exists in the filesystem." - filesystem_access_failed: "An error occurred while accessing the repository in - the filesystem: %{message}" + filesystem_access_failed: "An error occurred while accessing the repository in the filesystem: %{message}" not_manageable: "This repository vendor cannot be managed by OpenProject." - path_permission_failed: "An error occurred trying to create the following path: - %{path}. Please ensure that OpenProject may write to that folder." - unauthorized: "You're not authorized to access the repository or the credentials - are invalid." + path_permission_failed: "An error occurred trying to create the following path: %{path}. Please ensure that OpenProject may write to that folder." + unauthorized: "You're not authorized to access the repository or the credentials are invalid." unavailable: "The repository is unavailable." exception_title: "Cannot access the repository: %{message}" - disabled_or_unknown_type: "The selected type %{type} is disabled or no longer - available for the SCM vendor %{vendor}." + disabled_or_unknown_type: "The selected type %{type} is disabled or no longer available for the SCM vendor %{vendor}." disabled_or_unknown_vendor: "The SCM vendor %{vendor} is disabled or no longer available." - remote_call_failed: "Calling the managed remote failed with message '%{message}' - (Code: %{code})" + remote_call_failed: "Calling the managed remote failed with message '%{message}' (Code: %{code})" remote_invalid_response: "Received an invalid response from the managed remote." - remote_save_failed: "Could not save the repository with the parameters retrieved - from the remote." + remote_save_failed: "Could not save the repository with the parameters retrieved from the remote." git: instructions: managed_url: "This is the URL of the managed (local) Git repository." path: >- - Specify the path to your local Git repository ( e.g., %{example_path} - ). You can also use remote repositories which are cloned to a local - copy by using a value starting with http(s):// or file://. + Specify the path to your local Git repository ( e.g., %{example_path} ). + You can also use remote repositories which are cloned to a local copy by + using a value starting with http(s):// or file://. path_encoding: "Override Git path encoding (Default: UTF-8)" local_title: "Link existing local Git repository" local_url: "Local URL" - local_introduction: "If you have an existing local Git repository, you can link - it with OpenProject to access it from within the application." - managed_introduction: "Let OpenProject create and integrate a local Git - repository automatically." + local_introduction: "If you have an existing local Git repository, you can link it with OpenProject to access it from within the application." + managed_introduction: "Let OpenProject create and integrate a local Git repository automatically." managed_title: "Git repository integrated into OpenProject" managed_url: "Managed URL" path: "Path to Git repository" path_encoding: "Path encoding" go_to_revision: "Go to revision" managed_remote: "Managed repositories for this vendor are handled remotely." - managed_remote_note: "Information on the URL and path of this repository is not - available prior to its creation." + managed_remote_note: "Information on the URL and path of this repository is not available prior to its creation." managed_url: "Managed URL" settings: automatic_managed_repos_disabled: "Disable automatic creation" automatic_managed_repos: "Automatic creation of managed repositories" - automatic_managed_repos_text: "By setting a vendor here, newly created projects - will automatically receive a managed repository of this vendor." + automatic_managed_repos_text: "By setting a vendor here, newly created projects will automatically receive a managed repository of this vendor." scm_vendor: "Source control management system" scm_type: "Repository type" scm_types: @@ -5706,40 +5136,25 @@ en: managed: "Create new repository in OpenProject" storage: not_available: "Disk storage consumption is not available for this repository." - update_timeout: "Keep the last required disk space information for a repository - for N minutes. - - As counting the required disk space of a repository may be costly, - increase this value to reduce performance impact." - oauth_application_details_html: "The client secret value will not be accessible - again after you close this window. Please copy these values into the - Nextcloud OpenProject Integration settings:" + update_timeout: "Keep the last required disk space information for a repository for N minutes.\nAs counting the required disk space of a repository may be costly, increase this value to reduce performance impact." + oauth_application_details_html: "The client secret value will not be accessible again after you close this window. Please copy these values into the Nextcloud OpenProject Integration settings:" oauth_application_details_link_text: "Go to settings page" - setup_documentation_details: "If you need help configuring a new file storage - please check the documentation: " + setup_documentation_details: "If you need help configuring a new file storage please check the documentation: " setup_documentation_details_link_text: "File storages setup" - show_warning_details: "To use this file storage remember to activate the module - and the specific storage in the project settings of each desired - project." + show_warning_details: "To use this file storage remember to activate the module and the specific storage in the project settings of each desired project." subversion: existing_title: "Existing Subversion repository" - existing_introduction: "If you have an existing Subversion repository, you can - link it with OpenProject to access it from within the application." + existing_introduction: "If you have an existing Subversion repository, you can link it with OpenProject to access it from within the application." existing_url: "Existing URL" instructions: managed_url: "This is the URL of the managed (local) Subversion repository." - url: "Enter the repository URL. This may either target a local repository - (starting with %{local_proto} ), or a remote repository. - - The following URL schemes are supported:" + url: "Enter the repository URL. This may either target a local repository (starting with %{local_proto} ), or a remote repository.\nThe following URL schemes are supported:" managed_title: "Subversion repository integrated into OpenProject" - managed_introduction: "Let OpenProject create and integrate a local Subversion - repository automatically." + managed_introduction: "Let OpenProject create and integrate a local Subversion repository automatically." managed_url: "Managed URL" password: "Repository Password" username: "Repository username" - truncated: "Sorry, we had to truncate this directory to %{limit} files. - %{truncated} entries were omitted from the list." + truncated: "Sorry, we had to truncate this directory to %{limit} files. %{truncated} entries were omitted from the list." named_repository: "%{vendor_name} repository" update_settings_successful: "The settings have been successfully saved." url: "URL to repository" @@ -5754,63 +5169,61 @@ en: setting_allowed_link_protocols: "Allowed link protocols" setting_allowed_link_protocols_text_html: >- - Allow these protocols to be rendered as links in work package descriptions, - long text fields and comments. For example, %{tel_code} or %{element_code}. - Enter one protocol per line.
    Protocols %{http_code}, %{https_code}, - and %{mailto_code} are always allowed. + Allow these protocols to be rendered as links in work package descriptions, long text fields and comments. + For example, %{tel_code} or %{element_code}. Enter one protocol per line. +
    + Protocols %{http_code}, %{https_code}, and %{mailto_code} are always allowed. setting_capture_external_links: "Capture external links" setting_capture_external_links_text: > - When enabled, all external links in formatted text will redirect through a - warning page before leaving the application. This helps protect users from - potentially malicious external websites. + When enabled, all external links in formatted text will redirect through a warning page + before leaving the application. This helps protect users from potentially malicious external websites. setting_capture_external_links_require_login: "Require users to be logged in" setting_capture_external_links_require_login_text: > - When enabled, users wanting to click on external links need to be logged in - before being able to continue. + When enabled, users wanting to click on external links need to be logged in before being able to continue. setting_after_first_login_redirect_url: "First login redirect" setting_after_first_login_redirect_url_text_html: > - Set a path to redirect users after their first login. If empty, redirects to - the home page for the onboarding tour.
    Example: /my/page + Set a path to redirect users after their first login. If empty, redirects to the home page for the onboarding tour. +
    + Example: /my/page setting_after_login_default_redirect_url: "After login redirect" setting_after_login_default_redirect_url_text_html: > - Set a default path to redirect users after login, if no back link was - provided. Redirects to home page if not set.
    Example: - /my/page + Set a default path to redirect users after login, if no back link was provided. Redirects to home page if not set. +
    + Example: /my/page setting_apiv3_cors_title: "Cross-Origin Resource Sharing (CORS)" setting_apiv3_cors_enabled: "Enable CORS" setting_apiv3_cors_origins: "API V3 Cross-Origin Resource Sharing (CORS) allowed origins" setting_apiv3_cors_origins_instructions_html: > - If CORS is enabled, these are the origins that are allowed to access - OpenProject API.
    Please check the [Documentation on the Origin - header](docs_url) on how to specify the expected values. + If CORS is enabled, these are the origins that are allowed to access OpenProject API. +
    + Please check the [Documentation on the Origin header](docs_url) on how to specify the expected values. setting_apiv3_write_readonly_attributes: "Write access to read-only attributes" setting_apiv3_write_readonly_attributes_instructions: > - If enabled, the API will allow administrators to write static read-only - attributes during creation, such as createdAt and author. + If enabled, the API will allow administrators to write static read-only attributes during creation, + such as createdAt and author. setting_apiv3_write_readonly_attributes_warning: > This setting has a use-case for e.g., importing data, but allows - administrators to impersonate the creation of items as other users. All - creation requests are being logged however with the true author. + administrators to impersonate the creation of items as other users. All creation requests are being + logged however with the true author. setting_apiv3_write_readonly_attributes_additional_html: > - For more information on attributes and supported resources, please see the - [API documentation](api_documentation_link). + For more information on attributes and supported resources, please see the [API documentation](api_documentation_link). setting_apiv3_max_page_size: "Maximum API page size" setting_apiv3_max_page_size_instructions: > - Set the maximum page size the API will respond with. It will not be possible - to perform API requests that return more values on a single page. + Set the maximum page size the API will respond with. + It will not be possible to perform API requests that return more values on a single page. setting_apiv3_max_page_size_warning: > - Please only change this value if you are sure why you need it. Setting to a - high value will result in significant performance impacts, while a value - lower than the per page options will cause errors in paginated views. + Please only change this value if you are sure why you need it. + Setting to a high value will result in significant performance impacts, while a value lower than the per page options + will cause errors in paginated views. setting_apiv3_docs: "Documentation" setting_apiv3_docs_enabled: "Enable docs page" setting_apiv3_docs_enabled_instructions_html: > - If the docs page is enabled you can get an interactive view of the APIv3 - documentation under %{link}. + If the docs page is enabled you can get an interactive view of the APIv3 documentation under + %{link}. setting_apiv3_docs_enabled_instructions_warning: > - Please be aware that enabling the API docs on a production system may expose - sensitive information or result in accidental loss of data when not being - careful. We recommend to only enable this setting for development purposes. + Please be aware that enabling the API docs on a production system may expose sensitive information + or result in accidental loss of data when not being careful. + We recommend to only enable this setting for development purposes. setting_attachment_whitelist: "Attachment upload whitelist" setting_email_delivery_method: "Email delivery method" setting_emails_salutation: "Address user in emails with" @@ -5828,9 +5241,8 @@ en: setting_activity_days_default: "Days displayed on project activity" setting_api_tokens_enabled: "Enable API tokens" setting_api_tokens_enabled_caption: > - Decide whether users can create personal API tokens in their account - settings. These tokens can be used to access the different APIs of - OpenProject, such as APIv3 and MCP. + Decide whether users can create personal API tokens in their account settings. These tokens can be used to access the different + APIs of OpenProject, such as APIv3 and MCP. setting_app_subtitle: "Application subtitle" setting_app_title: "Application title" setting_organization_name: "Organization name" @@ -5845,8 +5257,7 @@ en: setting_brute_force_block_after_failed_logins: "Block user after this number of failed login attempts" setting_brute_force_block_minutes: "Time the user is blocked for" setting_cache_formatted_text: "Cache formatted text" - setting_use_wysiwyg_description: "Select to enable CKEditor5 WYSIWYG editor for - all users by default. CKEditor has limited functionality for GFM Markdown." + setting_use_wysiwyg_description: "Select to enable CKEditor5 WYSIWYG editor for all users by default. CKEditor has limited functionality for GFM Markdown." setting_column_options: "Default work package lists columns" setting_commit_fix_keywords: "Fixing keywords" setting_commit_logs_encoding: "Commit messages encoding" @@ -5870,8 +5281,7 @@ en: setting_duration_format: "Duration format" setting_duration_format_hours_only: "Hours only" setting_duration_format_days_and_hours: "Days and hours" - setting_duration_format_instructions: "This defines how Work, Remaining work, - and Time spent durations are displayed." + setting_duration_format_instructions: "This defines how Work, Remaining work, and Time spent durations are displayed." setting_emails_footer: "Emails footer" setting_emails_header: "Emails header" setting_email_login: "Use email as login" @@ -5886,24 +5296,23 @@ en: setting_collaborative_editing_hocuspocus_secret: "Hocuspocus server secret" setting_hours_per_day: "Hours per day" setting_hours_per_day_explanation: >- - This defines what is considered a "day" when displaying duration in days and - hours (for example, if a day is 8 hours, 32 hours would be 4 days). + This defines what is considered a "day" when displaying duration in days and hours + (for example, if a day is 8 hours, 32 hours would be 4 days). setting_invitation_expiration_days: "Activation email expires after" setting_invitation_expiration_days_caption: "Number of days after which the activation email expires." setting_work_package_done_ratio: "Progress calculation mode" setting_work_package_done_ratio_field: "Work-based" setting_work_package_done_ratio_field_caption_html: >- - % Complete can be freely set to any value. If you optionally enter a - value for Work, Remaining work will automatically be derived. + % Complete can be freely set to any value. + If you optionally enter a value for Work, Remaining work will automatically be derived. setting_work_package_done_ratio_status: "Status-based" setting_work_package_done_ratio_status_caption_html: >- - Each status has a % Complete value associated with it. Changing - status will change % Complete. + Each status has a % Complete value associated with it. + Changing status will change % Complete. setting_work_package_done_ratio_explanation_html: > - In work-based mode, % Complete can be freely set to any value. If you - optionally enter a value for Work, Remaining work will automatically be - derived. In status-based mode, each status has a % Complete value - associated with it. Changing status will change % Complete. + In work-based mode, % Complete can be freely set to any value. + If you optionally enter a value for Work, Remaining work will automatically be derived. + In status-based mode, each status has a % Complete value associated with it. Changing status will change % Complete. setting_work_package_properties: "Work package properties" setting_work_package_startdate_is_adddate: "Use current date as start date for new work packages" setting_work_packages_projects_export_limit: "Work packages / Projects export limit" @@ -5929,21 +5338,17 @@ en: setting_percent_complete_on_status_closed: "% Complete when status is closed" setting_percent_complete_on_status_closed_no_change: "No change" setting_percent_complete_on_status_closed_no_change_caption_html: >- - The value of % Complete will not change even when a work package is - closed. + The value of % Complete will not change even when a work package is closed. setting_percent_complete_on_status_closed_set_100p: "Automatically set to 100%" setting_percent_complete_on_status_closed_set_100p_caption: >- A closed work package is considered complete. setting_plain_text_mail: "Plain text mail (no HTML)" setting_protocol: "Protocol" setting_project_gantt_query: "Project portfolio Gantt view" - setting_project_gantt_query_text: "You can modify the query that is used to - display Gantt chart from the project overview page." + setting_project_gantt_query_text: "You can modify the query that is used to display Gantt chart from the project overview page." setting_security_badge_displayed: "Display security badge" setting_registration_footer: "Registration footer" - setting_registration_footer_caption: "This text is displayed in the footer of - the registration page. Use the HTML editor to format the text for each - selected language." + setting_registration_footer_caption: "This text is displayed in the footer of the registration page. Use the HTML editor to format the text for each selected language." setting_repositories_automatic_managed_vendor: "Automatic repository vendor type" setting_repositories_encodings: "Repositories encodings" setting_repository_storage_cache_minutes: "Repository disk size cache" @@ -5954,51 +5359,43 @@ en: setting_repository_truncate_at: "Maximum number of files displayed in the repository browser" setting_self_registration: "Self-registration" setting_self_registration_caption: > - Choose the self-registration mechanism for users. Be careful with the - setting you choose, as some options allow users to activate their own - accounts to this instance. + Choose the self-registration mechanism for users. Be careful with the setting you choose, as some + options allow users to activate their own accounts to this instance. setting_self_registration_warning: > - The user will be able to activate their own accounts. Please note that this - will give them access to all public projects and their content. Please make - sure that no sensitive or private data is exposed in public projects. + The user will be able to activate their own accounts. + Please note that this will give them access to all public projects and their content. + Please make sure that no sensitive or private data is exposed in public projects. setting_self_registration_disabled: "Disabled" setting_self_registration_disabled_caption: > - No accounts can be registered on their own. Only administrators and users - with the global permission to create new users are able to create new - accounts. + No accounts can be registered on their own. Only administrators and users with the global permission + to create new users are able to create new accounts. setting_self_registration_activation_by_email: "Account activation by email" setting_self_registration_activation_by_email_caption: > - Users can register on their own and activate their account after confirming - their email address. Administrators have no moderation control over the - activation process. + Users can register on their own and activate their account after confirming their email address. + Administrators have no moderation control over the activation process. setting_self_registration_automatic_activation: "Automatic account activation" setting_self_registration_automatic_activation_caption: > - Users can register on their own. Their accounts are immediately active - without further action. Administrators have no moderation control over the - activation process. + Users can register on their own. Their accounts are immediately active without further action. + Administrators have no moderation control over the activation process. setting_self_registration_manual_activation: "Manual account activation" setting_self_registration_manual_activation_caption: > - Users can register on their own. Their accounts are in a pending state until - an administrator or user with the global permission to create or manage - users activates them. + Users can register on their own. Their accounts are in a pending state until an administrator + or user with the global permission to create or manage users activates them. setting_session_ttl: "Session expiration time after inactivity" setting_session_ttl_hint: "Value below 5 works like disabled" setting_session_ttl_enabled: "Session expires" setting_start_of_week: "Week starts on" setting_sys_api_enabled: "Enable repository management web service" - setting_sys_api_description: "The repository management web service provides - integration and user authorization for accessing repositories." + setting_sys_api_description: "The repository management web service provides integration and user authorization for accessing repositories." setting_time_format: "Time" setting_total_percent_complete_mode: "Calculation of % Complete hierarchy totals" setting_total_percent_complete_mode_work_weighted_average: "Weighted by work" setting_total_percent_complete_mode_work_weighted_average_caption_html: >- - The total % Complete will be weighted against the Work of each - work package in the hierarchy. Work packages without Work will be - ignored. + The total % Complete will be weighted against the Work of each work package in the hierarchy. + Work packages without Work will be ignored. setting_total_percent_complete_mode_simple_average: "Simple average" setting_total_percent_complete_mode_simple_average_caption_html: >- - Work is ignored and the total % Complete will be a simple - average of % Complete values of work packages in the hierarchy. + Work is ignored and the total % Complete will be a simple average of % Complete values of work packages in the hierarchy. setting_accessibility_mode_for_anonymous: "Enable accessibility mode for anonymous users" setting_user_format: "Users name format" setting_user_default_timezone: "Users default time zone" @@ -6009,14 +5406,10 @@ en: setting_welcome_on_homescreen: "Display welcome block on homescreen" setting_work_packages_identifier_classic: Instance-wide numerical sequence (default) setting_work_packages_identifier_classic_caption: > - Every work package gets a sequential number starting with 1 and incremented - with every new one. The numbers are unique within this instance so they - remain the same even if work packages are moved between projects. + Every work package gets a sequential number starting with 1 and incremented with every new one. The numbers are unique within this instance so they remain the same even if work packages are moved between projects. setting_work_packages_identifier_semantic: Project-based semantic identifiers setting_work_packages_identifier_semantic_caption: > - Every project has a unique identifier that is prefixed to the work package - ID. If a work package moved to another project, a new identifier is - generated but the old one continues to function. + Every project has a unique identifier that is prefixed to the work package ID. If a work package moved to another project, a new identifier is generated but the old one continues to function. setting_work_package_list_default_highlighting_mode: "Default highlighting mode" setting_work_package_list_default_highlighted_attributes: "Default inline highlighted attributes" setting_working_days: "Working days" @@ -6030,87 +5423,72 @@ en: registration: "Registration" sso: "Single Sign-On (SSO)" omniauth_direct_login_hint_html: > - If this option is active, login requests will redirect to the configured - omniauth provider. The login dropdown and sign-in page will be disabled. -
    Note: Unless you also disable password logins, - with this option enabled, users can still log in internally by visiting - the %{internal_path} login page. + If this option is active, login requests will redirect to the configured omniauth provider. + The login dropdown and sign-in page will be disabled. +
    + Note: Unless you also disable password logins, with this option enabled, + users can still log in internally by visiting the %{internal_path} login page. remapping_existing_users_hint: > - If enabled, allows any configured identity provider to login existing - users based on their username, even if the user never signed in through - that provider before. This can be useful when migrating the OpenProject - instance to a new SSO provider, but is not recommended when using a - provider that is not trusted by all users of your instance. + If enabled, allows any configured identity provider to login existing users based on their username, + even if the user never signed in through that provider before. This can be useful when migrating the OpenProject instance + to a new SSO provider, but is not recommended when using a provider that is not trusted by all users of your instance. attachments: whitelist_text_html: > - Define a list of valid file extensions and/or mime types for uploaded - files.
    Enter file extensions (e.g., %{ext_example}) - or mime types (e.g., %{mime_example}).
    Leave empty to - allow any file type to be uploaded. Multiple values allowed (one line - for each value). + Define a list of valid file extensions and/or mime types for uploaded files. +
    + Enter file extensions (e.g., %{ext_example}) or mime types (e.g., %{mime_example}). +
    + Leave empty to allow any file type to be uploaded. + Multiple values allowed (one line for each value). show_work_package_attachments: > - Deactivating this option will hide the attachments list on the work - packages files tab for new projects. The files attached in the - description of a work package will still be uploaded in the internal - attachments storage. + Deactivating this option will hide the attachments list on the work packages files tab for new projects. The + files attached in the description of a work package will still be uploaded in the internal attachments storage. antivirus: title: "Virus scanning" - clamav_ping_failed: "Failed to connect the the ClamAV daemon. Double-check the - configuration and try again." + clamav_ping_failed: "Failed to connect the the ClamAV daemon. Double-check the configuration and try again." remaining_quarantined_files_html: > - Virus scanning has been disbled. %{file_count} remain in quarantine. To - review quarantined files, please visit this link: %{link} + Virus scanning has been disbled. %{file_count} remain in quarantine. + To review quarantined files, please visit this link: %{link} remaining_scan_complete_html: > - Remaining files have been scanned. There are %{file_count} in - quarantine. You are being redirected to the quarantine page. Use this - page to delete or override quarantined files. + Remaining files have been scanned. There are %{file_count} in quarantine. + You are being redirected to the quarantine page. Use this page to delete or override quarantined files. remaining_rescanned_files: > - Virus scanning has been enabled successfully. There are %{file_count} - that were uploaded previously and still need to be scanned. This process - has been scheduled in the background. The files will remain accessible - during the scan. + Virus scanning has been enabled successfully. + There are %{file_count} that were uploaded previously and still need to be scanned. + This process has been scheduled in the background. The files will remain accessible during the scan. actions: delete: "Delete the file" quarantine: "Quarantine the file" instructions_html: > - Select the action to perform for files on which a virus has been - detected:
    • %{quarantine_option}: - Quarantine the file, preventing users from accessing it. - Administrators can review and delete quarantined files in the - administration.
    • %{delete_option}: Delete the - file immediately.
    + Select the action to perform for files on which a virus has been detected: +
    +
      +
    • %{quarantine_option}: Quarantine the file, preventing users from accessing it. Administrators can review and delete quarantined files in the administration.
    • +
    • %{delete_option}: Delete the file immediately.
    • +
    modes: clamav_socket_html: Enter the socket to the clamd daemon, e.g., %{example} - clamav_host_html: Enter the hostname and port to the clamd daemon separated by - colon. e.g., %{example} + clamav_host_html: Enter the hostname and port to the clamd daemon separated by colon. e.g., %{example} description_html: > - Select the mode in which the antivirus scanner integration should - operate.
    • %{disabled_option}: Uploaded - files are not scanned for viruses.
    • -
    • %{socket_option}: You have set up ClamAV on the - same server as OpenProject and the scan daemon clamd is running in the - background
    • %{host_option}: You are streaming - files to an external virus scanning host.
    + Select the mode in which the antivirus scanner integration should operate. +
    +
      +
    • %{disabled_option}: Uploaded files are not scanned for viruses.
    • +
    • %{socket_option}: You have set up ClamAV on the same server as OpenProject and the scan daemon clamd is running in the background
    • +
    • %{host_option}: You are streaming files to an external virus scanning host.
    • +
    brute_force_prevention: "Automated user blocking" date_format: first_date_of_week_and_year_set: > - If either options "%{day_of_week_setting_name}" or - "%{first_week_setting_name}" are set, the other has to be set as well to - avoid inconsistencies in the frontend. + If either options "%{day_of_week_setting_name}" or "%{first_week_setting_name}" are set, + the other has to be set as well to avoid inconsistencies in the frontend. first_week_of_year_text_html: > - Select the date of January that is contained in the first week of the - year. This value together with first day of the week determines the - total number of weeks in a year. For more information, please see our documentation on this topic. + Select the date of January that is contained in the first week of the year. + This value together with first day of the week determines the total number of weeks in a year. + For more information, please see our documentation on this topic. experimental: - save_confirmation: Caution! Risk of data loss! Only activate experimental - features if you do not mind breaking your OpenProject installation and - losing all of its data. - warning_toast: Feature flags are settings that activate features that are still - under development. They shall only be used for testing purposes. They - shall never be activated on OpenProject installations holding important - data. These features will very likely corrupt your data. Use them at - your own risk. + save_confirmation: Caution! Risk of data loss! Only activate experimental features if you do not mind breaking your OpenProject installation and losing all of its data. + warning_toast: Feature flags are settings that activate features that are still under development. They shall only be used for testing purposes. They shall never be activated on OpenProject installations holding important data. These features will very likely corrupt your data. Use them at your own risk. feature_flags: Feature flags general: "General" highlighting: @@ -6121,21 +5499,11 @@ en: type: "Entire row by Type" priority: "Entire row by Priority" icalendar: - enable_subscriptions_text_html: Allows users with the necessary permissions to - subscribe to OpenProject calendars and access work package information - via an external calendar client. Note: Please read - about iCalendar subscriptions to - understand potential security risks before enabling this. + enable_subscriptions_text_html: Allows users with the necessary permissions to subscribe to OpenProject calendars and access work package information via an external calendar client. Note: Please read about iCalendar subscriptions to understand potential security risks before enabling this. language_name_being_default: "%{language_name} (default)" notifications: - events_explanation: "Governs for which event an email is sent out. Work packages - are excluded from this list as the notifications for them can be - configured specifically for every user." - delay_minutes_explanation: "Email sending can be delayed to allow users with - configured in app notification to confirm the notification within the - application before a mail is sent out. Users who read a notification - within the application will not receive an email for the already read - notification." + events_explanation: "Governs for which event an email is sent out. Work packages are excluded from this list as the notifications for them can be configured specifically for every user." + delay_minutes_explanation: "Email sending can be delayed to allow users with configured in app notification to confirm the notification within the application before a mail is sent out. Users who read a notification within the application will not receive an email for the already read notification." other: "Other" passwords: "Passwords" project_attributes: @@ -6145,117 +5513,76 @@ en: label_new_section: "Section" label_edit_section: "Edit title" label_section_actions: "Section actions" - heading_description: "These project attributes appear in the overview page of - each project. You can add new attributes, group them into sections and - re-order them as you please. These attributes can be enabled or disabled - but not re-ordered at a project level." + heading_description: "These project attributes appear in the overview page of each project. You can add new attributes, group them into sections and re-order them as you please. These attributes can be enabled or disabled but not re-ordered at a project level." label_project_custom_field_actions: "Project attribute actions" label_no_project_custom_fields: "No project attributes defined in this section" edit: - description: "Changes to this project attribute will be reflected in all - projects where it is enabled. Required attributes cannot be disabled - on a per-project basis." + description: "Changes to this project attribute will be reflected in all projects where it is enabled. Required attributes cannot be disabled on a per-project basis." new: heading: "New attribute" - description: "Changes to this project attribute will be reflected in all - projects where it is enabled. Required attributes cannot be disabled - on a per-project basis." + description: "Changes to this project attribute will be reflected in all projects where it is enabled. Required attributes cannot be disabled on a per-project basis." sections: display_representation: overview: label: "Project attribute shown in:" main_area: label: "Main area" - description: "Add all the project attributes as individual widgets in the main - section of the project overview." + description: "Add all the project attributes as individual widgets in the main section of the project overview." side_panel: label: "Side panel" - description: "Add all the project attributes in a section inside the right side - panel in the project overview." + description: "Add all the project attributes in a section inside the right side panel in the project overview." project_initiation_request: header_description: > - OpenProject can generate a step-by-step wizard to help project managers - fill out a project initiation request. You can choose which project - attributes should be included and create a PDF artifact as a result. + OpenProject can generate a step-by-step wizard to help project managers fill out a project initiation request. + You can choose which project attributes should be included and create a PDF artifact as a result. status: submitted: "%{wizard_name} has been submitted" - submitted_description: "Click the button below to go to the work package for the - submission process." + submitted_description: "Click the button below to go to the work package for the submission process." submitted_button: "Open submission request" not_completed: "%{wizard_name} not yet completed" - not_completed_description: "Provide the necessary information by filling the - attributes and get the project started." + not_completed_description: "Provide the necessary information by filling the attributes and get the project started." wizard_status_button: project_initiation_request: "Open project initiation request" project_creation_wizard: "Open project creation wizard" project_mandate: "Open project mandate" blankslate: title: "Initiation request not enabled" - description: "OpenProject can generate a step-by-step wizard to help project - managers fill out a project initiation request. You can choose which - project attributes should be included and what to do with the output - document. Enable it here to start configuring the wizard." + description: "OpenProject can generate a step-by-step wizard to help project managers fill out a project initiation request. You can choose which project attributes should be included and what to do with the output document. Enable it here to start configuring the wizard." disable_dialog: title: "Disable project initiation request" heading: "Disable this project initiation request?" - confirmation_message: "The initiation request wizard will no longer be available - to new projects based on this template. Project managers and project - owners will need to manually configure and fill out the relevant - information in the Project overview." + confirmation_message: "The initiation request wizard will no longer be available to new projects based on this template. Project managers and project owners will need to manually configure and fill out the relevant information in the Project overview." checkbox_message: "I understand that this action is not reversible" name: artifact_name: "Artifact name" - artifact_name_caption: "Choose the name for this artifact that your project - management framework recommends." + artifact_name_caption: "Choose the name for this artifact that your project management framework recommends." options: project_initiation_request: "Project initiation request" project_creation_wizard: "Project creation wizard" project_mandate: "Project mandate" submission: description_template: > - **This work package was automatically created upon completion of the - %{wizard_name} workflow.** + **This work package was automatically created upon completion of the %{wizard_name} workflow.** - A PDF artifact containing all submitted information has been generated - and attached to this work package for reference and audit purposes. + A PDF artifact containing all submitted information has been generated and attached to this work package for reference and audit purposes. - If you need to update or re-run the initiation steps, you can reopen - the wizard at any time by using the link below: - description: "When a user submits a project initiation request, a new work - package will be created with the request artifact attached as a PDF - file. The settings below define the type, status and assignee for this - new work package." + If you need to update or re-run the initiation steps, you can reopen the wizard at any time by using the link below: + description: "When a user submits a project initiation request, a new work package will be created with the request artifact attached as a PDF file. The settings below define the type, status and assignee for this new work package." work_package_type: "Work package type" - work_package_type_caption: "The work package type that should be used to store - the completed artifact." + work_package_type_caption: "The work package type that should be used to store the completed artifact." status_when_submitted: "Status when submitted" - status_when_submitted_caption: "The status the generated work package will - transition to once the request is submitted." - send_confirmation_email: "Send confirmation email to the user who submitted the - project initiation request" + status_when_submitted_caption: "The status the generated work package will transition to once the request is submitted." + send_confirmation_email: "Send confirmation email to the user who submitted the project initiation request" assignee: "Assignee when submitted" - assignee_caption_html: "The user or group assigned to this project attribute - will also become the assignee of the new work package. This list - includes active project attributes of type User only." + assignee_caption_html: "The user or group assigned to this project attribute will also become the assignee of the new work package. This list includes active project attributes of type User only." confirmation_email_text: "Confirmation email text" - confirmation_email_default: "Hello, - - - You submitted a project initiation request for **%{project_name}**. It - is now awaiting review. - - Click the link below to access the work package with your request." + confirmation_email_default: "Hello,\n\nYou submitted a project initiation request for **%{project_name}**. It is now awaiting review.\nClick the link below to access the work package with your request." work_package_comment: "Work package comment" - work_package_comment_caption: "The assignee selected above will automatically be - @mentioned in the comment." - work_package_comment_default: "A project initiation request for - **%{project_name}** was submitted and is awaiting review." + work_package_comment_caption: "The assignee selected above will automatically be @mentioned in the comment." + work_package_comment_default: "A project initiation request for **%{project_name}** was submitted and is awaiting review." project_phase_definitions: heading: "Project life cycle" - heading_description: "Project life cycle defines the project phases that can be - used for your project planning and will appear in the overview page of - each project. These attributes can be enabled or disabled but not - re-ordered at a project level." + heading_description: "Project life cycle defines the project phases that can be used for your project planning and will appear in the overview page of each project. These attributes can be enabled or disabled but not re-ordered at a project level." label_add: "Add" label_add_description: "Add project phase definition" filter: @@ -6264,8 +5591,7 @@ en: non_defined: "No phases are currently defined." phase_gates: "Phase gates" new: - description: "Changes to this project phase will be reflected in all projects - where it is enabled." + description: "Changes to this project phase will be reflected in all projects where it is enabled." heading: "New phase" both_gate: "Start and finish gate" no_gate: "No gate" @@ -6274,8 +5600,7 @@ en: finish_gate: "Finish gate" finish_gate_caption: "Add a gate with the end date of the phase" projects: - missing_dependencies: "Project module %{module} was checked which depends on - %{dependencies}. You need to check these dependencies as well." + missing_dependencies: "Project module %{module} was checked which depends on %{dependencies}. You need to check these dependencies as well." section_new_projects: "Settings for new projects" section_project_overview: "Settings for project lists" session: "Session" @@ -6292,9 +5617,8 @@ en: activities: enable_internal_comments: "Enable internal comments" helper_text_html: > - Internal comments allow an internal team to communicate amongst - themselves privately. These are only visible to selected roles that - have the necessary permissions and will not be visible publicly. + Internal comments allow an internal team to communicate amongst themselves privately. + These are only visible to selected roles that have the necessary permissions and will not be visible publicly. [Click here to learn more](docs_url) text_formatting: @@ -6315,25 +5639,19 @@ en: sentence_connector: "and" skip_last_comma: "false" - text_accessibility_hint: "The accessibility mode is designed for users who are - blind, motorically handicaped or have a bad eyesight. For the latter focused - elements are specially highlighted. Please notice, that the Backlogs module - is not available in this mode." - text_access_token_hint: "Access tokens allow you to grant external applications - access to resources in OpenProject." + text_accessibility_hint: "The accessibility mode is designed for users who are blind, motorically handicaped or have a bad eyesight. For the latter focused elements are specially highlighted. Please notice, that the Backlogs module is not available in this mode." + text_access_token_hint: "Access tokens allow you to grant external applications access to resources in OpenProject." text_analyze: "Further analyze: %{subject}" text_are_you_sure: "Are you sure?" open_link_in_a_new_tab: "Open link in a new tab" text_are_you_sure_continue: "Are you sure you want to continue?" text_are_you_sure_with_children: "Delete work package and all child work packages?" - text_are_you_sure_with_project_custom_fields: "Deleting this attribute will also - delete its values in all projects. Are you sure you want to do this?" - text_are_you_sure_with_project_life_cycle_step: "Deleting this phase will also - delete its usages in all projects. Are you sure you want to do this?" + text_are_you_sure_with_project_custom_fields: "Deleting this attribute will also delete its values in all projects. Are you sure you want to do this?" + text_are_you_sure_with_project_life_cycle_step: "Deleting this phase will also delete its usages in all projects. Are you sure you want to do this?" text_assign_to_project: "Assign to the project" text_form_configuration: > - You can customize which fields will be displayed in work package forms. You - can freely group the fields to reflect the needs for your domain. + You can customize which fields will be displayed in work package forms. + You can freely group the fields to reflect the needs for your domain. text_form_configuration_required_attribute: "Attribute is marked required and thus always shown" text_caracters_maximum: "%{count} characters maximum." text_caracters_minimum: "Must be at least %{count} characters long." @@ -6344,41 +5662,38 @@ en: When using custom fields: Keep in mind that custom fields need to be activated per project, too. text_custom_field_hint_activate_per_project_and_type: > - Custom fields need to be activated per work package type and per project. + Custom fields need to be activated per work + package type and per project. text_project_custom_field_html: > - The Enterprise edition will add these additional add-ons for projects' - custom fields:
      + The Enterprise edition will add these additional add-ons for projects' custom fields:
      +
      • Add custom fields for projects to your Project list to create a project portfolio view
      text_custom_logo_instructions: > - The logo automatically scales to fit the header. For best results, upload a - white logo on a transparent 130×47px image. You can add as much spacing - inside that image as you like. + The logo automatically scales to fit the header. + For best results, upload a white logo on a transparent 130×47px image. + You can add as much spacing inside that image as you like. text_custom_logo_mobile_instructions: > - The logo automatically scales to fit the header. For best results, upload a - white logo on a transparent 130×33px image. You can add as much spacing - inside that image as you like. + The logo automatically scales to fit the header. + For best results, upload a white logo on a transparent 130×33px image. + You can add as much spacing inside that image as you like. text_custom_export_logo_instructions: > - This is the logo that appears in your PDF exports. It needs to be a PNG or - JPEG image file. A black or colored logo on transparent or white background - is recommended. + This is the logo that appears in your PDF exports. + It needs to be a PNG or JPEG image file. + A black or colored logo on transparent or white background is recommended. text_custom_export_cover_instructions: > - This is the image that appears in the background of a cover page in your PDF - exports. It needs to be an about 800px width by 500px height sized PNG or - JPEG image file. + This is the image that appears in the background of a cover page in your PDF exports. + It needs to be an about 800px width by 500px height sized PNG or JPEG image file. text_custom_export_footer_instructions: > - PDF exports will include a graphical element positioned to the left of the - footer. This image must be a PNG or JPEG file with approximately 200 pixels - in width. + PDF exports will include a graphical element positioned to the left of the footer. + This image must be a PNG or JPEG file with approximately 200 pixels in width. label_custom_export_font_instructions: > - Upload and manage custom TrueType (.ttf) fonts used in your PDF exports. For - best results, use matching files from the same font family. If no font is - provided, the default NotoSans font will be used. + Upload and manage custom TrueType (.ttf) fonts used in your PDF exports. + For best results, use matching files from the same font family. If no font is provided, the default NotoSans font will be used. label_custom_export_images_instructions: > Upload and manage custom image files used in your PDF exports. text_custom_export_font_regular_instructions: > - This is the font file for regular text. It needs to be in TTF format and is - required. + This is the font file for regular text. It needs to be in TTF format and is required. text_custom_export_font_bold_instructions: > This is the font file for bold text. It needs to be in TTF format. text_custom_export_font_italic_instructions: > @@ -6387,45 +5702,36 @@ en: This is the font file for bold and italic text. It needs to be in TTF format. text_custom_favicon_instructions: > This is the tiny icon that appears in your browser window/tab next to the - page's title. It needs to be a squared 32 by 32 pixels sized PNG image file - with a transparent background. + page's title. + It needs to be a squared 32 by 32 pixels sized PNG image file with a transparent background. text_custom_touch_icon_instructions: > This is the icon that appears in your mobile or tablet when you place a - bookmark on your homescreen. It needs to be a squared 180 by 180 pixels - sized PNG image file. Please make sure the image's background is not - transparent otherwise it will look bad on iOS. + bookmark on your homescreen. + It needs to be a squared 180 by 180 pixels sized PNG image file. Please + make sure the image's background is not transparent otherwise it will look + bad on iOS. text_database_allows_tsv: "Database allows TSVector (optional)" text_default_administrator_account_changed: "Default administrator account changed" text_default_encoding: "Default: UTF-8" text_destroy: "Delete" - text_destroy_with_associated: "There are additional objects associated with the - work package(s) that are to be deleted. Those objects are of the following - types:" + text_destroy_with_associated: "There are additional objects associated with the work package(s) that are to be deleted. Those objects are of the following types:" text_destroy_what_to_do: "What do you want to do?" - text_diff_truncated: "... This diff was truncated because it exceeds the maximum - size that can be displayed." - text_email_delivery_not_configured: "Email delivery is not configured, and - notifications are disabled. - - Configure your SMTP server to enable them." + text_diff_truncated: "... This diff was truncated because it exceeds the maximum size that can be displayed." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server to enable them." text_enumeration_category_reassign_to: "Reassign them to this value:" text_enumeration_destroy_question: "%{count} objects are assigned to this value." text_file_repository_writable: "Attachments directory writable" text_git_repo_example: "a bare and local repository (e.g. /gitrepo, c:\\gitrepo)" - text_hint_date_format: "Enter a date in the form of YYYY-MM-DD. Other formats - may be changed to an unwanted date." + text_hint_date_format: "Enter a date in the form of YYYY-MM-DD. Other formats may be changed to an unwanted date." text_hint_disable_with_0: "Note: Disable with 0" text_hours_between: "Between %{min} and %{max} hours." text_work_package_added: "Work package %{id} has been reported by %{author}." text_work_package_category_destroy_assignments: "Remove category assignments" - text_work_package_category_destroy_question: "Some work packages (%{count}) are - assigned to this category. What do you want to do?" + text_work_package_category_destroy_question: "Some work packages (%{count}) are assigned to this category. What do you want to do?" text_work_package_category_reassign_to: "Reassign work packages to this category" text_work_package_updated: "Work package %{id} has been updated by %{author}." - text_work_package_watcher_added: "You have been added as a watcher to Work - package %{id} by %{watcher_changer}." - text_work_package_watcher_removed: "You have been removed from watchers of Work - package %{id} by %{watcher_changer}." + text_work_package_watcher_added: "You have been added as a watcher to Work package %{id} by %{watcher_changer}." + text_work_package_watcher_removed: "You have been removed from watchers of Work package %{id} by %{watcher_changer}." text_work_packages_destroy_confirmation: "Are you sure you want to delete the selected work package(s)?" text_work_packages_ref_in_commit_messages: "Referencing and fixing work packages in commit messages" text_journal_added: "%{label} %{value} added" @@ -6449,54 +5755,30 @@ en: text_load_default_configuration: "Load the default configuration" text_no_roles_defined: There are no roles defined. text_no_access_tokens_configurable: "There are no access tokens which can be configured." - text_no_configuration_data: "Roles, types, work package statuses and workflow - have not been configured yet. - - It is highly recommended to load the default configuration. You will be able - to modify it once loaded." + text_no_configuration_data: "Roles, types, work package statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." text_no_notes: "There are no comments available for this work package." - text_notice_too_many_values_are_inperformant: "Note: Displaying more than 100 - items per page can increase the page load time." + text_notice_too_many_values_are_inperformant: "Note: Displaying more than 100 items per page can increase the page load time." text_notice_security_badge_displayed_html: > - Note: if enabled, this will display a badge with your installation status in - the %{information_panel_label} - administration panel, and on the home page. It is displayed to - administrators only.
      The badge will check your current OpenProject - version against the official OpenProject release database to alert you of - any updates or known vulnerabilities. For more information on what the check - provides, what data is needed to provide available updates, and how to - disable this check, please visit the - configuration documentation. - text_own_membership_delete_confirmation: "You are about to remove some or all of - your permissions and may no longer be able to edit this project after that. - - Are you sure you want to continue?" + Note: if enabled, this will display a badge with your installation status in the %{information_panel_label} administration panel, + and on the home page. It is displayed to administrators only. +
      + The badge will check your current OpenProject version against the official OpenProject release database to alert you of any updates or known vulnerabilities. + For more information on what the check provides, what data is needed to provide available updates, and how to disable this check, please visit the configuration documentation. + text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" text_permanent_delete_confirmation_checkbox_label: "I understand that this deletion cannot be reversed" text_permanent_remove_confirmation_checkbox_label: "I understand that this removal cannot be reversed" text_plugin_assets_writable: "Plugin assets directory writable" text_powered_by: "Powered by %{link}" - text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes - and underscores are allowed, must start with a lower case letter." - text_project_identifier_description: "The project identifier is prepended to all - work package IDs. If the identifier is \"PROJ\" for example, the work - package identifier will be \"PROJ-12\" or \"PROJ-246\"." + text_project_identifier_info: "Only lower case letters (a-z), numbers, dashes and underscores are allowed, must start with a lower case letter." + text_project_identifier_description: 'The project identifier is prepended to all work package IDs. If the identifier is "PROJ" for example, the work package identifier will be "PROJ-12" or "PROJ-246".' text_project_identifier_url_description: "The project identifier is included in the URL of the project." - text_project_identifier_handle_format: "Must start with a letter and contain - only uppercase letters, numbers, and underscores (max 10 characters)." - text_project_identifier_format: "Must start with a lowercase letter. Only - lowercase letters (a-z), numbers, dashes and underscores are allowed." + text_project_identifier_handle_format: "Must start with a letter and contain only uppercase letters, numbers, and underscores (max 10 characters)." + text_project_identifier_format: "Must start with a lowercase letter. Only lowercase letters (a-z), numbers, dashes and underscores are allowed." text_reassign: "Reassign to work package:" - text_regexp_multiline: "The regex is applied in a multi-line mode. e.g., ^---\\s+" - text_repository_usernames_mapping: "Select or update the OpenProject user mapped - to each username found in the repository log. - - Users with the same OpenProject and repository username or email are - automatically mapped." + text_regexp_multiline: 'The regex is applied in a multi-line mode. e.g., ^---\s+' + text_repository_usernames_mapping: "Select or update the OpenProject user mapped to each username found in the repository log.\nUsers with the same OpenProject and repository username or email are automatically mapped." text_status_changed_by_changeset: "Applied in changeset %{value}." - text_table_difference_description: "In this table the single %{entries} are - shown. You can view the difference between any two entries by first - selecting the according checkboxes in the table. When clicking on the button - below the table the differences are shown." + text_table_difference_description: "In this table the single %{entries} are shown. You can view the difference between any two entries by first selecting the according checkboxes in the table. When clicking on the button below the table the differences are shown." text_time_logged_by_changeset: "Applied in changeset %{value}." text_tip_work_package_begin_day: "work package beginning this day" text_tip_work_package_begin_end_day: "work package beginning and ending this day" @@ -6506,13 +5788,11 @@ en: text_user_invited: The user has been invited and is pending registration. text_user_wrote: "%{value} wrote:" text_wrote: "wrote" - text_warn_on_leaving_unsaved: "The work package contains unsaved text that will - be lost if you leave this page." + text_warn_on_leaving_unsaved: "The work package contains unsaved text that will be lost if you leave this page." text_what_did_you_change_click_to_add_comment: "What did you change? Click to add comment" text_wiki_destroy_confirmation: "Are you sure you want to delete this wiki and all its content?" text_wiki_page_destroy_children: "Delete child pages and all their descendants" - text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and - descendant(s). What do you want to do?" + text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" text_wiki_page_nullify_children: "Keep child pages as root pages" text_wiki_page_reassign_children: "Reassign child pages to this parent page" text_workflow_edit: "Select a role and a type to edit the workflow" @@ -6523,15 +5803,11 @@ en: help_texts: views: project: > - %{plural} are always attached to a project. You can only select projects - here where the %{plural} module is active. After creating a %{singular} - you can add work packages from other projects to it. - public: "Publish this view, allowing other users to access your view. Users with - the 'Manage public views' permission can modify or remove public query. - This does not affect the visibility of work package results in that view - and depending on their permissions, users may see different results." - favoured: "Mark this view as favourite and add to the saved views sidebar on the - left." + %{plural} are always attached to a project. + You can only select projects here where the %{plural} module is active. + After creating a %{singular} you can add work packages from other projects to it. + public: "Publish this view, allowing other users to access your view. Users with the 'Manage public views' permission can modify or remove public query. This does not affect the visibility of work package results in that view and depending on their permissions, users may see different results." + favoured: "Mark this view as favourite and add to the saved views sidebar on the left." time: am: "am" formats: @@ -6552,16 +5828,16 @@ en: tooltip_user_default_timezone: > The default time zone for new users. Can be changed in a user's settings. tooltip_resend_invitation: > - Sends another invitation email with a fresh token in case the old one - expired or the user did not get the original email. Can also be used for - active users to choose a new authentication method. When used with active - users their status will be changed to 'invited'. + Sends another invitation email with a fresh token in + case the old one expired or the user did not get the original email. + Can also be used for active users to choose a new authentication method. + When used with active users their status will be changed to 'invited'. tooltip: setting_email_login: > If enabled a user will be unable to chose a login during registration. - Instead their given email address will serve as the login. An - administrator may still change the login separately. + Instead their given email address will serve as the login. + An administrator may still change the login separately. queries: apply_filter: Apply preconfigured filter @@ -6574,8 +5850,7 @@ en: sort_by: automatic: heading: "Automatic" - description: "Order the %{plural} by one or more sorting criteria. You will lose - the previous sorting." + description: "Order the %{plural} by one or more sorting criteria. You will lose the previous sorting." top_menu: additional_resources: "Additional resources" @@ -6592,16 +5867,15 @@ en: authentication_provider: "Authentication Provider" identity_url_text: "The internal unique identifier provided by the authentication provider." authentication_settings_disabled_due_to_external_authentication: > - This user authenticates via an external authentication provider, so there - is no password in OpenProject to be changed. + This user authenticates via an external authentication provider, so there is no password + in OpenProject to be changed. authorization_rejected: "You are not allowed to sign in." assign_random_password: "Assign random password (sent to user via email)" blocked: "locked temporarily" blocked_num_failed_logins: one: "locked temporarily (one failed login attempt)" other: "locked temporarily (%{count} failed login attempts)" - confirm_status_change: "You are about to change the status of '%{name}'. Are you - sure you want to continue?" + confirm_status_change: "You are about to change the status of '%{name}'. Are you sure you want to continue?" deleted: "Deleted user" error_status_change_self: "You cannot change your own user status." error_admin_change_on_non_admin: "Only administrators can change the status of administrator users." @@ -6610,15 +5884,13 @@ en: invited: invited lock: "Lock permanently" locked: "locked permanently" - no_login: "This user authenticates through login by password. Since it is - disabled, they cannot log in." + no_login: "This user authenticates through login by password. Since it is disabled, they cannot log in." password_change_unsupported: Change of password is not supported. registered: "registered" reset_failed_logins: "Reset failed logins" status_user_and_brute_force: "%{user} and %{brute_force}" status_change: "Status change" - text_change_disabled_for_provider_login: "The name and email is set by your - login provider and can thus not be changed." + text_change_disabled_for_provider_login: "The name and email is set by your login provider and can thus not be changed." unlock: "Unlock" unlock_and_reset_failed_logins: "Unlock and reset failed logins" error_cannot_delete_user: "User cannot be deleted" @@ -6628,61 +5900,51 @@ en: version_status_open: "open" note: Note - note_password_login_disabled_link: "Password login has been disabled through a - [configuration setting](configuration_url)." + note_password_login_disabled_link: "Password login has been disabled through a [configuration setting](configuration_url)." warning: Warning warning_attachments_not_saved: "%{count} file(s) could not be saved." warning_imminent_user_limit_html: > - You invited more users than are supported by your current plan. Invited - users may not be able to join your OpenProject environment. Please [upgrade - your plan](upgrade_url) or block existing users in order to allow invited - and registered users to join. + You invited more users than are supported by your current plan. + Invited users may not be able to join your OpenProject environment. + Please [upgrade your plan](upgrade_url) or block existing + users in order to allow invited and registered users to join. warning_registration_token_expired: | The activation email has expired. We sent you a new one to %{email}. Please click the link inside of it to activate your account. warning_user_limit_reached: > - Adding additional users will exceed the current limit. Please contact an - administrator to increase the user limit to ensure external users are able - to access this instance. + Adding additional users will exceed the current limit. + Please contact an administrator to increase the user limit to ensure external users are able to access this instance. warning_user_limit_reached_admin_html: > - Adding additional users will exceed the current limit. Please [upgrade your - plan](upgrade_url) to be able to ensure external users are able to access - this instance. + Adding additional users will exceed the current limit. + Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this instance. warning_user_limit_reached_instructions: > - You reached your user limit (%{current}/%{max} active users). Please contact - sales@openproject.com to upgrade your Enterprise edition plan and add - additional users. + You reached your user limit (%{current}/%{max} active users). + Please contact sales@openproject.com to upgrade your Enterprise edition plan and add additional users. warning_protocol_mismatch_html: > warning_bar: https_mismatch: title: "HTTPS mode setup mismatch" text_html: > - Your application is running with HTTPS mode set to - %{set_protocol}, but the request is an - %{actual_protocol} request. This will result in errors! You - will need to set the following configuration value: - %{setting_value}. Please see the installation documentation on how to - set this configuration. + Your application is running with HTTPS mode set to %{set_protocol}, but the request + is an %{actual_protocol} request. + This will result in errors! You will need to set the following configuration value: %{setting_value}. + Please see the installation documentation on how to set this configuration. hostname_mismatch: title: "Hostname setting mismatch" text_html: > - Your application is running with its host name setting set to - %{set_hostname}, but the request is a - %{actual_hostname} hostname. This will result in errors! Go - to System settings and change the "Host - name" setting to correct this. + Your application is running with its host name setting set to %{set_hostname}, but the request + is a %{actual_hostname} hostname. + This will result in errors! Go to System settings and change the "Host name" setting to correct this. menu_item: "Menu item" menu_item_setting: "Visibility" - wiki_menu_item_for: "Menu item for wikipage \"%{title}\"" + wiki_menu_item_for: 'Menu item for wikipage "%{title}"' wiki_menu_item_setting: "Visibility" wiki_menu_item_new_main_item_explanation: > - You are deleting the only main wiki menu item. You now have to choose a wiki - page for which a new main item will be generated. To delete the wiki the - wiki module can be deactivated by project administrators. + You are deleting the only main wiki menu item. You now have to choose a wiki page for which a new main item will be generated. + To delete the wiki the wiki module can be deactivated by project administrators. wiki_menu_item_delete_not_permitted: The wiki menu item of the only wiki page cannot be deleted. # TODO: merge with work_packages top level key work_package: @@ -6694,12 +5956,9 @@ en: progress: label_note: "Note:" modal: - work_based_help_text: "Each field is automatically calculated from the two - others when possible." + work_based_help_text: "Each field is automatically calculated from the two others when possible." status_based_help_text: "% Complete is set by work package status." - migration_warning_text: "In work-based progress calculation mode, % Complete - cannot be manually set and is tied to Work. The existing value has - been kept but cannot be edited. Please input Work first." + migration_warning_text: "In work-based progress calculation mode, % Complete cannot be manually set and is tied to Work. The existing value has been kept but cannot be edited. Please input Work first." derivation_hints: done_ratio: cleared_because_remaining_work_is_empty: "Cleared because Remaining work is empty." @@ -6726,8 +5985,7 @@ en: reminders: label_remind_at: "Date" note_placeholder: "Why are you setting this reminder?" - create_success_message_html: "Reminder set successfully. You will receive a - notification for this work package %{reminder_time}." + create_success_message_html: "Reminder set successfully. You will receive a notification for this work package %{reminder_time}." success_update_message: "Reminder updated successfully." success_deletion_message: "Reminder deleted successfully." sharing: @@ -6754,20 +6012,14 @@ en: text_empty_search_header: "We couldn't find any matching results." text_empty_state_description: "The %{entity} has not been shared with anyone yet." text_empty_state_header: "Not shared" - text_user_limit_reached: "Adding additional users will exceed the current limit. - Please contact an administrator to increase the user limit to ensure - external users are able to access this %{entity}." - text_user_limit_reached_admins: "Adding additional users will exceed the current - limit. Please upgrade your plan to be able - to add more users." + text_user_limit_reached: "Adding additional users will exceed the current limit. Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}." + text_user_limit_reached_admins: 'Adding additional users will exceed the current limit. Please upgrade your plan to be able to add more users.' warning_user_limit_reached: > - Adding additional users will exceed the current limit. Please contact an - administrator to increase the user limit to ensure external users are able - to access this %{entity}. + Adding additional users will exceed the current limit. + Please contact an administrator to increase the user limit to ensure external users are able to access this %{entity}. warning_user_limit_reached_admin_html: > - Adding additional users will exceed the current limit. Please [upgrade - your plan](upgrade_url) to be able to ensure external users are able to - access this %{entity}. + Adding additional users will exceed the current limit. + Please [upgrade your plan](upgrade_url) to be able to ensure external users are able to access this %{entity}. warning_no_selected_user: "Please select users to share this %{entity} with" warning_locked_user: "The user %{user} is locked and cannot be shared with" user_details: @@ -6783,25 +6035,21 @@ en: additional_privileges_project_or_group: "Might have additional privileges (as project or group member)" project_queries: publishing_denied: "You do not have permission to make project lists public." - access_warning: "Users will only see the projects they have access to. Sharing - project lists does not impact individual project permissions." + access_warning: "Users will only see the projects they have access to. Sharing project lists does not impact individual project permissions." user_details: owner: "List owner" can_view_because_public: "Can already view because list is shared with everyone" can_manage_public_lists: "Can edit due to global permissions" public_flag: label: "Share with everyone at %{instance_name}" - caption: "Everyone can view this project list. Those with global edit - permissions can modify it." + caption: "Everyone can view this project list. Those with global edit permissions can modify it." blank_state: public: header: "Shared with everyone" - description: "Everyone can view this project list. You can also add individual - users with extra permissions." + description: "Everyone can view this project list. You can also add individual users with extra permissions." private: header: "Not shared: Private" - description: "This project list has not been shared with anyone yet. Only you - can access this list." + description: "This project list has not been shared with anyone yet. Only you can access this list." permissions: view: "View" view_description: "Can view this project list." @@ -6811,17 +6059,14 @@ en: message: "Sharing project lists with individual users is an enterprise add-on." working_days: info: > - Days that are not selected are skipped when scheduling work packages and - project life cycles (and not included in the day count). These can be - overridden at a work-package level. + Days that are not selected are skipped when scheduling work packages and project life cycles (and not included in the day count). + These can be overridden at a work-package level. instance_wide_info: > - Dates added to the list below are considered non-working and skipped when - scheduling work packages. + Dates added to the list below are considered non-working and skipped when scheduling work packages. change_button: "Change working days" warning: > - Changing which days of the week are considered working days or non-working - days can affect the start and finish days of all work packages and life - cycles in all projects in this instance. + Changing which days of the week are considered working days or non-working days + can affect the start and finish days of all work packages and life cycles in all projects in this instance. journal_note: changed: _**Working days** changed (%{changes})._ days: @@ -6844,10 +6089,8 @@ en: code_409: "Could not update the resource because of conflicting modifications." code_429: "Too many requests. Please try again later." code_500: "An internal error has occurred." - code_500_outbound_request_failure: "An outbound request to another resource has - failed with status code %{status_code}." - code_500_missing_enterprise_token: "The request can not be handled due to - invalid or missing Enterprise token." + code_500_outbound_request_failure: "An outbound request to another resource has failed with status code %{status_code}." + code_500_missing_enterprise_token: "The request can not be handled due to invalid or missing Enterprise token." bad_request: emoji_reactions_activity_type_not_supported: "This activity type does not support emoji reactions." invalid_link: "The link under key '%{key}' is not valid." @@ -6856,25 +6099,20 @@ en: multiple_reminders_not_allowed: |- You can only set one reminder at a time for a work package. Please delete or update the existing reminder. not_found: - work_package: "The work package you are looking for cannot be found or has been - deleted." + work_package: "The work package you are looking for cannot be found or has been deleted." reminder: "The reminder you are looking for cannot be found or has been deleted." expected: date: "YYYY-MM-DD (ISO 8601 date only)" datetime: "YYYY-MM-DDThh:mm:ss[.lll][+hh:mm] (any compatible ISO 8601 datetime)" duration: "ISO 8601 duration" invalid_content_type: "Expected CONTENT-TYPE to be '%{content_type}' but got '%{actual}'." - invalid_format: "Invalid format for property '%{property}': Expected format like - '%{expected_format}', but got '%{actual}'." + invalid_format: "Invalid format for property '%{property}': Expected format like '%{expected_format}', but got '%{actual}'." invalid_json: "The request could not be parsed as JSON." invalid_relation: "The relation is invalid." - invalid_resource: "For property '%{property}' a link like '%{expected}' is - expected, but got '%{actual}'." + invalid_resource: "For property '%{property}' a link like '%{expected}' is expected, but got '%{actual}'." invalid_signal: - embed: "The requested embedding of %{invalid} is not supported. Supported - embeddings are %{supported}." - select: "The requested select of %{invalid} is not supported. Supported selects - are %{supported}." + embed: "The requested embedding of %{invalid} is not supported. Supported embeddings are %{supported}." + select: "The requested select of %{invalid} is not supported. Supported selects are %{supported}." invalid_user_status_transition: "The current user account status does not allow this operation." missing_content_type: "not specified" missing_property: "Missing property '%{property}'." @@ -6883,19 +6121,16 @@ en: multipart_body_error: "The request body did not contain the expected multipart parts." multiple_errors: "Multiple field constraints have been violated." unable_to_create_attachment: "The attachment could not be created" - unable_to_create_attachment_permissions: "The attachment could not be saved due - to lacking file system permissions" + unable_to_create_attachment_permissions: "The attachment could not be saved due to lacking file system permissions" user: - name_readonly: "The name attribute is read-only. Changes can be written through - the attributes firstname and lastname." + name_readonly: "The name attribute is read-only. Changes can be written through the attributes firstname and lastname." render: context_not_parsable: "The context provided is not a link to a resource." unsupported_context: "The resource given is not supported as context." context_object_not_found: "Cannot find the resource given as the context." validation: due_date: "Finish date cannot be set on parent work packages." - invalid_user_assigned_to_work_package: "The chosen user is not allowed to be - '%{property}' for this work package." + invalid_user_assigned_to_work_package: "The chosen user is not allowed to be '%{property}' for this work package." start_date: "Start date cannot be set on parent work packages." eprops: invalid_gzip: "is invalid gzip: %{message}" @@ -6921,45 +6156,30 @@ en: messages: # Common error messages invalid_request: - unknown: "The request is missing a required parameter, includes an unsupported - parameter value, or is otherwise malformed." + unknown: "The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed." missing_param: "Missing required parameter: %{value}." - request_not_authorized: "Request need to be authorized. Required parameter for - authorizing request is missing or invalid." - invalid_redirect_uri: "The requested redirect uri is malformed or doesn't match - client redirect URI." - unauthorized_client: "The client is not authorized to perform this request using - this method." + request_not_authorized: "Request need to be authorized. Required parameter for authorizing request is missing or invalid." + invalid_redirect_uri: "The requested redirect uri is malformed or doesn't match client redirect URI." + unauthorized_client: "The client is not authorized to perform this request using this method." access_denied: "The resource owner or authorization server denied the request." invalid_scope: "The requested scope is invalid, unknown, or malformed." invalid_code_challenge_method: "The code challenge method must be plain or S256." - server_error: "The authorization server encountered an unexpected condition - which prevented it from fulfilling the request." - temporarily_unavailable: "The authorization server is currently unable to handle - the request due to a temporary overloading or maintenance of the - server." + server_error: "The authorization server encountered an unexpected condition which prevented it from fulfilling the request." + temporarily_unavailable: "The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server." # Configuration error messages - credential_flow_not_configured: "Resource Owner Password Credentials flow failed - due to Doorkeeper.configure.resource_owner_from_credentials being - unconfigured." - resource_owner_authenticator_not_configured: "Resource Owner find failed due to - Doorkeeper.configure.resource_owner_authenticator being unconfigured." - admin_authenticator_not_configured: "Access to admin panel is forbidden due to - Doorkeeper.configure.admin_authenticator being unconfigured." + credential_flow_not_configured: "Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured." + resource_owner_authenticator_not_configured: "Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfigured." + admin_authenticator_not_configured: "Access to admin panel is forbidden due to Doorkeeper.configure.admin_authenticator being unconfigured." # Access grant errors unsupported_response_type: "The authorization server does not support this response type." unsupported_response_mode: "The authorization server does not support this response mode." # Access token errors - invalid_client: "Client authentication failed due to unknown client, no client - authentication included, or unsupported authentication method." - invalid_grant: "The provided authorization grant is invalid, expired, revoked, - does not match the redirection URI used in the authorization request, - or was issued to another client." - unsupported_grant_type: "The authorization grant type is not supported by the - authorization server." + invalid_client: "Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method." + invalid_grant: "The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client." + unsupported_grant_type: "The authorization grant type is not supported by the authorization server." invalid_token: revoked: "The access token was revoked" @@ -6969,7 +6189,7 @@ en: unauthorized: "You are not authorized to revoke this token." forbidden_token: - missing_scope: "Access to this resource requires scope \"%{oauth_scopes}\"." + missing_scope: 'Access to this resource requires scope "%{oauth_scopes}".' unsupported_browser: title: "Your browser is outdated and unsupported." @@ -6990,24 +6210,16 @@ en: non_confidential: Non confidential default_scopes: "(Default scopes)" instructions: - enabled: "Enable this application, allowing users to perform authorization - grants with it." - name: "The name of your application. This will be displayed to other users upon - authorization." + enabled: "Enable this application, allowing users to perform authorization grants with it." + name: "The name of your application. This will be displayed to other users upon authorization." redirect_uri_html: > - The allowed URLs authorized users can be redirected to. One entry per - line.
      If you're registering a desktop application, use the - following URL. - confidential: "Check if the application will be used where the client secret can - be kept confidential. Native mobile apps and Single Page Apps are - assumed non-confidential." - scopes: "Check the scopes you want the application to grant access to. If no - scope is checked, api_v3 is assumed." - client_credential_user_id: "Optional user ID to impersonate when clients use - this application. Leave empty to allow public access only" - register_intro: "If you are developing an OAuth API client application for - OpenProject, you can register it using this form for all users to - use." + The allowed URLs authorized users can be redirected to. One entry per line. +
      + If you're registering a desktop application, use the following URL. + confidential: "Check if the application will be used where the client secret can be kept confidential. Native mobile apps and Single Page Apps are assumed non-confidential." + scopes: "Check the scopes you want the application to grant access to. If no scope is checked, api_v3 is assumed." + client_credential_user_id: "Optional user ID to impersonate when clients use this application. Leave empty to allow public access only" + register_intro: "If you are developing an OAuth API client application for OpenProject, you can register it using this form for all users to use." default_scopes: "" header: builtin_applications: Built-in OAuth applications @@ -7015,22 +6227,20 @@ en: empty_application_lists: No OAuth applications have been registered. client_id: "Client ID" client_secret_notice: > - This is the only time we can print the client secret, please note it down - and keep it secure. It should be treated as a password and cannot be - retrieved by OpenProject at a later time. + This is the only time we can print the client secret, please note it down and keep it secure. + It should be treated as a password and cannot be retrieved by OpenProject at a later time. authorization_dialog: authorize: "Authorize" cancel: "Cancel and deny authorization." - prompt_html: "Authorize %{application_name} to use your account - %{login}?" + prompt_html: "Authorize %{application_name} to use your account %{login}?" title: "Authorize %{application_name}" wants_to_access_html: > - This application requests access to your OpenProject account.
      + This application requests access to your OpenProject account. +
      It has requested the following permissions: scopes: api_v3: "Full API v3 access" - api_v3_text: "Application will receive full read & write access to the - OpenProject API v3 to perform actions on your behalf." + api_v3_text: "Application will receive full read & write access to the OpenProject API v3 to perform actions on your behalf." grants: created_date: "Approved on" scopes: "Permissions" @@ -7044,16 +6254,12 @@ en: client_credentials: "Client credentials flow" client_credentials: "User used for Client credentials" client_credentials_impersonation_set_to: "Client credentials user set to" - client_credentials_impersonation_warning: "Note: Clients using the 'Client - credentials' flow in this application will have the rights of this user" + client_credentials_impersonation_warning: "Note: Clients using the 'Client credentials' flow in this application will have the rights of this user" client_credentials_impersonation_html: > - By default, OpenProject provides OAuth 2.0 authorization via - %{authorization_code_flow_link}. You can optionally enable - %{client_credentials_flow_link}, but you must provide a user on whose - behalf requests will be performed. + By default, OpenProject provides OAuth 2.0 authorization via %{authorization_code_flow_link}. + You can optionally enable %{client_credentials_flow_link}, but you must provide a user on whose behalf requests will be performed. authorization_error: "An authorization error has occurred." - revoke_my_application_confirmation: "Do you really want to remove this - application? This will revoke %{token_count} active for it." + revoke_my_application_confirmation: "Do you really want to remove this application? This will revoke %{token_count} active for it." my_registered_applications: "Registered OAuth applications" oauth_client: @@ -7081,41 +6287,34 @@ en: Internal error: Called refresh_token without a previously existing token. refresh_token_updated_failed: "Error during update of OAuthClientToken" oauth_client_not_found_explanation: > - This error appears after you have updated the client_id and - client_secret in OpenProject, but haven't updated the 'Return URI' field - in the OAuth2 provider. + This error appears after you have updated the client_id and client_secret + in OpenProject, but haven't updated the 'Return URI' field in the OAuth2 provider. oauth_code_not_present: "OAuth2 'code' not found in 'callback' endpoint (redirect_uri)." oauth_code_not_present_explanation: > - This error appears if you have selected the wrong response_type in the - OAuth2 provider. Response_type should be 'code' or similar. + This error appears if you have selected the wrong response_type + in the OAuth2 provider. Response_type should be 'code' or similar. oauth_state_not_present: "OAuth2 'state' not found in 'callback' endpoint (redirect_uri)." oauth_state_not_present_explanation: > - The 'state' is used to indicate to OpenProject where to continue after a - successful OAuth2 authorization. A missing 'state' is an internal error - that may appear during setup. Please contact your system administrator. + The 'state' is used to indicate to OpenProject where to continue + after a successful OAuth2 authorization. + A missing 'state' is an internal error that may appear during setup. + Please contact your system administrator. rack_oauth2: client_secret_invalid: "Client secret is invalid (client_secret_invalid)" invalid_request: > - OAuth2 Authorization Server responded with 'invalid_request'. This - error appears if you try to authorize multiple times or in case of - technical issues. - invalid_response: "OAuth2 Authorization Server provided an invalid response - (invalid_response)" - invalid_grant: "The OAuth2 Authorization Server asks you to reauthorize - (invalid_grant)." - invalid_client: "The OAuth2 Authorization Server doesn't recognize OpenProject - (invalid_client)." - unauthorized_client: "The OAuth2 Authorization Server rejects the grant type - (unauthorized_client)" - unsupported_grant_type: "The OAuth2 Authorization Server asks you to reauthorize - (unsupported_grant_type)." + OAuth2 Authorization Server responded with 'invalid_request'. + This error appears if you try to authorize multiple times or in case of technical issues. + invalid_response: "OAuth2 Authorization Server provided an invalid response (invalid_response)" + invalid_grant: "The OAuth2 Authorization Server asks you to reauthorize (invalid_grant)." + invalid_client: "The OAuth2 Authorization Server doesn't recognize OpenProject (invalid_client)." + unauthorized_client: "The OAuth2 Authorization Server rejects the grant type (unauthorized_client)" + unsupported_grant_type: "The OAuth2 Authorization Server asks you to reauthorize (unsupported_grant_type)." invalid_scope: "You are not allowed to access the requested resource (invalid_scope)." http: request: failed_authorization: "The server side request failed authorizing itself." - missing_authorization: "The server side request failed due to missing - authorization information." + missing_authorization: "The server side request failed due to missing authorization information." response: unexpected: "Unexpected response received." @@ -7124,8 +6323,7 @@ en: plugin_openproject_auth_plugins: name: "OpenProject Auth Plugins" - description: "Integration of OmniAuth strategy providers for authentication in - OpenProject." + description: "Integration of OmniAuth strategy providers for authentication in OpenProject." plugin_openproject_auth_saml: name: "OmniAuth SAML / Single-Sign On" description: "Adds the OmniAuth SAML provider to OpenProject" @@ -7139,8 +6337,6 @@ en: external_link_warning: title: "Leaving OpenProject" - warning_message: "You are about to leave OpenProject and visit an external - website. Please be aware that external websites are not under our control - and may have different privacy and security policies." + warning_message: "You are about to leave OpenProject and visit an external website. Please be aware that external websites are not under our control and may have different privacy and security policies." continue_message: "Are you sure you want to proceed to the following external link?" continue_button: "Continue to external website" From f404f7c354b63d18c1953513a66069a3bfec4a14 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Wed, 22 Apr 2026 15:14:16 +0200 Subject: [PATCH 076/280] Properly destroy items linked to the user when they are destroyed --- app/models/persisted_query.rb | 2 +- app/models/persisted_view.rb | 17 ++++- app/models/principal.rb | 3 + app/workers/principals/delete_job.rb | 27 ++++++++ .../principals/delete_job_integration_spec.rb | 69 +++++++++++++++++++ 5 files changed, 116 insertions(+), 2 deletions(-) diff --git a/app/models/persisted_query.rb b/app/models/persisted_query.rb index c17bf0cc30b..19532a062ac 100644 --- a/app/models/persisted_query.rb +++ b/app/models/persisted_query.rb @@ -34,7 +34,7 @@ class PersistedQuery < ApplicationRecord include ::Scopes::Scoped belongs_to :project, optional: true - belongs_to :principal, optional: true + belongs_to :principal, optional: true, inverse_of: :persisted_queries has_many :views, class_name: "PersistedView", as: :query, diff --git a/app/models/persisted_view.rb b/app/models/persisted_view.rb index 60ade0e87aa..b3d581d4573 100644 --- a/app/models/persisted_view.rb +++ b/app/models/persisted_view.rb @@ -30,7 +30,7 @@ class PersistedView < ApplicationRecord belongs_to :project, optional: true - belongs_to :principal, optional: true + belongs_to :principal, optional: true, inverse_of: :persisted_views belongs_to :query, polymorphic: true, optional: true belongs_to :parent, class_name: "PersistedView", optional: true @@ -43,8 +43,23 @@ class PersistedView < ApplicationRecord scope :public_views, -> { where(public: true) } scope :private_views, ->(principal: User.current) { where(public: false, principal:) } + after_destroy :destroy_query_if_orphaned + # Returns the query of this view or, if not set, the query of the parent view. def effective_query query || parent&.effective_query end + + private + + # When this view is destroyed, also destroy its query unless another public + # view still references it. Views belonging to the same owner that are also + # going away (e.g. during user deletion) do not count as "still referencing" + # since only public views keep a query alive. + def destroy_query_if_orphaned + return if query.nil? + return if PersistedView.exists?(query:, public: true) + + query.destroy! + end end diff --git a/app/models/principal.rb b/app/models/principal.rb index 1ec1c24a00e..156b31dfcd1 100644 --- a/app/models/principal.rb +++ b/app/models/principal.rb @@ -77,6 +77,9 @@ class Principal < ApplicationRecord inverse_of: :principal has_many :auth_providers, through: :user_auth_provider_links + has_many :persisted_views, inverse_of: :principal, dependent: :nullify + has_many :persisted_queries, inverse_of: :principal, dependent: :nullify + has_paper_trail scopes :like, diff --git a/app/workers/principals/delete_job.rb b/app/workers/principals/delete_job.rb index 68b35d0dca1..f7dc88960bd 100644 --- a/app/workers/principals/delete_job.rb +++ b/app/workers/principals/delete_job.rb @@ -67,6 +67,9 @@ class Principals::DeleteJob < ApplicationJob def delete_associated(principal) delete_notifications(principal) delete_private_queries(principal) + delete_private_persisted_views(principal) + nullify_persisted_query_principals(principal) + delete_user_ordered_query_entities(principal) delete_tokens(principal) delete_favorites(principal) end @@ -84,6 +87,30 @@ class Principals::DeleteJob < ApplicationJob CostQuery.where(user_id: principal.id, is_public: false).delete_all end + # Private persisted views belong to their owner and are removed with them. + # Public views are kept, but their principal reference is nullified so the + # view becomes "ownerless" rather than pointing at the soon-to-be-deleted + # user. Destroying the private views also triggers the view's after_destroy + # hook, which cleans up queries that are no longer referenced by any public + # view. + def delete_private_persisted_views(principal) + PersistedView.where(principal_id: principal.id, public: false).destroy_all + PersistedView.where(principal_id: principal.id, public: true).update_all(principal_id: nil) + end + + # Queries have no public/private flag — their visibility is derived from the + # views that reference them. Any query still reachable after the view + # cleanup above stays; we just drop the owner pointer. + def nullify_persisted_query_principals(principal) + PersistedQuery.where(principal_id: principal.id).update_all(principal_id: nil) + end + + # Manually curated entries that point at the deleted user are dropped — a + # list of "Deleted user, Deleted user, …" is worse than just removing them. + def delete_user_ordered_query_entities(principal) + OrderedPersistedQueryEntity.where(entity: principal).delete_all + end + def delete_favorites(principal) Favorite.where(user_id: principal.id).delete_all end diff --git a/spec/workers/principals/delete_job_integration_spec.rb b/spec/workers/principals/delete_job_integration_spec.rb index 042b90c3dad..03f3a62bfe6 100644 --- a/spec/workers/principals/delete_job_integration_spec.rb +++ b/spec/workers/principals/delete_job_integration_spec.rb @@ -251,6 +251,74 @@ RSpec.describe Principals::DeleteJob, type: :model do it { expect(Query.find_by(id: query.id)).to be_nil } end + shared_examples_for "persisted view and query handling" do + let!(:private_view) { PersistedView.create!(name: "Private", public: false, principal:) } + let!(:public_view) { PersistedView.create!(name: "Public", public: true, principal:) } + + # Query shared between the principal's private view and another user's public view — + # must survive the destruction of the private view. + let!(:other_user) { create(:user) } + let!(:shared_query) { UserQuery.create!(name: "Shared") } + let!(:shared_private_view) do + PersistedView.create!(name: "Shared-private", public: false, principal:, query: shared_query) + end + let!(:other_public_view) do + PersistedView.create!(name: "Other-public", public: true, principal: other_user, query: shared_query) + end + + # Query referenced only from the principal's private view — should be destroyed along with the view. + let!(:orphaned_query) { UserQuery.create!(name: "Orphaned", principal:) } + let!(:orphaning_view) do + PersistedView.create!(name: "Orphaning-private", public: false, principal:, query: orphaned_query) + end + + # Public query owned by the principal — kept, principal_id nullified. + let!(:kept_user_query) { UserQuery.create!(name: "Public-owned", principal:) } + let!(:kept_public_view) do + PersistedView.create!(name: "Keeps-query", public: true, principal: other_user, query: kept_user_query) + end + + # Manual entries pointing at the principal — must be deleted. + let!(:manual_entry_user) do + OrderedPersistedQueryEntity.create!(persisted_query: shared_query, entity: principal, position: 1) + end + let!(:manual_entry_other) do + OrderedPersistedQueryEntity.create!(persisted_query: shared_query, entity: other_user, position: 2) + end + + before { job } + + it "deletes private views owned by the principal" do + expect(PersistedView.find_by(id: private_view.id)).to be_nil + expect(PersistedView.find_by(id: shared_private_view.id)).to be_nil + expect(PersistedView.find_by(id: orphaning_view.id)).to be_nil + end + + it "keeps public views but nullifies their principal_id" do + expect(public_view.reload.principal_id).to be_nil + end + + it "destroys queries that are no longer referenced by any public view" do + expect(PersistedQuery.find_by(id: orphaned_query.id)).to be_nil + end + + it "keeps queries still referenced by another public view" do + expect(PersistedQuery.find_by(id: shared_query.id)).to eq(shared_query) + end + + it "nullifies principal_id on surviving queries" do + expect(kept_user_query.reload.principal_id).to be_nil + end + + it "deletes ordered entries that pointed at the principal" do + expect(OrderedPersistedQueryEntity.find_by(id: manual_entry_user.id)).to be_nil + end + + it "keeps ordered entries that point at other users" do + expect(OrderedPersistedQueryEntity.find_by(id: manual_entry_other.id)).to eq(manual_entry_other) + end + end + shared_examples_for "backup token handling" do let!(:backup_token) do create(:backup_token, user: principal) @@ -486,6 +554,7 @@ RSpec.describe Principals::DeleteJob, type: :model do it_behaves_like "backup token handling" it_behaves_like "notification handling" it_behaves_like "private query handling" + it_behaves_like "persisted view and query handling" it_behaves_like "issue category handling" it_behaves_like "private cost_query handling" it_behaves_like "public cost_query handling" From 5ccfaaecbe99f634d56cfc189455e0cc6965f673 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Apr 2026 11:18:29 +0200 Subject: [PATCH 077/280] Bump uuid from 13.0.0 to 14.0.0 in /frontend (#22887) Bumps [uuid](https://github.com/uuidjs/uuid) from 13.0.0 to 14.0.0. - [Release notes](https://github.com/uuidjs/uuid/releases) - [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md) - [Commits](https://github.com/uuidjs/uuid/compare/v13.0.0...v14.0.0) --- updated-dependencies: - dependency-name: uuid dependency-version: 14.0.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- frontend/package-lock.json | 14 +++++++------- frontend/package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 394487966b1..01d25f06d61 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -124,7 +124,7 @@ "turbo_power": "^0.7.1", "typedjson": "^1.5.1", "urijs": "^1.19.11", - "uuid": "^13.0.0" + "uuid": "^14.0.0" }, "devDependencies": { "@angular-builders/custom-esbuild": "^21.0.3", @@ -24856,9 +24856,9 @@ } }, "node_modules/uuid": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", - "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", + "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -42124,9 +42124,9 @@ } }, "uuid": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", - "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==" + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", + "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==" }, "v8-compile-cache-lib": { "version": "3.0.1", diff --git a/frontend/package.json b/frontend/package.json index bc5df4778b5..ccb189a4186 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -179,7 +179,7 @@ "turbo_power": "^0.7.1", "typedjson": "^1.5.1", "urijs": "^1.19.11", - "uuid": "^13.0.0" + "uuid": "^14.0.0" }, "optionalDependencies": { "fsevents": "*" From f4bd79246e48835b9738617f33dc6e9828e6a349 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Thu, 23 Apr 2026 13:40:40 +0300 Subject: [PATCH 078/280] Rename resolveWorkPackagePk to resolveNumericId "Pk" reads as DB jargon and has tripped up reviewers. "Numeric id" pairs symmetrically with resolveRoutingId and describes what the caller gets back without leaking internals. --- .../work-packages/helpers/work-package-id-resolvers.ts | 8 ++++---- .../work-packages/services/work-package.service.ts | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts b/frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts index 0cfbfb6e71e..0f39dc7a874 100644 --- a/frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts +++ b/frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts @@ -17,20 +17,20 @@ export function resolveRoutingId(states:States, workPackageId:string):string { /** * Resolve a URL route parameter (which may be numeric `"42"` or semantic - * `"PROJ-7"`) to the internal primary key we use for cache, selection, + * `"PROJ-7"`) to the internal numeric ID we use for cache, selection, * focus, and API calls. * * Returns `null` if the WP can't be found in the cache. Unlike * {@link resolveRoutingId}, there is no safe fallback: returning the * input unchanged would hand a semantic identifier to code that expects - * a numeric PK, silently corrupting comparisons and lookups. Callers + * a numeric ID, silently corrupting comparisons and lookups. Callers * must handle the `null` case explicitly. * - * The cache is currently keyed only by numeric PK, so semantic route + * The cache is currently keyed only by numeric ID, so semantic route * params will reliably miss until the cache is dual-keyed. Treat this * helper as a temporary shim around that limitation. */ -export function resolveWorkPackagePk(states:States, routeParam:string):string | null { +export function resolveNumericId(states:States, routeParam:string):string | null { const wp = states.workPackages.get(routeParam)?.value; return wp?.id ?? null; } diff --git a/frontend/src/app/features/work-packages/services/work-package.service.ts b/frontend/src/app/features/work-packages/services/work-package.service.ts index addedda59f5..adf66211379 100644 --- a/frontend/src/app/features/work-packages/services/work-package.service.ts +++ b/frontend/src/app/features/work-packages/services/work-package.service.ts @@ -35,7 +35,7 @@ import { ToastService } from 'core-app/shared/components/toaster/toast.service'; import { I18nService } from 'core-app/core/i18n/i18n.service'; import { HalDeletedEvent, HalEventsService } from 'core-app/features/hal/services/hal-events.service'; import { States } from 'core-app/core/states/states.service'; -import { resolveWorkPackagePk } from 'core-app/features/work-packages/helpers/work-package-id-resolvers'; +import { resolveNumericId } from 'core-app/features/work-packages/helpers/work-package-id-resolvers'; @Injectable() export class WorkPackageService { @@ -73,7 +73,7 @@ export class WorkPackageService { ids.forEach((id) => this.halEvents.push({ _type: 'WorkPackage', id }, { eventType: 'deleted' } as HalDeletedEvent)); const routeWpId = this.$state.params.workPackageId as string; - const numericId = resolveWorkPackagePk(this.states, routeWpId); + const numericId = resolveNumericId(this.states, routeWpId); if (numericId && this.$state.includes('**.list.details.**') && ids.includes(numericId)) { From ec6af7cd509441082fcfcf078bedf6da54982d57 Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Thu, 23 Apr 2026 14:03:45 +0300 Subject: [PATCH 079/280] Tighten wp-single-card URL regex to use shared identifier pattern MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The selection-state URL fallback was matching any segment after /details/ via [^/?#]+. Swap to the shared WP_ID_URL_PATTERN constant so the regex mirrors the backend's ID_ROUTE_CONSTRAINT and the uiRouter route definitions — single source of truth for what a valid work-package URL segment looks like. Adds a trailing (?:/|$) terminator for the /details/:wp_id/:tab shape. --- .../wp-single-card/wp-single-card.component.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index 10b6d402b27..1f2f19675d7 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -46,6 +46,9 @@ import { import { KeepTabService } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service'; +import { WP_ID_URL_PATTERN } from 'core-app/shared/helpers/work-package-id-pattern'; + +const DETAILS_URL_PATTERN = new RegExp(`/details/(${WP_ID_URL_PATTERN})(?:/|$)`); @Component({ selector: 'wp-single-card', @@ -156,8 +159,8 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen // In non-router views (e.g. Team Planner, Calendar): // Use URL-based detection so that closing the split view (which changes the URL // but does not clear the selection service) correctly deselects the card. - // Matches either numeric or semantic identifier segments. - const urlMatch = /\/details\/([^/?#]+)/.exec(window.location.pathname); + // Matches either numeric or semantic identifier segments via the shared pattern. + const urlMatch = DETAILS_URL_PATTERN.exec(window.location.pathname); return urlMatch?.[1] === this.workPackage.id || urlMatch?.[1] === this.workPackage.displayId; } From 8df132c552934f0d190c3327ed6dd2839497c83e Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Thu, 23 Apr 2026 14:15:18 +0300 Subject: [PATCH 080/280] Extract matchesRoutingId helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two call sites in wp-single-card compared a string (either a uiRouter route param or a URL-regex capture) against both workPackage.id and workPackage.displayId — the same operation in two spellings. Pull it into a helper that pairs with resolveRoutingId: the resolver constructs the canonical form, the matcher tests any form. --- .../wp-single-card/wp-single-card.component.ts | 9 +++------ .../helpers/work-package-id-resolvers.ts | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts index 1f2f19675d7..6db2083aa4f 100644 --- a/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts +++ b/frontend/src/app/features/work-packages/components/wp-card-view/wp-single-card/wp-single-card.component.ts @@ -47,6 +47,7 @@ import { KeepTabService } from 'core-app/features/work-packages/components/wp-single-view-tabs/keep-tab/keep-tab.service'; import { WP_ID_URL_PATTERN } from 'core-app/shared/helpers/work-package-id-pattern'; +import { matchesRoutingId } from 'core-app/features/work-packages/helpers/work-package-id-resolvers'; const DETAILS_URL_PATTERN = new RegExp(`/details/(${WP_ID_URL_PATTERN})(?:/|$)`); @@ -149,20 +150,16 @@ export class WorkPackageSingleCardComponent extends UntilDestroyedMixin implemen map(() => { if (this.selectedWhenOpen) { // In uiRouter views, use the route param directly. - // Route param may be numeric ("42") or semantic ("PROJ-7"), so compare both. const wpIdFromRoute = this.uiRouterGlobals.params.workPackageId as string|undefined; if (wpIdFromRoute) { - return wpIdFromRoute === this.workPackage.id - || wpIdFromRoute === this.workPackage.displayId; + return matchesRoutingId(this.workPackage, wpIdFromRoute); } // In non-router views (e.g. Team Planner, Calendar): // Use URL-based detection so that closing the split view (which changes the URL // but does not clear the selection service) correctly deselects the card. - // Matches either numeric or semantic identifier segments via the shared pattern. const urlMatch = DETAILS_URL_PATTERN.exec(window.location.pathname); - return urlMatch?.[1] === this.workPackage.id - || urlMatch?.[1] === this.workPackage.displayId; + return matchesRoutingId(this.workPackage, urlMatch?.[1]); } return this.wpTableSelection.isSelected(this.workPackage.id!); diff --git a/frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts b/frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts index 0f39dc7a874..9a43bb5f015 100644 --- a/frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts +++ b/frontend/src/app/features/work-packages/helpers/work-package-id-resolvers.ts @@ -1,4 +1,5 @@ import { States } from 'core-app/core/states/states.service'; +import { WorkPackageResource } from 'core-app/features/hal/resources/work-package-resource'; /** * Resolve a work package identifier to its semantic routing ID (e.g. "PROJ-42"). @@ -34,3 +35,20 @@ export function resolveNumericId(states:States, routeParam:string):string | null const wp = states.workPackages.get(routeParam)?.value; return wp?.id ?? null; } + +/** + * Whether the given string identifies the given work package in a routing + * context, matching either its numeric ID or its semantic displayId. + * + * Pairs with {@link resolveRoutingId}: that function constructs the + * canonical form for a URL, this one tests whether an incoming string + * (URL segment, route param, regex capture) targets a specific WP, + * without the caller having to know which form it is in. + */ +export function matchesRoutingId( + wp:WorkPackageResource, + candidate:string|null|undefined, +):boolean { + if (!candidate) return false; + return candidate === wp.id || candidate === wp.displayId; +} From d53a39ce4bd4a53f60aaa231fb8c260bf2c8a7a0 Mon Sep 17 00:00:00 2001 From: Eric Schubert Date: Thu, 23 Apr 2026 13:40:18 +0200 Subject: [PATCH 081/280] [#73909] removed wiki tab global blank slate - resolved post merge conflict errors - improve counting of page links in tab --- .../work_package_wikis_tab_component.html.erb | 37 +++++++------------ .../providers/internal/queries/page_info.rb | 8 ++-- .../providers/xwiki/queries/page_info.rb | 6 +-- .../app/services/wikis/page_link_service.rb | 8 +++- modules/wikis/config/locales/en.yml | 5 --- 5 files changed, 28 insertions(+), 36 deletions(-) diff --git a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb index 94ff2b5c594..22939ef4b85 100644 --- a/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb +++ b/modules/wikis/app/components/wikis/work_package_wikis_tab_component.html.erb @@ -31,30 +31,21 @@ See COPYRIGHT and LICENSE files for more details. content_tag("turbo-frame", id: "work-package-wikis-tab-content") do component_wrapper do flex_layout(test_selector: "op-work-package-wikis-tab-container") do |container| - if providers.empty? + providers.each do |provider| + container.with_row(mb: 3) do + render(::Wikis::RelationPageLinksComponent.new(provider, work_package:)) + end + end + + if inline_page_links.any? + container.with_row(mb: 3) do + render(::Wikis::CollapsiblePageLinksComponent.new(inline_page_links, heading: t(".inline_page_links"))) + end + end + + if referencing_wiki_pages.any? container.with_row do - render(Primer::Beta::Blankslate.new(border: false)) do |blankslate| - blankslate.with_heading(tag: :h2).with_content(t(".blankslate.heading")) - blankslate.with_description { t(".blankslate.description") } - end - end - else - providers.each do |provider| - container.with_row(mb: 3) do - render(::Wikis::RelationPageLinksComponent.new(provider, work_package:)) - end - end - - if inline_page_links.any? - container.with_row(mb: 3) do - render(::Wikis::CollapsiblePageLinksComponent.new(inline_page_links, heading: t(".inline_page_links"))) - end - end - - if referencing_wiki_pages.any? - container.with_row do - render(::Wikis::CollapsiblePageLinksComponent.new(referencing_wiki_pages, heading: t(".referencing_pages"))) - end + render(::Wikis::CollapsiblePageLinksComponent.new(referencing_wiki_pages, heading: t(".referencing_pages"))) end end end diff --git a/modules/wikis/app/services/wikis/adapters/providers/internal/queries/page_info.rb b/modules/wikis/app/services/wikis/adapters/providers/internal/queries/page_info.rb index 8288ec9f4dd..6356e00a593 100644 --- a/modules/wikis/app/services/wikis/adapters/providers/internal/queries/page_info.rb +++ b/modules/wikis/app/services/wikis/adapters/providers/internal/queries/page_info.rb @@ -34,15 +34,15 @@ module Wikis module Internal module Queries class PageInfo < BaseQuery - def handle_query(identifier:) + def call(input_data) # TODO: should we accept implicit User.current or do we want to pass in a user explicitly? - wiki_page = WikiPage.visible.find_by(id: identifier) + wiki_page = WikiPage.visible.find_by(id: input_data.identifier) return failure(code: :not_found) if wiki_page.nil? success( Results::PageInfo.new( - identifier:, - provider: InternalProvider.first, + identifier: input_data.identifier, + provider:, title: wiki_page.title, href: url_for(only_path: true, controller: "/wiki", diff --git a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb index 625950def57..0707e5f0d5c 100644 --- a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb +++ b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb @@ -34,7 +34,7 @@ module Wikis module XWiki module Queries class PageInfo < BaseQuery - def handle_query(identifier:) + def call(input_data) title = [ "What makes XWiki special?", "API documentation", @@ -43,8 +43,8 @@ module Wikis success( Results::PageInfo.new( - identifier:, - provider: XWikiProvider.first, + identifier: input_data.identifier, + provider:, title:, href: "#" ) diff --git a/modules/wikis/app/services/wikis/page_link_service.rb b/modules/wikis/app/services/wikis/page_link_service.rb index 1711f34bee6..3cd5c500aee 100644 --- a/modules/wikis/app/services/wikis/page_link_service.rb +++ b/modules/wikis/app/services/wikis/page_link_service.rb @@ -41,6 +41,12 @@ module Wikis .merge(Provider.enabled) .where(linkable:) .count + + relation_page_links = Provider.enabled.sum { |provider| relation_page_link_infos_for(provider:, linkable:).size } + + relation_page_links + + inline_page_link_infos_for(linkable:).size + + referencing_wiki_page_infos_for(linkable:).size end def relation_page_link_infos_for(provider:, linkable:) @@ -66,7 +72,7 @@ module Wikis if linkable.id % 2 == 0 InternalProvider.enabled.each do |provider| random_wiki_page = WikiPage.order("RANDOM()").limit(1).first - referenced_in << page_info(provider: , identifier: random_wiki_page.id.to_s) + referenced_in << page_info(provider:, identifier: random_wiki_page.id.to_s) end end diff --git a/modules/wikis/config/locales/en.yml b/modules/wikis/config/locales/en.yml index 3e5c63ea0c2..ce5ab6101fc 100644 --- a/modules/wikis/config/locales/en.yml +++ b/modules/wikis/config/locales/en.yml @@ -33,11 +33,6 @@ en: work_package_wikis_tab_component: inline_page_links: Inline page links referencing_pages: Referenced in - blankslate: - heading: No wiki providers enabled - description: >- - There are no wiki providers configured and enabled. Wiki page links can only be added for enabled providers. - To add wiki providers, visit Administration > Wikis. page_link_component: remove: Remove page link relation_page_links_component: From 304190a08ebc91b489ba472d9b0e52e1d87478d9 Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Thu, 23 Apr 2026 13:38:29 +0200 Subject: [PATCH 082/280] Add specs for internal page info query This query is already doing what it should, but wasn't covered with specs yet. --- .../internal/queries/page_info_query_spec.rb | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 modules/wikis/spec/services/wikis/adapters/providers/internal/queries/page_info_query_spec.rb diff --git a/modules/wikis/spec/services/wikis/adapters/providers/internal/queries/page_info_query_spec.rb b/modules/wikis/spec/services/wikis/adapters/providers/internal/queries/page_info_query_spec.rb new file mode 100644 index 00000000000..80a8d033caa --- /dev/null +++ b/modules/wikis/spec/services/wikis/adapters/providers/internal/queries/page_info_query_spec.rb @@ -0,0 +1,70 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" + +RSpec.describe Wikis::Adapters::Providers::Internal::Queries::PageInfo do + subject { described_class.new(provider).call(input_data) } + + let(:provider) { create(:internal_wiki_provider) } + let(:input_data) { Wikis::Adapters::Input::PageInfo.build(identifier:).value! } + let(:identifier) { wiki_page.id.to_s } + + let(:wiki_page) { create(:wiki_page) } + let(:project) { wiki_page.project } + let(:other_wiki_page) { create(:wiki_page) } + let(:permissions) { %i[view_work_packages view_wiki_pages] } + + current_user { create(:user) } + + before do + create(:member, project:, user: current_user, roles: [create(:project_role, permissions:)]) + end + + it { is_expected.to be_success } + + it "resolves the wiki page" do + page_info = subject.value! + expect(page_info.title).to eq(wiki_page.title) + expect(page_info.href).to eq("/projects/#{project.identifier}/wiki/#{wiki_page.slug}") + end + + context "when identifier is wrong" do + let(:identifier) { (wiki_page.id + other_wiki_page.id).to_s } + + it { is_expected.to be_failure } + end + + context "when user can't see wiki page" do + let(:permissions) { %i[view_work_packages] } + + it { is_expected.to be_failure } + end +end From 3ebbf8378b321a111903c0ce16484ab1f87f76ac Mon Sep 17 00:00:00 2001 From: Eric Schubert Date: Thu, 23 Apr 2026 15:10:14 +0200 Subject: [PATCH 083/280] [#73909] add query for referencing pages - https://community.openproject.org/work_packages/73909 - internal query is noop - references are not supported - xwiki query returns mock data for now --- .../input/referencing_pages_contract.rb | 41 +++++++++++ .../wikis/adapters/input/referencing_pages.rb | 39 +++++++++++ .../internal/queries/referencing_pages.rb | 47 +++++++++++++ .../adapters/providers/internal/registry.rb | 1 + .../xwiki/queries/referencing_pages.rb | 68 +++++++++++++++++++ .../adapters/providers/xwiki/registry.rb | 1 + .../app/services/wikis/page_link_service.rb | 13 ++-- 7 files changed, 203 insertions(+), 7 deletions(-) create mode 100644 modules/wikis/app/contracts/wikis/adapters/input/referencing_pages_contract.rb create mode 100644 modules/wikis/app/models/wikis/adapters/input/referencing_pages.rb create mode 100644 modules/wikis/app/services/wikis/adapters/providers/internal/queries/referencing_pages.rb create mode 100644 modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/referencing_pages.rb diff --git a/modules/wikis/app/contracts/wikis/adapters/input/referencing_pages_contract.rb b/modules/wikis/app/contracts/wikis/adapters/input/referencing_pages_contract.rb new file mode 100644 index 00000000000..9f56715837d --- /dev/null +++ b/modules/wikis/app/contracts/wikis/adapters/input/referencing_pages_contract.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module Wikis + module Adapters + module Input + class ReferencingPagesContract < DryApplicationContract + params do + required(:linkable).filled(type?: WorkPackage) + end + end + end + end +end diff --git a/modules/wikis/app/models/wikis/adapters/input/referencing_pages.rb b/modules/wikis/app/models/wikis/adapters/input/referencing_pages.rb new file mode 100644 index 00000000000..2ea7417e527 --- /dev/null +++ b/modules/wikis/app/models/wikis/adapters/input/referencing_pages.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module Wikis::Adapters::Input + ReferencingPages = Data.define(:linkable) do + private_class_method :new + + def self.build(linkable:, contract: ReferencingPagesContract.new) + contract.call(linkable:).to_monad.fmap { new(**it.to_h) } + end + end +end diff --git a/modules/wikis/app/services/wikis/adapters/providers/internal/queries/referencing_pages.rb b/modules/wikis/app/services/wikis/adapters/providers/internal/queries/referencing_pages.rb new file mode 100644 index 00000000000..69a5ceac21f --- /dev/null +++ b/modules/wikis/app/services/wikis/adapters/providers/internal/queries/referencing_pages.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module Wikis + module Adapters + module Providers + module Internal + module Queries + class ReferencingPages < BaseQuery + def call(_input_data) + # noop + + success([]) + end + end + end + end + end + end +end diff --git a/modules/wikis/app/services/wikis/adapters/providers/internal/registry.rb b/modules/wikis/app/services/wikis/adapters/providers/internal/registry.rb index e5fd944822e..4b2e64c0cba 100644 --- a/modules/wikis/app/services/wikis/adapters/providers/internal/registry.rb +++ b/modules/wikis/app/services/wikis/adapters/providers/internal/registry.rb @@ -51,6 +51,7 @@ module Wikis namespace("queries") do register(:page_info, Queries::PageInfo) + register(:referencing_pages, Queries::ReferencingPages) end end end diff --git a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/referencing_pages.rb b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/referencing_pages.rb new file mode 100644 index 00000000000..136691fa807 --- /dev/null +++ b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/referencing_pages.rb @@ -0,0 +1,68 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module Wikis + module Adapters + module Providers + module XWiki + module Queries + class ReferencingPages < BaseQuery + def call(_input_data) + # TODO: use real API endpoints once available + + title = [ + "What makes XWiki special?", + "API documentation", + "A brief introduction on configuring your own XWiki instance and connect it to OpenProject." + ] + + success( + [ + Results::PageInfo.new( + identifier: "1337", + provider:, + title: title.sample, + href: "#" + ), + Results::PageInfo.new( + identifier: "1338", + provider:, + title: title.sample, + href: "#" + ) + ] + ) + end + end + end + end + end + end +end diff --git a/modules/wikis/app/services/wikis/adapters/providers/xwiki/registry.rb b/modules/wikis/app/services/wikis/adapters/providers/xwiki/registry.rb index 84abcb3cb09..a4aa77e2b5a 100644 --- a/modules/wikis/app/services/wikis/adapters/providers/xwiki/registry.rb +++ b/modules/wikis/app/services/wikis/adapters/providers/xwiki/registry.rb @@ -61,6 +61,7 @@ module Wikis namespace("queries") do register(:page_info, Queries::PageInfo) + register(:referencing_pages, Queries::ReferencingPages) end end end diff --git a/modules/wikis/app/services/wikis/page_link_service.rb b/modules/wikis/app/services/wikis/page_link_service.rb index 3cd5c500aee..187b3eed46d 100644 --- a/modules/wikis/app/services/wikis/page_link_service.rb +++ b/modules/wikis/app/services/wikis/page_link_service.rb @@ -64,15 +64,14 @@ module Wikis end def referencing_wiki_page_infos_for(linkable:) - # TODO: iterate over all providers and fetch mentions of this linkable - referenced_in = [] - # Show a random internal wiki page as a referencing wiki page for work packages with even ids - if linkable.id % 2 == 0 - InternalProvider.enabled.each do |provider| - random_wiki_page = WikiPage.order("RANDOM()").limit(1).first - referenced_in << page_info(provider:, identifier: random_wiki_page.id.to_s) + Adapters::Input::ReferencingPages.build(linkable:).bind do |input| + Provider.enabled.each do |provider| + provider.resolve("queries.referencing_pages") + .call(input) + # Only return page infos for successful results + .fmap { |page_infos| referenced_in.concat(page_infos.map { Success(it) }) } end end From 09df122a0ebc7fbe6d89ab6dd8414d76d5828c02 Mon Sep 17 00:00:00 2001 From: Eric Schubert Date: Thu, 23 Apr 2026 15:22:15 +0200 Subject: [PATCH 084/280] [#73909] removed obsolete code --- modules/wikis/app/services/wikis/page_link_service.rb | 9 --------- 1 file changed, 9 deletions(-) diff --git a/modules/wikis/app/services/wikis/page_link_service.rb b/modules/wikis/app/services/wikis/page_link_service.rb index 3cd5c500aee..3214ae00a6c 100644 --- a/modules/wikis/app/services/wikis/page_link_service.rb +++ b/modules/wikis/app/services/wikis/page_link_service.rb @@ -33,15 +33,6 @@ module Wikis include Dry::Monads[:result] def count(linkable) - # Incomplete implementation until connection to Wikis API is done to fetch relation wiki page links - # from external providers. - # TODO: Replace with complete implementation - - PageLink.joins(:provider) - .merge(Provider.enabled) - .where(linkable:) - .count - relation_page_links = Provider.enabled.sum { |provider| relation_page_link_infos_for(provider:, linkable:).size } relation_page_links + From df5eca254ef830ca5fae8ab909222a29eb38f930 Mon Sep 17 00:00:00 2001 From: Mir Bhatia Date: Thu, 23 Apr 2026 11:17:07 +0200 Subject: [PATCH 085/280] Replace ActionMenu with multi select SelectPanel for role selector --- .../workflows/blankslate_component.html.erb | 3 +- .../workflows/status_form_component.html.erb | 3 +- .../status_matrix_form_component.html.erb | 38 ++++++--- .../workflows/status_matrix_form_component.rb | 16 +++- ...s_removal_danger_dialog_component.html.erb | 3 +- app/controllers/workflows/tabs_controller.rb | 32 +++++--- app/controllers/workflows_controller.rb | 11 ++- app/helpers/workflow_helper.rb | 2 +- app/views/workflows/edit.html.erb | 4 +- app/views/workflows/summaries/show.html.erb | 2 +- app/views/workflows/tabs/edit.html.erb | 2 +- config/locales/en.yml | 4 + .../workflow-checkbox-state.controller.ts | 65 ++++++++++++---- .../admin/workflow-role-select.controller.ts | 78 +++++++++++++++++++ 14 files changed, 214 insertions(+), 49 deletions(-) create mode 100644 frontend/src/stimulus/controllers/dynamic/admin/workflow-role-select.controller.ts diff --git a/app/components/workflows/blankslate_component.html.erb b/app/components/workflows/blankslate_component.html.erb index da7a8b2ae1c..6947ea1984f 100644 --- a/app/components/workflows/blankslate_component.html.erb +++ b/app/components/workflows/blankslate_component.html.erb @@ -31,8 +31,9 @@ See COPYRIGHT and LICENSE files for more details. render(Primer::Beta::Blankslate.new(border: true)) do |blankslate| blankslate.with_heading(tag: :h2).with_content(t("admin.workflows.blankslate.title")) blankslate.with_description_content(t("admin.workflows.blankslate.description")) + # TODO: pass all roles once BlankslateComponent accepts roles: and StatusDialogComponent supports multi-role natively. blankslate.with_primary_action( - href: helpers.status_dialog_workflow_tab_path(@type, @tab, role_id: @role.id), + href: helpers.status_dialog_workflow_tab_path(@type, @tab, role_ids: [@role.id]), scheme: :secondary, data: { controller: "async-dialog" } ) do |button| diff --git a/app/components/workflows/status_form_component.html.erb b/app/components/workflows/status_form_component.html.erb index d9bf8ef27b7..59394c0a330 100644 --- a/app/components/workflows/status_form_component.html.erb +++ b/app/components/workflows/status_form_component.html.erb @@ -28,8 +28,9 @@ See COPYRIGHT and LICENSE files for more details. ++#%> <%= + # TODO: pass all roles once StatusFormComponent and confirm_statuses support multi-role natively. primer_form_with( - url: helpers.confirm_statuses_workflow_tab_path(@type, @tab, role_id: @role.id), + url: helpers.confirm_statuses_workflow_tab_path(@type, @tab, role_ids: [@role.id]), method: :post, id: FORM_ID, data: { turbo_frame: "workflow-table" } diff --git a/app/components/workflows/status_matrix_form_component.html.erb b/app/components/workflows/status_matrix_form_component.html.erb index 93522276a2f..c6aa018b334 100644 --- a/app/components/workflows/status_matrix_form_component.html.erb +++ b/app/components/workflows/status_matrix_form_component.html.erb @@ -32,19 +32,29 @@ See COPYRIGHT and LICENSE files for more details. render Primer::OpenProject::SubHeader.new do |subheader| if @type && @available_roles.any? subheader.with_filter_component do - render(Primer::Alpha::ActionMenu.new(select_variant: :single)) do |menu| - menu.with_show_button(scheme: :secondary) do |button| + render( + Primer::Alpha::SelectPanel.new( + select_variant: :multiple, + fetch_strategy: :local, + title: t("admin.workflows.role_selector.title"), + data: data_attributes + ) + ) do |panel| + panel.with_show_button(scheme: :secondary) do |button| button.with_trailing_visual_icon(icon: :"triangle-down") - @role ? t("admin.workflows.role_selector.label", role: @role.name) : t("admin.workflows.role_selector.no_role") + if @roles.many? + t("admin.workflows.role_selector.roles", count: @roles.size) + elsif @role + t("admin.workflows.role_selector.label", role: @role.name) + else + t("admin.workflows.role_selector.no_role") + end end @available_roles.each do |available_role| - menu.with_item( + panel.with_item( label: available_role.name, - active: available_role == @role, - tag: :a, - href: helpers.edit_workflow_tab_path(@type, @tab, role_id: available_role.id), - content_arguments: { data: { "admin--workflow-checkbox-state-confirmation-trigger": "click", - turbo_action: "advance" } } + active: @roles.include?(available_role), + item_id: available_role.id ) end end @@ -56,7 +66,9 @@ See COPYRIGHT and LICENSE files for more details. scheme: :secondary, leading_icon: :plus, label: t("admin.workflows.status_button"), - href: helpers.status_dialog_workflow_tab_path(@type, @tab, role_id: @role&.id, status_ids: @statuses.pluck(:id).presence), + # TODO: status_dialog and StatusDialogComponent currently work with a single role (@role = @roles.first); + # update when they support multi-role natively. + href: helpers.status_dialog_workflow_tab_path(@type, @tab, role_ids: @roles.map(&:id), status_ids: @statuses.pluck(:id).presence), data: { controller: "async-dialog" } ) do t("admin.workflows.status_button") @@ -76,7 +88,9 @@ See COPYRIGHT and LICENSE files for more details. } ) do %> <%= hidden_field_tag "type_id", @type.id %> - <%= hidden_field_tag "role_id", @role.id %> + <% @roles.each do |role| %> + <%= hidden_field_tag "role_ids[]", role.id %> + <% end %> <%= hidden_field_tag "tab", @tab %> <%= helpers.render_tabs helpers.workflow_tabs(@type) %> @@ -94,7 +108,7 @@ See COPYRIGHT and LICENSE files for more details. Primer::OpenProject::FeedbackDialog.new( title: t("admin.workflows.leave_confirmation.title"), data: { - "admin--workflow-checkbox-state-target": "confirmationDialog", + "admin--workflow-checkbox-state-target": "confirmationDialog" } ) ) do |dialog| diff --git a/app/components/workflows/status_matrix_form_component.rb b/app/components/workflows/status_matrix_form_component.rb index 14c3ade5fdb..bc3365aaff1 100644 --- a/app/components/workflows/status_matrix_form_component.rb +++ b/app/components/workflows/status_matrix_form_component.rb @@ -33,14 +33,26 @@ module Workflows include OpTurbo::Streamable include OpPrimer::ComponentHelpers - def initialize(tab:, role:, type:, available_roles:, statuses:, has_status_changes:) + def initialize(tab:, roles:, type:, available_roles:, statuses:, has_status_changes:) super @tab = tab - @role = role + @roles = roles + @role = @roles.first @type = type @available_roles = available_roles @statuses = statuses @has_status_changes = has_status_changes end + + private + + def data_attributes + { + controller: "admin--workflow-role-select", + "admin--workflow-role-select-base-url-value": helpers.edit_workflow_path(@type), + "admin--workflow-role-select-current-role-ids-value": @roles.map(&:id).join(","), + "admin--workflow-role-select-admin--workflow-checkbox-state-outlet": "#workflow_form" + } + end end end diff --git a/app/components/workflows/status_removal_danger_dialog_component.html.erb b/app/components/workflows/status_removal_danger_dialog_component.html.erb index c2b020ff5b7..8a8ccd8e578 100644 --- a/app/components/workflows/status_removal_danger_dialog_component.html.erb +++ b/app/components/workflows/status_removal_danger_dialog_component.html.erb @@ -46,7 +46,8 @@ See COPYRIGHT and LICENSE files for more details. # The reason this is done here is because the submit is not a DELETE, and GET form submissions # strip url params dialog.with_additional_details do - concat(hidden_field_tag(:role_id, @role.id)) + # TODO: pass all roles once StatusRemovalDangerDialogComponent supports multi-role natively. + concat(hidden_field_tag("role_ids[]", @role.id)) @status_ids.each { |id| concat(hidden_field_tag("status_ids[]", id)) } end end diff --git a/app/controllers/workflows/tabs_controller.rb b/app/controllers/workflows/tabs_controller.rb index 94c9805c22a..6c476c890b5 100644 --- a/app/controllers/workflows/tabs_controller.rb +++ b/app/controllers/workflows/tabs_controller.rb @@ -38,11 +38,11 @@ class Workflows::TabsController < ApplicationController before_action :set_type before_action :set_tab before_action :set_eligible_roles - before_action :set_role + before_action :set_roles def edit unless turbo_frame_request? - redirect_to edit_workflow_path(@type, role_id: params[:role_id], tab: @tab) + redirect_to edit_workflow_path(@type, role_ids: params[:role_ids], tab: @tab) return end @@ -53,12 +53,19 @@ class Workflows::TabsController < ApplicationController end end - def update - call = Workflows::BulkUpdateService - .new(role: @role, type: @type, tab: @tab) - .call(permitted_status_params) + def update # rubocop:disable Metrics/AbcSize + success = false + Workflow.transaction do + success = true + @roles.each do |role| + result = Workflows::BulkUpdateService.new(role:, type: @type, tab: @tab) + .call(permitted_status_params) + success = false unless result.success? + end + raise ActiveRecord::Rollback unless success + end - if call.success? + if success render_flash_message_via_turbo_stream( message: I18n.t(:notice_successful_update), scheme: :success @@ -69,7 +76,7 @@ class Workflows::TabsController < ApplicationController update_via_turbo_stream( component: Workflows::StatusMatrixFormComponent.new( tab: @tab, - role: @role, + roles: @roles, type: @type, available_roles: @eligible_roles, statuses:, @@ -125,7 +132,7 @@ class Workflows::TabsController < ApplicationController update_via_turbo_stream( component: Workflows::StatusMatrixFormComponent.new( tab: @tab, - role: @role, + roles: @roles, type: @type, available_roles: @eligible_roles, statuses:, @@ -150,8 +157,11 @@ class Workflows::TabsController < ApplicationController @eligible_roles = Workflow.eligible_roles.order(:builtin, :position) end - def set_role - @role = @eligible_roles.find(params[:role_id]) + def set_roles + @roles = @eligible_roles.where(id: params[:role_ids]) + # TODO: remove @role once the matrix form and all dependent components + # (dialogs, status selectors, page headers) work natively with @roles (multi-role). + @role = @roles.first end def statuses_for_form diff --git a/app/controllers/workflows_controller.rb b/app/controllers/workflows_controller.rb index 82b03b15118..fb40fead193 100644 --- a/app/controllers/workflows_controller.rb +++ b/app/controllers/workflows_controller.rb @@ -38,7 +38,7 @@ class WorkflowsController < ApplicationController before_action :find_types, only: %i[index] before_action :find_type, only: %i[edit] - before_action :find_optional_role, only: %i[edit] + before_action :find_optional_roles, only: %i[edit] def index; end @@ -64,8 +64,13 @@ class WorkflowsController < ApplicationController @type = ::Type.find(params[:type_id]) end - def find_optional_role - @role = eligible_roles.find_by(id: params[:role_id]) || eligible_roles.order(:builtin, :position).first + def find_optional_roles + ordered = eligible_roles.order(:builtin, :position) + @roles = ordered.where(id: params[:role_ids]) + @roles = [ordered.first] if @roles.empty? + # TODO: remove @role once the matrix form and all dependent components + # (dialogs, status selectors, page headers) work natively with @roles (multi-role). + @role = @roles.first end def eligible_roles diff --git a/app/helpers/workflow_helper.rb b/app/helpers/workflow_helper.rb index a56b291fce3..61c7007adb0 100644 --- a/app/helpers/workflow_helper.rb +++ b/app/helpers/workflow_helper.rb @@ -37,7 +37,7 @@ module WorkflowHelper ].map do |tab| tab.merge( partial: "workflows/form", - path: edit_workflow_tab_path(type, tab[:name], params.permit(:role_id)), + path: edit_workflow_tab_path(type, tab[:name], params.permit(role_ids: [])), data: { "admin--workflow-checkbox-state-confirmation-trigger": "click", turbo_frame: "workflow-table", turbo_action: "advance" } diff --git a/app/views/workflows/edit.html.erb b/app/views/workflows/edit.html.erb index 49db69fe7cc..26a2de62642 100644 --- a/app/views/workflows/edit.html.erb +++ b/app/views/workflows/edit.html.erb @@ -31,6 +31,6 @@ See COPYRIGHT and LICENSE files for more details. <%= render Workflows::PageHeaders::EditComponent.new(@type, role: @role, tabs: workflow_tabs(@type)) %> <% end %> -<% if @type && @role %> - <%= turbo_frame_tag "workflow-table", src: edit_workflow_tab_path(@type, @current_tab, role_id: @role.id, status_ids: params[:status_ids]) %> +<% if @type && @roles.any? %> + <%= turbo_frame_tag "workflow-table", src: edit_workflow_tab_path(@type, @current_tab, role_ids: @roles.map(&:id), status_ids: params[:status_ids]) %> <% end %> diff --git a/app/views/workflows/summaries/show.html.erb b/app/views/workflows/summaries/show.html.erb index 034123f66d9..f5ed8bcff9e 100644 --- a/app/views/workflows/summaries/show.html.erb +++ b/app/views/workflows/summaries/show.html.erb @@ -61,7 +61,7 @@ See COPYRIGHT and LICENSE files for more details. <%= h type %> <% roles.each do |role, count| -%> - <%= link_to((count > 0 ? count : content_tag(:span, "", class: "icon-close icon-context icon-button")), edit_workflow_path(type, role_id: role), title: t(:button_edit)) %> + <%= link_to((count > 0 ? count : content_tag(:span, "", class: "icon-close icon-context icon-button")), edit_workflow_path(type, role_ids: [role]), title: t(:button_edit)) %> <% end -%> diff --git a/app/views/workflows/tabs/edit.html.erb b/app/views/workflows/tabs/edit.html.erb index f665ac5cd3c..61af4af9c6f 100644 --- a/app/views/workflows/tabs/edit.html.erb +++ b/app/views/workflows/tabs/edit.html.erb @@ -28,7 +28,7 @@ See COPYRIGHT and LICENSE files for more details. ++#%> <%= turbo_frame_tag "workflow-table", data: { turbo_cache: false } do %> - <%= render Workflows::StatusMatrixFormComponent.new(tab: @tab, role: @role, type: @type, available_roles: @eligible_roles, statuses: @statuses, has_status_changes: @has_status_changes) %> + <%= render Workflows::StatusMatrixFormComponent.new(tab: @tab, roles: @roles, type: @type, available_roles: @eligible_roles, statuses: @statuses, has_status_changes: @has_status_changes) %> <%= turbo_stream.replace(Workflows::PageHeaders::EditComponent.wrapper_key) do %> <%= render Workflows::PageHeaders::EditComponent.new(@type, role: @role, tabs: workflow_tabs(@type)) %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 797f428cbfe..dd1b14da815 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -461,8 +461,12 @@ en: ignore: "Ignore changes" save: "Save changes and continue" role_selector: + title: "Select roles" label: "Role: %{role}" no_role: "Select role" + roles: + one: "%{count} role selected" + other: "%{count} roles selected" blankslate: title: "No status transitions configured" description: "Add statuses to start configuring workflows for this role" diff --git a/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts b/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts index 3dd327642bf..a88031e47c5 100644 --- a/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts +++ b/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts @@ -113,13 +113,21 @@ export default class WorkflowCheckboxStateController extends Controller(`input[name="${name}"]`)!.value; } + private formValues(name:string):string[] { + return Array.from( + this.element.querySelectorAll(`input[name="${name}"]`), + ).map((el) => el.value); + } + private pushState(key:string, state:CheckboxesState) { const savedState:SavedState = { formKey: this.formKey, checkboxes: state }; sessionStorage.setItem(key, JSON.stringify(savedState)); @@ -155,7 +163,7 @@ export default class WorkflowCheckboxStateController extends Controller { - const onIgnoreCallback = this.onIgnoreChanges(target, event); - this.ignoreButtonTarget.addEventListener('click', onIgnoreCallback); - - const onSaveCallback = this.onSaveChanges(target, event); - this.saveButtonTarget.addEventListener('click', onSaveCallback); - + private openConfirmationDialog(onIgnore:() => void, onSave:() => void) { + this.ignoreButtonTarget.addEventListener('click', onIgnore); + this.saveButtonTarget.addEventListener('click', onSave); this.confirmationDialogTarget.addEventListener('close', () => { - this.ignoreButtonTarget.removeEventListener('click', onIgnoreCallback); - this.saveButtonTarget.removeEventListener('click', onSaveCallback); + this.ignoreButtonTarget.removeEventListener('click', onIgnore); + this.saveButtonTarget.removeEventListener('click', onSave); }); - this.confirmationDialogTarget.showModal(); + } + + private confirmThenResubmit = (target:HTMLElement, event:Event) => { + this.openConfirmationDialog( + this.onIgnoreChanges(target, event), + this.onSaveChanges(target, event), + ); }; private onIgnoreChanges = (originalTarget:HTMLElement, originalEvent:Event) => { @@ -193,7 +203,7 @@ export default class WorkflowCheckboxStateController extends Controller params.append('role_ids[]', id)); url.search = params.toString(); turboFrame.setAttribute('src', url.toString()); @@ -273,4 +283,33 @@ export default class WorkflowCheckboxStateController extends Controller { + this.hasCheckboxChangesValue = false; + this.hasStatusChangesValue = false; + this.confirmationDialogTarget.close(); + setTimeout(() => { Turbo.visit(url); }, 0); + }, + () => { + this.element.requestSubmit(); + this.confirmationDialogTarget.close(); + // Delay to allow the flash message from the form submission to appear. + setTimeout(() => { Turbo.visit(url); }, 1000); + }, + ); + } } diff --git a/frontend/src/stimulus/controllers/dynamic/admin/workflow-role-select.controller.ts b/frontend/src/stimulus/controllers/dynamic/admin/workflow-role-select.controller.ts new file mode 100644 index 00000000000..11c66b3d383 --- /dev/null +++ b/frontend/src/stimulus/controllers/dynamic/admin/workflow-role-select.controller.ts @@ -0,0 +1,78 @@ +/* + * -- copyright + * OpenProject is an open source project management software. + * Copyright (C) the OpenProject GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version 3. + * + * OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: + * Copyright (C) 2006-2013 Jean-Philippe Lang + * Copyright (C) 2010-2013 the ChiliProject Team + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * See COPYRIGHT and LICENSE files for more details. + * ++ + */ + +import { Controller } from '@hotwired/stimulus'; +import type { SelectPanelElement } from '@primer/view-components/app/components/primer/alpha/select_panel_element'; +import WorkflowCheckboxStateController from './workflow-checkbox-state.controller'; + +/** + * Mounted on the element for role selection in the workflow quick filters. + * When the panel closes, it navigates to the workflow edit page with the selected role IDs. + * Delegates dirty-state confirmation to the workflow-checkbox-state controller via an outlet. + */ +export default class WorkflowRoleSelectController extends Controller { + static outlets = ['admin--workflow-checkbox-state']; + static values = { baseUrl: String, currentRoleIds: String }; + + declare readonly adminWorkflowCheckboxStateOutlet:WorkflowCheckboxStateController; + declare readonly hasAdminWorkflowCheckboxStateOutlet:boolean; + declare baseUrlValue:string; + declare currentRoleIdsValue:string; + + connect() { + this.element.addEventListener('panelClosed', this.handlePanelClosed); + } + + disconnect() { + this.element.removeEventListener('panelClosed', this.handlePanelClosed); + } + + private handlePanelClosed = () => { + const panel = this.element as HTMLElement as SelectPanelElement; + const selectedIds = panel.items + .filter((item) => panel.isItemChecked(item)) + .map((item) => item.getAttribute('data-item-id')) + .filter(Boolean); + + if (!selectedIds.length) return; + + const currentIds = this.currentRoleIdsValue.split(',').filter(Boolean); + if (selectedIds.slice().sort().join(',') === currentIds.slice().sort().join(',')) return; + + const url = new URL(this.baseUrlValue, window.location.origin); + selectedIds.forEach((id) => url.searchParams.append('role_ids[]', id!)); + + if (this.hasAdminWorkflowCheckboxStateOutlet) { + this.adminWorkflowCheckboxStateOutlet.navigateTo(url.toString()); + } else { + Turbo.visit(url.toString()); + } + }; +} From c4d8a24dceb2f03ed712121cbc3b69e3f8770bbd Mon Sep 17 00:00:00 2001 From: Kabiru Mwenja Date: Thu, 23 Apr 2026 18:05:57 +0300 Subject: [PATCH 086/280] Fix eslint findings in op-autocompleter spec Addresses findings reviewdog flagged on PR 22789: - Replace (window as any) with a typed WindowWithOpenProject stub. - Use document.querySelector(sel)! instead of "as HTMLElement". - Insert blank lines before expect() per jasmine/new-line-before-expect. --- .../op-autocompleter/op-autocompleter.spec.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.spec.ts b/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.spec.ts index 5048f379b2f..91626d3843b 100644 --- a/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.spec.ts +++ b/frontend/src/app/shared/components/autocompleter/op-autocompleter/op-autocompleter.spec.ts @@ -60,12 +60,14 @@ describe('autocompleter', () => { }, ]; + type WindowWithOpenProject = Omit & { OpenProject?:{ environment:string } }; + beforeEach(() => { - (window as any).OpenProject = { environment: 'test' }; + (window as WindowWithOpenProject).OpenProject = { environment: 'test' }; }); afterEach(() => { - delete (window as any).OpenProject; + delete (window as WindowWithOpenProject).OpenProject; }); beforeEach(async () => { @@ -187,9 +189,11 @@ describe('autocompleter', () => { fixture.detectChanges(); const wpIdElements = document.querySelectorAll('.op-autocompleter--wp-id'); + expect(wpIdElements.length).toBeGreaterThanOrEqual(1); // Verify at least one rendered option displays formattedId const renderedIds = Array.from(wpIdElements).map(el => el.textContent?.trim()); + expect(renderedIds).toContain('#1'); } finally { jasmine.clock().uninstall(); @@ -219,11 +223,12 @@ describe('autocompleter', () => { fixture.detectChanges(); // Select the first item (classic mode: #1) - const firstOption = document.querySelector('.ng-option') as HTMLElement; + const firstOption = document.querySelector('.ng-option')!; firstOption.click(); fixture.detectChanges(); const labelElement = document.querySelector('.ng-value-label'); + expect(labelElement).toBeTruthy(); expect(labelElement!.textContent).toContain('#1'); expect(labelElement!.textContent).toContain('Workpackage 1'); @@ -255,11 +260,12 @@ describe('autocompleter', () => { fixture.detectChanges(); // Select the semantic mode item (PROJ-2) - const option = document.querySelector('.ng-option') as HTMLElement; + const option = document.querySelector('.ng-option')!; option.click(); fixture.detectChanges(); const labelElement = document.querySelector('.ng-value-label'); + expect(labelElement).toBeTruthy(); expect(labelElement!.textContent).toContain('PROJ-2'); expect(labelElement!.textContent).not.toContain('#PROJ-2'); From 4e56e47774c42436dbdefd056824100bdd950173 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Fri, 24 Apr 2026 04:10:24 +0000 Subject: [PATCH 087/280] update locales from crowdin [ci skip] --- config/locales/crowdin/af.yml | 31 +- config/locales/crowdin/ar.yml | 31 +- config/locales/crowdin/az.yml | 31 +- config/locales/crowdin/be.yml | 31 +- config/locales/crowdin/bg.yml | 31 +- config/locales/crowdin/ca.yml | 31 +- config/locales/crowdin/ckb-IR.yml | 31 +- config/locales/crowdin/cs.yml | 31 +- config/locales/crowdin/da.yml | 31 +- config/locales/crowdin/de.yml | 31 +- config/locales/crowdin/el.yml | 31 +- config/locales/crowdin/eo.yml | 31 +- config/locales/crowdin/es.yml | 31 +- config/locales/crowdin/et.yml | 31 +- config/locales/crowdin/eu.yml | 31 +- config/locales/crowdin/fa.yml | 31 +- config/locales/crowdin/fi.yml | 31 +- config/locales/crowdin/fil.yml | 31 +- config/locales/crowdin/fr.yml | 89 ++-- config/locales/crowdin/he.yml | 31 +- config/locales/crowdin/hi.yml | 31 +- config/locales/crowdin/hr.yml | 31 +- config/locales/crowdin/hu.yml | 31 +- config/locales/crowdin/id.yml | 31 +- config/locales/crowdin/it.yml | 31 +- config/locales/crowdin/ja.yml | 31 +- config/locales/crowdin/ka.yml | 31 +- config/locales/crowdin/kk.yml | 31 +- config/locales/crowdin/ko.yml | 31 +- config/locales/crowdin/lt.yml | 31 +- config/locales/crowdin/lv.yml | 31 +- config/locales/crowdin/mn.yml | 31 +- config/locales/crowdin/ms.yml | 31 +- config/locales/crowdin/ne.yml | 31 +- config/locales/crowdin/nl.yml | 31 +- config/locales/crowdin/no.yml | 31 +- config/locales/crowdin/pl.yml | 31 +- config/locales/crowdin/pt-BR.yml | 31 +- config/locales/crowdin/pt-PT.yml | 31 +- config/locales/crowdin/ro.yml | 31 +- config/locales/crowdin/ru.yml | 31 +- config/locales/crowdin/rw.yml | 31 +- config/locales/crowdin/si.yml | 31 +- config/locales/crowdin/sk.yml | 31 +- config/locales/crowdin/sl.yml | 31 +- config/locales/crowdin/sr.yml | 31 +- config/locales/crowdin/sv.yml | 31 +- config/locales/crowdin/th.yml | 31 +- config/locales/crowdin/tr.yml | 449 ++++++++++-------- config/locales/crowdin/uk.yml | 31 +- config/locales/crowdin/uz.yml | 31 +- config/locales/crowdin/vi.yml | 31 +- config/locales/crowdin/zh-CN.yml | 31 +- config/locales/crowdin/zh-TW.yml | 31 +- .../auth_saml/config/locales/crowdin/ro.yml | 2 +- .../backlogs/config/locales/crowdin/fr.yml | 4 +- .../backlogs/config/locales/crowdin/js-ro.yml | 4 +- .../backlogs/config/locales/crowdin/ro.yml | 6 +- .../backlogs/config/locales/crowdin/tr.yml | 114 ++--- modules/budgets/config/locales/crowdin/ro.yml | 22 +- modules/budgets/config/locales/crowdin/tr.yml | 4 +- modules/costs/config/locales/crowdin/tr.yml | 10 +- .../documents/config/locales/crowdin/tr.yml | 8 +- .../config/locales/crowdin/ro.yml | 22 +- .../job_status/config/locales/crowdin/af.yml | 2 +- .../job_status/config/locales/crowdin/ar.yml | 2 +- .../job_status/config/locales/crowdin/az.yml | 2 +- .../job_status/config/locales/crowdin/be.yml | 2 +- .../job_status/config/locales/crowdin/bg.yml | 2 +- .../job_status/config/locales/crowdin/ca.yml | 2 +- .../config/locales/crowdin/ckb-IR.yml | 2 +- .../job_status/config/locales/crowdin/cs.yml | 2 +- .../job_status/config/locales/crowdin/da.yml | 2 +- .../job_status/config/locales/crowdin/de.yml | 2 +- .../job_status/config/locales/crowdin/el.yml | 2 +- .../job_status/config/locales/crowdin/eo.yml | 2 +- .../job_status/config/locales/crowdin/es.yml | 2 +- .../job_status/config/locales/crowdin/et.yml | 2 +- .../job_status/config/locales/crowdin/eu.yml | 2 +- .../job_status/config/locales/crowdin/fa.yml | 2 +- .../job_status/config/locales/crowdin/fi.yml | 2 +- .../job_status/config/locales/crowdin/fil.yml | 2 +- .../job_status/config/locales/crowdin/fr.yml | 2 +- .../job_status/config/locales/crowdin/he.yml | 2 +- .../job_status/config/locales/crowdin/hi.yml | 2 +- .../job_status/config/locales/crowdin/hr.yml | 2 +- .../job_status/config/locales/crowdin/hu.yml | 2 +- .../job_status/config/locales/crowdin/id.yml | 2 +- .../job_status/config/locales/crowdin/it.yml | 2 +- .../job_status/config/locales/crowdin/ja.yml | 2 +- .../job_status/config/locales/crowdin/ka.yml | 2 +- .../job_status/config/locales/crowdin/kk.yml | 2 +- .../job_status/config/locales/crowdin/ko.yml | 2 +- .../job_status/config/locales/crowdin/lt.yml | 2 +- .../job_status/config/locales/crowdin/lv.yml | 2 +- .../job_status/config/locales/crowdin/mn.yml | 2 +- .../job_status/config/locales/crowdin/ms.yml | 2 +- .../job_status/config/locales/crowdin/ne.yml | 2 +- .../job_status/config/locales/crowdin/nl.yml | 2 +- .../job_status/config/locales/crowdin/no.yml | 2 +- .../job_status/config/locales/crowdin/pl.yml | 2 +- .../config/locales/crowdin/pt-BR.yml | 2 +- .../config/locales/crowdin/pt-PT.yml | 2 +- .../job_status/config/locales/crowdin/ro.yml | 2 +- .../job_status/config/locales/crowdin/ru.yml | 2 +- .../job_status/config/locales/crowdin/rw.yml | 2 +- .../job_status/config/locales/crowdin/si.yml | 2 +- .../job_status/config/locales/crowdin/sk.yml | 2 +- .../job_status/config/locales/crowdin/sl.yml | 2 +- .../job_status/config/locales/crowdin/sr.yml | 2 +- .../job_status/config/locales/crowdin/sv.yml | 2 +- .../job_status/config/locales/crowdin/th.yml | 2 +- .../job_status/config/locales/crowdin/tr.yml | 2 +- .../job_status/config/locales/crowdin/uk.yml | 2 +- .../job_status/config/locales/crowdin/uz.yml | 2 +- .../job_status/config/locales/crowdin/vi.yml | 2 +- .../config/locales/crowdin/zh-CN.yml | 2 +- .../config/locales/crowdin/zh-TW.yml | 2 +- .../ldap_groups/config/locales/crowdin/tr.yml | 8 +- modules/meeting/config/locales/crowdin/tr.yml | 4 +- .../config/locales/crowdin/tr.yml | 6 +- .../webhooks/config/locales/crowdin/tr.yml | 2 +- modules/wikis/config/locales/crowdin/fr.yml | 14 +- 123 files changed, 2027 insertions(+), 461 deletions(-) diff --git a/config/locales/crowdin/af.yml b/config/locales/crowdin/af.yml index 21f44e15975..8c613fb4a42 100644 --- a/config/locales/crowdin/af.yml +++ b/config/locales/crowdin/af.yml @@ -262,6 +262,7 @@ af: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ af: type: Soort version: Weergawe watcher: Dophouer + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ af: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ af: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ af: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ af: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ af: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ af: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/ar.yml b/config/locales/crowdin/ar.yml index ad11e6693f2..a4906b9b3d0 100644 --- a/config/locales/crowdin/ar.yml +++ b/config/locales/crowdin/ar.yml @@ -286,6 +286,7 @@ ar: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2065,6 +2066,29 @@ ar: type: النّوع version: الإصدار watcher: المشاهد + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: يجب أن تقبل. @@ -3801,7 +3825,7 @@ ar: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3815,6 +3839,7 @@ ar: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3827,6 +3852,7 @@ ar: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3835,6 +3861,7 @@ ar: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3849,6 +3876,7 @@ ar: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3857,6 +3885,7 @@ ar: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/az.yml b/config/locales/crowdin/az.yml index da54bf12001..9de4f973a45 100644 --- a/config/locales/crowdin/az.yml +++ b/config/locales/crowdin/az.yml @@ -262,6 +262,7 @@ az: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ az: type: Type version: Version watcher: Watcher + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ az: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ az: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ az: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ az: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ az: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ az: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/be.yml b/config/locales/crowdin/be.yml index 4df091038e6..2d0a33a8c46 100644 --- a/config/locales/crowdin/be.yml +++ b/config/locales/crowdin/be.yml @@ -274,6 +274,7 @@ be: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2025,6 +2026,29 @@ be: type: Type version: Version watcher: Watcher + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3681,7 +3705,7 @@ be: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3695,6 +3719,7 @@ be: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3707,6 +3732,7 @@ be: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3715,6 +3741,7 @@ be: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3729,6 +3756,7 @@ be: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3737,6 +3765,7 @@ be: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/bg.yml b/config/locales/crowdin/bg.yml index 642e1739841..2ec336c36ef 100644 --- a/config/locales/crowdin/bg.yml +++ b/config/locales/crowdin/bg.yml @@ -262,6 +262,7 @@ bg: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ bg: type: Тип version: Версия watcher: Наблюдател + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: трябва да бъде одобрено. @@ -3557,7 +3581,7 @@ bg: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3571,6 +3595,7 @@ bg: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3583,6 +3608,7 @@ bg: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3591,6 +3617,7 @@ bg: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3605,6 +3632,7 @@ bg: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3613,6 +3641,7 @@ bg: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/ca.yml b/config/locales/crowdin/ca.yml index e8b79cdbe03..7ed21e6d0a5 100644 --- a/config/locales/crowdin/ca.yml +++ b/config/locales/crowdin/ca.yml @@ -262,6 +262,7 @@ ca: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1984,6 +1985,29 @@ ca: type: Classe version: Versió watcher: Observador + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: hauran de ser acceptats. @@ -3556,7 +3580,7 @@ ca: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3570,6 +3594,7 @@ ca: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3582,6 +3607,7 @@ ca: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3590,6 +3616,7 @@ ca: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3604,6 +3631,7 @@ ca: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3612,6 +3640,7 @@ ca: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/ckb-IR.yml b/config/locales/crowdin/ckb-IR.yml index c655081b907..9d8dde9f183 100644 --- a/config/locales/crowdin/ckb-IR.yml +++ b/config/locales/crowdin/ckb-IR.yml @@ -262,6 +262,7 @@ ckb-IR: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ ckb-IR: type: Type version: Version watcher: Watcher + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ ckb-IR: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ ckb-IR: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ ckb-IR: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ ckb-IR: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ ckb-IR: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ ckb-IR: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index b86a376f0f5..8b07f2dee65 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -274,6 +274,7 @@ cs: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2027,6 +2028,29 @@ cs: type: Typ version: Verze watcher: Sledující + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: musí být přijato. @@ -3683,7 +3707,7 @@ cs: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3697,6 +3721,7 @@ cs: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3709,6 +3734,7 @@ cs: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3717,6 +3743,7 @@ cs: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3731,6 +3758,7 @@ cs: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3739,6 +3767,7 @@ cs: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/da.yml b/config/locales/crowdin/da.yml index cfd61ab91d9..619a1743ca5 100644 --- a/config/locales/crowdin/da.yml +++ b/config/locales/crowdin/da.yml @@ -262,6 +262,7 @@ da: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1984,6 +1985,29 @@ da: type: Type version: Version watcher: Tilsynsførende + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: skal accepteres. @@ -3558,7 +3582,7 @@ da: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3572,6 +3596,7 @@ da: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3584,6 +3609,7 @@ da: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3592,6 +3618,7 @@ da: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3606,6 +3633,7 @@ da: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3614,6 +3642,7 @@ da: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index 4b22fb998d8..a8420575355 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -262,6 +262,7 @@ de: caption: Überprüfen Sie Ihre Importeinstellungen und starten Sie den Import caption_done: Abgeschlossen label_available_data: Verfügbare Daten zum Importieren + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Import starten description: Sie sind dabei, einen Import mit den folgenden Einstellungen zu starten. label_progress: Import läuft... @@ -1981,6 +1982,29 @@ de: type: Typ version: Version watcher: Beobachter + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: muss akzeptiert werden. @@ -3553,7 +3577,7 @@ de: personal_reminder: Bei persönlichen Erinnerungen benachrichtigen daily_reminders: title: Tägliche E-Mail-Erinnerungen für ungelesene Benachrichtigungen zusenden - caption: Sie erhalten diese Erinnerungen nur für ungelesene Benachrichtigungen und nur zu den von Ihnen angegebenen Zeiten. Solange Sie keine Zeitzone für Ihr Konto konfigurieren, werden die Zeiten in UTC interpretiert. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Tägliche E-Mail-Erinnerungen aktivieren add_time: Zeit hinzufügen remove_time: Zeit entfernen @@ -3567,6 +3591,7 @@ de: date_range: Pausenzeiten email_alerts: title: E-Mail-Benachrichtigungen für andere Objekte (die keine Arbeitspakete sind) + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: Neuigkeit hinzugefügt news_commented: Kommentar zu einer Neuigkeit document_added: Dokument hinzugefügt @@ -3579,6 +3604,7 @@ de: notifications: participating: title: Beteiligt + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Einstellungen aktualisieren mentioned: Erwähnt watched: Beobachtet @@ -3587,6 +3613,7 @@ de: shared: Mit mir geteilt date_alerts: title: Datums-Erinnerungen + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Datums-Erinnerungen aktualisieren start_date: Anfangstermin due_date: Endtermin @@ -3601,6 +3628,7 @@ de: seven_days_after: 7 Tage danach non_participating: title: Nicht beteiligt + description: Additional notifications for activities in all projects. submit_button: Einstellungen aktualisieren work_package_created: Neue Arbeitspakete work_package_commented: Alle neuen Kommentare @@ -3609,6 +3637,7 @@ de: work_package_scheduled: Alle Datumsänderungen project_specific_settings: title: Projektspezifische Benachrichtigungen + description: These project-specific settings override default settings above. add_button: Projektspezifische Benachrichtigungen hinzufügen dialog_title: Projektspezifische Benachrichtigungen hinzufügen list_header: Projekte mit spezifischen Benachrichtigungen diff --git a/config/locales/crowdin/el.yml b/config/locales/crowdin/el.yml index 4ac44fe0d4c..32c6832bb01 100644 --- a/config/locales/crowdin/el.yml +++ b/config/locales/crowdin/el.yml @@ -262,6 +262,7 @@ el: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1984,6 +1985,29 @@ el: type: Τύπος version: Έκδοση watcher: Παρατηρητής + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: πρέπει να γίνει αποδεκτό. @@ -3558,7 +3582,7 @@ el: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3572,6 +3596,7 @@ el: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3584,6 +3609,7 @@ el: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3592,6 +3618,7 @@ el: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3606,6 +3633,7 @@ el: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3614,6 +3642,7 @@ el: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/eo.yml b/config/locales/crowdin/eo.yml index 9293b1282ea..cbe16629009 100644 --- a/config/locales/crowdin/eo.yml +++ b/config/locales/crowdin/eo.yml @@ -262,6 +262,7 @@ eo: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ eo: type: Tipo version: Versio watcher: Atentanto + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: devas esti akceptita. @@ -3559,7 +3583,7 @@ eo: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ eo: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ eo: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ eo: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ eo: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ eo: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml index 6632760877c..1b9c08ab048 100644 --- a/config/locales/crowdin/es.yml +++ b/config/locales/crowdin/es.yml @@ -262,6 +262,7 @@ es: caption: Revise la configuración de importación y comience la importación caption_done: Completado label_available_data: Datos disponibles para importar + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Iniciar importación description: Está a punto de iniciar una importación con la siguiente configuración. label_progress: Importando... @@ -1980,6 +1981,29 @@ es: type: Tipo version: Versión watcher: Observador + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: debe ser aceptado. @@ -3550,7 +3574,7 @@ es: personal_reminder: Notificarme para recibir recordatorios personales daily_reminders: title: Enviarme recordatorios por correo electrónico diarios con las notificaciones sin leer - caption: Recibirás estos recordatorios solo para las notificaciones no leídas y únicamente a las horas que indiques. Hasta que configures una zona horaria para tu cuenta, se considerará que las horas están en UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Habilitar recordatorios por correo electrónico diarios add_time: Añadir tiempo remove_time: Eliminar el tiempo @@ -3564,6 +3588,7 @@ es: date_range: Período de pausa email_alerts: title: Alertas por correo electrónico de otros elementos que no sean paquetes de trabajo + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: Noticias añadidas news_commented: Comentarios en un elemento de noticias document_added: Documento agregado @@ -3576,6 +3601,7 @@ es: notifications: participating: title: Participando + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Actualizar preferencias mentioned: Mencionado watched: Observando @@ -3584,6 +3610,7 @@ es: shared: Compartido conmigo date_alerts: title: Alertas de fecha + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Alertas de fecha de actualización start_date: Fecha de inicio due_date: Fecha de finalización @@ -3598,6 +3625,7 @@ es: seven_days_after: 7 días después non_participating: title: No participando + description: Additional notifications for activities in all projects. submit_button: Actualizar preferencias work_package_created: Nuevos paquetes de trabajo work_package_commented: Todos los nuevos comentarios @@ -3606,6 +3634,7 @@ es: work_package_scheduled: Todos los cambios de fecha project_specific_settings: title: Configuración de notificaciones específicas de proyectos + description: These project-specific settings override default settings above. add_button: Añadir notificaciones específicas del proyecto dialog_title: Añadir notificaciones específicas del proyecto list_header: Proyectos con notificaciones específicas diff --git a/config/locales/crowdin/et.yml b/config/locales/crowdin/et.yml index 718b489c949..ebda8c6833c 100644 --- a/config/locales/crowdin/et.yml +++ b/config/locales/crowdin/et.yml @@ -262,6 +262,7 @@ et: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ et: type: Tüüp version: Versioon watcher: Jälgija + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ et: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ et: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ et: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ et: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ et: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ et: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/eu.yml b/config/locales/crowdin/eu.yml index 5ef38881ca3..066f75e82bb 100644 --- a/config/locales/crowdin/eu.yml +++ b/config/locales/crowdin/eu.yml @@ -262,6 +262,7 @@ eu: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ eu: type: Type version: Bertsioa watcher: Watcher + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ eu: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ eu: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ eu: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ eu: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ eu: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ eu: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/fa.yml b/config/locales/crowdin/fa.yml index f3260aa7979..3353e41c855 100644 --- a/config/locales/crowdin/fa.yml +++ b/config/locales/crowdin/fa.yml @@ -262,6 +262,7 @@ fa: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ fa: type: نوع version: نسخه watcher: ناظر + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ fa: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ fa: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ fa: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ fa: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ fa: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ fa: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/fi.yml b/config/locales/crowdin/fi.yml index 1486284117e..14d90c9e804 100644 --- a/config/locales/crowdin/fi.yml +++ b/config/locales/crowdin/fi.yml @@ -262,6 +262,7 @@ fi: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ fi: type: Tyyppi version: Versio watcher: Seuraajat + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: täytyy olla hyväksytty. @@ -3557,7 +3581,7 @@ fi: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3571,6 +3595,7 @@ fi: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3583,6 +3608,7 @@ fi: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3591,6 +3617,7 @@ fi: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3605,6 +3632,7 @@ fi: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3613,6 +3641,7 @@ fi: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/fil.yml b/config/locales/crowdin/fil.yml index 5d5935f3118..08d2d2c09c0 100644 --- a/config/locales/crowdin/fil.yml +++ b/config/locales/crowdin/fil.yml @@ -262,6 +262,7 @@ fil: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ fil: type: Uri version: Bersyon watcher: Tagapagmasid + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: kailangang tanggapin. @@ -3559,7 +3583,7 @@ fil: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ fil: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ fil: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ fil: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ fil: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ fil: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index b72119027b9..89dcf17c4b3 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -118,7 +118,7 @@ fr: description: Utilisez cet outil pour importer des données à partir de votre instance Jira. Vous pouvez configurer plusieurs hôtes Jira et choisir les données à importer à chaque cycle d'importation. errors: cannot_delete_with_imports: Impossible de supprimer un hôte Jira avec des importations existantes - custom_field_creation_failed: 'Failed to create custom field ''%{name}'': %{message}' + custom_field_creation_failed: 'Échec de la création du champ personnalisé "%{name}" : %{message}' blank: title: Aucun hôte Jira n'est encore configuré description: Configurez un hôte Jira pour commencer à importer des éléments de Jira vers cette instance d'OpenProject. @@ -262,6 +262,7 @@ fr: caption: Vérifiez vos paramètres d'importation et démarrez l'importation caption_done: Terminé label_available_data: Données disponibles pour l'importation + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Démarrer l'importation description: Vous êtes sur le point de lancer un cycle d'importation avec les paramètres suivants. label_progress: Importation en cours... @@ -1358,30 +1359,30 @@ fr: copies: form: source_role_id: - label: Source role + label: Rôle source target_role_ids: - label: Target roles + label: Rôles cibles target_type_ids: - label: Target types + label: Types de cibles mode: from_role: - label: Copy to other roles - caption: Copy the current workflow to one or more roles inside the same work package type. If the selected role already has a workflow the current one will be overwritten. + label: Copier vers d'autres rôles + caption: Copiez le workflow actuel vers un ou plusieurs rôles dans le même type de lot de travaux. Si le rôle sélectionné a déjà un workflow, celui-ci sera remplacé. from_type: - label: Copy to another type - caption: Copy the current workflow to another work packages type. If the selected type already has a workflow the current one will be overwritten. This affects all roles. + label: Copier vers un autre type + caption: Copiez le workflow actuel vers un autre type de lots de travaux. Si le type sélectionné a déjà un workflow, celui-ci sera remplacé. Cela affecte tous les rôles. from_roles: create: notice: - one: Successfully copied workflow to '%{role_name}' role. - other: Successfully copied workflow to %{count} roles. + one: Copie réussie du flux de travail dans le rôle '%{role_name}'. + other: Copie réussie du flux de travail vers les %{count} rôles. from_types: create: notice: - one: Successfully copied workflow to '%{type_name}' type. - other: Successfully copied workflow to %{count} types. + one: Le workflow a été copié avec succès vers le type '%{type_name}'. + other: Le workflow a été copié avec succès vers les %{count} types. new: - title: Copy workflow of "%{source_type}" + title: Copier le workflow de "%{source_type}" form: matrix_caption: Matrice de flux de travail matrix_caption_assignee: Matrice de flux de travail pour le responsable @@ -1393,10 +1394,10 @@ fr: matrix_check_uncheck_all_in_col_label_html: Activer/désactiver les transitions de tous les anciens statuts vers %{new_status} index: type_filter: - label: Filter by type name… + label: Filtrer par nom de type… page_headers: index_component: - description: Configure status transitions for each work package type. + description: Configurer les transitions de statut pour chaque type de lot de travaux. work_flows: index: no_results_title_text: Il n'y a actuellement aucun flux de travail. @@ -1952,7 +1953,7 @@ fr: duration: Durée end_insertion: Fin de l’insertion end_deletion: Fin de la suppression - identifier: Identifier + identifier: Identifiant ignore_non_working_days: Ignorer les jours non ouvrables include_non_working_days: title: Jours ouvrés @@ -1968,7 +1969,7 @@ fr: readonly: Lecture seule remaining_hours: Travail restant remaining_time: Travail restant - sequence_number: Sequence number + sequence_number: Numéro de séquence shared_with_users: Partagé avec schedule_manually: Planification manuelle spent_hours: Temps passé @@ -1978,6 +1979,29 @@ fr: type: Type version: Version watcher: Observateur + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: doi(ven)t être accepté(e)(s). @@ -2021,7 +2045,7 @@ fr: inclusion: ne correspond à aucune des valeurs autorisées. inclusion_nested: ne correspond à aucune des valeurs autorisées dans le chemin « %{path} ». invalid: est invalide. - invalid_uri: must be a valid URI. + invalid_uri: doit être une URI valide. invalid_url: n’est pas une URL valide. invalid_url_scheme: 'n’est pas un protocole pris en charge (autorisés : %{allowed_schemes}).' less_than_or_equal_to: doit être inférieur ou égal à %{count}. @@ -2035,7 +2059,7 @@ fr: not_a_datetime: n'est pas une heure valide. not_a_number: n'est pas un nombre. not_allowed: est invalide en raison d’autorisations insuffisantes. - host_not_allowed: is not an allowed host. + host_not_allowed: n'est pas un hôte autorisé. not_json: ne peut pas être analysé en tant que JSON. not_json_object: n'est pas un objet JSON. not_an_integer: n'est pas un entier. @@ -2305,7 +2329,7 @@ fr: cannot_add_child_because_of_lack_of_permission: Impossible d'ajouter un enfant, car vous n'avez pas les permissions pour modifier le lot de travaux sélectionné. blank: L'ID ne peut pas être vide. identifier: - semantic_identifier_incomplete: and sequence_number must both be set at the same time. + semantic_identifier_incomplete: et le numéro de séquence doivent être définis en même temps. assigned_to: format: "%{message}" done_ratio: @@ -2374,7 +2398,7 @@ fr: confirmation: La confirmation du mot de passe ne correspond pas au mot de passe. format: "%{message}" password: - requirements_not_met: 'Must include characters of the following types: %{rules}' + requirements_not_met: 'Doit comprendre des caractères des types suivants : %{rules}' lowercase: minuscules (par exemple, « a ») uppercase: majuscule (e.g. « A ») numeric: numérique (e.g. « 1 ») @@ -3552,7 +3576,7 @@ fr: personal_reminder: M'avertir pour les rappels personnels daily_reminders: title: M'envoyer des rappels quotidiens par e-mail pour les notifications non lues - caption: Vous ne recevrez ces rappels que pour les notifications non lues et seulement aux heures que vous aurez spécifiées. Tant que vous n'aurez pas configuré un fuseau horaire pour votre compte, les heures seront interprétées comme étant en UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Activer les rappels quotidiens par e-mail add_time: Ajouter une heure remove_time: Supprimer l'heure @@ -3566,6 +3590,7 @@ fr: date_range: Période de pause email_alerts: title: Alertes par e-mail pour les autres éléments qui ne sont pas des lots de travaux + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: Actualités ajoutées news_commented: Commenter un article d'actualité document_added: Document ajouté @@ -3578,6 +3603,7 @@ fr: notifications: participating: title: Participant + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Mettre à jour les préférences mentioned: Mentionné watched: En cours @@ -3586,6 +3612,7 @@ fr: shared: Partagé avec moi date_alerts: title: Alertes de date + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Mettre à jour les alertes de date start_date: Date de début due_date: Date de fin @@ -3600,6 +3627,7 @@ fr: seven_days_after: 7 jours après non_participating: title: Non participant + description: Additional notifications for activities in all projects. submit_button: Mettre à jour les préférences work_package_created: Nouveaux lots de travaux work_package_commented: Tous les nouveaux commentaires @@ -3608,6 +3636,7 @@ fr: work_package_scheduled: Tous les changements de date project_specific_settings: title: Paramètres de notification spécifiques au projet + description: These project-specific settings override default settings above. add_button: Ajouter des notifications spécifiques au projet dialog_title: Ajouter des notifications spécifiques au projet list_header: Projets avec notifications spécifiques @@ -3767,7 +3796,7 @@ fr: label_commits_per_month: Actions par mois label_confirmation: Confirmation label_contains: contenus - label_starts_with: starts with + label_starts_with: commence par label_content: Contenu label_color_plural: Couleurs label_copied: copié @@ -3775,8 +3804,8 @@ fr: label_copy_source: Source label_copy_target: Cible label_copy_workflow_from: Copier flux de travail à partir de - label_copy_workflow_from_type: Copy to another type - label_copy_workflow_from_role: Copy to other roles + label_copy_workflow_from_type: Copier vers un autre type + label_copy_workflow_from_role: Copier vers d'autres rôles label_copy_project: Copie du projet label_core_version: Version du cœur label_core_build: Construction de base @@ -4084,10 +4113,10 @@ fr: label_password_rule_numeric: Caractères numériques label_password_rule_special: Caractères spéciaux label_password_rule_uppercase: Majuscules - label_password_requirement_lowercase: Must contain at least one lowercase character. - label_password_requirement_numeric: Must contain at least one numeric character. - label_password_requirement_special: Must contain at least one special character. - label_password_requirement_uppercase: Must contain at least one uppercase character. + label_password_requirement_lowercase: Doit contenir au moins un caractère minuscule. + label_password_requirement_numeric: Doit contenir au moins un caractère numérique. + label_password_requirement_special: Doit contenir au moins un caractère spécial. + label_password_requirement_uppercase: Doit contenir au moins une majuscule. label_path_encoding: Encodage du chemin d'accès label_per_page: 'Par page :' label_people: Participants @@ -5131,7 +5160,7 @@ fr: setting_new_project_user_role_id: Rôle donné à un utilisateur non administrateur qui crée un projet setting_new_project_send_confirmation_email: Envoyer une notification à l'auteur lors de la création d'un nouveau projet setting_new_project_notification_text: Texte de la notification - setting_password_active_rules: Password requirements + setting_password_active_rules: Exigences relatives au mot de passe setting_password_count_former_banned: Nombre de mots de passe récents interdits de réutilisation setting_password_days_valid: Nombre de jours après lequel le changement de mot de passe est obligatoire setting_password_min_length: Longueur minimale diff --git a/config/locales/crowdin/he.yml b/config/locales/crowdin/he.yml index 9e57376911a..f1996650162 100644 --- a/config/locales/crowdin/he.yml +++ b/config/locales/crowdin/he.yml @@ -274,6 +274,7 @@ he: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2025,6 +2026,29 @@ he: type: סוג version: גירסה watcher: צופה + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3681,7 +3705,7 @@ he: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3695,6 +3719,7 @@ he: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3707,6 +3732,7 @@ he: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3715,6 +3741,7 @@ he: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3729,6 +3756,7 @@ he: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3737,6 +3765,7 @@ he: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/hi.yml b/config/locales/crowdin/hi.yml index f910ce4128c..f8eb04aa090 100644 --- a/config/locales/crowdin/hi.yml +++ b/config/locales/crowdin/hi.yml @@ -262,6 +262,7 @@ hi: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ hi: type: प्रकार version: संस्करण watcher: वॉचर + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ hi: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ hi: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ hi: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ hi: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ hi: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ hi: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/hr.yml b/config/locales/crowdin/hr.yml index 4590064eeef..e0a1d783c2b 100644 --- a/config/locales/crowdin/hr.yml +++ b/config/locales/crowdin/hr.yml @@ -268,6 +268,7 @@ hr: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2005,6 +2006,29 @@ hr: type: Tip version: Verzija watcher: Nadglednik + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: mora biti prihvaćeno. @@ -3618,7 +3642,7 @@ hr: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3632,6 +3656,7 @@ hr: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3644,6 +3669,7 @@ hr: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3652,6 +3678,7 @@ hr: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3666,6 +3693,7 @@ hr: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3674,6 +3702,7 @@ hr: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/hu.yml b/config/locales/crowdin/hu.yml index 8ae15317cda..fcb080cbd94 100644 --- a/config/locales/crowdin/hu.yml +++ b/config/locales/crowdin/hu.yml @@ -262,6 +262,7 @@ hu: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2009,6 +2010,29 @@ hu: type: Típus version: Verzió watcher: Megfigyelő + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: el kell fogadni. @@ -3621,7 +3645,7 @@ hu: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3635,6 +3659,7 @@ hu: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3647,6 +3672,7 @@ hu: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3655,6 +3681,7 @@ hu: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3669,6 +3696,7 @@ hu: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3677,6 +3705,7 @@ hu: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/id.yml b/config/locales/crowdin/id.yml index e87f6898a6f..ae22f45d2bd 100644 --- a/config/locales/crowdin/id.yml +++ b/config/locales/crowdin/id.yml @@ -256,6 +256,7 @@ id: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1969,6 +1970,29 @@ id: type: Tipe version: Versi watcher: Pemantau + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: harus disetujui. @@ -3509,7 +3533,7 @@ id: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3523,6 +3547,7 @@ id: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3535,6 +3560,7 @@ id: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3543,6 +3569,7 @@ id: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3557,6 +3584,7 @@ id: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3565,6 +3593,7 @@ id: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/it.yml b/config/locales/crowdin/it.yml index ca93df1868f..9698cc8afa7 100644 --- a/config/locales/crowdin/it.yml +++ b/config/locales/crowdin/it.yml @@ -262,6 +262,7 @@ it: caption: Controlla le impostazioni dell'importazione e avviala caption_done: Completato label_available_data: Dati disponibili da importare + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Avvia l'importazione description: Stai per avviare un'importazione con le seguenti impostazioni. label_progress: Importazione in corso... @@ -1983,6 +1984,29 @@ it: type: Tipo version: Versione watcher: Osservatore + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: deve essere accettato. @@ -3559,7 +3583,7 @@ it: personal_reminder: Notificami i promemoria personali daily_reminders: title: Inviami promemoria email giornalieri per le notifiche non lette - caption: Riceverai questi promemoria solo per le notifiche non lette e solo negli orari che specifichi. Finché non configuri un fuso orario per il tuo account, gli orari saranno interpretati come UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Abilita promemoria email giornalieri add_time: Aggiungi orario remove_time: Rimuovi orario @@ -3573,6 +3597,7 @@ it: date_range: Periodo di sospensione email_alerts: title: Avvisi email per altri elementi che non sono macro-attività + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: Notizie aggiunte news_commented: Commento su un articolo di notizie document_added: Documento aggiunto @@ -3585,6 +3610,7 @@ it: notifications: participating: title: Partecipazione + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Aggiorna impostazioni mentioned: Menzionato watched: Osservazione @@ -3593,6 +3619,7 @@ it: shared: Condivisi con me date_alerts: title: Avvisi sulle date + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Aggiorna gli avvisi sulle date start_date: Data di inizio due_date: Data di fine @@ -3607,6 +3634,7 @@ it: seven_days_after: 7 giorni dopo non_participating: title: Non partecipante + description: Additional notifications for activities in all projects. submit_button: Aggiorna impostazioni work_package_created: Nuove macro-attività work_package_commented: Tutti i nuovi commenti @@ -3615,6 +3643,7 @@ it: work_package_scheduled: Tutte le modifiche della data project_specific_settings: title: Impostazioni di notifica specifiche del progetto + description: These project-specific settings override default settings above. add_button: Aggiungi notifiche specifiche al progetto dialog_title: Aggiungi notifiche specifiche al progetto list_header: Progetti con notifiche specifiche diff --git a/config/locales/crowdin/ja.yml b/config/locales/crowdin/ja.yml index c5cc76a2581..b669949c0d0 100644 --- a/config/locales/crowdin/ja.yml +++ b/config/locales/crowdin/ja.yml @@ -256,6 +256,7 @@ ja: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1968,6 +1969,29 @@ ja: type: タイプ version: バージョン watcher: ウォッチャー + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: は受諾しなければなりません。 @@ -3501,7 +3525,7 @@ ja: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3515,6 +3539,7 @@ ja: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3527,6 +3552,7 @@ ja: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3535,6 +3561,7 @@ ja: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3549,6 +3576,7 @@ ja: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3557,6 +3585,7 @@ ja: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/ka.yml b/config/locales/crowdin/ka.yml index 56f8f1b71e5..b3f3bb5e404 100644 --- a/config/locales/crowdin/ka.yml +++ b/config/locales/crowdin/ka.yml @@ -262,6 +262,7 @@ ka: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ ka: type: ტიპი version: ვერსია watcher: მეთვალყურე + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ ka: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ ka: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ ka: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ ka: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ ka: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ ka: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/kk.yml b/config/locales/crowdin/kk.yml index 080e8a577cc..7f87ca606ea 100644 --- a/config/locales/crowdin/kk.yml +++ b/config/locales/crowdin/kk.yml @@ -262,6 +262,7 @@ kk: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ kk: type: Type version: Version watcher: Watcher + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ kk: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ kk: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ kk: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ kk: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ kk: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ kk: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/ko.yml b/config/locales/crowdin/ko.yml index d0625802840..40dd77ff822 100644 --- a/config/locales/crowdin/ko.yml +++ b/config/locales/crowdin/ko.yml @@ -256,6 +256,7 @@ ko: caption: 가져오기 설정을 검토하고 가져오기를 시작합니다 caption_done: 완료됨 label_available_data: 가져올 수 있는 데이터 + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: 가져오기 시작 description: 다음 설정으로 가져오기 실행을 시작하려고 합니다. label_progress: 가져오기 진행 중... @@ -1963,6 +1964,29 @@ ko: type: 타입 version: 버전 watcher: 주시자 + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: 허용 되어야 합니다. @@ -3514,7 +3538,7 @@ ko: personal_reminder: 개인 미리 알림 보내기 daily_reminders: title: 읽지 않은 알림에 대한 일일 이메일 미리 알림 보내기 - caption: 읽지 않은 알림에 대해서만 그리고 사용자가 지정한 시간에만 이러한 미리 알림이 전송됩니다. 계정의 표준 시간대를 구성할 때까지, 시간은 UTC로 적용됩니다. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: 일일 이메일 미리 알림 활성화 add_time: 시간 추가 remove_time: 시간 제거 @@ -3528,6 +3552,7 @@ ko: date_range: 일시 중지 기간 email_alerts: title: 작업 패키지가 아닌 기타 항목에 대한 이메일 알림 + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: 뉴스 추가됨 news_commented: 뉴스 항목의 코멘트 document_added: 문서 추가됨 @@ -3540,6 +3565,7 @@ ko: notifications: participating: title: 참여 + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: 기본 설정 업데이트 mentioned: 멘션됨 watched: 지켜보는 중 @@ -3548,6 +3574,7 @@ ko: shared: 나와 공유됨 date_alerts: title: 날짜 알림 + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: 날짜 알림 업데이트 start_date: 시작 날짜 due_date: 완료 날짜 @@ -3562,6 +3589,7 @@ ko: seven_days_after: 7일 후 non_participating: title: 참여하지 않음 + description: Additional notifications for activities in all projects. submit_button: 기본 설정 업데이트 work_package_created: 새 작업 패키지 work_package_commented: 모든 새로운 코멘트 @@ -3570,6 +3598,7 @@ ko: work_package_scheduled: 모든 날짜 변경 사항 project_specific_settings: title: 프로젝트별 알림 설정 + description: These project-specific settings override default settings above. add_button: 프로젝트별 알림 추가 dialog_title: 프로젝트별 알림 추가 list_header: 특정 알림이 있는 프로젝트 diff --git a/config/locales/crowdin/lt.yml b/config/locales/crowdin/lt.yml index fa4c7afdc92..8287a90ac0e 100644 --- a/config/locales/crowdin/lt.yml +++ b/config/locales/crowdin/lt.yml @@ -274,6 +274,7 @@ lt: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2024,6 +2025,29 @@ lt: type: Tipas version: Versija watcher: Stebėtojas + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: turi būti patvirtinta. @@ -3680,7 +3704,7 @@ lt: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3694,6 +3718,7 @@ lt: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3706,6 +3731,7 @@ lt: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3714,6 +3740,7 @@ lt: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3728,6 +3755,7 @@ lt: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3736,6 +3764,7 @@ lt: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/lv.yml b/config/locales/crowdin/lv.yml index 7efc3c293fd..7df656ba450 100644 --- a/config/locales/crowdin/lv.yml +++ b/config/locales/crowdin/lv.yml @@ -268,6 +268,7 @@ lv: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2005,6 +2006,29 @@ lv: type: Veids version: Versija watcher: Sekotājs + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: ir jāapstiprina. @@ -3620,7 +3644,7 @@ lv: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3634,6 +3658,7 @@ lv: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3646,6 +3671,7 @@ lv: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3654,6 +3680,7 @@ lv: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3668,6 +3695,7 @@ lv: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3676,6 +3704,7 @@ lv: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/mn.yml b/config/locales/crowdin/mn.yml index e8c5d3f6045..ebedc54c3ac 100644 --- a/config/locales/crowdin/mn.yml +++ b/config/locales/crowdin/mn.yml @@ -262,6 +262,7 @@ mn: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ mn: type: Type version: Хувилбар watcher: Watcher + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ mn: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ mn: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ mn: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ mn: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ mn: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ mn: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/ms.yml b/config/locales/crowdin/ms.yml index 2b6f1c18214..3fa1898890c 100644 --- a/config/locales/crowdin/ms.yml +++ b/config/locales/crowdin/ms.yml @@ -256,6 +256,7 @@ ms: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1965,6 +1966,29 @@ ms: type: Jenis version: Versi watcher: Pemerhati + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: mesti diterima. @@ -3506,7 +3530,7 @@ ms: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3520,6 +3544,7 @@ ms: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3532,6 +3557,7 @@ ms: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3540,6 +3566,7 @@ ms: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3554,6 +3581,7 @@ ms: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3562,6 +3590,7 @@ ms: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/ne.yml b/config/locales/crowdin/ne.yml index 77684ce854f..b43827f339c 100644 --- a/config/locales/crowdin/ne.yml +++ b/config/locales/crowdin/ne.yml @@ -262,6 +262,7 @@ ne: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ ne: type: Type version: Version watcher: Watcher + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ ne: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ ne: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ ne: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ ne: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ ne: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ ne: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/nl.yml b/config/locales/crowdin/nl.yml index bd719d36c1d..2dd7fd0ac42 100644 --- a/config/locales/crowdin/nl.yml +++ b/config/locales/crowdin/nl.yml @@ -262,6 +262,7 @@ nl: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1983,6 +1984,29 @@ nl: type: Type version: Versie watcher: Kijker + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: moet geaccepteerd worden. @@ -3555,7 +3579,7 @@ nl: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3569,6 +3593,7 @@ nl: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3581,6 +3606,7 @@ nl: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3589,6 +3615,7 @@ nl: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3603,6 +3630,7 @@ nl: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3611,6 +3639,7 @@ nl: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/no.yml b/config/locales/crowdin/no.yml index 48c92bd77c0..b288a3e23a0 100644 --- a/config/locales/crowdin/no.yml +++ b/config/locales/crowdin/no.yml @@ -262,6 +262,7 @@ caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1983,6 +1984,29 @@ type: Type version: Versjon watcher: Overvåker + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: må aksepteres @@ -3557,7 +3581,7 @@ personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3571,6 +3595,7 @@ date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3583,6 +3608,7 @@ notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3591,6 +3617,7 @@ shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3605,6 +3632,7 @@ seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3613,6 +3641,7 @@ work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/pl.yml b/config/locales/crowdin/pl.yml index ee04e412697..2c72ec9be93 100644 --- a/config/locales/crowdin/pl.yml +++ b/config/locales/crowdin/pl.yml @@ -274,6 +274,7 @@ pl: caption: Sprawdź ustawienia importu i rozpocznij import caption_done: Ukończono label_available_data: Dane dostępne do zaimportowania + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Rozpocznij import description: W ten sposób rozpoczniesz import z następującymi ustawieniami. label_progress: Import w toku... @@ -2021,6 +2022,29 @@ pl: type: Typ version: Wersja watcher: Obserwator + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: musi być zaakceptowane. @@ -3673,7 +3697,7 @@ pl: personal_reminder: Powiadamiaj mnie o osobistych przypomnieniach daily_reminders: title: Wyślij mi codzienne przypomnienia e-mail dla nieprzeczytanych powiadomień - caption: Będziesz otrzymywać te przypomnienia tylko w przypadku nieprzeczytanych powiadomień i tylko w określonych przez Ciebie godzinach. Dopóki nie skonfigurujesz strefy czasowej dla swojego konta, godziny będą interpretowane jako UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Włącz codzienne przypomnienia e-mail add_time: Dodaj godzinę remove_time: Usuń godzinę @@ -3687,6 +3711,7 @@ pl: date_range: Okres wstrzymania email_alerts: title: Powiadomienia e-mail dotyczące innych elementów, które nie są pakietami roboczymi + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: Wiadomość dodana news_commented: Komentarz do nowości document_added: Dodano dokument @@ -3699,6 +3724,7 @@ pl: notifications: participating: title: Uczestnictwo + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Zaktualizuj preferencje mentioned: Wzmianka watched: Obserwowane @@ -3707,6 +3733,7 @@ pl: shared: Udostępnione dla mnie date_alerts: title: Alerty dotyczące dat + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Zaktualizuj alerty dotyczące dat start_date: Data rozpoczęcia due_date: Data zakończenia @@ -3721,6 +3748,7 @@ pl: seven_days_after: 7 dni po non_participating: title: Brak uczestnictwa + description: Additional notifications for activities in all projects. submit_button: Zaktualizuj preferencje work_package_created: Nowe pakiety robocze work_package_commented: Wszystkie nowe komentarze @@ -3729,6 +3757,7 @@ pl: work_package_scheduled: Wszystkie zmiany daty project_specific_settings: title: Ustawienia powiadomień dla danego projektu + description: These project-specific settings override default settings above. add_button: Dodaj powiadomienia specyficzne dla projektu dialog_title: Dodaj powiadomienia specyficzne dla projektu list_header: Projekty z określonymi powiadomieniami diff --git a/config/locales/crowdin/pt-BR.yml b/config/locales/crowdin/pt-BR.yml index 73be3e87b78..390bd87cbaf 100644 --- a/config/locales/crowdin/pt-BR.yml +++ b/config/locales/crowdin/pt-BR.yml @@ -262,6 +262,7 @@ pt-BR: caption: Revise suas configurações de importação e inicie a importação caption_done: Concluído label_available_data: Dados disponíveis para importação + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Iniciar importação description: Você está prestes a iniciar uma execução de importação com as seguintes configurações. label_progress: Importação em andamento... @@ -1982,6 +1983,29 @@ pt-BR: type: Tipo version: Versão watcher: Observador + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: deve ser aceito. @@ -3556,7 +3580,7 @@ pt-BR: personal_reminder: Notificar-me sobre lembretes pessoais daily_reminders: title: Enviar lembretes diários por e-mail para notificações não lidas - caption: Você receberá esses lembretes apenas para notificações não lidas e somente nos horários que você especificar. Até que você configure um fuso horário para sua conta, os horários serão interpretados como UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Ativar lembretes diários por e-mail add_time: Adicionar horário remove_time: Remover horário @@ -3570,6 +3594,7 @@ pt-BR: date_range: Período de pausa email_alerts: title: Alertas por e-mail para outros itens que não sejam pacotes de trabalho + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: Notícia adicionada news_commented: Comentar em uma notícia document_added: Documento adicionado @@ -3582,6 +3607,7 @@ pt-BR: notifications: participating: title: Participando + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Atualizar preferências mentioned: Mencionado watched: Assistindo @@ -3590,6 +3616,7 @@ pt-BR: shared: Compartilhados comigo date_alerts: title: Alertas de data + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Atualizar alertas de data start_date: Data de início due_date: Data de conclusão @@ -3604,6 +3631,7 @@ pt-BR: seven_days_after: 7 dias depois non_participating: title: Não participando + description: Additional notifications for activities in all projects. submit_button: Atualizar preferências work_package_created: Novos pacotes de trabalho work_package_commented: Todos os novos comentários @@ -3612,6 +3640,7 @@ pt-BR: work_package_scheduled: Todas as mudanças de data project_specific_settings: title: Configurações de notificação específicas de projetos + description: These project-specific settings override default settings above. add_button: Adicionar notificações específicas do projeto dialog_title: Adicionar notificações específicas do projeto list_header: Projetos com notificações específicas diff --git a/config/locales/crowdin/pt-PT.yml b/config/locales/crowdin/pt-PT.yml index d43654efb5a..7261e1bbffb 100644 --- a/config/locales/crowdin/pt-PT.yml +++ b/config/locales/crowdin/pt-PT.yml @@ -262,6 +262,7 @@ pt-PT: caption: Analise as suas definições de importação e inicie a importação caption_done: Concluído label_available_data: Dados disponíveis para importação + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Iniciar importação description: Está prestes a iniciar uma execução de importação com as seguintes definições. label_progress: Importação em curso... @@ -1983,6 +1984,29 @@ pt-PT: type: Tipo version: Versão watcher: Monitor + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: deve ser aceite. @@ -3557,7 +3581,7 @@ pt-PT: personal_reminder: Notificar-me para receber lembretes pessoais daily_reminders: title: Enviar-me lembretes diários de e-mail para notificações não lidas - caption: Receberá estes lembretes apenas para notificações não lidas e apenas nas horas que especificar. Até configurar um fuso horário para a sua conta, as horas serão interpretadas em UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Ativar lembretes diários por e-mail add_time: Adicionar hora remove_time: Remover hora @@ -3571,6 +3595,7 @@ pt-PT: date_range: Período de pausa email_alerts: title: Alertas de e-mail para outros elementos que não pacotes de trabalho + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: Notícia adicionada news_commented: Comentar numa notícia document_added: Documento adicionado @@ -3583,6 +3608,7 @@ pt-PT: notifications: participating: title: Participante + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Atualizar preferências mentioned: Mencionou watched: A ver @@ -3591,6 +3617,7 @@ pt-PT: shared: Partilhado comigo date_alerts: title: Alertas de data + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Atualizar alertas de data start_date: Data de início due_date: Data de término @@ -3605,6 +3632,7 @@ pt-PT: seven_days_after: 7 dias depois non_participating: title: Não participante + description: Additional notifications for activities in all projects. submit_button: Atualizar preferências work_package_created: Novos pacotes de trabalho work_package_commented: Todos os novos comentários @@ -3613,6 +3641,7 @@ pt-PT: work_package_scheduled: Todas as alterações de datas project_specific_settings: title: Definições de notificação específicas do projeto + description: These project-specific settings override default settings above. add_button: Adicionar notificações específicas do projeto dialog_title: Adicionar notificações específicas do projeto list_header: Projetos com notificações específicas diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml index 060b2c09e55..548bb6e12fa 100644 --- a/config/locales/crowdin/ro.yml +++ b/config/locales/crowdin/ro.yml @@ -268,6 +268,7 @@ ro: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2005,6 +2006,29 @@ ro: type: Tip version: Versiune watcher: Observator + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: trebuie acceptat. @@ -3620,7 +3644,7 @@ ro: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3634,6 +3658,7 @@ ro: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3646,6 +3671,7 @@ ro: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3654,6 +3680,7 @@ ro: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3668,6 +3695,7 @@ ro: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3676,6 +3704,7 @@ ro: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/ru.yml b/config/locales/crowdin/ru.yml index 8f25046e0ee..05a5472243b 100644 --- a/config/locales/crowdin/ru.yml +++ b/config/locales/crowdin/ru.yml @@ -274,6 +274,7 @@ ru: caption: Просмотрите настройки импорта и начните импорт caption_done: Завершено label_available_data: Доступные данные для импорта + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Начать импорт description: Вы собираетесь начать импорт со следующими настройками. label_progress: Идёт импорт... @@ -2028,6 +2029,29 @@ ru: type: Тип version: Этапы watcher: Наблюдатель + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: нужно подтвердить. @@ -3684,7 +3708,7 @@ ru: personal_reminder: Уведомлять меня о личных напоминаниях daily_reminders: title: Отправлять мне ежедневные напоминания по электронной почте о непрочитанных уведомлениях - caption: Вы будете получать эти напоминания только для непрочитанных уведомлений и только в указанные Вами часы. Пока Вы не настроите часовой пояс для своей учетной записи, время будет интерпретироваться как UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Включить ежедневные напоминания по электронной почте add_time: Добавить время remove_time: Удалить время @@ -3698,6 +3722,7 @@ ru: date_range: Период приостановки email_alerts: title: Уведомления по электронной почте для других элементов (которые не являются пакетами работ) + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: Новость добавлена news_commented: Комментарий к новости document_added: Документ добавлен @@ -3710,6 +3735,7 @@ ru: notifications: participating: title: Участие + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Обновить настройки mentioned: Упомянутый watched: Отслеживает @@ -3718,6 +3744,7 @@ ru: shared: Доступные мне date_alerts: title: Дата оповещения + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Обновить дату оповещения start_date: Дата начала due_date: Дата окончания @@ -3732,6 +3759,7 @@ ru: seven_days_after: Через 7 дней после non_participating: title: Неучастие + description: Additional notifications for activities in all projects. submit_button: Обновить настройки work_package_created: Новые пакеты работ work_package_commented: Все новые комментарии @@ -3740,6 +3768,7 @@ ru: work_package_scheduled: Все изменения дат project_specific_settings: title: Настройки уведомлений для конкретного проекта + description: These project-specific settings override default settings above. add_button: Добавить уведомления по проекту dialog_title: Добавить уведомления по проекту list_header: Проекты с особыми уведомлениями diff --git a/config/locales/crowdin/rw.yml b/config/locales/crowdin/rw.yml index 75166ac96d3..135da10fad4 100644 --- a/config/locales/crowdin/rw.yml +++ b/config/locales/crowdin/rw.yml @@ -262,6 +262,7 @@ rw: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ rw: type: Type version: Version watcher: Watcher + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ rw: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ rw: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ rw: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ rw: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ rw: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ rw: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/si.yml b/config/locales/crowdin/si.yml index aa76637767b..bec7fac9b30 100644 --- a/config/locales/crowdin/si.yml +++ b/config/locales/crowdin/si.yml @@ -262,6 +262,7 @@ si: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ si: type: වර්ගය version: අනුවාදය watcher: මුරකරු + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: පිළිගත යුතුය. @@ -3559,7 +3583,7 @@ si: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ si: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ si: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ si: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ si: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ si: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/sk.yml b/config/locales/crowdin/sk.yml index 2571edcf160..dce4dbe8ae1 100644 --- a/config/locales/crowdin/sk.yml +++ b/config/locales/crowdin/sk.yml @@ -274,6 +274,7 @@ sk: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2025,6 +2026,29 @@ sk: type: Typ version: Verzia watcher: Pozorovateľ + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: musí byť akceptovaný. @@ -3679,7 +3703,7 @@ sk: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3693,6 +3717,7 @@ sk: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3705,6 +3730,7 @@ sk: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3713,6 +3739,7 @@ sk: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3727,6 +3754,7 @@ sk: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3735,6 +3763,7 @@ sk: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml index 18e418fb760..8f3113c338a 100644 --- a/config/locales/crowdin/sl.yml +++ b/config/locales/crowdin/sl.yml @@ -276,6 +276,7 @@ sl: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2026,6 +2027,29 @@ sl: type: Vrsta version: Različica watcher: Opazovalec + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: mora biti sprejeto. @@ -3692,7 +3716,7 @@ sl: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3706,6 +3730,7 @@ sl: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3718,6 +3743,7 @@ sl: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3726,6 +3752,7 @@ sl: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3740,6 +3767,7 @@ sl: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3748,6 +3776,7 @@ sl: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/sr.yml b/config/locales/crowdin/sr.yml index 3148739677c..b213f1cc95f 100644 --- a/config/locales/crowdin/sr.yml +++ b/config/locales/crowdin/sr.yml @@ -268,6 +268,7 @@ sr: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -2005,6 +2006,29 @@ sr: type: Type version: Verzija watcher: Watcher + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3620,7 +3644,7 @@ sr: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3634,6 +3658,7 @@ sr: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3646,6 +3671,7 @@ sr: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3654,6 +3680,7 @@ sr: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3668,6 +3695,7 @@ sr: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3676,6 +3704,7 @@ sr: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/sv.yml b/config/locales/crowdin/sv.yml index b456d6d57f8..805346be161 100644 --- a/config/locales/crowdin/sv.yml +++ b/config/locales/crowdin/sv.yml @@ -262,6 +262,7 @@ sv: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ sv: type: Typ version: Version watcher: Bevakare + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: måste accepteras. @@ -3559,7 +3583,7 @@ sv: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ sv: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ sv: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ sv: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ sv: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ sv: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/th.yml b/config/locales/crowdin/th.yml index 95a846dd13f..6f144faef17 100644 --- a/config/locales/crowdin/th.yml +++ b/config/locales/crowdin/th.yml @@ -256,6 +256,7 @@ th: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1965,6 +1966,29 @@ th: type: ประเภท version: เวอร์ชัน watcher: ผู้ดูข้อมูล + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3498,7 +3522,7 @@ th: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3512,6 +3536,7 @@ th: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3524,6 +3549,7 @@ th: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3532,6 +3558,7 @@ th: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3546,6 +3573,7 @@ th: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3554,6 +3582,7 @@ th: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/tr.yml b/config/locales/crowdin/tr.yml index 9b8a581a5c7..9a53b6bba7e 100644 --- a/config/locales/crowdin/tr.yml +++ b/config/locales/crowdin/tr.yml @@ -84,9 +84,9 @@ tr: confirmation: Bu Enterprise sürümü destek belirtecini silmek istediğinizden emin misiniz? create_dialog: title: Kurumsal belirteç ekleme - type_token_text: Your Enterprise token text + type_token_text: Enterprise token metniniz token_placeholder: Enterprise sürümü destek anahtarınızı buraya yapıştırın - token_caption: To learn more about how to activate Enterprise edition check our [documentation](docs_url). + token_caption: Enterprise sürümünün nasıl etkinleştirileceği hakkında daha fazla bilgi edinmek için [belgeler](docs_url) adresimize bakın. add_token: Bir Enterprise sürümü destek belirteci yükleyin replace_token: Geçerli destek anahtarını değiştirin order: Kurumsal on-premises sürümü sipariş edin @@ -108,58 +108,58 @@ tr: trial: Deneme jemalloc_allocator: Jemalloc bellek ayırıcı journal_aggregation: - caption: 'User actions on a work package (changing description, status, values, or writing comments) are grouped if performed within this period. It also controls notification and [webhook](webhook_link) delays. + caption: 'Bir iş paketi üzerindeki kullanıcı eylemleri (açıklama, durum, değer değiştirme veya yorum yazma) bu süre içinde gerçekleştirilirse gruplandırılır. Ayrıca bildirim ve [webhook](webhook_link) gecikmelerini de kontrol eder. ' import: - title: Import + title: İçeri Aktar jira: title: Jira Migrator description: Use this tool to import data from your Jira instance. You can configure multiple Jira hosts and choose what to import in each import run. errors: - cannot_delete_with_imports: Cannot delete Jira host with existing imports - custom_field_creation_failed: 'Failed to create custom field ''%{name}'': %{message}' + cannot_delete_with_imports: Mevcut içe aktarmalarla Jira ana bilgisayarı silinemiyor + custom_field_creation_failed: "'%{name}' özel alanı oluşturulamadı: %{message}" blank: - title: No Jira hosts configured yet + title: Henüz yapılandırılmış Jira ana bilgisayarı yok description: Configure a Jira host to start importing items from Jira to this OpenProject instance. configuration: - title: Jira configuration - new: New configuration + title: Jira yapılandırması + new: Yeni yapılandırma banner: - title: Limited import capabilities + title: Sınırlı içe aktarma özellikleri description: 'This Jira Migrator is currently in beta and can only import basic data: projects, issues (name, title, description, attachments), users (name, email, project membership), statuses, and types. It cannot import workflows, custom fields, issue relations, or permissions. We currently only support Jira Server/Data Center versions 10.x and 11.x. Cloud instances are not supported at this time.' form: fields: - name: Name - url: Jira Server/Data Center URL - personal_access_token: Personal Access Token - button_add: Add configuration - button_save: Save configuration - button_test: Test configuration - button_delete_token: Delete token - delete_token_confirm: Are you sure you want to delete the token? This will disable the Jira connection. - label_testing: Testing configuration... - token_deleted: Token was successfully deleted. + name: İsim + url: Jira Sunucusu/Veri Merkezi URL'si + personal_access_token: Kişisel Erişim Anahtarı + button_add: Yapılandırma ekle + button_save: Yapılandırmayı kaydet + button_test: Yapılandırmayı test et + button_delete_token: Anahtarı sil + delete_token_confirm: Anahtarı silmek istediğinizden emin misiniz? Bu, Jira bağlantısını devre dışı bırakacaktır. + label_testing: Yapılandırma test ediliyor... + token_deleted: Anahtar başarıyla silindi. test: - success: Successfully connected to %{server} (version %{version}) - failed: 'Connection failed: Unable to retrieve server information' - error: An unexpected error occurred while testing the connection - connection_error: 'Connection error: %{message}' + success: "%{server} adresine başarıyla bağlandı (sürüm %{version})" + failed: 'Bağlantı başarısız oldu: Sunucu bilgileri alınamıyor' + error: Bağlantı test edilirken beklenmeyen bir hata oluştu + connection_error: 'Bağlantı hatası: %{message}' parse_error: Failed to parse the response from the server. The server may not be a valid Jira instance. api_error: Jira API returned error status %{status}. Please check your Jira instance URL and API token. token_error: Invalid API token. Please check your credentials in the configuration. missing_credentials: Please provide both URL and Personal Access Token to test the connection - invalid_url: Please provide a valid URL + invalid_url: Lütfen geçerli bir URL giriniz client: - connection_error: 'Failed to connect to Jira server: %{message}' - connection_timeout: 'Connection to Jira server timed out: %{message}' - parse_error: 'Failed to parse Jira API response: %{message}' - api_error: Jira API returned error status %{status} + connection_error: 'Jira sunucusuna bağlanılamadı: %{message}' + connection_timeout: 'Jira sunucusuna bağlantı zaman aşımına uğradı: %{message}' + parse_error: 'Jira API yanıtı ayrıştırılamadı: %{message}' + api_error: Jira API hata durumu döndürdü %{status} 401_error: Jira API returned a 401 error. Your authentication token may have expired or lack the required permissions. Please ensure the token belongs to a Jira administrator. columns: - projects: Projects - last_change: Last change - added: Added + projects: Projeler + last_change: Son değişiklik + added: Eklendi label_ago: "%{amount} ago" run: title: Import run @@ -242,46 +242,47 @@ tr: caption_done: Completed label_info: Please note that this import tool is in beta and cannot import all types of data. Here is a summary of what the host Jira instance offers for import and what this tool is able to import right now. description: Select what data you want to import from the available data fetched from the host Jira instance. - label_available_data: Available data - label_not_available_data: Not available for import - button_select_projects: Select projects to import - button_continue: Continue - label_import: Select which projects you would like to import. - button_select: Select projects - label_selected_data: Selected data for import - label_progress: Fetching data from Jira... + label_available_data: Mevcut veriler + label_not_available_data: İçe aktarma için mevcut değil + button_select_projects: İçe aktarılacak projeleri seçin + button_continue: Devam et + label_import: Hangi projeleri içe aktarmak istediğinizi seçin. + button_select: Projeleri seçin + label_selected_data: İçe aktarım için seçilen veriler + label_progress: Jira'dan veri getiriliyor... elements: relations: Relations between issues workflows: Project-level workflows - users: Users - sprints: Sprints - schemes: Schemas + users: Kullanıcılar + sprints: Sprintler + schemes: Şemalar permissions: User, group and project permissions confirm_import: - title: Import data - caption: Review your import settings and start the import - caption_done: Completed - label_available_data: Available data to import - button_start: Start import - description: You are about to start an import run with the following settings. - label_progress: Import in progress... - label_import_data: Currently importing + title: Veriyi içe aktar + caption: İçe aktarma ayarlarınızı gözden geçirin ve içe aktarmayı başlatın + caption_done: Tamamlandı + label_available_data: İçe aktarılacak mevcut veriler + label_users_import_explanation: Users that are involved in selected projects (group memberships included) + button_start: İçe aktarmayı başlat + description: Aşağıdaki ayarlarla bir içe aktarma çalışması başlatmak üzeresiniz. + label_progress: İçe aktarma devam ediyor... + label_import_data: Şu anda içe aktarılıyor import_result: - title: Import run results - caption: Review import run or revert import - info: Import run successful. - label_results: Imported - label_revert: Revert import - button_revert: Revert import - button_done: Finalize import - preview_description: The imported data is currently in review mode. Click "Finalize import" to make the import permanent or "Revert import" to undo all changes made in this import run. + title: Çalışma sonuçlarını içe aktarma + caption: İçe aktarma çalışmasını gözden geçirin veya içe aktarmayı geri alın + info: İçe aktarma işlemi başarılı. + label_results: İçe Aktarıldı + label_revert: İçe aktarımı geri döndür + button_revert: İçe aktarımı geri döndür + button_done: İçe aktarmayı sonlandır + preview_description: İçe aktarılan veriler şu anda inceleme modundadır. İçe aktarımı kalıcı hale getirmek için "İçe aktarımı sonlandır" veya bu içe aktarım çalışmasında yapılan tüm değişiklikleri geri almak için "İçe aktarımı geri al" seçeneğine tıklayın. label_finalize_import: Finalize import label_finalizing: Finalizing import... label_finalizing_done: Import finalized. - label_revert_progress: Reverting import... - label_reverted: Import reverted. + label_revert_progress: İçe aktarma geri alınıyor... + label_reverted: İçe aktarma geri alındı. select_dialog: - filter_projects: Filter by text + filter_projects: Metne göre filtrele import_dialog: title: Start this import? confirm_button: Start import @@ -290,16 +291,16 @@ tr: ' confirm: I understand and made the necessary preparations revert_dialog: - title: Permanently revert this import? - description: This will delete all imported objects (including whole projects) even if there was user activity in those projects after the import on OpenProject. - confirm: I understand that this reversion will delete data permanently + title: Bu aktarım kalıcı olarak geri alınsın mı? + description: Bu, OpenProject'te içe aktarma işleminden sonra bu projelerde kullanıcı etkinliği olsa bile içe aktarılan tüm nesneleri (tüm projeler dahil) silecektir. + confirm: Bu geri dönüşün verileri kalıcı olarak sileceğini anlıyorum finalize_dialog: - title: Finalize this import? - description: Once finalized, this import can no longer be reverted. All imported data will become permanently imported. - confirm: I understand that this action cannot be undone - confirm_button: Understood + title: Bu içe aktarma sonlandırılsın mı? + description: Bu içe aktarma işlemi tamamlandıktan sonra artık geri döndürülemez. İçe aktarılan tüm veriler kalıcı olarak içe aktarılmış olacaktır. + confirm: Bu eylemin geri alınamayacağını anlıyorum + confirm_button: Anlaşıldı select_projects: - title: Select projects + title: Projeleri seçin mcp_configurations: index: description: The model context protocol allows AI agents to provide its users with tools and resources exposed by this OpenProject instance. This feature is still in beta. @@ -385,8 +386,8 @@ tr: title: Erişim anahtarı tablosu settings: new_project: - project_creation: Project creation - notification_text_default: "

      Hello,

      A new project has been created: projectValue:name

      Thank you

      \n" + project_creation: Proje oluşturma + notification_text_default: "

      Merhaba,

      Yeni bir proje oluşturuldu: projectValue:name

      Teşekkür ederim.

      \n" work_packages_identifier: page_header: description: Choose between classic numerical work package IDs or semantic project-specific ones that prepend the project identifier to the work package ID. @@ -395,13 +396,13 @@ tr: ' box_header: - label_project: Project - label_previous_identifier: Previous identifier - label_autofixed_suggestion: Future identifier - label_example_work_package_id: Example work package ID + label_project: Proje + label_previous_identifier: Önceki tanımlayıcı + label_autofixed_suggestion: Gelecek tanımlayıcı + label_example_work_package_id: Örnek iş paketi kimliği autofix_preview: - error_too_long: Has to be 10 characters or fewer - error_numerical: Cannot be purely numerical + error_too_long: 10 karakter veya daha az olmalıdır + error_numerical: Tamamen sayısal olamaz error_does_not_start_with_letter: Must start with an uppercase letter error_special_characters: Special characters not allowed error_not_fully_uppercased: Must be uppercase @@ -615,17 +616,17 @@ tr: review_hint: 'There are %{user_count} who are already assigned to this project attribute in various projects. They might get additional permissions and be added to projects they did not previously have access to. ' - review_button: Review users and permissions + review_button: Kullanıcıları ve izinleri gözden geçir dialog: - title: Overview of users and permissions - change: Change + title: Kullanıcılara ve izinlere genel bakış + change: Değiştir changes: - new_member: Will be added as a member - remove_member: Will be removed as a member - gain_and_lose_role: Will lose role ‘%{old_role}’ and gain role ‘%{new_role}’ - gain_role: Will gain role ‘%{new_role}’ - lose_role: Will lose role ‘%{old_role}’ - no_change: No changes + new_member: Üye olarak eklenecek + remove_member: Üye olarak çıkarılacak + gain_and_lose_role: "'%{old_role}' rolünü kaybedecek ve '%{new_role}' rolünü kazanacaktır" + gain_role: "'%{new_role}' rolünü kazanacak" + lose_role: "'%{old_role}' rolünü kaybedecek" + no_change: Değişiklik yok text_add_new_custom_field: 'Bir projeye yeni özel alanlar eklemeden önce onları oluşturmalısınız. ' @@ -634,82 +635,82 @@ tr: contained_in_type: Kullanıldığı tipler confirm_destroy_option: Bir seçeneğin silinmesi, kullanıldığı her yerden (örneğin iş paketleri) silinmesine neden olur. Silmek istediğinizden emin misiniz? reorder_alphabetical: Değerleri alfabetik olarak yeniden sıralayın - reorder_confirmation: 'Warning: The current order of available values as well as all unsaved values will be lost. Are you sure you want to continue?' + reorder_confirmation: 'Uyarı: Mevcut değerlerin mevcut sırası ve kaydedilmemiş tüm değerler kaybolacaktır. Devam etmek istediğinizden emin misiniz?' placeholder_version_select: Öncelikle iş paketi veya proje seçimi gereklidir - calculated_field_not_editable: Non-editable attribute. This value is calculated automatically. - no_role_assigment: No role assignment + calculated_field_not_editable: Düzenlenemez öznitelik. Bu değer otomatik olarak hesaplanır. + no_role_assigment: Rol ataması yok instructions: is_required: - all: Mark the custom field as required. This will make it mandatory to fill in the field when creating new resources. Existing resources will not require a value when being updated. + all: Özel alanı gerekli olarak işaretleyin. Bu, yeni kaynaklar oluştururken alanın doldurulmasını zorunlu hale getirecektir. Mevcut kaynaklar güncellenirken bir değer gerektirmeyecektir. project: Alan etkin olduğu durumda, zorunlu alanlar yalnızca proje oluşturulurken doldurulmak zorundadır(‘Tüm projeler için’ ayarı yapılmışsa veya alanın etkin olduğu bir proje/şablondan kopyalama yapılıyorsa). Mevcut projeler güncellenirken bu alanlar için değer girilmesi gerekmez. is_for_all: - all: Mark the custom field as available in all existing and new projects. - project: Mark the attribute as available in all existing and new projects. + all: Özel alanı tüm mevcut ve yeni projelerde kullanılabilir olarak işaretleyin. + project: Özelliği tüm mevcut ve yeni projelerde kullanılabilir olarak işaretleyin. multi_select: - all: Allows the user to assign multiple values to this custom field. - project: Allows the user to assign multiple values to this attribute. + all: Kullanıcının bu özel alana birden fazla değer atamasına izin verir. + project: Kullanıcının bu özniteliğe birden fazla değer atamasına izin verir. searchable: - all: Include the field values when using the global search functionality. - project: Check to make this attribute available as a filter in project lists. + all: Genel arama işlevini kullanırken alan değerlerini ekleyin. + project: Bu niteliği proje listelerinde filtre olarak kullanmak için işaretleyin. editable: - all: Allow the field to be editable by users themselves. + all: Alanın kullanıcılar tarafından düzenlenebilir olmasına izin verin. admin_only: - all: Check to make this custom field only visible to administrators. Users without admin rights will not be able to view or edit it. - project: Check to make this attribute only visible to administrators. Users without admin rights will not be able to view or edit it. + all: Bu özel alanın yalnızca yöneticiler tarafından görülebilmesi için işaretleyin. Yönetici hakları olmayan kullanıcılar bu alanı görüntüleyemez veya düzenleyemez. + project: Bu niteliğin yalnızca yöneticilere görünür kılmak için işaretleyin. Yönetici hakları olmayan kullanıcılar bunu görüntüleyemez veya düzenleyemez. is_filter: - all: 'Allow the custom field to be used in a filter in work package views. Note that only with ''For all projects'' selected, the custom field will show up in global views. + all: 'Özel alanın iş paketi görünümlerinde bir filtrede kullanılmasına izin verin. Yalnızca ''Tüm projeler için'' seçildiğinde, özel alanın genel görünümlerde görüneceğini unutmayın. ' formula: - project: Add numeric values or type / to search for an attribute or a mathematical operator. + project: Sayısal değerler ekleyin veya bir niteliği ya da matematiksel bir operatörü aramak için / yazın. regexp: - all: eg. ^[A-Z0-9]+$ - project: eg. ^[A-Z0-9]+$ + all: ör. ^[A-Z0-9]+$ + project: ör. ^[A-Z0-9]+$ min_max: - all: 0 means no restriction - project: 0 means no restriction + all: 0 sınırlama yok demektir + project: 0 sınırlama yok demektir has_comment: - project: Allows the user to add a comment related to the project attribute when selecting the value in the project overview. + project: Kullanıcının, projeye genel bakışta değeri seçerken proje niteliğiyle ilgili bir yorum eklemesine olanak tanır. tab: no_results_title_text: Şu anda özel bir alan bulunmamakta. no_results_content_text: Yeni bir özel alan oluştur calculated_values: error_dialog: - title: Error with Calculated value + title: Hesaplanan değerde hata errors: - unknown: An unknown error occurred. Please review the formula for this Calculated value. - mathematical: The mathematical formula leads to an error. Please review the project calculation attribute and try again. - missing_value: The attribute "%{custom_field_name}" is required by this Calculated value, but is empty. - disabled_value: The attribute "%{custom_field_name}" is required by this Calculated value, but is disabled for the project. + unknown: Bilinmeyen bir hata oluştu. Lütfen bu Hesaplanan değerin formülünü gözden geçirin. + mathematical: Matematiksel formül bir hataya yol açıyor. Lütfen proje hesaplama özelliğini gözden geçirin ve tekrar deneyin. + missing_value: '"%{custom_field_name}" özniteliği bu Hesaplanan değer için gereklidir, ancak boştur.' + disabled_value: '"%{custom_field_name}" özniteliği bu Hesaplanan değer için gereklidir, ancak proje için devre dışı bırakılmıştır.' concatenation: single: ya da danger_dialog: confirmation_live_message_checked: Devam etmek için düğme artık aktif. confirmation_live_message_unchecked: Devam etmek için düğme artık aktif değil. Devam etmek için işratlemeniz gerekli. departments: - edit: Edit department - add_user: Add user - add_department: Add department + edit: Departmanı düzenle + add_user: Kullanıcı ekle + add_department: Departman ekle blankslate: - heading: Your organization has no departments + heading: Kuruluşunuzun departmanı yok description: 'Start by adding departments or users to the organization. Each department can be used to create a hierarchy below it, to navigate and create sub-department inside a hierarchy click on the created item. ' - add_button: Add + add_button: Ekle detail_blankslate: - heading: This department doesn’t have any hierarchy level below - description: Add departments or users to create sub-items inside another one. - add_button: Add + heading: Bu departmanın altında herhangi bir hiyerarşi seviyesi yoktur + description: Başka bir öğenin içinde alt öğeler oluşturmak için departmanlar veya kullanıcılar ekleyin. + add_button: Ekle add_department_form: - name_label: Department name - name_placeholder: Enter department name + name_label: Departman adı + name_placeholder: Departman adını girin move_user_dialog: - title: User already in a department - heading: Move user to this department? + title: Kullanıcı zaten bir departmanda + heading: Kullanıcıyı bu bölüme taşıyalım mı? description: "%{user} is currently a member of %{from_department}. Moving them will remove them from that department." - confirm: Move user + confirm: Kullanıcıyı taşı context_menu: - add_sub_department: Add sub-department + add_sub_department: Alt departman ekle add_user: Add user flash: user_added: User was successfully added to the department. @@ -1123,15 +1124,15 @@ tr: browser_session: "(Browser session)" current: Mevcut (bu cihaz) title: Oturum yönetimi - instructions: You are logged in to your account through the following devices. Revoke sessions that you do not recognise or from devices you do not control. + instructions: Hesabınıza aşağıdaki cihazlar üzerinden giriş yaptınız. Tanımadığınız veya kontrol etmediğiniz cihazlardan yapılan oturumları iptal edin. may_not_delete_current: Şuanki oturumunuzu silemezsiniz. deletion_warning: Bu oturumu iptal etmek istediğinizden emin misiniz? Bu cihazda oturumunuz kapatılacaktır. groups: member_in_these_groups: 'Bu kullanıcı şu anda aşağıdaki grupların bir üyesidir:' no_results_title_text: Bu kullanıcı şu anda hiçbir gruba üye değil. - summary_with_more_html: Member of %{names} and %{count_link}. + summary_with_more_html: "%{names} ve %{count_link} üyesi." more: "%{count} tane daha" - summary_html: Member of %{names}. + summary_html: "%{names} üyesi." memberships: no_results_title_text: Bu kullanıcı şuan için bir proje üyesi değil. open_profile: Profili aç @@ -1150,13 +1151,13 @@ tr: type: required: Lütfen davet edilecek türü seçin user: - title: Invite user to %{project_name} + title: Kullanıcıyı %{project_name} adresine davet edin description: Seçilen projede atanan role dayalı izinler group: - title: Invite group to %{project_name} + title: Grubu %{project_name} adresine davet edin description: Seçilen projede atanan role dayalı izinler placeholder_user: - title: Add placeholder user to %{project_name} + title: "%{project_name} adresine yer tutucu kullanıcı ekleyin" title_no_ee: Yer tutucu kullanıcı (yalnızca Enterprise sürümü eklentisi) description: Projeye erişimi yoktur ve e-posta gönderilmez. already_member_message: Zaten %{project} üyesi @@ -1166,7 +1167,7 @@ tr: no_results_placeholder: Hiçbir yer bulunamadı. create_new_placeholder: 'Yeni yer tutucu oluşturun:' no_results_group: Hiç grup bulunamadı. - invite_to_project: Invite to %{project_name} + invite_to_project: "%{project_name} adresine davet edin" required: user: Lütfen bir kullanıcı seçin placeholder: Lütfen bir yer tutucu seçin @@ -1174,7 +1175,7 @@ tr: role: label: rol %{project} no_roles_found: Hiç rol bulunamadı. - description: 'This is the role that the user will receive when they join your project. The role defines which actions they are allowed to take and which information they are allowed to see. [Learn more about roles and permissions.](docs_url) + description: 'Bu, kullanıcının projenize katıldığında alacağı roldür. Rol, hangi eylemleri gerçekleştirebileceklerini ve hangi bilgileri görebileceklerini tanımlar. [Roller ve izinler hakkında daha fazla bilgi edinin](docs_url) ' required: Lütfen bir rol seçin. @@ -1189,53 +1190,53 @@ tr: group: Grup artık %{project} 'nin bir parçası. Bu arada, bu grupla zaten plan yapabilir ve örneğin iş paketleri atayabilirsiniz. working_hours: current_schedule: - title: Current schedule - work_days: Work days - work_hours: Work hours - availability_factor: Availability factor - availability_subtitle: Dedicated to project work - effective_hours: Effective work hours - effective_subtitle: Per week - not_set: Not set + title: Güncel program + work_days: Çalışma günleri + work_hours: Çalışma saatleri + availability_factor: Kullanılabilirlik faktörü + availability_subtitle: Proje çalışmalarına adanmış + effective_hours: Etkin çalışma saatleri + effective_subtitle: Haftalık + not_set: Ayarlanmadı future: - title: Future schedules - description: Plan working schedule changes ahead of time. Once the date arrives your working schedules will be updated automatically. - add_button: Add future schedule - blank_title: No future schedules planned - blank_description: Create a future schedule to plan changes ahead of time + title: Gelecek programlar + description: Çalışma programı değişikliklerini önceden planlayın. Tarih geldiğinde çalışma programlarınız otomatik olarak güncellenecektir. + add_button: Gelecek program ekle + blank_title: Gelecekte planlanan bir program yok + blank_description: Değişiklikleri önceden planlamak için bir gelecek programı oluşturun history: - title: Schedule history - description: View your past work schedules. - blank_title: No schedule history yet - blank_description: Past schedule changes will appear here + title: Program geçmişi + description: Geçmiş çalışma programlarınızı görüntüleyin. + blank_title: Henüz program geçmişi yok + blank_description: Geçmiş program değişiklikleri burada görünecektir destroy: - confirm: Are you sure you want to delete this working schedule? + confirm: Bu çalışma programını silmek istediğinizden emin misiniz? form: - title: Plan a future work schedule - title_current: Edit current work schedule - start_date: Start date - start_date_caption: Select the date from when the new work schedule will be effective. - work_days: Work days - working_hours_label: Working hours - hours_mode_label: Hours mode - same_hours_mode: Same hours per day - individual_hours_mode: Individual hours per day - work_hours: Work hours - hours_per_day: Hours per day - per_day: per day - per_week: per week - total_work_hours: Total work hours - availability_description: The availability factor represents the actual percentage of your working time dedicated to project tasks. This accounts for meetings, emails, administrative work, and other non-project activities. - availability_factor: Availability factor - availability_factor_caption: Define the percentage of your working time dedicated to project work. - total_available_hours: Total available work hours - title_availability_factor: Availability factor - title_days_and_hours: Days and hours - title_future_dates: Future dates + title: Gelecekteki çalışma programını planlayın + title_current: Geçerli çalışma programını düzenleme + start_date: Başlangıç tarihi + start_date_caption: Yeni çalışma programının geçerli olacağı tarihi seçin. + work_days: Çalışma günleri + working_hours_label: Çalışma saatleri + hours_mode_label: Saat modu + same_hours_mode: Her gün aynı saatler + individual_hours_mode: Günlük bireysel saatler + work_hours: Çalışma saatleri + hours_per_day: Gün başına saat + per_day: günlük + per_week: haftalık + total_work_hours: Toplam çalışma saati + availability_description: Kullanılabilirlik faktörü, çalışma zamanınızın proje görevlerine ayrılan gerçek yüzdesini temsil eder. Bu, toplantıları, e-postaları, idari işleri ve diğer proje dışı faaliyetleri hesaba katar. + availability_factor: Kullanılabilirlik faktörü + availability_factor_caption: Çalışma zamanınızın yüzde kaçını proje çalışmalarına ayıracağınızı belirleyin. + total_available_hours: Toplam kullanılabilir çalışma saati + title_availability_factor: Kullanılabilirlik faktörü + title_days_and_hours: Gün ve saat + title_future_dates: Gelecek tarihler table: - mobile_title: Working schedules - start_date: Start date - work_days: Work days + mobile_title: Çalışma programları + start_date: Başlangıç tarihi + work_days: Çalışma günleri work_hours: Work hours availability_factor: Availability factor effective_work_hours: Effective work hours @@ -1609,7 +1610,7 @@ tr: ' login_with_auth_provider: veya varolan hesabınızı kullanarak oturum açın signup_with_auth_provider: veya kullanarak kaydolun - auth_source_login_html: Please login as %{login} to activate your account. + auth_source_login_html: Hesabınızı aktifleştirmek için lütfen %{login} olarak giriş yapın. omniauth_login: Hesabınızı aktifleştirmek için lütfen giriş yapın. actionview_instancetag_blank_option: Lütfen seçin activemodel: @@ -1619,10 +1620,10 @@ tr: activerecord: attributes: work_package_semantic_alias: - identifier: Identifier - work_package: Work package + identifier: Tanımlayıcı + work_package: İş paketi jira_import: - projects: Projects + projects: Projeler import/jira: name: Jira instance name url: Jira instance URL @@ -1675,7 +1676,7 @@ tr: regexp: Düzenli ifade searchable: Aranabilir admin_only: Yalnızca yönetici - has_comment: Add a comment text field + has_comment: Bir yorum metin alanı ekleyin custom_value: value: Değer design_color: @@ -1884,11 +1885,11 @@ tr: group: identity_url: Kimlik URL'si parent: Parent group - organizational_unit: Organizational unit - group_users: Group users + organizational_unit: Organizasyonel birim + group_users: Grup kullanıcıları group_detail: parent: Parent group - organizational_unit: Organizational unit + organizational_unit: Organizasyonel birim user_preference: header_look_and_feel: Görünüm ve his header_alerts: Uyarılar @@ -1918,27 +1919,27 @@ tr: principal_type: Davet Türü id_or_email: İsim veya e-posta adresi user_non_working_time: - start_date: Start date - end_date: End date + start_date: Başlangıç tarihi + end_date: Bitiş tarihi user_working_hours: valid_from: Valid from - monday: Monday - monday_hours: Monday hours - tuesday: Tuesday - tuesday_hours: Tuesday hours - wednesday: Wednesday - wednesday_hours: Wednesday hours - thursday: Thursday - thursday_hours: Thursday hours - friday: Friday - friday_hours: Friday hours - saturday: Saturday - saturday_hours: Saturday hours - sunday: Sunday - sunday_hours: Sunday hours - availability_factor: Availability factor - shared_hours: Work hours - days: Working days + monday: Pazartesi + monday_hours: Pazartesi saatleri + tuesday: Salı + tuesday_hours: Salı saatleri + wednesday: Çarşamba + wednesday_hours: Çarşamba saatleri + thursday: Perşembe + thursday_hours: Perşembe saatleri + friday: Cuma + friday_hours: Cuma saatleri + saturday: Cumartesi + saturday_hours: Cumartesi saatleri + sunday: Pazar + sunday_hours: Pazar saatleri + availability_factor: Kullanılabilirlik faktörü + shared_hours: Çalışma saatleri + days: Çalışma Günleri version: effective_date: Bitiş tarihi sharing: Paylaşım @@ -1960,7 +1961,7 @@ tr: duration: Süre end_insertion: Ekleme işlemi bitti end_deletion: Silme işlemi bitti - identifier: Identifier + identifier: Tanımlayıcı ignore_non_working_days: Çalışma dışı günleri yoksay include_non_working_days: title: İş günleri @@ -1976,7 +1977,7 @@ tr: readonly: Salt okunur remaining_hours: Kalan çalışma remaining_time: Kalan çalışma - sequence_number: Sequence number + sequence_number: Sıra numarası shared_with_users: Şununla paylaşıldı schedule_manually: Manuel zamanlamayı etkinleştir spent_hours: Harcanan zaman @@ -1986,6 +1987,29 @@ tr: type: Tür version: Sürüm watcher: Takip eden + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: kabul edilmelidir. @@ -1995,8 +2019,8 @@ tr: before: "%{date}'dan daha önce olması gerekir." before_or_equal_to: "%{date}} tarihinden önce veya ona eşit olmalıdır." blank: boş bırakılamaz. - not_before_start_date: must not be before the start date. - overlapping_range: overlaps with an existing non-working day range. + not_before_start_date: başlangıç tarihinden önce olmamalıdır. + overlapping_range: mevcut bir çalışma dışı gün aralığı ile çakışır. blank_nested: "'%{property}' özelliğinin ayarlanmış olması gerekir." cannot_delete_mapping: zorunlu. Silinemez. is_for_all_cannot_modify: tüm projeler içindir ve bu nedenle değiştirilemez. @@ -2005,8 +2029,8 @@ tr: confirmation: "%{attribute} eşleşmiyor." could_not_be_copied: "%{dependency} (tam olarak) kopyalanamadı." does_not_exist: mevcut değil. - user_already_in_department: User %{user_id} is already a member of department %{department_id}. - error_enterprise_only: "%{action} is only available in the OpenProject Enterprise edition." + user_already_in_department: Kullanıcı %{user_id} zaten %{department_id} departmanının bir üyesidir. + error_enterprise_only: "%{action} yalnızca OpenProject Enterprise sürümünde mevcuttur." error_unauthorized: erişilemez. error_readonly: yazılmaya çalışıldı fakat yazılabilir değil. error_conflict: Bu arada, bilgi en az bir başka kullanıcı tarafından güncellendi. @@ -3564,7 +3588,7 @@ tr: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3578,6 +3602,7 @@ tr: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3590,6 +3615,7 @@ tr: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3598,6 +3624,7 @@ tr: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3612,6 +3639,7 @@ tr: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3620,6 +3648,7 @@ tr: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml index 0cfe96ef306..053862e71bc 100644 --- a/config/locales/crowdin/uk.yml +++ b/config/locales/crowdin/uk.yml @@ -274,6 +274,7 @@ uk: caption: Перегляньте налаштування імпорту й запустіть його caption_done: Завершено label_available_data: Дані, доступні для імпорту + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Почати імпорт description: Ви збираєтеся запустити імпорт із наведеними далі налаштуваннями. label_progress: Виконується імпорт… @@ -2020,6 +2021,29 @@ uk: type: Тип version: Версія watcher: Спостерігач + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: повинні бути прийняті. @@ -3680,7 +3704,7 @@ uk: personal_reminder: Повідомляти мене про персональні нагадування daily_reminders: title: Надсилати мені щоденні нагадування електронною поштою про непрочитані сповіщення - caption: Ви отримуватимете лише нагадування про непрочитані сповіщення, і вони надходитимуть тільки у вказаний вами час. Доки ви не налаштуєте для свого облікового запису часовий пояс, використовуватиметься UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Увімкнути щоденні нагадування електронною поштою add_time: Додати час remove_time: Вилучити час @@ -3694,6 +3718,7 @@ uk: date_range: Період призупинення email_alerts: title: Сповіщення електронною поштою для інших елементів, які не є пакетами робіт + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: Новину додано news_commented: Коментар щодо новини document_added: Документ додано @@ -3706,6 +3731,7 @@ uk: notifications: participating: title: Бере участь + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Оновити налаштування mentioned: Вас згадали watched: Відстеження @@ -3714,6 +3740,7 @@ uk: shared: Доступ надано мені date_alerts: title: Сповіщення про дати + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Оновити сповіщення про дати start_date: Дата початку due_date: Дата завершення @@ -3728,6 +3755,7 @@ uk: seven_days_after: Через 7 днів non_participating: title: Не бере участі + description: Additional notifications for activities in all projects. submit_button: Оновити налаштування work_package_created: Нові пакети робіт work_package_commented: Усі нові коментарі @@ -3736,6 +3764,7 @@ uk: work_package_scheduled: Усі зміни дат project_specific_settings: title: Налаштування сповіщень щодо проєктів + description: These project-specific settings override default settings above. add_button: Додати сповіщення щодо проєктів dialog_title: Додати сповіщення щодо проєктів list_header: Проєкти зі спеціальними сповіщеннями diff --git a/config/locales/crowdin/uz.yml b/config/locales/crowdin/uz.yml index 0a32c3ebf51..61db3b91164 100644 --- a/config/locales/crowdin/uz.yml +++ b/config/locales/crowdin/uz.yml @@ -262,6 +262,7 @@ uz: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1985,6 +1986,29 @@ uz: type: Type version: Version watcher: Watcher + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: must be accepted. @@ -3559,7 +3583,7 @@ uz: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3573,6 +3597,7 @@ uz: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3585,6 +3610,7 @@ uz: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3593,6 +3619,7 @@ uz: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3607,6 +3634,7 @@ uz: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3615,6 +3643,7 @@ uz: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml index cc5918c1830..aaadc32a174 100644 --- a/config/locales/crowdin/vi.yml +++ b/config/locales/crowdin/vi.yml @@ -256,6 +256,7 @@ vi: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1967,6 +1968,29 @@ vi: type: loại version: Phiên bản watcher: Người quan sát + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: phải được đồng ý @@ -3500,7 +3524,7 @@ vi: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3514,6 +3538,7 @@ vi: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3526,6 +3551,7 @@ vi: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3534,6 +3560,7 @@ vi: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3548,6 +3575,7 @@ vi: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3556,6 +3584,7 @@ vi: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml index 8def76062d9..eaeb5908f24 100644 --- a/config/locales/crowdin/zh-CN.yml +++ b/config/locales/crowdin/zh-CN.yml @@ -256,6 +256,7 @@ zh-CN: caption: 审核导入设置并开始导入 caption_done: 已完成 label_available_data: 可导入的数据 + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: 开始导入 description: 您即将使用以下设置开始导入运行。 label_progress: 正在导入… @@ -1961,6 +1962,29 @@ zh-CN: type: 类型 version: 版本 watcher: 关注者 + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: 必须接受。 @@ -3494,7 +3518,7 @@ zh-CN: personal_reminder: 有个人提醒时通知我 daily_reminders: title: 向我发送针对未读通知的每日电子邮件提醒 - caption: 您仅会收到针对未读通知的提醒,且仅会在您指定的时间收到提醒。在您为帐户配置时区前,时间将解释为采用 UTC 格式。 + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: 启用每日电子邮件提醒 add_time: 添加时间 remove_time: 移除时间 @@ -3508,6 +3532,7 @@ zh-CN: date_range: 暂停时间段 email_alerts: title: 其他条目(非工作包)的电子邮件提醒 + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: 新闻已添加 news_commented: 评论新闻条目 document_added: 文档已添加 @@ -3520,6 +3545,7 @@ zh-CN: notifications: participating: title: 参与 + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: 更新偏好设置 mentioned: 被提及 watched: 关注中 @@ -3528,6 +3554,7 @@ zh-CN: shared: 与我共享 date_alerts: title: 日期提醒 + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: 更新日期提醒 start_date: 开始日期 due_date: 完成日期 @@ -3542,6 +3569,7 @@ zh-CN: seven_days_after: 推后 7 天 non_participating: title: 不参与 + description: Additional notifications for activities in all projects. submit_button: 更新偏好设置 work_package_created: 新工作包 work_package_commented: 所有新评论 @@ -3550,6 +3578,7 @@ zh-CN: work_package_scheduled: 所有日期更改 project_specific_settings: title: 项目特定通知设置 + description: These project-specific settings override default settings above. add_button: 添加项目特定通知 dialog_title: 添加项目特定通知 list_header: 具有特定通知的项目 diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml index 88ccffee3d4..8e30142ba6f 100644 --- a/config/locales/crowdin/zh-TW.yml +++ b/config/locales/crowdin/zh-TW.yml @@ -256,6 +256,7 @@ zh-TW: caption: Review your import settings and start the import caption_done: Completed label_available_data: Available data to import + label_users_import_explanation: Users that are involved in selected projects (group memberships included) button_start: Start import description: You are about to start an import run with the following settings. label_progress: Import in progress... @@ -1961,6 +1962,29 @@ zh-TW: type: 類型 version: 版本 watcher: 監看者 + ordered_persisted_query_entity: + persisted_query: Persisted query + entity: Entity + position: Position + persisted_query: + name: Name + views: Views + filters: Filters + orders: Orders + selects: Selects + persisted_view: + name: Name + query: Query + parent: Parent view + public: Public + user_card_view: + secondary_info: Secondary info + show_status_badge: Show status badge + show_email: Show email + tag_source: Tag source + tag_limit: Tag limit + card_size: Card size + columns_per_row: Columns per row errors: messages: accepted: 必須被接受 @@ -3492,7 +3516,7 @@ zh-TW: personal_reminder: Notify me for personal reminders daily_reminders: title: Send me daily email reminders for unread notifications - caption: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. enabled: Enable daily email reminders add_time: Add time remove_time: Remove time @@ -3506,6 +3530,7 @@ zh-TW: date_range: Pause period email_alerts: title: Email alerts for other items that are not work packages + description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. news_added: News added news_commented: Comment on a news item document_added: Document added @@ -3518,6 +3543,7 @@ zh-TW: notifications: participating: title: Participating + description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). submit_button: Update preferences mentioned: Mentioned watched: Watching @@ -3526,6 +3552,7 @@ zh-TW: shared: Shared with me date_alerts: title: Date alerts + description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). submit_button: Update date alerts start_date: Start date due_date: Finish date @@ -3540,6 +3567,7 @@ zh-TW: seven_days_after: 7 days after non_participating: title: Non-participating + description: Additional notifications for activities in all projects. submit_button: Update preferences work_package_created: New work packages work_package_commented: All new comments @@ -3548,6 +3576,7 @@ zh-TW: work_package_scheduled: All date changes project_specific_settings: title: Project-specific notification settings + description: These project-specific settings override default settings above. add_button: Add project-specific notifications dialog_title: Add project-specific notifications list_header: Projects with specific notifications diff --git a/modules/auth_saml/config/locales/crowdin/ro.yml b/modules/auth_saml/config/locales/crowdin/ro.yml index 50f14b6f1ff..306cea9d806 100644 --- a/modules/auth_saml/config/locales/crowdin/ro.yml +++ b/modules/auth_saml/config/locales/crowdin/ro.yml @@ -59,7 +59,7 @@ ro: label_mapping: Mapping label_requested_attribute_for: 'Requested attribute for: %{attribute}' no_results_table: No SAML identity providers have been defined yet. - notice_created: A new SAML identity provider was successfully created. + notice_created: Un nou furnizor de identitate SAML a fost creat cu succes. plural: SAML identity providers singular: SAML identity provider requested_attributes: Requested attributes diff --git a/modules/backlogs/config/locales/crowdin/fr.yml b/modules/backlogs/config/locales/crowdin/fr.yml index 299f99f9ee6..a257687070d 100644 --- a/modules/backlogs/config/locales/crowdin/fr.yml +++ b/modules/backlogs/config/locales/crowdin/fr.yml @@ -118,7 +118,7 @@ fr: text: Nous sommes en train de redessiner le module Backlogs. Les paramètres d'administration pour les sprints et les backlogs seront visibles ici dans un futur proche. Les paramètres au niveau du projet restent disponibles. backlog_bucket_component: blankslate_title: Backlog bucket is empty - blankslate_description: Drag items here to add them. + blankslate_description: Faites glisser les éléments ici pour les ajouter. backlog_bucket_item_component: label_actions: Work package actions sprint_component: @@ -192,7 +192,7 @@ fr: copy_url_to_clipboard: Copier l'URL dans le presse-papier copy_work_package_id: Copier l'ID du lot de travail move_menu: Déplacer - move_to_sprint: Move to sprint + move_to_sprint: Déplacer dans le sprint burndown_chart: show: blankslate_title: Aucune donnée de gravure disponible diff --git a/modules/backlogs/config/locales/crowdin/js-ro.yml b/modules/backlogs/config/locales/crowdin/js-ro.yml index a89269d00b5..99e218f7021 100644 --- a/modules/backlogs/config/locales/crowdin/js-ro.yml +++ b/modules/backlogs/config/locales/crowdin/js-ro.yml @@ -26,5 +26,5 @@ ro: properties: storyPoints: Puncte cerință burndown: - day: Day - points: Points + day: Zi + points: Puncte diff --git a/modules/backlogs/config/locales/crowdin/ro.yml b/modules/backlogs/config/locales/crowdin/ro.yml index 0ed933204da..649cbc1d1c0 100644 --- a/modules/backlogs/config/locales/crowdin/ro.yml +++ b/modules/backlogs/config/locales/crowdin/ro.yml @@ -28,14 +28,14 @@ ro: attributes: agile/sprint: duration: Durată - finish_date: Finish date + finish_date: Dată finalizare goal: Sprint goal name: Sprint name sharing: Sharing statuses: in_planning: In planning - active: Active - completed: Completed + active: Activ + completed: Finalizat project: sprint_sharing: Sprint sharing sprint: diff --git a/modules/backlogs/config/locales/crowdin/tr.yml b/modules/backlogs/config/locales/crowdin/tr.yml index 99e52004cc3..2d77cd99d56 100644 --- a/modules/backlogs/config/locales/crowdin/tr.yml +++ b/modules/backlogs/config/locales/crowdin/tr.yml @@ -27,15 +27,15 @@ tr: activerecord: attributes: agile/sprint: - duration: Duration - finish_date: Finish date + duration: Süre + finish_date: Bitiş tarihi goal: Sprint goal name: Sprint name sharing: Paylaşım statuses: - in_planning: In planning - active: Active - completed: Completed + in_planning: Planlamada + active: Aktif + completed: Tamamlandı project: sprint_sharing: Sprint sharing sprint: @@ -81,7 +81,7 @@ tr: other: There are %{count} work packages that were not completed in this sprint. format: "%{message}" status: - not_active: is not active so it cannot be closed. + not_active: aktif değildir, bu nedenle kapatılamaz. sprint: cannot_end_before_it_starts: Sprint başlamadan önce bitemez. models: @@ -92,8 +92,8 @@ tr: definition_of_done_caption: Work packages with these statuses are treated as completed in backlog views and reporting. done_status: Done status sharing_description: This project can either share its own sprints, receive shared sprints or handle sprints independently (no sharing). - sharing: Sharing - label_burndown_chart: Burndown chart + sharing: Paylaşım + label_burndown_chart: Burndown grafiği label_sprint_board: Sprint board work_package_is_closed: İş paketi, ne zaman label_is_done_status: Durum %{status_name} tamamlandı anlamına geliyor @@ -105,7 +105,7 @@ tr: rebuild: Yeniden inşa et rebuild_positions: Pozisyonu yeniden inşa et remaining_hours: Kalan çalışma - show_burndown_chart: Burndown chart + show_burndown_chart: Burndown grafiği story_points: one: "%{count} hikaye noktası" other: "%{count} hikaye noktaları" @@ -118,25 +118,25 @@ tr: text: We are currently redesigning the Backlogs module. Admin settings for sprints and backlogs will be visible here in the near future. Project-level settings remain available. backlog_bucket_component: blankslate_title: Backlog bucket is empty - blankslate_description: Drag items here to add them. + blankslate_description: Öğeleri eklemek için buraya sürükleyin. backlog_bucket_item_component: - label_actions: Work package actions + label_actions: İş paketi eylemleri sprint_component: - blankslate_title: "%{name} is empty" - blankslate_description: No items planned yet. Drag items here to add them. + blankslate_title: "%{name} boş" + blankslate_description: Henüz planlanan öğe yok. Eklemek için öğeleri buraya sürükleyin. inbox_component: blankslate_title: Backlog inbox is empty - blankslate_description: All open work packages in this project will automatically appear here. + blankslate_description: Bu projedeki tüm açık iş paketleri otomatik olarak burada görünecektir. show_more: - one: Show 1 more item - other: Show %{count} more items + one: 1 ürün daha göster + other: "%{count} ürün daha göster" inbox_item_component: - label_actions: Work package actions + label_actions: İş paketi eylemleri inbox_menu_component: action_menu: - copy_url_to_clipboard: Copy URL to clipboard - copy_work_package_id: Copy work package ID - move_menu: Move + copy_url_to_clipboard: URL'yi panoya kopyala + copy_work_package_id: İş paketi kimliğini kopyala + move_menu: Taşı label_move_to_sprint: Move to sprint move_to_sprint_dialog_component: title: Move to sprint @@ -184,67 +184,67 @@ tr: label_actions: Sprint actions action_menu: edit_sprint: Edit sprint - add_work_package: Add work package + add_work_package: İş paketi ekle story_component: - label_actions: Story actions + label_actions: Hikaye eylemleri story_menu_list_component: action_menu: - copy_url_to_clipboard: Copy URL to clipboard - copy_work_package_id: Copy work package ID - move_menu: Move - move_to_sprint: Move to sprint + copy_url_to_clipboard: URL'yi panoya kopyala + copy_work_package_id: İş paketi kimliğini kopyala + move_menu: Taşı + move_to_sprint: Sprint'e taşı burndown_chart: show: - blankslate_title: No burndown data available - blankslate_description: Set start and end date for the sprint to generate a burndown chart. + blankslate_title: Burndown verisi yok + blankslate_description: Bir burndown grafiği oluşturmak için sprint için başlangıç ve bitiş tarihi belirleyin. burndown: story_points: Hikaye noktaları story_points_ideal: Hikaye noktaları (ideal) label_backlog: Backlog label_backlog_bucket_edit: Edit backlog bucket label_backlog_bucket_new: New backlog bucket - label_inbox: Inbox + label_inbox: Gelen Kutusu label_backlogs: İş listeleri - label_burndown_chart: Burndown chart - label_sprint_board: Sprint board + label_burndown_chart: Burndown grafiği + label_sprint_board: Sprint panosu label_points_burn_down: Aşağı label_points_burn_up: Yukarı - label_sprint_edit: Edit sprint - label_sprint_new: New sprint + label_sprint_edit: Sprint düzenle + label_sprint_new: Yeni sprint label_backlog_and_sprints: Backlog and sprints label_task_board: Görev panosu - notice_successful_start: The sprint was started. - notice_successful_finish: The sprint was completed. - notice_unsuccessful_start: The sprint could not be started. - notice_unsuccessful_start_with_reason: 'The sprint could not be started: %{reason}' - notice_unsuccessful_finish: The sprint could not be completed. - notice_unsuccessful_finish_with_reason: 'The sprint could not be completed: %{reason}' - permission_create_sprints: Create sprints - permission_manage_sprint_items: Manage sprint items + notice_successful_start: Sprint başladı. + notice_successful_finish: Sprint tamamlandı. + notice_unsuccessful_start: Sprint başlatılamadı. + notice_unsuccessful_start_with_reason: 'Sprint başlatılamadı: %{reason}' + notice_unsuccessful_finish: Sprint tamamlanamadı. + notice_unsuccessful_finish_with_reason: 'Sprint tamamlanamadı: %{reason}' + permission_create_sprints: Sprintler oluşturma + permission_manage_sprint_items: Sprint öğelerini yönetme permission_select_done_statuses: Tamamlanan durumları seçiniz - permission_share_sprint: Share sprint - permission_start_complete_sprint: Start/complete sprint - permission_view_sprints: View sprints + permission_share_sprint: Sprint paylaşma + permission_start_complete_sprint: Sprint'i başlatma/tamamlama + permission_view_sprints: Sprintleri görüntüleme project_module_backlogs: İş listesi projects: settings: backlog_sharing: options: no_sharing: - label: Don't share - caption: Sprints created in this project will only be available and visible to this project. They will also not be visible to subprojects. + label: Paylaşma + caption: Bu projede oluşturulan sprintler yalnızca bu proje tarafından kullanılabilir ve görülebilir olacaktır. Ayrıca alt projeler tarafından da görülemezler. receive_shared: - label: Receive shared sprints - caption: This project can only use sprints shared by other projects. - warning: This project can only use sprints shared by other projects. Unused sprints created in this project in the past, will no longer be visible. + label: Paylaşılan sprintleri alın + caption: Bu proje yalnızca diğer projeler tarafından paylaşılan sprintleri kullanabilir. + warning: Bu proje yalnızca diğer projeler tarafından paylaşılan sprintleri kullanabilir. Geçmişte bu projede oluşturulan kullanılmayan sprintler artık görünmeyecektir. share_all_projects: - label: All projects - caption: Sprints created in this project will be available to all projects in this instance. If you select this option, it will no longer be available to other projects. - disabled_caption: Option not available since project "%{name}" is currently sharing with all projects and only one project can do this. - disabled_caption_anonymous: Option not available since another project is currently sharing with all projects and only one project can do this. + label: Tüm projeler + caption: Bu projede oluşturulan sprintler bu örnekteki tüm projeler tarafından kullanılabilir. Bu seçeneği seçerseniz, artık diğer projeler tarafından kullanılamayacaktır. + disabled_caption: '"%{name}" projesi şu anda tüm projelerle paylaşıldığından ve bunu yalnızca bir proje yapabildiğinden seçenek kullanılamaz.' + disabled_caption_anonymous: Başka bir proje şu anda tüm projelerle paylaşımda olduğundan ve bunu yalnızca bir proje yapabildiğinden seçenek kullanılamaz. share_subprojects: - label: Subprojects - caption: Sprints created in this project will be available to all subprojects of the current project. - info: Sharing a sprint will share the name, status and the start and finish dates in all projects. These cannot be modified in projects that receive and use these sprints. - sprint_sharing: Share sprints + label: Alt Projeler + caption: Bu projede oluşturulan sprintler, mevcut projenin tüm alt projelerinde kullanılabilir olacaktır. + info: Bir sprintin paylaşılması, tüm projelerde adı, durumu ve başlangıç ve bitiş tarihlerini paylaşacaktır. Bu sprintleri alan ve kullanan projelerde bunlar değiştirilemez. + sprint_sharing: Sprintleri paylaş remaining_hours: kalan çalışma diff --git a/modules/budgets/config/locales/crowdin/ro.yml b/modules/budgets/config/locales/crowdin/ro.yml index b8a41ec5db4..252f6879484 100644 --- a/modules/budgets/config/locales/crowdin/ro.yml +++ b/modules/budgets/config/locales/crowdin/ro.yml @@ -66,19 +66,19 @@ ro: budgets: widgets: budget_totals: - title: Budget totals - remaining_budget: Remaining budget - spent_budget: Spent budget - total_actual_costs: Total actual costs - total_planned_budget: Total planned budget + title: Totaluri bugetare + remaining_budget: Buget rămas + spent_budget: Buget cheltuit + total_actual_costs: Costuri reale totale + total_planned_budget: Buget total planificat budget_by_cost_type: - title: Budget by cost type + title: Buget pe tip de cost blankslate: - heading: Start project controlling - description: Get an overview of your budgets and costs to efficiently track the health status of your project + heading: Inițiere monitorizare proiect + description: Obține o imagine de ansamblu asupra bugetelor și costurilor pentru a evalua eficient starea proiectului blankslate_zero: - heading: Budget details missing - description: Add details about your planned budget to see data here + heading: Fără detalii bugetare + description: Adăugă detalii despre bugetul planificat pentru a vedea datele count_caption: zero: No budget data. one: Data aggregated from %{count} budget @@ -96,7 +96,7 @@ ro: zero: No budget data. one: Data aggregated from %{count} budget included in this portfolio and its subitems. other: Data aggregated from %{count} budgets included in this portfolio and its subitems. - view_details: View budget details + view_details: Vezi detaliile bugetului events: budget: Buget editat help_click_to_edit: Câmpul %s este gol. Click aici pentru a-l edita. diff --git a/modules/budgets/config/locales/crowdin/tr.yml b/modules/budgets/config/locales/crowdin/tr.yml index 9ad1c3522ff..8c2933e554a 100644 --- a/modules/budgets/config/locales/crowdin/tr.yml +++ b/modules/budgets/config/locales/crowdin/tr.yml @@ -77,8 +77,8 @@ tr: heading: Proje kontrolüne başlayın description: Projenizin sağlık durumunu verimli bir şekilde takip etmek için bütçelerinize ve maliyetlerinize genel bir bakış elde edin blankslate_zero: - heading: Budget details missing - description: Add details about your planned budget to see data here + heading: Bütçe detayları eksik + description: Verileri burada görmek için planladığınız bütçeyle ilgili ayrıntıları ekleyin count_caption: zero: No budget data. one: Data aggregated from %{count} budget diff --git a/modules/costs/config/locales/crowdin/tr.yml b/modules/costs/config/locales/crowdin/tr.yml index cb9b6eacb36..2f924f80807 100644 --- a/modules/costs/config/locales/crowdin/tr.yml +++ b/modules/costs/config/locales/crowdin/tr.yml @@ -206,10 +206,10 @@ tr: project_module_costs: Zaman ve maliyetler setting_allow_tracking_start_and_end_times: Başlangıç ve bitiş saatlerine izin verin setting_costs_currency: Para birimi - setting_costs_currency_caption: This is the unit of currency. It can be a three-letter ISO code like EUR, USD or JPY or a symbol like €, $ or ¥. - setting_costs_currency_format: Currency format - setting_costs_currency_format_prefix: Before the number (e.g. EUR 100) - setting_costs_currency_format_suffix: After the number (e.g. 100 EUR) + setting_costs_currency_caption: Bu para birimidir. EUR, USD veya JPY gibi üç harfli bir ISO kodu veya €, $ veya ¥ gibi bir sembol olabilir. + setting_costs_currency_format: Para birimi formatı + setting_costs_currency_format_prefix: Rakamdan önce (örn. EUR 100) + setting_costs_currency_format_suffix: Rakamdan sonra (örn. 100 EUR) setting_enforce_tracking_start_and_end_times: Başlangıç ve bitiş saatleri gerektir setting_enforce_without_allow: Başlangıç ve bitiş saatlerini zorunlu tutmak, bunlara izin vermeden mümkün değildir setting_allow_tracking_start_and_end_times_caption: Zaman kaydı yaparken başlangıç ve bitiş zamanlarının girilmesini sağlar. @@ -236,7 +236,7 @@ tr: title: Aylara göre gerçek maliyetler blankslate: heading: Zamanınızı ve maliyetlerinizi takip etmeye başlayın - description: Get an overview of your costs and logged time to monitor progress of your project. Make sure that work packages are associated with the correct budget. + description: Projenizin ilerleyişini izlemek için maliyetlerinize ve kaydedilen zamana genel bir bakış elde edin. İş paketlerinin doğru bütçe ile ilişkilendirildiğinden emin olun. action: Günlük zamanı view_details: Gerçek maliyet ayrıntılarını görüntüleyin ee: diff --git a/modules/documents/config/locales/crowdin/tr.yml b/modules/documents/config/locales/crowdin/tr.yml index 7f1c1ee76a7..c520840ebf4 100644 --- a/modules/documents/config/locales/crowdin/tr.yml +++ b/modules/documents/config/locales/crowdin/tr.yml @@ -25,7 +25,7 @@ tr: name: OpenProject Belgeler description: Projelerde belge oluşturulmasına izin veren bir OpenProject eklentisi. attributes: - collaborative_editing_hocuspocus_url: Hocuspocus server URL + collaborative_editing_hocuspocus_url: Hocuspocus sunucu URL'si activerecord: errors: models: @@ -72,8 +72,8 @@ tr: show_edit_view: connection_error_notice: description_server_unavailable: |- - Unable to open document because the real-time text collaboration server is unreachable. - Please contact the administrator if the problem persists. + Gerçek zamanlı metin işbirliği sunucusuna erişilemediği için belge açılamıyor. + Sorun devam ederse lütfen yöneticiyle iletişime geçin. action: Tekrar deneyin tabs: Belge sekmeleri index_page: @@ -87,7 +87,7 @@ tr: collaboration_settings: Gerçek zamanlı işbirliği last_updated_at: Son kaydedilen %{time}. info_line: - currently_offline: You are currently offline. + currently_offline: Şu anda çevrimdışısınız. connection_restored: You are now back online. active_editors: Etkin düzenleyici active_editors_count: diff --git a/modules/github_integration/config/locales/crowdin/ro.yml b/modules/github_integration/config/locales/crowdin/ro.yml index 730cd2a0ffc..5e05f35080a 100644 --- a/modules/github_integration/config/locales/crowdin/ro.yml +++ b/modules/github_integration/config/locales/crowdin/ro.yml @@ -22,20 +22,20 @@ --- ro: attributes: - additions_count: Number of additions - deletions_count: Number of deletions - comments_count: Comments count + additions_count: Numărul elementelor adăugate + deletions_count: Numărul elementelor șterse + comments_count: Numărul de comentarii github_html_url: Pull Request URL github_app_owner_avatar_url: Owner avatar URL - review_comments_count: Review comments count - github: GitHub identifer + review_comments_count: Numărul de recenzii + github: Identificator GitHub github_avatar_url: Avatar URL - github_updated_at: Updated at - github_login: GitHub login + github_updated_at: Ultima actualizare + github_login: Autentificare GitHub host: Server gazdă - labels: Labels + labels: Etichete repository: Repo - changed_files_count: Changed files + changed_files_count: Fișiere modificate button_add_deploy_target: Add deploy target label_deploy_target: Deploy target label_deploy_target_new: New deploy target @@ -55,8 +55,8 @@ ro: ' plugin_openproject_github_integration: - name: OpenProject GitHub Integration - description: Integrates OpenProject and GitHub for a better workflow + name: Integrare GitHub OpenProject + description: Integrează OpenProject și GitHub pentru un flux de lucru îmbunătățit project_module_github: GitHub permission_show_github_content: Afișați conținutul GitHub permission_introspection: Read running OpenProject core version and build SHA diff --git a/modules/job_status/config/locales/crowdin/af.yml b/modules/job_status/config/locales/crowdin/af.yml index 229d7699154..d70295917d2 100644 --- a/modules/job_status/config/locales/crowdin/af.yml +++ b/modules/job_status/config/locales/crowdin/af.yml @@ -6,7 +6,7 @@ af: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/ar.yml b/modules/job_status/config/locales/crowdin/ar.yml index 671de70fdea..166774e942d 100644 --- a/modules/job_status/config/locales/crowdin/ar.yml +++ b/modules/job_status/config/locales/crowdin/ar.yml @@ -6,7 +6,7 @@ ar: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/az.yml b/modules/job_status/config/locales/crowdin/az.yml index ebb97b02e27..079731176a7 100644 --- a/modules/job_status/config/locales/crowdin/az.yml +++ b/modules/job_status/config/locales/crowdin/az.yml @@ -6,7 +6,7 @@ az: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/be.yml b/modules/job_status/config/locales/crowdin/be.yml index 3b442c528a9..17bc7f71a9f 100644 --- a/modules/job_status/config/locales/crowdin/be.yml +++ b/modules/job_status/config/locales/crowdin/be.yml @@ -6,7 +6,7 @@ be: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/bg.yml b/modules/job_status/config/locales/crowdin/bg.yml index e81872f2a40..fb3fc716724 100644 --- a/modules/job_status/config/locales/crowdin/bg.yml +++ b/modules/job_status/config/locales/crowdin/bg.yml @@ -6,7 +6,7 @@ bg: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Моля, кликнете тук, за да продължите. diff --git a/modules/job_status/config/locales/crowdin/ca.yml b/modules/job_status/config/locales/crowdin/ca.yml index c75cd5b7b75..61181a8d497 100644 --- a/modules/job_status/config/locales/crowdin/ca.yml +++ b/modules/job_status/config/locales/crowdin/ca.yml @@ -6,7 +6,7 @@ ca: description: Listing and status of background jobs. job_status_dialog: download_starts: La descàrrega hauria d'iniciar-se automàticament - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Estat de l'operació de fons redirect: Estàs sent redirigit. redirect_link: Si us plau, fes clic aquí per continuar. diff --git a/modules/job_status/config/locales/crowdin/ckb-IR.yml b/modules/job_status/config/locales/crowdin/ckb-IR.yml index 84a3b02fc2e..bf3afe43e54 100644 --- a/modules/job_status/config/locales/crowdin/ckb-IR.yml +++ b/modules/job_status/config/locales/crowdin/ckb-IR.yml @@ -6,7 +6,7 @@ ckb-IR: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/cs.yml b/modules/job_status/config/locales/crowdin/cs.yml index 1df8f27cb33..6ce973675ba 100644 --- a/modules/job_status/config/locales/crowdin/cs.yml +++ b/modules/job_status/config/locales/crowdin/cs.yml @@ -6,7 +6,7 @@ cs: description: Seznam a stav úkolů na pozadí. job_status_dialog: download_starts: Stahování by mělo začít automaticky. - click_to_download: Nebo [klikněte zde](download_url) pro stažení. + click_to_download: Or [click here](download_url) to download. title: Stav úlohy na pozadí redirect: Nyní jste přesměrováváni redirect_link: Pro pokračování klikněte prosím zde. diff --git a/modules/job_status/config/locales/crowdin/da.yml b/modules/job_status/config/locales/crowdin/da.yml index ff96a5df0f2..3a402675322 100644 --- a/modules/job_status/config/locales/crowdin/da.yml +++ b/modules/job_status/config/locales/crowdin/da.yml @@ -6,7 +6,7 @@ da: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/de.yml b/modules/job_status/config/locales/crowdin/de.yml index 849d2968f78..65215c48a7d 100644 --- a/modules/job_status/config/locales/crowdin/de.yml +++ b/modules/job_status/config/locales/crowdin/de.yml @@ -6,7 +6,7 @@ de: description: Auflistung und Status der Hintergrundaufträge. job_status_dialog: download_starts: Der Download sollte automatisch starten. - click_to_download: Oder, [klicken Sie hier](download_url) zum Herunterladen. + click_to_download: Or [click here](download_url) to download. title: Status des Hintergrundauftrags redirect: Sie werden weitergeleitet. redirect_link: Bitte klicken Sie hier, um fortzufahren. diff --git a/modules/job_status/config/locales/crowdin/el.yml b/modules/job_status/config/locales/crowdin/el.yml index 84ac338e046..c0c6c1b5616 100644 --- a/modules/job_status/config/locales/crowdin/el.yml +++ b/modules/job_status/config/locales/crowdin/el.yml @@ -6,7 +6,7 @@ el: description: Κατάλογος και κατάσταση των εργασιών παρασκηνίου. job_status_dialog: download_starts: Η λήψη θα πρέπει να ξεκινήσει αυτόματα. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Κατάσταση εργασίας παρασκηνίου redirect: Ανακατευθύνεστε. redirect_link: Παρακαλώ κάντε κλικ εδώ για να συνεχίσετε. diff --git a/modules/job_status/config/locales/crowdin/eo.yml b/modules/job_status/config/locales/crowdin/eo.yml index f86e31f52e9..a9cfd694eb5 100644 --- a/modules/job_status/config/locales/crowdin/eo.yml +++ b/modules/job_status/config/locales/crowdin/eo.yml @@ -6,7 +6,7 @@ eo: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Fona laborstato redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/es.yml b/modules/job_status/config/locales/crowdin/es.yml index b90aa8181f8..6a472f8c878 100644 --- a/modules/job_status/config/locales/crowdin/es.yml +++ b/modules/job_status/config/locales/crowdin/es.yml @@ -6,7 +6,7 @@ es: description: Listado y estado de los trabajos en segundo plano. job_status_dialog: download_starts: La descarga debería iniciarse automáticamente. - click_to_download: O bien, [haz clic aquí](download_url) para descargarlo. + click_to_download: Or [click here](download_url) to download. title: Estado de trabajo en segundo plano. redirect: Se le está redirigiendo. redirect_link: Haga clic aquí para continuar. diff --git a/modules/job_status/config/locales/crowdin/et.yml b/modules/job_status/config/locales/crowdin/et.yml index e40c2a8d5cc..96b6c0bdeee 100644 --- a/modules/job_status/config/locales/crowdin/et.yml +++ b/modules/job_status/config/locales/crowdin/et.yml @@ -6,7 +6,7 @@ et: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/eu.yml b/modules/job_status/config/locales/crowdin/eu.yml index b4779a0b44a..1525ee6271f 100644 --- a/modules/job_status/config/locales/crowdin/eu.yml +++ b/modules/job_status/config/locales/crowdin/eu.yml @@ -6,7 +6,7 @@ eu: description: Listing and status of background jobs. job_status_dialog: download_starts: Deskargak automatikoki hasi beharko luke. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Atzeko lanen egoera redirect: Berbideratzen ari da. redirect_link: Jarraitzeko klikatu hemen, mesedez. diff --git a/modules/job_status/config/locales/crowdin/fa.yml b/modules/job_status/config/locales/crowdin/fa.yml index 57ed8eede42..3f3a233bd26 100644 --- a/modules/job_status/config/locales/crowdin/fa.yml +++ b/modules/job_status/config/locales/crowdin/fa.yml @@ -6,7 +6,7 @@ fa: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/fi.yml b/modules/job_status/config/locales/crowdin/fi.yml index 9c828166025..3cc84f76ec5 100644 --- a/modules/job_status/config/locales/crowdin/fi.yml +++ b/modules/job_status/config/locales/crowdin/fi.yml @@ -6,7 +6,7 @@ fi: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/fil.yml b/modules/job_status/config/locales/crowdin/fil.yml index 3a460326260..9e76da4e394 100644 --- a/modules/job_status/config/locales/crowdin/fil.yml +++ b/modules/job_status/config/locales/crowdin/fil.yml @@ -6,7 +6,7 @@ fil: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/fr.yml b/modules/job_status/config/locales/crowdin/fr.yml index 20aded3eed8..d36f03aec46 100644 --- a/modules/job_status/config/locales/crowdin/fr.yml +++ b/modules/job_status/config/locales/crowdin/fr.yml @@ -6,7 +6,7 @@ fr: description: Liste et état des tâches d'arrière-plan. job_status_dialog: download_starts: Le téléchargement devrait démarrer automatiquement. - click_to_download: Ou, [cliquez ici](download_url) pour télécharger. + click_to_download: Or [click here](download_url) to download. title: Statut de la tâche en arrière-plan redirect: Vous allez être redirigé. redirect_link: Veuillez cliquer ici pour continuer. diff --git a/modules/job_status/config/locales/crowdin/he.yml b/modules/job_status/config/locales/crowdin/he.yml index 50164e30bdd..bd162aa3c0f 100644 --- a/modules/job_status/config/locales/crowdin/he.yml +++ b/modules/job_status/config/locales/crowdin/he.yml @@ -6,7 +6,7 @@ he: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: נא ללחוץ כאן כדי להמשיך. diff --git a/modules/job_status/config/locales/crowdin/hi.yml b/modules/job_status/config/locales/crowdin/hi.yml index ebb440be5dc..1e1fcb47e95 100644 --- a/modules/job_status/config/locales/crowdin/hi.yml +++ b/modules/job_status/config/locales/crowdin/hi.yml @@ -6,7 +6,7 @@ hi: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/hr.yml b/modules/job_status/config/locales/crowdin/hr.yml index 87cd3df66bb..79a4f25dc8e 100644 --- a/modules/job_status/config/locales/crowdin/hr.yml +++ b/modules/job_status/config/locales/crowdin/hr.yml @@ -6,7 +6,7 @@ hr: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/hu.yml b/modules/job_status/config/locales/crowdin/hu.yml index 47d4ff6edd2..8f63be10fa7 100644 --- a/modules/job_status/config/locales/crowdin/hu.yml +++ b/modules/job_status/config/locales/crowdin/hu.yml @@ -6,7 +6,7 @@ hu: description: Listing and status of background jobs. job_status_dialog: download_starts: A letöltésnek automatikusan el kellene indulnia - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Háttér művelet állapota redirect: Átirányítjuk... redirect_link: Kattints ide a folytatáshoz diff --git a/modules/job_status/config/locales/crowdin/id.yml b/modules/job_status/config/locales/crowdin/id.yml index 4c558bc2bb2..d2ab1120395 100644 --- a/modules/job_status/config/locales/crowdin/id.yml +++ b/modules/job_status/config/locales/crowdin/id.yml @@ -6,7 +6,7 @@ id: description: Daftar dan status pekerjaan latar belakang. job_status_dialog: download_starts: Unduhan dimulai secara otomatis. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Latar belakang status pekerjaan redirect: Anda akan diarahkan. redirect_link: Silakan klik disini untuk melanjutkan. diff --git a/modules/job_status/config/locales/crowdin/it.yml b/modules/job_status/config/locales/crowdin/it.yml index 175d3febe7b..19c8cb5a4ad 100644 --- a/modules/job_status/config/locales/crowdin/it.yml +++ b/modules/job_status/config/locales/crowdin/it.yml @@ -6,7 +6,7 @@ it: description: Elenco e stato dei job in background. job_status_dialog: download_starts: Il download dovrebbe iniziare automaticamente. - click_to_download: Oppure, [clicca qui](download_url) per scaricare. + click_to_download: Or [click here](download_url) to download. title: Stato del lavoro in background redirect: È in corso il reindirizzamento. redirect_link: Clicca qui per continuare. diff --git a/modules/job_status/config/locales/crowdin/ja.yml b/modules/job_status/config/locales/crowdin/ja.yml index 8ced2839c82..a51b068d2e1 100644 --- a/modules/job_status/config/locales/crowdin/ja.yml +++ b/modules/job_status/config/locales/crowdin/ja.yml @@ -6,7 +6,7 @@ ja: description: バックグラウンドジョブのリストとステータス。 job_status_dialog: download_starts: ダウンロードは自動的に開始されます。 - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: バックグラウンドジョブの状態 redirect: リダイレクトされています。 redirect_link: 続行するにはここをクリックしてください。 diff --git a/modules/job_status/config/locales/crowdin/ka.yml b/modules/job_status/config/locales/crowdin/ka.yml index 537a806ae74..f8adbe10034 100644 --- a/modules/job_status/config/locales/crowdin/ka.yml +++ b/modules/job_status/config/locales/crowdin/ka.yml @@ -6,7 +6,7 @@ ka: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/kk.yml b/modules/job_status/config/locales/crowdin/kk.yml index 359f8f1248c..f8022be5989 100644 --- a/modules/job_status/config/locales/crowdin/kk.yml +++ b/modules/job_status/config/locales/crowdin/kk.yml @@ -6,7 +6,7 @@ kk: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/ko.yml b/modules/job_status/config/locales/crowdin/ko.yml index fdb152d18d3..73461c587b3 100644 --- a/modules/job_status/config/locales/crowdin/ko.yml +++ b/modules/job_status/config/locales/crowdin/ko.yml @@ -6,7 +6,7 @@ ko: description: 백그라운드 작업 목록 및 상태. job_status_dialog: download_starts: 자동으로 다운로드가 시작됩니다. - click_to_download: 또는 [여기를 클릭](download_url)하여 다운로드하세요. + click_to_download: Or [click here](download_url) to download. title: 백그라운드 작업 상태 redirect: 리디렉션 중입니다. redirect_link: 계속하려면 여기를 클릭하세요. diff --git a/modules/job_status/config/locales/crowdin/lt.yml b/modules/job_status/config/locales/crowdin/lt.yml index eac1ec4f2bc..7685fbb5998 100644 --- a/modules/job_status/config/locales/crowdin/lt.yml +++ b/modules/job_status/config/locales/crowdin/lt.yml @@ -6,7 +6,7 @@ lt: description: Foninių darbų sąrašas ir būsena. job_status_dialog: download_starts: Parsisiuntimas turėtų prasidėti automatiškai. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Foninės užduoties būklė redirect: Nukreipiame jūsų naršyklę. redirect_link: Norėdami tęsti spauskite čia. diff --git a/modules/job_status/config/locales/crowdin/lv.yml b/modules/job_status/config/locales/crowdin/lv.yml index 7b5759b4ddc..1300ccc0ab9 100644 --- a/modules/job_status/config/locales/crowdin/lv.yml +++ b/modules/job_status/config/locales/crowdin/lv.yml @@ -6,7 +6,7 @@ lv: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/mn.yml b/modules/job_status/config/locales/crowdin/mn.yml index a7da66cbc98..2268646302d 100644 --- a/modules/job_status/config/locales/crowdin/mn.yml +++ b/modules/job_status/config/locales/crowdin/mn.yml @@ -6,7 +6,7 @@ mn: description: Listing and status of background jobs. job_status_dialog: download_starts: Татаж авах ажиллагаа автоматаар эхлэх ёстой. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Суурь ажлын төлөв redirect: Таныг дахин чиглүүлж байна. redirect_link: Энд дарж үргэлжлүүлнэ үү. diff --git a/modules/job_status/config/locales/crowdin/ms.yml b/modules/job_status/config/locales/crowdin/ms.yml index 2cf588306c2..de8a2cd8e43 100644 --- a/modules/job_status/config/locales/crowdin/ms.yml +++ b/modules/job_status/config/locales/crowdin/ms.yml @@ -6,7 +6,7 @@ ms: description: Senarai dan status latar belakang pekerjaan. job_status_dialog: download_starts: Proses muat turun akan bermula secara automatik. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Latar belakang status kerja redirect: Anda sedang diubah hala. redirect_link: Sila klik sini untuk teruskan. diff --git a/modules/job_status/config/locales/crowdin/ne.yml b/modules/job_status/config/locales/crowdin/ne.yml index eda93aaef6c..a9269688725 100644 --- a/modules/job_status/config/locales/crowdin/ne.yml +++ b/modules/job_status/config/locales/crowdin/ne.yml @@ -6,7 +6,7 @@ ne: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/nl.yml b/modules/job_status/config/locales/crowdin/nl.yml index ae627815d65..e494cd5e7af 100644 --- a/modules/job_status/config/locales/crowdin/nl.yml +++ b/modules/job_status/config/locales/crowdin/nl.yml @@ -6,7 +6,7 @@ nl: description: Listing and status of background jobs. job_status_dialog: download_starts: De download zou automatisch moeten starten. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Achtergrond-taak status redirect: U wordt omgeleid. redirect_link: Klik hier om door te gaan. diff --git a/modules/job_status/config/locales/crowdin/no.yml b/modules/job_status/config/locales/crowdin/no.yml index 1626f8ba076..71257e12fb1 100644 --- a/modules/job_status/config/locales/crowdin/no.yml +++ b/modules/job_status/config/locales/crowdin/no.yml @@ -6,7 +6,7 @@ description: Oppføring og status for bakgrunnsjobber. job_status_dialog: download_starts: Nedlastingen skal starte automatisk. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Status på bakgrunnsjobb redirect: Du blir nå videresendt. redirect_link: Klikk her for å fortsette. diff --git a/modules/job_status/config/locales/crowdin/pl.yml b/modules/job_status/config/locales/crowdin/pl.yml index dfcda46cb67..aaae05c3843 100644 --- a/modules/job_status/config/locales/crowdin/pl.yml +++ b/modules/job_status/config/locales/crowdin/pl.yml @@ -6,7 +6,7 @@ pl: description: Lista i status zadań w tle. job_status_dialog: download_starts: Pobieranie powinno rozpocząć się automatycznie. - click_to_download: Możesz też [kliknąć tutaj](download_url), aby pobrać. + click_to_download: Or [click here](download_url) to download. title: Status zadania w tle redirect: Następuje przekierowanie. redirect_link: Kliknij tutaj, aby kontynuować. diff --git a/modules/job_status/config/locales/crowdin/pt-BR.yml b/modules/job_status/config/locales/crowdin/pt-BR.yml index 028fd843a4c..99126adf1a7 100644 --- a/modules/job_status/config/locales/crowdin/pt-BR.yml +++ b/modules/job_status/config/locales/crowdin/pt-BR.yml @@ -6,7 +6,7 @@ pt-BR: description: Listagem e situação dos trabalhos em segundo plano. job_status_dialog: download_starts: O download deverá começar automaticamente. - click_to_download: Ou [clique aqui](download_url) para baixar. + click_to_download: Or [click here](download_url) to download. title: Status do trabalho em segundo plano redirect: Você está sendo redirecionado. redirect_link: Clique aqui para continuar. diff --git a/modules/job_status/config/locales/crowdin/pt-PT.yml b/modules/job_status/config/locales/crowdin/pt-PT.yml index 7925a3e6c50..b3d356ac485 100644 --- a/modules/job_status/config/locales/crowdin/pt-PT.yml +++ b/modules/job_status/config/locales/crowdin/pt-PT.yml @@ -6,7 +6,7 @@ pt-PT: description: Listagem e estado dos trabalhos em segundo plano. job_status_dialog: download_starts: A transferência deve começar automaticamente. - click_to_download: Ou [clique aqui](download_url) para descarregar. + click_to_download: Or [click here](download_url) to download. title: Estado do trabalho em segundo plano redirect: Está a ser redirecionado. redirect_link: Clique aqui para continuar. diff --git a/modules/job_status/config/locales/crowdin/ro.yml b/modules/job_status/config/locales/crowdin/ro.yml index b05414af5c2..114216e100f 100644 --- a/modules/job_status/config/locales/crowdin/ro.yml +++ b/modules/job_status/config/locales/crowdin/ro.yml @@ -6,7 +6,7 @@ ro: description: Listare și stare lucrări de fundal. job_status_dialog: download_starts: Descărcarea ar trebui să înceapă automat. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Starea lucrului în fundal redirect: Sunteți redirecționat. redirect_link: Clic aici pentru a continua. diff --git a/modules/job_status/config/locales/crowdin/ru.yml b/modules/job_status/config/locales/crowdin/ru.yml index 9eb6db63fc9..6dca31d06ae 100644 --- a/modules/job_status/config/locales/crowdin/ru.yml +++ b/modules/job_status/config/locales/crowdin/ru.yml @@ -6,7 +6,7 @@ ru: description: Список и статус фоновых заданий. job_status_dialog: download_starts: Загрузка начнется автоматически. - click_to_download: Или [нажмите здесь](download_url) для загрузки. + click_to_download: Or [click here](download_url) to download. title: Фоновый статус работы redirect: Вы перенаправлены. redirect_link: Пожалуйста, нажмите здесь, чтобы продолжить. diff --git a/modules/job_status/config/locales/crowdin/rw.yml b/modules/job_status/config/locales/crowdin/rw.yml index 30a53766efd..137029a620e 100644 --- a/modules/job_status/config/locales/crowdin/rw.yml +++ b/modules/job_status/config/locales/crowdin/rw.yml @@ -6,7 +6,7 @@ rw: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/si.yml b/modules/job_status/config/locales/crowdin/si.yml index 5de9c005fdf..018305b2d8a 100644 --- a/modules/job_status/config/locales/crowdin/si.yml +++ b/modules/job_status/config/locales/crowdin/si.yml @@ -6,7 +6,7 @@ si: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/sk.yml b/modules/job_status/config/locales/crowdin/sk.yml index 808894413c8..65454bbc768 100644 --- a/modules/job_status/config/locales/crowdin/sk.yml +++ b/modules/job_status/config/locales/crowdin/sk.yml @@ -6,7 +6,7 @@ sk: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/sl.yml b/modules/job_status/config/locales/crowdin/sl.yml index de740f07bb8..3c3290e1109 100644 --- a/modules/job_status/config/locales/crowdin/sl.yml +++ b/modules/job_status/config/locales/crowdin/sl.yml @@ -6,7 +6,7 @@ sl: description: Listing and status of background jobs. job_status_dialog: download_starts: 'Prenos naj bi se začel samodejno. ' - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Status dela v ozadju redirect: Preusmerjamo vas. redirect_link: Za nadaljevanje kliknite tukaj. diff --git a/modules/job_status/config/locales/crowdin/sr.yml b/modules/job_status/config/locales/crowdin/sr.yml index 1947ab69fc4..a720f00fee2 100644 --- a/modules/job_status/config/locales/crowdin/sr.yml +++ b/modules/job_status/config/locales/crowdin/sr.yml @@ -6,7 +6,7 @@ sr: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/sv.yml b/modules/job_status/config/locales/crowdin/sv.yml index 88ce3432e7a..f53cd022b3a 100644 --- a/modules/job_status/config/locales/crowdin/sv.yml +++ b/modules/job_status/config/locales/crowdin/sv.yml @@ -6,7 +6,7 @@ sv: description: Lista och status för bakgrundsjobb. job_status_dialog: download_starts: Nedladdningen bör starta automatiskt. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Status för bakgrundsjobb redirect: Du blir omdirigerad. redirect_link: Klicka här för att fortsätta. diff --git a/modules/job_status/config/locales/crowdin/th.yml b/modules/job_status/config/locales/crowdin/th.yml index 1fa8a45adb9..d2c51ac5d19 100644 --- a/modules/job_status/config/locales/crowdin/th.yml +++ b/modules/job_status/config/locales/crowdin/th.yml @@ -6,7 +6,7 @@ th: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/tr.yml b/modules/job_status/config/locales/crowdin/tr.yml index f5ba51c52e3..6c07d86745e 100644 --- a/modules/job_status/config/locales/crowdin/tr.yml +++ b/modules/job_status/config/locales/crowdin/tr.yml @@ -6,7 +6,7 @@ tr: description: Arka plan işlerinin durumu listeleniyor. job_status_dialog: download_starts: İndirme işlemi otomatik olarak başlayacaktır. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Arka plan iş durumu redirect: Yönlendiriliyorsunuz. redirect_link: Devam etmek için lütfen buraya tıklayın. diff --git a/modules/job_status/config/locales/crowdin/uk.yml b/modules/job_status/config/locales/crowdin/uk.yml index cdce93a0dd3..f385862338b 100644 --- a/modules/job_status/config/locales/crowdin/uk.yml +++ b/modules/job_status/config/locales/crowdin/uk.yml @@ -6,7 +6,7 @@ uk: description: Список і статус фонових завдань. job_status_dialog: download_starts: Завантаження має початись автоматично. - click_to_download: Або [натисніть тут](download_url), щоб завантажити. + click_to_download: Or [click here](download_url) to download. title: Статус фонового завдання redirect: Вас буде переспрямовано. redirect_link: Натисніть тут, щоб продовжити. diff --git a/modules/job_status/config/locales/crowdin/uz.yml b/modules/job_status/config/locales/crowdin/uz.yml index 54c16dafd2d..85f1c396d7d 100644 --- a/modules/job_status/config/locales/crowdin/uz.yml +++ b/modules/job_status/config/locales/crowdin/uz.yml @@ -6,7 +6,7 @@ uz: description: Listing and status of background jobs. job_status_dialog: download_starts: The download should start automatically. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Background job status redirect: You are being redirected. redirect_link: Please click here to continue. diff --git a/modules/job_status/config/locales/crowdin/vi.yml b/modules/job_status/config/locales/crowdin/vi.yml index ecb41e72643..4bda1526f50 100644 --- a/modules/job_status/config/locales/crowdin/vi.yml +++ b/modules/job_status/config/locales/crowdin/vi.yml @@ -6,7 +6,7 @@ vi: description: Danh sách và trạng thái của các công việc nền. job_status_dialog: download_starts: Quá trình tải xuống sẽ tự động bắt đầu. - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: Trạng thái công việc nền redirect: Bạn đang bị chuyển hướng. redirect_link: Vui lòng nhấp vào đây để tiếp tục. diff --git a/modules/job_status/config/locales/crowdin/zh-CN.yml b/modules/job_status/config/locales/crowdin/zh-CN.yml index 6990e7d0d0f..2edfbc3ac32 100644 --- a/modules/job_status/config/locales/crowdin/zh-CN.yml +++ b/modules/job_status/config/locales/crowdin/zh-CN.yml @@ -6,7 +6,7 @@ zh-CN: description: 后台作业的列表和状态。 job_status_dialog: download_starts: 下载会自动开始。 - click_to_download: 或[点击此处](download_url)进行下载。 + click_to_download: Or [click here](download_url) to download. title: 后台作业状态 redirect: 正在将您重定向。 redirect_link: 请点击此处继续。 diff --git a/modules/job_status/config/locales/crowdin/zh-TW.yml b/modules/job_status/config/locales/crowdin/zh-TW.yml index a25701f6719..160be05c370 100644 --- a/modules/job_status/config/locales/crowdin/zh-TW.yml +++ b/modules/job_status/config/locales/crowdin/zh-TW.yml @@ -6,7 +6,7 @@ zh-TW: description: 背景工作列表及狀態 job_status_dialog: download_starts: 將自動開始下載 - click_to_download: Or, [click here](download_url) to download. + click_to_download: Or [click here](download_url) to download. title: 背景工作狀態 redirect: 正在重新導向。 redirect_link: 請點擊此處繼續。 diff --git a/modules/ldap_groups/config/locales/crowdin/tr.yml b/modules/ldap_groups/config/locales/crowdin/tr.yml index 376b52fa730..36ee3b4bf7d 100644 --- a/modules/ldap_groups/config/locales/crowdin/tr.yml +++ b/modules/ldap_groups/config/locales/crowdin/tr.yml @@ -46,10 +46,10 @@ tr: zero: Filtrede grup bulunamadı destroy: title: "%{name} senkronize filtresini kaldır" - heading: Remove synchronized filter %{name}? + heading: "%{name} senkronize filtresini kaldırmak istiyor musunuz?" confirmation: Devam ederseniz, senkronize edilmiş %{name} filtresi ve bu kanaldan oluşturulan %{groups_count} tüm gruplar kaldırılacak. removed_groups: 'Uyarı: Bu işlem aşağıdaki grupları OpenProject''ten kaldıracak ve tüm projelerden kaldıracaktır!' - verification_html: Enter the filter name %{name} to verify the deletion. + verification_html: Silme işlemini doğrulamak için %{name} filtre adını girin. form: group_name_attribute_text: OpenProject grup adını ayarlamak için kullanılan LDAP grubunun niteliğini girin. filter_string_text: OpenProject ile senkronize etmek için LDAP'nizdeki grupları döndüren RFC4515 LDAP filtresini girin. @@ -60,9 +60,9 @@ tr: add_new: Senkronize LDAP grubu ekle destroy: title: "%{name} adlı senkronize grubu kaldır" - heading: Remove synchronized group %{name}? + heading: "%{name} adlı senkronize grubu kaldırmak istiyor musunuz?" confirmation: Devam ederseniz, %{name}} ile senkronize edilmiş grup ve içinden senkronize olan tüm %{users_count} kullanıcısı kaldırılacak. - info: The OpenProject group itself and members added outside this LDAP synchronization will not be removed. + info: OpenProject grubunun kendisi ve bu LDAP senkronizasyonunun dışına eklenen üyeler kaldırılmaz. help_text_html: | Bu modül, LDAP ve OpenProject grupları arasında bir senkronizasyon ayarlamanıza izin verir. Bu, LDAP gruplarının OpenProject ile çalışmak için ayarlanmış groupOfNames / memberOf özelliğini kullanması gerektiğine bağlıdır. diff --git a/modules/meeting/config/locales/crowdin/tr.yml b/modules/meeting/config/locales/crowdin/tr.yml index 6f541a22fce..3c0ff426c56 100644 --- a/modules/meeting/config/locales/crowdin/tr.yml +++ b/modules/meeting/config/locales/crowdin/tr.yml @@ -694,8 +694,8 @@ tr: text_agenda_item_dialog_skipping_note: 'Note: Skipping %{details}.' text_agenda_item_dialog_skipping_cancelled_one: cancelled meeting on %{date} text_agenda_item_dialog_skipping_cancelled_many: "%{count} cancelled meetings" - text_agenda_item_dialog_skipping_closed_one: closed meeting on %{date} - text_agenda_item_dialog_skipping_closed_many: "%{count} closed meetings" + text_agenda_item_dialog_skipping_closed_one: "%{date} adresinde kapalı toplantı" + text_agenda_item_dialog_skipping_closed_many: "%{count} kapalı toplantılar" text_work_package_add_to_meeting_hint: Bu iş paketini yaklaşan bir toplantıya eklemek için "Toplantıya ekle" düğmesini kullanın. text_work_package_has_no_past_meeting_agenda_items: Bu çalışma paketi geçmiş bir toplantıda gündem maddesi olarak eklenmemiştir. text_email_updates_muted: E-posta takvim güncellemeleri kapatılmıştır. Değişiklik yaptığınızda katılımcılar e-posta yoluyla güncellenmiş davetler almayacaktır. diff --git a/modules/openid_connect/config/locales/crowdin/tr.yml b/modules/openid_connect/config/locales/crowdin/tr.yml index f977598fa58..93a95fdd505 100644 --- a/modules/openid_connect/config/locales/crowdin/tr.yml +++ b/modules/openid_connect/config/locales/crowdin/tr.yml @@ -51,9 +51,9 @@ tr: non_object_attribute: "%{attribute}adresinde bir JSON nesnesi tanımlamaz." provider: delete_warning: - input_delete_confirmation_html: Enter the provider name %{name} to confirm deletion. + input_delete_confirmation_html: Silme işlemini onaylamak için sağlayıcı %{name} ismini girin. irreversible_notice: SSO sağlayıcısını silme geri alınamaz bir işlemdir. - provider_html: 'Are you sure you want to delete the SSO provider %{name}? Be aware, that this will:' + provider_html: 'SSO sağlayıcısını silmek istediğinizden emin misiniz %{name}? Bunun olacağını unutmayın:' delete_result_1: Sağlayıcının adını mevcut sağlayıcılardan kaldır. delete_result_user_count: zero: Bu sağlayıcıyı hiçbir kullanıcı kullanmıyor. Ek bir işleme gerek yok. @@ -63,7 +63,7 @@ tr: openid_connect: menu_title: OpenID sağlayıcıları delete_title: OpenID Connect sağlayıcısını sil - delete_heading: Delete this OpenID Connect provider? + delete_heading: Bu OpenID Connect sağlayıcısı silinsin mi? group_links_heading: OpenID Connect grup bağlantıları groups: match_preview_component: diff --git a/modules/webhooks/config/locales/crowdin/tr.yml b/modules/webhooks/config/locales/crowdin/tr.yml index 188b93eb30d..a90d9cf7451 100644 --- a/modules/webhooks/config/locales/crowdin/tr.yml +++ b/modules/webhooks/config/locales/crowdin/tr.yml @@ -37,7 +37,7 @@ tr: updated: Güncellenmiş comment: Yorum internal_comment: İç yorum - explanation_html: 'Upon the occurrence of an event like the creation of a work package or an update on a project, OpenProject will send a POST request to the configured web endpoints. Oftentimes, the event is sent after the [configured aggregation period](aggregation_path) has passed. + explanation_html: 'Bir iş paketinin oluşturulması veya bir projede güncelleme yapılması gibi bir olayın meydana gelmesi üzerine OpenProject yapılandırılmış web uç noktalarına bir POST isteği gönderecektir. Çoğu zaman, olay [yapılandırılmış toplama süresi](aggregation_path) geçtikten sonra gönderilir. ' status: diff --git a/modules/wikis/config/locales/crowdin/fr.yml b/modules/wikis/config/locales/crowdin/fr.yml index c7c87f6cf53..650e038f002 100644 --- a/modules/wikis/config/locales/crowdin/fr.yml +++ b/modules/wikis/config/locales/crowdin/fr.yml @@ -28,7 +28,7 @@ fr: wikis: buttons: save_and_continue: Enregistrer et continuer - done_continue: Done, continue + done_continue: Terminé, continuer wiki_page: Page wiki inline_page_links_component: empty_heading: Aucun lien intégré dans la page @@ -41,16 +41,16 @@ fr: empty_text: Ajouter manuellement des liens vers d'autres pages wiki liées. heading: Pages liées oauth_login_component: - connect_button: Connect %{provider} account + connect_button: Connectez votre compte %{provider} admin: oauth_application_info_component: - label_pending: Pending - replace_oauth_application: Replace OpenProject OAuth application + label_pending: En attente + replace_oauth_application: Remplacer l'application OAuth OpenProject confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials in your XWiki instance and all users will have to reauthorize. Are you sure you want to proceed? oauth_client_info_component: - label_pending: Pending - replace_oauth_client: Replace XWiki OAuth application - confirm_replace_oauth_client: This action will reset the current XWiki OAuth credentials. All users will need to reauthorize against XWiki. Are you sure you want to proceed? + label_pending: En attente + replace_oauth_client: Remplacer l'application XWiki OAuth + confirm_replace_oauth_client: Cette action réinitialisera les identifiants XWiki OAuth actuels. Tous les utilisateurs devront réautoriser sur XWiki. Êtes-vous sûr de vouloir continuer ? wiki_provider_list_component: label_name: Name label_provider: Provider From 0d8ccff1aa4a1e68d2313056a08edcaf6c5ed979 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 05:39:04 +0000 Subject: [PATCH 088/280] Bump good_job from 4.14.2 to 4.15.0 Bumps [good_job](https://github.com/bensheldon/good_job) from 4.14.2 to 4.15.0. - [Release notes](https://github.com/bensheldon/good_job/releases) - [Changelog](https://github.com/bensheldon/good_job/blob/main/CHANGELOG.md) - [Commits](https://github.com/bensheldon/good_job/compare/v4.14.2...v4.15.0) --- updated-dependencies: - dependency-name: good_job dependency-version: 4.15.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Gemfile b/Gemfile index 0b4b746cd4b..7bd097c44b2 100644 --- a/Gemfile +++ b/Gemfile @@ -127,7 +127,7 @@ gem "multi_json", "~> 1.20.0" gem "oj", "~> 3.16.16" gem "daemons" -gem "good_job", "~> 4.14.2" # update should be done manually in sync with saas-openproject version. +gem "good_job", "~> 4.15.0" # update should be done manually in sync with saas-openproject version. gem "rack-protection", "~> 3.2.0" diff --git a/Gemfile.lock b/Gemfile.lock index a7b66a10e24..7036ec9b164 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -400,7 +400,7 @@ GEM erubi (~> 1.4) parser (>= 2.4) smart_properties - bigdecimal (4.1.1) + bigdecimal (4.1.2) bindata (2.5.1) bootsnap (1.23.0) msgpack (~> 1.2) @@ -558,7 +558,7 @@ GEM activemodel equivalent-xml (0.6.0) nokogiri (>= 1.4.3) - erb (6.0.3) + erb (6.0.4) erb_lint (0.9.0) activesupport better_html (>= 2.0.1) @@ -633,7 +633,7 @@ GEM glob (0.4.0) globalid (1.3.0) activesupport (>= 6.1) - good_job (4.14.2) + good_job (4.15.0) activejob (>= 6.1.0) activerecord (>= 6.1.0) concurrent-ruby (>= 1.3.1) @@ -745,7 +745,7 @@ GEM nokogiri (>= 1.6) interception (0.5) io-console (0.8.2) - irb (1.17.0) + irb (1.18.0) pp (>= 0.6.0) prism (>= 1.3.0) rdoc (>= 4.0.0) @@ -754,7 +754,7 @@ GEM jmespath (1.6.2) job-iteration (1.13.0) activejob (>= 7.0) - json (2.19.3) + json (2.19.4) json-jwt (1.17.0) activesupport (>= 4.2) aes_key_wrap @@ -842,7 +842,7 @@ GEM mini_magick (5.3.1) logger mini_mime (1.1.5) - minitest (6.0.4) + minitest (6.0.5) drb (~> 2.0) prism (~> 1.5) msgpack (1.8.0) @@ -1631,7 +1631,7 @@ DEPENDENCIES friendly_id (~> 5.6.0) fuubar (~> 2.5.0) globalid (~> 1.3) - good_job (~> 4.14.2) + good_job (~> 4.15.0) google-apis-gmail_v1 googleauth grape (~> 3.2.0) @@ -1842,7 +1842,7 @@ CHECKSUMS bcrypt (3.1.22) sha256=1f0072e88c2d705d94aff7f2c5cb02eb3f1ec4b8368671e19112527489f29032 benchmark (0.5.0) sha256=465df122341aedcb81a2a24b4d3bd19b6c67c1530713fd533f3ff034e419236c better_html (2.2.0) sha256=e68ab66ab09696b708333bbf35e8aa3c107500ba7892f528e2111624bdd8cf76 - bigdecimal (4.1.1) sha256=1c09efab961da45203c8316b0cdaec0ff391dfadb952dd459584b63ebf8054ca + bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd bindata (2.5.1) sha256=53186a1ec2da943d4cb413583d680644eb810aacbf8902497aac8f191fad9e58 bootsnap (1.23.0) sha256=c1254f458d58558b58be0f8eb8f6eec2821456785b7cdd1e16248e2020d3f214 brakeman (8.0.4) sha256=7bf921fa9638544835df9aa7b3e720a9a72c0267f34f92135955edd80d4dcf6f @@ -1913,7 +1913,7 @@ CHECKSUMS em-synchrony (1.0.6) sha256=6e7470a684d9bbc00d61d552911b65711540bd89e95c157156f5aacdd6f306ca email_validator (2.2.4) sha256=5ab238095bec7aef9389f230e9e0c64c5081cdf91f19d6c5cecee0a93af20604 equivalent-xml (0.6.0) sha256=8919761efa848ad0846369ff8be1f646b17e5061698c4867b09829000cc3f487 - erb (6.0.3) sha256=e43685a8a0a0ea6a924871b2162e8953ef73147ce46b75b36d1f6774fd286e91 + erb (6.0.4) sha256=38e3803694be357fe2bfe312487c74beaf9fb4e5beb3e22498952fe1645b95d9 erb_lint (0.9.0) sha256=dfb5e40ad839e8d1f0d56ca85ec9a7ac4c9cd966ec281138282f35b323ca7c31 erblint-github (1.0.1) sha256=9f28f7dc381a0dc68a0093ef7af3424ed9d2bb2b3e39bdc8e8cba86a0d31f2d0 erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9 @@ -1948,7 +1948,7 @@ CHECKSUMS fuubar (2.5.1) sha256=b272a7804b282661c7fab583a3764f92543cb482c365ae39c685cd218fdd4880 glob (0.4.0) sha256=893dc9e2d24abe13dda907ce0cda576f680ff382f2a6cf9e543f98ecbe29238c globalid (1.3.0) sha256=05c639ad6eb4594522a0b07983022f04aa7254626ab69445a0e493aa3786ff11 - good_job (4.14.2) sha256=f38f164346aee724bbfbdaed73e1a0bd382cc6354146029e0adcc619245ab6d1 + good_job (4.15.0) sha256=988b424c3f8fd7f8fce69c4153f93bfdc07f31891b6966e4c8b8b06bf6f76c3e google-apis-core (1.0.2) sha256=ba4579aaadc902d6cc7bc8db88f566ab00f5e31ea87ab41e9f9a032c470f2629 google-apis-gmail_v1 (0.47.0) sha256=3064434b6da55b85e2828ce4bb0f4d04e8cfd187a4ab262ceb1dcb01f98e49ef google-cloud-env (2.3.1) sha256=0faac01eb27be78c2591d64433663b1a114f8f7af55a4f819755426cac9178e7 @@ -1988,11 +1988,11 @@ CHECKSUMS inline_svg (1.10.0) sha256=5b652934236fd9f8adc61f3fd6e208b7ca3282698b19f28659971da84bf9a10f interception (0.5) sha256=a53818d636752a8df90d8c1bb2f7b6e13a7b828543cb02b50fbde98b849d7907 io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc - irb (1.17.0) sha256=168c4ddb93d8a361a045c41d92b2952c7a118fa73f23fe14e55609eb7a863aae + irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3 iso8601 (0.13.0) sha256=298c2b15b7be5fa95a1372813d36a2257656cd8e906dfbc1f5cb409851425aa2 jmespath (1.6.2) sha256=238d774a58723d6c090494c8879b5e9918c19485f7e840f2c1c7532cf84ebcb1 job-iteration (1.13.0) sha256=3300844e81309fbd06fd2310d6aa8e1f43bf30fe03a3fc5067580b62f456b7e1 - json (2.19.3) sha256=289b0bb53052a1fa8c34ab33cc750b659ba14a5c45f3fcf4b18762dc67c78646 + json (2.19.4) sha256=670a7d333fb3b18ca5b29cb255eb7bef099e40d88c02c80bd42a3f30fe5239ac json-jwt (1.17.0) sha256=6ff99026b4c54281a9431179f76ceb81faa14772d710ef6169785199caadc4cc json-schema (6.2.0) sha256=e8bff46ed845a22c1ab2bd0d7eccf831c01fe23bb3920caa4c74db4306813666 json_schemer (2.5.0) sha256=2f01fb4cce721a4e08dd068fc2030cffd0702a7f333f1ea2be6e8991f00ae396 @@ -2023,7 +2023,7 @@ CHECKSUMS mime-types-data (3.2026.0407) sha256=909395cf029731355136527aa11bf58ea0655ee782359ccbf32c66238a8cadb3 mini_magick (5.3.1) sha256=29395dfd76badcabb6403ee5aff6f681e867074f8f28ce08d78661e9e4a351c4 mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef - minitest (6.0.4) sha256=df1304664589d40f46089247fdc451f866b0ce0d7cae1457a15fc1eb7d48dca1 + minitest (6.0.5) sha256=f007d7246bf4feea549502842cd7c6aba8851cdc9c90ba06de9c476c0d01155c msgpack (1.8.0) sha256=e64ce0212000d016809f5048b48eb3a65ffb169db22238fb4b72472fecb2d732 multi_json (1.20.1) sha256=2f3934e805cc45ef91b551a1f89d0e9191abd06a5e04a2ef09a6a036c452ca6d mustermann (3.1.0) sha256=e73b006ffb7f743eae9303a7d6622e0dd9e1e5522718a2139c006085878768b9 From 734b049a8aa43f6f374df082dc28a06f582b187d Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Fri, 24 Apr 2026 11:09:58 +0200 Subject: [PATCH 089/280] CSS improvements Improve visual representation of inline macros, by ensuring they all use the same CSS attributes and have a reduced vertical padding, so they don't overlap as much. We also improved the vertical alignment of the leading icon for these macros. As a sidefind, we replaced a handcrafted version of the InlineMessage with the existing InlineMessage component. This also improved alignment of the icon. --- .../op_primer/inline_macro_component.html.erb | 6 ++++-- .../op_primer/inline_macro_component.rb | 2 +- .../op_primer/inline_macro_component.sass | 9 ++------- .../src/global_styles/openproject/_mixins.sass | 6 +++--- .../connection_status_component.html.erb | 18 ++---------------- 5 files changed, 12 insertions(+), 29 deletions(-) diff --git a/app/components/op_primer/inline_macro_component.html.erb b/app/components/op_primer/inline_macro_component.html.erb index 71fb370380f..8624a9ea2ec 100644 --- a/app/components/op_primer/inline_macro_component.html.erb +++ b/app/components/op_primer/inline_macro_component.html.erb @@ -28,6 +28,8 @@ See COPYRIGHT and LICENSE files for more details. ++#%> <%= render(Primer::BaseComponent.new(tag: :span, **@system_arguments)) do %> - <%= leading_visual_icon %> - <%= content %> + <%= render(Primer::BaseComponent.new(tag: :span, display: :inline_flex, align_items: :center)) do %> + <%= leading_visual_icon %> + <%= content %> + <% end %> <% end %> diff --git a/app/components/op_primer/inline_macro_component.rb b/app/components/op_primer/inline_macro_component.rb index 008e0f47df5..77e78377b0f 100644 --- a/app/components/op_primer/inline_macro_component.rb +++ b/app/components/op_primer/inline_macro_component.rb @@ -31,7 +31,7 @@ module OpPrimer class InlineMacroComponent < Primer::Component renders_one :leading_visual_icon, ->(icon:, color: :muted) do - Primer::Beta::Octicon.new(icon:, color:, mr: 2, vertical_align: :middle) + Primer::Beta::Octicon.new(icon:, color:, size: :xsmall, mr: 2) end def initialize(**system_arguments) diff --git a/app/components/op_primer/inline_macro_component.sass b/app/components/op_primer/inline_macro_component.sass index 0356f0647d7..50bc0740b85 100644 --- a/app/components/op_primer/inline_macro_component.sass +++ b/app/components/op_primer/inline_macro_component.sass @@ -1,7 +1,2 @@ -@media screen - .op-inline-macro - display: inline - background: var(--bgColor-muted) - border: 1px solid transparent - border-radius: var(--borderRadius-medium) - padding: 4px 8px +.op-inline-macro + @include macro--text-style diff --git a/frontend/src/global_styles/openproject/_mixins.sass b/frontend/src/global_styles/openproject/_mixins.sass index 8d088d8e981..f0bf08b59c8 100644 --- a/frontend/src/global_styles/openproject/_mixins.sass +++ b/frontend/src/global_styles/openproject/_mixins.sass @@ -276,9 +276,9 @@ $scrollbar-size: 10px @media screen display: inline background: var(--bgColor-muted) - border: 1px solid transparent - border-radius: var(--borderRadius-medium) - padding: 2px + border-radius: var(--borderRadius-default) + // 2px vertical ensures that line-height is not overflowed excessively + padding: 2px var(--control-xsmall-paddingInline-condensed) &:has(.-multiline) display: inline-flex diff --git a/modules/documents/app/components/documents/show_edit_view/page_header/connection_status_component.html.erb b/modules/documents/app/components/documents/show_edit_view/page_header/connection_status_component.html.erb index a4a07d07993..f68a6fe30e9 100644 --- a/modules/documents/app/components/documents/show_edit_view/page_header/connection_status_component.html.erb +++ b/modules/documents/app/components/documents/show_edit_view/page_header/connection_status_component.html.erb @@ -48,25 +48,11 @@ end flex.with_column(data: { "documents--connection-status-target": "offline" }, hidden: true) do - flex_layout(align_items: :center) do |row| - row.with_column(mr: 1) do - render(Primer::Beta::Octicon.new(icon: :alert, color: :attention, size: :small)) - end - row.with_column do - render(Primer::Beta::Text.new(color: :attention)) { t("documents.info_line.currently_offline") } - end - end + render(Primer::OpenProject::InlineMessage.new(scheme: :warning)) { t("documents.info_line.currently_offline") } end flex.with_column(data: { "documents--connection-status-target": "recovered" }, hidden: true) do - flex_layout(align_items: :center) do |row| - row.with_column(mr: 1) do - render(Primer::Beta::Octicon.new(icon: :"check-circle", color: :success, size: :small)) - end - row.with_column do - render(Primer::Beta::Text.new(color: :success)) { t("documents.info_line.connection_restored") } - end - end + render(Primer::OpenProject::InlineMessage.new(scheme: :success)) { t("documents.info_line.connection_restored") } end end end From b1a10567cfc978a363a6ae83864330122c7d717c Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Fri, 24 Apr 2026 12:03:59 +0200 Subject: [PATCH 090/280] Add the category to persisted view --- app/models/persisted_view.rb | 10 ++++ ...24094655_add_category_to_persisted_view.rb | 8 +++ spec/models/persisted_view_spec.rb | 53 +++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 db/migrate/20260424094655_add_category_to_persisted_view.rb diff --git a/app/models/persisted_view.rb b/app/models/persisted_view.rb index b3d581d4573..1dc64a272ab 100644 --- a/app/models/persisted_view.rb +++ b/app/models/persisted_view.rb @@ -38,11 +38,21 @@ class PersistedView < ApplicationRecord acts_as_favoritable + enum :category, { + work_package: "work_package", + project: "project", + resource_management: "resource_management" + }, validate: { allow_nil: true } + validates :name, presence: true, length: { maximum: 255 } scope :public_views, -> { where(public: true) } scope :private_views, ->(principal: User.current) { where(public: false, principal:) } + scope :visible, (lambda do |principal: User.current| + public_views.or(private_views(principal:)) + end) + after_destroy :destroy_query_if_orphaned # Returns the query of this view or, if not set, the query of the parent view. diff --git a/db/migrate/20260424094655_add_category_to_persisted_view.rb b/db/migrate/20260424094655_add_category_to_persisted_view.rb new file mode 100644 index 00000000000..faf108f1bcc --- /dev/null +++ b/db/migrate/20260424094655_add_category_to_persisted_view.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class AddCategoryToPersistedView < ActiveRecord::Migration[8.1] + def change + add_column :persisted_views, :category, :string, null: true + add_index :persisted_views, :category + end +end diff --git a/spec/models/persisted_view_spec.rb b/spec/models/persisted_view_spec.rb index e715b4c4aa5..13ae4da896c 100644 --- a/spec/models/persisted_view_spec.rb +++ b/spec/models/persisted_view_spec.rb @@ -73,6 +73,59 @@ RSpec.describe PersistedView do expect(described_class.private_views).to contain_exactly(own_private_view) end end + + describe ".visible" do + it "returns public views and the principal's own private views" do + expect(described_class.visible(principal: user)).to contain_exactly(public_view, own_private_view) + end + + it "excludes other principals' private views" do + expect(described_class.visible(principal: user)).not_to include(other_private_view) + end + + it "defaults to User.current when no principal is given" do + login_as(user) + expect(described_class.visible).to contain_exactly(public_view, own_private_view) + end + end + end + + describe "category enum" do + it "allows the defined category values" do + %w[work_package project resource_management].each do |value| + view = described_class.new(name: "V", category: value) + expect(view).to be_valid + expect(view.category).to eq(value) + end + end + + it "allows nil as a category" do + persisted_view.category = nil + expect(persisted_view).to be_valid + end + + it "rejects unknown category values" do + persisted_view.category = "unknown" + expect(persisted_view).not_to be_valid + expect(persisted_view.errors[:category]).to be_present + end + + it "exposes predicate methods for each category" do + view = described_class.new(name: "V", category: "work_package") + expect(view).to be_work_package + expect(view).not_to be_project + expect(view).not_to be_resource_management + end + + it "exposes scopes for each category" do + wp_view = described_class.create!(name: "WP", category: "work_package") + project_view = described_class.create!(name: "P", category: "project") + rm_view = described_class.create!(name: "RM", category: "resource_management") + + expect(described_class.work_package).to contain_exactly(wp_view) + expect(described_class.project).to contain_exactly(project_view) + expect(described_class.resource_management).to contain_exactly(rm_view) + end end describe "#effective_query" do From 6d697569bd81d2cba769ae7197817384a3ac7b87 Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Thu, 23 Apr 2026 10:52:22 +0200 Subject: [PATCH 091/280] Extract inline wiki page links from WP description This creates inline page links the way they are intended to exist: When a work package contains a link to a wiki page in its description, these links should also be represented as inline wiki page links. --- .../providers/xwiki/queries/page_info.rb | 3 +- .../concerns/update_inline_wiki_page_links.rb | 57 +++++++++++ .../wikis/lib/open_project/wikis/engine.rb | 3 + .../wikis/patches/create_service_patch.rb | 45 +++++++++ .../wikis/patches/update_service_patch.rb | 51 ++++++++++ .../work_packages/create_service_spec.rb | 85 +++++++++++++++++ .../work_packages/update_service_spec.rb | 95 +++++++++++++++++++ 7 files changed, 338 insertions(+), 1 deletion(-) create mode 100644 modules/wikis/app/services/wikis/concerns/update_inline_wiki_page_links.rb create mode 100644 modules/wikis/lib/open_project/wikis/patches/create_service_patch.rb create mode 100644 modules/wikis/lib/open_project/wikis/patches/update_service_patch.rb create mode 100644 modules/wikis/spec/services/work_packages/create_service_spec.rb create mode 100644 modules/wikis/spec/services/work_packages/update_service_spec.rb diff --git a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb index 0707e5f0d5c..e1f17d27c68 100644 --- a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb +++ b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb @@ -35,11 +35,12 @@ module Wikis module Queries class PageInfo < BaseQuery def call(input_data) - title = [ + titles = [ "What makes XWiki special?", "API documentation", "A brief introduction on configuring your own XWiki instance and connect it to OpenProject." ].sample + title = titles[Random.new(input_data.identifier.hash).rand(titles.size)] success( Results::PageInfo.new( diff --git a/modules/wikis/app/services/wikis/concerns/update_inline_wiki_page_links.rb b/modules/wikis/app/services/wikis/concerns/update_inline_wiki_page_links.rb new file mode 100644 index 00000000000..ff2a554541f --- /dev/null +++ b/modules/wikis/app/services/wikis/concerns/update_inline_wiki_page_links.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module Wikis::Concerns + module UpdateInlineWikiPageLinks + extend ActiveSupport::Concern + + def update_inline_wiki_page_links(linkable, *texts) + Wikis::InlinePageLink.where(linkable:).delete_all + texts.each do |text| + find_wiki_links(text).each do |provider_id, identifier| + provider = Wikis::Provider.find_by(id: provider_id) + next if provider.nil? + + Wikis::InlinePageLink.create!(linkable:, provider:, identifier:) + end + end + end + + private + + def find_wiki_links(text) + return [] if text.blank? + + # The text is markdown that escapes literal [ and ] characters. We unescape them first. + text = text.gsub("\\[", "[").gsub("\\]", "]") + text.scan(Wikis::TextFormatting::WikiLinkMatcher.regexp) + end + end +end diff --git a/modules/wikis/lib/open_project/wikis/engine.rb b/modules/wikis/lib/open_project/wikis/engine.rb index 4d8d6471ca4..8dd668c2be2 100644 --- a/modules/wikis/lib/open_project/wikis/engine.rb +++ b/modules/wikis/lib/open_project/wikis/engine.rb @@ -98,6 +98,9 @@ module OpenProject::Wikis icon: "browser" end + patch_with_namespace :WorkPackages, :CreateService + patch_with_namespace :WorkPackages, :UpdateService + add_api_path(:wiki_page_link) { |page_link_id| "#{root}/wiki_page_links/#{page_link_id}" } add_api_path(:wiki_provider) { |provider_id| "#{root}/wiki_providers/#{provider_id}" } end diff --git a/modules/wikis/lib/open_project/wikis/patches/create_service_patch.rb b/modules/wikis/lib/open_project/wikis/patches/create_service_patch.rb new file mode 100644 index 00000000000..fb73c61f2d6 --- /dev/null +++ b/modules/wikis/lib/open_project/wikis/patches/create_service_patch.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module OpenProject::Wikis::Patches::CreateServicePatch + def self.included(base) + base.prepend InstanceMethods + base.include Wikis::Concerns::UpdateInlineWikiPageLinks + end + + module InstanceMethods + def create(_attributes, work_package) + result = super + update_inline_wiki_page_links(work_package, work_package.description) if result.success? + + result + end + end +end diff --git a/modules/wikis/lib/open_project/wikis/patches/update_service_patch.rb b/modules/wikis/lib/open_project/wikis/patches/update_service_patch.rb new file mode 100644 index 00000000000..76e1e74ef99 --- /dev/null +++ b/modules/wikis/lib/open_project/wikis/patches/update_service_patch.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module OpenProject::Wikis::Patches::UpdateServicePatch + def self.included(base) + base.prepend InstanceMethods + base.include Wikis::Concerns::UpdateInlineWikiPageLinks + end + + module InstanceMethods + private + + def after_perform(_) + service_call = super + + work_package = service_call.result + if service_call.success? && work_package.changed_attribute_keys_before_last_save.include?(:description) + update_inline_wiki_page_links(work_package, work_package.description) + end + + service_call + end + end +end diff --git a/modules/wikis/spec/services/work_packages/create_service_spec.rb b/modules/wikis/spec/services/work_packages/create_service_spec.rb new file mode 100644 index 00000000000..7f8da16d93e --- /dev/null +++ b/modules/wikis/spec/services/work_packages/create_service_spec.rb @@ -0,0 +1,85 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" + +RSpec.describe WorkPackages::CreateService do + let(:instance) { described_class.new(user:) } + let(:user) { create(:admin) } + let(:project) { create(:project) } + let(:default_status) { create(:default_status) } + let(:priority) { create(:priority) } + let(:provider) { create(:xwiki_provider) } + let(:attributes) do + { + subject: "A test work package", + project:, + status: default_status, + priority:, + description: <<~TXT + The work package description contains inline links to wiki pages (e.g. [[[#{provider.id}:abc]]]). + It also contains links in a list: + + * [[[#{provider.id}:def]]] + * [[[#{provider.id + 100}:ghi]]] + TXT + } + end + + subject { instance.call(**attributes) } + + before do + project + default_status + priority + end + + it "succeeds" do + expect(subject).to be_success + end + + it "creates inline page links for the existing provider" do + subject + + expect(Wikis::InlinePageLink.where(provider:).count).to eq(2) + end + + it "links wiki pages to the freshly created work package" do + subject + + expect(Wikis::InlinePageLink.where(linkable: WorkPackage.first).count).to eq(2) + end + + it "only creates links that had a valid provider id" do + subject + + expect(Wikis::InlinePageLink.pluck(:identifier)).to contain_exactly("abc", "def") + end +end diff --git a/modules/wikis/spec/services/work_packages/update_service_spec.rb b/modules/wikis/spec/services/work_packages/update_service_spec.rb new file mode 100644 index 00000000000..1b7a2954566 --- /dev/null +++ b/modules/wikis/spec/services/work_packages/update_service_spec.rb @@ -0,0 +1,95 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +require "spec_helper" + +RSpec.describe WorkPackages::UpdateService do + let(:instance) { described_class.new(user:, model: work_package) } + let(:user) { create(:admin) } + let(:work_package) { create(:work_package) } + let(:provider) { create(:xwiki_provider) } + let(:attributes) do + { + description: <<~TXT + The work package description contains inline links to wiki pages (e.g. [[[#{provider.id}:abc]]]). + It also contains links in a list: + + * [[[#{provider.id}:def]]] + * [[[#{provider.id + 100}:ghi]]] + TXT + } + end + + subject { instance.call(**attributes) } + + it "succeeds" do + expect(subject).to be_success + end + + it "creates inline page links for the existing provider" do + subject + + expect(Wikis::InlinePageLink.where(provider:).count).to eq(2) + end + + it "links wiki pages to the freshly created work package" do + subject + + expect(Wikis::InlinePageLink.where(linkable: WorkPackage.first).count).to eq(2) + end + + it "only creates links that had a valid provider id" do + subject + + expect(Wikis::InlinePageLink.pluck(:identifier)).to contain_exactly("abc", "def") + end + + context "when other page links already exist" do + before do + create(:inline_wiki_page_link, provider:, linkable: work_package, identifier: "123") + end + + it "deletes existing page links" do + subject + + expect(Wikis::InlinePageLink.pluck(:identifier)).to contain_exactly("abc", "def") + end + + context "and when the description does not change" do + let(:attributes) { { subject: "This is a new subject" } } + + it "keeps existing page links" do + subject + + expect(Wikis::InlinePageLink.pluck(:identifier)).to contain_exactly("123") + end + end + end +end From 3bffa8daf01004bd57cc0bc994691ce81c316a4a Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Thu, 23 Apr 2026 13:07:49 +0200 Subject: [PATCH 092/280] Increase fake title variety This is mostly to make testing with longer lists of page links a bit nicer... --- .../wikis/adapters/providers/xwiki/queries/page_info.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb index e1f17d27c68..1f19ce41efc 100644 --- a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb +++ b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb @@ -38,7 +38,11 @@ module Wikis titles = [ "What makes XWiki special?", "API documentation", - "A brief introduction on configuring your own XWiki instance and connect it to OpenProject." + "A brief introduction on configuring your own XWiki instance and connect it to OpenProject.", + "Security considerations for API design", + "Syntax overview", + "Getting help", + "Enterprise support" ].sample title = titles[Random.new(input_data.identifier.hash).rand(titles.size)] From a0baad2506857d98114e13df6d07983030c72d88 Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Fri, 24 Apr 2026 15:30:59 +0200 Subject: [PATCH 093/280] Fix small wiki errors * faked wiki titles were wrongly shortened to a single letter * provider was not correctly passed to BaseQuery (Provider#resolve passed it as `model: self`) --- modules/wikis/app/services/wikis/adapters/base_query.rb | 4 ++-- .../wikis/adapters/providers/xwiki/queries/page_info.rb | 2 +- .../providers/internal/queries/page_info_query_spec.rb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/wikis/app/services/wikis/adapters/base_query.rb b/modules/wikis/app/services/wikis/adapters/base_query.rb index 9351453f202..1d214afcd66 100644 --- a/modules/wikis/app/services/wikis/adapters/base_query.rb +++ b/modules/wikis/app/services/wikis/adapters/base_query.rb @@ -34,8 +34,8 @@ module Wikis::Adapters attr_reader :provider - def initialize(provider) - @provider = provider + def initialize(model:) + @provider = model end def call(_input_data) diff --git a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb index 1f19ce41efc..4fa7e995e74 100644 --- a/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb +++ b/modules/wikis/app/services/wikis/adapters/providers/xwiki/queries/page_info.rb @@ -43,7 +43,7 @@ module Wikis "Syntax overview", "Getting help", "Enterprise support" - ].sample + ] title = titles[Random.new(input_data.identifier.hash).rand(titles.size)] success( diff --git a/modules/wikis/spec/services/wikis/adapters/providers/internal/queries/page_info_query_spec.rb b/modules/wikis/spec/services/wikis/adapters/providers/internal/queries/page_info_query_spec.rb index 80a8d033caa..0775a571a85 100644 --- a/modules/wikis/spec/services/wikis/adapters/providers/internal/queries/page_info_query_spec.rb +++ b/modules/wikis/spec/services/wikis/adapters/providers/internal/queries/page_info_query_spec.rb @@ -31,7 +31,7 @@ require "spec_helper" RSpec.describe Wikis::Adapters::Providers::Internal::Queries::PageInfo do - subject { described_class.new(provider).call(input_data) } + subject { described_class.new(model: provider).call(input_data) } let(:provider) { create(:internal_wiki_provider) } let(:input_data) { Wikis::Adapters::Input::PageInfo.build(identifier:).value! } From b8b5574df04d3648b4a2957380e33e36aeaa079b Mon Sep 17 00:00:00 2001 From: Mir Bhatia Date: Thu, 23 Apr 2026 12:09:17 +0200 Subject: [PATCH 094/280] Update specs to work with multiple roles --- .../workflows/tabs_controller_spec.rb | 166 +++++++++++++----- spec/controllers/workflows_controller_spec.rb | 87 +++++---- spec/features/roles/create_spec.rb | 5 +- spec/features/workflows/edit_spec.rb | 34 ++-- 4 files changed, 197 insertions(+), 95 deletions(-) diff --git a/spec/controllers/workflows/tabs_controller_spec.rb b/spec/controllers/workflows/tabs_controller_spec.rb index c870c3bd936..483c1a44bae 100644 --- a/spec/controllers/workflows/tabs_controller_spec.rb +++ b/spec/controllers/workflows/tabs_controller_spec.rb @@ -48,6 +48,11 @@ RSpec.describe Workflows::TabsController do .with(role.id.to_s) .and_return(role) + allow(role_scope) + .to receive(:where) + .with(id: [role.id.to_s]) + .and_return([role]) + role_scope end @@ -68,32 +73,58 @@ RSpec.describe Workflows::TabsController do describe "#edit" do context "when not a turbo frame request" do - it "redirects to the parent workflow edit path" do - get :edit, - params: { - role_id: role.id.to_s, - workflow_type_id: type.id.to_s, - tab: "always" - } + context "with a single role" do + it "redirects to the parent workflow edit path" do + get :edit, + params: { + role_ids: [role.id.to_s], + workflow_type_id: type.id.to_s, + tab: "always" + } - expect(response).to redirect_to( - edit_workflow_path(type, role_id: role.id.to_s, tab: "always") - ) + expect(response).to redirect_to( + edit_workflow_path(type, role_ids: [role.id.to_s], tab: "always") + ) + end + + it "does not forward status_ids to the redirect" do + get :edit, + params: { + role_ids: [role.id.to_s], + workflow_type_id: type.id.to_s, + tab: "always", + status_ids: ["1", "2"] + } + + expect(response).to redirect_to( + edit_workflow_path(type, role_ids: [role.id.to_s], tab: "always") + ) + expect(response.location).not_to include("status_ids") + end end - it "does not forward status_ids to the redirect" do - get :edit, - params: { - role_id: role.id.to_s, - workflow_type_id: type.id.to_s, - tab: "always", - status_ids: ["1", "2"] - } + context "with multiple roles" do + let(:role2) { build_stubbed(:project_role) } - expect(response).to redirect_to( - edit_workflow_path(type, role_id: role.id.to_s, tab: "always") - ) - expect(response.location).not_to include("status_ids") + before do + allow(role_scope) + .to receive(:where) + .with(id: [role.id.to_s, role2.id.to_s]) + .and_return([role, role2]) + end + + it "redirects preserving all role ids" do + get :edit, + params: { + role_ids: [role.id.to_s, role2.id.to_s], + workflow_type_id: type.id.to_s, + tab: "always" + } + + expect(response).to redirect_to( + edit_workflow_path(type, role_ids: [role.id.to_s, role2.id.to_s], tab: "always") + ) + end end end end @@ -114,7 +145,7 @@ RSpec.describe Workflows::TabsController do post :confirm_statuses, params: { - role_id: role.id.to_s, + role_ids: [role.id.to_s], workflow_type_id: type.id.to_s, status_ids: ["1", "2"], original_status_ids: ["1", "2"], @@ -133,7 +164,7 @@ RSpec.describe Workflows::TabsController do before do post :confirm_statuses, params: { - role_id: role.id.to_s, + role_ids: [role.id.to_s], workflow_type_id: type.id.to_s, status_ids: ["1"], original_status_ids: ["1", "2"], @@ -152,33 +183,74 @@ RSpec.describe Workflows::TabsController do describe "#update" do let(:status_params) { { "1" => { "2" => ["always"] } } } - let(:service) do - instance_double(Workflows::BulkUpdateService).tap do |dbl| - allow(Workflows::BulkUpdateService) - .to receive(:new) - .with(role: role, type: type, tab: "always") - .and_return(dbl) + let(:call_result) { ServiceResult.success } + + context "with a single role" do + let(:service) do + instance_double(Workflows::BulkUpdateService).tap do |dbl| + allow(Workflows::BulkUpdateService) + .to receive(:new) + .with(role: role, type: type, tab: "always") + .and_return(dbl) + end + end + + before do + allow(service).to receive(:call).with(status_params).and_return(call_result) + allow(controller).to receive(:statuses_for_form).and_return([build_stubbed(:status)]) + post :update, + params: { role_ids: [role.id.to_s], workflow_type_id: type.id, tab: "always", status: status_params }, + format: :turbo_stream + end + + it "calls the service and renders a flash turbo stream" do + expect(service).to have_received(:call).with(status_params) + expect(response).to have_turbo_stream action: "flash", target: "op-primer-flash-component" end end - let(:call_result) { ServiceResult.success } - let(:params) do - { - role_id: role.id, - workflow_type_id: type.id, - tab: "always", - status: status_params - } - end - before do - allow(service).to receive(:call).with(status_params).and_return(call_result) - allow(controller).to receive(:statuses_for_form).and_return([build_stubbed(:status)]) - post :update, params:, format: :turbo_stream - end + context "with multiple roles" do + let(:role2) { build_stubbed(:project_role) } + let(:service1) do + instance_double(Workflows::BulkUpdateService).tap do |dbl| + allow(Workflows::BulkUpdateService) + .to receive(:new) + .with(role: role, type: type, tab: "always") + .and_return(dbl) + end + end + let(:service2) do + instance_double(Workflows::BulkUpdateService).tap do |dbl| + allow(Workflows::BulkUpdateService) + .to receive(:new) + .with(role: role2, type: type, tab: "always") + .and_return(dbl) + end + end - it "renders a flash turbo stream" do - expect(service).to have_received(:call).with(status_params) - expect(response).to have_turbo_stream action: "flash", target: "op-primer-flash-component" + before do + allow(role_scope) + .to receive(:where) + .with(id: [role.id.to_s, role2.id.to_s]) + .and_return([role, role2]) + allow(service1).to receive(:call).with(status_params).and_return(call_result) + allow(service2).to receive(:call).with(status_params).and_return(call_result) + allow(controller).to receive(:statuses_for_form).and_return([build_stubbed(:status)]) + post :update, + params: { + role_ids: [role.id.to_s, role2.id.to_s], + workflow_type_id: type.id, + tab: "always", + status: status_params + }, + format: :turbo_stream + end + + it "calls the service for each role and renders a flash turbo stream" do + expect(service1).to have_received(:call).with(status_params) + expect(service2).to have_received(:call).with(status_params) + expect(response).to have_turbo_stream action: "flash", target: "op-primer-flash-component" + end end end end diff --git a/spec/controllers/workflows_controller_spec.rb b/spec/controllers/workflows_controller_spec.rb index 1bfd390f410..ccddd298362 100644 --- a/spec/controllers/workflows_controller_spec.rb +++ b/spec/controllers/workflows_controller_spec.rb @@ -40,7 +40,7 @@ RSpec.describe WorkflowsController do .and_return(role_scope) allow(role_scope) - .to receive_messages(order: role_scope, find_by: nil) + .to receive_messages(order: role_scope, find_by: nil, first: role) allow(role_scope) .to receive(:find) @@ -52,6 +52,11 @@ RSpec.describe WorkflowsController do .with(id: role.id.to_s) .and_return(role) + allow(role_scope) + .to receive(:where) + .with(id: nil) + .and_return([]) + role_scope end @@ -90,10 +95,6 @@ RSpec.describe WorkflowsController do allow(Status) .to receive(:all) .and_return [type_status, non_type_status] - - allow(role_scope) - .to receive(:order) - .and_return([role]) end context "without parameters" do @@ -111,9 +112,10 @@ RSpec.describe WorkflowsController do .to render_template :edit end - it "assigns the first role" do - expect(assigns[:role]) - .to eq role + # TODO: @role is a temporary single-role fallback; remove once components support multi-role natively + it "assigns the first role as fallback for @role, with @roles as the canonical collection" do + expect(assigns[:role]).to eq role + expect(assigns[:roles]).to contain_exactly(role) end it "does assign type" do @@ -122,40 +124,65 @@ RSpec.describe WorkflowsController do end end - context "with role and type params" do + context "with a single role param" do before do - get :edit, params: { role_id: role.id.to_s, type_id: type.id.to_s } - end + allow(role_scope) + .to receive(:where) + .with(id: [role.id.to_s]) + .and_return([role]) - it "responds with the role type statuses", :aggregate_failures do - expect(response) - .to have_http_status(:ok) - expect(response) - .to render_template :edit - expect(assigns[:role]) - .to eq role - expect(assigns[:type]) - .to eq type + get :edit, params: { role_ids: [role.id.to_s], type_id: type.id.to_s } end it "is successful" do - expect(response) - .to have_http_status(:ok) + expect(response).to have_http_status(:ok) end it "renders the edit template" do - expect(response) - .to render_template :edit + expect(response).to render_template :edit end - it "assigns role" do - expect(assigns[:role]) - .to eq role + it "assigns the selected role" do + expect(assigns[:roles]).to contain_exactly(role) + expect(assigns[:role]).to eq role end - it "assign type" do - expect(assigns[:type]) - .to eq type + it "assigns type" do + expect(assigns[:type]).to eq type + end + end + + context "with multiple role params" do + let(:role2) { build_stubbed(:project_role) } + + before do + allow(role_scope) + .to receive(:where) + .with(id: [role.id.to_s, role2.id.to_s]) + .and_return([role, role2]) + + get :edit, params: { role_ids: [role.id.to_s, role2.id.to_s], type_id: type.id.to_s } + end + + it "is successful" do + expect(response).to have_http_status(:ok) + end + + it "renders the edit template" do + expect(response).to render_template :edit + end + + it "assigns all selected roles" do + expect(assigns[:roles]).to contain_exactly(role, role2) + end + + # TODO: @role is a temporary single-role fallback; remove once components support multi-role natively + it "assigns the first role as a temporary single-role fallback for @role" do + expect(assigns[:role]).to eq role + end + + it "assigns type" do + expect(assigns[:type]).to eq type end end end diff --git a/spec/features/roles/create_spec.rb b/spec/features/roles/create_spec.rb index fab54f84acc..f2a09d7cc31 100644 --- a/spec/features/roles/create_spec.rb +++ b/spec/features/roles/create_spec.rb @@ -111,8 +111,11 @@ RSpec.describe "Role creation", :js do click_link type.name end + new_role = Role.find_by!(name: "New role name") click_button existing_role.name - click_link "New role name" + find("[data-item-id='#{new_role.id}']").click + find("[data-item-id='#{existing_role.id}']").click + page.send_keys :escape old_status = existing_workflow.old_status.name new_status = existing_workflow.new_status.name diff --git a/spec/features/workflows/edit_spec.rb b/spec/features/workflows/edit_spec.rb index e214e19b469..d828c3400c3 100644 --- a/spec/features/workflows/edit_spec.rb +++ b/spec/features/workflows/edit_spec.rb @@ -53,10 +53,17 @@ RSpec.describe "Workflow edit", :js do end def visit_workflow_edit(role: nil, tab: nil) - params = { controller: "/workflows", action: :edit, type_id: type.id } - params[:role_id] = role.id if role + params = {} + params[:role_ids] = [role.id] if role params[:tab] = tab if tab - visit url_for(params) + visit edit_workflow_path(type, **params) + end + + def switch_role_via_panel(from_role, to_role) + click_button from_role.name + find("[data-item-id='#{to_role.id}']").click + find("[data-item-id='#{from_role.id}']").click + page.send_keys :escape end def add_status_via_dialog(status) @@ -322,8 +329,7 @@ RSpec.describe "Workflow edit", :js do end it "loads the matrix for a different role after switching" do - click_button role.name - click_link other_role.name + switch_role_via_panel(role, other_role) within "#workflow_form_always" do expect(page).to have_field workflow_checkbox(1, 2) @@ -336,8 +342,7 @@ RSpec.describe "Workflow edit", :js do check workflow_checkbox(1, 0) end - click_button role.name - click_link other_role.name + switch_role_via_panel(role, other_role) within_dialog "Save changes before continuing?" do click_button "Ignore changes" @@ -347,8 +352,7 @@ RSpec.describe "Workflow edit", :js do expect(page).to have_field workflow_checkbox(1, 2) end - click_button other_role.name - click_link role.name + switch_role_via_panel(other_role, role) within "#workflow_form_always" do expect(page).to have_field workflow_checkbox(1, 0), checked: false @@ -360,8 +364,7 @@ RSpec.describe "Workflow edit", :js do check workflow_checkbox(1, 0) end - click_button role.name - click_link other_role.name + switch_role_via_panel(role, other_role) within_dialog "Save changes before continuing?" do click_button "Save changes and continue" @@ -383,8 +386,7 @@ RSpec.describe "Workflow edit", :js do check workflow_checkbox(1, 0) end - click_button role.name - click_link other_role.name + switch_role_via_panel(role, other_role) within_dialog "Save changes before continuing?" do find(".close-button").click @@ -402,8 +404,7 @@ RSpec.describe "Workflow edit", :js do add_status_via_dialog(statuses[2]) expect(page).to have_field workflow_checkbox(0, 2) - click_button role.name - click_link other_role.name + switch_role_via_panel(role, other_role) expect(page).to have_dialog("Save changes before continuing?") end @@ -417,8 +418,7 @@ RSpec.describe "Workflow edit", :js do expect(page).to have_no_field workflow_checkbox(0, 1) - click_button role.name - click_link other_role.name + switch_role_via_panel(role, other_role) expect(page).to have_dialog("Save changes before continuing?") end From f1fc3c17b277f4ffa6a32c65671e957130df6048 Mon Sep 17 00:00:00 2001 From: Mir Bhatia Date: Thu, 23 Apr 2026 18:50:42 +0200 Subject: [PATCH 095/280] Show indeterminate checkboxes in workflows matrix --- app/controllers/workflows/tabs_controller.rb | 17 +++++++++-------- app/views/workflows/_form.html.erb | 10 ++++++---- .../admin/workflow-checkbox-state.controller.ts | 9 +++++++++ 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/app/controllers/workflows/tabs_controller.rb b/app/controllers/workflows/tabs_controller.rb index 6c476c890b5..ab0efcc764f 100644 --- a/app/controllers/workflows/tabs_controller.rb +++ b/app/controllers/workflows/tabs_controller.rb @@ -48,7 +48,7 @@ class Workflows::TabsController < ApplicationController statuses_for_form - if @type && @role && @statuses.any? + if @type && @roles.any? && @statuses.any? workflows_for_form end end @@ -100,7 +100,7 @@ class Workflows::TabsController < ApplicationController current_statuses = if params[:status_ids].present? Status.where(id: params[:status_ids].map(&:to_i)).order(:position) elsif @type && @role - statuses_for_role_and_type + statuses_for_roles_and_type else Status.none end @@ -169,8 +169,8 @@ class Workflows::TabsController < ApplicationController @has_status_changes = false @statuses = if @type && params[:status_ids].present? statuses_from_params - elsif @type && @role - statuses_for_role_and_type + elsif @type && @roles.any? + statuses_for_roles_and_type elsif @type @type.statuses else @@ -180,18 +180,19 @@ class Workflows::TabsController < ApplicationController def statuses_from_params status_ids = params[:status_ids].map(&:to_i) - saved_ids = statuses_for_role_and_type.pluck(:id) + saved_ids = statuses_for_roles_and_type.pluck(:id) @added_status_ids = status_ids - saved_ids @has_status_changes = @added_status_ids.any? || (saved_ids - status_ids).any? Status.where(id: status_ids).order(:position) end - def statuses_for_role_and_type - @type.statuses(role: @role, tab: @tab) + def statuses_for_roles_and_type + status_ids = @roles.map { |role| @type.statuses(role:, tab: @tab).pluck(:id) }.flatten.uniq + Status.where(id: status_ids) end def workflows_for_form - workflows = Workflow.where(role_id: @role.id, type_id: @type.id) + workflows = Workflow.where(role_id: @roles.map(&:id), type_id: @type.id) @workflows = {} @workflows["always"] = workflows.select { |w| !w.author && !w.assignee } @workflows["author"] = workflows.select(&:author) diff --git a/app/views/workflows/_form.html.erb b/app/views/workflows/_form.html.erb index 95e3a7469a4..390b86a2c0f 100644 --- a/app/views/workflows/_form.html.erb +++ b/app/views/workflows/_form.html.erb @@ -187,8 +187,9 @@ See COPYRIGHT and LICENSE files for more details. <% end %> <% @statuses.each do |new_status| -%> - <% transition_saved = workflows.any? { it.old_status_id == old_status.id && it.new_status_id == new_status.id } - newly_added_status = @added_status_ids.include?(old_status.id) || @added_status_ids.include?(new_status.id) %> + <% transition_role_ids = workflows.select { it.old_status_id == old_status.id && it.new_status_id == new_status.id }.map(&:role_id).uniq + newly_added_status = @added_status_ids.include?(old_status.id) || @added_status_ids.include?(new_status.id) + some_roles = !transition_role_ids.empty? && transition_role_ids.size < @roles.size && !newly_added_status %> <%= render(Primer::BaseComponent.new(tag: :div, display: :flex, align_items: :center, mx: 1)) do @@ -198,13 +199,14 @@ See COPYRIGHT and LICENSE files for more details. name: "status[#{old_status.id}][#{new_status.id}]", id: "status_#{old_status.id}_#{new_status.id}", # See BUG https://github.com/primer/view_components/issues/3811 value: name, - checked: transition_saved || newly_added_status, + checked: transition_role_ids.any? || newly_added_status, label: t(".matrix_checkbox_label", old_status: old_status.name, new_status: new_status.name), visually_hide_label: true, data: { checkable_target: "checkbox", old_status: old_status.id, - new_status: new_status.id + new_status: new_status.id, + indeterminate: (true if some_roles) } ) ) diff --git a/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts b/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts index a88031e47c5..2199f07fa0b 100644 --- a/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts +++ b/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts @@ -83,6 +83,9 @@ export default class WorkflowCheckboxStateController extends Controller('input[type="checkbox"][data-indeterminate="true"]').forEach((cb) => { + cb.indeterminate = true; + }); + } + // // Trigger navigation with dirty-state confirmation. // From 225d874101758fac4da52f13b7e23badc150a7ce Mon Sep 17 00:00:00 2001 From: Mir Bhatia Date: Fri, 24 Apr 2026 16:18:15 +0200 Subject: [PATCH 096/280] Add handling for indeterminate checkboxes --- app/controllers/workflows/tabs_controller.rb | 41 +++++++++++++++++-- app/views/workflows/_form.html.erb | 3 +- .../workflow-checkbox-state.controller.ts | 18 ++++++-- 3 files changed, 54 insertions(+), 8 deletions(-) diff --git a/app/controllers/workflows/tabs_controller.rb b/app/controllers/workflows/tabs_controller.rb index ab0efcc764f..e13f869d311 100644 --- a/app/controllers/workflows/tabs_controller.rb +++ b/app/controllers/workflows/tabs_controller.rb @@ -57,9 +57,12 @@ class Workflows::TabsController < ApplicationController success = false Workflow.transaction do success = true + base_params = permitted_status_params + indeterminate = permitted_indeterminate_params @roles.each do |role| + role_params = indeterminate.empty? ? base_params : role_specific_params(base_params, indeterminate, role) result = Workflows::BulkUpdateService.new(role:, type: @type, tab: @tab) - .call(permitted_status_params) + .call(role_params) success = false unless result.success? end raise ActiveRecord::Rollback unless success @@ -200,10 +203,40 @@ class Workflows::TabsController < ApplicationController end def permitted_status_params - return {} if params["status"].blank? + status_params("status") + end - params["status"] + def permitted_indeterminate_params + status_params("indeterminate_status") + end + + def status_params(key) + return {} if params[key].blank? + + params[key] .to_unsafe_h - .select { |key, value| /\A\d+\z/.match?(key) && value.keys.all? { /\A\d+\z/.match?(it) } } + .select { |k, value| /\A\d+\z/.match?(k) && value.keys.all? { /\A\d+\z/.match?(it) } } + end + + def role_specific_params(base_params, indeterminate, role) + params = base_params.deep_dup + indeterminate.each do |old_id, new_ids| + new_ids.each_key do |new_id| + # Restore from DB so that it isn't overwritten by indeterminate state (unchecked) + had_transition = Workflow.exists?( + role_id: role.id, + type_id: @type.id, + old_status_id: old_id.to_i, + new_status_id: new_id.to_i, + author: @tab == "author", + assignee: @tab == "assignee" + ) + if had_transition + params[old_id] ||= {} + params[old_id][new_id] = "1" + end + end + end + params end end diff --git a/app/views/workflows/_form.html.erb b/app/views/workflows/_form.html.erb index 390b86a2c0f..11cbe41d944 100644 --- a/app/views/workflows/_form.html.erb +++ b/app/views/workflows/_form.html.erb @@ -191,6 +191,7 @@ See COPYRIGHT and LICENSE files for more details. newly_added_status = @added_status_ids.include?(old_status.id) || @added_status_ids.include?(new_status.id) some_roles = !transition_role_ids.empty? && transition_role_ids.size < @roles.size && !newly_added_status %> + <%= hidden_field_tag "indeterminate_status[#{old_status.id}][#{new_status.id}]", "1" if some_roles %> <%= render(Primer::BaseComponent.new(tag: :div, display: :flex, align_items: :center, mx: 1)) do render( @@ -199,7 +200,7 @@ See COPYRIGHT and LICENSE files for more details. name: "status[#{old_status.id}][#{new_status.id}]", id: "status_#{old_status.id}_#{new_status.id}", # See BUG https://github.com/primer/view_components/issues/3811 value: name, - checked: transition_role_ids.any? || newly_added_status, + checked: !some_roles && (transition_role_ids.any? || newly_added_status), label: t(".matrix_checkbox_label", old_status: old_status.name, new_status: new_status.name), visually_hide_label: true, data: { diff --git a/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts b/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts index 2199f07fa0b..181e0f0dee6 100644 --- a/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts +++ b/frontend/src/stimulus/controllers/dynamic/admin/workflow-checkbox-state.controller.ts @@ -82,7 +82,7 @@ export default class WorkflowCheckboxStateController extends Controller { + private onCheckboxChange = (event:Event) => { + this.removeIndeterminateMarker(event.target as HTMLInputElement); + this.recomputeDirtyFlag(); + }; + + private recomputeDirtyFlag() { const current = this.captureState(); const hasChanges = Object.keys(current).some((key) => current[key] !== this.initialCheckboxState[key]); this.hasCheckboxChangesValue = hasChanges; - }; + } + + private removeIndeterminateMarker(checkbox:HTMLInputElement):void { + const { oldStatus, newStatus } = checkbox.dataset; + this.element.querySelector( + `input[name="indeterminate_status[${oldStatus}][${newStatus}]"]`, + )?.remove(); + } private captureState():Record { const checkboxes:Record = {}; From 625a65ac1156cb2dfa5b9fcc0bce4f1ceb93cfc5 Mon Sep 17 00:00:00 2001 From: Mir Bhatia Date: Fri, 24 Apr 2026 17:33:16 +0200 Subject: [PATCH 097/280] Add multi role and indeterminate state specs --- .../workflows/edit_multi_role_spec.rb | 247 ++++++++++++++++++ spec/features/workflows/edit_spec.rb | 75 ++---- spec/support/workflows/edit_helpers.rb | 83 ++++++ 3 files changed, 345 insertions(+), 60 deletions(-) create mode 100644 spec/features/workflows/edit_multi_role_spec.rb create mode 100644 spec/support/workflows/edit_helpers.rb diff --git a/spec/features/workflows/edit_multi_role_spec.rb b/spec/features/workflows/edit_multi_role_spec.rb new file mode 100644 index 00000000000..c384bd4a933 --- /dev/null +++ b/spec/features/workflows/edit_multi_role_spec.rb @@ -0,0 +1,247 @@ +# frozen_string_literal: true + +# -- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +# ++ + +require "spec_helper" + +RSpec.describe "Workflow edit with multiple roles", :js do + include Toasts::Expectations + include Workflows::EditHelpers + + let(:role) { create(:project_role) } + let(:role2) { create(:project_role) } + let(:type) { create(:type) } + let(:admin) { create(:admin) } + let(:statuses) { (1..3).map { create(:status) } } + + # workflow for 0 -> 1 for 'role' + let!(:role_workflow) do + create(:workflow, role_id: role.id, type_id: type.id, + old_status_id: statuses[0].id, new_status_id: statuses[1].id, + author: false, assignee: false) + end + + current_user { admin } + + context "when displaying checkboxes" do + context "when all selected roles have a transition" do + let!(:role2_workflow) do + create(:workflow, role_id: role2.id, type_id: type.id, + old_status_id: statuses[0].id, new_status_id: statuses[1].id, + author: false, assignee: false) + end + + before { visit_workflow_edit(roles: [role, role2]) } + + it "shows the checkbox as checked" do + expect(page).to have_field workflow_checkbox(0, 1), checked: true + expect(indeterminate?(workflow_checkbox(0, 1))).to be false + end + end + + context "when no selected roles have a transition" do + before { visit_workflow_edit(roles: [role, role2]) } + + it "shows the checkbox as unchecked" do + expect(page).to have_field workflow_checkbox(1, 0), checked: false + expect(indeterminate?(workflow_checkbox(1, 0))).to be false + end + end + + context "when only some selected roles have a transition" do + before { visit_workflow_edit(roles: [role, role2]) } + + it "shows the checkbox as indeterminate" do + expect(page).to have_field workflow_checkbox(0, 1), checked: false + expect(indeterminate?(workflow_checkbox(0, 1))).to be true + end + end + + context "when roles have different statuses in their workflows" do + let!(:role2_workflow) do + create(:workflow, role_id: role2.id, type_id: type.id, + old_status_id: statuses[1].id, new_status_id: statuses[2].id, + author: false, assignee: false) + end + + before { visit_workflow_edit(roles: [role, role2]) } + + it "shows the union of statuses from all selected roles" do + expect(page).to have_field workflow_checkbox(0, 2) + expect(page).to have_field workflow_checkbox(1, 2) + end + end + + context "with a single role selected" do + before { visit_workflow_edit(roles: [role]) } + + it "does not show indeterminate checkboxes" do + expect(page).to have_field workflow_checkbox(0, 1), checked: true + expect(indeterminate?(workflow_checkbox(0, 1))).to be false + end + end + end + + context "when saving" do + before { visit_workflow_edit(roles: [role, role2]) } + + it "adds the transition for all roles when checking an unchecked checkbox" do + expect_transition(role, 1, 0, exist: false) + expect_transition(role2, 1, 0, exist: false) + + check workflow_checkbox(1, 0) + click_button "Save" + expect_flash(message: "Successful update.") + + expect_transition(role, 1, 0, exist: true) + expect_transition(role2, 1, 0, exist: true) + end + + it "preserves state for each role when saving an untouched indeterminate checkbox" do + expect_transition(role, 0, 1, exist: true) + expect_transition(role2, 0, 1, exist: false) + + expect(page).to have_field workflow_checkbox(0, 1), checked: false + expect(indeterminate?(workflow_checkbox(0, 1))).to be true + + click_button "Save" + expect_flash(message: "Successful update.") + + expect_transition(role, 0, 1, exist: true) + expect_transition(role2, 0, 1, exist: false) + + expect(indeterminate?(workflow_checkbox(0, 1))).to be true + end + + it "adds the transition for all roles when checking an indeterminate checkbox" do + expect_transition(role, 0, 1, exist: true) + expect_transition(role2, 0, 1, exist: false) + + expect(page).to have_field workflow_checkbox(0, 1), checked: false + expect(indeterminate?(workflow_checkbox(0, 1))).to be true + + check workflow_checkbox(0, 1) + click_button "Save" + expect_flash(message: "Successful update.") + + expect_transition(role, 0, 1, exist: true) + expect_transition(role2, 0, 1, exist: true) + + expect(indeterminate?(workflow_checkbox(0, 1))).to be false + end + + it "removes the transition from all roles when unchecking an indeterminate checkbox" do + expect_transition(role, 0, 1, exist: true) + expect_transition(role2, 0, 1, exist: false) + + expect(page).to have_field workflow_checkbox(0, 1), checked: false + expect(indeterminate?(workflow_checkbox(0, 1))).to be true + + check workflow_checkbox(0, 1) + uncheck workflow_checkbox(0, 1) + click_button "Save" + expect_flash(message: "Successful update.") + + expect_transition(role, 0, 1, exist: false) + expect_transition(role2, 0, 1, exist: false) + + expect(indeterminate?(workflow_checkbox(0, 1))).to be false + end + + context "when all roles have the transition" do + let!(:role2_workflow) do + create(:workflow, role_id: role2.id, type_id: type.id, + old_status_id: statuses[0].id, new_status_id: statuses[1].id, + author: false, assignee: false) + end + + before { visit_workflow_edit(roles: [role, role2]) } + + it "removes the transition from all roles when unchecking a fully checked checkbox" do + expect_transition(role, 0, 1, exist: true) + expect_transition(role2, 0, 1, exist: true) + + uncheck workflow_checkbox(0, 1) + click_button "Save" + expect_flash(message: "Successful update.") + + expect_transition(role, 0, 1, exist: false) + expect_transition(role2, 0, 1, exist: false) + end + end + + context "with multiple indeterminate checkboxes" do + let!(:role_workflow2) do + create(:workflow, role_id: role.id, type_id: type.id, + old_status_id: statuses[0].id, new_status_id: statuses[2].id, + author: false, assignee: false) + end + + before { visit_workflow_edit(roles: [role, role2]) } + + it "handles touched and untouched indeterminate checkboxes independently" do + # Both 0 -> 1 and 0 -> 2 are indeterminate + expect_transition(role, 0, 1, exist: true) + expect_transition(role2, 0, 1, exist: false) + expect_transition(role, 0, 2, exist: true) + expect_transition(role2, 0, 2, exist: false) + + check workflow_checkbox(0, 1) # explicitly check for all roles + + click_button "Save" + expect_flash(message: "Successful update.") + + # role2 now has this workflow + expect_transition(role2, 0, 1, exist: true) + + # 0 -> 2 stays indeterminate + expect_transition(role, 0, 2, exist: true) + expect_transition(role2, 0, 2, exist: false) + end + end + + it "marks the form dirty when interacting with an indeterminate checkbox" do + expect(page).to have_field workflow_checkbox(0, 1), checked: false + expect(indeterminate?(workflow_checkbox(0, 1))).to be true + + check workflow_checkbox(0, 1) + + click_link "User is author" + expect(page).to have_dialog("Save changes before continuing?") + end + + it "succeeds when saving with no changes to indeterminate checkboxes" do + expect(page).to have_field workflow_checkbox(0, 1), checked: false + expect(indeterminate?(workflow_checkbox(0, 1))).to be true + + click_button "Save" + expect_flash(message: "Successful update.") + end + end +end diff --git a/spec/features/workflows/edit_spec.rb b/spec/features/workflows/edit_spec.rb index d828c3400c3..1845346ce6f 100644 --- a/spec/features/workflows/edit_spec.rb +++ b/spec/features/workflows/edit_spec.rb @@ -32,6 +32,7 @@ require "spec_helper" RSpec.describe "Workflow edit", :js do include Toasts::Expectations + include Workflows::EditHelpers let(:role) { create(:project_role) } let(:type) { create(:type) } @@ -48,51 +49,12 @@ RSpec.describe "Workflow edit", :js do current_user { admin } - def workflow_checkbox(from_index, to_index) - "status_#{statuses[from_index].id}_#{statuses[to_index].id}" - end - - def visit_workflow_edit(role: nil, tab: nil) - params = {} - params[:role_ids] = [role.id] if role - params[:tab] = tab if tab - visit edit_workflow_path(type, **params) - end - - def switch_role_via_panel(from_role, to_role) - click_button from_role.name - find("[data-item-id='#{to_role.id}']").click - find("[data-item-id='#{from_role.id}']").click - page.send_keys :escape - end - - def add_status_via_dialog(status) - within "#workflow-table" do # Otherwise, click on "Statuses" menu item - click_link "Status" - end - within_dialog "Statuses" do - find(".ng-arrow-wrapper").click - find(".ng-option", text: status.name).click - click_button "Apply" - end - end - - def remove_status_via_dialog(status) - within "#workflow-table" do # Otherwise, click on "Statuses" menu item - click_link "Status" - end - within_dialog "Statuses" do - find(".ng-value", text: status.name).find(".ng-value-icon").click - click_button "Apply" - end - end - before do visit_workflow_edit end it "allows adding another workflow" do - visit_workflow_edit(role:) + visit_workflow_edit(roles: [role]) check workflow_checkbox(1, 0) @@ -121,7 +83,7 @@ RSpec.describe "Workflow edit", :js do old_status_id: statuses[0].id, new_status_id: statuses[1].id, author: true, assignee: false) - visit_workflow_edit(role:, tab: "author") + visit_workflow_edit(roles: [role], tab: "author") within "#workflow_form_author" do check workflow_checkbox(1, 0) @@ -157,7 +119,7 @@ RSpec.describe "Workflow edit", :js do old_status_id: statuses[0].id, new_status_id: statuses[1].id, author: false, assignee: true) - visit_workflow_edit(role:, tab: "assignee") + visit_workflow_edit(roles: [role], tab: "assignee") within "#workflow_form_assignee" do check workflow_checkbox(1, 0) @@ -201,7 +163,7 @@ RSpec.describe "Workflow edit", :js do end before do - visit_workflow_edit(role:) + visit_workflow_edit(roles: [role]) end it "shows the always tab by default" do @@ -261,9 +223,7 @@ RSpec.describe "Workflow edit", :js do expect(page).to have_css("#workflow_form_author") - expect(Workflow.exists?(role_id: role.id, type_id: type.id, - old_status_id: statuses[1].id, new_status_id: statuses[0].id, - author: false, assignee: false)).to be true + expect_transition(role, 1, 0, exist: true) end it "keeps unsaved changes and stays on the same tab when closing the dialog via 'X'" do @@ -318,7 +278,7 @@ RSpec.describe "Workflow edit", :js do end before do - visit_workflow_edit(role:) + visit_workflow_edit(roles: [role]) end it "shows the matrix for the first role" do @@ -376,9 +336,7 @@ RSpec.describe "Workflow edit", :js do expect(page).to have_field workflow_checkbox(1, 2) end - expect(Workflow.exists?(role_id: role.id, type_id: type.id, - old_status_id: statuses[1].id, new_status_id: statuses[0].id, - author: false, assignee: false)).to be true + expect_transition(role, 1, 0, exist: true) end it "keeps unsaved changes and stays on the same role when closing the dialog via 'X'" do @@ -426,7 +384,7 @@ RSpec.describe "Workflow edit", :js do context "when reloading the page with unsaved changes", :js do before do - visit_workflow_edit(role:) + visit_workflow_edit(roles: [role]) end it "shows a browser confirmation when reloading with unsaved checkbox changes" do @@ -466,7 +424,7 @@ RSpec.describe "Workflow edit", :js do context "with status dialog", :js do before do - visit_workflow_edit(role:) + visit_workflow_edit(roles: [role]) end it "shows only role-specific statuses in the matrix by default" do @@ -474,7 +432,7 @@ RSpec.describe "Workflow edit", :js do create(:workflow, role_id: other_role.id, type_id: type.id, old_status_id: statuses[0].id, new_status_id: statuses[2].id) - visit_workflow_edit(role:) + visit_workflow_edit(roles: [role]) expect(page).to have_field workflow_checkbox(0, 1) expect(page).to have_no_field workflow_checkbox(2, 0) @@ -573,8 +531,7 @@ RSpec.describe "Workflow edit", :js do expect_flash(message: "Successful update.") - expect(Workflow.exists?(role_id: role.id, type_id: type.id, - old_status_id: statuses[0].id, new_status_id: statuses[2].id)).to be true + expect_transition(role, 0, 2, exist: true) expect(page).to have_field workflow_checkbox(0, 2) @@ -590,7 +547,7 @@ RSpec.describe "Workflow edit", :js do expect(page).to have_field workflow_checkbox(2, 0) - visit_workflow_edit(role:) + visit_workflow_edit(roles: [role]) expect(page).to have_no_field workflow_checkbox(2, 0) end @@ -637,7 +594,7 @@ RSpec.describe "Workflow edit", :js do expect_flash(message: "Successful update.") - visit_workflow_edit(role:) + visit_workflow_edit(roles: [role]) expect(page).to have_no_field workflow_checkbox(2, 0) expect(page).to have_no_field workflow_checkbox(0, 2) @@ -698,9 +655,7 @@ RSpec.describe "Workflow edit", :js do expect_flash(message: "Successful update.") - expect(Workflow.exists?(role_id: role.id, type_id: type.id, - old_status_id: statuses[1].id, new_status_id: statuses[0].id, - author: false, assignee: false)).to be true + expect_transition(role, 1, 0, exist: true) expect(page).to have_dialog "Copy workflow" end diff --git a/spec/support/workflows/edit_helpers.rb b/spec/support/workflows/edit_helpers.rb new file mode 100644 index 00000000000..441c1f5e5eb --- /dev/null +++ b/spec/support/workflows/edit_helpers.rb @@ -0,0 +1,83 @@ +# frozen_string_literal: true + +# -- copyright +# OpenProject is an open source project management software. +# Copyright (C) the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +# ++ + +module Workflows + module EditHelpers + def workflow_checkbox(from_index, to_index) + "status_#{statuses[from_index].id}_#{statuses[to_index].id}" + end + + def visit_workflow_edit(roles: [], tab: nil) + params = {} + params[:role_ids] = roles.map(&:id) if roles.any? + params[:tab] = tab if tab + visit edit_workflow_path(type, **params) + end + + def switch_role_via_panel(from_role, to_role) + click_button from_role.name + find("[data-item-id='#{to_role.id}']").click + find("[data-item-id='#{from_role.id}']").click + page.send_keys :escape + end + + def add_status_via_dialog(status) + within "#workflow-table" do # Otherwise, click on "Statuses" menu item + click_link "Status" + end + within_dialog "Statuses" do + find(".ng-arrow-wrapper").click + find(".ng-option", text: status.name).click + click_button "Apply" + end + end + + def remove_status_via_dialog(status) + within "#workflow-table" do # Otherwise, click on "Statuses" menu item + click_link "Status" + end + within_dialog "Statuses" do + find(".ng-value", text: status.name).find(".ng-value-icon").click + click_button "Apply" + end + end + + def indeterminate?(checkbox_id) + page.evaluate_script("document.getElementById('#{checkbox_id}')?.indeterminate ?? false") + end + + def expect_transition(role, from_index, to_index, exist:, author: false, assignee: false) + expect(Workflow.exists?(role_id: role.id, type_id: type.id, + old_status_id: statuses[from_index].id, + new_status_id: statuses[to_index].id, + author:, assignee:)).to be exist + end + end +end From 02ab170a14bf4b59ed9eb92cecfb9f6e669a3c5f Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Sat, 25 Apr 2026 04:01:06 +0000 Subject: [PATCH 098/280] update locales from crowdin [ci skip] --- config/locales/crowdin/cs.yml | 50 ++--- config/locales/crowdin/de.yml | 28 +-- config/locales/crowdin/es.yml | 2 +- config/locales/crowdin/fr.yml | 48 ++--- config/locales/crowdin/ja.yml | 101 ++++----- config/locales/crowdin/js-ca.yml | 2 +- config/locales/crowdin/js-de.yml | 6 +- config/locales/crowdin/js-ja.yml | 56 ++--- config/locales/crowdin/js-no.yml | 2 +- config/locales/crowdin/js-ro.yml | 2 +- config/locales/crowdin/js-ru.yml | 2 +- config/locales/crowdin/js-vi.yml | 2 +- config/locales/crowdin/ro.yml | 4 +- config/locales/crowdin/sl.yml | 4 +- config/locales/crowdin/uk.yml | 2 +- config/locales/crowdin/vi.yml | 4 +- config/locales/crowdin/zh-CN.seeders.yml | 4 +- config/locales/crowdin/zh-CN.yml | 12 +- config/locales/crowdin/zh-TW.yml | 10 +- .../backlogs/config/locales/crowdin/fr.yml | 26 +-- .../backlogs/config/locales/crowdin/ro.yml | 2 +- .../backlogs/config/locales/crowdin/th.yml | 8 +- .../backlogs/config/locales/crowdin/zh-TW.yml | 2 +- modules/bim/config/locales/crowdin/fr.yml | 2 +- modules/budgets/config/locales/crowdin/cs.yml | 2 +- modules/costs/config/locales/crowdin/de.yml | 2 +- modules/costs/config/locales/crowdin/ja.yml | 2 +- .../job_status/config/locales/crowdin/fr.yml | 2 +- .../config/locales/crowdin/zh-CN.yml | 2 +- .../config/locales/crowdin/zh-TW.yml | 2 +- modules/meeting/config/locales/crowdin/cs.yml | 2 +- modules/meeting/config/locales/crowdin/de.yml | 6 +- modules/meeting/config/locales/crowdin/ja.yml | 10 +- .../reporting/config/locales/crowdin/ro.yml | 2 +- .../reporting/config/locales/crowdin/vi.yml | 2 +- .../config/locales/crowdin/zh-TW.yml | 4 +- .../storages/config/locales/crowdin/ja.yml | 202 +++++++++--------- .../storages/config/locales/crowdin/js-ja.yml | 18 +- .../config/locales/crowdin/js-fr.yml | 2 +- .../config/locales/crowdin/ro.yml | 2 +- .../config/locales/crowdin/ru.yml | 2 +- modules/wikis/config/locales/crowdin/af.yml | 8 +- modules/wikis/config/locales/crowdin/ar.yml | 8 +- modules/wikis/config/locales/crowdin/az.yml | 8 +- modules/wikis/config/locales/crowdin/be.yml | 8 +- modules/wikis/config/locales/crowdin/bg.yml | 8 +- modules/wikis/config/locales/crowdin/ca.yml | 8 +- .../wikis/config/locales/crowdin/ckb-IR.yml | 8 +- modules/wikis/config/locales/crowdin/cs.yml | 8 +- modules/wikis/config/locales/crowdin/da.yml | 8 +- modules/wikis/config/locales/crowdin/de.yml | 8 +- modules/wikis/config/locales/crowdin/el.yml | 8 +- modules/wikis/config/locales/crowdin/eo.yml | 8 +- modules/wikis/config/locales/crowdin/es.yml | 8 +- modules/wikis/config/locales/crowdin/et.yml | 8 +- modules/wikis/config/locales/crowdin/eu.yml | 8 +- modules/wikis/config/locales/crowdin/fa.yml | 8 +- modules/wikis/config/locales/crowdin/fi.yml | 8 +- modules/wikis/config/locales/crowdin/fil.yml | 8 +- modules/wikis/config/locales/crowdin/fr.yml | 48 ++--- modules/wikis/config/locales/crowdin/he.yml | 8 +- modules/wikis/config/locales/crowdin/hi.yml | 8 +- modules/wikis/config/locales/crowdin/hr.yml | 8 +- modules/wikis/config/locales/crowdin/hu.yml | 8 +- modules/wikis/config/locales/crowdin/id.yml | 8 +- modules/wikis/config/locales/crowdin/it.yml | 8 +- modules/wikis/config/locales/crowdin/ja.yml | 8 +- modules/wikis/config/locales/crowdin/ka.yml | 8 +- modules/wikis/config/locales/crowdin/kk.yml | 8 +- modules/wikis/config/locales/crowdin/ko.yml | 8 +- modules/wikis/config/locales/crowdin/lt.yml | 8 +- modules/wikis/config/locales/crowdin/lv.yml | 8 +- modules/wikis/config/locales/crowdin/mn.yml | 8 +- modules/wikis/config/locales/crowdin/ms.yml | 8 +- modules/wikis/config/locales/crowdin/ne.yml | 8 +- modules/wikis/config/locales/crowdin/nl.yml | 8 +- modules/wikis/config/locales/crowdin/no.yml | 8 +- modules/wikis/config/locales/crowdin/pl.yml | 8 +- .../wikis/config/locales/crowdin/pt-BR.yml | 8 +- .../wikis/config/locales/crowdin/pt-PT.yml | 8 +- modules/wikis/config/locales/crowdin/ro.yml | 8 +- modules/wikis/config/locales/crowdin/ru.yml | 8 +- modules/wikis/config/locales/crowdin/rw.yml | 8 +- modules/wikis/config/locales/crowdin/si.yml | 8 +- modules/wikis/config/locales/crowdin/sk.yml | 8 +- modules/wikis/config/locales/crowdin/sl.yml | 8 +- modules/wikis/config/locales/crowdin/sr.yml | 8 +- modules/wikis/config/locales/crowdin/sv.yml | 8 +- modules/wikis/config/locales/crowdin/th.yml | 8 +- modules/wikis/config/locales/crowdin/tr.yml | 8 +- modules/wikis/config/locales/crowdin/uk.yml | 8 +- modules/wikis/config/locales/crowdin/uz.yml | 8 +- modules/wikis/config/locales/crowdin/vi.yml | 8 +- .../wikis/config/locales/crowdin/zh-CN.yml | 8 +- .../wikis/config/locales/crowdin/zh-TW.yml | 8 +- .../config/locales/crowdin/zh-CN.yml | 2 +- 96 files changed, 506 insertions(+), 613 deletions(-) diff --git a/config/locales/crowdin/cs.yml b/config/locales/crowdin/cs.yml index 818ee30596d..8b07f2dee65 100644 --- a/config/locales/crowdin/cs.yml +++ b/config/locales/crowdin/cs.yml @@ -1786,7 +1786,7 @@ cs: enabled_modules: Povolené moduly identifier: Identifikátor latest_activity_at: Poslední aktivita - parent: Nadřazený projekt + parent: Podprojekt project_creation_wizard_enabled: Project initiation request public_value: title: Viditelnost @@ -2221,7 +2221,7 @@ cs: message: cannot_move_message_to_forum_of_different_project: A message cannot be moved to a forum of a different project. notifications: - at_least_one_channel: Pro odesílání notifikací musí být specifikován alespoň jeden kanál + at_least_one_channel: Alespoň jeden kanál pro odesílání oznámení musí být specifikován. attributes: read_ian: read_on_creation: 'nelze nastavit na pravdivé při vytváření oznámení ' @@ -2531,11 +2531,11 @@ cs: member: Člen news: Novinky notification: - one: Notifikace - few: Notifikací - many: Notifikací - other: Notifikace - placeholder_user: Placeholder uživatel + one: Oznámení + few: Oznámení + many: Oznámení + other: Oznámení + placeholder_user: placeholder uživatel project: one: Projekt few: Projekty @@ -3627,7 +3627,7 @@ cs: ai: Umělá Inteligence (AI) aggregation: Agregace api_and_webhooks: API & Webhooky - mail_notification: E-mailové notifikace + mail_notification: E-mailová upozornění mails_and_notifications: E-maily a oznámení mcp_configurations: Protokol MCP (Model Context Protocol) quick_add: @@ -3789,7 +3789,7 @@ cs: by_project: Nepřečteno dle projektu by_reason: Důvod inbox: Doručená pošta - send_notifications: Pro tuto akci odeslat notifikaci + send_notifications: Odeslat oznámení pro tuto akci work_packages: subject: created: Pracovní balíček byl vytvořen. @@ -4254,9 +4254,9 @@ cs: label_permissions: Práva label_permissions_report: Přehled oprávnění label_personalize_page: Přizpůsobit tuto stránku - label_placeholder_user: Placeholder uživatel + label_placeholder_user: placeholder uživatel label_placeholder_user_new: '' - label_placeholder_user_plural: Placeholder uživatelé + label_placeholder_user_plural: placeholder uživatelé label_planning: Plánování label_please_login: Přihlaste se prosím label_plugins: Pluginy @@ -4281,7 +4281,7 @@ cs: label_project_attribute_plural: Atributy projektu label_project_attribute_manage_link: Správa atributů produktu label_project_count: Celkový počet projektů - label_project_copy_notifications: Během kopírování projektu odeslat notifikace e-mailem + label_project_copy_notifications: Během kopie projektu odeslat oznámení e-mailem label_project_initiation_export_pdf: Export PDF for %{project_creation_name} label_project_latest: Nejnovější projekty label_project_default_type: Povolit prázdný typ @@ -4442,7 +4442,7 @@ cs: label_version_new: Nová verze label_version_edit: Upravit verzi label_version_plural: Verze - label_version_sharing_descendants: S podprojekty + label_version_sharing_descendants: S Podprojekty label_version_sharing_hierarchy: S hierarchií projektu label_version_sharing_none: Není sdíleno label_version_sharing_system: Se všemi projekty @@ -4580,28 +4580,28 @@ cs: digests: including_mention_singular: včetně zmínky including_mention_plural: včetně %{number_mentioned} zmínění - unread_notification_singular: 1 nepřečtená notifikace - unread_notification_plural: "%{number_unread} nepřečtených notifikací" + unread_notification_singular: 1 nepřečtené oznámení + unread_notification_plural: "%{number_unread} nepřečtených oznámení" you_have: Máte logo_alt_text: Logo mention: subject: "%{user_name} vás zmínil v #%{id} - %{subject}" notification: - center: Centrum notifikací + center: Centrum oznámení see_in_center: Zobrazit komentář v oznamovacím centru settings: Změnit nastavení e-mailu salutation: Dobrý den, %{user}, salutation_full_name: Jméno a příjmení work_packages: created_at: 'Vytvořeno v %{timestamp} uživatelem %{user} ' - login_to_see_all: Přihlaste se pro zobrazení všech notifikací. + login_to_see_all: Přihlaste se pro zobrazení všech oznámení. mentioned: Byli jste zmíněni v komentáři mentioned_by: "%{user} vás zmínil v komentáři OpenProject" more_to_see: - one: Existuje ještě 1 pracovní balíček s notifikací. - few: Existuje ještě %{count} pracovních balíčků s notifikacema. - many: Existuje ještě %{count} pracovních balíčků s notifikacema. - other: Existuje ještě %{count} pracovních balíčků s notifikacema. + one: Máte ještě 1 pracovní balíček s notifikací. + few: Existuje ještě %{count} pracovních balíčků s oznámeními. + many: Máte ještě %{count} pracovních balíčků s notifikacemi. + other: Existuje ještě %{count} pracovních balíčků s oznámeními. open_in_browser: Otevřít v prohlížeči reason: watched: Sledováno @@ -4610,7 +4610,7 @@ cs: mentioned: Zmíněné shared: Sdílené subscribed: vše - prefix: 'Obdrženo z důvodu nastavení notifikací: %{reason}' + prefix: 'Obdrženo z důvodu nastavení oznámení: %{reason}' date_alert_start_date: Upozornění na datum date_alert_due_date: Upozornění na datum reminder: Připomínka @@ -4923,7 +4923,7 @@ cs: permission_move_work_packages: Přesun pracovních balíčků permission_protect_wiki_pages: Ochrana stránky wiki permission_rename_wiki_pages: Přejmenovat stránky wiki - permission_save_queries: Uložit zobrazení + permission_save_queries: Uložit pohled permission_search_project: Hledat projekt permission_select_custom_fields: Vybrat vlastní pole permission_select_project_custom_fields: Vyberte atributy projektu @@ -5451,7 +5451,7 @@ cs: enable_subscriptions_text_html: Umožňuje uživatelům s nezbytnými oprávněními přihlásit se do OpenProject kalendářů a získat přístup k informacím o pracovním balíčku prostřednictvím externího klienta kalendáře. Poznámka: Před povolením si prosím přečtěte podrobnosti o odběru. language_name_being_default: "%{language_name} (výchozí)" notifications: - events_explanation: Určuje, pro kterou událost je odeslán e-mail. Pracovní balíčky jsou z tohoto seznamu vyloučeny, protože notifikace pro ně mohou být nastavena speciálně pro každého uživatele. + events_explanation: Určuje, pro kterou událost je odeslán e-mail. Pracovní balíčky jsou z tohoto seznamu vyloučeny, protože oznámení pro ně mohou být nastavena speciálně pro každého uživatele. delay_minutes_explanation: Odesílání e-mailu může být pozdrženo, aby bylo uživatelům s nakonfigurovaným v oznámení aplikace před odesláním pošty potvrzeno oznámení. Uživatelé, kteří si přečtou oznámení v aplikaci, nedostanou e-mail pro již přečtené oznámení. other: Ostatní passwords: Hesla @@ -5656,7 +5656,7 @@ cs: text_destroy_what_to_do: Co chcete udělat? text_diff_truncated: "... Toto rozlišení bylo zkráceno, protože přesahuje maximální velikost, kterou lze zobrazit." text_email_delivery_not_configured: |- - Doručení e-mailu není nakonfigurováno a notifikace jsou zakázány. + Doručení e-mailu není nakonfigurováno a oznámení jsou zakázána. Nakonfigurujte váš SMTP server pro jejich povolení. text_enumeration_category_reassign_to: 'Přiřadit je k této hodnotě:' text_enumeration_destroy_question: "%{count} objektů je přiřazeno k této hodnotě." diff --git a/config/locales/crowdin/de.yml b/config/locales/crowdin/de.yml index 9689296298b..a8420575355 100644 --- a/config/locales/crowdin/de.yml +++ b/config/locales/crowdin/de.yml @@ -87,11 +87,11 @@ de: type_token_text: Ihr Enterprise-Token-Text token_placeholder: Enterprise-Token Text hier einfügen token_caption: Weitere Informationen über die Aktivierung der Enterprise Edition finden Sie in unserer [Dokumentation](docs_url). - add_token: Enterprise-Edition Support Token hochladen + add_token: Enterprise edition Support Token hochladen replace_token: Aktuellen Enterprise edition Support Token ersetzen order: Enterprise on-premises bestellen - paste: Enterprise-Edition Support Token hier einfügen - required_for_feature: Dieses Add-on ist nur mit einem aktiven Enterprise-Edition Support-Token verfügbar. + paste: Enterprise edition Support Token hier einfügen + required_for_feature: Dieses Add-on ist nur mit einem aktiven Enterprise edition Support-Token verfügbar. enterprise_link: Klicken Sie hier für weitere Informationen. start_trial: Kostenlose Testversion starten book_now: Jetzt buchen @@ -1328,10 +1328,10 @@ de: tab: Titel konfigurieren manually_editable_subjects: label: Manuell bearbeitbare Titel - caption: Nutzer:innen können die Titel der Arbeitspakete ohne Einschränkungen manuell eingeben und bearbeiten. + caption: Benutzer können die Titel der Arbeitspakete ohne Einschränkungen manuell eingeben und bearbeiten. automatically_generated_subjects: label: Automatisch generierte Titel - caption: Definieren Sie ein Schema aus referenzierten Attributen und Freitext für die automatische Generierung von Arbeitspakettiteln. Nutzer:innen können diese nicht manuell editieren. + caption: Definieren Sie ein Schema aus referenzierten Attributen und Freitext für die automatische Generierung von Arbeitspakettiteln. Nutzer können diese nicht manuell editieren. token: label_with_context: "%{attribute_context}: %{attribute_label}" context: @@ -1432,7 +1432,7 @@ de: manual_with_children: Hat Unteraufgaben aber ihre Startdaten werden ignoriert. title: automatic_mobile: Automatisch geplant. - automatic_with_children: Unteraufgaben bestimmen Termine. + automatic_with_children: Die Termine sind durch untergeordnete Arbeitspakete bestimmt. automatic_with_predecessor: Der Anfangstermin wird von einem Vorgänger festgelegt. manual_mobile: Manuell geplant. manually_scheduled: Manuell geplant – Daten unabhängig von Beziehungen. @@ -1535,7 +1535,7 @@ de: label_child_plural: Unteraufgaben new_child: Neue Unteraufgabe new_child_description: Erstellt ein zugehöriges Arbeitspaket als Unteraufgabe des aktuellen (übergeordneten) Arbeitspakets - child: Unteraufgabe + child: Kind child_description: Macht das zugehörige Arbeitspaket zu einer Unteraufgabe des aktuellen (übergeordneten) Arbeitspakets parent: Übergeordnetes Arbeitspaket parent_description: Wandelt das verknüpfte in ein übergeordnetes Arbeitspaket dieses Arbeitspakets um @@ -1795,7 +1795,7 @@ de: column_names: Spalten relations_to_type_column: Beziehungen zu %{type} relations_of_type_column: 'Beziehungen der Art: %{type}' - child_work_packages: Unteraufgaben + child_work_packages: Kinder group_by: Gruppiere Ergebnisse nach sort_by: Ergebnisse sortieren nach filters: Filter @@ -2364,7 +2364,7 @@ de: status_transition_invalid: ist ungültig, da kein valider Übergang vom alten zum neuen Status für die aktuelle Rolle des Nutzers existiert. status_invalid_in_type: ist ungültig, da der aktuelle Status nicht in diesem Typ vorhanden ist. type: - cannot_be_milestone_due_to_children: kann kein Meilenstein werden, da dieses Arbeitspaket Unteraufgaben besitzt. + cannot_be_milestone_due_to_children: kann kein Meilenstein werden, da dieses Arbeitspaket Unterelemente besitzt. priority_id: only_active_priorities_allowed: muss aktiv sein. category: @@ -3183,7 +3183,7 @@ de: error_custom_option_not_found: Option ist nicht vorhanden. error_enterprise_plan_needed: Sie benötigen den Enterprise-Plan %{plan}, um diese Aktion durchzuführen. error_enterprise_activation_user_limit: Ihr Konto konnte nicht aktiviert werden (Nutzerlimit erreicht). Bitte kontaktieren Sie Ihren Administrator um Zugriff zu erhalten. - error_enterprise_token_invalid_domain: Die Enterprise-Edition ist nicht aktiv. Die aktuelle Domain (%{actual}) entspricht nicht dem erwarteten Hostnamen (%{expected}). + error_enterprise_token_invalid_domain: Die Enterprise edition ist nicht aktiv. Die aktuelle Domain (%{actual}) entspricht nicht dem erwarteten Hostnamen (%{expected}). error_failed_to_delete_entry: Fehler beim Löschen dieses Eintrags. error_in_dependent: 'Fehler beim Versuch, abhängiges Objekt zu ändern: %{dependent_class} #%{related_id} - %{related_subject}: %{error}' error_in_new_dependent: 'Fehler beim Versuch, abhängiges Objekt zu erstellen: %{dependent_class} - %{related_subject}: %{error}' @@ -3471,7 +3471,7 @@ de: dates: working: "%{date} ist jetzt ein Arbeitstag" non_working: "%{date} ist jetzt ein arbeitsfreier Tag" - progress_mode_changed_to_status_based: Fortschrittberechnung wurde auf Status-bezogen gesetzt + progress_mode_changed_to_status_based: Fortschrittberechnung wurde auf Status-basiert gesetzt status_excluded_from_totals_set_to_false_message: jetzt in den Gesamtwerten der Hierarchie enthalten status_excluded_from_totals_set_to_true_message: jetzt von den Hierarchie-Gesamtwerten ausgeschlossen status_percent_complete_changed: "% abgeschlossen von %{old_value}% auf %{new_value} % geändert" @@ -3874,7 +3874,7 @@ de: label_enumerations: Aufzählungen label_enterprise: Enterprise label_enterprise_active_users: "%{current}/%{limit} gebuchte aktive Nutzer" - label_enterprise_edition: Enterprise Edition + label_enterprise_edition: Enterprise edition label_enterprise_support: Enterprise Support label_environment: Umgebung label_estimates_and_progress: Schätzungen und Fortschritt @@ -4992,7 +4992,7 @@ de: Erhöhen Sie diesen Wert zur Verbesserung der Performance, da die Erfassung des genutzten Festplattenspeichers Ressourcen-intensiv ist. oauth_application_details_html: 'Der Client Geheimcode wird nach dem Schließen dieses Fensters nicht mehr zugänglich sein. Bitte kopieren Sie diese Werte in die Nextcloud OpenProject Integrationseinstellungen:' oauth_application_details_link_text: Zu den Einstellungen gehen - setup_documentation_details: 'Wenn Sie Hilfe bei der Konfiguration eines neuen Dateispeichers benötigen, konsultieren Sie bitte die Dokumentation: ' + setup_documentation_details: 'Wenn Sie Hilfe bei der Konfiguration eines neuen Datei-Speichers benötigen, konsultieren Sie bitte die Dokumentation: ' setup_documentation_details_link_text: Dateispeicher einrichten show_warning_details: Um diesen Dateispeicher nutzen zu können, müssen Sie das Modul und den spezifischen Speicher in den Projekteinstellungen jedes gewünschten Projekts aktivieren. subversion: @@ -5702,7 +5702,7 @@ de: warning_user_limit_reached_admin_html: 'Das Hinzufügen zusätzlicher Benutzer überschreitet das aktuelle Benutzerlimit. Bitte [aktualisieren Sie Ihr Abonnement](upgrade_url) um sicherzustellen, dass externe Benutzer auf diese Instanz zugreifen können. ' - warning_user_limit_reached_instructions: 'Du hast dein Nutzerlimit erreicht (%{current}/%{max} active users). Bitte kontaktiere sales@openproject.com um deinen Enterprise Edition Plan upzugraden und weitere Nutzer hinzuzufügen. + warning_user_limit_reached_instructions: 'Du hast dein Nutzerlimit erreicht (%{current}/%{max} active users). Bitte kontaktiere sales@openproject.com um deinen Enterprise edition Plan upzugraden und weitere Nutzer hinzuzufügen. ' warning_protocol_mismatch_html: '' diff --git a/config/locales/crowdin/es.yml b/config/locales/crowdin/es.yml index bcac536b9e8..1b9c08ab048 100644 --- a/config/locales/crowdin/es.yml +++ b/config/locales/crowdin/es.yml @@ -1434,7 +1434,7 @@ es: automatic_with_children: Fechas determinadas por paquetes de trabajo secundarios. automatic_with_predecessor: La fecha de inicio la fija un predecesor. manual_mobile: Programado manualmente. - manually_scheduled: Programado manualmente. No afectadas por relaciones. + manually_scheduled: Programado manualmente. Fechas no afectadas por relaciones. blankslate: title: Sin predecesores description: Para activar la programación automática, este paquete de trabajo debe tener al menos un predecesor. Entonces se programará automáticamente para que comience después del predecesor más cercano. diff --git a/config/locales/crowdin/fr.yml b/config/locales/crowdin/fr.yml index 89dcf17c4b3..56bcda61210 100644 --- a/config/locales/crowdin/fr.yml +++ b/config/locales/crowdin/fr.yml @@ -262,7 +262,7 @@ fr: caption: Vérifiez vos paramètres d'importation et démarrez l'importation caption_done: Terminé label_available_data: Données disponibles pour l'importation - label_users_import_explanation: Users that are involved in selected projects (group memberships included) + label_users_import_explanation: Utilisateurs impliqués dans les projets sélectionnés (y compris les membres de groupes) button_start: Démarrer l'importation description: Vous êtes sur le point de lancer un cycle d'importation avec les paramètres suivants. label_progress: Importation en cours... @@ -1980,28 +1980,28 @@ fr: version: Version watcher: Observateur ordered_persisted_query_entity: - persisted_query: Persisted query - entity: Entity + persisted_query: Requête persistante + entity: Entité position: Position persisted_query: - name: Name - views: Views - filters: Filters - orders: Orders - selects: Selects + name: Nom + views: Affichages + filters: Filtres + orders: Commandes + selects: Sélectionne persisted_view: - name: Name - query: Query - parent: Parent view + name: Nom + query: Requête + parent: Vue parente public: Public user_card_view: - secondary_info: Secondary info - show_status_badge: Show status badge - show_email: Show email - tag_source: Tag source - tag_limit: Tag limit - card_size: Card size - columns_per_row: Columns per row + secondary_info: Informations secondaires + show_status_badge: Afficher le badge d'état + show_email: Afficher l'adresse électronique + tag_source: Source des étiquettes + tag_limit: Limite des étiquettes + card_size: Taille des cartes + columns_per_row: Colonne par ligne errors: messages: accepted: doi(ven)t être accepté(e)(s). @@ -3576,7 +3576,7 @@ fr: personal_reminder: M'avertir pour les rappels personnels daily_reminders: title: M'envoyer des rappels quotidiens par e-mail pour les notifications non lues - description: You will receive these reminders only for unread notifications and only at hours you specify. Until you configure a time zone for your account, the times will be interpreted to be in UTC. + description: Vous ne recevrez ces rappels que pour les notifications non lues et seulement aux heures que vous aurez spécifiées. Tant que vous n'aurez pas configuré un fuseau horaire pour votre compte, les heures seront interprétées comme étant en UTC. enabled: Activer les rappels quotidiens par e-mail add_time: Ajouter une heure remove_time: Supprimer l'heure @@ -3590,7 +3590,7 @@ fr: date_range: Période de pause email_alerts: title: Alertes par e-mail pour les autres éléments qui ne sont pas des lots de travaux - description: Notifications today are limited to work packages. You can choose to continue receiving email alerts for these events until they are included in notifications. + description: Les notifications d'aujourd'hui sont limitées aux lots de travaux. Vous pouvez choisir de continuer à recevoir des alertes par e-mail pour ces événements jusqu'à ce qu'elles soient incluses dans les notifications. news_added: Actualités ajoutées news_commented: Commenter un article d'actualité document_added: Document ajouté @@ -3603,7 +3603,7 @@ fr: notifications: participating: title: Participant - description: Notifications for all activities in work packages you are involved in (assignee, accountable or watcher). + description: Notifications pour toute activité sur les lots de travaux vous concernant (assigné, responsable ou observateur). submit_button: Mettre à jour les préférences mentioned: Mentionné watched: En cours @@ -3612,7 +3612,7 @@ fr: shared: Partagé avec moi date_alerts: title: Alertes de date - description: Automatic notifications when important dates are approaching for open work packages you are involved in (assignee, accountable or watcher). + description: Notifications automatiques lorsque des dates importantes approchent pour les lots de travaux ouverts vous concernant (assigné, responsable ou observateur). submit_button: Mettre à jour les alertes de date start_date: Date de début due_date: Date de fin @@ -3627,7 +3627,7 @@ fr: seven_days_after: 7 jours après non_participating: title: Non participant - description: Additional notifications for activities in all projects. + description: Notifications additionnelles pour les activités de tous les projets. submit_button: Mettre à jour les préférences work_package_created: Nouveaux lots de travaux work_package_commented: Tous les nouveaux commentaires @@ -3636,7 +3636,7 @@ fr: work_package_scheduled: Tous les changements de date project_specific_settings: title: Paramètres de notification spécifiques au projet - description: These project-specific settings override default settings above. + description: Ces paramètres spécifiques au projet remplacent les paramètres par défaut ci-dessus. add_button: Ajouter des notifications spécifiques au projet dialog_title: Ajouter des notifications spécifiques au projet list_header: Projets avec notifications spécifiques diff --git a/config/locales/crowdin/ja.yml b/config/locales/crowdin/ja.yml index 28885e36621..b669949c0d0 100644 --- a/config/locales/crowdin/ja.yml +++ b/config/locales/crowdin/ja.yml @@ -327,13 +327,13 @@ ja: success: MCP configuration was updated successfully. scim_clients: authentication_methods: - sso: IDプロバイダーからのJWT - oauth2_client: OAuth 2.0クライアント認証情報 + sso: アイデンティティプロバイダからのJWT + oauth2_client: OAuth 2.0 クライアント資格情報 oauth2_token: 静的アクセストークン created_client_credentials_dialog_component: - title: クライアント認証情報の作成 - heading: クライアント認証情報が生成されました - one_time_hint: クライアント・シークレットが表示されるのはこの時だけです。必ずコピーしてください。 + title: クライアントの資格情報が作成されました + heading: クライアントの資格情報が生成されました + one_time_hint: クライアントのシークレットが表示される唯一の時間です。今すぐコピーしてください。 created_token_dialog_component: title: トークンを作成しました heading: トークンが生成されました @@ -346,21 +346,21 @@ ja: edit: label_delete_scim_client: SCIM クライアントを削除 form: - auth_provider_description: これは、SCIM プロバイダによって追加されたユーザが OpenProject で認証するために使用するサービスです。 - authentication_method_description_html: これは SCIM クライアントが OpenProject で認証する方法です。OAuth トークンにscim_v2スコープが含まれていることを確認してください。 - description: これらの設定オプションの詳細については、[SCIMクライアントの設定に関する文書](docs_url)を参照してください。 + auth_provider_description: これは、SCIMプロバイダが追加したユーザーがOpenProjectでの認証に使用するサービスです。 + authentication_method_description_html: これは SCIM クライアントが OpenProject で認証する方法です。OAuth トークンに scim_v2 スコープが含まれていることを確認してください。 + description: 設定オプションの詳細については、[SCIM クライアントの設定に関するドキュメント](docs_url)を参照してください。 jwt_sub_description: 例えば、Keycloakの場合、これはSCIMクライアントに関連付けられたサービスアカウントのUUIDです。あなたのユースケースにあった Subject claim を見つける方法については [ドキュメント](docs_url) を参照してください。 - name_description: このクライアントが設定された理由を他の管理者が理解しやすい名前を選んでください。 + name_description: 他の管理者がこのクライアントが設定された理由を理解するのに役立つ名前を選択してください。 index: - description: ここで設定された SCIM クライアントは、OpenProject SCIM サーバ API と対話し、ユーザアカウントやグループのプロビジョニング、更新、デプロビジョニングを行うことができます。 - label_create_button: SCIMクライアントの追加 + description: ここで設定されたSCIMクライアントは、OpenProjectのSCIMサーバー APIと相互作用して、ユーザーアカウントとグループのプロビジョニング、更新、およびデプロビジョニングを行うことができます。 + label_create_button: SCIMクライアントを追加 new: title: 新しいSCIMクライアント revoke_static_token_dialog_component: confirm_button: 取り消す - title: 静的トークンの失効 - heading: このトークンを本当に取り消しますか? - description: このトークンを使っている SCIM クライアントは、OpenProject の SCIM サーバ API にアクセスできなくなります。 + title: 静的トークンを取り消す + heading: このトークンを取り消してもよろしいですか? + description: このトークンを使用する SCIM クライアントは、OpenProject の SCIM サーバ API にアクセスできなくなります。 table_component: blank_slate: title: SCIMクライアントがまだ設定されていません @@ -1031,26 +1031,26 @@ ja: other: また、 %{shared_work_packages_link} はこのユーザーと共有されています。 remove_project_membership_or_work_package_shares_too: 直接のメンバーとしてのユーザーだけを削除したい(および共有を維持したい)、またはワークパッケージの共有も削除しますか? will_remove_all_user_access_priveleges: このメンバーを削除すると、プロジェクトへのユーザーのすべてのアクセス権が削除されます。ユーザーはまだサイトの一部として存在します。 - will_remove_all_group_access_priveleges: このメンバを削除すると、プロジェクトに対するグループのすべてのアクセス権が削除されます。グループはサイトの一部としてまだ存在します。 - cannot_delete_inherited_membership: このプロジェクトのメンバーであるグループに所属しているため、このメンバーを削除することはできません。 - cannot_delete_inherited_membership_note_admin_html: "%{administration_settings_link}で、プロジェクトのメンバーとしてグループを削除することも、特定のメンバーをグループから削除することもできます。" - cannot_delete_inherited_membership_note_non_admin: プロジェクトのメンバーとしてグループを削除するか、管理者に連絡してこの特定のメンバーをグループから削除することができます。 + will_remove_all_group_access_priveleges: このメンバーを削除すると、グループのすべてのアクセス権がプロジェクトに削除されます。グループはサイトの一部として存在します。 + cannot_delete_inherited_membership: このメンバーはこのプロジェクトのメンバーであるグループに属しているため、削除できません。 + cannot_delete_inherited_membership_note_admin_html: プロジェクトのメンバーとしてグループを削除するか、 %{administration_settings_link} のグループからこの特定のメンバーを削除することができます。 + cannot_delete_inherited_membership_note_non_admin: プロジェクトのメンバーとしてグループを削除するか、管理者に問い合わせてグループから特定のメンバーを削除することができます。 delete_work_package_shares_dialog: - title: ワーク・パッケージ・シェアの破棄 + title: ワークパッケージの共有の取り消し shared_with_this_user_html: other: "%{all_shared_work_packages_link} はこのユーザーと共有されています。" shared_with_this_group_html: other: "%{all_shared_work_packages_link} はこのグループと共有されています。" shared_with_permission_html: other: "%{shared_work_packages_link} のみが %{shared_role_name} 権限と共有されています。" - revoke_all_or_with_role: すべての共有ワークパッケージ、または %{shared_role_name} 権限を持つワークパッケージのみへのアクセス権を剥奪しますか? - will_not_affect_inherited_shares: "(これは、そのグループと共有しているワークパッケージには影響しません)。" - cannot_remove_inherited: グループで共有されたワークパッケージの共有は削除できません。 - cannot_remove_inherited_with_role: ロール %{shared_role_name} で共有されるワークパッケージは、グループを介して共有され、削除することはできません。 - cannot_remove_inherited_note_admin_html: "%{administration_settings_link}、グループへの共有を取り消すか、グループからこの特定のメンバーを削除することができます。" - cannot_remove_inherited_note_non_admin: グループへの共有を取り消すか、管理者に連絡して特定のメンバーをグループから削除することができます。 - will_revoke_directly_granted_access: このアクションは、グループと共有されているワークパッケージ以外の、すべてのワークパッケージへのアクセス権を剥奪する。 - will_revoke_access_to_all: このアクションは、すべてのアクセス権を剥奪する。 + revoke_all_or_with_role: 共有されたワークパッケージ、または %{shared_role_name} 権限を持つワークパッケージのみへのアクセスを取り消しますか? + will_not_affect_inherited_shares: "(これはグループと共有されているワークパッケージには影響しません)。" + cannot_remove_inherited: グループ間で共有されるワークパッケージは削除できません。 + cannot_remove_inherited_with_role: ワークパッケージとロール %{shared_role_name} が共有されているため、削除できません。 + cannot_remove_inherited_note_admin_html: あなたは、グループへの共有を取り消すか、 %{administration_settings_link} のグループからこの特定のメンバーを削除することができます。 + cannot_remove_inherited_note_non_admin: 共有をグループに取り消すか、管理者に問い合わせてグループから特定のメンバーを削除することができます。 + will_revoke_directly_granted_access: このアクションは、すべてのユーザーへのアクセスを取り消しますが、グループと共有されているワークパッケージです。 + will_revoke_access_to_all: このアクションは、すべてのユーザーへのアクセスを取り消します。 my: access_token: dialog: @@ -1074,7 +1074,7 @@ ja: no_results_title_text: 現在、有効なアクセス トークンはありません。 notice_api_token_revoked: APIトークンが削除されました。新しいトークンを作成するには、APIセクションの作成ボタンを使用してください。 notice_rss_token_revoked: RSSトークンが削除されました。新しいトークンを作成するには、RSSセクションのリンクを使用してください。 - notice_ical_token_revoked: プロジェクト "%{project_name}" のカレンダー "%{calendar_name}" の iCalendar トークン "%{token_name}" が失効しました。このトークンを持つiCalendar URLは無効になりました。 + notice_ical_token_revoked: プロジェクト "%{token_name}" のカレンダー "%{calendar_name}" の iCalendar トークン "%{project_name}" が取り消されました。 このトークンのiCalendar URLは無効です。 password_confirmation_dialog: confirmation_required: You need to enter your account password to confirm this change. title: Confirm your password to continue @@ -1095,7 +1095,7 @@ ja: matrix_check_uncheck_all_in_col_label_html: Toggle all %{module} permissions for %{role} role users: autologins: - prompt: ログインしたまま %{num_days} + prompt: "%{num_days} のログインを維持" sessions: session_name: "%{browser_name} %{browser_version} の %{os_name}" browser: ブラウザ @@ -1109,17 +1109,17 @@ ja: current: Current (this device) title: セッション管理 instructions: You are logged in to your account through the following devices. Revoke sessions that you do not recognise or from devices you do not control. - may_not_delete_current: 現在のセッションを削除することはできません。 + may_not_delete_current: 現在のセッションは削除できません。 deletion_warning: Are you sure you want to revoke this session? You will be logged out on this device. groups: member_in_these_groups: このユーザーは現在以下のグループのメンバーです: no_results_title_text: このユーザーは現在どのグループのメンバーでもありません。 summary_with_more_html: Member of %{names} and %{count_link}. - more: "%{count} もっと見る" + more: "%{count} 以上" summary_html: Member of %{names}. memberships: no_results_title_text: このユーザは現在プロジェクトのメンバーではありません。 - open_profile: プロフィール + open_profile: プロファイルを開く invite_user_modal: invite: 招待 title: @@ -1236,7 +1236,7 @@ ja: right_to_manage_members_missing: 'プレースホルダーユーザを削除する権限がありません。 プレースホルダー ユーザーがメンバーであるすべてのプロジェクトのメンバーを管理する権利はありません。 ' - delete_tooltip: プレースホルダー・ユーザーの削除 + delete_tooltip: プレースホルダー ユーザーを削除 deletion_info: heading_html: Delete placeholder user %{name} data_consequences: 'プレースホルダー ユーザのすべての発生(担当者、担当者、その他のユーザ値など)は、「削除されたユーザー」というアカウントに再割り当てられます。 削除されたすべてのアカウントのデータがこのアカウントに再割り当てられるため、ユーザーが作成したデータと別の削除されたアカウントのデータを区別することはできません。 @@ -1255,11 +1255,11 @@ ja: reactions: action_title: リアクト add_reaction: リアクションを追加 - react_with: "%{reaction} と リアクト" - and_user: および %{user} + react_with: "%{reaction} で反応する" + and_user: と %{user} and_others: other: と %{count} その他 - reaction_by: "%{reaction} によって" + reaction_by: "%{reaction} による" reportings: index: no_results_title_text: 現在、ステータス報告はありません。 @@ -1269,19 +1269,20 @@ ja: status_color_text: | このステータスの色を割り当てたり変更する場合にクリックします。 ステータスボタンに表示され、テーブル内のワークパッケージを強調表示するために使用できます。 - status_default_text: 新しいワークパッケージは、デフォルトでこのタイプに設定される。読み取り専用にはできない。 + status_default_text: 新しいワークパッケージはデフォルトでこのタイプに設定されています。読み取り専用にすることはできません。 status_excluded_from_totals_text: |- - このステータスを持つワークパッケージを、階層内の「作業」、「 - 残作業」、「完了率」の合計から除外するには、このオプションをオンにします。 + このオプションをオンにすると、このステータスのワークパッケージを合計作業量、 + 残作業量、および階層構造で完了させることができます。 status_percent_complete_text_html: |- In [status-based progress calculation mode](setting_url), the % Complete of a work package is automatically set to this value when this status is selected. Ignored in work-based mode. status_readonly_html: | - このステータスを持つワークパッケージを読み取り専用としてマークするには、このオプションをチェックする。 - ステータス以外の属性は変更できません。 + ワークパッケージを読み取り専用としてマークするには、このオプションをオンにしてください。 + ステータスを除いて変更することはできません。 +
      - 注意: 継承された値 (子やリレーションなど) は適用されます。 + メモ: 継承された値 (例えば、子や関連) が適用されます。 index: no_results_title_text: 現在、ワークパッケージのステータスはありません。 no_results_content_text: 新しいステータスを追加 @@ -1291,7 +1292,7 @@ ja: is_readonly: 読み取り専用 excluded_from_totals: 合計から除外 themes: - dark: 暗い + dark: ダーク light: ライト sync_with_os: 自動(OSのテーマ設定に追従) types: @@ -1454,15 +1455,15 @@ ja: could_not_be_saved: '次のワークパッケージを保存できませんでした:' none_could_be_saved: "%{total} ワークパッケージのどれも更新できませんでした。" x_out_of_y_could_be_saved: "%{failing} の %{total} ワークパッケージのうち、 %{success} を更新できませんでした。" - selected_because_descendants: "%{selected} のワークパッケージが選択されたが、合計 %{total} のワークパッケージが影響を受け、その中には子孫も含まれる。" - descendant: 選択された子孫 + selected_because_descendants: "%{selected} ワークパッケージが選択されている間、合計で %{total} ワークパッケージが子孫を含む影響を受けます。" + descendant: 選択された子孫です move: no_common_statuses_exists: 選択されたすべてのワークパッケージに利用できるステータスはありません。 それらの状態は変更できません。 unsupported_for_multiple_projects: 複数のプロジェクトからのワークパッケージの一括移動 / コピーはサポートされていません - current_type_not_available_in_target_project: 'ワークパッケージの現在のタイプがターゲットプロジェクトで有効になっていません。変更しない場合は、ターゲットプロジェクトでタイプを有効にしてください。そうでない場合は、リストからターゲットプロジェクトで使用可能なタイプを選択してください。 + current_type_not_available_in_target_project: 'ターゲット プロジェクトで現在のワークパッケージのタイプが有効になっていません。 変更を行わないようにしたい場合は、対象プロジェクトのタイプを有効にしてください。 それ以外の場合は、リストからターゲット プロジェクトで使用可能なタイプを選択します。 ' - bulk_current_type_not_available_in_target_project: 'ワークパッケージの現在のタイプがターゲットプロジェクトで有効になっていません。変更しない場合は、ターゲットプロジェクトでタイプを有効にしてください。そうでない場合は、リストからターゲットプロジェクトで使用可能なタイプを選択してください。 + bulk_current_type_not_available_in_target_project: '現在のタイプのワークパッケージはターゲット プロジェクトで有効になっていません。 変更を行わないようにしたい場合は、対象プロジェクトのタイプを有効にしてください。 それ以外の場合は、リストからターゲット プロジェクトで使用可能なタイプを選択します。 ' sharing: @@ -1488,9 +1489,9 @@ ja: no_results_title_text: 現在、有効なバージョンはありません。 work_package_relations_tab: index: - action_bar_title: 他のワークパッケージとのリレーションを追加して、それらの間にリンクを作成する。 - no_results_title_text: 現在、利用可能な関係はない。 - blankslate_heading: 関係なし + action_bar_title: 他のワークパッケージにリレーションを追加して、その間にリンクを作成します。 + no_results_title_text: 現在利用可能なリレーションはありません。 + blankslate_heading: リレーションなし blankslate_description: このワークパッケージにはまだリレーションがありません。 label_add_child_button: 子要素 label_add_x: "%{x} を追加" diff --git a/config/locales/crowdin/js-ca.yml b/config/locales/crowdin/js-ca.yml index 0cd230a4873..a8234eddcfa 100644 --- a/config/locales/crowdin/js-ca.yml +++ b/config/locales/crowdin/js-ca.yml @@ -109,7 +109,7 @@ ca: button_save: Desa button_settings: Configuració button_uncheck_all: Desmarca-ho tot - button_update: Actualitzar + button_update: Actualitza button_export-atom: Descarregar Atom button_generate_pdf: Generate PDF button_create: Crear diff --git a/config/locales/crowdin/js-de.yml b/config/locales/crowdin/js-de.yml index 68e7adcb98e..86a946bc6f1 100644 --- a/config/locales/crowdin/js-de.yml +++ b/config/locales/crowdin/js-de.yml @@ -143,7 +143,7 @@ de: description_available_columns: Verfügbare Spalten description_current_position: 'Sie sind hier: ' description_select_work_package: 'Arbeitspaket #%{id} auswählen' - description_subwork_package: 'Unteraufgabe von Arbeitspaket #%{id}' + description_subwork_package: 'Kind von Arbeitspaket #%{id}' editor: revisions: Lokale Änderungen anzeigen no_revisions: Keine lokalen Änderungen gefunden @@ -460,7 +460,7 @@ de: label_total_progress: "%{percent}% Gesamtfortschritt" label_total_amount: 'Gesamt: %{amount}' label_updated_on: aktualisiert am - label_value_derived_from_children: "(aggregierter Wert von Unteraufgaben)" + label_value_derived_from_children: "(aggregierter Wert von Kindelementen)" label_children_derived_duration: Aggregierte Dauer der Unteraufgaben label_warning: Warnung label_work_package: Arbeitspaket @@ -790,7 +790,7 @@ de: title: Neues Arbeitspaket header: 'Neu: %{type}' header_no_type: Neues Arbeitspaket (Typ noch nicht gesetzt) - header_with_parent: 'Neu: %{type} (Unteraufgabe von %{parent_type} #%{id})' + header_with_parent: 'Neu: %{type} (Kind von %{parent_type} #%{id})' button: Erstellen duplicate: title: Arbeitspaket duplizieren diff --git a/config/locales/crowdin/js-ja.yml b/config/locales/crowdin/js-ja.yml index be306617859..e92442dacf1 100644 --- a/config/locales/crowdin/js-ja.yml +++ b/config/locales/crowdin/js-ja.yml @@ -34,12 +34,12 @@ ja: draggable_hint: | 埋め込み画像または添付ファイルをエディタにドラッグします。 ドラッグしつづけると閉じているエディタ領域が開きます。 - quarantined_hint: ウイルスが発見されたように、ファイルは隔離されています。ダウンロードできません。 + quarantined_hint: ウイルスが発見されたため,ファイルは隔離されています。ダウンロードできません。 autocomplete_ng_select: - add_tag: アイテムを追加 + add_tag: 項目を追加 clear_all: すべてクリア loading: 読み込み中... - not_found: アイテムが見つかりません + not_found: 見つかりませんでした type_to_search: 検索キーワードを入力 autocomplete_select: placeholder: @@ -71,7 +71,7 @@ ja: button_back_to_list_view: リスト表示に戻る button_cancel: キャンセル button_close: 閉じる - button_change_project: 別のプロジェクトに移動 + button_change_project: 他のプロジェクトに移る button_check_all: 全てを選択 button_configure-form: フォームを設定 button_confirm: 確認 @@ -79,7 +79,7 @@ ja: button_copy: コピー button_copy_to_clipboard: クリップボードにコピー button_copy_link_to_clipboard: クリップボードにリンクをコピー - button_copy_to_other_project: 別のプロジェクトで複製 + button_copy_to_other_project: 別のプロジェクトで複製する button_custom-fields: カスタムフィールド button_delete: 削除 button_delete_watcher: ウォッチャーを削除 @@ -101,7 +101,7 @@ ja: button_open_fullscreen: 全画面表示を開く button_show_cards: カードビュー表示 button_show_list: リストビュー表示 - button_show_table: テーブルビューを表示 + button_show_table: テーブル表示 button_show_gantt: ガントビューを表示 button_show_fullscreen: 全画面表示 button_more_actions: その他の操作 @@ -111,7 +111,7 @@ ja: button_uncheck_all: 全てを選択解除 button_update: 更新 button_export-atom: Atomをダウンロード - button_generate_pdf: PDFを生成 + button_generate_pdf: PDF作成 button_create: 作成 card: add_new: 新規カード追加 @@ -145,8 +145,8 @@ ja: description_select_work_package: 'ワークパッケージを選択 #%{id}' description_subwork_package: 'ワークパッケージの子 #%{id}' editor: - revisions: ローカルの変更を表示 - no_revisions: ローカルの変更は見つかりませんでした + revisions: ローカルの修正を表示 + no_revisions: ローカルでの修正は見つからず preview: プレビューモードの切り替え source_code: Markdown ソースモードの切り替え error_saving_failed: '次のエラーで文書を保存するのに失敗しました: %{error}' @@ -159,7 +159,7 @@ ja: attribute_reference: macro_help_tooltip: このテキストセグメントはマクロによって動的にレンダリングされています。 not_found: 要求されたリソースが見つかりませんでした - nested_macro: このマクロは %{model} %{id} を再帰的に参照しています。 + nested_macro: このマクロは %{model} %{id}を再帰的に参照している。 invalid_attribute: 選択した属性 '%{name}' は存在しません。 child_pages: button: 子ページへのリンク @@ -216,10 +216,10 @@ ja: calendar: empty_state_header: 休業日 empty_state_description: 休業日が定義されていません。「休業日を追加」ボタンをクリックして日付を追加してください。 - new_date: "(新規)" + new_date: "(新)" add_non_working_day: 休業日を追加 - already_added_error: この日付の非作業日はすでに存在します。それぞれの日付に1つの非作業日が作成されます。 - change_button: 保存してスケジュールを変更 + already_added_error: この日付の非営業日はすでに存在します。一意の日付に対して作成できる非営業日は1つだけです。 + change_button: 保存して再スケジュール change_title: 営業日を変更する removed_title: 以下の日を非稼働日リストから削除します: change_description: 営業日とみなす曜日を変更すると、このサイト内のすべてのプロジェクトのすべてのワークパッケージの開始日と終了日に影響を与える可能性があります。 @@ -301,14 +301,14 @@ ja: ical_sharing_modal: title: カレンダーを購読する inital_setup_error_message: データ取得中にエラーが発生しました。 - description: URL(iCalendar)を使って外部クライアントでこのカレンダーを購読し、そこから最新のワークパッケージ情報を見ることができます。 - warning: このURLを他のユーザーと共有しないでください。このリンクがあれば、誰でもアカウントやパスワードなしでワークパッケージの詳細を見ることができます。 - token_name_label: どこで使うのですか? + description: URL(iCalendar)を使用して、外部クライアントでこのカレンダーを購読し、そこから最新のワークパッケージ情報を表示することができます。 + warning: このURLを他のユーザーと共有しないでください。このリンクを持つ誰でもアカウントやパスワードなしでワークパッケージの詳細を表示することができます。 + token_name_label: どこで使うのですか?? token_name_placeholder: 名前を入力してください。例:"電話" token_name_description_text: If you subscribe to this calendar from multiple devices, this name will help you distinguish between them in your access tokens list. copy_url_label: URLをコピー - ical_generation_error_text: カレンダー URL の生成中にエラーが発生しました。 - success_message: URL "%{name}" は正常にクリップボードにコピーされました。サブスクリプションを完了するためにカレンダークライアントに貼り付けてください。 + ical_generation_error_text: カレンダーのURL生成時にエラーが発生しました。 + success_message: URL "%{name}" がクリップボードにコピーされました。カレンダークライアントに貼り付けて購読を完了してください。 label_activate: 有効にする label_assignee: 担当者 label_assignee_alt_text: This work package is assigned to %{name} @@ -321,7 +321,7 @@ ja: label_add_row_before: 前に行を追加 label_add_selected_columns: 選択した列を追加 label_added_by: 追加した人 - label_added_time_by: %{author} が %{age} に追加しました + label_added_time_by: 追加 %{author} %{age} label_ago: "○日前" label_all: 全て label_all_projects: すべてのプロジェクト @@ -432,7 +432,7 @@ ja: label_repository_plural: リポジトリ label_resize_project_menu: Resize project menu label_save_as: 名前をつけて保存 - label_search_columns: 列を検索 + label_search_columns: 列を検索する label_select_watcher: ウォッチャーを選択... label_selected_filter_list: 選択されたフィルタ label_show_attributes: すべての属性を表示 @@ -470,8 +470,8 @@ ja: label_watch_work_package: ワークパッケージをウォッチ label_watcher_added_successfully: ウォッチャーが正常に追加されました ! label_watcher_deleted_successfully: ウォッチャーが正常に削除されました ! - label_work_package_details_you_are_here: あなたは %{tab} %{type} %{subject} のタブにいます。 - label_work_package_context_menu: ワークパッケージのコンテキスト メニュー + label_work_package_details_you_are_here: あなたは %{type} %{subject}の %{tab} タブを表示しています。 + label_work_package_context_menu: ワークパッケージのコンテキストメニュー label_unwatch: ウォッチしない label_unwatch_work_package: ワークパッケージのウォッチを削除 label_uploaded_by: アップロードした人 @@ -502,7 +502,7 @@ ja: label_version_plural: バージョン label_view_has_changed: このビューには未保存の変更があります。 クリックすると保存します。 help_texts: - show_modal: ヘルプテキストを表示 + show_modal: ヘルプテキストを表示する onboarding: buttons: skip: スキップ @@ -510,7 +510,7 @@ ja: got_it: 了承 steps: help_menu: ヘルプ(?)メニューは、その他のヘルプリソースを提供します。ここでは、ユーザーガイド、役立つハウツービデオなどを見つけることができます。
      OpenProjectでの作業をお楽しみください! - members: 新しい メンバー をプロジェクトに招待します。 + members: 新しいメンバーをプロジェクトに招待する。 quick_add_button: ヘッダーナビゲーションにあるプラス(+)アイコンをクリックして、新規プロジェクトを作成したり、同僚を招待したりできます。 sidebar_arrow: プロジェクトのメインメニューに戻るには、左上の矢印を使います。 welcome: 3分間のイントロダクションツアーで、最も重要な機能を学びましょう。
      最後までステップを完了することをお勧めします。ツアーはいつでも再開できます。 @@ -587,12 +587,12 @@ ja: title: 通知設定 pagination: no_other_page: このページだけです。 - pages_skipped: ページがスキップされました。 + pages_skipped: ページスキップ。 page_navigation: ページネーション・ナビゲーション per_page_navigation: ページ毎のアイテム選択 pages: page_number: ページ %{number} - show_per_page: ページあたり %{number} を表示 + show_per_page: ページごとに %{number} placeholders: default: "-" subject: ここにタイトルを入力します @@ -602,7 +602,7 @@ ja: project: autocompleter: label: プロジェクト名の入力補完 - click_to_switch_to_project: 'プロジェクト: %{projectname}' + click_to_switch_to_project: プロジェクト: %{projectname} context: プロジェクトのコンテキスト not_available: プロジェクトなし required_outside_context: 'ワークパッケージを作成するプロジェクトを選択して、すべての属性を確認してください。 上記で有効になっているタイプのプロジェクトのみ選択できます。 @@ -1087,7 +1087,7 @@ ja: toggle_title: ベースライン clear: クリア apply: 適用 - header_description: 過去のいずれかの時点からこのリストに加えられた変更を強調する。 + header_description: 過去の選択した時点からこのリストに加えられた変更をハイライト show_changes_since: 以降の変更を表示する help_description: ベースラインの基準タイムゾーン。 time_description: '現地時間: %{datetime}' diff --git a/config/locales/crowdin/js-no.yml b/config/locales/crowdin/js-no.yml index c261aa86e33..5595dae373e 100644 --- a/config/locales/crowdin/js-no.yml +++ b/config/locales/crowdin/js-no.yml @@ -109,7 +109,7 @@ button_save: Lagre button_settings: Innstillinger button_uncheck_all: Avmerk alle - button_update: Oppdater + button_update: Oppdatèr button_export-atom: Last ned Atom button_generate_pdf: Generate PDF button_create: Opprett diff --git a/config/locales/crowdin/js-ro.yml b/config/locales/crowdin/js-ro.yml index ac2dc0963f8..05b6cff6b0c 100644 --- a/config/locales/crowdin/js-ro.yml +++ b/config/locales/crowdin/js-ro.yml @@ -109,7 +109,7 @@ ro: button_save: Salvează button_settings: Setări button_uncheck_all: Deselectează tot - button_update: Actualizează + button_update: Actualizare button_export-atom: Descarcă Atom button_generate_pdf: Generează PDF button_create: Creează diff --git a/config/locales/crowdin/js-ru.yml b/config/locales/crowdin/js-ru.yml index 35ccc335455..2420a7ae5af 100644 --- a/config/locales/crowdin/js-ru.yml +++ b/config/locales/crowdin/js-ru.yml @@ -109,7 +109,7 @@ ru: button_save: Сохранить button_settings: Настройки button_uncheck_all: Снять все отметки - button_update: Обновить + button_update: Обновление button_export-atom: Скачать Atom button_generate_pdf: Создать PDF button_create: Создать diff --git a/config/locales/crowdin/js-vi.yml b/config/locales/crowdin/js-vi.yml index f567b660ecf..4e34fc537bc 100644 --- a/config/locales/crowdin/js-vi.yml +++ b/config/locales/crowdin/js-vi.yml @@ -109,7 +109,7 @@ vi: button_save: lưu lại button_settings: cài đặt button_uncheck_all: Bỏ chọn tất cả - button_update: cập nhật + button_update: Cập Nhật button_export-atom: Tải xuống nguyên tử button_generate_pdf: Tạo PDF button_create: Tạo mới diff --git a/config/locales/crowdin/ro.yml b/config/locales/crowdin/ro.yml index 9725c2b06df..548bb6e12fa 100644 --- a/config/locales/crowdin/ro.yml +++ b/config/locales/crowdin/ro.yml @@ -3927,7 +3927,7 @@ ro: label_duplicated_by: dublat de label_duplicate: duplicat label_duplicates: dublează - label_edit: Editează + label_edit: Editare label_edit_x: 'Editare: %{x}' label_view_x: 'View: %{x}' label_enable_multi_select: Comutare selecție multiplă @@ -3984,7 +3984,7 @@ ro: label_global_roles: Roluri globale label_git_path: Calea catre directorul .git label_greater_or_equal: ">=" - label_group_by: Grupează după + label_group_by: Grupare după label_group_new: Grupare nouă label_group: Grup label_group_named: Grup %{name} diff --git a/config/locales/crowdin/sl.yml b/config/locales/crowdin/sl.yml index eb423017a30..8f3113c338a 100644 --- a/config/locales/crowdin/sl.yml +++ b/config/locales/crowdin/sl.yml @@ -2987,8 +2987,8 @@ sl: - avgust - september - oktober - - november - - december + - November + - December order: - :leto - :mesec diff --git a/config/locales/crowdin/uk.yml b/config/locales/crowdin/uk.yml index 2352d2e0e6f..053862e71bc 100644 --- a/config/locales/crowdin/uk.yml +++ b/config/locales/crowdin/uk.yml @@ -4072,7 +4072,7 @@ uk: label_index_by_title: Індекс за назвою label_information: Інформація label_information_plural: Інформація - label_installation_guides: Інструкції із встановлення + label_installation_guides: Інструкції зі встановлення label_integer: Ціле число label_interface: Інтерфейс label_internal: Власне diff --git a/config/locales/crowdin/vi.yml b/config/locales/crowdin/vi.yml index 54247d69185..aaadc32a174 100644 --- a/config/locales/crowdin/vi.yml +++ b/config/locales/crowdin/vi.yml @@ -2546,7 +2546,7 @@ vi: base: 'Lỗi tổng quan:' body: cơ thể category: thể loại - comment: bình luận + comment: Nhận xét comments: bình luận content: Nội dung color: màu sắc @@ -4244,7 +4244,7 @@ vi: label_used_by: Được dùng bởi label_used_by_types: Được sử dụng bởi các loại label_used_in_projects: Được sử dụng trong các dự án - label_user: người dùng + label_user: Người dùng label_user_and_permission: Người dùng và quyền label_user_named: Người dùng %{name} label_user_activity_html: "%{value}'s activity" diff --git a/config/locales/crowdin/zh-CN.seeders.yml b/config/locales/crowdin/zh-CN.seeders.yml index 30e63f026bc..212a0e3692c 100644 --- a/config/locales/crowdin/zh-CN.seeders.yml +++ b/config/locales/crowdin/zh-CN.seeders.yml @@ -97,7 +97,7 @@ zh-CN: demo-project: name: 演示项目 status_explanation: 所有任务都按计划进行。相关人员均知晓各自任务。系统已完全建立。 - description: 这是对此演示 Scrum 项目目标的简短摘要。 + description: 这是对此演示项目目标的简短摘要。 news: item_0: title: 欢迎来到您的演示项目 @@ -201,7 +201,7 @@ zh-CN: scrum-project: name: Scrum 项目 status_explanation: 所有任务都按计划进行。相关人员均知晓各自任务。系统已完全建立。 - description: 这是对此演示 Scrum 项目目标的简短摘要。 + description: 这是对此演示Scrum项目目标的简短摘要。 news: item_0: title: 欢迎来到您的 Scrum 演示项目 diff --git a/config/locales/crowdin/zh-CN.yml b/config/locales/crowdin/zh-CN.yml index 4d20b6e2bd2..eaeb5908f24 100644 --- a/config/locales/crowdin/zh-CN.yml +++ b/config/locales/crowdin/zh-CN.yml @@ -89,7 +89,7 @@ zh-CN: token_caption: 要详细了解如何激活企业版,请查阅我们的[文档](docs_url)。 add_token: 上传企业版支持令牌 replace_token: 替换您当前的支持令牌 - order: 订购本地部署版的 Enterprise edition + order: 订购本地部署的 Enterprise edition paste: 粘贴您企业版的支持令牌 required_for_feature: 此功能仅限具激活的企业版支持令牌的订阅者使用。 enterprise_link: 如需了解详细信息,请单击此处。 @@ -1683,7 +1683,7 @@ zh-CN: page: 页 row_count: 行数 column_count: 列数 - widgets: 微件 + widgets: 小部件 journal: notes: 备注 cause_type: Cause 类型 @@ -4156,7 +4156,7 @@ zh-CN: label_revision_id: 修订版本 %{value} label_revision_plural: 修订 label_roadmap: 路线图 - label_roadmap_edit: 编辑路线图%{name} + label_roadmap_edit: 编辑路线图 %{name} label_roadmap_due_in: "%{value} 到期" label_roadmap_no_work_packages: 该版本没有工作包。 label_roadmap_overdue: "%{value} 超时" @@ -4916,7 +4916,7 @@ zh-CN: managed: 在 OpenProject 中创建新的存储库 storage: not_available: 磁盘存储开销不可用于此存储库。 - update_timeout: 在 N 分钟内保留存储库最后所需的磁盘空间信息。由于计算存储库所需的磁盘空间可能增加系统开销,增加该值可以减少性能影响。 + update_timeout: 在 N 分钟内保留存储库最后所需磁盘空间的信息。由于计算存储库所需的磁盘空间可能增加系统开销,增加该值可以减少性能影响。 oauth_application_details_html: 关闭此窗口后,将无法再次访问客户端密钥值。请将这些值复制到 Nextcloud OpenProject 集成设置中: oauth_application_details_link_text: 转到设置页面 setup_documentation_details: 如果您在配置新文件存储方面需要帮助,请查看文档: @@ -5144,7 +5144,7 @@ zh-CN: setting_session_ttl_hint: 当设置的值低于5时,其作用类似于禁用。 setting_session_ttl_enabled: 会话过期 setting_start_of_week: 一周起始日 - setting_sys_api_enabled: 启用存储库管理网页服务 + setting_sys_api_enabled: 启用版本库管理 web 服务 setting_sys_api_description: 存储库管理网页服务提供了集成的,用户授权的存储库访问。 setting_time_format: 时间 setting_total_percent_complete_mode: 计算 完成% 层次结构总数 @@ -5630,7 +5630,7 @@ zh-CN: warning_user_limit_reached_admin_html: '添加额外的用户将超出当前限值。请[升级您的方案](upgrade_url),以确保外部用户能够访问此实例。 ' - warning_user_limit_reached_instructions: '您已达到用户限制(%{current}/%{max} 活跃用户)。请联系 sales@openproject.com 升级您的企业版计划以添加额外用户。 + warning_user_limit_reached_instructions: '您达到了用户限制(%{current}/%{max}活跃用户)。 请联系sales@openproject.com以升级您的Enterprise edition计划并添加其他用户。 ' warning_protocol_mismatch_html: '' diff --git a/config/locales/crowdin/zh-TW.yml b/config/locales/crowdin/zh-TW.yml index 9f501ff5629..8e30142ba6f 100644 --- a/config/locales/crowdin/zh-TW.yml +++ b/config/locales/crowdin/zh-TW.yml @@ -3841,7 +3841,7 @@ zh-TW: label_filter_add: 新增條件 label_filter_by: 篩選條件: label_filter_any_name_attribute: 名稱屬性 - label_filter_plural: 篩選條件 + label_filter_plural: 篩選器 label_filters_toggle: 顯示/隱藏篩選條件 label_float: 浮點數 label_folder: 資料夾 @@ -3855,8 +3855,8 @@ zh-TW: label_global_modules: 全域模組 label_global_roles: 全域角色 label_git_path: ".git 目錄的路徑" - label_greater_or_equal: 之前 - label_group_by: 分類 + label_greater_or_equal: ">=" + label_group_by: 分組依據 label_group_new: 新增群組 label_group: 群組 label_group_named: 群組名稱 %{name} @@ -3868,7 +3868,7 @@ zh-TW: label_hierarchy: 階層 label_hierarchy_leaf: 頁面結構頁 label_home: Home - label_subject_or_id: 名稱或 id + label_subject_or_id: 主旨或 id label_calendar_subscriptions: 訂閱行事曆 label_identifier: 識別碼 label_project_identifier: Project identifier @@ -3920,7 +3920,7 @@ zh-TW: label_latest_revision_plural: 最新版本 label_ldap_authentication: LDAP 認證 label_learn_more: 了解更多 - label_less_or_equal: 之後 + label_less_or_equal: "<=" label_less_than_ago: 幾天內 label_link_url: 連結(URL) label_list: 清單 diff --git a/modules/backlogs/config/locales/crowdin/fr.yml b/modules/backlogs/config/locales/crowdin/fr.yml index a257687070d..193ca10e8b7 100644 --- a/modules/backlogs/config/locales/crowdin/fr.yml +++ b/modules/backlogs/config/locales/crowdin/fr.yml @@ -43,7 +43,7 @@ fr: user_preference: backlogs_versions_default_fold_state: Afficher les sprints repliés work_package: - backlog_bucket: Backlog Bucket + backlog_bucket: Seau de backlog backlogs_work_package_type: Type de backlog position: Position sprint: Sprint @@ -61,10 +61,10 @@ fr: share_all_projects_already_taken: ne peut pas être défini car le projet "%{name}" est déjà partagé avec tous les projets. share_all_projects_already_taken_anonymous: ne peut pas être défini parce qu'un autre projet est déjà partagé avec tous les projets. work_package: - backlog_bucket_xor_sprint: cannot be assigned to both a sprint and a backlog bucket. + backlog_bucket_xor_sprint: ne peut pas être affecté à la fois à un sprint et à un compartiment de backlog. attributes: backlog_bucket: - backlog_bucket_from_another_project: must belong to the same project as the work package. + backlog_bucket_from_another_project: doit appartenir au même projet que le work package. blocks_ids: can_only_contain_work_packages_of_current_sprint: ne peut contenir que des ID de lots de travaux du sprint actuel. must_block_at_least_one_work_package: doit contenir l'ID d'au moins un ticket. @@ -117,10 +117,10 @@ fr: title: Les paramètres d'administration du backlog évoluent text: Nous sommes en train de redessiner le module Backlogs. Les paramètres d'administration pour les sprints et les backlogs seront visibles ici dans un futur proche. Les paramètres au niveau du projet restent disponibles. backlog_bucket_component: - blankslate_title: Backlog bucket is empty + blankslate_title: Le panier de commandes est vide blankslate_description: Faites glisser les éléments ici pour les ajouter. backlog_bucket_item_component: - label_actions: Work package actions + label_actions: Actions du paquet de travail sprint_component: blankslate_title: "%{name} est vide" blankslate_description: Aucun élément n'a encore été planifié. Faites glisser les éléments ici pour les ajouter. @@ -152,15 +152,15 @@ fr: receive_shared_no_actions_description_text: Ce projet reçoit des sprints partagés d'un autre projet, mais aucun n'est disponible pour le moment. settings_link_text: paramètres du projet backlog_bucket_menu_component: - label_actions: Backlog bucket actions + label_actions: Actions de la corbeille du carnet de commandes action_menu: - edit_backlog_bucket: Edit backlog bucket - delete_backlog_bucket: Delete backlog bucket + edit_backlog_bucket: Modifier le panier de commandes en attente + delete_backlog_bucket: Supprimer un seau d'arriérés backlog_bucket_header_component: label_work_package_count: - zero: No stories in backlog bucket - one: "%{count} story in backlog bucket" - other: "%{count} stories in backlog bucket" + zero: Pas d'histoires dans le seau du carnet de commandes + one: "%{count} histoire dans le seau du carnet de commandes" + other: "%{count} histoires dans le seau du carnet de commandes" sprint_header_component: label_start_sprint: Début label_complete_sprint: Terminé @@ -201,8 +201,8 @@ fr: story_points: Story points story_points_ideal: Story points (idéal) label_backlog: Backlog - label_backlog_bucket_edit: Edit backlog bucket - label_backlog_bucket_new: New backlog bucket + label_backlog_bucket_edit: Modifier le panier de commandes en attente + label_backlog_bucket_new: Nouveau seau d'arriérés label_inbox: Boîte de réception label_backlogs: Backlogs label_burndown_chart: Graphique burndown diff --git a/modules/backlogs/config/locales/crowdin/ro.yml b/modules/backlogs/config/locales/crowdin/ro.yml index a5b51c25772..649cbc1d1c0 100644 --- a/modules/backlogs/config/locales/crowdin/ro.yml +++ b/modules/backlogs/config/locales/crowdin/ro.yml @@ -44,7 +44,7 @@ ro: backlogs_versions_default_fold_state: Show sprints folded work_package: backlog_bucket: Backlog Bucket - backlogs_work_package_type: Tipul de restante + backlogs_work_package_type: Tip restanță position: Poziție sprint: Sprint story_points: Puncte diff --git a/modules/backlogs/config/locales/crowdin/th.yml b/modules/backlogs/config/locales/crowdin/th.yml index 8e6500b9838..8869c5cbade 100644 --- a/modules/backlogs/config/locales/crowdin/th.yml +++ b/modules/backlogs/config/locales/crowdin/th.yml @@ -31,13 +31,13 @@ th: finish_date: วันที่เสร็จสิ้น goal: เป้าหมายสปริ๊นต์ name: ชื่อสปรินต์ - sharing: Sharing + sharing: การแชร์ statuses: in_planning: In planning active: Active - completed: Completed + completed: สำเร็จ! project: - sprint_sharing: Sprint sharing + sprint_sharing: การแชร์สปรินต์ sprint: duration: ระยะเวลาการสปรินต์ user_preference: @@ -46,7 +46,7 @@ th: backlog_bucket: Backlog Bucket backlogs_work_package_type: ประเภทงานค้าง position: ตำแหน่ง - sprint: Sprint + sprint: สปรินท์ story_points: '' errors: messages: diff --git a/modules/backlogs/config/locales/crowdin/zh-TW.yml b/modules/backlogs/config/locales/crowdin/zh-TW.yml index ca2c47b3091..b43bafeb1e1 100644 --- a/modules/backlogs/config/locales/crowdin/zh-TW.yml +++ b/modules/backlogs/config/locales/crowdin/zh-TW.yml @@ -22,7 +22,7 @@ --- zh-TW: plugin_openproject_backlogs: - name: OpenProject待辦事項 + name: OpenProject代辦事項 description: 此模組新增了讓敏捷團隊能夠在 Scrum 專案中使用 OpenProject 的功能。 activerecord: attributes: diff --git a/modules/bim/config/locales/crowdin/fr.yml b/modules/bim/config/locales/crowdin/fr.yml index 5455745bd86..8e554d8d33c 100644 --- a/modules/bim/config/locales/crowdin/fr.yml +++ b/modules/bim/config/locales/crowdin/fr.yml @@ -60,7 +60,7 @@ fr: perform_description: Voulez-vous importer ou mettre à jour les problèmes repris ci-dessus ? replace_with_system_user: Les remplacer par l'utilisateur "Système" import_as_system_user: Les importer comme utilisateur "Système". - what_to_do: Que voulez-vous faire ? + what_to_do: Que voulez-vous faire? work_package_has_newer_changes: Obsolète ! Ce sujet n'a pas été mis à jour, car les derniers changements sur le serveur étaient plus récents que la "ModifiedDate" du sujet importé. Toutefois, les commentaires sur le sujet ont été importés. bcf_file_not_found: Impossible de localiser le fichier BCF. Veuillez recommencer le processus de téléversement. export: diff --git a/modules/budgets/config/locales/crowdin/cs.yml b/modules/budgets/config/locales/crowdin/cs.yml index 26c4d69dcfc..872f2a5ea8e 100644 --- a/modules/budgets/config/locales/crowdin/cs.yml +++ b/modules/budgets/config/locales/crowdin/cs.yml @@ -28,7 +28,7 @@ cs: budget: author: Autor available: Dostupné - budget: Plánované + budget: Rozpočet budget_ratio: Stráveno (poměr) description: Popis spent: Strávený čas diff --git a/modules/costs/config/locales/crowdin/de.yml b/modules/costs/config/locales/crowdin/de.yml index 7f3c2619045..0d4609778e6 100644 --- a/modules/costs/config/locales/crowdin/de.yml +++ b/modules/costs/config/locales/crowdin/de.yml @@ -211,7 +211,7 @@ de: setting_costs_currency_format_prefix: Vor der Zahl (z.B. EUR 100) setting_costs_currency_format_suffix: Nach der Zahl (z.B. 100 EUR) setting_enforce_tracking_start_and_end_times: Start- und Endzeiten erforderlich - setting_enforce_without_allow: Start- und Endzeiten können nicht verpflichtend erfasst werden, ohne die Erfassung zu erlauben + setting_enforce_without_allow: Start und Endzeiten können nur erforderlich sein, wenn ihre Angabe erlaubt ist setting_allow_tracking_start_and_end_times_caption: Erlaubt es bei der Zeitbuchung die genaue Start- und Endzeiten der Buchung zu erfassen. setting_enforce_tracking_start_and_end_times_caption: Erfordert, dass bei Zeitbuchungen genaue Start- und Endzeiten erfasst werden. text_assign_time_and_cost_entries_to_project: Gebuchte Aufwände dem Projekt zuweisen diff --git a/modules/costs/config/locales/crowdin/ja.yml b/modules/costs/config/locales/crowdin/ja.yml index 566ac367e71..0b233b24bf3 100644 --- a/modules/costs/config/locales/crowdin/ja.yml +++ b/modules/costs/config/locales/crowdin/ja.yml @@ -209,7 +209,7 @@ ja: setting_enforce_tracking_start_and_end_times: 開始/終了時間を必須とする setting_enforce_without_allow: 開始時間と終了時間を要求することは許可されていないとできません setting_allow_tracking_start_and_end_times_caption: 時間を記録する際に、開始時間と終了時間を入力できるようにする。 - setting_enforce_tracking_start_and_end_times_caption: 時間を記録する際、開始時間と終了時間の入力を必須にします。 + setting_enforce_tracking_start_and_end_times_caption: 時間を記録する際、開始時間と終了時間の入力が必須となる。 text_assign_time_and_cost_entries_to_project: 報告された時間とコストをプロジェクトに割り当てる text_destroy_cost_entries_question: 削除しようとしているワークパッケージが%{cost_entries} 件報告されました。どうしますか? text_destroy_time_and_cost_entries: 報告された時間とコストを削除する diff --git a/modules/job_status/config/locales/crowdin/fr.yml b/modules/job_status/config/locales/crowdin/fr.yml index d36f03aec46..40932765d38 100644 --- a/modules/job_status/config/locales/crowdin/fr.yml +++ b/modules/job_status/config/locales/crowdin/fr.yml @@ -6,7 +6,7 @@ fr: description: Liste et état des tâches d'arrière-plan. job_status_dialog: download_starts: Le téléchargement devrait démarrer automatiquement. - click_to_download: Or [click here](download_url) to download. + click_to_download: Ou [cliquez ici](download_url) pour télécharger. title: Statut de la tâche en arrière-plan redirect: Vous allez être redirigé. redirect_link: Veuillez cliquer ici pour continuer. diff --git a/modules/ldap_groups/config/locales/crowdin/zh-CN.yml b/modules/ldap_groups/config/locales/crowdin/zh-CN.yml index 7773af82ef3..b0ca3578ab6 100644 --- a/modules/ldap_groups/config/locales/crowdin/zh-CN.yml +++ b/modules/ldap_groups/config/locales/crowdin/zh-CN.yml @@ -7,7 +7,7 @@ zh-CN: description: 与 OpenProject 组同步 LDAP 组以管理用户,更改他们的权限以便不同组的用户管理。 plugin_openproject_ldap_groups: name: OpenProject LDAP 组 - description: LDAP组成员同步。 + description: LDAP 组成员同步。 activerecord: attributes: ldap_groups/synchronized_group: diff --git a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml index 64357b6ba93..874edfa368f 100644 --- a/modules/ldap_groups/config/locales/crowdin/zh-TW.yml +++ b/modules/ldap_groups/config/locales/crowdin/zh-TW.yml @@ -16,7 +16,7 @@ zh-TW: ldap_auth_source: LDAP 連線 sync_users: 同步使用者 ldap_groups/synchronized_filter: - filter_string: LDAP篩選條件 + filter_string: 簡約登入目錄制約(LDAP)篩選 auth_source: 驗證來源 ldap_auth_source: LDAP 連線 group_name_attribute: 群組名字屬性 diff --git a/modules/meeting/config/locales/crowdin/cs.yml b/modules/meeting/config/locales/crowdin/cs.yml index de02fe5cd9f..b895aa02df4 100644 --- a/modules/meeting/config/locales/crowdin/cs.yml +++ b/modules/meeting/config/locales/crowdin/cs.yml @@ -569,7 +569,7 @@ cs: ' permission_edit_meetings: Upravit schůzku - permission_delete_meetings: Odstranit schůzky + permission_delete_meetings: Smazat schůzku permission_view_meetings: Zobrazit schůzky permission_manage_agendas: Správa zápisů permission_manage_agendas_explanation: Allows creating, editing and removing agenda items diff --git a/modules/meeting/config/locales/crowdin/de.yml b/modules/meeting/config/locales/crowdin/de.yml index 59ec80a6e21..50c027711f7 100644 --- a/modules/meeting/config/locales/crowdin/de.yml +++ b/modules/meeting/config/locales/crowdin/de.yml @@ -23,8 +23,8 @@ --- de: plugin_openproject_meeting: - name: OpenProject Besprechung - description: Besprechungen für OpenProject + name: OpenProject Besprechungen + description: Dieses Modul fügt Funktionen zur Unterstützung von Besprechungen zu OpenProject hinzu. Sie können Besprechungen planen und dabei Teilnehmende aus demselben Projekt auswählen, die an der Besprechung teilnehmen sollen. Es kann eine Tagesordnung erstellt und an die Eingeladenen gesendet werden. Nach der Besprechung können die Teilnehmenden ausgewählt und Protokolle auf der Grundlage der Tagesordnung erstellt werden. Schließlich kann das Protokoll an alle Teilnehmenden und Eingeladenen gesendet werden. activerecord: attributes: meeting: @@ -88,7 +88,7 @@ de: section_not_belong_to_meeting: Die Sektion gehört nicht zur gleichen Besprechung. user_invalid: ist kein gültiger Teilnehmer. recurring_meeting_interim_response: - not_an_occurrence: ist keine gültige Uhrzeit für diese wiederkehrende Besprechung + not_an_occurrence: ist keine gültige Uhrzeit für dieses wiederkehrende Treffen recurring_meeting: must_cover_existing_meetings: one: Es gibt eine offene Besprechung in der Terminserie, die nicht durch den neuen Zeitplan abgedeckt ist. Passen Sie den Zeitplan an, um alle bestehenden Meetings einzuschließen. diff --git a/modules/meeting/config/locales/crowdin/ja.yml b/modules/meeting/config/locales/crowdin/ja.yml index ffb3b06f686..ed902fe7a4e 100644 --- a/modules/meeting/config/locales/crowdin/ja.yml +++ b/modules/meeting/config/locales/crowdin/ja.yml @@ -266,7 +266,7 @@ ja: summary_occurrence: An occurrence of '%{title}' has been cancelled by %{actor}, or you have been removed as a participant summary_series: Meeting series '%{title}' has been cancelled by %{actor}, or you have been removed as a participant summary: "'%{title}' has been cancelled by %{actor}, or you have been removed as a participant" - date_time: 予定日時 + date_time: スケジュールされた日時 participant_added: header: Meeting '%{title}' - Participant added header_series: Meeting series '%{title}' - Participant added @@ -314,7 +314,7 @@ ja: occurrence: title: 会議のキャンセル heading: この会議をキャンセルしますか? - confirmation_message_html: 'テンプレートにない会議情報は失われます。 続行しますか? + confirmation_message_html: 'テンプレートにない会議情報は失われます。 続けますか? ' confirm_button: 発生をキャンセル @@ -534,7 +534,7 @@ ja: confirm_button: この予定をキャンセル end_series_dialog: title: 一連の会議を終了 - notice_successful_notification: 参加者全員にカレンダー更新の電子メールを送信 + notice_successful_notification: すべての出席者にカレンダーの更新をメールしました notice_meeting_template_created: Template successfully created notice_timezone_missing: タイムゾーンが設定されていない場合、%{zone} が使用されます。タイムゾーンを選択するには、ここをクリックしてください。 notice_meeting_updated: このページは他の誰かによって更新されました。変更を表示するには再読み込みしてください。 @@ -619,7 +619,7 @@ ja: ' label_agenda_backlog_clear_title: 議題のバックログをクリアしますか? - text_agenda_backlog_clear_description: '現在アジェンダバックログにあるすべての項目を削除してもよろしいですか?このアクションは元に戻せません。 + text_agenda_backlog_clear_description: '議題のバックログ内のすべての項目を削除してもよろしいですか?この操作は取り消せません。 ' label_series_backlog: シリーズバックログ @@ -655,7 +655,7 @@ ja: text_meeting_closed_description: この会議は終了しています。これ以上、議題項目の追加/削除はできません。 text_meeting_in_progress_description: 議題を変更したり、各項目のアウトカムを記録したり、参加者の出席を追跡することができます。 会議が完了すると、会議をクローズとしてマークしてロックできます。 text_meeting_open_dropdown_description: 既存の結果は残りますが、ユーザーは新しい結果を追加することはできません。 - text_meeting_in_progress_dropdown_description: 会議中に必要な情報や決定事項などの成果を文書化する。 + text_meeting_in_progress_dropdown_description: 会議中に取られた情報のニーズや意思決定などの成果を記録します。 text_meeting_closed_dropdown_description: この会議は終了しました。これ以上、議題や結果を変更することはできません。 text_meeting_draft_banner: 現在下書きモードです。 会議の詳細を変更したり出席者を追加/削除したりしても,この会議はカレンダーの更新や招待状を送信しません。 text_onetime_meeting_template_banner: You are currently editing a meeting template. You can use this template to create one-time meetings with a predefined agenda. Changes will not affect already-created meetings. diff --git a/modules/reporting/config/locales/crowdin/ro.yml b/modules/reporting/config/locales/crowdin/ro.yml index 44c763a7a16..6948e28b90a 100644 --- a/modules/reporting/config/locales/crowdin/ro.yml +++ b/modules/reporting/config/locales/crowdin/ro.yml @@ -71,7 +71,7 @@ ro: label_filter: Filtrează label_filter_add: Adaugă filtru label_filter_plural: Filtre - label_group_by: Grupează după + label_group_by: Grupare după label_group_by_add: Adaugă atributul Grupează-după label_inactive: Inactiv label_no: Nu diff --git a/modules/reporting/config/locales/crowdin/vi.yml b/modules/reporting/config/locales/crowdin/vi.yml index 96f207fdf55..3e12aa977f0 100644 --- a/modules/reporting/config/locales/crowdin/vi.yml +++ b/modules/reporting/config/locales/crowdin/vi.yml @@ -74,7 +74,7 @@ vi: label_group_by: Nhóm theo label_group_by_add: Thêm thuộc tính theo nhóm label_inactive: "«không hoạt động»" - label_no: không + label_no: Không label_none: "(không có dữ liệu)" label_no_reports: Chưa có báo cáo chi phí. label_report: Báo cáo diff --git a/modules/reporting/config/locales/crowdin/zh-TW.yml b/modules/reporting/config/locales/crowdin/zh-TW.yml index 3bfe7515afd..232cc7de50e 100644 --- a/modules/reporting/config/locales/crowdin/zh-TW.yml +++ b/modules/reporting/config/locales/crowdin/zh-TW.yml @@ -54,7 +54,7 @@ zh-TW: label_money: 金額 label_month_reporting: 月 label_new_report: 新建成本報表 - label_open: 開啟 + label_open: 開啟中 label_operator: 操作員 label_private_report_plural: 私密成本報告 label_progress_bar_explanation: 產生報告中... @@ -71,7 +71,7 @@ zh-TW: label_filter: 篩選條件 label_filter_add: 新增篩選條件 label_filter_plural: 篩選條件 - label_group_by: 分類 + label_group_by: 分組依據 label_group_by_add: 新增群組欄位 label_inactive: "«不活動»" label_no: 否 diff --git a/modules/storages/config/locales/crowdin/ja.yml b/modules/storages/config/locales/crowdin/ja.yml index 0bef3e7dcf0..0b9ff54e4c7 100644 --- a/modules/storages/config/locales/crowdin/ja.yml +++ b/modules/storages/config/locales/crowdin/ja.yml @@ -19,7 +19,7 @@ ja: token_exchange_scope: ストレージスコープ storages/project_storage: project_folder: プロジェクトフォルダ - project_folder_mode: プロジェクトフォルダーモード + project_folder_mode: プロジェクトフォルダモード storage: ストレージ storage_url: ストレージURL storages/sharepoint_storage: @@ -30,53 +30,53 @@ ja: storages/storage: authentication_method: 認証方法 creator: 作成者 - drive: ドライブID + drive: ドライブ ID host: ホスト name: 名称 password: アプリケーションのパスワード - provider_type: プロバイダー・タイプ - tenant: ディレクトリ(テナント)ID + provider_type: プロバイダーの種類 + tenant: ディレクトリ (テナント) ID errors: messages: invalid_host_url: は有効な URL ではありません。 - invalid_sharepoint_url: は有効なSharePointサイト、ライブラリ、ドキュメントのURLではありません。 - not_linked_to_project: はプロジェクトにリンクされていない。 + invalid_sharepoint_url: は有効なSharePointサイト、ライブラリ、またはドキュメントのURLではありません。 + not_linked_to_project: はプロジェクトにリンクされていません。 models: storages/file_link: attributes: origin_id: - only_numeric_or_uuid: には数値かuuidしか指定できない。 + only_numeric_or_uuid: は数値またはuuidのみとなります。 storages/project_storage: attributes: project_folder_id: blank: フォルダーを選択してください。 project_folder_mode: - mode_unavailable: はこのストレージでは使用できない。 + mode_unavailable: このストレージでは使用できません。 project_ids: blank: プロジェクトを選択してください。 storages/storage: attributes: host: - authorization_header_missing: が完全にセットアップされていません。APIリクエストのベアラートークンベースの認証に必要な "Authorization "ヘッダーをNextcloudインスタンスが受け取っていません。HTTPサーバーの設定を再度ご確認ください。 - cannot_be_connected_to: に到達できませんでした。ホストに到達可能で、OpenProject 統合アプリがインストールされていることを確認してください。 - minimal_nextcloud_version_unmet: 最小バージョン要件を満たしていない(Nextcloud 23以上である必要があります。) - not_nextcloud_server: はNextcloudサーバーではありません。 - op_application_not_installed: は、アプリ「OpenProject integration」がインストールされていないようです。インストールしてからもう一度お試しください。 + authorization_header_missing: 完全には設定されていません。 Nextcloudインスタンスは、APIリクエストのベアラートークンベースの認可に必要な「Authorization」ヘッダーを受け取りません。 HTTPサーバーの設定を再確認してください。 + cannot_be_connected_to: に到達できませんでした。ホストが到達可能で、OpenProject 統合アプリがインストールされていることを確認してください。 + minimal_nextcloud_version_unmet: 最小バージョン要件を満たしていません(Nextcloud23以上でなければなりません) + not_nextcloud_server: はNextcloudサーバーではありません + op_application_not_installed: アプリ「OpenProject統合」がインストールされていません。最初にインストールしてからもう一度お試しください。 password: - invalid_password: は無効である。 + invalid_password: は無効です。 unknown_error: could not be validated with the file storage provider. Please verify that the connection is functioning properly. models: file_link: ファイル storages/storage: ストレージ api_v3: errors: - too_many_elements_created_at_once: 一度に作成される要素が多すぎる。最大でも %{max} 、 %{actual}。 + too_many_elements_created_at_once: 一度に作成された要素が多すぎます。 %{max} の期待値は %{actual} です。 external_file_storages: 外部ファイルストレージ permission_create_files: '自動的に管理されたプロジェクトフォルダ: ファイルの作成' permission_create_files_explanation: この権限はNextcloudストレージでのみ利用できます permission_delete_files: '自動的に管理されたプロジェクトフォルダ: ファイルの削除' permission_delete_files_explanation: この権限はNextcloudストレージでのみ利用できます - permission_header_for_project_module_storages: 自動的に管理されるプロジェクトフォルダ + permission_header_for_project_module_storages: 自動的に管理されたプロジェクトフォルダ permission_manage_file_links: ファイルへのリンク管理 permission_manage_files_in_project: プロジェクト内のファイル管理 permission_read_files: '自動的に管理されたプロジェクトフォルダ: ファイルの読み込み' @@ -87,16 +87,16 @@ ja: project_module_storages: ファイルを添付する project_storages: edit_project_folder: - label: プロジェクトフォルダの編集 + label: プロジェクトフォルダを編集 open: - contact_admin: このエラーを解決するには、管理者に連絡してください。 - remote_identity_error: ストレージへの接続中に予期せぬエラーが発生しました。 + contact_admin: このエラーを解決するには管理者に問い合わせてください。 + remote_identity_error: ストレージへの接続中に予期しないエラーが発生しました。 project_folder_mode: - automatic: 自動的に管理される - inactive: 特定のフォルダなし + automatic: 自動的に管理 + inactive: 特定のフォルダがありません manual: 既存のフォルダを手動で管理 remove_project: - deletion_failure_flash: ストレージからのプロジェクトの削除に失敗しました。 %{error} + deletion_failure_flash: プロジェクトをストレージから削除できませんでした。 %{error} label: プロジェクトを削除 services: attributes: @@ -111,7 +111,7 @@ ja: one_drive_sync_service: create_folder: プロジェクトフォルダの作成を管理: ensure_root_folder_permissions: ベースフォルダの権限を設定: - hide_inactive_folders: 非アクティブフォルダを隠す ステップ: + hide_inactive_folders: 非アクティブフォルダを隠す ステップ remote_folders: 'Read contents of the drive root folder:' rename_project_folder: 管理プロジェクトフォルダの名前を変更します: sharepoint_sync_service: @@ -122,16 +122,16 @@ ja: rename_project_folder: 管理プロジェクトフォルダの名前を変更します: errors: messages: - error: 予期しないエラーが発生しました。OpenProject のログを確認するか、管理者に連絡してください + error: 予期しないエラーが発生しました。OpenProject のログを確認するか、管理者に連絡してください。 forbidden: OpenProject could not access the requested resource. Please check your permissions configuration on the Storage Provider. unauthorized: OpenProjectはストレージプロバイダと認証できませんでした。アクセスできることを確認してください。 models: copy_project_folders_service: conflict: フォルダ %{destination_path} は既に存在する。上書きを避けるために処理を中断しています。 - error: 予期しないエラーが発生しました。OpenProject のログを確認するか、管理者に連絡してください - forbidden: OpenProject はソースフォルダにアクセスできませんでした。ストレージ・プロバイダの権限設定を確認してください + error: 予期しないエラーが発生しました。OpenProject のログを確認するか、管理者に連絡してください。 + forbidden: OpenProject はソースフォルダにアクセスできませんでした。ストレージ・プロバイダの権限設定を確認してください。 not_found: ソース・テンプレートの場所 %{source_path} が見つかりませんでした。 - unauthorized: OpenProject はストレージプロバイダと認証できませんでした。ストレージの設定を確認してください + unauthorized: OpenProject はストレージプロバイダと認証できませんでした。ストレージの設定を確認してください。 nextcloud_sync_service: attributes: add_user_to_group: @@ -152,31 +152,31 @@ ja: conflict: 以下の理由により、 %{user} のユーザーを %{group} グループから削除できませんでした: %{reason} failed_to_remove: 以下の理由により、 %{user} のユーザーを %{group} グループから削除できませんでした: %{reason} rename_project_folder: - conflict: OpenProjectは、同じ名前のフォルダが既に存在するため、プロジェクトフォルダの名前を %{current_path} に変更できませんでした - forbidden: OpenProject ユーザーは %{current_path} フォルダにアクセスできません。 - not_found: "%{current_path} は見つからなかった。" + conflict: OpenProjectは、同じ名前のフォルダが既に存在するため、プロジェクトフォルダの名前を %{current_path} に変更できませんでした。 + forbidden: OpenProjectユーザーは %{current_path} フォルダにアクセスできません。 + not_found: "%{current_path} は見つかりませんでした。" set_folders_permissions: - permission_not_set: "%{path}にパーミッションを設定できなかった。" - error: 予期しないエラーが発生しました。Nextcloud インスタンスに到達可能であることを確認し、OpenProject ワーカーのログを確認してください + permission_not_set: "%{path} に権限を設定できませんでした。" + error: 予期しないエラーが発生しました。Nextcloudインスタンスがアクセス可能であることを確認し、詳細についてはOpenProjectワーカーログを確認してください。 group_does_not_exist: "%{group} は存在しません。Nextcloudインスタンスの設定を確認してください。" - insufficient_privileges: OpenProjectには、 %{group}に %{user} を追加するのに十分な権限がありません。Nextcloudのグループ設定を確認してください。 - not_allowed: ネクストクラウドはリクエストをブロックする。 + insufficient_privileges: OpenProjectには %{user} を %{group}に追加するための十分な権限がありません。Nextcloudでグループ設定を確認してください。 + not_allowed: Nextcloudはリクエストをブロックします。 not_found: OpenProject could not find the file on the Nextcloud Storage Provider. Please check if it wasn't deleted. unauthorized: OpenProjectがNextcloudと同期できませんでした。ストレージとNextcloudの設定を確認してください。 - user_does_not_exist: "%{user} はNextcloudには存在しません。" + user_does_not_exist: Nextcloudには%{user} は存在しません。 one_drive_sync_service: attributes: create_folder: - conflict: "%{folder_name} はすでに %{parent_location}に存在している。" - not_found: "%{parent_location} は見つからなかった。" + conflict: "%{folder_name} は %{parent_location} に既に存在します。" + not_found: "%{parent_location} は見つかりませんでした。" hide_inactive_folders: - permission_not_set: "%{path}にパーミッションを設定できなかった。" + permission_not_set: "%{path} に権限を設定できませんでした。" remote_folders: - request_error: OpenProject は %{drive_id}ドライブにアクセスできませんでした。ストレージの設定が正しいかどうか確認してください。 + request_error: OpenProjectがドライブ %{drive_id}にアクセスできませんでした。ストレージの設定が正しいか確認してください。 rename_project_folder: conflict: OpenProject could not rename the folder %{current_path} to %{project_folder_name} as a folder with the same name already exists. - forbidden: OpenProject は、 %{current_path} にアクセスできず、名前を変更できません。 - not_found: "%{current_path} は見つからなかった。" + forbidden: OpenProject は名前を変更するために %{current_path} にアクセスできません。 + not_found: "%{current_path} は見つかりませんでした。" set_folders_permissions: permission_not_set: "%{path} に権限を設定できませんでした。" error: An unexpected error occurred. Please ensure that OneDrive is reachable and check OpenProject worker logs for more information. @@ -311,43 +311,43 @@ ja: drive_id_format: ドライブIDフォーマット header: 構成 host: ホスト URL - host_url_accessible: アクセス可能なホストURL + host_url_accessible: ホスト URL アクセス storage_configured: 設定完了 - tenant_id: テナントID + tenant_id: Tenant ID failures: - other: "%{count} チェック失敗" + other: "%{count} チェックに失敗しました" success: すべてのチェックに合格 warnings: other: "%{count} は警告を返しました" connection_validation: client_id_invalid: 設定されたOAuth 2クライアントIDが無効です。設定を確認してください。 client_secret_invalid: 設定されたOAuth 2クライアントシークレットが無効です。設定を確認してください。 - nc_dependency_missing: ファイルストレージに必要な依存関係がありません。次の依存関係を追加してください: %{dependency}。 + nc_dependency_missing: 'ファイルストレージに必要な依存関係がありません。次の依存関係を追加してください: %{dependency}。' nc_dependency_version_mismatch: "%{dependency} アプリのバージョンがサポートされていません。Nextcloudサーバーをアップデートしてください。" nc_host_not_found: 設定されたホストURLにNextcloudサーバーが見つかりません。設定を確認してください。 nc_oauth_request_not_found: 現在接続しているユーザーを取得するエンドポイントが見つかりませんでした。詳細については、サーバーのログを確認してください。 nc_oauth_request_unauthorized: 現在のユーザーにはリモートファイルストレージにアクセスする権限がありません。サーバーのログを確認してください。 - nc_oauth_token_missing: OpenProjectでは、ユーザーがNextcloudアカウントをリンクしていないため、ユーザーレベルのNextcloudとの通信をテストできません。 + nc_oauth_token_missing: OpenProject は、Nextcloudアカウントへのリンクがまだないため、Nextcloudとのユーザーレベルの通信をテストできません。 nc_project_folder_missing: The previously created project folder for project "%{project}" could not be found. nc_team_folder_not_found: The team folder could not be found. nc_unexpected_files: 'Unexpected files found in the managed team folder. For example: %{sample}' nc_unlinked_project_folders: Not all project folders have been created yet (%{actual} / %{expected}). This can indicate errors during the AMPF background synchronization. nc_userless_access_denied: 設定されているアプリのパスワードが無効です。 not_configured: 接続を検証できませんでした。先に設定を完了してください。 - od_client_cant_delete_folder: クライアントがフォルダの削除に失敗しています。お使いのストレージのセットアップドキュメントを確認してください。 - od_client_write_permission_missing: クライアントの書き込み権限が不足しているようです。お使いのストレージのセットアップドキュメントを確認してください。 - od_drive_id_invalid: 設定されたドライブIDが無効のようです。設定を確認してください。 - od_drive_id_not_found: 設定されたドライブIDが見つかりません。設定を確認してください。 - od_oauth_request_not_found: 現在接続しているユーザーを取得するエンドポイントが見つかりませんでした。詳細については、サーバーのログを確認してください。 - od_oauth_request_unauthorized: 現在のユーザーにはリモートファイルストレージにアクセスする権限がありません。サーバーのログを確認してください。 - od_oauth_token_missing: OpenProjectは、ユーザーがまだMicrosoftアカウントをリンクしていないため、OneDriveとのユーザーレベルの通信をテストできません。 - od_tenant_id_wrong: 設定されたディレクトリ(テナント)IDが無効です。設定を確認してください。 + od_client_cant_delete_folder: クライアントがフォルダを削除できません。ストレージのセットアップドキュメントを確認してください。 + od_client_write_permission_missing: クライアントは書き込み権限がありません。ストレージの設定ドキュメントを確認してください。 + od_drive_id_invalid: 設定されたドライブ ID が無効です。設定を確認してください。 + od_drive_id_not_found: 設定されたドライブ ID が見つかりません。設定を確認してください。 + od_oauth_request_not_found: 現在接続されているユーザーを取得するエンドポイントが見つかりませんでした。詳細についてはサーバーログを確認してください。 + od_oauth_request_unauthorized: 現在のユーザーはリモートファイルストレージにアクセスする権限がありません。詳細についてはサーバーログを確認してください。 + od_oauth_token_missing: OpenProject は、ユーザーが Microsoft アカウントをまだリンクしていないため、OneDrive とのユーザー レベルの通信をテストできません。 + od_tenant_id_wrong: 設定されたディレクトリ (テナント) IDは無効です。設定を確認してください。 od_test_folder_exists: テストに必要なフォルダ %{folder_name} はすでに存在します。削除して再度お試しください。 od_unexpected_content: ドライブに予期しないコンテンツが見つかりました。 - offline_access_scope_missing: OpenID Connectプロバイダがoffline_accessスコープを要求するように設定することをお勧めします。統合はまだ機能するかもしれませんが、リフレッシュトークンの有効期限が切れていないことを確認してください。 + offline_access_scope_missing: offline_access スコープを要求するために OpenID Connect プロバイダを設定することをお勧めします。 統合はまだ動作するかもしれませんが、更新トークンが期限切れでないことを確認してください。 oidc_cant_refresh_token: ストレージへのアクセスを確認中にエラーが発生しました。詳細についてはサーバーログを確認してください。 - oidc_non_oidc_user: 現在のユーザーはプロビジョニングされていますが、OpenID Connect (OIDC) Identity Providerによってプロビジョニングされていません。OIDCプロビジョニングされたユーザーでチェックを再実行してください。 - oidc_non_provisioned_user: 現在のユーザはOpenID Connect Identity Providerから提供されていません。提供されたユーザーでチェックを再実行してください。 + oidc_non_oidc_user: 現在のユーザは、プロビジョニング中にOpenID Connect(OIDC)アイデンティティプロバイダによってプロビジョニングされていませんでした。OIDCプロビジョニングされたユーザでチェックを再実行してください。 + oidc_non_provisioned_user: 現在のユーザーはOpenID Connectアイデンティティプロバイダーによって提供されていません。指定されたユーザーとチェックを再実行してください。 oidc_provider_cant_exchange: OpenID Connectプロバイダはトークン交換をサポートしていないようですが、トークン交換はストレージ用に設定されています。 oidc_token_acquisition_failed: OpenID Connectのセットアップでは、必要なオーディエンスが提供されておらず、トークン交換機能も提供されていません。詳しくはドキュメントをご覧ください。 oidc_token_exchange_failed: OpenID Connect ProviderのToken Exchange設定に問題があるようです。設定を確認し、再度お試しください。 @@ -362,7 +362,7 @@ ja: sp_oauth_token_missing: OpenProject は、ユーザーがまだ SharePoint アカウントをリンクしていないため、ユーザーレベルの SharePoint との通信をテストできません。 sp_tenant_id_missing: 構成されたディレクトリ(テナント)IDがSharePointにありません。設定を確認してください。 sp_unexpected_content: Unexpected content found in the SharePoint Document Library. - unknown_error: 接続を検証できませんでした。不明なエラーが発生しました。詳細については、サーバーのログを確認してください。 + unknown_error: 接続を検証できませんでした。不明なエラーが発生しました。詳細についてはサーバーログを確認してください。 label_error: エラー label_failed: 失敗しました label_healthy: 健康的 @@ -370,55 +370,55 @@ ja: label_pending: 保留中 label_skipped: スキップ label_warning: 注意 - no_report: 報告書なし - no_report_description: 今すぐチェックを実行し、このファイル・ストレージの完全な健全性ステータスをレポートする。 + no_report: 利用可能なレポートがありません + no_report_description: 今すぐこのファイルストレージの完全な健康状態レポートを確認します。 open_report: 完全な健康報告を開く project_folders: subtitle: 自動的に管理されるプロジェクトフォルダ - since: "%{datetime}より" + since: "%{datetime} 以降" summary: - failure: いくつかのチェックに失敗し、システムが期待通りに機能しない。 - success: すべての接続とシステムは期待通りに機能している。 - warning: いくつかのチェックは警告を返した。これは予期せぬ動作につながる可能性がある。 + failure: いくつかのチェックに失敗し、システムが期待どおりに動作しません。 + success: すべての接続とシステムは期待どおりに動作しています。 + warning: いくつかのチェックが警告を返しました。これは予期しない動作につながる可能性があります。 synced: 'Last sync: %{datetime}' - title: 健康状態報告 + title: 健康状態レポート health_email_notifications: description_disabled: 管理者は、重要なアップデートがあった場合、メールでアップデートを受け取ることはできません。 description_enabled: 管理者は、重要なアップデートがあった場合、メールで最新情報を受け取ります。 - error_could_not_be_saved: 電子メール通知の設定を保存できませんでした。もう一度お試しください。 + error_could_not_be_saved: メール通知設定を保存できませんでした。もう一度やり直してください。 title: 管理者にメールで更新する help_texts: - project_folder: プロジェクトフォルダは、このプロジェクトのファイルアップロード用のデフォルトフォルダです。それでも、ユーザーは他の場所にファイルをアップロードすることができます。 - project_folder_bulk: プロジェクトフォルダは、選択したすべてのプロジェクトのファイルアップロード用のデフォルトフォルダです。これは、各プロジェクト設定で個別に変更できます。それでも、ユーザーは他の場所にファイルをアップロードすることができます。 + project_folder: プロジェクトフォルダは、このプロジェクトのファイルアップロードのデフォルトフォルダです。ただし、ユーザーは他の場所にファイルをアップロードすることができます。 + project_folder_bulk: プロジェクトフォルダは、選択したすべてのプロジェクトのファイルアップロードのデフォルトフォルダです。 プロジェクトごとの設定で個別に変更することができますが、ユーザーは別の場所にファイルをアップロードすることもできます。 instructions: - all_available_storages_already_added: 利用可能なすべてのストレージはすでにプロジェクトに追加されている。 - authentication_method: OpenProject とストレージ間のリクエストの認証方法。 - automatic_folder: これにより、このプロジェクトのルート・フォルダーが自動的に作成され、各プロジェクト・メンバーのアクセス権が管理されます。 - empty_project_folder_validation: 続行するには、フォルダの選択が必須です。 - existing_manual_folder: 既存のフォルダをこのプロジェクトのルートフォルダとして指定することができます。ただし、パーミッションは自動的に管理されないため、管理者は関連するユーザーがアクセスできることを手動で確認する必要があります。選択したフォルダは、複数のプロジェクトで使用できます。 - host: https:// を含むストレージのホスト・アドレスを追加してください。255文字以内にしてください。 - managed_project_folders_application_password_caption: "%{provider_type_link}からこの値をコピーして、自動管理フォルダを有効にする。" - name: ユーザーが複数のストレージを区別できるように、ストレージに名前を付ける。 + all_available_storages_already_added: 利用可能なすべてのストレージが既にプロジェクトに追加されています。 + authentication_method: OpenProjectとストレージ間のリクエストは認証されます。 + automatic_folder: これにより、このプロジェクトのルートフォルダが自動的に作成され、各プロジェクトメンバーのアクセス権限が管理されます。 + empty_project_folder_validation: フォルダの選択は必須です。 + existing_manual_folder: このプロジェクトのルートフォルダとして既存のフォルダを指定できます。 ただし、権限は自動的に管理されておらず、管理者は関連するユーザーに手動でアクセス権があることを確認する必要があります。 選択したフォルダは複数のプロジェクトで使用できます。 + host: https://を含むストレージのホストアドレスを追加してください。255文字以内にしてください。 + managed_project_folders_application_password_caption: "%{provider_type_link} からこの値をコピーすることで、自動管理フォルダを有効にします。" + name: ユーザーが複数のストレージを区別できるように、ストレージに名前を付けます。 new_storage_html: Read our documentation on [setting up a %{provider_name} file storage](docs_url) integration for more information. nextcloud: application_link_text: アプリケーション "Integration OpenProject" - integration: ネクストクラウド管理 / OpenProject + integration: Nextcloudの管理 / OpenProject oauth_configuration: "%{application_link_text} からこれらの値をコピーします。" - provider_configuration: セットアップを行う前に、Nextcloudインスタンスの管理者権限があり、 %{application_link_text} がインストールされていることを確認してください。 - storage_audience: Nextcloud インスタンスが ID プロバイダとの通信に使用するクライアント ID。 - storage_audience_placeholder: 例:ネクストクラウド - token_exchange_scope: トークン交換時に要求するスコープを、それぞれスペースで区切って指定する。 - no_specific_folder: デフォルトでは、ファイルをアップロードすると、各ユーザーは自分のホームフォルダから開始します。 - no_storage_set_up: ファイルストレージはまだ設定されていない。 - not_logged_into_storage: プロジェクトフォルダを選択するには、まずログインしてください。 + provider_configuration: Nextcloudインスタンスに管理権限があり、設定を行う前に %{application_link_text} がインストールされていることを確認してください。 + storage_audience: NextcloudインスタンスがIDプロバイダーと通信するために使用するクライアントID。 + storage_audience_placeholder: 例:nextcloud + token_exchange_scope: トークン交換中に要求されるべきスコープは、それぞれスペースで区切られています。 + no_specific_folder: デフォルトでは、各ユーザーはファイルをアップロードしたときに自分のホームフォルダから開始します。 + no_storage_set_up: まだ設定されているファイルストレージがありません。 + not_logged_into_storage: プロジェクトフォルダを選択するには、最初にログインしてください oauth_application_details_html: The client secret value will not be accessible again after you close this window. Please copy these values into the [Nextcloud OpenProject Integration settings](oauth_application_details_link). one_drive: application_link_text: Azure Portal copy_redirect_uri: リダイレクトURIをコピーする documentation_link_text: OneDriveファイルストレージのドキュメント drive_id: "%{drive_id_link_text} の手順に従って、目的のドライブからIDをコピーしてください。" - integration: ワンドライブ - missing_client_id_for_redirect_uri: OAuthの値を入力してURIを生成してください。 + integration: OneDrive + missing_client_id_for_redirect_uri: OAuthの値を入力してURIを生成してください oauth_client_redirect_uri: この値を「リダイレクト URIs」にある新しい Web リダイレクト URI にコピーしてください。 oauth_client_secret: Client 資格情報にアプリケーション クライアント シークレットがない場合は、新しいシークレットを作成してください。 oauth_configuration: "%{application_link_text}、目的のアプリケーションからこれらの値をコピーします。" @@ -490,13 +490,13 @@ ja: login_button_aria_label: "%{storage} にログイン" login_button_label: "%{provider_type} ログイン" project_settings: - description: プロジェクトフォルダにアクセスするには、 %{storage}にログインする必要があります。 + description: プロジェクトフォルダにアクセスするには、 %{storage} にログインする必要があります。 requesting_access_to: "%{storage} へのアクセスをリクエストしています" storage_admin: description: このストレージにプロジェクトを追加するには、 %{provider_type}にログインする必要があります。ログインしてもう一度やり直してください。 open_project_storage_modal: success: - subtitle: リダイレクトされます + subtitle: リダイレクトしています title: 連携のセットアップが完了しました timeout: link_text: ファイルストレージセットアップの状態の状態 @@ -515,8 +515,8 @@ ja: subtitle_short: OpenProjectにプロジェクトごとにフォルダを自動的に作成させます。 title: 自動的に管理されるプロジェクトフォルダ project_settings: - edit: このプロジェクトのファイル・ストレージを編集する - members_connection_status: メンバーの接続状況 + edit: このプロジェクトのファイルストレージを編集 + members_connection_status: 会員の接続状況 new: このプロジェクトにファイルストレージを追加する project_storage_members: subtitle_html: Check the connection status for the storage %{storage_name_link} of all project members. @@ -527,14 +527,14 @@ ja: provider_types: label: プロバイダー・タイプ nextcloud: - label_oauth_client_id: NextcloudのOAuthクライアントID - label_oauth_client_secret: NextcloudOAuthクライアントシークレット + label_oauth_client_id: Nextcloud OAuthクライアントID + label_oauth_client_secret: Nextcloud OAuth クライアントシークレット name: ネクストクラウド name_placeholder: 例:ネクストクラウド one_drive: - label_oauth_client_id: Azure OAuthアプリケーション(クライアント)ID + label_oauth_client_id: Azure OAuth アプリケーション (クライアント) ID label_oauth_client_secret: Azure OAuth クライアントの秘密値 - name: ワンドライブ + name: OneDrive name_placeholder: '例: OneDrive' sharepoint: drive_description: OpenProject access-managed document library @@ -544,18 +544,18 @@ ja: name_placeholder: 例:シェアポイント show_attachments_toggle: description: このオプションを無効にすると、ワークパッケージのファイルタブの添付ファイルリストが非表示になります。ワークパッケージの説明に添付されたファイルは、内部添付ファイルストレージにアップロードされます。 - label: ワークパッケージのファイルタブに添付ファイルを表示 + label: ワークパッケージファイルタブに添付ファイルを表示 storage_audience: - documentation_intro: 以下のオプションと ID プロバイダの設定の詳細については、当社のドキュメントをお読みください。 + documentation_intro: アイデンティティプロバイダの以下のオプションと設定については、当社のドキュメントをお読みください。 idp: - helptext: OpenProjectは、ストレージへのリクエストを認証するために、ログイン時にIDプロバイダから受け取ったアクセストークンを使用します。別のトークンを取得しようとすることはありません。 - label: ユーザーログイン時に取得したアクセストークンを使用する + helptext: OpenProjectはログイン中にIDプロバイダーが受け取ったアクセストークンを使用して、ストレージへのリクエストを認証します。 別のトークンを取得しようとしません。 + label: ログイン中に取得したアクセストークンを使用する manual: - helptext: OpenProjectは、指定されたオーディエンスのIDプロバイダとトークンを交換します。 + helptext: OpenProject は、特定のオーディエンスの ID プロバイダーとトークンを交換します。 label: Manually specify audience for which to exchange access token (Recommended) storage_list_blank_slate: - description: ストレージを追加して、ここで見ることができる。 - heading: あなたはまだ倉庫を持っていない。 + description: ここにそれらを見るためにストレージを追加します。 + heading: まだストレージがありません。 successful_storage_connection: ストレージが正常に接続されました! 使用する各プロジェクトの「プロジェクト」タブでストレージをアクティブにすることを忘れないでください。 upsell: one_drive: diff --git a/modules/storages/config/locales/crowdin/js-ja.yml b/modules/storages/config/locales/crowdin/js-ja.yml index 35975efb28f..ff94c1e0485 100644 --- a/modules/storages/config/locales/crowdin/js-ja.yml +++ b/modules/storages/config/locales/crowdin/js-ja.yml @@ -4,14 +4,14 @@ ja: js: storages: authentication_error: "%{storageType} での認証に失敗しました" - link_files_in_storage: リンクファイル %{storageType} - link_existing_files: 既存のファイルをリンク - upload_files: ファイルのアップロード + link_files_in_storage: "%{storageType}のファイルをリンクする" + link_existing_files: 既存のファイルをリンクする + upload_files: ログファイル drop_files: ここにファイルをドロップして、 %{name} にアップロードします。 drop_or_click_files: ここにファイルをドロップするか、クリックして %{name} にアップロードします。 login: "%{storageType} ログイン" login_to: "%{storageType}にログイン" - no_connection: "%{storageType} 接続がありません" + no_connection: "%{storageType} 接続なし" open_storage: "%{storageType} を開く" select_location: 場所を選択 choose_location: 場所を選ぶ @@ -24,7 +24,7 @@ ja: information: authentication_error: "%{storageType} へのリクエストを認証できませんでした。これはエラーです。" connection_error: "%{storageType} の設定が一部機能していません。 %{storageType} 管理者にお問い合わせください。\n" - live_data_error: ファイルの詳細の取得に失敗しました + live_data_error: ファイル詳細の取得エラー live_data_error_description: '一部の %{storageType} データを取得できませんでした。このページを再読み込みするか、 %{storageType} 管理者にお問い合わせください。 ' @@ -35,7 +35,7 @@ ja: suggest_logout: ログアウトしてログインし直すと、この問題が解決するかどうか試してみてください。 suggest_relink: 以下のログインボタンからアカウントを再リンクすると、この問題が解決するかどうか試してみてください。 files: - already_existing_header: このファイルはすでに存在する + already_existing_header: このファイルは既に存在します already_existing_body: 'このファイルをアップロードしようとしている場所に、"%{fileName}"という名前のファイルがすでに存在します。どうしますか? ' @@ -44,7 +44,7 @@ ja: dragging_folder: "%{storageType} へのアップロードはフォルダをサポートしていません。" empty_folder: このフォルダは空です。 empty_folder_location_hint: 下のボタンをクリックして、この場所にファイルをアップロードしてください。 - file_not_selectable_location: 場所を選択する過程でファイルを選択することはできない。 + file_not_selectable_location: ファイルを選択することは、場所を選択する過程ではできません。 project_folder_no_access: 'プロジェクトフォルダにアクセスできません。管理者に連絡してアクセス権を取得するか、別の場所にファイルをアップロードしてください。 ' @@ -90,10 +90,10 @@ ja: ' detail: - nextcloud: '最新版のNextcloudアプリ「OpenProject Integration」がインストールされていることを確認し、管理者にお問い合わせください。 + nextcloud: 'Nextcloudアプリ「OpenProject統合」の最新バージョンがインストールされていることを確認し、詳細については管理者にお問い合わせください。 ' - link_uploaded_file_error: '最近アップロードされたファイル ''%{fileName}'' をワークパッケージ %{workPackageId}にリンクするエラーが発生しました。 + link_uploaded_file_error: '最近アップロードされたファイル ''%{fileName}'' をワークパッケージ %{workPackageId} にリンクしてエラーが発生しました。 ' tooltip: diff --git a/modules/team_planner/config/locales/crowdin/js-fr.yml b/modules/team_planner/config/locales/crowdin/js-fr.yml index 041f82b13e5..8bddc24c980 100644 --- a/modules/team_planner/config/locales/crowdin/js-fr.yml +++ b/modules/team_planner/config/locales/crowdin/js-fr.yml @@ -20,7 +20,7 @@ fr: today: Aujourd'hui drag_here_to_remove: Faites glisser ici pour supprimer le responsable et les dates de début et de fin. cannot_drag_here: Impossible de déplacer le lot de travail en raison de restrictions d'autorisation ou d'édition. - cannot_drag_to_non_working_day: Ce lot de travaux ne peut pas démarrer/terminer sur un jour non ouvré. + cannot_drag_to_non_working_day: Ce lot de travail ne peut pas démarrer/terminer sur un jour non ouvré. quick_add: empty_state: Utilisez le champ de recherche pour trouver des lots de travaux et faites-les glisser vers le planificateur pour l'assigner à quelqu'un et définir des dates de début et de fin. search_placeholder: Rechercher... diff --git a/modules/two_factor_authentication/config/locales/crowdin/ro.yml b/modules/two_factor_authentication/config/locales/crowdin/ro.yml index 87aa2ce067e..29a5a924db5 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ro.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ro.yml @@ -170,7 +170,7 @@ ro: notice_account_otp_send_failed: Parola dvs. unică nu a putut fi trimisă. notice_account_has_no_phone: Nici un număr de telefon mobil nu este asociat contului dvs. label_confirmed: Confirmat - button_continue: Continuă + button_continue: Continuaţi button_make_default: Marcați ca implicit notice_phone_number_format: 'Te rog să introduci numărul în următorul format: +XX XXXXXXXX.' text_otp_not_receive: Alte metode de verificare diff --git a/modules/two_factor_authentication/config/locales/crowdin/ru.yml b/modules/two_factor_authentication/config/locales/crowdin/ru.yml index 3725f47949d..f65da4da418 100644 --- a/modules/two_factor_authentication/config/locales/crowdin/ru.yml +++ b/modules/two_factor_authentication/config/locales/crowdin/ru.yml @@ -170,7 +170,7 @@ ru: notice_account_otp_send_failed: Не удается отправить одноразовый пароль. notice_account_has_no_phone: К вашей учетной записи не привязан номер сотового телефона. label_confirmed: Подтвержден - button_continue: Продолжить + button_continue: Далее button_make_default: Задать по умолчанию notice_phone_number_format: 'Введите номер в следующем формате: +XX XXXXXXXX.' text_otp_not_receive: Другие способы проверки diff --git a/modules/wikis/config/locales/crowdin/af.yml b/modules/wikis/config/locales/crowdin/af.yml index 1a300ed0cd7..97635c61bf2 100644 --- a/modules/wikis/config/locales/crowdin/af.yml +++ b/modules/wikis/config/locales/crowdin/af.yml @@ -30,16 +30,14 @@ af: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/ar.yml b/modules/wikis/config/locales/crowdin/ar.yml index 34d39580db0..c547a748c71 100644 --- a/modules/wikis/config/locales/crowdin/ar.yml +++ b/modules/wikis/config/locales/crowdin/ar.yml @@ -38,16 +38,14 @@ ar: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/az.yml b/modules/wikis/config/locales/crowdin/az.yml index f1d414e9c58..445c0d54232 100644 --- a/modules/wikis/config/locales/crowdin/az.yml +++ b/modules/wikis/config/locales/crowdin/az.yml @@ -30,16 +30,14 @@ az: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/be.yml b/modules/wikis/config/locales/crowdin/be.yml index 204ef230d06..c8565b4830e 100644 --- a/modules/wikis/config/locales/crowdin/be.yml +++ b/modules/wikis/config/locales/crowdin/be.yml @@ -34,16 +34,14 @@ be: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/bg.yml b/modules/wikis/config/locales/crowdin/bg.yml index df5d0f7869e..088c8d18c58 100644 --- a/modules/wikis/config/locales/crowdin/bg.yml +++ b/modules/wikis/config/locales/crowdin/bg.yml @@ -30,16 +30,14 @@ bg: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/ca.yml b/modules/wikis/config/locales/crowdin/ca.yml index 0099c268e28..594ba89f2da 100644 --- a/modules/wikis/config/locales/crowdin/ca.yml +++ b/modules/wikis/config/locales/crowdin/ca.yml @@ -30,16 +30,14 @@ ca: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/ckb-IR.yml b/modules/wikis/config/locales/crowdin/ckb-IR.yml index 852d4b4e368..0c63ffd4b99 100644 --- a/modules/wikis/config/locales/crowdin/ckb-IR.yml +++ b/modules/wikis/config/locales/crowdin/ckb-IR.yml @@ -30,16 +30,14 @@ ckb-IR: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/cs.yml b/modules/wikis/config/locales/crowdin/cs.yml index 477aea70c01..5b2443b8b3d 100644 --- a/modules/wikis/config/locales/crowdin/cs.yml +++ b/modules/wikis/config/locales/crowdin/cs.yml @@ -34,16 +34,14 @@ cs: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/da.yml b/modules/wikis/config/locales/crowdin/da.yml index eee488fc816..0e88a20ee2a 100644 --- a/modules/wikis/config/locales/crowdin/da.yml +++ b/modules/wikis/config/locales/crowdin/da.yml @@ -30,16 +30,14 @@ da: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/de.yml b/modules/wikis/config/locales/crowdin/de.yml index 1ae67f5868b..d9734168a92 100644 --- a/modules/wikis/config/locales/crowdin/de.yml +++ b/modules/wikis/config/locales/crowdin/de.yml @@ -30,16 +30,14 @@ de: save_and_continue: Speichern und fortsetzen done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/el.yml b/modules/wikis/config/locales/crowdin/el.yml index 9b463bd2617..e38c73f1937 100644 --- a/modules/wikis/config/locales/crowdin/el.yml +++ b/modules/wikis/config/locales/crowdin/el.yml @@ -30,16 +30,14 @@ el: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/eo.yml b/modules/wikis/config/locales/crowdin/eo.yml index 73857675749..63680d35248 100644 --- a/modules/wikis/config/locales/crowdin/eo.yml +++ b/modules/wikis/config/locales/crowdin/eo.yml @@ -30,16 +30,14 @@ eo: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/es.yml b/modules/wikis/config/locales/crowdin/es.yml index ff37240edee..7728f5fea9a 100644 --- a/modules/wikis/config/locales/crowdin/es.yml +++ b/modules/wikis/config/locales/crowdin/es.yml @@ -30,16 +30,14 @@ es: save_and_continue: Guardar y continuar done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/et.yml b/modules/wikis/config/locales/crowdin/et.yml index 567da50c750..381db0a424b 100644 --- a/modules/wikis/config/locales/crowdin/et.yml +++ b/modules/wikis/config/locales/crowdin/et.yml @@ -30,16 +30,14 @@ et: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/eu.yml b/modules/wikis/config/locales/crowdin/eu.yml index 21fe577006d..3502a6e3a4f 100644 --- a/modules/wikis/config/locales/crowdin/eu.yml +++ b/modules/wikis/config/locales/crowdin/eu.yml @@ -30,16 +30,14 @@ eu: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/fa.yml b/modules/wikis/config/locales/crowdin/fa.yml index 8541e52ef86..436fca9120d 100644 --- a/modules/wikis/config/locales/crowdin/fa.yml +++ b/modules/wikis/config/locales/crowdin/fa.yml @@ -30,16 +30,14 @@ fa: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/fi.yml b/modules/wikis/config/locales/crowdin/fi.yml index aca25a4a6cd..5ee0466c876 100644 --- a/modules/wikis/config/locales/crowdin/fi.yml +++ b/modules/wikis/config/locales/crowdin/fi.yml @@ -30,16 +30,14 @@ fi: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/fil.yml b/modules/wikis/config/locales/crowdin/fil.yml index fca7a91efe8..818682bdceb 100644 --- a/modules/wikis/config/locales/crowdin/fil.yml +++ b/modules/wikis/config/locales/crowdin/fil.yml @@ -30,16 +30,14 @@ fil: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/fr.yml b/modules/wikis/config/locales/crowdin/fr.yml index 650e038f002..e42d3261dc8 100644 --- a/modules/wikis/config/locales/crowdin/fr.yml +++ b/modules/wikis/config/locales/crowdin/fr.yml @@ -30,42 +30,40 @@ fr: save_and_continue: Enregistrer et continuer done_continue: Terminé, continuer wiki_page: Page wiki - inline_page_links_component: - empty_heading: Aucun lien intégré dans la page - empty_text: Les liens vers les pages wiki dans la description du lot de travaux apparaîtront automatiquement ici. - heading: Liens intégrés dans la page + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Supprimer le lien de la page relation_page_links_component: empty_heading: Pas de pages liées empty_text: Ajouter manuellement des liens vers d'autres pages wiki liées. - heading: Pages liées oauth_login_component: connect_button: Connectez votre compte %{provider} admin: oauth_application_info_component: label_pending: En attente replace_oauth_application: Remplacer l'application OAuth OpenProject - confirm_replace_oauth_application: This action will reset the current OAuth credentials. After confirming you will have to reenter the credentials in your XWiki instance and all users will have to reauthorize. Are you sure you want to proceed? + confirm_replace_oauth_application: Cette action réinitialisera les informations d'identification OAuth actuelles. Après confirmation, vous devrez saisir à nouveau les informations d'identification dans votre instance XWiki et tous les utilisateurs devront se réautoriser. Êtes-vous sûr de vouloir continuer ? oauth_client_info_component: label_pending: En attente replace_oauth_client: Remplacer l'application XWiki OAuth confirm_replace_oauth_client: Cette action réinitialisera les identifiants XWiki OAuth actuels. Tous les utilisateurs devront réautoriser sur XWiki. Êtes-vous sûr de vouloir continuer ? wiki_provider_list_component: - label_name: Name - label_provider: Provider - label_creation_time: Created - no_results_title: You don't have any wiki providers set up yet. - no_results_description: Add a wiki provider to see them here. + label_name: Nom + label_provider: Fournisseur + label_creation_time: Créé + no_results_title: Vous n'avez pas encore de fournisseur de wiki. + no_results_description: Ajouter un fournisseur de wiki pour les voir ici. destroy_confirmation_dialog_component: - title: Delete wiki provider - warning_html: You are about to delete %{wiki_provider}. This action is irreversible. + title: Supprimer le fournisseur de wiki + warning_html: Vous êtes sur le point de supprimer %{wiki_provider}. Cette action est irréversible. forms: oauth_application_form_component: - application_id: Application ID - application_secret: Application secret + application_id: ID de l'application + application_secret: Secret de l'application general_info_form_component: - xwiki_instance_description: Please make sure you have administration privileges in your XWiki instance before doing the setup. + xwiki_instance_description: Veuillez vous assurer que vous disposez des privilèges d'administration dans votre instance XWiki avant de procéder à l'installation. wiki_providers: index_description: Ajoutez un service wiki externe pour lier les lots de travaux à des pages wiki existantes ou en créer de nouvelles directement à partir d'OpenProject. label_wiki_platform: Fournisseur de wiki @@ -78,20 +76,20 @@ fr: xwiki_instance: Instance XWiki new_provider_html: Lisez notre documentation sur [la configuration d'une intégration XWiki](docs_url) pour en savoir plus. sections: - general_information: Basic details - oauth_configuration: OAuth configuration + general_information: Informations de base + oauth_configuration: Configuration OAuth oauth: openproject_oauth: OAuth OpenProject xwiki: oauth: - openproject_oauth_description: Allow XWiki to access OpenProject data using an OAuth application. Copy the credentials below into your XWiki instance. - provider_oauth: XWiki OAuth - provider_oauth_description: Allow OpenProject to access XWiki data using an OAuth application. Enter the client credentials from your XWiki OAuth application. - openproject_oauth_description: Allow XWiki to access OpenProject data using an OAuth. - xwiki_oauth: XWiki OAuth - xwiki_oauth_description: Allow OpenProject to access XWiki data using an OAuth. + openproject_oauth_description: Permettre à XWiki d'accéder aux données d'OpenProject en utilisant une application OAuth. Copiez les informations d'identification ci-dessous dans votre instance XWiki. + provider_oauth: OAuth XWiki + provider_oauth_description: Permettre à OpenProject d'accéder aux données XWiki en utilisant une application OAuth. Saisissez les informations d'identification du client de votre application XWiki OAuth. + openproject_oauth_description: Autoriser XWiki à accéder aux données d'OpenProject en utilisant un OAuth. + xwiki_oauth: OAuth XWiki + xwiki_oauth_description: Autoriser OpenProject à accéder aux données XWiki en utilisant un OAuth. delete: title: Supprimer le fournisseur de wiki warning_html: Vous êtes sur le point de supprimer %{wiki_provider}. Cette action est irréversible. macro: - page_not_found: Linked wiki page no longer available + page_not_found: La page wiki liée n'est plus disponible diff --git a/modules/wikis/config/locales/crowdin/he.yml b/modules/wikis/config/locales/crowdin/he.yml index 0e1670e564e..70e7d82447e 100644 --- a/modules/wikis/config/locales/crowdin/he.yml +++ b/modules/wikis/config/locales/crowdin/he.yml @@ -34,16 +34,14 @@ he: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/hi.yml b/modules/wikis/config/locales/crowdin/hi.yml index cc67cb6fe8b..73102a756fd 100644 --- a/modules/wikis/config/locales/crowdin/hi.yml +++ b/modules/wikis/config/locales/crowdin/hi.yml @@ -30,16 +30,14 @@ hi: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/hr.yml b/modules/wikis/config/locales/crowdin/hr.yml index d3c18c5ba8a..789de77f986 100644 --- a/modules/wikis/config/locales/crowdin/hr.yml +++ b/modules/wikis/config/locales/crowdin/hr.yml @@ -32,16 +32,14 @@ hr: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/hu.yml b/modules/wikis/config/locales/crowdin/hu.yml index 7a1afda2566..8fc9d775bec 100644 --- a/modules/wikis/config/locales/crowdin/hu.yml +++ b/modules/wikis/config/locales/crowdin/hu.yml @@ -30,16 +30,14 @@ hu: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/id.yml b/modules/wikis/config/locales/crowdin/id.yml index 46e973e43cf..c3b1487bb9c 100644 --- a/modules/wikis/config/locales/crowdin/id.yml +++ b/modules/wikis/config/locales/crowdin/id.yml @@ -28,16 +28,14 @@ id: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/it.yml b/modules/wikis/config/locales/crowdin/it.yml index d8245d367d9..896b81f60fb 100644 --- a/modules/wikis/config/locales/crowdin/it.yml +++ b/modules/wikis/config/locales/crowdin/it.yml @@ -30,16 +30,14 @@ it: save_and_continue: Salva e continua done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/ja.yml b/modules/wikis/config/locales/crowdin/ja.yml index 257016b7080..80d0b6de793 100644 --- a/modules/wikis/config/locales/crowdin/ja.yml +++ b/modules/wikis/config/locales/crowdin/ja.yml @@ -28,16 +28,14 @@ ja: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/ka.yml b/modules/wikis/config/locales/crowdin/ka.yml index d8a5b0bbfe0..7948c2f72b9 100644 --- a/modules/wikis/config/locales/crowdin/ka.yml +++ b/modules/wikis/config/locales/crowdin/ka.yml @@ -30,16 +30,14 @@ ka: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/kk.yml b/modules/wikis/config/locales/crowdin/kk.yml index f45192e4dcc..ee027aaa1db 100644 --- a/modules/wikis/config/locales/crowdin/kk.yml +++ b/modules/wikis/config/locales/crowdin/kk.yml @@ -30,16 +30,14 @@ kk: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/ko.yml b/modules/wikis/config/locales/crowdin/ko.yml index ef66d8b362b..c8afa36f238 100644 --- a/modules/wikis/config/locales/crowdin/ko.yml +++ b/modules/wikis/config/locales/crowdin/ko.yml @@ -28,16 +28,14 @@ ko: save_and_continue: 저장 및 계속 done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/lt.yml b/modules/wikis/config/locales/crowdin/lt.yml index 870a8068e27..95f3b2ae8a3 100644 --- a/modules/wikis/config/locales/crowdin/lt.yml +++ b/modules/wikis/config/locales/crowdin/lt.yml @@ -34,16 +34,14 @@ lt: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/lv.yml b/modules/wikis/config/locales/crowdin/lv.yml index b7a85a95ffb..3c095325192 100644 --- a/modules/wikis/config/locales/crowdin/lv.yml +++ b/modules/wikis/config/locales/crowdin/lv.yml @@ -32,16 +32,14 @@ lv: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/mn.yml b/modules/wikis/config/locales/crowdin/mn.yml index 1ca86e95263..d40280e9ae9 100644 --- a/modules/wikis/config/locales/crowdin/mn.yml +++ b/modules/wikis/config/locales/crowdin/mn.yml @@ -30,16 +30,14 @@ mn: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/ms.yml b/modules/wikis/config/locales/crowdin/ms.yml index e4fe8fd7cc4..fabf7b79af6 100644 --- a/modules/wikis/config/locales/crowdin/ms.yml +++ b/modules/wikis/config/locales/crowdin/ms.yml @@ -28,16 +28,14 @@ ms: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/ne.yml b/modules/wikis/config/locales/crowdin/ne.yml index dbb02343071..6e713ed4df2 100644 --- a/modules/wikis/config/locales/crowdin/ne.yml +++ b/modules/wikis/config/locales/crowdin/ne.yml @@ -30,16 +30,14 @@ ne: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/nl.yml b/modules/wikis/config/locales/crowdin/nl.yml index 2f124b2b102..51b56d395dc 100644 --- a/modules/wikis/config/locales/crowdin/nl.yml +++ b/modules/wikis/config/locales/crowdin/nl.yml @@ -30,16 +30,14 @@ nl: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/no.yml b/modules/wikis/config/locales/crowdin/no.yml index fc4f9b53b4c..147458ae79c 100644 --- a/modules/wikis/config/locales/crowdin/no.yml +++ b/modules/wikis/config/locales/crowdin/no.yml @@ -30,16 +30,14 @@ save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/pl.yml b/modules/wikis/config/locales/crowdin/pl.yml index 421e14f3a03..110c191f7a6 100644 --- a/modules/wikis/config/locales/crowdin/pl.yml +++ b/modules/wikis/config/locales/crowdin/pl.yml @@ -34,16 +34,14 @@ pl: save_and_continue: Zapisz i kontynuuj done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/pt-BR.yml b/modules/wikis/config/locales/crowdin/pt-BR.yml index afc3a4df744..edac4e561a1 100644 --- a/modules/wikis/config/locales/crowdin/pt-BR.yml +++ b/modules/wikis/config/locales/crowdin/pt-BR.yml @@ -30,16 +30,14 @@ pt-BR: save_and_continue: Salvar e continuar done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: Sem links embutidos - empty_text: Links embutidos para páginas wiki na descrição do pacote de trabalho também aparecerão automaticamente aqui. - heading: Links de página embutidos + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/pt-PT.yml b/modules/wikis/config/locales/crowdin/pt-PT.yml index ee1f26573ce..a64a123812e 100644 --- a/modules/wikis/config/locales/crowdin/pt-PT.yml +++ b/modules/wikis/config/locales/crowdin/pt-PT.yml @@ -30,16 +30,14 @@ pt-PT: save_and_continue: Guardar e continuar done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/ro.yml b/modules/wikis/config/locales/crowdin/ro.yml index 996a42f7548..7d6ff3de9dd 100644 --- a/modules/wikis/config/locales/crowdin/ro.yml +++ b/modules/wikis/config/locales/crowdin/ro.yml @@ -32,16 +32,14 @@ ro: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/ru.yml b/modules/wikis/config/locales/crowdin/ru.yml index d07e6dfae62..5ec7a8acba2 100644 --- a/modules/wikis/config/locales/crowdin/ru.yml +++ b/modules/wikis/config/locales/crowdin/ru.yml @@ -34,16 +34,14 @@ ru: save_and_continue: Сохранить и продолжить done_continue: Done, continue wiki_page: Wiki-страница - inline_page_links_component: - empty_heading: Нет встроенных ссылок - empty_text: Встроенные ссылки на вики-страницы в описании пакета работ также будут автоматически отображаться здесь. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Удалить ссылку на страницу relation_page_links_component: empty_heading: Нет связанных страниц empty_text: Добавьте ссылки вручную на другие связанные вики-страницы. - heading: Связанные страницы oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/rw.yml b/modules/wikis/config/locales/crowdin/rw.yml index e000b2e6436..2d68881104e 100644 --- a/modules/wikis/config/locales/crowdin/rw.yml +++ b/modules/wikis/config/locales/crowdin/rw.yml @@ -30,16 +30,14 @@ rw: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/si.yml b/modules/wikis/config/locales/crowdin/si.yml index 9f4400debe8..991a2f2427a 100644 --- a/modules/wikis/config/locales/crowdin/si.yml +++ b/modules/wikis/config/locales/crowdin/si.yml @@ -30,16 +30,14 @@ si: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/sk.yml b/modules/wikis/config/locales/crowdin/sk.yml index 713b35e23fd..097a284e74e 100644 --- a/modules/wikis/config/locales/crowdin/sk.yml +++ b/modules/wikis/config/locales/crowdin/sk.yml @@ -34,16 +34,14 @@ sk: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/sl.yml b/modules/wikis/config/locales/crowdin/sl.yml index 222777b6645..fefacfcd0ac 100644 --- a/modules/wikis/config/locales/crowdin/sl.yml +++ b/modules/wikis/config/locales/crowdin/sl.yml @@ -34,16 +34,14 @@ sl: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/sr.yml b/modules/wikis/config/locales/crowdin/sr.yml index ec31602cfb1..e20f9c4c22b 100644 --- a/modules/wikis/config/locales/crowdin/sr.yml +++ b/modules/wikis/config/locales/crowdin/sr.yml @@ -32,16 +32,14 @@ sr: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/sv.yml b/modules/wikis/config/locales/crowdin/sv.yml index dc5579b92a1..d811d20cfa5 100644 --- a/modules/wikis/config/locales/crowdin/sv.yml +++ b/modules/wikis/config/locales/crowdin/sv.yml @@ -30,16 +30,14 @@ sv: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/th.yml b/modules/wikis/config/locales/crowdin/th.yml index 7d628fb1230..807fbefa473 100644 --- a/modules/wikis/config/locales/crowdin/th.yml +++ b/modules/wikis/config/locales/crowdin/th.yml @@ -28,16 +28,14 @@ th: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/tr.yml b/modules/wikis/config/locales/crowdin/tr.yml index 70eedf6e6fd..54c4d5ff9ab 100644 --- a/modules/wikis/config/locales/crowdin/tr.yml +++ b/modules/wikis/config/locales/crowdin/tr.yml @@ -30,16 +30,14 @@ tr: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/uk.yml b/modules/wikis/config/locales/crowdin/uk.yml index 9766d953f42..9a4d3c5efc8 100644 --- a/modules/wikis/config/locales/crowdin/uk.yml +++ b/modules/wikis/config/locales/crowdin/uk.yml @@ -34,16 +34,14 @@ uk: save_and_continue: Зберегти та продовжити done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/uz.yml b/modules/wikis/config/locales/crowdin/uz.yml index d20796c3a39..138b2125d19 100644 --- a/modules/wikis/config/locales/crowdin/uz.yml +++ b/modules/wikis/config/locales/crowdin/uz.yml @@ -30,16 +30,14 @@ uz: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/vi.yml b/modules/wikis/config/locales/crowdin/vi.yml index 301ef6e79c5..a63d5084f4b 100644 --- a/modules/wikis/config/locales/crowdin/vi.yml +++ b/modules/wikis/config/locales/crowdin/vi.yml @@ -28,16 +28,14 @@ vi: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/zh-CN.yml b/modules/wikis/config/locales/crowdin/zh-CN.yml index c9124015e25..f411d09569d 100644 --- a/modules/wikis/config/locales/crowdin/zh-CN.yml +++ b/modules/wikis/config/locales/crowdin/zh-CN.yml @@ -28,16 +28,14 @@ zh-CN: save_and_continue: 保存并继续 done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/wikis/config/locales/crowdin/zh-TW.yml b/modules/wikis/config/locales/crowdin/zh-TW.yml index b1d34c940ed..aced99e2da1 100644 --- a/modules/wikis/config/locales/crowdin/zh-TW.yml +++ b/modules/wikis/config/locales/crowdin/zh-TW.yml @@ -28,16 +28,14 @@ zh-TW: save_and_continue: Save and continue done_continue: Done, continue wiki_page: Wiki page - inline_page_links_component: - empty_heading: No inline links - empty_text: Inline links to wiki pages in the work package description will automatically also show up here. - heading: Inline page links + work_package_wikis_tab_component: + inline_page_links: Inline page links + referencing_pages: Referenced in page_link_component: remove: Remove page link relation_page_links_component: empty_heading: No related pages empty_text: Manually add links to other related wiki pages. - heading: Related pages oauth_login_component: connect_button: Connect %{provider} account admin: diff --git a/modules/xls_export/config/locales/crowdin/zh-CN.yml b/modules/xls_export/config/locales/crowdin/zh-CN.yml index 8048888f698..b6de4f90804 100644 --- a/modules/xls_export/config/locales/crowdin/zh-CN.yml +++ b/modules/xls_export/config/locales/crowdin/zh-CN.yml @@ -14,4 +14,4 @@ zh-CN: xls_with_relations: 带关系的 XLS xls_export: child_of: 此项的子项 - parent_of: 此项的父级 + parent_of: 此项的父项 From cc860737145fb237413b5b5a31c561ef97fdd7a8 Mon Sep 17 00:00:00 2001 From: OpenProject Actions CI Date: Sun, 26 Apr 2026 04:12:25 +0000 Subject: [PATCH 099/280] update locales from crowdin [ci skip] --- modules/wikis/config/locales/crowdin/fr.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/wikis/config/locales/crowdin/fr.yml b/modules/wikis/config/locales/crowdin/fr.yml index e42d3261dc8..734a02a8129 100644 --- a/modules/wikis/config/locales/crowdin/fr.yml +++ b/modules/wikis/config/locales/crowdin/fr.yml @@ -31,8 +31,8 @@ fr: done_continue: Terminé, continuer wiki_page: Page wiki work_package_wikis_tab_component: - inline_page_links: Inline page links - referencing_pages: Referenced in + inline_page_links: Liens intégrés dans la page + referencing_pages: Référencé dans page_link_component: remove: Supprimer le lien de la page relation_page_links_component: From 43007349dbbaba0d48bc32367938f1dbeb4c0200 Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Sun, 26 Apr 2026 18:32:57 +0200 Subject: [PATCH 100/280] properly pass multi-word arguments to commands --- bin/compose | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/compose b/bin/compose index 66790402c8b..f5e4d56799f 100755 --- a/bin/compose +++ b/bin/compose @@ -91,5 +91,5 @@ elif [[ "$1" = "rspec" ]]; then $DOCKER_COMPOSE -f $COMPOSE_FILE exec backend-test bundle exec rspec "${@:2}" else - $DOCKER_COMPOSE -f $COMPOSE_FILE $* + $DOCKER_COMPOSE -f $COMPOSE_FILE "$@" fi From cb1beb1078cd163748214178a4cf02f1ee3852ac Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Sun, 26 Apr 2026 17:58:11 +0200 Subject: [PATCH 101/280] Change default DB pool settings in local dev setup --- config/database.yml.example | 2 +- config/initializers/database_pool_size.rb | 34 +++++++++++++++++++---- docker-compose.yml | 2 +- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/config/database.yml.example b/config/database.yml.example index 2350dd56640..8a897bf14c8 100644 --- a/config/database.yml.example +++ b/config/database.yml.example @@ -38,7 +38,7 @@ development: adapter: postgresql encoding: unicode database: openproject_development - pool: 5 + pool: 100 username: openproject_development password: diff --git a/config/initializers/database_pool_size.rb b/config/initializers/database_pool_size.rb index da9aaa73a1b..1bd19c14761 100644 --- a/config/initializers/database_pool_size.rb +++ b/config/initializers/database_pool_size.rb @@ -28,12 +28,34 @@ # See COPYRIGHT and LICENSE files for more details. #++ -config = Rails.env.production? && Rails.application.config.database_configuration[Rails.env] -pool_size = config && [OpenProject::Configuration.web_max_threads + 1, config["pool"].to_i].max +if Rails.env.production? + config = Rails.application.config.database_configuration[Rails.env] + pool_size = config && [OpenProject::Configuration.web_max_threads + 1, config["pool"].to_i].max -# make sure we have enough connections in the pool for each thread and then some -if pool_size && pool_size > ActiveRecord::Base.connection_pool.size - Rails.logger.info { "Increasing database pool size to #{pool_size} to match max threads" } + # make sure we have enough connections in the pool for each thread and then some + if pool_size && pool_size > ActiveRecord::Base.connection_pool.size + Rails.logger.info { "Increasing database pool size to #{pool_size} to match max threads" } - ActiveRecord::Base.establish_connection config.merge(pool: pool_size) + ActiveRecord::Base.establish_connection config.merge(pool: pool_size) + end +end + +# Per GoodJob's own recommendation (README "Database connections"), the pool must +# cover web threads, job threads, and GoodJob utility connections: 1 for the +# Notifier (LISTEN/NOTIFY) plus GoodJob::SharedExecutor::MAX_THREADS for cron/executor. +# The pool size is a ceiling — Rails creates connections lazily — so setting it +# to a large constant like 100 is the simplest safe choice (https://island94.org/2024/09/secret-to-rails-database-connection-pool-size). +if Rails.env.local? + utility_connections = 1 + GoodJob::SharedExecutor::MAX_THREADS + required_pool_size = OpenProject::Configuration.web_max_threads + + OpenProject::Configuration.good_job_max_threads + + utility_connections + + if ActiveRecord::Base.connection_pool.size < required_pool_size + raise "DB pool (#{ActiveRecord::Base.connection_pool.size}) too small — need at least #{required_pool_size} " \ + "(web_max_threads #{OpenProject::Configuration.web_max_threads} + " \ + "good_job_max_threads #{OpenProject::Configuration.good_job_max_threads} + " \ + "#{utility_connections} utility). " \ + "Set pool: 100 in database.yml or ?pool=100 in DATABASE_URL." + end end diff --git a/docker-compose.yml b/docker-compose.yml index c7c9ad81806..fb409e6138d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -42,7 +42,7 @@ x-op-backend: &backend OPENPROJECT_CACHE__MEMCACHE__SERVER: cache:11211 OPENPROJECT_RAILS__CACHE__STORE: file_store OPENPROJECT_RAILS__RELATIVE__URL__ROOT: "${OPENPROJECT_RAILS__RELATIVE__URL__ROOT:-}" - DATABASE_URL: postgresql://${DB_USERNAME:-postgres}:${DB_PASSWORD:-postgres}@${DB_HOST:-db}:${DB_PORT:-5432}/${DB_DATABASE:-openproject} + DATABASE_URL: postgresql://${DB_USERNAME:-postgres}:${DB_PASSWORD:-postgres}@${DB_HOST:-db}:${DB_PORT:-5432}/${DB_DATABASE:-openproject}?pool=100 OPENPROJECT_EDITION: ${OPENPROJECT_EDITION:-standard} OPENPROJECT_WEB_MAX__THREADS: 1 OPENPROJECT_WEB_MIN__THREADS: 1 From f9f7d0cafc2d3a630f062d23a43059cd3122ef3e Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Sun, 26 Apr 2026 18:26:45 +0200 Subject: [PATCH 102/280] adjust the initializer --- config/initializers/database_pool_size.rb | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/config/initializers/database_pool_size.rb b/config/initializers/database_pool_size.rb index 1bd19c14761..6e8465539b2 100644 --- a/config/initializers/database_pool_size.rb +++ b/config/initializers/database_pool_size.rb @@ -40,13 +40,9 @@ if Rails.env.production? end end -# Per GoodJob's own recommendation (README "Database connections"), the pool must -# cover web threads, job threads, and GoodJob utility connections: 1 for the -# Notifier (LISTEN/NOTIFY) plus GoodJob::SharedExecutor::MAX_THREADS for cron/executor. -# The pool size is a ceiling — Rails creates connections lazily — so setting it -# to a large constant like 100 is the simplest safe choice (https://island94.org/2024/09/secret-to-rails-database-connection-pool-size). +# Raise if we encounter an under-provisioned dev setup if Rails.env.local? - utility_connections = 1 + GoodJob::SharedExecutor::MAX_THREADS + utility_connections = 1 + GoodJob::SharedExecutor::MAX_THREADS # based on GoodJob documentation required_pool_size = OpenProject::Configuration.web_max_threads + OpenProject::Configuration.good_job_max_threads + utility_connections @@ -56,6 +52,6 @@ if Rails.env.local? "(web_max_threads #{OpenProject::Configuration.web_max_threads} + " \ "good_job_max_threads #{OpenProject::Configuration.good_job_max_threads} + " \ "#{utility_connections} utility). " \ - "Set pool: 100 in database.yml or ?pool=100 in DATABASE_URL." + "Please adjust the pool parameter in database.yml or \"?pool=N\" parameter in DATABASE_URL." end end From eaa36d7da390bdf7772dc1ab79681d0db7809c8f Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Sun, 26 Apr 2026 18:36:39 +0200 Subject: [PATCH 103/280] just warn instead of raise --- config/initializers/database_pool_size.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config/initializers/database_pool_size.rb b/config/initializers/database_pool_size.rb index 6e8465539b2..4c35f7c0010 100644 --- a/config/initializers/database_pool_size.rb +++ b/config/initializers/database_pool_size.rb @@ -48,10 +48,10 @@ if Rails.env.local? utility_connections if ActiveRecord::Base.connection_pool.size < required_pool_size - raise "DB pool (#{ActiveRecord::Base.connection_pool.size}) too small — need at least #{required_pool_size} " \ - "(web_max_threads #{OpenProject::Configuration.web_max_threads} + " \ - "good_job_max_threads #{OpenProject::Configuration.good_job_max_threads} + " \ - "#{utility_connections} utility). " \ - "Please adjust the pool parameter in database.yml or \"?pool=N\" parameter in DATABASE_URL." + Rails.logger.warn { "DB pool (#{ActiveRecord::Base.connection_pool.size}) too small — need at least #{required_pool_size} " \ + "(web_max_threads #{OpenProject::Configuration.web_max_threads} + " \ + "good_job_max_threads #{OpenProject::Configuration.good_job_max_threads} + " \ + "#{utility_connections} utility). " \ + "Please adjust the pool parameter in database.yml or \"?pool=N\" parameter in DATABASE_URL." } end end From 092d067dde8dd672422e4784cdbd530e21688ed9 Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Sun, 26 Apr 2026 18:39:47 +0200 Subject: [PATCH 104/280] fix the warn --- config/initializers/database_pool_size.rb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/config/initializers/database_pool_size.rb b/config/initializers/database_pool_size.rb index 4c35f7c0010..5f309721324 100644 --- a/config/initializers/database_pool_size.rb +++ b/config/initializers/database_pool_size.rb @@ -48,10 +48,13 @@ if Rails.env.local? utility_connections if ActiveRecord::Base.connection_pool.size < required_pool_size - Rails.logger.warn { "DB pool (#{ActiveRecord::Base.connection_pool.size}) too small — need at least #{required_pool_size} " \ - "(web_max_threads #{OpenProject::Configuration.web_max_threads} + " \ - "good_job_max_threads #{OpenProject::Configuration.good_job_max_threads} + " \ - "#{utility_connections} utility). " \ - "Please adjust the pool parameter in database.yml or \"?pool=N\" parameter in DATABASE_URL." } + Rails.logger.warn do + "DB pool size of #{ActiveRecord::Base.connection_pool.size} is too small and could cause problems. " \ + "The recommended sizing is at least #{required_pool_size} " \ + "(#{OpenProject::Configuration.web_max_threads} for web_max_threads + " \ + "#{OpenProject::Configuration.good_job_max_threads} for web_max_threads + " \ + "#{utility_connections} for GoodJob utility connections). " \ + "Please adjust the pool parameter in database.yml or \"?pool=N\" parameter in DATABASE_URL." + end end end From 7af9ae651367e3a7eb8021e1c85722f5ed374c84 Mon Sep 17 00:00:00 2001 From: Tomas Hykel Date: Sun, 26 Apr 2026 20:28:19 +0200 Subject: [PATCH 105/280] ci bump From 76fc1b227f98f160da3d813877a84e8a41754987 Mon Sep 17 00:00:00 2001 From: Tom Hykel Date: Sun, 26 Apr 2026 22:22:34 +0200 Subject: [PATCH 106/280] Apply suggestion from @thykel --- config/initializers/database_pool_size.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/database_pool_size.rb b/config/initializers/database_pool_size.rb index 5f309721324..9248ae85ad3 100644 --- a/config/initializers/database_pool_size.rb +++ b/config/initializers/database_pool_size.rb @@ -40,7 +40,7 @@ if Rails.env.production? end end -# Raise if we encounter an under-provisioned dev setup +# Log a warning if we encounter an under-provisioned dev setup if Rails.env.local? utility_connections = 1 + GoodJob::SharedExecutor::MAX_THREADS # based on GoodJob documentation required_pool_size = OpenProject::Configuration.web_max_threads + From e7f87da1355ca07cf1f9025247eeb17106d0f7c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 05:56:29 +0000 Subject: [PATCH 107/280] Bump mcp from 0.10.0 to 0.12.0 Bumps [mcp](https://github.com/modelcontextprotocol/ruby-sdk) from 0.10.0 to 0.12.0. - [Release notes](https://github.com/modelcontextprotocol/ruby-sdk/releases) - [Changelog](https://github.com/modelcontextprotocol/ruby-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/modelcontextprotocol/ruby-sdk/compare/v0.10.0...v0.12.0) --- updated-dependencies: - dependency-name: mcp dependency-version: 0.12.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 7bd097c44b2..a30fb5d70e7 100644 --- a/Gemfile +++ b/Gemfile @@ -161,7 +161,7 @@ gem "ttfunk", "~> 1.7.0" # remove after https://github.com/prawnpdf/prawn/issues # prawn implicitly depends on matrix gem no longer in ruby core with 3.1 gem "matrix", "~> 0.4.3" -gem "mcp", "~> 0.10.0" +gem "mcp", "~> 0.12.0" gem "meta-tags", "~> 2.23.0" diff --git a/Gemfile.lock b/Gemfile.lock index 7036ec9b164..080d0fcc0c6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -828,7 +828,7 @@ GEM marcel (1.0.4) markly (0.16.0) matrix (0.4.3) - mcp (0.10.0) + mcp (0.12.0) json-schema (>= 4.1) messagebird-rest (5.0.0) jwt (< 4) @@ -1657,7 +1657,7 @@ DEPENDENCIES mail (= 2.9.0) markly (~> 0.15) matrix (~> 0.4.3) - mcp (~> 0.10.0) + mcp (~> 0.12.0) md_to_pdf! meta-tags (~> 2.23.0) mini_magick (~> 5.3.0) @@ -2014,7 +2014,7 @@ CHECKSUMS marcel (1.0.4) sha256=0d5649feb64b8f19f3d3468b96c680bae9746335d02194270287868a661516a4 markly (0.16.0) sha256=6f70d79e385b1efc9e171f74c81628826259039fe6c778e03c3924c71dac5511 matrix (0.4.3) sha256=a0d5ab7ddcc1973ff690ab361b67f359acbb16958d1dc072b8b956a286564c5b - mcp (0.10.0) sha256=09b9231eb16dff75cc7b8a95817c8acfcf4d1cab8d34f350671e43e765242b57 + mcp (0.12.0) sha256=9ebbb0e39dda4845db720c7efbafdaca7a6db8f1e42d17bcc6f9df78733d0f2e md_to_pdf (0.2.6) messagebird-rest (5.0.0) sha256=da4cc1efba3d5e4aa021fad07426c2cb6b326ce5670da5104bb8f6056a39d59c meta-tags (2.23.0) sha256=ffe78b5bee398de4ff5ac3316f5a786049538a651643b8476def06c3acc762c1 From d537dc26c5f41328f86d9d0e533b3bd0f7f2755c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 05:58:16 +0000 Subject: [PATCH 108/280] Bump fog-aws from 3.33.1 to 3.33.2 Bumps [fog-aws](https://github.com/fog/fog-aws) from 3.33.1 to 3.33.2. - [Changelog](https://github.com/fog/fog-aws/blob/master/CHANGELOG.md) - [Commits](https://github.com/fog/fog-aws/compare/v3.33.1...v3.33.2) --- updated-dependencies: - dependency-name: fog-aws dependency-version: 3.33.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7036ec9b164..1d3c05f194b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -603,7 +603,7 @@ GEM ffi (1.17.4-x86_64-linux-gnu) ffi (1.17.4-x86_64-linux-musl) flamegraph (0.9.5) - fog-aws (3.33.1) + fog-aws (3.33.2) base64 (>= 0.2, < 0.4) fog-core (~> 2.6) fog-json (~> 1.1) @@ -613,7 +613,7 @@ GEM excon (~> 1.0) formatador (>= 0.2, < 2.0) mime-types - fog-json (1.2.0) + fog-json (1.3.0) fog-core multi_json (~> 1.10) fog-xml (0.1.5) @@ -838,7 +838,7 @@ GEM mime-types (3.7.0) logger mime-types-data (~> 3.2025, >= 3.2025.0507) - mime-types-data (3.2026.0407) + mime-types-data (3.2026.0414) mini_magick (5.3.1) logger mini_mime (1.1.5) @@ -1937,9 +1937,9 @@ CHECKSUMS ffi (1.17.4-x86_64-linux-gnu) sha256=9d3db14c2eae074b382fa9c083fe95aec6e0a1451da249eab096c34002bc752d ffi (1.17.4-x86_64-linux-musl) sha256=3fdf9888483de005f8ef8d1cf2d3b20d86626af206cbf780f6a6a12439a9c49e flamegraph (0.9.5) sha256=a683020637ffa0e14a72640fa41babf14d926bfeaed87e31907cfd06ab2de8dc - fog-aws (3.33.1) sha256=20c7336ed978be6cbf2765844c53f30676288af98f1cb49945aa7b7b45a799a5 + fog-aws (3.33.2) sha256=bd9c1b045f19daad8942d65d7e9c9c7c1cd144beeabde63e34df7c58a9bb0f5b fog-core (2.6.0) sha256=3fe08aa83a23cddce42f4ba412040c08f890d7ff04c175c0ee59119371245be6 - fog-json (1.2.0) sha256=dd4f5ab362dbc72b687240bba9d2dd841d5dfe888a285797533f85c03ea548fe + fog-json (1.3.0) sha256=8c2e4feb221c14f92ceeffb0aa5c8b6e8dd7c614a9141dfe7905f2dffebea217 fog-xml (0.1.5) sha256=52b9fea10701461dd3eaf9d9839702169b418dbbf50426786b9b74fade373bd6 formatador (1.2.3) sha256=19fa898133c2c26cdbb5d09f6998c1e137ad9427a046663e55adfe18b950d894 friendly_id (5.6.0) sha256=28e221cd53fbd21586321164c1c6fd0c9ba8dde13969cb2363679f44726bb0c3 @@ -2020,7 +2020,7 @@ CHECKSUMS meta-tags (2.23.0) sha256=ffe78b5bee398de4ff5ac3316f5a786049538a651643b8476def06c3acc762c1 method_source (1.1.0) sha256=181301c9c45b731b4769bc81e8860e72f9161ad7d66dd99103c9ab84f560f5c5 mime-types (3.7.0) sha256=dcebf61c246f08e15a4de34e386ebe8233791e868564a470c3fe77c00eed5e56 - mime-types-data (3.2026.0407) sha256=909395cf029731355136527aa11bf58ea0655ee782359ccbf32c66238a8cadb3 + mime-types-data (3.2026.0414) sha256=461c4c655373a44bd6c5fe54bcf5b7776026ea96e808144b1ec465c4b99148cc mini_magick (5.3.1) sha256=29395dfd76badcabb6403ee5aff6f681e867074f8f28ce08d78661e9e4a351c4 mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef minitest (6.0.5) sha256=f007d7246bf4feea549502842cd7c6aba8851cdc9c90ba06de9c476c0d01155c From bf214a8ecb83d44703f3c2d5b84a0a3991bd199f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 05:58:54 +0000 Subject: [PATCH 109/280] Bump counter_culture from 3.13.0 to 3.13.1 Bumps [counter_culture](https://github.com/magnusvk/counter_culture) from 3.13.0 to 3.13.1. - [Changelog](https://github.com/magnusvk/counter_culture/blob/main/CHANGELOG.md) - [Commits](https://github.com/magnusvk/counter_culture/compare/v3.13.0...v3.13.1) --- updated-dependencies: - dependency-name: counter_culture dependency-version: 3.13.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 7bd097c44b2..5b58625d852 100644 --- a/Gemfile +++ b/Gemfile @@ -405,7 +405,7 @@ gem "disposable", "~> 0.6.2" gem "dentaku", "~> 3.5" # Used for more powerful counter caches -gem "counter_culture", "~> 3.11" +gem "counter_culture", "~> 3.13" group :postgres do gem "pg", "~> 1.6.2" diff --git a/Gemfile.lock b/Gemfile.lock index 7036ec9b164..8b11fabe9e5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -462,7 +462,7 @@ GEM cose (1.3.1) cbor (~> 0.5.9) openssl-signature_algorithm (~> 1.0) - counter_culture (3.13.0) + counter_culture (3.13.1) activerecord (>= 4.2) activesupport (>= 4.2) crack (1.0.1) @@ -1604,7 +1604,7 @@ DEPENDENCIES compare-xml (~> 0.66) connection_pool (~> 3.0.2) costs! - counter_culture (~> 3.11) + counter_culture (~> 3.13) csv (~> 3.3) cuprite (~> 0.17.0) daemons @@ -1877,7 +1877,7 @@ CHECKSUMS cookiejar (0.3.4) sha256=11b16acfc4baf7a0f463c21a6212005e04e25f5554d4d9f24d97f3492dfda0df cose (1.3.1) sha256=d5d4dbcd6b035d513edc4e1ab9bc10e9ce13b4011c96e3d1b8fe5e6413fd6de5 costs (1.0.0) - counter_culture (3.13.0) sha256=a2cde20642ddd27aec9ff0c09b73fa5b4fd729da368079e67c177bface3148bf + counter_culture (3.13.1) sha256=c297961933d9a9b96683fc298d68fde44039eca7c5876a2b05c3b180fe1c6328 crack (1.0.1) sha256=ff4a10390cd31d66440b7524eb1841874db86201d5b70032028553130b6d4c7e crass (1.0.6) sha256=dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d css_parser (2.0.0) sha256=af5c759a127b125b635006a6c6c2e05b96a1ebdeec21b3c415fd5f09ec714a0a From de15253cc2c8d136cde529c07fd7920cb30715e8 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Mon, 27 Apr 2026 09:20:11 +0200 Subject: [PATCH 110/280] Fix DynamicFindBy issues in our Codebase --- .rubocop.yml | 13 ++++++++----- app/models/work_packages/costs.rb | 2 +- .../strategies/warden/user_api_token.rb | 2 +- modules/bim/app/models/bim/bcf/viewpoint.rb | 2 +- modules/bim/app/models/bim/ifc_models/ifc_model.rb | 2 +- modules/budgets/spec/models/budget_spec.rb | 4 ++-- .../notification_handler/issue_hook.rb | 4 ++-- .../notification_handler/merge_request_hook.rb | 4 ++-- .../notification_handler/push_hook.rb | 4 ++-- .../notification_handler/system_hook.rb | 4 ++-- 10 files changed, 22 insertions(+), 19 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index ed6d645fa8d..5b55c2a7ae1 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -60,7 +60,7 @@ Layout/MultilineOperationIndentation: Enabled: false Lint/AmbiguousBlockAssociation: - AllowedMethods: [change] + AllowedMethods: [ change ] Lint/AmbiguousOperator: Enabled: false @@ -147,9 +147,9 @@ Naming/PredicatePrefix: Naming/VariableNumber: AllowedPatterns: - - '\w_20\d\d' # allow dates like christmas_2022 or date_2034_04_12 - - '\w\d++(_\d++)+' # allow hierarchical data like child1_2_5 (second + in regex is possessive qualifier) - - 'custom_field_\d+' # allow custom field method names to be called with send :custom_field_1001 + - "\\w_20\\d\\d" # allow dates like christmas_2022 or date_2034_04_12 + - "\\w\\d++(_\\d++)+" # allow hierarchical data like child1_2_5 (second + in regex is possessive qualifier) + - "custom_field_\\d+" # allow custom field method names to be called with send :custom_field_1001 OpenProject/AddPreviewForViewComponent: Include: @@ -181,6 +181,9 @@ Rails/DynamicFindBy: - find_by_login - find_by_mail - find_by_plaintext_value + - find_by_rss_key + - find_by_unique + - find_by_api_key # Allow reorder to prevent find each cop triggering Rails/FindEach: @@ -402,7 +405,7 @@ Style/FormatString: Enabled: false Style/FormatStringToken: - AllowedMethods: [redirect] + AllowedMethods: [ redirect ] Style/FrozenStringLiteralComment: Enabled: true diff --git a/app/models/work_packages/costs.rb b/app/models/work_packages/costs.rb index 4a9ed1cd631..52a1f942113 100644 --- a/app/models/work_packages/costs.rb +++ b/app/models/work_packages/costs.rb @@ -118,7 +118,7 @@ module WorkPackages::Costs reassign_to = ::WorkPackage .joins(:project) .merge(Project.allowed_to(user, :edit_cost_entries)) - .find_by_id(ids) + .find_by(id: ids) if reassign_to.nil? work_packages.each do |wp| diff --git a/lib_static/open_project/authentication/strategies/warden/user_api_token.rb b/lib_static/open_project/authentication/strategies/warden/user_api_token.rb index 475982bdcc2..62879936f77 100644 --- a/lib_static/open_project/authentication/strategies/warden/user_api_token.rb +++ b/lib_static/open_project/authentication/strategies/warden/user_api_token.rb @@ -51,7 +51,7 @@ module OpenProject end def authenticate! - token = ::Token::API.find_by_plaintext_value(@access_token) # rubocop:disable Rails/DynamicFindBy + token = ::Token::API.find_by_plaintext_value(@access_token) return fail_with_header!(error: "invalid_token") if token.nil? authentication_result(token.user) diff --git a/modules/bim/app/models/bim/bcf/viewpoint.rb b/modules/bim/app/models/bim/bcf/viewpoint.rb index 921a6ae134c..1d983a23f41 100644 --- a/modules/bim/app/models/bim/bcf/viewpoint.rb +++ b/modules/bim/app/models/bim/bcf/viewpoint.rb @@ -58,7 +58,7 @@ module Bim::Bcf if attachments.loaded? attachments.detect { |a| a.description == "snapshot" } else - attachments.find_by_description("snapshot") + attachments.find_by(description: "snapshot") end end diff --git a/modules/bim/app/models/bim/ifc_models/ifc_model.rb b/modules/bim/app/models/bim/ifc_models/ifc_model.rb index 307d0b2b139..8d91f16641b 100644 --- a/modules/bim/app/models/bim/ifc_models/ifc_model.rb +++ b/modules/bim/app/models/bim/ifc_models/ifc_model.rb @@ -60,7 +60,7 @@ module Bim if attachments.loaded? attachments.detect { |a| a.description == key.to_s && !a.marked_for_destruction? } else - attachments.find_by_description(key.to_s) + attachments.find_by(description: key.to_s) end end diff --git a/modules/budgets/spec/models/budget_spec.rb b/modules/budgets/spec/models/budget_spec.rb index c10774f2c7c..f1aeb133558 100644 --- a/modules/budgets/spec/models/budget_spec.rb +++ b/modules/budgets/spec/models/budget_spec.rb @@ -47,8 +47,8 @@ RSpec.describe Budget do budget.destroy end - it { expect(Budget.find_by_id(budget.id)).to be_nil } - it { expect(WorkPackage.find_by_id(work_package.id)).to eq(work_package) } + it { expect(described_class.find_by(id: budget.id)).to be_nil } + it { expect(WorkPackage.find_by(id: work_package.id)).to eq(work_package) } it { expect(work_package.reload.budget).to be_nil } end diff --git a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/issue_hook.rb b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/issue_hook.rb index 685dc83da7c..a02f72e34ea 100644 --- a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/issue_hook.rb +++ b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/issue_hook.rb @@ -36,9 +36,9 @@ module OpenProject::GitlabIntegration def process(payload_params) # rubocop:disable Metrics/AbcSize @payload = wrap_payload(payload_params) - user = User.find_by_id(payload.open_project_user_id) + user = User.find_by(id: payload.open_project_user_id) text = [payload.object_attributes.title, payload.object_attributes.description] - .select(&:present?) + .compact_blank .join(" - ") work_packages = find_mentioned_work_packages(text, user) notes = generate_notes(payload) diff --git a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/merge_request_hook.rb b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/merge_request_hook.rb index 4268cd7fd5a..3223b558f54 100644 --- a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/merge_request_hook.rb +++ b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/merge_request_hook.rb @@ -47,9 +47,9 @@ module OpenProject::GitlabIntegration @payload = wrap_payload(payload_params) return unless (accepted_actions.include? payload.object_attributes.action) || (accepted_states.include? payload.object_attributes.state) - user = User.find_by_id(payload.open_project_user_id) + user = User.find_by(id: payload.open_project_user_id) text = [payload.object_attributes.title, payload.object_attributes.description] - .select(&:present?) + .compact_blank .join(" - ") work_packages = find_mentioned_work_packages(text, user) notes = generate_notes(payload) diff --git a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/push_hook.rb b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/push_hook.rb index 81489a81ea2..36c1ae66b2e 100644 --- a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/push_hook.rb +++ b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/push_hook.rb @@ -39,9 +39,9 @@ module OpenProject::GitlabIntegration return nil unless payload.object_kind == "push" payload.commits.each do |commit| - user = User.find_by_id(payload.open_project_user_id) + user = User.find_by(id: payload.open_project_user_id) text = [commit["title"], commit["message"]] - .select(&:present?) + .compact_blank .join(" - ") work_packages = find_mentioned_work_packages(text, user) notes = generate_notes(commit, payload) diff --git a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/system_hook.rb b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/system_hook.rb index 47e4c83a711..569be2e6428 100644 --- a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/system_hook.rb +++ b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/system_hook.rb @@ -39,9 +39,9 @@ module OpenProject::GitlabIntegration return nil unless payload.object_kind == "push" payload.commits.each do |commit| - user = User.find_by_id(payload.open_project_user_id) + user = User.find_by(id: payload.open_project_user_id) text = [commit["title"], commit["message"]] - .select(&:present?) + .compact_blank .join(" - ") work_packages = find_mentioned_work_packages(text, user) notes = generate_notes(commit, payload) From a9a68981538455d93f4a3e9e3deeb1f9532a77a4 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Mon, 27 Apr 2026 09:22:18 +0200 Subject: [PATCH 111/280] Remove inline disables for DynamicFindBy --- .rubocop.yml | 1 + app/contracts/users/base_contract.rb | 2 -- app/controllers/my/sessions_controller.rb | 2 +- app/services/mcp_resources/user.rb | 2 +- lib/api/v3/users/user_representer.rb | 2 +- lib/api/v3/users/users_api.rb | 2 +- .../app/services/calendar/resolve_ical_token_service.rb | 2 -- spec/models/token/ical_token_spec.rb | 6 ------ 8 files changed, 5 insertions(+), 14 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 5b55c2a7ae1..bdb76b9d536 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -183,6 +183,7 @@ Rails/DynamicFindBy: - find_by_plaintext_value - find_by_rss_key - find_by_unique + - find_by_unique! - find_by_api_key # Allow reorder to prevent find each cop triggering diff --git a/app/contracts/users/base_contract.rb b/app/contracts/users/base_contract.rb index 2b1580e5808..876de56e4a8 100644 --- a/app/contracts/users/base_contract.rb +++ b/app/contracts/users/base_contract.rb @@ -102,13 +102,11 @@ module Users errors.add(:identity_url, :error_readonly) if model.user_auth_provider_links.any?(&:changed?) end - # rubocop:disable Rails/DynamicFindBy def existing_auth_source if ldap_auth_source_id && LdapAuthSource.find_by_unique(ldap_auth_source_id).nil? errors.add :auth_source, :error_not_found end end - # rubocop:enable Rails/DynamicFindBy def can_create_or_manage_users? user.allowed_globally?(:manage_user) || user.allowed_globally?(:create_user) diff --git a/app/controllers/my/sessions_controller.rb b/app/controllers/my/sessions_controller.rb index b2ac09c4d35..9246776456d 100644 --- a/app/controllers/my/sessions_controller.rb +++ b/app/controllers/my/sessions_controller.rb @@ -52,7 +52,7 @@ module My token = cookies[OpenProject::Configuration["autologin_cookie_name"]] if token - @current_token = @autologin_tokens.find_by_plaintext_value(token) # rubocop:disable Rails/DynamicFindBy + @current_token = @autologin_tokens.find_by_plaintext_value(token) end end diff --git a/app/services/mcp_resources/user.rb b/app/services/mcp_resources/user.rb index b9f522f10ea..c7fc64b4e79 100644 --- a/app/services/mcp_resources/user.rb +++ b/app/services/mcp_resources/user.rb @@ -37,7 +37,7 @@ module McpResources default_description "Access users of this OpenProject instance." def read(id:) - user = ::User.visible(current_user).find_by_unique(id) # rubocop:disable Rails/DynamicFindBy + user = ::User.visible(current_user).find_by_unique(id) return nil if user.nil? API::V3::Users::UserRepresenter.create(user, current_user:) diff --git a/lib/api/v3/users/user_representer.rb b/lib/api/v3/users/user_representer.rb index 141b1fb9097..56497e0a4b0 100644 --- a/lib/api/v3/users/user_representer.rb +++ b/lib/api/v3/users/user_representer.rb @@ -191,7 +191,7 @@ module API ldap_auth_source_id = parse_auth_source_id(data, "authSource") || parse_auth_source_id(data, "auth_source") if ldap_auth_source_id - auth_source = LdapAuthSource.find_by_unique(ldap_auth_source_id) # rubocop:disable Rails/DynamicFindBy + auth_source = LdapAuthSource.find_by_unique(ldap_auth_source_id) id = auth_source ? auth_source.id : 0 # set id to 0 (as opposed to nil) to produce an auth source not found diff --git a/lib/api/v3/users/users_api.rb b/lib/api/v3/users/users_api.rb index 0e64cc1876d..1088b3d945c 100644 --- a/lib/api/v3/users/users_api.rb +++ b/lib/api/v3/users/users_api.rb @@ -86,7 +86,7 @@ module API if params[:id] == "me" User.current else - User.visible.find_by_unique!(params[:id]) # rubocop:disable Rails/DynamicFindBy + User.visible.find_by_unique!(params[:id]) end end diff --git a/modules/calendar/app/services/calendar/resolve_ical_token_service.rb b/modules/calendar/app/services/calendar/resolve_ical_token_service.rb index 5691a9086cf..e8a7b66727a 100644 --- a/modules/calendar/app/services/calendar/resolve_ical_token_service.rb +++ b/modules/calendar/app/services/calendar/resolve_ical_token_service.rb @@ -34,9 +34,7 @@ module Calendar raise ActiveRecord::RecordNotFound end - # rubocop:disable Rails/DynamicFindBy token = Token::ICal.find_by_plaintext_value(ical_token_string) - # rubocop:enable Rails/DynamicFindBy if token.present? ServiceResult.success(result: token) diff --git a/spec/models/token/ical_token_spec.rb b/spec/models/token/ical_token_spec.rb index 5af4fa17c67..2412766821f 100644 --- a/spec/models/token/ical_token_spec.rb +++ b/spec/models/token/ical_token_spec.rb @@ -152,9 +152,7 @@ RSpec.describe Token::ICal do ical_token1 = described_class.where(user_id: user.id).last - # rubocop:disable Rails/DynamicFindBy expect(described_class.find_by_plaintext_value(ical_token1_value)).to eq ical_token1 - # rubocop:enable Rails/DynamicFindBy expect(ical_token1.query).to eq query expect(ical_token1.ical_token_query_assignment.name).to eq name @@ -185,9 +183,7 @@ RSpec.describe Token::ICal do ical_token1 = described_class.where(user_id: user.id).last - # rubocop:disable Rails/DynamicFindBy expect(described_class.find_by_plaintext_value(ical_token1_value)).to eq ical_token1 - # rubocop:enable Rails/DynamicFindBy end end @@ -277,10 +273,8 @@ RSpec.describe Token::ICal do end it "finds using the plaintext value" do - # rubocop:disable Rails/DynamicFindBy expect(described_class.find_by_plaintext_value(subject.plain_value)).to eq subject expect(described_class.find_by_plaintext_value("foobar")).to be_nil - # rubocop:enable Rails/DynamicFindBy end end end From 1f56a00185cd4ff0518448f75c61cabfe94e9aed Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Fri, 24 Apr 2026 15:57:35 +0200 Subject: [PATCH 112/280] Deduplicate inline page links We do not want to indicate a reference twice, just because it appeared twice in the raw text. What we want to know is THAT something was referenced in the raw text. Therefore we strip duplicates out. --- .../concerns/update_inline_wiki_page_links.rb | 10 +++--- .../work_packages/create_service_spec.rb | 33 +++++++++++++++---- .../work_packages/update_service_spec.rb | 17 ++++++++++ 3 files changed, 47 insertions(+), 13 deletions(-) diff --git a/modules/wikis/app/services/wikis/concerns/update_inline_wiki_page_links.rb b/modules/wikis/app/services/wikis/concerns/update_inline_wiki_page_links.rb index ff2a554541f..4b484aedc4d 100644 --- a/modules/wikis/app/services/wikis/concerns/update_inline_wiki_page_links.rb +++ b/modules/wikis/app/services/wikis/concerns/update_inline_wiki_page_links.rb @@ -34,13 +34,11 @@ module Wikis::Concerns def update_inline_wiki_page_links(linkable, *texts) Wikis::InlinePageLink.where(linkable:).delete_all - texts.each do |text| - find_wiki_links(text).each do |provider_id, identifier| - provider = Wikis::Provider.find_by(id: provider_id) - next if provider.nil? + texts.flat_map { |text| find_wiki_links(text) }.uniq.each do |provider_id, identifier| + provider = Wikis::Provider.find_by(id: provider_id) + next if provider.nil? - Wikis::InlinePageLink.create!(linkable:, provider:, identifier:) - end + Wikis::InlinePageLink.create!(linkable:, provider:, identifier:) end end diff --git a/modules/wikis/spec/services/work_packages/create_service_spec.rb b/modules/wikis/spec/services/work_packages/create_service_spec.rb index 7f8da16d93e..850a47d6302 100644 --- a/modules/wikis/spec/services/work_packages/create_service_spec.rb +++ b/modules/wikis/spec/services/work_packages/create_service_spec.rb @@ -43,16 +43,20 @@ RSpec.describe WorkPackages::CreateService do project:, status: default_status, priority:, - description: <<~TXT - The work package description contains inline links to wiki pages (e.g. [[[#{provider.id}:abc]]]). - It also contains links in a list: - - * [[[#{provider.id}:def]]] - * [[[#{provider.id + 100}:ghi]]] - TXT + description: } end + let(:description) do + <<~TXT + The work package description contains inline links to wiki pages (e.g. [[[#{provider.id}:abc]]]). + It also contains links in a list: + + * [[[#{provider.id}:def]]] + * [[[#{provider.id + 100}:ghi]]] + TXT + end + subject { instance.call(**attributes) } before do @@ -82,4 +86,19 @@ RSpec.describe WorkPackages::CreateService do expect(Wikis::InlinePageLink.pluck(:identifier)).to contain_exactly("abc", "def") end + + context "when the same reference is made twice" do + let(:description) do + <<~TXT + * [[[#{provider.id}:abc]]] + * [[[#{provider.id}:abc]]] + TXT + end + + it "creates the link once" do + subject + + expect(Wikis::InlinePageLink.pluck(:identifier)).to contain_exactly("abc") + end + end end diff --git a/modules/wikis/spec/services/work_packages/update_service_spec.rb b/modules/wikis/spec/services/work_packages/update_service_spec.rb index 1b7a2954566..c93c78c1722 100644 --- a/modules/wikis/spec/services/work_packages/update_service_spec.rb +++ b/modules/wikis/spec/services/work_packages/update_service_spec.rb @@ -71,6 +71,23 @@ RSpec.describe WorkPackages::UpdateService do expect(Wikis::InlinePageLink.pluck(:identifier)).to contain_exactly("abc", "def") end + context "when the same reference is made twice" do + let(:attributes) do + { + description: <<~TXT + * [[[#{provider.id}:abc]]] + * [[[#{provider.id}:abc]]] + TXT + } + end + + it "creates the link once" do + subject + + expect(Wikis::InlinePageLink.pluck(:identifier)).to contain_exactly("abc") + end + end + context "when other page links already exist" do before do create(:inline_wiki_page_link, provider:, linkable: work_package, identifier: "123") From 2c4539ec28e1fb76fa9844bccb4c9e310742f774 Mon Sep 17 00:00:00 2001 From: Jan Sandbrink Date: Fri, 24 Apr 2026 15:58:54 +0200 Subject: [PATCH 113/280] Order inline page links in ascending order This way we ensure that they appear in the same order inside the table that they also appear in the text. If any order is preferable, then it's probably this one. --- modules/wikis/app/services/wikis/page_link_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/wikis/app/services/wikis/page_link_service.rb b/modules/wikis/app/services/wikis/page_link_service.rb index 827c222e0b2..2390e58c328 100644 --- a/modules/wikis/app/services/wikis/page_link_service.rb +++ b/modules/wikis/app/services/wikis/page_link_service.rb @@ -50,7 +50,7 @@ module Wikis def inline_page_link_infos_for(linkable:) InlinePageLink.where(linkable:) - .order(created_at: :desc) + .order(created_at: :asc) .map { page_info(provider: it.provider, identifier: it.identifier) } end From 1139570520c17904607a10c5cd84bf2e1af97fb3 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Mon, 27 Apr 2026 09:36:51 +0200 Subject: [PATCH 114/280] Potential fix for pull request finding 'CodeQL / Database query in a loop' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .../gitlab_integration/notification_handler/push_hook.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/push_hook.rb b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/push_hook.rb index 36c1ae66b2e..44dad9252d9 100644 --- a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/push_hook.rb +++ b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/push_hook.rb @@ -38,8 +38,9 @@ module OpenProject::GitlabIntegration @payload = wrap_payload(payload_params) return nil unless payload.object_kind == "push" + user = User.find_by(id: payload.open_project_user_id) + payload.commits.each do |commit| - user = User.find_by(id: payload.open_project_user_id) text = [commit["title"], commit["message"]] .compact_blank .join(" - ") From b3fd6200d41b2e4ba157288a89164d354870b728 Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Mon, 27 Apr 2026 09:37:13 +0200 Subject: [PATCH 115/280] Potential fix for pull request finding 'CodeQL / Database query in a loop' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .../gitlab_integration/notification_handler/system_hook.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/system_hook.rb b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/system_hook.rb index 569be2e6428..fe5dbb58531 100644 --- a/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/system_hook.rb +++ b/modules/gitlab_integration/lib/open_project/gitlab_integration/notification_handler/system_hook.rb @@ -38,8 +38,9 @@ module OpenProject::GitlabIntegration @payload = wrap_payload(payload_params) return nil unless payload.object_kind == "push" + user = User.find_by(id: payload.open_project_user_id) + payload.commits.each do |commit| - user = User.find_by(id: payload.open_project_user_id) text = [commit["title"], commit["message"]] .compact_blank .join(" - ") From 8262904609f76817aab2af78d995c44bae0ac19c Mon Sep 17 00:00:00 2001 From: Klaus Zanders Date: Mon, 27 Apr 2026 09:37:32 +0200 Subject: [PATCH 116/280] Update .rubocop.yml Co-authored-by: Jan Sandbrink --- .rubocop.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index bdb76b9d536..21b5c43aef7 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -60,7 +60,8 @@ Layout/MultilineOperationIndentation: Enabled: false Lint/AmbiguousBlockAssociation: - AllowedMethods: [ change ] + AllowedMethods: + - change Lint/AmbiguousOperator: Enabled: false @@ -406,7 +407,8 @@ Style/FormatString: Enabled: false Style/FormatStringToken: - AllowedMethods: [ redirect ] + AllowedMethods: + - redirect Style/FrozenStringLiteralComment: Enabled: true From 5f2c3c1397b06ebec45d6e423d5321f167fd0850 Mon Sep 17 00:00:00 2001 From: Henriette Darge Date: Mon, 27 Apr 2026 09:22:02 +0200 Subject: [PATCH 117/280] Create a concern for split create routes and remove angular routes --- config/routes.rb | 9 ++++++++- modules/boards/config/routes.rb | 1 - modules/team_planner/config/routes.rb | 3 +-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index bc9cf3b0732..0b53becfc63 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1131,9 +1131,16 @@ Rails.application.routes.draw do work_package_split_view: true end + concern :with_split_create do + get "details/new", + action: :split_create, + as: :split_create, + work_package_split_create: true + end + resources :notifications, only: :index do collection do - concerns :with_split_view, base_route: :notifications_path + concerns :with_split_view post :mark_all_read resource :menu, module: :notifications, only: %i[show], as: :notifications_menu diff --git a/modules/boards/config/routes.rb b/modules/boards/config/routes.rb index 86e2394c262..69eb822d00d 100644 --- a/modules/boards/config/routes.rb +++ b/modules/boards/config/routes.rb @@ -19,7 +19,6 @@ Rails.application.routes.draw do as: :details, work_package_split_view: true end - get "(/*state)" => "boards/boards#show", on: :member, as: "", constraints: { id: /\d+/ } end end end diff --git a/modules/team_planner/config/routes.rb b/modules/team_planner/config/routes.rb index cb40015d123..74f053ed46a 100644 --- a/modules/team_planner/config/routes.rb +++ b/modules/team_planner/config/routes.rb @@ -11,7 +11,7 @@ Rails.application.routes.draw do scope "projects/:project_id", as: "project" do resources :team_planners, controller: "team_planner/team_planner", - only: %i[index destroy], + only: %i[index destroy show], as: :team_planners do collection do get "menu" => "team_planner/menus#show" @@ -35,7 +35,6 @@ Rails.application.routes.draw do defaults: { tab: "overview" }, as: :details, work_package_split_view: true - get "(/*state)" => "team_planner/team_planner#show", as: "" end end end From f9edc9eedf525839bb129c34944052dc008e7dc7 Mon Sep 17 00:00:00 2001 From: Mir Bhatia Date: Mon, 27 Apr 2026 12:58:18 +0200 Subject: [PATCH 118/280] Add css override to properly show indeterminate state --- frontend/src/global_styles/primer/_overrides.sass | 10 ++++++++++ spec/features/workflows/edit_multi_role_spec.rb | 7 +++++++ spec/support/workflows/edit_helpers.rb | 10 ++++++++++ 3 files changed, 27 insertions(+) diff --git a/frontend/src/global_styles/primer/_overrides.sass b/frontend/src/global_styles/primer/_overrides.sass index a34390c13e3..f9f3869f6c0 100644 --- a/frontend/src/global_styles/primer/_overrides.sass +++ b/frontend/src/global_styles/primer/_overrides.sass @@ -208,3 +208,13 @@ ul.SegmentedControl, & .Banner-actions margin: var(--base-size-8) 0 0 var(--base-size-8) + +// Bug in @openproject/primer-view-components: .FormControl-checkbox:indeterminate +// has no background rule, and :indeterminate:before doesn't cancel checkmarkOut. +.FormControl-checkbox:indeterminate + background: var(--control-checked-bgColor-rest, var(--color-accent-fg)) + border-color: var(--control-checked-borderColor-rest, var(--color-accent-fg)) + + &:before + animation: none + clip-path: inset(0) diff --git a/spec/features/workflows/edit_multi_role_spec.rb b/spec/features/workflows/edit_multi_role_spec.rb index c384bd4a933..d4266d186ef 100644 --- a/spec/features/workflows/edit_multi_role_spec.rb +++ b/spec/features/workflows/edit_multi_role_spec.rb @@ -81,6 +81,13 @@ RSpec.describe "Workflow edit with multiple roles", :js do expect(page).to have_field workflow_checkbox(0, 1), checked: false expect(indeterminate?(workflow_checkbox(0, 1))).to be true end + + it "the checkbox is visible as indeterminate" do + expect(page).to have_field workflow_checkbox(0, 1), checked: false + + expect(indeterminate?(workflow_checkbox(0, 1))).to be true + expect(indeterminate_visible?(workflow_checkbox(0, 1))).to be true + end end context "when roles have different statuses in their workflows" do diff --git a/spec/support/workflows/edit_helpers.rb b/spec/support/workflows/edit_helpers.rb index 441c1f5e5eb..8a80b9708cd 100644 --- a/spec/support/workflows/edit_helpers.rb +++ b/spec/support/workflows/edit_helpers.rb @@ -73,6 +73,16 @@ module Workflows page.evaluate_script("document.getElementById('#{checkbox_id}')?.indeterminate ?? false") end + def indeterminate_visible?(checkbox_id) + page.evaluate_script(<<~JS) + (() => { + const el = document.getElementById('#{checkbox_id}'); + const bg = window.getComputedStyle(el).backgroundColor; + return bg !== 'rgba(0, 0, 0, 0)' && bg !== 'rgb(255, 255, 255)'; + })() + JS + end + def expect_transition(role, from_index, to_index, exist:, author: false, assignee: false) expect(Workflow.exists?(role_id: role.id, type_id: type.id, old_status_id: statuses[from_index].id, From c91486cbc1563ebb8b2c1985deec52c74e520005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Mon, 20 Apr 2026 19:42:05 +0200 Subject: [PATCH 119/280] Bump CKEditor to 48.0 --- frontend/angular.json | 3 +- .../ckeditor/ckeditor-setup.service.ts | 10 +- frontend/src/vendor/ckeditor/ckeditor.css | 5865 +++++++++++++++++ frontend/src/vendor/ckeditor/ckeditor.js | 3 +- frontend/src/vendor/ckeditor/ckeditor.js.map | 2 +- .../src/vendor/ckeditor/translations/af.js | 16 +- .../src/vendor/ckeditor/translations/ar.js | 16 +- .../src/vendor/ckeditor/translations/ast.js | 16 +- .../src/vendor/ckeditor/translations/az.js | 16 +- .../src/vendor/ckeditor/translations/be.js | 15 + .../src/vendor/ckeditor/translations/bg.js | 16 +- .../src/vendor/ckeditor/translations/bn.js | 16 +- .../src/vendor/ckeditor/translations/bs.js | 16 +- .../src/vendor/ckeditor/translations/ca.js | 16 +- .../src/vendor/ckeditor/translations/cs.js | 16 +- .../src/vendor/ckeditor/translations/da.js | 16 +- .../src/vendor/ckeditor/translations/de-ch.js | 16 +- .../src/vendor/ckeditor/translations/de.js | 16 +- .../src/vendor/ckeditor/translations/el.js | 16 +- .../src/vendor/ckeditor/translations/en-au.js | 16 +- .../src/vendor/ckeditor/translations/en-gb.js | 16 +- .../src/vendor/ckeditor/translations/en.js | 15 + .../src/vendor/ckeditor/translations/eo.js | 16 +- .../src/vendor/ckeditor/translations/es-co.js | 16 +- .../src/vendor/ckeditor/translations/es.js | 16 +- .../src/vendor/ckeditor/translations/et.js | 16 +- .../src/vendor/ckeditor/translations/eu.js | 16 +- .../src/vendor/ckeditor/translations/fa.js | 16 +- .../src/vendor/ckeditor/translations/fi.js | 16 +- .../src/vendor/ckeditor/translations/fr.js | 16 +- .../src/vendor/ckeditor/translations/gl.js | 16 +- .../src/vendor/ckeditor/translations/gu.js | 16 +- .../src/vendor/ckeditor/translations/he.js | 16 +- .../src/vendor/ckeditor/translations/hi.js | 16 +- .../src/vendor/ckeditor/translations/hr.js | 16 +- .../src/vendor/ckeditor/translations/hu.js | 16 +- .../src/vendor/ckeditor/translations/hy.js | 16 +- .../src/vendor/ckeditor/translations/id.js | 16 +- .../src/vendor/ckeditor/translations/it.js | 16 +- .../src/vendor/ckeditor/translations/ja.js | 16 +- .../src/vendor/ckeditor/translations/jv.js | 16 +- .../src/vendor/ckeditor/translations/kk.js | 16 +- .../src/vendor/ckeditor/translations/km.js | 16 +- .../src/vendor/ckeditor/translations/kn.js | 16 +- .../src/vendor/ckeditor/translations/ko.js | 16 +- .../src/vendor/ckeditor/translations/ku.js | 16 +- .../src/vendor/ckeditor/translations/lt.js | 16 +- .../src/vendor/ckeditor/translations/lv.js | 16 +- .../src/vendor/ckeditor/translations/ms.js | 16 +- .../src/vendor/ckeditor/translations/nb.js | 16 +- .../src/vendor/ckeditor/translations/ne.js | 16 +- .../src/vendor/ckeditor/translations/nl.js | 16 +- .../src/vendor/ckeditor/translations/no.js | 16 +- .../src/vendor/ckeditor/translations/oc.js | 16 +- .../src/vendor/ckeditor/translations/pl.js | 16 +- .../src/vendor/ckeditor/translations/pt-br.js | 16 +- .../src/vendor/ckeditor/translations/pt.js | 16 +- .../src/vendor/ckeditor/translations/ro.js | 16 +- .../src/vendor/ckeditor/translations/ru.js | 16 +- .../src/vendor/ckeditor/translations/si.js | 16 +- .../src/vendor/ckeditor/translations/sk.js | 16 +- .../src/vendor/ckeditor/translations/sl.js | 16 +- .../src/vendor/ckeditor/translations/sq.js | 16 +- .../vendor/ckeditor/translations/sr-latn.js | 16 +- .../src/vendor/ckeditor/translations/sr.js | 16 +- .../src/vendor/ckeditor/translations/sv.js | 16 +- .../src/vendor/ckeditor/translations/th.js | 16 +- .../src/vendor/ckeditor/translations/ti.js | 16 +- .../src/vendor/ckeditor/translations/tk.js | 16 +- .../src/vendor/ckeditor/translations/tr.js | 16 +- .../src/vendor/ckeditor/translations/tt.js | 16 +- .../src/vendor/ckeditor/translations/ug.js | 16 +- .../src/vendor/ckeditor/translations/uk.js | 16 +- .../src/vendor/ckeditor/translations/ur.js | 16 +- .../src/vendor/ckeditor/translations/uz.js | 16 +- .../src/vendor/ckeditor/translations/vi.js | 16 +- .../src/vendor/ckeditor/translations/zh-cn.js | 16 +- .../src/vendor/ckeditor/translations/zh.js | 16 +- 78 files changed, 6971 insertions(+), 78 deletions(-) create mode 100644 frontend/src/vendor/ckeditor/ckeditor.css create mode 100644 frontend/src/vendor/ckeditor/translations/be.js create mode 100644 frontend/src/vendor/ckeditor/translations/en.js diff --git a/frontend/angular.json b/frontend/angular.json index ca103122a9e..b3d7664e71b 100644 --- a/frontend/angular.json +++ b/frontend/angular.json @@ -61,7 +61,8 @@ "src/vendor/jquery-ui-1.14.1/jquery-ui.css", "src/vendor/jquery-ui-1.14.1/jquery-ui.structure.css", "src/vendor/jquery-ui-1.14.1/jquery-ui.theme.css", - "node_modules/flatpickr/dist/flatpickr.min.css" + "node_modules/flatpickr/dist/flatpickr.min.css", + "src/vendor/ckeditor/ckeditor.css" ], "stylePreprocessorOptions": { "includePaths": [ diff --git a/frontend/src/app/shared/components/editor/components/ckeditor/ckeditor-setup.service.ts b/frontend/src/app/shared/components/editor/components/ckeditor/ckeditor-setup.service.ts index d3784911d05..a1636a2940d 100644 --- a/frontend/src/app/shared/components/editor/components/ckeditor/ckeditor-setup.service.ts +++ b/frontend/src/app/shared/components/editor/components/ckeditor/ckeditor-setup.service.ts @@ -146,14 +146,18 @@ export class CKEditorSetupService { * Load the ckeditor asset */ private async load():Promise { - // untyped module cannot be dynamically imported + // untyped modules cannot be dynamically imported // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - await import(/* webpackChunkName: "ckeditor" */ 'core-vendor/ckeditor/ckeditor'); + const loadEditorScript = import(/* webpackChunkName: "ckeditor" */ 'core-vendor/ckeditor/ckeditor'); + + const promises = [loadEditorScript]; if (I18n.locale !== 'en') { - await this.loadLocale(); + promises.push(this.loadLocale()); } + + await Promise.all(promises); } private async loadLocale():Promise { diff --git a/frontend/src/vendor/ckeditor/ckeditor.css b/frontend/src/vendor/ckeditor/ckeditor.css new file mode 100644 index 00000000000..e434bbe8aa6 --- /dev/null +++ b/frontend/src/vendor/ckeditor/ckeditor.css @@ -0,0 +1,5865 @@ +/* Auto-generated by bin/build-ckeditor-styles.mjs. Do not edit manually. */ + +/* @ckeditor/ckeditor5-ui */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +:root { + --ck-color-base-foreground: #fafafa; + --ck-color-base-background: #fff; + --ck-color-base-border: #ccced1; + --ck-color-base-action: #53a336; + --ck-color-base-focus: #6cb5f9; + --ck-color-base-text: #333; + --ck-color-base-active: #2977ff; + --ck-color-base-active-focus: #0d65ff; + --ck-color-base-error: #db3700; + --ck-color-focus-border-coordinates: 218, 81.8%, 56.9%; + --ck-color-focus-border: hsl(var(--ck-color-focus-border-coordinates)); + --ck-color-focus-outer-shadow: #cae1fc; + --ck-color-focus-disabled-shadow: #77baf84d; + --ck-color-focus-error-shadow: #ff401f4d; + --ck-color-text: var(--ck-color-base-text); + --ck-color-shadow-drop: #00000026; + --ck-color-shadow-drop-active: #0003; + --ck-color-shadow-inner: #0000001a; + --ck-color-button-default-background: transparent; + --ck-color-button-default-hover-background: #f0f0f0; + --ck-color-button-default-active-background: #f0f0f0; + --ck-color-button-default-disabled-background: transparent; + --ck-color-button-on-background: #f0f7ff; + --ck-color-button-on-hover-background: #dbecff; + --ck-color-button-on-active-background: #dbecff; + --ck-color-button-on-disabled-background: #f0f2f4; + --ck-color-button-on-color: #2977ff; + --ck-color-button-action-background: var(--ck-color-base-action); + --ck-color-button-action-hover-background: #4d9d30; + --ck-color-button-action-active-background: #4d9d30; + --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: #939393; + --ck-color-switch-button-off-hover-background: #7d7d7d; + --ck-color-switch-button-on-background: var(--ck-color-button-action-background); + --ck-color-switch-button-on-hover-background: #4d9d30; + --ck-color-switch-button-inner-background: var(--ck-color-base-background); + --ck-color-switch-button-inner-shadow: #0000001a; + --ck-color-dropdown-panel-background: var(--ck-color-base-background); + --ck-color-dropdown-panel-border: var(--ck-color-base-border); + --ck-color-dialog-background: var(--ck-custom-background); + --ck-color-dialog-form-header-border: var(--ck-custom-border); + --ck-color-input-background: var(--ck-color-base-background); + --ck-color-input-border: var(--ck-color-base-border); + --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: var(--ck-color-base-border); + --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-button-on-color); + --ck-color-list-button-on-background-focus: var(--ck-color-button-on-color); + --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-background); + --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: #1fb0ff1a; + --ck-color-link-fake-selection: #1fb0ff4d; + --ck-color-highlight-background: #ff0; + --ck-color-light-red: #fcc; + --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: .7em; + --ck-font-size-small: .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-reset_all :not(.ck-reset_all-excluded, .ck-reset_all-excluded *) { + box-sizing: border-box; + vertical-align: middle; + word-wrap: break-word; + background: none; + border: 0; + width: auto; + height: auto; + margin: 0; + padding: 0; + text-decoration: none; + transition: none; + position: static; +} + +.ck.ck-reset_all, .ck-reset_all :not(.ck-reset_all-excluded, .ck-reset_all-excluded *) { + 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-reset_all .ck-rtl :not(.ck-reset_all-excluded, .ck-reset_all-excluded *) { + text-align: right; +} + +.ck-reset_all iframe:not(.ck-reset_all-excluded *) { + vertical-align: inherit; +} + +.ck-reset_all textarea:not(.ck-reset_all-excluded *) { + white-space: pre-wrap; +} + +.ck-reset_all textarea:not(.ck-reset_all-excluded *), .ck-reset_all input[type="text"]:not(.ck-reset_all-excluded *), .ck-reset_all input[type="password"]:not(.ck-reset_all-excluded *) { + cursor: text; +} + +.ck-reset_all textarea[disabled]:not(.ck-reset_all-excluded *), .ck-reset_all input[type="text"][disabled]:not(.ck-reset_all-excluded *), .ck-reset_all input[type="password"][disabled]:not(.ck-reset_all-excluded *) { + cursor: default; +} + +.ck-reset_all fieldset:not(.ck-reset_all-excluded *) { + border: 2px groove #dfdee3; + padding: 10px; +} + +.ck-reset_all button:not(.ck-reset_all-excluded *)::-moz-focus-inner { + border: 0; + padding: 0; +} + +.ck[dir="rtl"], .ck[dir="rtl"] .ck { + text-align: right; +} + +:root { + --ck-border-radius: 2px; + --ck-rounded-corners-radius: 0; +} + +.ck-rounded-corners { + --ck-rounded-corners-radius: var(--ck-border-radius); +} + +:root { + --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: .6em; + --ck-spacing-extra-large: calc(var(--ck-spacing-unit) * 2); + --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) * .8); + --ck-spacing-medium-small: calc(var(--ck-spacing-unit) * .667); + --ck-spacing-small: calc(var(--ck-spacing-unit) * .5); + --ck-spacing-tiny: calc(var(--ck-spacing-unit) * .3); + --ck-spacing-extra-tiny: calc(var(--ck-spacing-unit) * .16); +} + +.ck-hidden { + display: none !important; +} + +:root { + --ck-z-default: 1; + --ck-z-panel: calc(var(--ck-z-default) + 999); + --ck-z-dialog: 9999; +} + +.ck-transitions-disabled, .ck-transitions-disabled * { + transition: none !important; +} + +:root { + --ck-powered-by-font-size: calc(var(--ck-font-size-base) * 7.5 / 13); + --ck-powered-by-line-height: calc(var(--ck-font-size-base) * 10 / 13); + --ck-powered-by-letter-spacing: calc(var(--ck-font-size-base) * -.2 / 13); + --ck-powered-by-padding-vertical: 2px; + --ck-powered-by-padding-horizontal: 4px; + --ck-powered-by-text-color: #4f4f4f; + --ck-powered-by-border-radius: var(--ck-border-radius); + --ck-powered-by-background: #fff; + --ck-powered-by-border-color: var(--ck-color-focus-border); + --ck-powered-by-svg-width: 53; + --ck-powered-by-svg-height: 10; + --ck-powered-by-icon-width: calc(var(--ck-font-size-base) * var(--ck-powered-by-svg-width) / 13); + --ck-powered-by-icon-height: calc(var(--ck-font-size-base) * var(--ck-powered-by-svg-height) / 13); +} + +.ck.ck-balloon-panel.ck-powered-by-balloon { + --ck-border-radius: var(--ck-powered-by-border-radius); + box-shadow: none; + background: var(--ck-powered-by-background); + min-height: unset; + z-index: calc(var(--ck-z-panel) - 1); +} + +.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by { + line-height: var(--ck-powered-by-line-height); +} + +.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by a { + cursor: pointer; + opacity: .66; + filter: grayscale(80%); + line-height: var(--ck-powered-by-line-height); + padding: var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal); + align-items: center; + display: flex; +} + +.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-powered-by__label { + font-size: var(--ck-powered-by-font-size); + letter-spacing: var(--ck-powered-by-letter-spacing); + text-transform: uppercase; + cursor: pointer; + color: var(--ck-powered-by-text-color); + margin-right: 4px; + padding-left: 2px; + font-weight: bold; + line-height: normal; +} + +.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-icon { + cursor: pointer; + width: var(--ck-powered-by-icon-width); + height: var(--ck-powered-by-icon-height); + display: block; +} + +.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by:hover a { + filter: grayscale(0%); + opacity: 1; +} + +.ck.ck-balloon-panel.ck-powered-by-balloon[class*="position_inside"] { + border-color: #0000; +} + +.ck.ck-balloon-panel.ck-powered-by-balloon[class*="position_border"] { + border: var(--ck-focus-ring); + border-color: var(--ck-powered-by-border-color); +} + +:root { + --ck-evaluation-badge-font-size: calc(var(--ck-font-size-base) * 7.5 / 13); + --ck-evaluation-badge-line-height: calc(var(--ck-font-size-base) * 7.5 / 13); + --ck-evaluation-badge-letter-spacing: calc(var(--ck-font-size-base) * -.2 / 13); + --ck-evaluation-badge-padding-vertical: 2px; + --ck-evaluation-badge-padding-horizontal: 4px; + --ck-evaluation-badge-text-color: #4f4f4f; + --ck-evaluation-badge-border-radius: var(--ck-border-radius); + --ck-evaluation-badge-background: #fff; + --ck-evaluation-badge-border-color: var(--ck-color-focus-border); +} + +.ck.ck-balloon-panel.ck-evaluation-badge-balloon { + --ck-border-radius: var(--ck-evaluation-badge-border-radius); + box-shadow: none; + background: var(--ck-evaluation-badge-background); + min-height: unset; + z-index: calc(var(--ck-z-panel) - 1); +} + +.ck.ck-balloon-panel.ck-evaluation-badge-balloon .ck.ck-evaluation-badge { + line-height: var(--ck-evaluation-badge-line-height); + padding: var(--ck-evaluation-badge-padding-vertical) var(--ck-evaluation-badge-padding-horizontal); +} + +.ck.ck-balloon-panel.ck-evaluation-badge-balloon .ck.ck-evaluation-badge .ck-evaluation-badge__label { + font-size: var(--ck-evaluation-badge-font-size); + letter-spacing: var(--ck-evaluation-badge-letter-spacing); + text-transform: uppercase; + color: var(--ck-evaluation-badge-text-color); + padding: 0 2px; + font-weight: bold; + line-height: normal; + display: block; +} + +.ck.ck-balloon-panel.ck-evaluation-badge-balloon[class*="position_inside"] { + border-color: #0000; +} + +.ck.ck-balloon-panel.ck-evaluation-badge-balloon[class*="position_border"] { + border: var(--ck-focus-ring); + border-color: var(--ck-evaluation-badge-border-color); +} + +.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) { + margin-left: var(--ck-spacing-standard); +} + +[dir="rtl"] .ck.ck-responsive-form > :not(:last-child) { + margin-left: var(--ck-spacing-standard); +} + +@media screen and (width <= 600px) { + .ck.ck-responsive-form { + width: calc(.8 * var(--ck-input-width)); + padding: 0; + } + + .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, .ck.ck-responsive-form .ck-labeled-field-view .ck-input-number { + width: 100%; + min-width: 0; + } + + .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; + } + + :is(.ck.ck-responsive-form > .ck-button:last-child, .ck.ck-responsive-form > .ck-button:nth-last-child(2)):not(:focus) { + border-top: 1px solid var(--ck-color-base-border); + } + + [dir="ltr"] :is(.ck.ck-responsive-form > .ck-button:last-child, .ck.ck-responsive-form > .ck-button:nth-last-child(2)) { + margin-left: 0; + } + + [dir="rtl"] :is(.ck.ck-responsive-form > .ck-button:last-child, .ck.ck-responsive-form > .ck-button:nth-last-child(2)) { + margin-left: 0; + } + + [dir="rtl"] :is(.ck.ck-responsive-form > .ck-button:last-child, .ck.ck-responsive-form > .ck-button:nth-last-child(2)):last-of-type { + border-right: 1px solid var(--ck-color-base-border); + } + + .ck.ck-responsive-form .ck-button:after { + content: ""; + z-index: 1; + width: 0; + position: absolute; + top: -1px; + bottom: -1px; + right: -1px; + } + + .ck.ck-responsive-form .ck-button:nth-last-child(2):after { + border-right: 1px solid var(--ck-color-base-border); + } + + .ck.ck-responsive-form .ck-button:focus:after { + display: none; + } +} + +.ck-vertical-form > .ck-button:nth-last-child(2):after { + border-right: 1px solid var(--ck-color-base-border); +} + +.ck-vertical-form .ck-button:after { + content: ""; + z-index: 1; + width: 0; + position: absolute; + top: -1px; + bottom: -1px; + right: -1px; +} + +.ck-vertical-form .ck-button:focus:after { + display: none; +} + +:root { + --ck-form-default-width: 340px; +} + +.ck.ck-form { + padding: 0 0 var(--ck-spacing-large); +} + +.ck.ck-form.ck-form_default-width { + width: var(--ck-form-default-width); +} + +.ck.ck-form:focus { + outline: none; +} + +.ck.ck-form .ck.ck-input-text, .ck.ck-form .ck.ck-input-number { + width: 0; + min-width: 100%; +} + +.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%; +} + +@media screen and (width <= 600px) { + .ck.ck-form.ck-responsive-form .ck.ck-form__row.ck-form__row_with-submit { + flex-direction: column; + align-items: stretch; + padding: 0; + } +} + +@media screen and (width <= 600px) { + .ck.ck-form.ck-responsive-form .ck.ck-form__row.ck-form__row_with-submit > .ck { + margin: var(--ck-spacing-large) var(--ck-spacing-large) 0; + } +} + +@media screen and (width <= 600px) { + .ck.ck-form.ck-responsive-form .ck.ck-form__row.ck-form__row_with-submit .ck-button_with-text { + justify-content: center; + } +} + +@media screen and (width <= 600px) { + .ck.ck-form.ck-responsive-form .ck.ck-form__row.ck-form__row_large-bottom-padding { + padding-bottom: var(--ck-spacing-large); + } +} + +[dir="ltr"] .ck.ck-form.ck-responsive-form > :not(:first-child) { + margin-left: 0; +} + +[dir="rtl"] .ck.ck-form.ck-responsive-form > :not(:last-child) { + margin-left: 0; +} + +.ck.ck-aria-live-announcer { + position: absolute; + top: -10000px; + left: -10000px; +} + +.ck.ck-aria-live-region-list { + list-style-type: none; +} + +:root { + --ck-accessibility-help-dialog-max-width: 600px; + --ck-accessibility-help-dialog-max-height: 400px; + --ck-accessibility-help-dialog-border-color: #ccced1; + --ck-accessibility-help-dialog-code-background-color: #ededed; + --ck-accessibility-help-dialog-kbd-shadow-color: #9c9c9c; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content { + padding: var(--ck-spacing-large); + max-width: var(--ck-accessibility-help-dialog-max-width); + max-height: var(--ck-accessibility-help-dialog-max-height); + user-select: text; + border: 1px solid #0000; + overflow: auto; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content:focus { + border: var(--ck-focus-ring); + box-shadow: var(--ck-focus-outer-shadow), 0 0; + outline: none; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content * { + white-space: normal; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content .ck-label { + display: none; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h3 { + font-size: 1.2em; + font-weight: bold; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h4 { + font-size: 1em; + font-weight: bold; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content p, .ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h3, .ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h4, .ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content table { + margin: 1em 0; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl { + border-top: 1px solid var(--ck-accessibility-help-dialog-border-color); + border-bottom: none; + grid-template-columns: 2fr 1fr; + display: grid; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dt, .ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dd { + border-bottom: 1px solid var(--ck-accessibility-help-dialog-border-color); + padding: .4em 0; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dt { + grid-column-start: 1; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dd { + text-align: right; + grid-column-start: 2; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd, .ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content code { + background: var(--ck-accessibility-help-dialog-code-background-color); + vertical-align: middle; + text-align: center; + border-radius: 2px; + padding: .4em; + font-size: .9em; + line-height: 1; + display: inline-block; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content code { + font-family: monospace; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd { + min-width: 1.8em; + box-shadow: 0px 1px 1px var(--ck-accessibility-help-dialog-kbd-shadow-color); + margin: 0 1px; +} + +.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd + kbd { + margin-left: 2px; +} + +.ck.ck-button, :where(a).ck.ck-button { + --ck-button-background: var(--ck-color-button-default-background); + --ck-button-hover-background: var(--ck-color-button-default-hover-background); + --ck-button-active-background: var(--ck-color-button-default-active-background); + --ck-button-disabled-background: var(--ck-color-button-default-disabled-background); + background: var(--ck-button-background); +} + +:is(.ck.ck-button, :where(a).ck.ck-button):not(.ck-disabled):hover { + background: var(--ck-button-hover-background); +} + +:is(.ck.ck-button, :where(a).ck.ck-button):not(.ck-disabled):active { + background: var(--ck-button-active-background); +} + +.ck.ck-button, :where(a).ck.ck-button { + border-radius: var(--ck-rounded-corners-radius); + 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; + -webkit-appearance: none; + -webkit-user-select: none; + user-select: none; + border: 1px solid #0000; + align-items: center; + transition: box-shadow .2s ease-in-out, border .2s ease-in-out; + display: inline-flex; + position: relative; +} + +@media (prefers-reduced-motion: reduce) { + .ck.ck-button, :where(a).ck.ck-button { + transition: none; + } +} + +:is(.ck.ck-button, :where(a).ck.ck-button):active, :is(.ck.ck-button, :where(a).ck.ck-button):focus { + border: var(--ck-focus-ring); + box-shadow: var(--ck-focus-outer-shadow), 0 0; + outline: none; +} + +:is(.ck.ck-button, :where(a).ck.ck-button) .ck-button__icon use, :is(.ck.ck-button, :where(a).ck.ck-button) .ck-button__icon use * { + color: inherit; +} + +:is(.ck.ck-button, :where(a).ck.ck-button) .ck-button__label { + font-size: inherit; + font-weight: inherit; + color: inherit; + cursor: inherit; + vertical-align: middle; +} + +[dir="ltr"] :is(:is(.ck.ck-button, :where(a).ck.ck-button) .ck-button__label) { + text-align: left; +} + +[dir="rtl"] :is(:is(.ck.ck-button, :where(a).ck.ck-button) .ck-button__label) { + text-align: right; +} + +:is(.ck.ck-button, :where(a).ck.ck-button) .ck-button__label { + display: none; +} + +:is(.ck.ck-button, :where(a).ck.ck-button) .ck-button__keystroke { + color: inherit; + opacity: .5; +} + +[dir="ltr"] :is(:is(.ck.ck-button, :where(a).ck.ck-button) .ck-button__keystroke) { + margin-left: var(--ck-spacing-large); +} + +[dir="rtl"] :is(:is(.ck.ck-button, :where(a).ck.ck-button) .ck-button__keystroke) { + margin-right: var(--ck-spacing-large); +} + +:is(.ck.ck-button, :where(a).ck.ck-button).ck-disabled { + background: var(--ck-button-disabled-background); +} + +:is(.ck.ck-button, :where(a).ck.ck-button).ck-disabled:active, :is(.ck.ck-button, :where(a).ck.ck-button).ck-disabled:focus { + box-shadow: var(--ck-focus-disabled-outer-shadow), 0 0; +} + +:is(.ck.ck-button, :where(a).ck.ck-button).ck-disabled .ck-button__icon, :is(.ck.ck-button, :where(a).ck.ck-button).ck-disabled .ck-button__label { + opacity: var(--ck-disabled-opacity); +} + +:is(.ck.ck-button, :where(a).ck.ck-button).ck-disabled .ck-button__keystroke { + opacity: .3; +} + +:is(.ck.ck-button, :where(a).ck.ck-button).ck-button_with-text { + padding: var(--ck-spacing-tiny) var(--ck-spacing-standard); +} + +[dir="ltr"] :is(:is(.ck.ck-button, :where(a).ck.ck-button).ck-button_with-text .ck-button__icon) { + margin-right: var(--ck-spacing-medium); +} + +[dir="rtl"] :is(:is(.ck.ck-button, :where(a).ck.ck-button).ck-button_with-text .ck-button__icon) { + margin-left: var(--ck-spacing-medium); +} + +:is(.ck.ck-button, :where(a).ck.ck-button).ck-button_with-text .ck-button__label { + display: inline-block; +} + +:is(.ck.ck-button, :where(a).ck.ck-button).ck-button_with-keystroke .ck-button__label { + flex-grow: 1; +} + +:is(.ck.ck-button, :where(a).ck.ck-button).ck-on { + --ck-button-background: var(--ck-color-button-on-background); + --ck-button-hover-background: var(--ck-color-button-on-hover-background); + --ck-button-active-background: var(--ck-color-button-on-active-background); + --ck-button-disabled-background: var(--ck-color-button-on-disabled-background); + color: var(--ck-color-button-on-color); +} + +:is(.ck.ck-button, :where(a).ck.ck-button).ck-button-save { + color: var(--ck-color-button-save); +} + +:is(.ck.ck-button, :where(a).ck.ck-button).ck-button-cancel { + color: var(--ck-color-button-cancel); +} + +[dir="ltr"] :is(.ck.ck-button, :where(a).ck.ck-button) { + justify-content: left; +} + +[dir="rtl"] :is(.ck.ck-button, :where(a).ck.ck-button) { + justify-content: right; +} + +:is(.ck.ck-button, :where(a).ck.ck-button):not(.ck-button_with-text) { + justify-content: center; +} + +.ck.ck-button-action, a.ck.ck-button-action { + --ck-button-background: var(--ck-color-button-action-background); + --ck-button-hover-background: var(--ck-color-button-action-hover-background); + --ck-button-active-background: var(--ck-color-button-action-active-background); + --ck-button-disabled-background: var(--ck-color-button-action-disabled-background); + color: var(--ck-color-button-action-text); +} + +.ck.ck-button-bold, a.ck.ck-button-bold { + font-weight: bold; +} + +:root { + --ck-switch-button-toggle-width: 2.61538em; + --ck-switch-button-toggle-inner-size: calc(1.07692em + 1px); + --ck-switch-button-translation: calc(var(--ck-switch-button-toggle-width) - + var(--ck-switch-button-toggle-inner-size) - + 2px /* Border */); + --ck-switch-button-inner-hover-shadow: 0 0 0 5px var(--ck-color-switch-button-inner-shadow); +} + +.ck.ck-button.ck-switchbutton, .ck.ck-button.ck-switchbutton:hover, .ck.ck-button.ck-switchbutton:focus, .ck.ck-button.ck-switchbutton:active, .ck.ck-button.ck-switchbutton.ck-on:hover, .ck.ck-button.ck-switchbutton.ck-on:focus, .ck.ck-button.ck-switchbutton.ck-on:active { + color: inherit; + background: none; +} + +[dir="ltr"] :is(.ck.ck-button.ck-switchbutton .ck-button__label) { + margin-right: calc(2 * var(--ck-spacing-large)); +} + +[dir="rtl"] :is(.ck.ck-button.ck-switchbutton .ck-button__label) { + margin-left: calc(2 * var(--ck-spacing-large)); +} + +.ck.ck-button.ck-switchbutton .ck-button__toggle { + border-radius: var(--ck-rounded-corners-radius); + width: var(--ck-switch-button-toggle-width); + background: var(--ck-color-switch-button-off-background); + border: 1px solid #0000; + transition: background .4s, box-shadow .2s ease-in-out, outline .2s ease-in-out; +} + +[dir="ltr"] :is(.ck.ck-button.ck-switchbutton .ck-button__toggle) { + margin-left: auto; +} + +[dir="rtl"] :is(.ck.ck-button.ck-switchbutton .ck-button__toggle) { + margin-right: auto; +} + +.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner { + border-radius: calc(.5 * var(--ck-rounded-corners-radius)); + 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; +} + +@media (prefers-reduced-motion: reduce) { + .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner { + transition: none; + } +} + +.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner { + display: block; +} + +.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: var(--ck-switch-button-inner-hover-shadow); +} + +.ck.ck-button.ck-switchbutton .ck-button__toggle { + display: block; +} + +.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle { + opacity: var(--ck-disabled-opacity); +} + +.ck.ck-button.ck-switchbutton:focus { + box-shadow: none; + border-color: #0000; + outline: none; +} + +.ck.ck-button.ck-switchbutton:focus .ck-button__toggle { + box-shadow: 0 0 0 1px var(--ck-color-base-background), 0 0 0 5px var(--ck-color-focus-outer-shadow); + outline-offset: 1px; + outline: var(--ck-focus-ring); +} + +.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"] :is(.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner) { + transform: translateX(var(--ck-switch-button-translation)); +} + +[dir="rtl"] :is(.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner) { + transform: translateX(calc(-1 * var(--ck-switch-button-translation))); +} + +.ck.ck-button.ck-list-item-button { + padding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard)); +} + +.ck.ck-button.ck-list-item-button, .ck.ck-button.ck-list-item-button.ck-on { + background: var(--ck-color-list-background); + color: var(--ck-color-text); +} + +[dir="ltr"] .ck.ck-button.ck-list-item-button:has(.ck-list-item-button__check-holder) { + padding-left: var(--ck-spacing-small); +} + +[dir="rtl"] .ck.ck-button.ck-list-item-button:has(.ck-list-item-button__check-holder) { + padding-right: var(--ck-spacing-small); +} + +.ck.ck-button.ck-list-item-button:hover:not(.ck-disabled), .ck.ck-button.ck-list-item-button.ck-button.ck-on:hover, .ck.ck-button.ck-list-item-button.ck-on:not(.ck-list-item-button_toggleable), .ck.ck-button.ck-list-item-button.ck-on:hover { + background: var(--ck-color-list-button-hover-background); +} + +:is(.ck.ck-button.ck-list-item-button:hover:not(.ck-disabled), .ck.ck-button.ck-list-item-button.ck-button.ck-on:hover, .ck.ck-button.ck-list-item-button.ck-on:not(.ck-list-item-button_toggleable), .ck.ck-button.ck-list-item-button.ck-on:hover):not(.ck-disabled) { + color: var(--ck-color-text); +} + +.ck.ck-list-item-button { + min-height: unset; + border-radius: 0; + width: 100%; +} + +[dir="ltr"] .ck.ck-list-item-button { + text-align: left; +} + +[dir="rtl"] .ck.ck-list-item-button { + text-align: right; +} + +[dir="ltr"] .ck.ck-list-item-button.ck-list-item-button_toggleable { + padding-left: var(--ck-spacing-small); +} + +[dir="rtl"] .ck.ck-list-item-button.ck-list-item-button_toggleable { + padding-right: var(--ck-spacing-small); +} + +.ck.ck-list-item-button .ck-list-item-button__check-holder { + width: .9em; + height: .9em; + display: inline-flex; +} + +[dir="ltr"] :is(.ck.ck-list-item-button .ck-list-item-button__check-holder) { + margin-right: var(--ck-spacing-small); +} + +[dir="rtl"] :is(.ck.ck-list-item-button .ck-list-item-button__check-holder) { + margin-left: var(--ck-spacing-small); +} + +.ck.ck-list-item-button .ck-list-item-button__check-icon { + height: 100%; +} + +:root { + --ck-collapsible-arrow-size: calc(.5 * var(--ck-icon-size)); +} + +.ck.ck-collapsible > .ck.ck-button { + width: 100%; + color: inherit; + border-radius: 0; + font-weight: bold; +} + +.ck.ck-collapsible > .ck.ck-button:focus { + background: none; +} + +.ck.ck-collapsible > .ck.ck-button:active, .ck.ck-collapsible > .ck.ck-button:not(:focus), .ck.ck-collapsible > .ck.ck-button:hover:not(:focus) { + box-shadow: none; + background: none; + border-color: #0000; +} + +.ck.ck-collapsible > .ck.ck-button > .ck-icon { + margin-right: var(--ck-spacing-medium); + width: var(--ck-collapsible-arrow-size); +} + +.ck.ck-collapsible > .ck-collapsible__children { + padding: var(--ck-spacing-medium) var(--ck-spacing-large) var(--ck-spacing-large); +} + +.ck.ck-collapsible.ck-collapsible_collapsed > .ck.ck-button .ck-icon { + transform: rotate(-90deg); +} + +.ck.ck-collapsible.ck-collapsible_collapsed > .ck-collapsible__children { + display: none; +} + +:root { + --ck-color-grid-tile-size: 24px; + --ck-color-color-grid-check-icon: #166fd4; +} + +.ck.ck-color-grid { + grid-gap: 5px; + padding: 8px; + display: grid; +} + +.ck.ck-color-grid__tile { + transition: box-shadow .2s; +} + +@media (forced-colors: none) { + .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); + border: 0; + padding: 0; + } + + .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.ck-color-selector__color-tile_bordered { + box-shadow: 0 0 0 1px var(--ck-color-base-border); + } + + .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: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); + } +} + +@media (forced-colors: active) { + .ck.ck-color-grid__tile { + width: unset; + height: unset; + min-width: unset; + min-height: unset; + padding: 0 var(--ck-spacing-small); + } + + .ck.ck-color-grid__tile .ck-button__label { + display: inline-block; + } +} + +@media (prefers-reduced-motion: reduce) { + .ck.ck-color-grid__tile { + transition: none; + } +} + +.ck.ck-color-grid__tile.ck-disabled { + cursor: unset; + transition: unset; +} + +.ck.ck-color-grid__tile .ck.ck-icon { + color: var(--ck-color-color-grid-check-icon); + display: none; +} + +.ck.ck-color-grid__tile.ck-on .ck.ck-icon { + display: block; +} + +.ck.ck-color-grid__label { + padding: 0 var(--ck-spacing-standard); +} + +.color-picker-hex-input { + width: max-content; +} + +.color-picker-hex-input .ck.ck-input { + min-width: unset; +} + +.ck.ck-color-picker__row { + margin: var(--ck-spacing-large) 0 0; + width: unset; + flex-flow: row; + justify-content: space-between; + display: flex; +} + +.ck.ck-color-picker__row .ck.ck-labeled-field-view { + padding-top: unset; +} + +.ck.ck-color-picker__row .ck.ck-input-text { + width: unset; +} + +.ck.ck-color-picker__row .ck-color-picker__hash-view { + padding-top: var(--ck-spacing-tiny); + padding-right: var(--ck-spacing-medium); +} + +.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color, .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker { + align-items: center; + width: 100%; + display: flex; +} + +[dir="rtl"] :is(.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color, .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker) { + justify-content: flex-start; +} + +.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker { + padding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard); + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker:not(:focus) { + border-top: 1px solid var(--ck-color-base-border); +} + +[dir="ltr"] :is(.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon) { + margin-right: var(--ck-spacing-standard); +} + +[dir="rtl"] :is(.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon) { + margin-left: var(--ck-spacing-standard); +} + +.ck.ck-color-selector .ck-color-grids-fragment label.ck.ck-color-grid__label { + font-weight: unset; +} + +.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker { + padding: 8px; +} + +.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker { + min-width: 180px; + height: 100px; +} + +.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation) { + border-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0; +} + +.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue) { + border-radius: 0 0 var(--ck-border-radius) var(--ck-border-radius); +} + +.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation-pointer), .ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue-pointer) { + width: 15px; + height: 15px; +} + +.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar { + flex-direction: row; + justify-content: space-around; + padding: 0 8px 8px; + display: flex; +} + +.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-save, .ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-cancel { + flex: 1; +} + +:root { + --ck-dialog-overlay-background-color: #00000080; + --ck-dialog-drop-shadow: 0px 0px 6px 2px #00000026; + --ck-dialog-max-width: 100vw; + --ck-dialog-max-height: 90vh; + --ck-color-dialog-background: var(--ck-color-base-background); + --ck-color-dialog-form-header-border: var(--ck-color-base-border); +} + +.ck.ck-dialog-overlay { + background: var(--ck-dialog-overlay-background-color); + z-index: var(--ck-z-dialog); + user-select: none; + overscroll-behavior: none; + animation: .3s ck-dialog-fade-in; + position: fixed; + inset: 0; +} + +.ck.ck-dialog-overlay.ck-dialog-overlay__transparent { + pointer-events: none; + background: none; + animation: none; +} + +.ck.ck-dialog { + border-radius: var(--ck-rounded-corners-radius); + box-shadow: var(--ck-drop-shadow), 0 0; + --ck-drop-shadow: var(--ck-dialog-drop-shadow); + background: var(--ck-color-dialog-background); + max-height: var(--ck-dialog-max-height); + max-width: var(--ck-dialog-max-width); + border: 1px solid var(--ck-color-base-border); + overscroll-behavior: contain; + overscroll-behavior: none; + width: fit-content; + position: absolute; +} + +.ck.ck-dialog .ck.ck-form__header { + border-bottom: 1px solid var(--ck-color-dialog-form-header-border); + flex-shrink: 0; +} + +.ck.ck-dialog:not(.ck-dialog_modal) .ck.ck-form__header .ck-form__header__label { + cursor: grab; +} + +.ck.ck-dialog-overlay.ck-dialog-overlay__transparent .ck.ck-dialog { + pointer-events: all; +} + +.ck-dialog-scroll-locked { + overflow: hidden; +} + +@keyframes ck-dialog-fade-in { + 0% { + background: none; + } + + 100% { + background: var(--ck-dialog-overlay-background-color); + } +} + +.ck.ck-dialog .ck.ck-dialog__actions { + padding: var(--ck-spacing-large); + display: flex; +} + +.ck.ck-dialog .ck.ck-dialog__actions > * + * { + margin-left: var(--ck-spacing-large); +} + +.ck.ck-dialog .ck.ck-dialog__actions { + justify-content: flex-end; +} + +:root { + --ck-dropdown-arrow-size: calc(.5 * var(--ck-icon-size)); + --ck-dropdown-max-width: 75vw; +} + +.ck.ck-dropdown { + font-size: inherit; + display: inline-block; + position: relative; +} + +.ck.ck-dropdown .ck-dropdown__arrow { + width: var(--ck-dropdown-arrow-size); + pointer-events: none; + z-index: var(--ck-z-default); +} + +[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"] :is(.ck.ck-dropdown .ck-button.ck-dropdown__button):not(.ck-button_with-text) { + padding-left: var(--ck-spacing-small); +} + +[dir="rtl"] :is(.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 { + text-overflow: ellipsis; + width: 7em; + overflow: hidden; +} + +.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-right-radius: 0; + border-bottom-left-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; +} + +:is(.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active, .ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active):focus { + box-shadow: var(--ck-focus-outer-shadow), 0 0; +} + +.ck.ck-dropdown .ck-button.ck-dropdown__button { + width: 100%; +} + +.ck.ck-dropdown .ck-dropdown__panel { + z-index: var(--ck-z-panel); + max-width: var(--ck-dropdown-max-width); + display: none; + position: absolute; +} + +.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible { + display: inline-block; +} + +.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne, .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw, .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n, .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw, .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme { + bottom: 100%; +} + +.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se, .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw, .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw, .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme, .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s { + 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_s, .ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n { + 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-dropdown__panel { + border-radius: var(--ck-rounded-corners-radius); + box-shadow: var(--ck-drop-shadow), 0 0; + background: var(--ck-color-dropdown-panel-background); + border: 1px solid var(--ck-color-dropdown-panel-border); + min-width: 100%; + bottom: 0; +} + +.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; +} + +.ck.ck-dropdown__panel:focus { + outline: none; +} + +.ck.ck-toolbar .ck-dropdown__panel { + z-index: calc(var(--ck-z-panel) + 1); +} + +:root { + --ck-color-split-button-hover-background: #ebebeb; + --ck-color-split-button-hover-border: #b3b3b3; +} + +.ck.ck-splitbutton .ck-splitbutton__action:focus { + z-index: calc(var(--ck-z-default) + 1); +} + +[dir="ltr"] :is(.ck.ck-splitbutton:hover > .ck-splitbutton__action, .ck.ck-splitbutton.ck-splitbutton_open > .ck-splitbutton__action) { + border-top-right-radius: unset; + border-bottom-right-radius: unset; +} + +[dir="rtl"] :is(.ck.ck-splitbutton:hover > .ck-splitbutton__action, .ck.ck-splitbutton.ck-splitbutton_open > .ck-splitbutton__action) { + border-top-left-radius: unset; + border-bottom-left-radius: unset; +} + +.ck.ck-splitbutton > .ck-splitbutton__arrow { + min-width: unset; +} + +[dir="ltr"] :is(.ck.ck-splitbutton > .ck-splitbutton__arrow) { + border-top-left-radius: unset; + border-bottom-left-radius: unset; +} + +[dir="rtl"] :is(.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__arrow:not(:focus) { + border-top-width: 0; + border-bottom-width: 0; +} + +.ck.ck-splitbutton.ck-splitbutton_open { + border-radius: var(--ck-rounded-corners-radius); +} + +.ck.ck-splitbutton.ck-splitbutton_open > .ck-splitbutton__action { + border-bottom-left-radius: 0; +} + +.ck.ck-splitbutton.ck-splitbutton_open > .ck-splitbutton__arrow { + border-bottom-right-radius: 0; +} + +:is(.ck.ck-splitbutton.ck-splitbutton_open, .ck.ck-splitbutton:hover) > .ck-button:not(.ck-on):not(.ck-disabled):not(:hover) { + background: var(--ck-color-split-button-hover-background); +} + +:is(.ck.ck-splitbutton.ck-splitbutton_open, .ck.ck-splitbutton:hover) > .ck-splitbutton__arrow:not(.ck-disabled):after { + content: ""; + background-color: var(--ck-color-split-button-hover-border); + width: 1px; + height: 100%; + position: absolute; +} + +:is(.ck.ck-splitbutton.ck-splitbutton_open, .ck.ck-splitbutton:hover) > .ck-splitbutton__arrow:focus:after { + --ck-color-split-button-hover-border: var(--ck-color-focus-border); +} + +[dir="ltr"] :is(.ck.ck-splitbutton.ck-splitbutton_open, .ck.ck-splitbutton:hover) > .ck-splitbutton__arrow:not(.ck-disabled):after { + left: -1px; +} + +[dir="rtl"] :is(.ck.ck-splitbutton.ck-splitbutton_open, .ck.ck-splitbutton:hover) > .ck-splitbutton__arrow:not(.ck-disabled):after { + right: -1px; +} + +.ck.ck-splitbutton { + font-size: inherit; +} + +.ck.ck-toolbar-dropdown .ck-toolbar { + border: 0; +} + +: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-dropdown > .ck-dropdown__panel > .ck-list { + border-radius: var(--ck-rounded-corners-radius); + border-top-left-radius: 0; +} + +.ck.ck-dropdown > .ck-dropdown__panel > .ck-list .ck-list__item:first-child > .ck-button { + border-radius: var(--ck-rounded-corners-radius); + border-top-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.ck.ck-dropdown > .ck-dropdown__panel > .ck-list .ck-list__item:last-child > .ck-button { + border-radius: var(--ck-rounded-corners-radius); + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.ck.ck-dropdown-menu-list__nested-menu { + display: block; +} + +:root { + --ck-dropdown-menu-menu-item-min-width: 18em; +} + +.ck.ck-dropdown-menu-list__nested-menu__item { + min-width: var(--ck-dropdown-menu-menu-item-min-width); +} + +.ck-button.ck-dropdown-menu-list__nested-menu__item__button { + border-radius: 0; +} + +.ck-button.ck-dropdown-menu-list__nested-menu__item__button > .ck-spinner-container, .ck-button.ck-dropdown-menu-list__nested-menu__item__button > .ck-spinner-container .ck-spinner { + --ck-toolbar-spinner-size: 20px; +} + +.ck-button.ck-dropdown-menu-list__nested-menu__item__button > .ck-spinner-container { + margin-left: calc(-1 * var(--ck-spacing-small)); + margin-right: var(--ck-spacing-small); +} + +.ck-button.ck-dropdown-menu-list__nested-menu__item__button:focus { + box-shadow: none; + border-color: #0000; +} + +.ck-button.ck-dropdown-menu-list__nested-menu__item__button:focus:not(.ck-on) { + background: var(--ck-color-button-default-hover-background); +} + +.ck.ck-button.ck-dropdown-menu-list__nested-menu__button { + width: 100%; + padding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard)); + border-radius: 0; +} + +.ck.ck-button.ck-dropdown-menu-list__nested-menu__button:focus { + box-shadow: none; + border-color: #0000; +} + +.ck.ck-button.ck-dropdown-menu-list__nested-menu__button:focus:not(.ck-on) { + background: var(--ck-color-button-default-hover-background); +} + +.ck.ck-button.ck-dropdown-menu-list__nested-menu__button > .ck-button__label { + text-overflow: ellipsis; + flex-grow: 1; + overflow: hidden; +} + +.ck.ck-button.ck-dropdown-menu-list__nested-menu__button.ck-disabled > .ck-button__label { + opacity: var(--ck-disabled-opacity); +} + +.ck.ck-button.ck-dropdown-menu-list__nested-menu__button.ck-icon-spacing:not(:has(.ck-button__icon)) > .ck-button__label { + margin-left: calc(var(--ck-icon-size) - var(--ck-spacing-small)); +} + +.ck.ck-button.ck-dropdown-menu-list__nested-menu__button > .ck-dropdown-menu-list__nested-menu__button__arrow { + width: var(--ck-dropdown-arrow-size); + pointer-events: none; + z-index: var(--ck-z-default); +} + +[dir="ltr"] :is(.ck.ck-button.ck-dropdown-menu-list__nested-menu__button > .ck-dropdown-menu-list__nested-menu__button__arrow) { + right: var(--ck-spacing-standard); + margin-left: var(--ck-spacing-standard); + margin-right: calc(-1 * var(--ck-spacing-small)); + transform: rotate(-90deg); +} + +[dir="rtl"] :is(.ck.ck-button.ck-dropdown-menu-list__nested-menu__button > .ck-dropdown-menu-list__nested-menu__button__arrow) { + left: var(--ck-spacing-standard); + margin-right: var(--ck-spacing-small); + margin-left: calc(-1 * var(--ck-spacing-small)); + transform: rotate(90deg); +} + +.ck.ck-button.ck-dropdown-menu-list__nested-menu__button.ck-disabled > .ck-dropdown-menu-list__nested-menu__button__arrow { + opacity: var(--ck-disabled-opacity); +} + +[dir="ltr"] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button:not(.ck-button_with-text) { + padding-left: var(--ck-spacing-small); +} + +[dir="rtl"] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button:not(.ck-button_with-text) { + padding-right: var(--ck-spacing-small); +} + +:root { + --ck-dropdown-menu-menu-panel-max-width: 75vw; +} + +.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__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); + height: fit-content; + max-width: var(--ck-dropdown-menu-menu-panel-max-width); + max-height: 314px; + position: absolute; + bottom: 0; + overflow-y: auto; +} + +.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel:after, .ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel:before { + display: none; +} + +.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_es, .ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_se { + border-top-left-radius: 0; +} + +.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_ws, .ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_sw { + border-top-right-radius: 0; +} + +.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_en, .ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_ne { + border-bottom-left-radius: 0; +} + +.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_wn, .ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_nw { + border-bottom-right-radius: 0; +} + +.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel:focus { + outline: none; +} + +.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel { + z-index: calc(var(--ck-z-panel) + 1); +} + +:root { + --ck-color-editable-blur-selection: #d9d9d9; +} + +.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content { + border-radius: var(--ck-rounded-corners-radius); + border: 1px solid var(--ck-color-base-border); + border-bottom-width: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content.ck-sticky-panel__content_sticky { + border-bottom-width: 1px; +} + +.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content .ck-menu-bar { + border: 0; + border-bottom: 1px solid var(--ck-color-base-border); +} + +.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content .ck-toolbar { + border: 0; +} + +.ck.ck-editor__editable:not(.ck-editor__nested-editable) { + border-radius: var(--ck-rounded-corners-radius); +} + +.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-focused { + border: var(--ck-focus-ring); + box-shadow: var(--ck-inner-shadow), 0 0; + outline: none; +} + +.ck.ck-editor__editable_inline { + padding: 0 var(--ck-spacing-standard); + border: 1px solid #0000; + overflow: auto; +} + +.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-panel-background); +} + +.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_s"]:after { + border-top-color: var(--ck-color-panel-background); +} + +.ck.ck-form__row { + padding: var(--ck-spacing-standard) var(--ck-spacing-large) 0; + flex-direction: row; + justify-content: space-between; + align-items: flex-start; + display: flex; +} + +.ck.ck-form__row.ck-form__row_large-top-padding { + padding-top: var(--ck-spacing-large); +} + +.ck.ck-form__row.ck-form__row_large-bottom-padding { + padding-bottom: var(--ck-spacing-large); +} + +.ck.ck-form__row.ck-form__row_with-submit { + flex-wrap: nowrap; +} + +.ck.ck-form__row.ck-form__row_with-submit > :not(:first-child) { + margin-inline-start: var(--ck-spacing-standard); +} + +.ck.ck-form__row > .ck.ck-form__row { + padding: 0; +} + +:root { + --ck-form-header-height: 3.384em; +} + +.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); + flex-flow: row; + flex-shrink: 0; + justify-content: space-between; + align-items: center; + display: flex; +} + +.ck.ck-form__header > .ck-icon { + flex-shrink: 0; + margin-inline-end: var(--ck-spacing-medium); +} + +.ck.ck-form__header .ck-form__header__label { + --ck-font-size-base: 1.153em; + font-weight: bold; +} + +.ck.ck-form__header:has(.ck-button-back.ck-hidden) { + padding-inline: var(--ck-spacing-large) var(--ck-spacing-large); +} + +.ck.ck-form__header:has(.ck-button-back:not(.ck-hidden)) { + padding-inline: var(--ck-spacing-small) var(--ck-spacing-small); +} + +.ck.ck-form__header > .ck-button-back { + margin-inline-end: var(--ck-spacing-small); +} + +.ck.ck-form__header > .ck.ck-button { + flex-shrink: 0; +} + +.ck.ck-form__header h2.ck-form__header__label { + text-overflow: ellipsis; + flex-grow: 1; + overflow: hidden; +} + +:root { + --ck-icon-size: calc(var(--ck-line-height-base) * var(--ck-font-size-normal)); + --ck-icon-font-size: .833335em; +} + +.ck.ck-icon { + width: var(--ck-icon-size); + height: var(--ck-icon-size); + font-size: var(--ck-icon-font-size); + cursor: inherit; +} + +.ck.ck-icon * { + cursor: inherit; +} + +.ck.ck-icon.ck-icon_inherit-color { + color: inherit; +} + +.ck.ck-icon.ck-icon_inherit-color * { + color: inherit; +} + +.ck.ck-icon.ck-icon_inherit-color *:not([fill]) { + fill: currentColor; +} + +.ck.ck-icon { + vertical-align: middle; +} + +:root { + --ck-input-width: 18em; + --ck-input-text-width: var(--ck-input-width); +} + +.ck.ck-input { + border-radius: var(--ck-rounded-corners-radius); + 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-width); + min-height: var(--ck-ui-component-min-height); + transition: box-shadow .1s ease-in-out, border .1s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .ck.ck-input { + transition: none; + } +} + +.ck.ck-input:focus { + border: var(--ck-focus-ring); + box-shadow: var(--ck-focus-outer-shadow), 0 0; + outline: none; +} + +.ck.ck-input[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[readonly]:focus { + box-shadow: var(--ck-focus-disabled-outer-shadow), 0 0; +} + +.ck.ck-input.ck-error { + border-color: var(--ck-color-input-error-border); + animation: .3s both ck-input-shake; +} + +@media (prefers-reduced-motion: reduce) { + .ck.ck-input.ck-error { + animation: none; + } +} + +.ck.ck-input.ck-error:focus { + box-shadow: var(--ck-focus-error-outer-shadow), 0 0; +} + +@keyframes ck-input-shake { + 20% { + transform: translateX(-2px); + } + + 40% { + transform: translateX(2px); + } + + 60% { + transform: translateX(-1px); + } + + 80% { + transform: translateX(1px); + } +} + +.ck-textarea { + overflow-x: hidden; +} + +.ck.ck-label { + font-weight: bold; + display: block; +} + +.ck.ck-voice-label { + display: none; +} + +:root { + --ck-labeled-field-view-transition: .1s cubic-bezier(0, 0, .24, .95); + --ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-spacing-medium); + --ck-labeled-field-label-default-position-x: var(--ck-spacing-medium); + --ck-labeled-field-label-default-position-y: calc(.6 * var(--ck-font-size-base)); + --ck-color-labeled-field-label-background: var(--ck-color-base-background); +} + +.ck.ck-labeled-field-view { + border-radius: var(--ck-rounded-corners-radius); +} + +.ck.ck-labeled-field-view .ck.ck-label { + display: block; + position: absolute; +} + +.ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper { + width: 100%; + display: flex; +} + +.ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label { + pointer-events: none; + background: var(--ck-color-labeled-field-label-background); + padding: 0 calc(.5 * var(--ck-font-size-tiny)); + line-height: initial; + text-overflow: ellipsis; + 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); + font-weight: normal; + top: 0; + overflow: hidden; +} + +[dir="ltr"] :is(.ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label) { + transform-origin: 0 0; + transform: translate(var(--ck-spacing-medium), -6px) scale(.75); + left: 0; +} + +[dir="rtl"] :is(.ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label) { + transform-origin: 100% 0; + transform: translate(calc(-1 * var(--ck-spacing-medium)), -6px) scale(.75); + right: 0; +} + +@media (prefers-reduced-motion: reduce) { + .ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label { + transition: none; + } +} + +.ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper { + position: relative; +} + +.ck.ck-labeled-field-view.ck-error > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label, .ck.ck-labeled-field-view.ck-error .ck-input:not([readonly]) + .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"] :is(.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder) > .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):not(.ck-error) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label) { + transform: translate(var(--ck-labeled-field-label-default-position-x), var(--ck-labeled-field-label-default-position-y)) scale(1); +} + +[dir="rtl"] :is(.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder) > .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):not(.ck-error) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label) { + transform: translate(calc(-1 * var(--ck-labeled-field-label-default-position-x)), var(--ck-labeled-field-label-default-position-y)) scale(1); +} + +.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder) > .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):not(.ck-error) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label { + max-width: calc(var(--ck-labeled-field-empty-unfocused-max-width)); + background: none; + padding: 0; +} + +.ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck.ck-button { + background: none; +} + +.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)); +} + +.ck.ck-labeled-field-view.ck-labeled-field-view_full-width { + flex-grow: 1; +} + +.ck.ck-labeled-input .ck-labeled-input__status { + font-size: var(--ck-font-size-small); + margin-top: var(--ck-spacing-small); + white-space: normal; +} + +.ck.ck-labeled-input .ck-labeled-input__status_error { + color: var(--ck-color-base-error); +} + +.ck.ck-list { + border-radius: var(--ck-rounded-corners-radius); + background: var(--ck-color-list-background); + padding: var(--ck-spacing-small) 0; + -webkit-user-select: none; + user-select: none; + flex-direction: column; + list-style-type: none; + display: flex; +} + +.ck.ck-list .ck-list__item, .ck.ck-list .ck-list__separator { + display: block; +} + +.ck.ck-list .ck-list__item > :focus { + z-index: var(--ck-z-default); + position: relative; +} + +.ck.ck-list__item { + cursor: default; + min-width: 15em; +} + +.ck.ck-list__item > .ck-button:not(.ck-list-item-button) { + padding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard)); + min-height: unset; + border-radius: 0; + width: 100%; +} + +[dir="ltr"] :is(.ck.ck-list__item > .ck-button:not(.ck-list-item-button)) { + text-align: left; +} + +[dir="rtl"] :is(.ck.ck-list__item > .ck-button:not(.ck-list-item-button)) { + text-align: right; +} + +.ck.ck-list__item > .ck-button:not(.ck-list-item-button) .ck-button__label { + line-height: calc(var(--ck-line-height-base) * var(--ck-font-size-base)); +} + +.ck.ck-list__item > .ck-button:not(.ck-list-item-button):active { + box-shadow: none; +} + +.ck.ck-list__item > .ck-button:not(.ck-list-item-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:not(.ck-list-item-button).ck-on:active { + box-shadow: none; +} + +.ck.ck-list__item > .ck-button:not(.ck-list-item-button).ck-on:hover:not(.ck-disabled) { + background: var(--ck-color-list-button-on-background-focus); +} + +.ck.ck-list__item > .ck-button:not(.ck-list-item-button).ck-on:focus:not(.ck-disabled) { + border-color: var(--ck-color-base-background); +} + +.ck.ck-list__item > .ck-button:not(.ck-list-item-button):hover:not(.ck-disabled) { + background: var(--ck-color-list-button-hover-background); +} + +.ck.ck-list__item > .ck-button.ck-switchbutton.ck-on { + background: var(--ck-color-list-background); + color: inherit; +} + +.ck.ck-list__item > .ck-button.ck-switchbutton.ck-on:hover:not(.ck-disabled) { + background: var(--ck-color-list-button-hover-background); + color: inherit; +} + +.ck-list .ck-list__group { + padding-top: var(--ck-spacing-medium); +} + +.ck-list .ck-list__group:first-child { + padding-top: 0; +} + +:not(.ck-hidden) ~ :is(.ck-list .ck-list__group) { + border-top: 1px solid var(--ck-color-base-border); +} + +.ck-list .ck-list__group > .ck-label { + padding: var(--ck-spacing-medium) var(--ck-spacing-large) 0; + font-size: 11px; + font-weight: bold; +} + +.ck.ck-list__separator { + background: var(--ck-color-base-border); + width: 100%; + height: 1px; + margin: var(--ck-spacing-small) 0; +} + +:root { + --ck-balloon-border-width: 1px; + --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-balloon-panel-arrow-z-index: calc(var(--ck-z-default) - 3); +} + +.ck.ck-balloon-panel { + border-radius: var(--ck-rounded-corners-radius); + box-shadow: var(--ck-drop-shadow), 0 0; + background: var(--ck-color-panel-background); + border: var(--ck-balloon-border-width) solid var(--ck-color-panel-border); + min-height: 15px; + z-index: var(--ck-z-panel); + display: none; + position: absolute; +} + +.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before, .ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after { + content: ""; + border-style: solid; + width: 0; + height: 0; + 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, .ck.ck-balloon-panel[class*="arrow_n"]:after { + border-width: 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width); +} + +.ck.ck-balloon-panel[class*="arrow_n"]:before { + border-color: transparent transparent var(--ck-color-panel-border) transparent; + margin-top: calc(-1 * var(--ck-balloon-border-width)); + z-index: var(--ck-balloon-panel-arrow-z-index); +} + +.ck.ck-balloon-panel[class*="arrow_n"]:after { + border-color: transparent transparent var(--ck-color-panel-background) transparent; + margin-top: calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width)); + z-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1); +} + +.ck.ck-balloon-panel[class*="arrow_s"]:before, .ck.ck-balloon-panel[class*="arrow_s"]:after { + border-width: var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width); +} + +.ck.ck-balloon-panel[class*="arrow_s"]:before { + border-color: var(--ck-color-panel-border) transparent transparent; + filter: drop-shadow(var(--ck-balloon-arrow-drop-shadow)); + margin-bottom: calc(-1 * var(--ck-balloon-border-width)); + z-index: var(--ck-balloon-panel-arrow-z-index); +} + +.ck.ck-balloon-panel[class*="arrow_s"]:after { + border-color: var(--ck-color-panel-background) transparent transparent transparent; + margin-bottom: calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width)); + z-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1); +} + +.ck.ck-balloon-panel[class*="arrow_e"]:before, .ck.ck-balloon-panel[class*="arrow_e"]:after { + border-width: var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height); +} + +.ck.ck-balloon-panel[class*="arrow_e"]:before { + border-color: transparent transparent transparent var(--ck-color-panel-border); + margin-right: calc(-1 * var(--ck-balloon-border-width)); +} + +.ck.ck-balloon-panel[class*="arrow_e"]:after { + border-color: transparent transparent transparent var(--ck-color-panel-background); + margin-right: calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width)); +} + +.ck.ck-balloon-panel[class*="arrow_w"]:before, .ck.ck-balloon-panel[class*="arrow_w"]:after { + border-width: var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0; +} + +.ck.ck-balloon-panel[class*="arrow_w"]:before { + border-color: transparent var(--ck-color-panel-border) transparent transparent; + margin-left: calc(-1 * var(--ck-balloon-border-width)); +} + +.ck.ck-balloon-panel[class*="arrow_w"]:after { + border-color: transparent var(--ck-color-panel-background) transparent transparent; + margin-left: calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width)); +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after { + margin-left: calc(-1 * var(--ck-balloon-arrow-half-width)); + left: 50%; + top: calc(-1 * var(--ck-balloon-arrow-height)); +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after { + left: calc(2 * var(--ck-balloon-arrow-half-width)); + top: calc(-1 * var(--ck-balloon-arrow-height)); +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after { + right: calc(2 * var(--ck-balloon-arrow-half-width)); + top: calc(-1 * var(--ck-balloon-arrow-height)); +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after { + margin-left: calc(-1 * var(--ck-balloon-arrow-half-width)); + left: 50%; + bottom: calc(-1 * var(--ck-balloon-arrow-height)); +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after { + left: calc(2 * var(--ck-balloon-arrow-half-width)); + bottom: calc(-1 * var(--ck-balloon-arrow-height)); +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after { + right: calc(2 * var(--ck-balloon-arrow-half-width)); + bottom: calc(-1 * var(--ck-balloon-arrow-height)); +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after { + margin-right: calc(2 * var(--ck-balloon-arrow-half-width)); + right: 25%; + bottom: calc(-1 * var(--ck-balloon-arrow-height)); +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after { + margin-left: calc(2 * var(--ck-balloon-arrow-half-width)); + left: 25%; + bottom: calc(-1 * var(--ck-balloon-arrow-height)); +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after { + margin-right: calc(2 * var(--ck-balloon-arrow-half-width)); + right: 25%; + top: calc(-1 * var(--ck-balloon-arrow-height)); +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after { + margin-left: calc(2 * var(--ck-balloon-arrow-half-width)); + left: 25%; + top: calc(-1 * var(--ck-balloon-arrow-height)); +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_e:after { + right: calc(-1 * var(--ck-balloon-arrow-height)); + margin-top: calc(-1 * var(--ck-balloon-arrow-half-width)); + top: 50%; +} + +.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:before, .ck.ck-balloon-panel.ck-balloon-panel_arrow_w:after { + left: calc(-1 * var(--ck-balloon-arrow-height)); + margin-top: calc(-1 * var(--ck-balloon-arrow-half-width)); + top: 50%; +} + +.ck.ck-balloon-panel.ck-balloon-panel_visible { + display: block; +} + +.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); + align-items: center; + display: flex; +} + +.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__navigation { + justify-content: center; +} + +.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper { + box-shadow: none; +} + +.ck .ck-balloon-rotator__content .ck-toolbar { + justify-content: center; +} + +: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; + background: var(--ck-color-panel-background); + border: 1px solid var(--ck-color-panel-border); + border-radius: var(--ck-border-radius); + width: 100%; + height: 100%; + min-height: 15px; + position: absolute; +} + +.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); + z-index: 2; +} + +.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); + z-index: 1; +} + +.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-fake-panel { + z-index: calc(var(--ck-z-panel) - 1); + position: absolute; +} + +.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; +} + +.ck.ck-sticky-panel .ck-sticky-panel__content_sticky { + box-shadow: var(--ck-drop-shadow), 0 0; + z-index: var(--ck-z-panel); + border-width: 0 1px 1px; + border-top-left-radius: 0; + border-top-right-radius: 0; + position: fixed; + top: 0; +} + +.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit { + position: absolute; + top: auto; +} + +.ck.ck-autocomplete > .ck-search__results { + border-radius: var(--ck-rounded-corners-radius); + box-shadow: var(--ck-drop-shadow), 0 0; + background: var(--ck-color-base-background); + border: 1px solid var(--ck-color-dropdown-panel-border); + min-width: auto; + max-height: 200px; + position: absolute; + overflow-y: auto; +} + +.ck.ck-autocomplete > .ck-search__results.ck-search__results_n { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + margin-bottom: -1px; + bottom: 100%; +} + +.ck.ck-autocomplete > .ck-search__results.ck-search__results_s { + border-top-left-radius: 0; + border-top-right-radius: 0; + margin-top: -1px; + top: 100%; + bottom: auto; +} + +.ck.ck-autocomplete > .ck-search__results { + z-index: var(--ck-z-panel); +} + +.ck.ck-autocomplete { + position: relative; +} + +:root { + --ck-search-field-view-horizontal-spacing: calc(var(--ck-icon-size) + var(--ck-spacing-medium)); +} + +.ck.ck-search > .ck-labeled-field-view .ck-input { + width: 100%; +} + +.ck.ck-search > .ck-labeled-field-view > .ck-labeled-field-view__input-wrapper > .ck-icon { + position: absolute; + top: 50%; + transform: translateY(-50%); +} + +[dir="ltr"] :is(.ck.ck-search > .ck-labeled-field-view > .ck-labeled-field-view__input-wrapper > .ck-icon) { + left: var(--ck-spacing-medium); +} + +[dir="rtl"] :is(.ck.ck-search > .ck-labeled-field-view > .ck-labeled-field-view__input-wrapper > .ck-icon) { + right: var(--ck-spacing-medium); +} + +.ck.ck-search > .ck-labeled-field-view .ck-search__reset { + position: absolute; + top: 50%; + transform: translateY(-50%); +} + +.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-icon { + --ck-labeled-field-label-default-position-x: var(--ck-search-field-view-horizontal-spacing); +} + +.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-icon > .ck-labeled-field-view__input-wrapper > .ck-icon { + opacity: .5; + pointer-events: none; +} + +.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-icon .ck-input { + width: 100%; +} + +[dir="ltr"] :is(.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-icon .ck-input) { + padding-left: var(--ck-search-field-view-horizontal-spacing); +} + +[dir="rtl"] :is(.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-icon .ck-input):not(.ck-input-text_empty) { + padding-left: var(--ck-search-field-view-horizontal-spacing); +} + +.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-reset { + --ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-search-field-view-horizontal-spacing); +} + +.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-reset.ck-labeled-field-view_empty { + --ck-labeled-field-empty-unfocused-max-width: 100% - var(--ck-search-field-view-horizontal-spacing) - var(--ck-spacing-medium); +} + +.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset { + opacity: .5; + background: none; + min-width: auto; + min-height: auto; + padding: 0; +} + +[dir="ltr"] :is(.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset) { + right: var(--ck-spacing-medium); +} + +[dir="rtl"] :is(.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset) { + left: var(--ck-spacing-medium); +} + +.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset:hover { + opacity: 1; +} + +.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-reset .ck-input { + width: 100%; +} + +[dir="ltr"] :is(.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-reset .ck-input):not(.ck-input-text_empty) { + padding-right: var(--ck-search-field-view-horizontal-spacing); +} + +[dir="rtl"] :is(.ck.ck-search > .ck-labeled-field-view.ck-search__query_with-reset .ck-input) { + padding-right: var(--ck-search-field-view-horizontal-spacing); +} + +.ck.ck-search > .ck-search__results { + min-width: 100%; +} + +.ck.ck-search > .ck-search__results > .ck-search__info { + width: 100%; + padding: var(--ck-spacing-medium) var(--ck-spacing-large); +} + +.ck.ck-search > .ck-search__results > .ck-search__info * { + white-space: normal; +} + +.ck.ck-search > .ck-search__results > .ck-search__info > span:first-child { + font-weight: bold; + display: block; +} + +.ck.ck-search > .ck-search__results > .ck-search__info > span:last-child { + margin-top: var(--ck-spacing-medium); +} + +.ck.ck-search > .ck-search__results > .ck-search__info:not(.ck-hidden) ~ * { + display: none; +} + +.ck.ck-highlighted-text mark { + background: var(--ck-color-highlight-background); + vertical-align: initial; + font-weight: inherit; + line-height: inherit; + font-size: inherit; +} + +.ck.ck-balloon-panel.ck-tooltip { + --ck-balloon-border-width: 0px; + --ck-balloon-arrow-offset: 0px; + --ck-balloon-arrow-half-width: 4px; + --ck-balloon-arrow-height: 4px; + --ck-tooltip-text-padding: 4px; + --ck-color-panel-background: var(--ck-color-tooltip-background); + padding: 0 var(--ck-spacing-medium); + box-shadow: none; + -webkit-user-select: none; + user-select: none; +} + +.ck.ck-balloon-panel.ck-tooltip .ck-tooltip__text { + color: var(--ck-color-tooltip-text); + font-size: .9em; + line-height: 1.5; +} + +.ck.ck-balloon-panel.ck-tooltip.ck-tooltip_multi-line .ck-tooltip__text { + white-space: break-spaces; + padding: var(--ck-tooltip-text-padding) 0; + max-width: 200px; + display: inline-block; +} + +.ck.ck-balloon-panel.ck-tooltip:before { + display: none; +} + +.ck.ck-balloon-panel.ck-tooltip { + z-index: calc(var(--ck-z-dialog) + 100); +} + +:root { + --ck-toolbar-spinner-size: 18px; +} + +.ck.ck-spinner-container { + width: var(--ck-toolbar-spinner-size); + height: var(--ck-toolbar-spinner-size); + animation: 1.5s linear infinite ck-spinner-rotate; + display: block; +} + +@media (prefers-reduced-motion: reduce) { + .ck.ck-spinner-container { + animation-duration: 3s; + } +} + +.ck.ck-spinner-container { + position: relative; +} + +.ck.ck-spinner { + width: var(--ck-toolbar-spinner-size); + height: var(--ck-toolbar-spinner-size); + border: 2px solid var(--ck-color-text); + z-index: 1; + border-top-color: #0000; + border-radius: 50%; + margin: 0 auto; + position: absolute; + top: 50%; + left: 0; + right: 0; + transform: translateY(-50%); +} + +@keyframes ck-spinner-rotate { + to { + transform: rotate(360deg); + } +} + +.ck.ck-toolbar { + border-radius: var(--ck-rounded-corners-radius); + background: var(--ck-color-toolbar-background); + padding: 0 var(--ck-spacing-small); + border: 1px solid var(--ck-color-toolbar-border); + -webkit-user-select: none; + user-select: none; + flex-flow: row; + align-items: center; + display: flex; +} + +.ck.ck-toolbar .ck.ck-toolbar__separator { + height: var(--ck-icon-size); + background: var(--ck-color-toolbar-border); + width: 1px; + min-width: 1px; + margin-top: var(--ck-spacing-small); + margin-bottom: var(--ck-spacing-small); + 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%; + 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 { + flex-flow: wrap; + flex-grow: 1; + align-items: center; + display: flex; +} + +.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 { + border-radius: 0; + width: 100%; + margin: 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.ck-toolbar > .ck.ck-toolbar__grouped-dropdown > .ck-dropdown__button .ck-dropdown__arrow { + display: none; +} + +.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown > .ck-dropdown__panel { + min-width: auto; +} + +.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown > .ck-button > .ck-button__label { + width: auto; + max-width: 7em; +} + +.ck.ck-toolbar:focus { + outline: none; +} + +.ck-toolbar-container .ck.ck-toolbar { + border: 0; +} + +.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; +} + +:is([dir="rtl"] .ck.ck-toolbar, .ck.ck-toolbar[dir="rtl"]) > .ck-toolbar__items > .ck { + margin-right: 0; +} + +:is([dir="rtl"] .ck.ck-toolbar, .ck.ck-toolbar[dir="rtl"]):not(.ck-toolbar_compact) > .ck-toolbar__items > .ck { + margin-left: var(--ck-spacing-small); +} + +:is([dir="rtl"] .ck.ck-toolbar, .ck.ck-toolbar[dir="rtl"]) > .ck-toolbar__items > .ck:last-child { + margin-left: 0; +} + +:is([dir="rtl"] .ck.ck-toolbar, .ck.ck-toolbar[dir="rtl"]).ck-toolbar_compact > .ck-toolbar__items > .ck:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +:is([dir="rtl"] .ck.ck-toolbar, .ck.ck-toolbar[dir="rtl"]).ck-toolbar_compact > .ck-toolbar__items > .ck:last-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +:is([dir="rtl"] .ck.ck-toolbar, .ck.ck-toolbar[dir="rtl"]) > .ck.ck-toolbar__separator, :is([dir="rtl"] .ck.ck-toolbar, .ck.ck-toolbar[dir="rtl"]).ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) { + margin-left: var(--ck-spacing-small); +} + +:is([dir="ltr"] .ck.ck-toolbar, .ck.ck-toolbar[dir="ltr"]) > .ck-toolbar__items > .ck:last-child { + margin-right: 0; +} + +:is([dir="ltr"] .ck.ck-toolbar, .ck.ck-toolbar[dir="ltr"]).ck-toolbar_compact > .ck-toolbar__items > .ck:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +:is([dir="ltr"] .ck.ck-toolbar, .ck.ck-toolbar[dir="ltr"]).ck-toolbar_compact > .ck-toolbar__items > .ck:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +:is([dir="ltr"] .ck.ck-toolbar, .ck.ck-toolbar[dir="ltr"]) > .ck.ck-toolbar__separator, :is([dir="ltr"] .ck.ck-toolbar, .ck.ck-toolbar[dir="ltr"]).ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) { + margin-right: var(--ck-spacing-small); +} + +: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); + z-index: var(--ck-z-default); + position: absolute; +} + +.ck.ck-menu-bar { + background: var(--ck-color-base-background); + padding: var(--ck-spacing-small); + justify-content: flex-start; + gap: var(--ck-spacing-small); + border: 1px solid var(--ck-color-toolbar-border); + flex-wrap: wrap; + width: 100%; + display: flex; +} + +.ck.ck-menu-bar__menu > .ck-menu-bar__menu__button { + width: 100%; +} + +.ck.ck-menu-bar__menu > .ck-menu-bar__menu__button > .ck-button__label { + text-overflow: ellipsis; + flex-grow: 1; + overflow: hidden; +} + +.ck.ck-menu-bar__menu > .ck-menu-bar__menu__button.ck-disabled > .ck-button__label { + opacity: var(--ck-disabled-opacity); +} + +[dir="ltr"] :is(.ck.ck-menu-bar__menu > .ck-menu-bar__menu__button):not(.ck-button_with-text) { + padding-left: var(--ck-spacing-small); +} + +[dir="rtl"] :is(.ck.ck-menu-bar__menu > .ck-menu-bar__menu__button):not(.ck-button_with-text) { + padding-right: var(--ck-spacing-small); +} + +.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level > .ck-menu-bar__menu__button { + padding: var(--ck-spacing-small) var(--ck-spacing-medium); + min-height: unset; +} + +.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level > .ck-menu-bar__menu__button .ck-button__label { + width: unset; + line-height: unset; + overflow: visible; +} + +.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level > .ck-menu-bar__menu__button.ck-on { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level > .ck-menu-bar__menu__button .ck-icon { + display: none; +} + +.ck.ck-menu-bar__menu > .ck-menu-bar__menu__button > .ck-menu-bar__menu__button__arrow { + pointer-events: none; + z-index: var(--ck-z-default); +} + +.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button { + border-radius: 0; +} + +.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button > .ck-menu-bar__menu__button__arrow { + width: var(--ck-dropdown-arrow-size); +} + +[dir="ltr"] :is(.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button > .ck-menu-bar__menu__button__arrow) { + margin-left: var(--ck-spacing-standard); + margin-right: calc(-1 * var(--ck-spacing-small)); + transform: rotate(-90deg); +} + +[dir="rtl"] :is(.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button > .ck-menu-bar__menu__button__arrow) { + left: var(--ck-spacing-standard); + margin-right: var(--ck-spacing-small); + margin-left: calc(-1 * var(--ck-spacing-small)); + transform: rotate(90deg); +} + +.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button.ck-disabled > .ck-menu-bar__menu__button__arrow { + opacity: var(--ck-disabled-opacity); +} + +:root { + --ck-menu-bar-menu-max-width: 75vw; + --ck-menu-bar-nested-menu-horizontal-offset: 5px; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel { + border-radius: var(--ck-rounded-corners-radius); + box-shadow: var(--ck-drop-shadow), 0 0; + background: var(--ck-color-dropdown-panel-background); + border: 1px solid var(--ck-color-dropdown-panel-border); + height: fit-content; + z-index: var(--ck-z-panel); + max-width: var(--ck-menu-bar-menu-max-width); + position: absolute; + bottom: 0; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es, .ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se { + border-top-left-radius: 0; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws, .ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw { + border-top-right-radius: 0; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en, .ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne { + border-bottom-left-radius: 0; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn, .ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw { + border-bottom-right-radius: 0; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel:focus { + outline: none; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne, .ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw { + bottom: 100%; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se, .ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw { + top: 100%; + bottom: auto; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne, .ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se { + left: 0; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw, .ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw { + right: 0; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es, .ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en { + left: calc(100% - var(--ck-menu-bar-nested-menu-horizontal-offset)); +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es { + top: 0; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en { + bottom: 0; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws, .ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn { + right: calc(100% - var(--ck-menu-bar-nested-menu-horizontal-offset)); +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws { + top: 0; +} + +.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn { + bottom: 0; +} + +.ck.ck-menu-bar .ck-list-item-button:focus, .ck.ck-menu-bar .ck-list-item-button:active { + box-shadow: none; + border-color: #0000; +} + +.ck.ck-menu-bar.ck-menu-bar_focus-border-enabled .ck-list-item-button:focus, .ck.ck-menu-bar.ck-menu-bar_focus-border-enabled .ck-list-item-button:active { + z-index: 2; + border: var(--ck-focus-ring); + box-shadow: var(--ck-focus-outer-shadow), 0 0; + outline: none; + position: relative; +} + +.ck.ck-menu-bar__menu { + font-size: inherit; + display: block; +} + +.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level { + max-width: 100%; +} + +.ck.ck-menu-bar__menu { + position: relative; +} + +:root { + --ck-menu-bar-menu-item-min-width: 18em; +} + +.ck.ck-menu-bar__menu .ck.ck-menu-bar__menu__item { + min-width: var(--ck-menu-bar-menu-item-min-width); +} + +.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button { + border-radius: 0; +} + +.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button > .ck-spinner-container, .ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button > .ck-spinner-container .ck-spinner { + --ck-toolbar-spinner-size: 20px; +} + +.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button > .ck-spinner-container { + font-size: var(--ck-icon-font-size); +} + +[dir="ltr"] :is(.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button > .ck-spinner-container) { + margin-right: var(--ck-spacing-medium); +} + +[dir="rtl"] :is(.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button > .ck-spinner-container) { + margin-left: var(--ck-spacing-medium); +} + +/* @ckeditor/ckeditor5-utils */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-engine */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +.ck.ck-placeholder, .ck .ck-placeholder { + position: relative; +} + +@media (forced-colors: active) { + .ck.ck-placeholder, .ck .ck-placeholder { + forced-color-adjust: preserve-parent-color; + } +} + +:is(.ck.ck-placeholder, .ck .ck-placeholder):before { + content: attr(data-placeholder); + cursor: text; + pointer-events: none; + position: absolute; + left: 0; + right: 0; +} + +@media (forced-colors: none) { + :is(.ck.ck-placeholder, .ck .ck-placeholder):before { + color: var(--ck-color-engine-placeholder-text); + } +} + +@media (forced-colors: active) { + :is(.ck.ck-placeholder, .ck .ck-placeholder):before { + margin-left: 1px; + font-style: italic; + } +} + +.ck.ck-read-only .ck-placeholder:before { + display: none; +} + +.ck.ck-reset_all .ck-placeholder { + position: relative; +} + +.ck.ck-editor__editable span[data-ck-unsafe-element] { + display: none; +} + +/* @ckeditor/ckeditor5-watchdog */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-core */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +:root { + --ck-content-font-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif; + --ck-content-font-size: medium; + --ck-content-font-color: #000; + --ck-content-line-height: 1.5; + --ck-content-word-break: normal; + --ck-content-overflow-wrap: break-word; +} + +.ck-content { + font-family: var(--ck-content-font-family); + font-size: var(--ck-content-font-size); + color: var(--ck-content-font-color); + line-height: var(--ck-content-line-height); + word-break: var(--ck-content-word-break); + overflow-wrap: var(--ck-content-overflow-wrap); +} + +/* @ckeditor/ckeditor5-upload */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-adapter-ckfinder */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-enter */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-paragraph */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-heading */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +.ck.ck-heading_heading1 .ck-button__label { + font-size: 20px; +} + +.ck.ck-heading_heading2 .ck-button__label { + font-size: 17px; +} + +.ck.ck-heading_heading3 .ck-button__label { + font-size: 14px; +} + +.ck[class*="ck-heading_heading"] { + font-weight: bold; +} + +.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; +} + +/* @ckeditor/ckeditor5-typing */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-autoformat */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-autosave */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-basic-styles */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +.ck-content code { + background-color: #c7c7c74d; + border-radius: 2px; + padding: .15em; +} + +.ck.ck-editor__editable .ck-code_selected { + background-color: #c7c7c780; +} + +/* @ckeditor/ckeditor5-block-quote */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +.ck-content blockquote { + border-left: 5px solid #ccc; + margin-left: 0; + margin-right: 0; + padding-left: 1.5em; + padding-right: 1.5em; + font-style: italic; + overflow: hidden; +} + +.ck-content[dir="rtl"] blockquote { + border-left: 0; + border-right: 5px solid #ccc; +} + +/* @ckeditor/ckeditor5-undo */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-widget */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +:root { + --ck-widget-outline-thickness: 3px; + --ck-widget-handler-icon-size: 16px; + --ck-widget-handler-animation-duration: .2s; + --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-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 { + outline-width: var(--ck-widget-outline-thickness); + transition: outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve); + outline-style: solid; + outline-color: #0000; +} + +@media (prefers-reduced-motion: reduce) { + .ck .ck-widget { + transition: none; + } +} + +.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-widget { + position: relative; +} + +.ck .ck-editor__nested-editable { + border: 1px solid #0000; +} + +.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused, .ck .ck-editor__nested-editable:focus { + box-shadow: var(--ck-inner-shadow), 0 0; +} + +@media (forced-colors: none) { + .ck .ck-editor__nested-editable.ck-editor__nested-editable_focused, .ck .ck-editor__nested-editable:focus { + background-color: var(--ck-color-widget-editable-focus-background); + } +} + +:is(.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused, .ck .ck-editor__nested-editable:focus):not(td, th) { + border: var(--ck-focus-ring); + outline: none; +} + +.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle { + box-sizing: border-box; + 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; + left: calc(0px - var(--ck-widget-outline-thickness)); + background-color: #0000; + padding: 4px; + top: 0; + transform: translateY(-100%); +} + +@media (prefers-reduced-motion: reduce) { + .ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle { + transition: none; + } +} + +.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); +} + +@media (prefers-reduced-motion: reduce) { + .ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator { + transition: none; + } +} + +.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__selection-handle:hover .ck-icon .ck-icon__selected-indicator { + opacity: 1; +} + +.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle { + position: absolute; +} + +.ck .ck-widget.ck-widget_with-selection-handle:hover > .ck-widget__selection-handle { + opacity: 1; + background-color: var(--ck-color-widget-hover-border); + visibility: visible; +} + +:is(.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected, .ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover) > .ck-widget__selection-handle { + opacity: 1; + background-color: var(--ck-color-focus-border); + visibility: visible; +} + +:is(.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected, .ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover) > .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator { + opacity: 1; +} + +.ck .ck-widget.ck-widget_with-selection-handle { + position: relative; +} + +.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-widget:has(.ck-widget.table:hover) { + outline-color: #0000; +} + +.ck .ck-widget.ck-widget_with-selection-handle:has(.ck-widget.table:hover) > .ck-widget__selection-handle { + opacity: 0; + visibility: hidden; +} + +.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); +} + +:is(.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected, .ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover).ck-widget_with-selection-handle > .ck-widget__selection-handle, :is(.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected, .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:not(.ck-pagination-view) > .ck-widget.ck-widget_with-selection-handle:first-child, .ck.ck-editor__editable:not(.ck-pagination-view) blockquote > .ck-widget.ck-widget_with-selection-handle:first-child { + margin-top: calc(1em + var(--ck-widget-handler-icon-size)); +} + +.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); + padding: 0 var(--ck-spacing-small); + height: var(--ck-resizer-tooltip-height); + line-height: var(--ck-resizer-tooltip-height); + display: block; +} + +.ck .ck-size-view.ck-orientation-top-left, .ck .ck-size-view.ck-orientation-top-right, .ck .ck-size-view.ck-orientation-bottom-right, .ck .ck-size-view.ck-orientation-bottom-left, .ck .ck-size-view.ck-orientation-above-center { + 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-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); + pointer-events: none; + display: none; + position: absolute; + top: 0; + left: 0; +} + +.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); + pointer-events: all; + position: absolute; +} + +.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); +} + +.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left, .ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right { + cursor: nwse-resize; +} + +.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right, .ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left { + cursor: nesw-resize; +} + +.ck .ck-widget_with-resizer { + position: relative; +} + +.ck-focused .ck-widget_with-resizer.ck-widget_selected > .ck-widget__resizer { + display: block; +} + +: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); + 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; + z-index: var(--ck-z-default); + border-radius: 100px; + display: block; + position: absolute; + overflow: hidden; +} + +@media (prefers-reduced-motion: reduce) { + .ck .ck-widget .ck-widget__type-around__button { + transition: none; + } +} + +.ck .ck-widget .ck-widget__type-around__button svg { + width: 10px; + height: 8px; + margin-top: 1px; + transition: transform .5s; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +@media (prefers-reduced-motion: reduce) { + .ck .ck-widget .ck-widget__type-around__button svg { + transition: none; + } +} + +.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 svg { + z-index: calc(var(--ck-z-default) + 2); +} + +.ck .ck-widget .ck-widget__type-around__button:hover { + animation: 1s infinite ck-widget-type-around-button-sonar; +} + +.ck .ck-widget .ck-widget__type-around__button:hover svg polyline { + animation: 2s linear ck-widget-type-around-arrow-dash; +} + +.ck .ck-widget .ck-widget__type-around__button:hover svg line { + animation: 2s linear ck-widget-type-around-arrow-tip-dash; +} + +@media (prefers-reduced-motion: reduce) { + .ck .ck-widget .ck-widget__type-around__button:hover { + animation: none; + } + + .ck .ck-widget .ck-widget__type-around__button:hover svg polyline, .ck .ck-widget .ck-widget__type-around__button:hover svg line { + animation: none; + } +} + +.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before { + top: calc(-.5 * var(--ck-widget-outline-thickness)); + left: min(10%, 30px); + transform: translateY(-50%); +} + +.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after { + bottom: calc(-.5 * var(--ck-widget-outline-thickness)); + right: min(10%, 30px); + transform: translateY(50%); +} + +.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); +} + +:is(.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):after { + width: calc(var(--ck-widget-type-around-button-size) - 2px); + height: calc(var(--ck-widget-type-around-button-size) - 2px); + content: ""; + z-index: calc(var(--ck-z-default) + 1); + background: linear-gradient(135deg, #fff0 0%, #ffffff4d 100%); + border-radius: 100px; + display: block; + position: absolute; + top: 1px; + left: 1px; +} + +.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before, .ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after { + outline-color: #0000; +} + +.ck .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button { + opacity: 1; + pointer-events: auto; +} + +.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; + background: var(--ck-color-base-text); + outline: 1px solid #ffffff80; + height: 1px; + animation: 1s linear infinite forwards ck-widget-type-around-fake-caret-pulse; +} + +:is(.ck .ck-widget.ck-widget_type-around_show-fake-caret_before, .ck .ck-widget.ck-widget_type-around_show-fake-caret_after).ck-widget_selected:hover { + outline-color: var(--ck-color-widget-hover-border); +} + +:is(.ck .ck-widget.ck-widget_type-around_show-fake-caret_before, .ck .ck-widget.ck-widget_type-around_show-fake-caret_after) > .ck-widget__type-around > .ck-widget__type-around__button { + opacity: 0; + pointer-events: none; +} + +:is(:is(.ck .ck-widget.ck-widget_type-around_show-fake-caret_before, .ck .ck-widget.ck-widget_type-around_show-fake-caret_after).ck-widget_with-selection-handle.ck-widget_selected, :is(.ck .ck-widget.ck-widget_type-around_show-fake-caret_before, .ck .ck-widget.ck-widget_type-around_show-fake-caret_after).ck-widget_with-selection-handle.ck-widget_selected:hover) > .ck-widget__selection-handle { + opacity: 0; +} + +:is(.ck .ck-widget.ck-widget_type-around_show-fake-caret_before, .ck .ck-widget.ck-widget_type-around_show-fake-caret_after).ck-widget_selected.ck-widget_with-resizer > .ck-widget__resizer { + opacity: 0; +} + +.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(-1 * var(--ck-widget-outline-thickness)); + right: calc(-1 * var(--ck-widget-outline-thickness)); +} + +.ck .ck-widget.ck-widget_type-around_show-fake-caret_before > .ck-widget__type-around > .ck-widget__type-around__fake-caret { + top: calc(-1 * var(--ck-widget-outline-thickness) - 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(-1 * var(--ck-widget-outline-thickness) - 1px); + display: block; +} + +.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; +} + +:is(.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected, .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 .ck-widget:has(.ck-widget.table: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: 10px; + } + + 20%, 100% { + stroke-dashoffset: 0; + } +} + +@keyframes ck-widget-type-around-arrow-tip-dash { + 0%, 20% { + stroke-dashoffset: 7px; + } + + 40%, 100% { + 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)); + } + + 100% { + 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; + } + + 100% { + opacity: 1; + } +} + +.ck.ck-editor__editable.ck-read-only .ck-widget__type-around, .ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around { + display: none; +} + +.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around { + display: none; +} + +.ck.ck-editor__editable.ck-restricted-editing_mode_restricted div.restricted-editing-exception .ck-widget__type-around { + display: initial; +} + +/* @ckeditor/ckeditor5-image */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +:root { + --ck-content-color-image-caption-background: #f7f7f7; + --ck-content-color-image-caption-text: #333; + --ck-color-image-caption-highlighted-background: #fd0; +} + +.ck-content .image > figcaption { + caption-side: bottom; + word-break: normal; + overflow-wrap: anywhere; + break-before: avoid; + color: var(--ck-content-color-image-caption-text); + background-color: var(--ck-content-color-image-caption-background); + outline-offset: -1px; + padding: .6em; + font-size: .75em; + display: table-caption; +} + +@media (forced-colors: active) { + .ck-content .image > figcaption { + background-color: unset; + color: unset; + } +} + +@media (forced-colors: none) { + .ck.ck-editor__editable .image > figcaption.image__caption_highlighted { + animation: .6s ease-out ck-image-caption-highlight; + } +} + +@media (prefers-reduced-motion: reduce) { + .ck.ck-editor__editable .image > figcaption.image__caption_highlighted { + animation: none; + } +} + +@keyframes ck-image-caption-highlight { + 0% { + background-color: var(--ck-color-image-caption-highlighted-background); + } + + 100% { + background-color: var(--ck-content-color-image-caption-background); + } +} + +.ck-content img.image_resized { + height: auto; +} + +.ck-content .image.image_resized { + box-sizing: border-box; + max-width: 100%; + display: block; +} + +.ck-content .image.image_resized img { + width: 100%; +} + +.ck-content .image.image_resized > figcaption { + display: block; +} + +:is(.ck.ck-editor__editable td, .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; +} + +:root { + --ck-content-image-style-spacing: 1.5em; + --ck-content-inline-image-style-spacing: calc(var(--ck-content-image-style-spacing) / 2); +} + +.ck-content .image.image-style-block-align-left, .ck-content .image.image-style-block-align-right { + max-width: calc(100% - var(--ck-content-image-style-spacing)); +} + +.ck-content .image.image-style-align-left, .ck-content .image.image-style-align-right { + clear: none; +} + +.ck-content .image.image-style-side { + float: right; + margin-left: var(--ck-content-image-style-spacing); + max-width: 50%; +} + +.ck-content .image.image-style-align-left { + float: left; + margin-right: var(--ck-content-image-style-spacing); +} + +.ck-content .image.image-style-align-right { + float: right; + margin-left: var(--ck-content-image-style-spacing); +} + +.ck-content .image.image-style-block-align-right { + margin-left: auto; + margin-right: 0; +} + +.ck-content .image.image-style-block-align-left { + margin-left: 0; + margin-right: auto; +} + +.ck-content .image-style-align-center { + margin-left: auto; + margin-right: auto; +} + +.ck-content .image-style-align-left { + float: left; + margin-right: var(--ck-content-image-style-spacing); +} + +.ck-content .image-style-align-right { + float: right; + margin-left: var(--ck-content-image-style-spacing); +} + +.ck-content p + .image.image-style-align-left, .ck-content p + .image.image-style-align-right, .ck-content p + .image.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-content-inline-image-style-spacing); + margin-bottom: var(--ck-content-inline-image-style-spacing); +} + +.ck-content .image-inline.image-style-align-left { + margin-right: var(--ck-content-inline-image-style-spacing); +} + +.ck-content .image-inline.image-style-align-right { + margin-left: var(--ck-content-inline-image-style-spacing); +} + +:is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .ck-splitbutton__action:not(.ck-disabled), :is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .ck-splitbutton__arrow:not(.ck-disabled), :is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) { + background-color: var(--ck-color-button-on-background); +} + +:is(:is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .ck-splitbutton__action:not(.ck-disabled), :is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .ck-splitbutton__arrow:not(.ck-disabled), :is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .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); +} + +:is(.ck.ck-editor__editable .image, .ck.ck-editor__editable .image-inline).ck-appear { + animation: .7s fadeIn; +} + +@media (prefers-reduced-motion: reduce) { + :is(.ck.ck-editor__editable .image, .ck.ck-editor__editable .image-inline).ck-appear { + opacity: 1; + animation: none; + } +} + +.ck.ck-editor__editable .image, .ck.ck-editor__editable .image-inline { + position: relative; +} + +.ck.ck-editor__editable .image .ck-progress-bar, .ck.ck-editor__editable .image-inline .ck-progress-bar { + background: var(--ck-color-upload-bar-background); + width: 0; + height: 2px; + transition: width .1s; + position: absolute; + top: 0; + left: 0; +} + +@keyframes fadeIn { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +: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); + font-size: calc(1px * var(--ck-image-upload-icon-size)); + 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)); + top: min(var(--ck-spacing-medium), 6%); + right: min(var(--ck-spacing-medium), 6%); + border-radius: 50%; + animation-name: ck-upload-complete-icon-show, ck-upload-complete-icon-hide; + animation-duration: .5s, .5s; + animation-delay: 0s, 3s; + animation-fill-mode: forwards, forwards; + display: block; + position: absolute; + overflow: hidden; +} + +.ck-image-upload-complete-icon:after { + opacity: 0; + transform-origin: 0 0; + 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); + box-sizing: border-box; + content: ""; + width: 0; + height: 0; + animation-name: ck-upload-complete-icon-check; + animation-duration: .5s; + animation-delay: .5s; + animation-fill-mode: forwards; + position: absolute; + top: 50%; + left: 25%; + transform: scaleX(-1) rotate(135deg); +} + +@media (prefers-reduced-motion: reduce) { + .ck-image-upload-complete-icon { + animation-duration: 0s; + } + + .ck-image-upload-complete-icon:after { + opacity: 1; + width: .3em; + height: .45em; + animation: none; + } +} + +.ck-image-upload-complete-icon { + z-index: 1; +} + +@keyframes ck-upload-complete-icon-show { + from { + opacity: 0; + } + + to { + opacity: 1; + } +} + +@keyframes ck-upload-complete-icon-hide { + from { + opacity: 1; + } + + to { + opacity: 0; + } +} + +@keyframes ck-upload-complete-icon-check { + 0% { + opacity: 1; + width: 0; + height: 0; + } + + 33% { + width: .3em; + height: 0; + } + + 100% { + opacity: 1; + width: .3em; + height: .45em; + } +} + +:root { + --ck-color-upload-placeholder-loader: #b3b3b3; + --ck-upload-placeholder-loader-size: 32px; + --ck-upload-placeholder-image-aspect-ratio: 2.8; +} + +.ck .ck-image-upload-placeholder { + width: 100%; + margin: 0; +} + +.ck .ck-image-upload-placeholder.image-inline { + width: calc(2 * var(--ck-upload-placeholder-loader-size) * var(--ck-upload-placeholder-image-aspect-ratio)); +} + +.ck .ck-image-upload-placeholder img { + aspect-ratio: var(--ck-upload-placeholder-image-aspect-ratio); +} + +.ck .ck-upload-placeholder-loader { + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + display: flex; + position: absolute; + top: 0; +} + +.ck .ck-upload-placeholder-loader:before { + width: var(--ck-upload-placeholder-loader-size); + height: var(--ck-upload-placeholder-loader-size); + border-top: 3px solid var(--ck-color-upload-placeholder-loader); + content: ""; + border-right: 2px solid #0000; + border-radius: 50%; + animation: 1s linear infinite ck-upload-placeholder-loader; + position: relative; +} + +.ck .ck-upload-placeholder-loader { + left: 0; +} + +@keyframes ck-upload-placeholder-loader { + to { + transform: rotate(360deg); + } +} + +.ck-content .image { + clear: both; + text-align: center; + min-width: 50px; + margin: .9em auto; + display: table; +} + +.ck-content .image img { + min-width: 100%; + max-width: 100%; + height: auto; + margin: 0 auto; + display: block; +} + +.ck-content .image-inline { + align-items: flex-start; + max-width: 100%; + display: inline-flex; +} + +.ck-content .image-inline picture { + display: flex; +} + +.ck-content .image-inline picture, .ck-content .image-inline img { + 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; + text-overflow: ellipsis; + overflow: hidden; +} + +.ck.ck-editor__editable .image { + z-index: 1; +} + +.ck.ck-editor__editable .image.ck-widget_selected { + z-index: 2; +} + +.ck.ck-editor__editable .image-inline { + z-index: 1; +} + +.ck.ck-editor__editable .image-inline.ck-widget_selected { + z-index: 2; +} + +.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection { + display: none; +} + +.ck.ck-editor__editable .image-inline img { + height: auto; +} + +:is(.ck.ck-editor__editable td, .ck.ck-editor__editable th) .image-inline img { + max-width: none; +} + +.ck.ck-editor__editable img.image_placeholder { + background-size: 100% 100%; +} + +:root { + --ck-image-insert-insert-by-url-width: 250px; +} + +.ck.ck-image-insert-url { + --ck-input-width: 100%; + width: 400px; +} + +.ck.ck-image-insert-url .ck-image-insert-url__action-row { + grid-column-gap: var(--ck-spacing-large); + margin-top: var(--ck-spacing-large); + display: grid; +} + +.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button-save, .ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button-cancel { + justify-content: center; + min-width: auto; +} + +.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button .ck-button__label { + color: var(--ck-color-text); +} + +.ck.ck-image-insert-url .ck-image-insert-url__action-row { + grid-template-columns: repeat(2, 1fr); +} + +.ck.ck-image-insert-url { + padding: var(--ck-spacing-large) var(--ck-spacing-large) 0; +} + +.ck.ck-image-insert-form > .ck.ck-button { + width: 100%; + display: block; +} + +[dir="ltr"] :is(.ck.ck-image-insert-form > .ck.ck-button) { + text-align: left; +} + +[dir="rtl"] :is(.ck.ck-image-insert-form > .ck.ck-button) { + text-align: right; +} + +.ck.ck-image-insert-form > .ck.ck-collapsible:not(:first-child) { + border-top: 1px solid var(--ck-color-base-border); +} + +.ck.ck-image-insert-form > .ck.ck-collapsible:not(:last-child) { + border-bottom: 1px solid var(--ck-color-base-border); +} + +.ck.ck-image-insert-form > .ck.ck-collapsible { + min-width: var(--ck-image-insert-insert-by-url-width); +} + +.ck.ck-image-insert-form > .ck.ck-image-insert-url { + min-width: var(--ck-image-insert-insert-by-url-width); + padding: var(--ck-spacing-large); +} + +.ck.ck-image-insert-form:focus { + outline: none; +} + +:root { + --ck-image-custom-resize-form-width: 340px; +} + +@media screen and (width <= 600px) { + :root { + --ck-image-custom-resize-form-width: 300px; + } +} + +.ck.ck-image-custom-resize-form.ck-responsive-form { + width: var(--ck-image-custom-resize-form-width); +} + +:root { + --ck-text-alternative-form-width: 340px; +} + +@media screen and (width <= 600px) { + :root { + --ck-text-alternative-form-width: 300px; + } +} + +.ck.ck-text-alternative-form.ck-responsive-form { + width: var(--ck-text-alternative-form-width); +} + +/* @ckeditor/ckeditor5-link */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +.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 { + border-right: 1px solid var(--ck-color-base-text); + outline: 1px solid #ffffff80; + height: 100%; + margin-right: -1px; +} + +:root { + --ck-link-bookmark-icon-size: calc(var(--ck-icon-size) * .7); +} + +.ck.ck-toolbar.ck-link-toolbar > .ck-toolbar__items { + flex-wrap: nowrap; +} + +a.ck.ck-button.ck-link-toolbar__preview { + padding: 0 var(--ck-spacing-medium); + color: var(--ck-color-link-default); + cursor: pointer; + justify-content: center; +} + +a.ck.ck-button.ck-link-toolbar__preview .ck.ck-button__label { + text-overflow: ellipsis; + max-width: var(--ck-input-width); +} + +a.ck.ck-button.ck-link-toolbar__preview, a.ck.ck-button.ck-link-toolbar__preview:hover, a.ck.ck-button.ck-link-toolbar__preview:focus, a.ck.ck-button.ck-link-toolbar__preview:active { + background: none; +} + +a.ck.ck-button.ck-link-toolbar__preview:active { + box-shadow: none; +} + +a.ck.ck-button.ck-link-toolbar__preview:hover, a.ck.ck-button.ck-link-toolbar__preview:focus { + text-decoration: underline; +} + +a.ck.ck-button.ck-link-toolbar__preview.ck-button_with-text .ck.ck-icon.ck-button__icon { + width: var(--ck-link-bookmark-icon-size); + height: var(--ck-link-bookmark-icon-size); +} + +[dir="ltr"] :is(a.ck.ck-button.ck-link-toolbar__preview.ck-button_with-text .ck.ck-icon.ck-button__icon) { + margin-right: var(--ck-spacing-tiny); + margin-left: var(--ck-spacing-small); +} + +[dir="rtl"] :is(a.ck.ck-button.ck-link-toolbar__preview.ck-button_with-text .ck.ck-icon.ck-button__icon) { + margin-left: var(--ck-spacing-tiny); + margin-right: var(--ck-spacing-small); +} + +a.ck.ck-button.ck-link-toolbar__preview:has(.ck-icon) { + padding-left: var(--ck-spacing-extra-tiny); +} + +.ck.ck-link-toolbar__preview { + display: inline-block; +} + +.ck.ck-link-toolbar__preview .ck-button__label { + overflow: hidden; +} + +:root { + --ck-link-image-indicator-icon-size: 20; + --ck-link-image-indicator-icon-is-visible: clamp(0px, 100% - 50px, 1px); +} + +:is(.ck.ck-editor__editable figure.image > a, .ck.ck-editor__editable a span.image-inline):after { + content: ""; + top: min(var(--ck-spacing-medium), 6%); + right: min(var(--ck-spacing-medium), 6%); + 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)); + background-color: #0006; + background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+"); + background-position: center; + background-repeat: no-repeat; + background-size: 14px; + border-radius: 100%; + display: block; + position: absolute; + overflow: hidden; +} + +:root { + --ck-link-panel-width: 340px; + --ck-link-provider-list-item-text-height: calc(var(--ck-line-height-base) * var(--ck-font-size-base)); + --ck-link-provider-list-item-height: calc(var(--ck-link-provider-list-item-text-height) + var(--ck-spacing-small) + var(--ck-spacing-small)); +} + +@media screen and (width <= 600px) { + :root { + --ck-link-panel-width: 300px; + } +} + +.ck.ck-form.ck-link-form { + width: var(--ck-link-panel-width); + padding-bottom: 0; +} + +@media screen and (width <= 600px) { + .ck.ck-form.ck-link-form.ck-responsive-form .ck-labeled-field-view { + margin: 0; + } +} + +.ck.ck-form.ck-link-form .ck-link-form__providers-list { + border-top: 1px solid var(--ck-color-base-border); + flex-direction: column; + display: flex; +} + +.ck.ck-form.ck-link-form .ck-link-form__providers-list:has(.ck-list__item:nth-child(n+5)) { + max-height: calc(var(--ck-link-provider-list-item-height) * 4 + var(--ck-spacing-large) + 1px); + overflow: auto; +} + +.ck.ck-form.ck-link-form .ck-link-form__providers-list .ck-link__button { + padding: var(--ck-spacing-small) var(--ck-spacing-large); + border-radius: 0; +} + +.ck.ck-form.ck-link-form .ck-link-form__providers-list .ck-link__button > .ck-button__label { + text-overflow: ellipsis; + flex-grow: 1; + overflow: hidden; +} + +.ck.ck-link-form .ck-link__items:empty { + display: none; +} + +:root { + --ck-link-properties-width: 340px; +} + +@media screen and (width <= 600px) { + :root { + --ck-link-properties-width: 300px; + } +} + +.ck.ck-link-properties { + width: var(--ck-link-properties-width); +} + +:root { + --ck-link-providers-width: 340px; + --ck-link-list-view-max-height: 240px; + --ck-link-list-view-icon-size: calc(var(--ck-icon-size) * .8); +} + +@media screen and (width <= 600px) { + :root { + --ck-link-providers-width: 300px; + } +} + +.ck.ck-link-providers { + width: var(--ck-link-providers-width); +} + +.ck.ck-link-providers .ck-form__header__label { + text-overflow: ellipsis; + overflow: hidden; +} + +.ck.ck-link-providers > .ck-link-providers__list { + max-height: min(var(--ck-link-list-view-max-height), 40vh); + overflow: hidden auto; +} + +.ck.ck-link-providers > .ck-link-providers__list .ck-button > .ck-icon { + width: var(--ck-link-list-view-icon-size); + height: var(--ck-link-list-view-icon-size); + flex-shrink: 0; +} + +.ck.ck-link-providers > .ck-link-providers__list .ck-button > .ck-button__label { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.ck.ck-link-providers > .ck-link-providers__list { + overscroll-behavior: contain; +} + +.ck.ck-link-providers .ck-link__empty-list-info { + padding: calc(2 * var(--ck-spacing-large)) var(--ck-spacing-medium); + text-align: center; + font-style: italic; +} + +/* @ckeditor/ckeditor5-ckfinder */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-easy-image */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-editor-classic */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +.ck.ck-editor__main > .ck-editor__editable { + background: var(--ck-color-base-background); + border-radius: var(--ck-rounded-corners-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); +} + +.ck.ck-editor { + position: relative; +} + +.ck.ck-editor .ck-editor__top .ck-sticky-panel .ck-toolbar { + z-index: var(--ck-z-panel); +} + +/* @ckeditor/ckeditor5-editor-decoupled */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-essentials */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-list */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +.ck-editor__editable .ck-list-bogus-paragraph { + display: block; +} + +:root { + --ck-list-style-button-size: 44px; +} + +.ck.ck-list-styles-list { + row-gap: var(--ck-spacing-medium); + column-gap: var(--ck-spacing-medium); + padding: var(--ck-spacing-large); + grid-template-columns: repeat(3, auto); +} + +.ck.ck-list-styles-list .ck-button { + width: var(--ck-list-style-button-size); + height: var(--ck-list-style-button-size); + box-sizing: content-box; + margin: 0; + padding: 0; +} + +.ck.ck-list-styles-list .ck-button .ck-icon { + width: var(--ck-list-style-button-size); + height: var(--ck-list-style-button-size); +} + +.ck.ck-list-styles-list { + display: grid; +} + +.ck.ck-list-properties.ck-list-properties_without-styles { + padding: var(--ck-spacing-large); +} + +.ck.ck-list-properties.ck-list-properties_without-styles > * { + min-width: 14em; +} + +.ck.ck-list-properties.ck-list-properties_without-styles > * + * { + margin-top: var(--ck-spacing-standard); +} + +.ck.ck-list-properties.ck-list-properties_with-numbered-properties > .ck-list-styles-list { + grid-template-columns: repeat(4, auto); +} + +.ck.ck-list-properties.ck-list-properties_with-numbered-properties > .ck-collapsible { + border-top: 1px solid var(--ck-color-base-border); +} + +.ck.ck-list-properties.ck-list-properties_with-numbered-properties > .ck-collapsible > .ck-collapsible__children > * { + width: 100%; +} + +.ck.ck-list-properties.ck-list-properties_with-numbered-properties > .ck-collapsible > .ck-collapsible__children > * + * { + margin-top: var(--ck-spacing-standard); +} + +.ck.ck-list-properties .ck.ck-numbered-list-properties__start-index .ck-input { + width: 100%; + min-width: auto; +} + +.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order { + margin-bottom: calc(-1 * var(--ck-spacing-tiny)); + background: none; + padding-left: 0; + padding-right: 0; +} + +.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:active, .ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:hover { + box-shadow: none; + background: none; + border-color: #0000; +} + +:root { + --ck-content-list-marker-color: var(--ck-content-font-color); + --ck-content-list-marker-font-family: var(--ck-content-font-family); + --ck-content-list-marker-font-size: var(--ck-content-font-size); +} + +.ck-content li > p:first-of-type { + margin-top: 0; +} + +.ck-content li > p:only-of-type { + margin-top: 0; + margin-bottom: 0; +} + +.ck-content li.ck-list-marker-bold::marker { + font-weight: bold; +} + +.ck-content li.ck-list-marker-italic::marker { + font-style: italic; +} + +.ck-content li.ck-list-marker-color::marker { + color: var(--ck-content-list-marker-color); +} + +.ck-content li.ck-list-marker-font-family::marker { + font-family: var(--ck-content-list-marker-font-family); +} + +.ck-content li.ck-list-marker-font-size::marker { + font-size: var(--ck-content-list-marker-font-size); +} + +.ck-content li.ck-list-marker-font-size-tiny::marker { + font-size: var(--ck-content-font-size-tiny); +} + +.ck-content li.ck-list-marker-font-size-small::marker { + font-size: var(--ck-content-font-size-small); +} + +.ck-content li.ck-list-marker-font-size-big::marker { + font-size: var(--ck-content-font-size-big); +} + +.ck-content li.ck-list-marker-font-size-huge::marker { + font-size: var(--ck-content-font-size-huge); +} + +.ck-content ol { + list-style-type: decimal; +} + +.ck-content ol ol { + list-style-type: lower-latin; +} + +.ck-content ol ol ol { + list-style-type: lower-roman; +} + +.ck-content ol ol ol ol { + list-style-type: upper-latin; +} + +.ck-content ol ol ol ol ol { + list-style-type: upper-roman; +} + +.ck-content ul { + list-style-type: disc; +} + +.ck-content ul ul { + list-style-type: circle; +} + +.ck-content ul ul ul { + list-style-type: square; +} + +.ck-content ul ul ul ul { + list-style-type: square; +} + +:root { + --ck-content-todo-list-checkmark-size: 16px; +} + +.ck-content .todo-list .todo-list__label > input, .ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input { + -webkit-appearance: none; + width: var(--ck-content-todo-list-checkmark-size); + height: var(--ck-content-todo-list-checkmark-size); + vertical-align: middle; + border: 0; + margin-left: 0; + margin-right: -15px; + display: inline-block; + position: relative; + left: -25px; + right: 0; +} + +[dir="rtl"]:is(.ck-content .todo-list .todo-list__label > input, .ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input) { + margin-left: -15px; + margin-right: 0; + left: 0; + right: -25px; +} + +:is(.ck-content .todo-list .todo-list__label > input, .ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input):before { + box-sizing: border-box; + content: ""; + border: 1px solid #333; + border-radius: 2px; + width: 100%; + height: 100%; + transition: box-shadow .25s ease-in-out; + display: block; + position: absolute; +} + +@media (prefers-reduced-motion: reduce) { + :is(.ck-content .todo-list .todo-list__label > input, .ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input):before { + transition: none; + } +} + +:is(.ck-content .todo-list .todo-list__label > input, .ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input):after { + box-sizing: content-box; + pointer-events: none; + content: ""; + left: calc(var(--ck-content-todo-list-checkmark-size) / 3); + top: calc(var(--ck-content-todo-list-checkmark-size) / 5.3); + width: calc(var(--ck-content-todo-list-checkmark-size) / 5.3); + height: calc(var(--ck-content-todo-list-checkmark-size) / 2.6); + border-style: solid; + border-color: #0000; + border-width: 0 calc(var(--ck-content-todo-list-checkmark-size) / 8) calc(var(--ck-content-todo-list-checkmark-size) / 8) 0; + display: block; + position: absolute; + transform: rotate(45deg); +} + +:is(.ck-content .todo-list .todo-list__label > input, .ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input)[checked]:before { + background: #26ab33; + border-color: #26ab33; +} + +:is(.ck-content .todo-list .todo-list__label > input, .ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input)[checked]:after { + border-color: #fff; +} + +.ck-content .todo-list { + list-style: none; +} + +.ck-content .todo-list li { + margin-bottom: 5px; + position: relative; +} + +.ck-content .todo-list li .todo-list { + margin-top: 5px; +} + +.ck-content .todo-list .todo-list__label .todo-list__label__description { + vertical-align: middle; +} + +.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type="checkbox"] { + position: absolute; +} + +.ck-editor__editable.ck-content .todo-list .todo-list__label > input, .ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input { + cursor: pointer; +} + +:is(.ck-editor__editable.ck-content .todo-list .todo-list__label > input, .ck-editor__editable.ck-content .todo-list .todo-list__label > span[contenteditable="false"] > input):hover:before { + box-shadow: 0 0 0 5px #0000001a; +} + +.ck-editor__editable.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type="checkbox"] { + position: absolute; +} + +/* @ckeditor/ckeditor5-media-embed */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +.ck-content .media { + clear: both; + min-width: 15em; + margin: .9em 0; + display: block; +} + +:root { + --ck-media-embed-placeholder-icon-size: 3em; + --ck-color-media-embed-placeholder-url-text: #757575; + --ck-color-media-embed-placeholder-url-text-hover: var(--ck-color-base-text); +} + +.ck-media__wrapper { + margin: 0 auto; +} + +.ck-media__wrapper .ck-media__placeholder { + padding: calc(3 * var(--ck-spacing-standard)); + background: var(--ck-color-base-foreground); + flex-direction: column; + align-items: center; + display: flex; +} + +.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon { + min-width: var(--ck-media-embed-placeholder-icon-size); + height: var(--ck-media-embed-placeholder-icon-size); + margin-bottom: var(--ck-spacing-large); + background-position: center; + background-size: cover; +} + +.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__icon .ck-icon { + width: 100%; + height: 100%; +} + +.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text { + color: var(--ck-color-media-embed-placeholder-url-text); + white-space: nowrap; + text-align: center; + text-overflow: ellipsis; + font-style: italic; +} + +.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url__text:hover { + color: var(--ck-color-media-embed-placeholder-url-text-hover); + cursor: pointer; + text-decoration: underline; +} + +.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url { + max-width: 100%; + position: relative; +} + +.ck-media__wrapper .ck-media__placeholder .ck-media__placeholder__url .ck-media__placeholder__url__text { + display: block; + overflow: hidden; +} + +.ck-media__wrapper[data-oembed-url*="open.spotify.com"] { + max-width: 300px; + max-height: 380px; +} + +.ck-media__wrapper[data-oembed-url*="google.com/maps"] .ck-media__placeholder__icon, .ck-media__wrapper[data-oembed-url*="goo.gl/maps"] .ck-media__placeholder__icon, .ck-media__wrapper[data-oembed-url*="maps.google.com"] .ck-media__placeholder__icon, .ck-media__wrapper[data-oembed-url*="maps.app.goo.gl"] .ck-media__placeholder__icon { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAuMzc4IiBoZWlnaHQ9IjI1NC4xNjciIHZpZXdCb3g9IjAgMCA2Ni4yNDYgNjcuMjQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTcyLjUzMSAtMjE4LjQ1NSkgc2NhbGUoLjk4MDEyKSI+PHJlY3Qgcnk9IjUuMjM4IiByeD0iNS4yMzgiIHk9IjIzMS4zOTkiIHg9IjE3Ni4wMzEiIGhlaWdodD0iNjAuMDk5IiB3aWR0aD0iNjAuMDk5IiBmaWxsPSIjMzRhNjY4IiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxwYXRoIGQ9Ik0yMDYuNDc3IDI2MC45bC0yOC45ODcgMjguOTg3YTUuMjE4IDUuMjE4IDAgMCAwIDMuNzggMS42MWg0OS42MjFjMS42OTQgMCAzLjE5LS43OTggNC4xNDYtMi4wMzd6IiBmaWxsPSIjNWM4OGM1Ii8+PHBhdGggZD0iTTIyNi43NDIgMjIyLjk4OGMtOS4yNjYgMC0xNi43NzcgNy4xNy0xNi43NzcgMTYuMDE0LjAwNyAyLjc2Mi42NjMgNS40NzQgMi4wOTMgNy44NzUuNDMuNzAzLjgzIDEuNDA4IDEuMTkgMi4xMDcuMzMzLjUwMi42NSAxLjAwNS45NSAxLjUwOC4zNDMuNDc3LjY3My45NTcuOTg4IDEuNDQgMS4zMSAxLjc2OSAyLjUgMy41MDIgMy42MzcgNS4xNjguNzkzIDEuMjc1IDEuNjgzIDIuNjQgMi40NjYgMy45OSAyLjM2MyA0LjA5NCA0LjAwNyA4LjA5MiA0LjYgMTMuOTE0di4wMTJjLjE4Mi40MTIuNTE2LjY2Ni44NzkuNjY3LjQwMy0uMDAxLjc2OC0uMzE0LjkzLS43OTkuNjAzLTUuNzU2IDIuMjM4LTkuNzI5IDQuNTg1LTEzLjc5NC43ODItMS4zNSAxLjY3My0yLjcxNSAyLjQ2NS0zLjk5IDEuMTM3LTEuNjY2IDIuMzI4LTMuNCAzLjYzOC01LjE2OS4zMTUtLjQ4Mi42NDUtLjk2Mi45ODgtMS40MzkuMy0uNTAzLjYxNy0xLjAwNi45NS0xLjUwOC4zNTktLjcuNzYtMS40MDQgMS4xOS0yLjEwNyAxLjQyNi0yLjQwMiAyLTUuMTE0IDIuMDA0LTcuODc1IDAtOC44NDQtNy41MTEtMTYuMDE0LTE2Ljc3Ni0xNi4wMTR6IiBmaWxsPSIjZGQ0YjNlIiBwYWludC1vcmRlcj0ibWFya2VycyBzdHJva2UgZmlsbCIvPjxlbGxpcHNlIHJ5PSI1LjU2NCIgcng9IjUuODI4IiBjeT0iMjM5LjAwMiIgY3g9IjIyNi43NDIiIGZpbGw9IiM4MDJkMjciIHBhaW50LW9yZGVyPSJtYXJrZXJzIHN0cm9rZSBmaWxsIi8+PHBhdGggZD0iTTE5MC4zMDEgMjM3LjI4M2MtNC42NyAwLTguNDU3IDMuODUzLTguNDU3IDguNjA2czMuNzg2IDguNjA3IDguNDU3IDguNjA3YzMuMDQzIDAgNC44MDYtLjk1OCA2LjMzNy0yLjUxNiAxLjUzLTEuNTU3IDIuMDg3LTMuOTEzIDIuMDg3LTYuMjkgMC0uMzYyLS4wMjMtLjcyMi0uMDY0LTEuMDc5aC04LjI1N3YzLjA0M2g0Ljg1Yy0uMTk3Ljc1OS0uNTMxIDEuNDUtMS4wNTggMS45ODYtLjk0Mi45NTgtMi4wMjggMS41NDgtMy45MDEgMS41NDgtMi44NzYgMC01LjIwOC0yLjM3Mi01LjIwOC01LjI5OSAwLTIuOTI2IDIuMzMyLTUuMjk5IDUuMjA4LTUuMjk5IDEuMzk5IDAgMi42MTguNDA3IDMuNTg0IDEuMjkzbDIuMzgxLTIuMzhjMC0uMDAyLS4wMDMtLjAwNC0uMDA0LS4wMDUtMS41ODgtMS41MjQtMy42Mi0yLjIxNS01Ljk1NS0yLjIxNXptNC40MyA1LjY2bC4wMDMuMDA2di0uMDAzeiIgZmlsbD0iI2ZmZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMjE1LjE4NCAyNTEuOTI5bC03Ljk4IDcuOTc5IDI4LjQ3NyAyOC40NzVjLjI4Ny0uNjQ5LjQ0OS0xLjM2Ni40NDktMi4xMjN2LTMxLjE2NWMtLjQ2OS42NzUtLjkzNCAxLjM0OS0xLjM4MiAyLjAwNS0uNzkyIDEuMjc1LTEuNjgyIDIuNjQtMi40NjUgMy45OS0yLjM0NyA0LjA2NS0zLjk4MiA4LjAzOC00LjU4NSAxMy43OTQtLjE2Mi40ODUtLjUyNy43OTgtLjkzLjc5OS0uMzYzLS4wMDEtLjY5Ny0uMjU1LS44NzktLjY2N3YtLjAxMmMtLjU5My01LjgyMi0yLjIzNy05LjgyLTQuNi0xMy45MTQtLjc4My0xLjM1LTEuNjczLTIuNzE1LTIuNDY2LTMuOTktMS4xMzctMS42NjYtMi4zMjctMy40LTMuNjM3LTUuMTY5bC0uMDAyLS4wMDN6IiBmaWxsPSIjYzNjM2MzIi8+PHBhdGggZD0iTTIxMi45ODMgMjQ4LjQ5NWwtMzYuOTUyIDM2Ljk1M3YuODEyYTUuMjI3IDUuMjI3IDAgMCAwIDUuMjM4IDUuMjM4aDEuMDE1bDM1LjY2Ni0zNS42NjZhMTM2LjI3NSAxMzYuMjc1IDAgMCAwLTIuNzY0LTMuOSAzNy41NzUgMzcuNTc1IDAgMCAwLS45ODktMS40NGMtLjI5OS0uNTAzLS42MTYtMS4wMDYtLjk1LTEuNTA4LS4wODMtLjE2Mi0uMTc2LS4zMjYtLjI2NC0uNDg5eiIgZmlsbD0iI2ZkZGM0ZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48cGF0aCBkPSJNMjExLjk5OCAyNjEuMDgzbC02LjE1MiA2LjE1MSAyNC4yNjQgMjQuMjY0aC43ODFhNS4yMjcgNS4yMjcgMCAwIDAgNS4yMzktNS4yMzh2LTEuMDQ1eiIgZmlsbD0iI2ZmZiIgcGFpbnQtb3JkZXI9Im1hcmtlcnMgc3Ryb2tlIGZpbGwiLz48L2c+PC9zdmc+"); +} + +.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder { + background: #4268b3; +} + +.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__icon { + background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSIxMDI0cHgiIGhlaWdodD0iMTAyNHB4IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPiAgICAgICAgPHRpdGxlPkZpbGwgMTwvdGl0bGU+ICAgIDxkZXNjPkNyZWF0ZWQgd2l0aCBTa2V0Y2guPC9kZXNjPiAgICA8ZGVmcz48L2RlZnM+ICAgIDxnIGlkPSJQYWdlLTEiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPiAgICAgICAgPGcgaWQ9ImZMb2dvX1doaXRlIiBmaWxsPSIjRkZGRkZFIj4gICAgICAgICAgICA8cGF0aCBkPSJNOTY3LjQ4NCwwIEw1Ni41MTcsMCBDMjUuMzA0LDAgMCwyNS4zMDQgMCw1Ni41MTcgTDAsOTY3LjQ4MyBDMCw5OTguNjk0IDI1LjI5NywxMDI0IDU2LjUyMiwxMDI0IEw1NDcsMTAyNCBMNTQ3LDYyOCBMNDE0LDYyOCBMNDE0LDQ3MyBMNTQ3LDQ3MyBMNTQ3LDM1OS4wMjkgQzU0NywyMjYuNzY3IDYyNy43NzMsMTU0Ljc0NyA3NDUuNzU2LDE1NC43NDcgQzgwMi4yNjksMTU0Ljc0NyA4NTAuODQyLDE1OC45NTUgODY1LDE2MC44MzYgTDg2NSwyOTkgTDc4My4zODQsMjk5LjAzNyBDNzE5LjM5MSwyOTkuMDM3IDcwNywzMjkuNTI5IDcwNywzNzQuMjczIEw3MDcsNDczIEw4NjAuNDg3LDQ3MyBMODQwLjUwMSw2MjggTDcwNyw2MjggTDcwNywxMDI0IEw5NjcuNDg0LDEwMjQgQzk5OC42OTcsMTAyNCAxMDI0LDk5OC42OTcgMTAyNCw5NjcuNDg0IEwxMDI0LDU2LjUxNSBDMTAyNCwyNS4zMDMgOTk4LjY5NywwIDk2Ny40ODQsMCIgaWQ9IkZpbGwtMSI+PC9wYXRoPiAgICAgICAgPC9nPiAgICA8L2c+PC9zdmc+"); +} + +.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text { + color: #cdf; +} + +.ck-media__wrapper[data-oembed-url*="facebook.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover { + color: #fff; +} + +.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder { + background: linear-gradient(-135deg, #1400c7, #b800b1, #f50000); +} + +.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__icon { + background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSI1MDRweCIgaGVpZ2h0PSI1MDRweCIgdmlld0JveD0iMCAwIDUwNCA1MDQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+ICAgICAgICA8dGl0bGU+Z2x5cGgtbG9nb19NYXkyMDE2PC90aXRsZT4gICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+ICAgIDxkZWZzPiAgICAgICAgPHBvbHlnb24gaWQ9InBhdGgtMSIgcG9pbnRzPSIwIDAuMTU5IDUwMy44NDEgMC4xNTkgNTAzLjg0MSA1MDMuOTQgMCA1MDMuOTQiPjwvcG9seWdvbj4gICAgPC9kZWZzPiAgICA8ZyBpZD0iZ2x5cGgtbG9nb19NYXkyMDE2IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4gICAgICAgIDxnIGlkPSJHcm91cC0zIj4gICAgICAgICAgICA8bWFzayBpZD0ibWFzay0yIiBmaWxsPSJ3aGl0ZSI+ICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+ICAgICAgICAgICAgPC9tYXNrPiAgICAgICAgICAgIDxnIGlkPSJDbGlwLTIiPjwvZz4gICAgICAgICAgICA8cGF0aCBkPSJNMjUxLjkyMSwwLjE1OSBDMTgzLjUwMywwLjE1OSAxNzQuOTI0LDAuNDQ5IDE0OC4wNTQsMS42NzUgQzEyMS4yNCwyLjg5OCAxMDIuOTI3LDcuMTU3IDg2LjkwMywxMy4zODUgQzcwLjMzNywxOS44MjIgNTYuMjg4LDI4LjQzNiA0Mi4yODIsNDIuNDQxIEMyOC4yNzcsNTYuNDQ3IDE5LjY2Myw3MC40OTYgMTMuMjI2LDg3LjA2MiBDNi45OTgsMTAzLjA4NiAyLjczOSwxMjEuMzk5IDEuNTE2LDE0OC4yMTMgQzAuMjksMTc1LjA4MyAwLDE4My42NjIgMCwyNTIuMDggQzAsMzIwLjQ5NyAwLjI5LDMyOS4wNzYgMS41MTYsMzU1Ljk0NiBDMi43MzksMzgyLjc2IDYuOTk4LDQwMS4wNzMgMTMuMjI2LDQxNy4wOTcgQzE5LjY2Myw0MzMuNjYzIDI4LjI3Nyw0NDcuNzEyIDQyLjI4Miw0NjEuNzE4IEM1Ni4yODgsNDc1LjcyMyA3MC4zMzcsNDg0LjMzNyA4Ni45MDMsNDkwLjc3NSBDMTAyLjkyNyw0OTcuMDAyIDEyMS4yNCw1MDEuMjYxIDE0OC4wNTQsNTAyLjQ4NCBDMTc0LjkyNCw1MDMuNzEgMTgzLjUwMyw1MDQgMjUxLjkyMSw1MDQgQzMyMC4zMzgsNTA0IDMyOC45MTcsNTAzLjcxIDM1NS43ODcsNTAyLjQ4NCBDMzgyLjYwMSw1MDEuMjYxIDQwMC45MTQsNDk3LjAwMiA0MTYuOTM4LDQ5MC43NzUgQzQzMy41MDQsNDg0LjMzNyA0NDcuNTUzLDQ3NS43MjMgNDYxLjU1OSw0NjEuNzE4IEM0NzUuNTY0LDQ0Ny43MTIgNDg0LjE3OCw0MzMuNjYzIDQ5MC42MTYsNDE3LjA5NyBDNDk2Ljg0Myw0MDEuMDczIDUwMS4xMDIsMzgyLjc2IDUwMi4zMjUsMzU1Ljk0NiBDNTAzLjU1MSwzMjkuMDc2IDUwMy44NDEsMzIwLjQ5NyA1MDMuODQxLDI1Mi4wOCBDNTAzLjg0MSwxODMuNjYyIDUwMy41NTEsMTc1LjA4MyA1MDIuMzI1LDE0OC4yMTMgQzUwMS4xMDIsMTIxLjM5OSA0OTYuODQzLDEwMy4wODYgNDkwLjYxNiw4Ny4wNjIgQzQ4NC4xNzgsNzAuNDk2IDQ3NS41NjQsNTYuNDQ3IDQ2MS41NTksNDIuNDQxIEM0NDcuNTUzLDI4LjQzNiA0MzMuNTA0LDE5LjgyMiA0MTYuOTM4LDEzLjM4NSBDNDAwLjkxNCw3LjE1NyAzODIuNjAxLDIuODk4IDM1NS43ODcsMS42NzUgQzMyOC45MTcsMC40NDkgMzIwLjMzOCwwLjE1OSAyNTEuOTIxLDAuMTU5IFogTTI1MS45MjEsNDUuNTUgQzMxOS4xODYsNDUuNTUgMzI3LjE1NCw0NS44MDcgMzUzLjcxOCw0Ny4wMTkgQzM3OC4yOCw0OC4xMzkgMzkxLjYxOSw1Mi4yNDMgNDAwLjQ5Niw1NS42OTMgQzQxMi4yNTUsNjAuMjYzIDQyMC42NDcsNjUuNzIyIDQyOS40NjIsNzQuNTM4IEM0MzguMjc4LDgzLjM1MyA0NDMuNzM3LDkxLjc0NSA0NDguMzA3LDEwMy41MDQgQzQ1MS43NTcsMTEyLjM4MSA0NTUuODYxLDEyNS43MiA0NTYuOTgxLDE1MC4yODIgQzQ1OC4xOTMsMTc2Ljg0NiA0NTguNDUsMTg0LjgxNCA0NTguNDUsMjUyLjA4IEM0NTguNDUsMzE5LjM0NSA0NTguMTkzLDMyNy4zMTMgNDU2Ljk4MSwzNTMuODc3IEM0NTUuODYxLDM3OC40MzkgNDUxLjc1NywzOTEuNzc4IDQ0OC4zMDcsNDAwLjY1NSBDNDQzLjczNyw0MTIuNDE0IDQzOC4yNzgsNDIwLjgwNiA0MjkuNDYyLDQyOS42MjEgQzQyMC42NDcsNDM4LjQzNyA0MTIuMjU1LDQ0My44OTYgNDAwLjQ5Niw0NDguNDY2IEMzOTEuNjE5LDQ1MS45MTYgMzc4LjI4LDQ1Ni4wMiAzNTMuNzE4LDQ1Ny4xNCBDMzI3LjE1OCw0NTguMzUyIDMxOS4xOTEsNDU4LjYwOSAyNTEuOTIxLDQ1OC42MDkgQzE4NC42NSw0NTguNjA5IDE3Ni42ODQsNDU4LjM1MiAxNTAuMTIzLDQ1Ny4xNCBDMTI1LjU2MSw0NTYuMDIgMTEyLjIyMiw0NTEuOTE2IDEwMy4zNDUsNDQ4LjQ2NiBDOTEuNTg2LDQ0My44OTYgODMuMTk0LDQzOC40MzcgNzQuMzc5LDQyOS42MjEgQzY1LjU2NCw0MjAuODA2IDYwLjEwNCw0MTIuNDE0IDU1LjUzNCw0MDAuNjU1IEM1Mi4wODQsMzkxLjc3OCA0Ny45OCwzNzguNDM5IDQ2Ljg2LDM1My44NzcgQzQ1LjY0OCwzMjcuMzEzIDQ1LjM5MSwzMTkuMzQ1IDQ1LjM5MSwyNTIuMDggQzQ1LjM5MSwxODQuODE0IDQ1LjY0OCwxNzYuODQ2IDQ2Ljg2LDE1MC4yODIgQzQ3Ljk4LDEyNS43MiA1Mi4wODQsMTEyLjM4MSA1NS41MzQsMTAzLjUwNCBDNjAuMTA0LDkxLjc0NSA2NS41NjMsODMuMzUzIDc0LjM3OSw3NC41MzggQzgzLjE5NCw2NS43MjIgOTEuNTg2LDYwLjI2MyAxMDMuMzQ1LDU1LjY5MyBDMTEyLjIyMiw1Mi4yNDMgMTI1LjU2MSw0OC4xMzkgMTUwLjEyMyw0Ny4wMTkgQzE3Ni42ODcsNDUuODA3IDE4NC42NTUsNDUuNTUgMjUxLjkyMSw0NS41NSBaIiBpZD0iRmlsbC0xIiBmaWxsPSIjRkZGRkZGIiBtYXNrPSJ1cmwoI21hc2stMikiPjwvcGF0aD4gICAgICAgIDwvZz4gICAgICAgIDxwYXRoIGQ9Ik0yNTEuOTIxLDMzNi4wNTMgQzIwNS41NDMsMzM2LjA1MyAxNjcuOTQ3LDI5OC40NTcgMTY3Ljk0NywyNTIuMDggQzE2Ny45NDcsMjA1LjcwMiAyMDUuNTQzLDE2OC4xMDYgMjUxLjkyMSwxNjguMTA2IEMyOTguMjk4LDE2OC4xMDYgMzM1Ljg5NCwyMDUuNzAyIDMzNS44OTQsMjUyLjA4IEMzMzUuODk0LDI5OC40NTcgMjk4LjI5OCwzMzYuMDUzIDI1MS45MjEsMzM2LjA1MyBaIE0yNTEuOTIxLDEyMi43MTUgQzE4MC40NzQsMTIyLjcxNSAxMjIuNTU2LDE4MC42MzMgMTIyLjU1NiwyNTIuMDggQzEyMi41NTYsMzIzLjUyNiAxODAuNDc0LDM4MS40NDQgMjUxLjkyMSwzODEuNDQ0IEMzMjMuMzY3LDM4MS40NDQgMzgxLjI4NSwzMjMuNTI2IDM4MS4yODUsMjUyLjA4IEMzODEuMjg1LDE4MC42MzMgMzIzLjM2NywxMjIuNzE1IDI1MS45MjEsMTIyLjcxNSBaIiBpZD0iRmlsbC00IiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+ICAgICAgICA8cGF0aCBkPSJNNDE2LjYyNywxMTcuNjA0IEM0MTYuNjI3LDEzNC4zIDQwMy4wOTIsMTQ3LjgzNCAzODYuMzk2LDE0Ny44MzQgQzM2OS43MDEsMTQ3LjgzNCAzNTYuMTY2LDEzNC4zIDM1Ni4xNjYsMTE3LjYwNCBDMzU2LjE2NiwxMDAuOTA4IDM2OS43MDEsODcuMzczIDM4Ni4zOTYsODcuMzczIEM0MDMuMDkyLDg3LjM3MyA0MTYuNjI3LDEwMC45MDggNDE2LjYyNywxMTcuNjA0IiBpZD0iRmlsbC01IiBmaWxsPSIjRkZGRkZGIj48L3BhdGg+ICAgIDwvZz48L3N2Zz4="); +} + +.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text { + color: #ffe0fe; +} + +.ck-media__wrapper[data-oembed-url*="instagram.com"] .ck-media__placeholder .ck-media__placeholder__url__text:hover { + color: #fff; +} + +.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder { + background: linear-gradient(to right, #71c6f4, #0d70a5); +} + +.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__icon { + background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IldoaXRlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQwMCA0MDA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5zdDB7ZmlsbDojRkZGRkZGO308L3N0eWxlPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00MDAsMjAwYzAsMTEwLjUtODkuNSwyMDAtMjAwLDIwMFMwLDMxMC41LDAsMjAwUzg5LjUsMCwyMDAsMFM0MDAsODkuNSw0MDAsMjAweiBNMTYzLjQsMzA1LjVjODguNywwLDEzNy4yLTczLjUsMTM3LjItMTM3LjJjMC0yLjEsMC00LjItMC4xLTYuMmM5LjQtNi44LDE3LjYtMTUuMywyNC4xLTI1Yy04LjYsMy44LTE3LjksNi40LTI3LjcsNy42YzEwLTYsMTcuNi0xNS40LDIxLjItMjYuN2MtOS4zLDUuNS0xOS42LDkuNS0zMC42LDExLjdjLTguOC05LjQtMjEuMy0xNS4yLTM1LjItMTUuMmMtMjYuNiwwLTQ4LjIsMjEuNi00OC4yLDQ4LjJjMCwzLjgsMC40LDcuNSwxLjMsMTFjLTQwLjEtMi03NS42LTIxLjItOTkuNC01MC40Yy00LjEsNy4xLTYuNSwxNS40LTYuNSwyNC4yYzAsMTYuNyw4LjUsMzEuNSwyMS41LDQwLjFjLTcuOS0wLjItMTUuMy0yLjQtMjEuOC02YzAsMC4yLDAsMC40LDAsMC42YzAsMjMuNCwxNi42LDQyLjgsMzguNyw0Ny4zYy00LDEuMS04LjMsMS43LTEyLjcsMS43Yy0zLjEsMC02LjEtMC4zLTkuMS0wLjljNi4xLDE5LjIsMjMuOSwzMy4xLDQ1LDMzLjVjLTE2LjUsMTIuOS0zNy4zLDIwLjYtNTkuOSwyMC42Yy0zLjksMC03LjctMC4yLTExLjUtMC43QzExMC44LDI5Ny41LDEzNi4yLDMwNS41LDE2My40LDMwNS41Ii8+PC9zdmc+"); +} + +.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text { + color: #b8e6ff; +} + +.ck-media__wrapper[data-oembed-url*="twitter.com"] .ck.ck-media__placeholder .ck-media__placeholder__url__text:hover { + color: #fff; +} + +:is(.ck-media__wrapper[data-oembed-url*="twitter.com"], .ck-media__wrapper[data-oembed-url*="google.com/maps"], .ck-media__wrapper[data-oembed-url*="goo.gl/maps"], .ck-media__wrapper[data-oembed-url*="maps.google.com"], .ck-media__wrapper[data-oembed-url*="maps.app.goo.gl"], .ck-media__wrapper[data-oembed-url*="facebook.com"], .ck-media__wrapper[data-oembed-url*="instagram.com"]) .ck-media__placeholder__icon * { + display: none; +} + +.ck-editor__editable:not(.ck-read-only) .ck-media__wrapper > :not(.ck-media__placeholder), .ck-editor__editable:not(.ck-read-only) .ck-widget:not(.ck-widget_selected) .ck-media__placeholder { + pointer-events: none; +} + +.ck.ck-media-form { + flex-flow: row; + align-items: flex-start; + width: 400px; + display: flex; +} + +.ck.ck-media-form .ck-labeled-field-view { + width: 100%; + display: inline-block; +} + +.ck.ck-media-form .ck-label { + display: none; +} + +.ck.ck-media-form .ck-input { + width: 100%; +} + +@media screen and (width <= 600px) { + .ck.ck-media-form { + flex-wrap: wrap; + } + + .ck.ck-media-form .ck-labeled-field-view { + flex-basis: 100%; + } + + .ck.ck-media-form .ck-button { + flex-basis: 50%; + } +} + +/* @ckeditor/ckeditor5-mention */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +:root { + --ck-content-color-mention-background: #9900301a; + --ck-content-color-mention-text: #990030; +} + +.ck-content .mention { + background: var(--ck-content-color-mention-background); + color: var(--ck-content-color-mention-text); +} + +:root { + --ck-mention-list-max-height: 300px; +} + +.ck.ck-mentions { + max-height: var(--ck-mention-list-max-height); + overscroll-behavior: contain; + overflow: hidden auto; +} + +.ck.ck-mentions > .ck-list__item { + flex-shrink: 0; + overflow: hidden; +} + +div.ck.ck-balloon-panel.ck-mention-balloon { + z-index: calc(var(--ck-z-dialog) + 1); +} + +/* @ckeditor/ckeditor5-page-break */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +.ck-content .page-break { + clear: both; + justify-content: center; + align-items: center; + padding: 5px 0; + display: flex; + position: relative; +} + +.ck-content .page-break:after { + content: ""; + border-bottom: 2px dashed #c4c4c4; + width: 100%; + position: absolute; +} + +.ck-content .page-break__label { + z-index: 1; + text-transform: uppercase; + color: #333; + -webkit-user-select: none; + user-select: none; + background: #fff; + border: 1px solid #c4c4c4; + border-radius: 2px; + padding: .3em .6em; + font-size: .75em; + font-weight: bold; + display: block; + position: relative; + box-shadow: 2px 2px 1px #00000026; +} + +@media print { + .ck-content .page-break { + padding: 0; + } + + .ck-content .page-break:after { + display: none; + } + + .ck-content :has( + .page-break) { + margin-bottom: 0; + } +} + +/* @ckeditor/ckeditor5-paste-from-office */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-remove-format */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ + +/* @ckeditor/ckeditor5-table */ +/** + * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options + */ +.ck-content .table th { + text-align: start; +} + +.ck-content[dir="rtl"] .table th { + text-align: right; +} + +.ck-content[dir="ltr"] .table th { + text-align: left; +} + +.ck-content figure.table:not(.layout-table) { + display: table; +} + +.ck-content figure.table:not(.layout-table) > table { + width: 100%; + height: 100%; +} + +.ck-content .table:not(.layout-table) { + margin: .9em auto; +} + +.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table { + border-collapse: collapse; + border-spacing: 0; + border: 1px double #b3b3b3; +} + +:is(:is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > thead, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tfoot, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tbody) > tr > th { + background: #0000000d; + font-weight: bold; +} + +:is(:is(:is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > thead, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tfoot, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tbody) > tr > td, :is(:is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > thead, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tfoot, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tbody) > tr > th) > p:first-of-type { + margin-top: 0; +} + +:is(:is(:is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > thead, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tfoot, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tbody) > tr > td, :is(:is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > thead, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tfoot, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tbody) > tr > th) > p:last-of-type { + margin-bottom: 0; +} + +:is(:is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > thead, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tfoot, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tbody) > tr > td, :is(:is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > thead, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tfoot, :is(.ck-content table.table:not(.layout-table), .ck-content figure.table:not(.layout-table) > table) > tbody) > tr > th { + border: 1px solid #bfbfbf; + min-width: 2em; + padding: .4em; +} + +@media print { + .ck-content figure.table:not(.layout-table) { + width: fit-content; + height: fit-content; + } + + .ck-content figure.table:not(.layout-table) > table { + height: initial; + } +} + +.ck-editor__editable .ck-table-bogus-paragraph { + width: 100%; + display: inline-block; +} + +:root { + --ck-color-table-focused-cell-background: #9ec9fa4d; + --ck-table-content-default-border-color: #d4d4d4; + --ck-table-border-none-helper-line-color: #d4d4d4; + --ck-table-border-none-helper-line-style: dashed; + --ck-table-border-none-helper-line-width: 1px; +} + +.ck-widget.table table[style*="border:none"], .ck-widget.table table[style*="border-style:none"], .ck-widget.table table[style*="border:0"], .ck-widget.table table[style*="border-width:0"] { + outline: var(--ck-table-content-default-border-color) 1px dashed; +} + +:is(.ck-widget.table td, .ck-widget.table th).ck-editor__nested-editable { + outline: unset; +} + +:is(.ck-widget.table td, .ck-widget.table th).ck-editor__nested-editable:not(.ck-editor__editable_selected).ck-editor__nested-editable_focused, :is(.ck-widget.table td, .ck-widget.table th).ck-editor__nested-editable:not(.ck-editor__editable_selected):focus { + background: var(--ck-color-table-focused-cell-background); + outline: 1px solid var(--ck-color-focus-border); + outline-offset: -1px; +} + +:where(.ck.ck-editor__editable.ck-table-show-hidden-borders .ck-widget.table) { + --ck-table-border-none-helper-line: var(--ck-table-border-none-helper-line-width) + var(--ck-table-border-none-helper-line-style) + var(--ck-table-border-none-helper-line-color); +} + +:where(.ck.ck-editor__editable.ck-table-show-hidden-borders .ck-widget.table) :where(td, th):where([style*="border:none"], [style*="border:0"], [style*="border-style:none"], [style*="border-width:0"]) { + border: var(--ck-table-border-none-helper-line) !important; +} + +:where(.ck.ck-editor__editable.ck-table-show-hidden-borders .ck-widget.table) :where(table, td, th):where([style*="border-top-style:none"], [style*="border-top-width:0"]) { + border-top: var(--ck-table-border-none-helper-line) !important; +} + +:where(.ck.ck-editor__editable.ck-table-show-hidden-borders .ck-widget.table) :where(table, td, th):where([style*="border-right-style:none"], [style*="border-right-width:0"]) { + border-right: var(--ck-table-border-none-helper-line) !important; +} + +:where(.ck.ck-editor__editable.ck-table-show-hidden-borders .ck-widget.table) :where(table, td, th):where([style*="border-bottom-style:none"], [style*="border-bottom-width:0"]) { + border-bottom: var(--ck-table-border-none-helper-line) !important; +} + +:where(.ck.ck-editor__editable.ck-table-show-hidden-borders .ck-widget.table) :where(table, td, th):where([style*="border-left-style:none"], [style*="border-left-width:0"]) { + border-left: var(--ck-table-border-none-helper-line) !important; +} + +.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; + width: 25%; + padding: 0; +} + +.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar { + margin-top: var(--ck-spacing-standard); + background: none; +} + +.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar.ck-table-cell-properties-form__horizontal-alignment-toolbar { + --ck-table-form-dimensions-input-width: calc(var(--ck-table-form-default-input-width) * 2 + var(--ck-spacing-large)); + width: var(--ck-table-form-dimensions-input-width); + max-width: var(--ck-table-form-dimensions-input-width); + min-width: var(--ck-table-form-dimensions-input-width); + padding: 0; +} + +.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar.ck-table-cell-properties-form__vertical-alignment-toolbar { + flex-grow: 1; +} + +.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:first-of-type { + flex-grow: .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: .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 .ck-form__row.ck-table-cell-properties-form__alignment-row { + flex-wrap: wrap; +} + +.ck.ck-table-cell-properties-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-cell-properties-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style, .ck.ck-table-cell-properties-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-cell-properties-form .ck-form__row.ck-table-form__dimensions-row { + --ck-table-form-dimensions-input-width: calc(var(--ck-table-form-default-input-width) * 2 + var(--ck-spacing-large)); + width: var(--ck-table-form-dimensions-input-width); + max-width: var(--ck-table-form-dimensions-input-width); + min-width: var(--ck-table-form-dimensions-input-width); + padding: 0; +} + +.ck.ck-table-cell-properties-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width, .ck.ck-table-cell-properties-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height { + width: var(--ck-table-form-default-input-width); + min-width: var(--ck-table-form-default-input-width); + max-width: var(--ck-table-form-default-input-width); + margin: 0; +} + +.ck.ck-table-cell-properties-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator { + width: 0; + height: var(--ck-ui-component-min-height); + line-height: var(--ck-ui-component-min-height); + margin: 0 var(--ck-spacing-small); + align-self: flex-end; + display: inline-block; + position: relative; + left: -.5ch; + overflow: visible; +} + +.ck.ck-table-cell-properties-form .ck-form__row.ck-form__row.ck-table-form__action-row > .ck.ck-button { + flex-grow: initial; +} + +.ck.ck-table-cell-properties-form .ck-form__row.ck-form__row.ck-table-form__action-row > .ck.ck-button .ck-button__label { + color: currentColor; +} + +.ck.ck-table-cell-properties-form .ck-form__row.ck-table-form__cell-type-row { + --ck-table-form-dimensions-input-width: calc(var(--ck-table-form-default-input-width) * 2 + var(--ck-spacing-large)); + width: var(--ck-table-form-dimensions-input-width); + max-width: var(--ck-table-form-dimensions-input-width); + min-width: var(--ck-table-form-dimensions-input-width); + padding: 0; +} + +:root { + --ck-table-layout-widget-type-around-button-size: 16px; + --ck-table-layout-widget-type-around-icon-width: 10px; + --ck-table-layout-widget-type-around-icon-height: 8px; + --ck-table-layout-widget-handler-icon-size: 10px; + --ck-table-layout-default-border-color: #d4d4d4; +} + +.ck-content table.table.layout-table, .ck-content figure.table.layout-table { + margin-top: 0; + margin-bottom: 0; +} + +.ck-content table.table.layout-table, .ck-content figure.table.layout-table > table { + border-spacing: 0; +} + +.ck-editor__editable .table.layout-table > table { + border-collapse: revert; + width: 100%; + height: 100%; +} + +.ck-editor__editable .table.layout-table > table:not([style*="border:"], [style*="border-top"], [style*="border-bottom"], [style*="border-left"], [style*="border-right"], [style*="border-width"], [style*="border-style"], [style*="border-color"]) { + border-width: 0; + border-color: #0000; + outline: none; +} + +.ck-editor__editable .table.layout-table > table > tbody > tr > td { + box-shadow: revert; + padding: revert; + text-indent: 1px; + border-color: var(--ck-table-layout-default-border-color); + border-style: dashed; + min-width: 2em; +} + +.ck-editor__editable .table.layout-table > table > tbody > tr > td[style^="width:"], .ck-editor__editable .table.layout-table > table > tbody > tr > td[style*=" width:"], .ck-editor__editable .table.layout-table > table > tbody > tr > td[style*=";width:"] { + min-width: auto; +} + +.ck-editor__editable .table.layout-table > table > tbody > tr > td:focus { + background-color: #0000; +} + +.ck-editor__editable .table.layout-table > table > tbody > tr > td:not([style*="border:"], [style*="border-top"], [style*="border-bottom"], [style*="border-left"], [style*="border-right"], [style*="border-width"], [style*="border-style"], [style*="border-color"]) { + outline: var(--ck-table-layout-default-border-color) 1px dashed; + outline-offset: -1px; + border-width: 0; + border-color: #0000; +} + +.ck-editor__editable .table.layout-table > table > tbody > tr > td:not([style*="border:"], [style*="border-top"], [style*="border-bottom"], [style*="border-left"], [style*="border-right"], [style*="border-width"], [style*="border-style"], [style*="border-color"]):focus { + outline: var(--ck-color-focus-border) 1px solid; +} + +.ck-editor__editable .table.layout-table > table > tbody > tr > td > .ck-table-bogus-paragraph { + text-indent: 0; + width: calc(100% - 1px); +} + +.ck-editor__editable .table.layout-table.ck-widget > .ck-widget__type-around { + --ck-widget-type-around-button-size: var(--ck-table-layout-widget-type-around-button-size); +} + +.ck-editor__editable .table.layout-table.ck-widget > .ck-widget__type-around > .ck-widget__type-around__button.ck-widget__type-around__button_before, .ck-editor__editable .table.layout-table.ck-widget > .ck-widget__type-around > .ck-widget__type-around__button.ck-widget__type-around__button_after { + z-index: 2; + transform: translateY(0); +} + +.ck-editor__editable .table.layout-table.ck-widget > .ck-widget__type-around > .ck-widget__type-around__button.ck-widget__type-around__button_before { + margin-left: var(--ck-table-layout-widget-type-around-button-size); + border-radius: 0 0 100px 100px; + left: min(10%, 30px); +} + +.ck-editor__editable .table.layout-table.ck-widget > .ck-widget__type-around > .ck-widget__type-around__button.ck-widget__type-around__button_before:after { + border-radius: 0 0 100px 100px; +} + +.ck-editor__editable .table.layout-table.ck-widget > .ck-widget__type-around > .ck-widget__type-around__button.ck-widget__type-around__button_after { + border-radius: 100px 100px 0 0; +} + +.ck-editor__editable .table.layout-table.ck-widget > .ck-widget__type-around > .ck-widget__type-around__button.ck-widget__type-around__button_after:after { + border-radius: 100px 100px 0 0; +} + +.ck-editor__editable .table.layout-table.ck-widget > .ck-widget__type-around > .ck-widget__type-around__button svg { + width: var(--ck-table-layout-widget-type-around-icon-width); + height: var(--ck-table-layout-widget-type-around-icon-height); +} + +.ck-editor__editable .table.layout-table.ck-widget.ck-widget_with-selection-handle > .ck-widget__selection-handle { + --ck-widget-handler-icon-size: var(--ck-table-layout-widget-handler-icon-size); + transform: translateY(calc(0px - var(--ck-widget-outline-thickness))); + z-index: 3; +} + +.ck-editor__editable .table.layout-table.ck-widget.ck-widget_type-around_show-fake-caret_before > .ck-widget__type-around > .ck-widget__type-around__fake-caret { + top: 0; +} + +.ck-editor__editable .table.layout-table.ck-widget.ck-widget_type-around_show-fake-caret_after > .ck-widget__type-around > .ck-widget__type-around__fake-caret { + bottom: 0; +} + +.ck-editor__editable .table.layout-table.ck-widget:hover { + z-index: var(--ck-z-default); +} + +.ck-editor__editable .table.layout-table.ck-widget:hover > .ck-widget__selection-handle { + opacity: .75; + visibility: visible; +} + +.ck-editor__editable .table.layout-table.ck-widget:hover > .ck-widget__selection-handle:hover { + opacity: 1; +} + +.ck-editor__editable .table.layout-table.ck-widget:has(.ck-widget.table:hover) > .ck-widget__selection-handle { + opacity: 0; + visibility: hidden; +} + +.ck-editor__editable .table.layout-table.ck-widget.ck-widget_selected { + z-index: var(--ck-z-default); +} + +.ck-editor__editable .table.layout-table { + margin: 0; + display: table; +} + +.ck-editor__editable.ck-editor__editable_inline > .ck-widget.ck-widget_with-selection-handle.layout-table:first-child { + margin-top: var(--ck-spacing-large); +} + +.ck-editor__editable.ck-editor__editable_inline > .ck-widget.ck-widget_with-selection-handle.layout-table:last-child, .ck-editor__editable.ck-editor__editable_inline > .ck-widget.ck-widget_with-selection-handle.layout-table:nth-last-child(2):has( + .ck-fake-selection-container) { + margin-bottom: var(--ck-spacing-large); +} + +.ck.ck-form__row > :not(.ck-label) + * { + margin-inline-start: 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); + justify-content: flex-end; +} + +.ck.ck-form__row.ck-table-form__action-row .ck-button-save, .ck.ck-form__row.ck-table-form__action-row .ck-button-cancel { + justify-content: center; +} + +:root { + --ck-table-properties-error-arrow-size: 6px; + --ck-table-properties-min-error-width: 150px; +} + +.ck.ck-table-form { + --ck-table-form-default-input-width: 80px; +} + +.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: var(--ck-table-form-default-input-width); + min-width: var(--ck-table-form-default-input-width); + max-width: var(--ck-table-form-default-input-width); +} + +.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row { + --ck-table-form-dimensions-input-width: calc(var(--ck-table-form-default-input-width) * 2 + var(--ck-spacing-large)); + width: var(--ck-table-form-dimensions-input-width); + max-width: var(--ck-table-form-dimensions-input-width); + min-width: var(--ck-table-form-dimensions-input-width); + padding: 0; +} + +.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width, .ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height { + width: var(--ck-table-form-default-input-width); + min-width: var(--ck-table-form-default-input-width); + max-width: var(--ck-table-form-default-input-width); + margin: 0; +} + +.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator { + width: 0; + height: var(--ck-ui-component-min-height); + line-height: var(--ck-ui-component-min-height); + margin: 0 var(--ck-spacing-small); + align-self: flex-end; + display: inline-block; + position: relative; + left: -.5ch; + overflow: visible; +} + +.ck.ck-table-form .ck-form__row.ck-table-form__border-row, .ck.ck-table-form .ck-form__row.ck-table-form__background-row, .ck.ck-table-form .ck-form__row.ck-table-form__cell-type-row { + flex-wrap: wrap; +} + +.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row, .ck.ck-table-form .ck-form__row.ck-table-form__cell-type-row { + flex-wrap: wrap; + align-items: center; +} + +:is(.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row, .ck.ck-table-form .ck-form__row.ck-table-form__cell-type-row) .ck-labeled-field-view { + flex-direction: column-reverse; + align-items: center; + display: flex; +} + +:is(.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row, .ck.ck-table-form .ck-form__row.ck-table-form__cell-type-row) .ck-labeled-field-view .ck.ck-dropdown { + flex-grow: 0; +} + +.ck.ck-table-form .ck-form__row:not(.ck-table-form__action-row) > :not(.ck-label, .ck-table-form__dimension-operator) { + flex-grow: 1; +} + +.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: var(--ck-rounded-corners-radius); + 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; + left: 50%; + bottom: calc(-1 * var(--ck-table-properties-error-arrow-size)); + animation: .15s both ck-table-form-labeled-view-status-appear; + position: absolute; + transform: translate(-50%, 100%); +} + +.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after { + border-color: transparent transparent var(--ck-color-base-error) transparent; + border-width: 0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size); + content: ""; + top: calc(-1 * var(--ck-table-properties-error-arrow-size)); + border-style: solid; + position: absolute; + left: 50%; + transform: translateX(-50%); +} + +@media (prefers-reduced-motion: reduce) { + .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status { + animation: none; + } +} + +.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status { + z-index: 1; +} + +.ck.ck-table-form .ck.ck-labeled-field-view .ck-input.ck-error:not(:focus) + .ck.ck-labeled-field-view__status { + display: none; +} + +.ck.ck-table-form .ck.ck-labeled-field-view { + position: relative; +} + +@keyframes ck-table-form-labeled-view-status-appear { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +.ck.ck-table-properties-form { + width: 320px; +} + +.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row { + flex-wrap: wrap; + flex-basis: 0; + align-content: baseline; + align-self: flex-end; +} + +.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar { + margin-top: var(--ck-spacing-standard); + background: none; +} + +.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items > * { + flex: 1; +} + +.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items { + flex-wrap: nowrap; +} + +:root { + --ck-content-table-style-spacing: 1.5em; +} + +.ck-content .table.table-style-align-left { + float: left; + margin-right: var(--ck-content-table-style-spacing); +} + +.ck-content .table.table-style-align-right { + float: right; + margin-left: var(--ck-content-table-style-spacing); +} + +.ck-content .table.table-style-align-center { + margin-left: auto; + margin-right: auto; +} + +.ck-content .table.table-style-block-align-left { + margin-left: 0; + margin-right: auto; +} + +.ck-content .table.table-style-block-align-right { + margin-left: auto; + margin-right: 0; +} + +.ck-editor__editable .table.layout-table.table-style-align-center { + margin-left: auto; + margin-right: auto; +} + +.ck-editor__editable .table.layout-table.table-style-align-left { + margin-right: var(--ck-content-table-style-spacing); +} + +.ck-editor__editable .table.layout-table.table-style-align-right { + margin-left: var(--ck-content-table-style-spacing); +} + +.ck-editor__editable .table.layout-table.table-style-block-align-left { + margin-left: 0; + margin-right: auto; +} + +.ck-editor__editable .table.layout-table.table-style-block-align-right { + margin-left: auto; + margin-right: 0; +} + +:root { + --ck-content-color-table-caption-background: #f7f7f7; + --ck-content-color-table-caption-text: #333; + --ck-color-table-caption-highlighted-background: #fd0; +} + +.ck-content .table > figcaption, .ck-content figure.table > table > caption { + caption-side: top; + word-break: normal; + overflow-wrap: anywhere; + text-align: center; + color: var(--ck-content-color-table-caption-text); + background-color: var(--ck-content-color-table-caption-background); + outline-offset: -1px; + padding: .6em; + font-size: .75em; + display: table-caption; +} + +@media (forced-colors: active) { + .ck-content .table > figcaption, .ck-content figure.table > table > caption { + background-color: unset; + color: unset; + } +} + +@media (forced-colors: none) { + :is(.ck.ck-editor__editable .table > figcaption, .ck.ck-editor__editable figure.table > table > caption).table__caption_highlighted { + animation: .6s ease-out ck-table-caption-highlight; + } +} + +:is(.ck.ck-editor__editable .table > figcaption, .ck.ck-editor__editable figure.table > table > caption).ck-placeholder:before { + padding-left: inherit; + padding-right: inherit; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +@keyframes ck-table-caption-highlight { + 0% { + background-color: var(--ck-color-table-caption-highlighted-background); + } + + 100% { + background-color: var(--ck-content-color-table-caption-background); + } +} + +:root { + --ck-table-selected-cell-background: #9ecffa4d; +} + +.ck.ck-editor__editable .table table td.ck-editor__editable_selected, .ck.ck-editor__editable .table table th.ck-editor__editable_selected { + caret-color: #0000; + box-shadow: unset; + position: relative; +} + +:is(.ck.ck-editor__editable .table table td.ck-editor__editable_selected, .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; + inset: 0; +} + +:is(.ck.ck-editor__editable .table table td.ck-editor__editable_selected, .ck.ck-editor__editable .table table th.ck-editor__editable_selected) ::selection, :is(.ck.ck-editor__editable .table table td.ck-editor__editable_selected, .ck.ck-editor__editable .table table th.ck-editor__editable_selected):focus { + background-color: #0000; +} + +:is(.ck.ck-editor__editable .table table td.ck-editor__editable_selected, .ck.ck-editor__editable .table table th.ck-editor__editable_selected) .ck-widget { + outline: unset; +} + +:is(.ck.ck-editor__editable .table table td.ck-editor__editable_selected, .ck.ck-editor__editable .table table th.ck-editor__editable_selected) .ck-widget > .ck-widget__selection-handle { + display: none; +} + +:root { + --ck-color-table-column-resizer-hover: var(--ck-color-base-active); + --ck-table-column-resizer-width: 7px; + --ck-table-column-resizer-position-offset: calc(var(--ck-table-column-resizer-width) * -.5 - .5px); +} + +.ck-content .table .ck-table-resized { + table-layout: fixed; +} + +.ck-content .table td, .ck-content .table th { + overflow-wrap: break-word; +} + +.ck.ck-editor__editable .table td, .ck.ck-editor__editable .table th { + position: relative; +} + +.ck.ck-editor__editable .table .ck-table-column-resizer { + top: 0; + bottom: 0; + right: var(--ck-table-column-resizer-position-offset); + width: var(--ck-table-column-resizer-width); + cursor: col-resize; + user-select: none; + z-index: var(--ck-z-default); + position: absolute; +} + +.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer, .ck.ck-editor__editable .table[draggable] .ck-table-column-resizer { + display: none; +} + +.ck.ck-editor__editable .table .ck-table-column-resizer:hover, .ck.ck-editor__editable .table .ck-table-column-resizer__active { + background-color: var(--ck-color-table-column-resizer-hover); + opacity: .25; +} + +.ck.ck-editor__editable[dir="rtl"] .table .ck-table-column-resizer { + left: var(--ck-table-column-resizer-position-offset); + right: unset; +} + +[dir="ltr"] :is(.ck.ck-input-color > .ck.ck-input-text) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +[dir="rtl"] :is(.ck.ck-input-color > .ck.ck-input-text) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.ck.ck-input-color > .ck.ck-input-text:focus { + z-index: 0; +} + +.ck.ck-input-color > .ck.ck-dropdown > .ck.ck-button.ck-input-color__button { + padding: 0; + display: flex; +} + +[dir="ltr"] :is(.ck.ck-input-color > .ck.ck-dropdown > .ck.ck-button.ck-input-color__button) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +[dir="ltr"] :is(.ck.ck-input-color > .ck.ck-dropdown > .ck.ck-button.ck-input-color__button):not(:focus) { + border-left: 1px solid #0000; +} + +[dir="rtl"] :is(.ck.ck-input-color > .ck.ck-dropdown > .ck.ck-button.ck-input-color__button) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +[dir="rtl"] :is(.ck.ck-input-color > .ck.ck-dropdown > .ck.ck-button.ck-input-color__button):not(:focus) { + border-right: 1px solid #0000; +} + +.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: var(--ck-rounded-corners-radius); + border: 1px solid var(--ck-color-input-border); + width: 20px; + height: 20px; + position: relative; + overflow: hidden; +} + +.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 { + transform-origin: 50%; + background: red; + border-radius: 2px; + width: 8%; + height: 150%; + display: block; + position: absolute; + top: -30%; + left: 50%; + transform: rotate(45deg); +} + +.ck.ck-input-color .ck.ck-input-color__remove-color { + width: 100%; + padding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard); + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.ck.ck-input-color .ck.ck-input-color__remove-color:not(:focus) { + border-bottom: 1px solid var(--ck-color-input-border); +} + +[dir="ltr"] :is(.ck.ck-input-color .ck.ck-input-color__remove-color) { + border-top-right-radius: 0; +} + +[dir="rtl"] :is(.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"] :is(.ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon) { + margin-right: 0; + margin-left: var(--ck-spacing-standard); +} + +.ck.ck-input-color { + flex-direction: row-reverse; + width: 100%; + display: flex; +} + +.ck.ck-input-color > input.ck.ck-input-text { + flex-grow: 1; + min-width: auto; +} + +.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; +} + +: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; + flex-flow: wrap; + display: flex; +} + +.ck .ck-insert-table-dropdown__label, .ck[dir="rtl"] .ck-insert-table-dropdown__label { + text-align: center; +} + +.ck .ck-insert-table-dropdown-grid-box { + min-width: var(--ck-insert-table-dropdown-box-width); + min-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; + outline: none; + transition: none; +} + +@media (prefers-reduced-motion: reduce) { + .ck .ck-insert-table-dropdown-grid-box { + transition: none; + } +} + +.ck .ck-insert-table-dropdown-grid-box:focus { + box-shadow: none; +} + +.ck .ck-insert-table-dropdown-grid-box.ck-on { + border-color: var(--ck-color-focus-border); + background: var(--ck-color-focus-outer-shadow); +} diff --git a/frontend/src/vendor/ckeditor/ckeditor.js b/frontend/src/vendor/ckeditor/ckeditor.js index 093e190d861..3bb08a31a6e 100644 --- a/frontend/src/vendor/ckeditor/ckeditor.js +++ b/frontend/src/vendor/ckeditor/ckeditor.js @@ -1,7 +1,6 @@ -!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"(may require Fn)":"(may require Fn)","%0 of %1":"%0 of %1",Accept:"Accept",Accessibility:"Accessibility","Accessibility help":"Accessibility help","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",Aquamarine:"Aquamarine",Background:"Background","Below, you can find a list of keyboard shortcuts that can be used in the editor.":"Below, you can find a list of keyboard shortcuts that can be used in the editor.",Black:"Black","Block quote":"Block quote",Blue:"Blue",Bold:"Bold","Bold text":"Bold text",Border:"Border","Break text":"Break text","Bulleted List":"Bulleted List","Bulleted list styles toolbar":"Bulleted list styles toolbar",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Caption for image: %0":"Caption for image: %0","Caption for the image":"Caption for the image","Cell properties":"Cell properties","Center table":"Center table","Centered image":"Centered image","Change image text alternative":"Change image text alternative","Choose heading":"Choose heading",Circle:"Circle",Clear:"Clear","Click to edit block":"Click to edit block",Close:"Close","Close contextual balloons, dropdowns, and dialogs":"Close contextual balloons, dropdowns, and dialogs",Code:"Code",Color:"Color","Color picker":"Color picker",Column:"Column","Content editing keystrokes":"Content editing keystrokes","Copy selected content":"Copy selected content","Create link":"Create link",Custom:"Custom","Custom image size":"Custom image size",Dashed:"Dashed",Decimal:"Decimal","Decimal with leading zero":"Decimal with leading zero","Decrease list item indent":"Decrease list item indent","Delete column":"Delete column","Delete row":"Delete row","Dim grey":"Dim grey",Dimensions:"Dimensions",Disc:"Disc",Dotted:"Dotted",Double:"Double",Downloadable:"Downloadable","Drag to move":"Drag to move","Dropdown menu":"Dropdown menu","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Edit link":"Edit link","Editor block content toolbar":"Editor block content toolbar","Editor contextual toolbar":"Editor contextual toolbar","Editor dialog":"Editor dialog","Editor menu bar":"Editor menu bar","Editor toolbar":"Editor toolbar","Enter image caption":"Enter image caption","Enter table caption":"Enter table caption","Entering a to-do list":"Entering a to-do list","Error during image upload":"Error during image upload","Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.":"Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content.","From computer":"From computer","Full size image":"Full size image",Green:"Green",Grey:"Grey",Groove:"Groove","Header column":"Header column","Header row":"Header row",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",Height:"Height","Help Contents. To close this dialog press ESC.":"Help Contents. To close this dialog press ESC.",HEX:"HEX","Horizontal text alignment toolbar":"Horizontal text alignment toolbar",Image:"Image","Image from computer":"Image from computer","Image resize list":"Image resize list","Image toolbar":"Image toolbar","Image upload complete":"Image upload complete","Image via URL":"Image via URL","image widget":"image widget","In line":"In line","Increase list item indent":"Increase list item indent","Insert a hard break (a new paragraph)":"Insert a hard break (a new paragraph)","Insert a new paragraph directly after a widget":"Insert a new paragraph directly after a widget","Insert a new paragraph directly before a widget":"Insert a new paragraph directly before a widget","Insert a new table row (when in the last cell of a table)":"Insert a new table row (when in the last cell of a table)","Insert a soft break (a <br> element)":"Insert a soft break (a <br> element)","Insert column left":"Insert column left","Insert column right":"Insert column right","Insert image":"Insert image","Insert image via URL":"Insert image via URL","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Insert row above":"Insert row above","Insert row below":"Insert row below","Insert table":"Insert table","Insert via URL":"Insert via URL",Inset:"Inset","Invalid start index value.":"Invalid start index value.",Italic:"Italic","Italic text":"Italic text","Justify cell text":"Justify cell text","Keystrokes that can be used in a list":"Keystrokes that can be used in a list","Keystrokes that can be used in a table cell":"Keystrokes that can be used in a table cell","Keystrokes that can be used when a widget is selected (for example: image, table, etc.)":"Keystrokes that can be used when a widget is selected (for example: image, table, etc.)","Leaving a to-do list":"Leaving a to-do list","Left aligned image":"Left aligned image","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Link:"Link","Link image":"Link image","Link URL":"Link URL","Link URL must not be empty.":"Link URL must not be empty.","List properties":"List properties","Lower-latin":"Lower-latin","Lower–roman":"Lower–roman",MENU_BAR_MENU_EDIT:"Edit",MENU_BAR_MENU_FILE:"File",MENU_BAR_MENU_FONT:"Font",MENU_BAR_MENU_FORMAT:"Format",MENU_BAR_MENU_HELP:"Help",MENU_BAR_MENU_INSERT:"Insert",MENU_BAR_MENU_TEXT:"Text",MENU_BAR_MENU_TOOLS:"Tools",MENU_BAR_MENU_VIEW:"View","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","Move focus between form fields (inputs, buttons, etc.)":"Move focus between form fields (inputs, buttons, etc.)","Move focus from an editable area back to the parent widget":"Move focus from an editable area back to the parent widget","Move focus in and out of an active dialog window":"Move focus in and out of an active dialog window","Move focus to the menu bar, navigate between menu bars":"Move focus to the menu bar, navigate between menu bars","Move focus to the toolbar, navigate between toolbars":"Move focus to the toolbar, navigate between toolbars","Move out of a link":"Move out of a link","Move out of an inline code style":"Move out of an inline code style","Move the caret to allow typing directly after a widget":"Move the caret to allow typing directly after a widget","Move the caret to allow typing directly before a widget":"Move the caret to allow typing directly before a widget","Move the selection to the next cell":"Move the selection to the next cell","Move the selection to the previous cell":"Move the selection to the previous cell","Navigate through the table":"Navigate through the table","Navigate through the toolbar or menu bar":"Navigate through the toolbar or menu bar",Next:"Next","No results found":"No results found","No searchable items":"No searchable items",None:"None","Numbered List":"Numbered List","Numbered list styles toolbar":"Numbered list styles toolbar","Open in a new tab":"Open in a new tab","Open link in new tab":"Open link in new tab","Open the accessibility help dialog":"Open the accessibility help dialog",Orange:"Orange",Original:"Original",Outset:"Outset",Padding:"Padding","Page break":"Page break",Paragraph:"Paragraph","Paste content":"Paste content","Paste content as plain text":"Paste content as plain text",'Please enter a valid color (e.g. "ff0000").':'Please enter a valid color (e.g. "ff0000").',"Press %0 for help.":"Press %0 for help.","Press Enter to type after or press Shift + Enter to type before the widget":"Press Enter to type after or press Shift + Enter to type before the widget",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Replace from computer":"Replace from computer","Replace image":"Replace image","Replace image from computer":"Replace image from computer","Resize image":"Resize image","Resize image (in %0)":"Resize image (in %0)","Resize image to %0":"Resize image to %0","Resize image to the original size":"Resize image to the original size","Restore default":"Restore default","Reversed order":"Reversed order","Revert autoformatting action":"Revert autoformatting action","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"Rich Text Editor. Editing area: %0",Ridge:"Ridge","Right aligned image":"Right aligned image",Row:"Row",Save:"Save","Saving changes":"Saving changes","Scroll to target":"Scroll to target","Select all":"Select all","Select column":"Select column","Select row":"Select row","Show more items":"Show more items","Side image":"Side image",Solid:"Solid","Split cell horizontally":"Split cell horizontally","Split cell vertically":"Split cell vertically",Square:"Square","Start at":"Start at","Start index must be greater than 0.":"Start index must be greater than 0.",Strikethrough:"Strikethrough","Strikethrough text":"Strikethrough text",Style:"Style",Subscript:"Subscript",Superscript:"Superscript",Table:"Table","Table alignment toolbar":"Table alignment toolbar","Table cell text alignment":"Table cell text alignment","Table properties":"Table properties","Table toolbar":"Table toolbar","Text alternative":"Text alternative",'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".',"The value must not be empty.":"The value must not be empty.","The value should be a plain number.":"The value should be a plain number.","These keyboard shortcuts allow for quick access to content editing features.":"These keyboard shortcuts allow for quick access to content editing features.","This link has no URL":"This link has no URL","To-do List":"To-do List","Toggle caption off":"Toggle caption off","Toggle caption on":"Toggle caption on","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",Turquoise:"Turquoise","Type or paste your content here.":"Type or paste your content here.","Type your title":"Type your title",Underline:"Underline","Underline text":"Underline text",Undo:"Undo",Unlink:"Unlink","Update image URL":"Update image URL","Upload failed":"Upload failed","Upload from computer":"Upload from computer","Upload image from computer":"Upload image from computer","Upload in progress":"Upload in progress","Uploading image":"Uploading image","Upper-latin":"Upper-latin","Upper-roman":"Upper-roman","Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.":"Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface.","User interface and content navigation keystrokes":"User interface and content navigation keystrokes","Vertical text alignment toolbar":"Vertical text alignment toolbar","Via URL":"Via URL",White:"White","Widget toolbar":"Widget toolbar",Width:"Width","Wrap text":"Wrap text",Yellow:"Yellow","You have no image upload permissions.":"You have no image upload permissions."}),t.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})), /*! * @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. */ -function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.OPEditor=t():e.OPEditor=t()}(self,(()=>(()=>{var e,t,o={55:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-menu-bar__menu{display:block;font-size:inherit;position:relative}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level{max-width:100%}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenu.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenu.css"],names:[],mappings:"AAKA,sBACC,aAAc,CCCd,iBAAkB,CDAlB,iBACD,CCCC,kDACC,cACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-menu-bar__menu {\n\tdisplay: block;\n\tposition: relative;\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-menu-bar__menu {\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t&.ck-menu-bar__menu_top-level {\n\t\tmax-width: 100%;\n\t}\n}\n"],sourceRoot:""}]);const a=s},66:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-toolbar{align-items:center;display:flex;flex-flow:row nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-toolbar>.ck-toolbar__items{align-items:center;display:flex;flex-flow:row wrap;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{background:var(--ck-color-toolbar-background);border:1px solid var(--ck-color-toolbar-border);border-radius:0;padding:0 var(--ck-spacing-small)}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar .ck.ck-toolbar__separator{background:var(--ck-color-toolbar-border);height:var(--ck-icon-size);margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);min-width:1px;width:1px}.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-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{border-radius:0;margin:0;width:100%}.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.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-dropdown__panel{min-width:auto}.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-button>.ck-button__label{max-width:7em;width:auto}.ck.ck-toolbar:focus{outline:none}.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.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=rtl]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{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.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=ltr]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/toolbar.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/toolbar.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAOA,eAKC,kBAAmB,CAFnB,YAAa,CACb,oBAAqB,CCFrB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBD6CD,CA3CC,kCAGC,kBAAmB,CAFnB,YAAa,CACb,kBAAmB,CAEnB,WAED,CAEA,yCACC,oBAWD,CAJC,yGAEC,YACD,CAGD,uCACC,eACD,CAEA,sDACC,gBACD,CAEA,sDACC,qBACD,CAEA,sDACC,gBACD,CAGC,yFACC,YACD,CE/CF,eAGC,6CAA8C,CAE9C,+CAAgD,CCFhD,eAAgB,CDChB,iCAuGD,CCtGC,qEAEC,qCAED,CDFA,yCAIC,yCAA0C,CAH1C,0BAA2B,CAU3B,qCAAsC,CADtC,kCAAmC,CAPnC,aAAc,CADd,SAUD,CAEA,uCACC,QACD,CAGC,gEAEC,oCACD,CAIA,kEACC,YACD,CAGD,gHAIC,qCAAsC,CADtC,kCAED,CAEA,mCAEC,SAaD,CAVC,0DAQC,eAAgB,CAHhB,QAAS,CAHT,UAOD,CAGD,kCAEC,SAWD,CATC,uDAEC,QAMD,CAHC,yFACC,eACD,CASD,kFACC,mCACD,CAMA,wEACC,cACD,CAEA,iFACC,aAAc,CACd,UACD,CAGD,qBACC,YACD,CAEA,qCACC,QACD,CAaA,+FACC,cACD,CAEA,iJAEC,mCACD,CAEA,qHACC,aACD,CAIC,6JAEC,2BAA4B,CAD5B,wBAED,CAGA,2JAEC,4BAA6B,CAD7B,yBAED,CASD,8RACC,mCACD,CAWA,qHACC,cACD,CAIC,6JAEC,4BAA6B,CAD7B,yBAED,CAGA,2JAEC,2BAA4B,CAD5B,wBAED,CASD,8RACC,oCACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../mixins/_unselectable.css";\n\n.ck.ck-toolbar {\n\t@mixin ck-unselectable;\n\n\tdisplay: flex;\n\tflex-flow: row nowrap;\n\talign-items: center;\n\n\t& > .ck-toolbar__items {\n\t\tdisplay: flex;\n\t\tflex-flow: row wrap;\n\t\talign-items: center;\n\t\tflex-grow: 1;\n\n\t}\n\n\t& .ck.ck-toolbar__separator {\n\t\tdisplay: inline-block;\n\n\t\t/*\n\t\t * A leading or trailing separator makes no sense (separates from nothing on one side).\n\t\t * For instance, it can happen when toolbar items (also separators) are getting grouped one by one and\n\t\t * moved to another toolbar in the dropdown.\n\t\t */\n\t\t&:first-child,\n\t\t&:last-child {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t& .ck-toolbar__line-break {\n\t\tflex-basis: 100%;\n\t}\n\n\t&.ck-toolbar_grouping > .ck-toolbar__items {\n\t\tflex-wrap: nowrap;\n\t}\n\n\t&.ck-toolbar_vertical > .ck-toolbar__items {\n\t\tflex-direction: column;\n\t}\n\n\t&.ck-toolbar_floating > .ck-toolbar__items {\n\t\tflex-wrap: nowrap;\n\t}\n\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t& > .ck-dropdown__button .ck-dropdown__arrow {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-toolbar {\n\t@mixin ck-rounded-corners;\n\n\tbackground: var(--ck-color-toolbar-background);\n\tpadding: 0 var(--ck-spacing-small);\n\tborder: 1px solid var(--ck-color-toolbar-border);\n\n\t& .ck.ck-toolbar__separator {\n\t\theight: var(--ck-icon-size);\n\t\twidth: 1px;\n\t\tmin-width: 1px;\n\t\tbackground: var(--ck-color-toolbar-border);\n\n\t\t/*\n\t\t * These margins make the separators look better in balloon toolbars (when aligned with the "tip").\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/7493.\n\t\t */\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t& .ck-toolbar__line-break {\n\t\theight: 0;\n\t}\n\n\t& > .ck-toolbar__items {\n\t\t& > *:not(.ck-toolbar__line-break) {\n\t\t\t/* (#11) Separate toolbar items. */\n\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t}\n\n\t\t/* Don\'t display a separator after an empty items container, for instance,\n\t\twhen all items were grouped */\n\t\t&:empty + .ck.ck-toolbar__separator {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t& > .ck-toolbar__items > *:not(.ck-toolbar__line-break),\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t/* Make sure items wrapped to the next line have v-spacing */\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t&.ck-toolbar_vertical {\n\t\t/* Items in a vertical toolbar span the entire width. */\n\t\tpadding: 0;\n\n\t\t/* Specificity matters here. See https://github.com/ckeditor/ckeditor5-theme-lark/issues/168. */\n\t\t& > .ck-toolbar__items > .ck {\n\t\t\t/* Items in a vertical toolbar should span the horizontal space. */\n\t\t\twidth: 100%;\n\n\t\t\t/* Items in a vertical toolbar should have no margin. */\n\t\t\tmargin: 0;\n\n\t\t\t/* Items in a vertical toolbar span the entire width so rounded corners are pointless. */\n\t\t\tborder-radius: 0;\n\t\t}\n\t}\n\n\t&.ck-toolbar_compact {\n\t\t/* No spacing around items. */\n\t\tpadding: 0;\n\n\t\t& > .ck-toolbar__items > * {\n\t\t\t/* Compact toolbar items have no spacing between them. */\n\t\t\tmargin: 0;\n\n\t\t\t/* "Middle" children should have no rounded corners. */\n\t\t\t&:not(:first-child):not(:last-child) {\n\t\t\t\tborder-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .ck.ck-toolbar__grouped-dropdown {\n\t\t/*\n\t\t * Dropdown button has asymmetric padding to fit the arrow.\n\t\t * This button has no arrow so let\'s revert that padding back to normal.\n\t\t */\n\t\t& > .ck.ck-button.ck-dropdown__button {\n\t\t\tpadding-left: var(--ck-spacing-tiny);\n\t\t}\n\t}\n\n\t/* A drop-down containing the nested toolbar with configured items. */\n\t& .ck-toolbar__nested-toolbar-dropdown {\n\t\t/* Prevent empty space in the panel when the dropdown label is visible and long but the toolbar has few items. */\n\t\t& > .ck-dropdown__panel {\n\t\t\tmin-width: auto;\n\t\t}\n\n\t\t& > .ck-button > .ck-button__label {\n\t\t\tmax-width: 7em;\n\t\t\twidth: auto;\n\t\t}\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t.ck-toolbar-container & {\n\t\tborder: 0;\n\t}\n}\n\n/* stylelint-disable */\n\n/*\n * Styles for RTL toolbars.\n *\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"\n * because its parent is not controlled by the editor framework.\n */\n[dir="rtl"] .ck.ck-toolbar,\n.ck.ck-toolbar[dir="rtl"] {\n\t& > .ck-toolbar__items > .ck {\n\t\tmargin-right: 0;\n\t}\n\n\t&:not(.ck-toolbar_compact) > .ck-toolbar__items > .ck {\n\t\t/* (#11) Separate toolbar items. */\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n\n\t& > .ck-toolbar__items > .ck:last-child {\n\t\tmargin-left: 0;\n\t}\n\n\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\n\t\t/* No rounded corners on the right side of the first child. */\n\t\t&:first-child {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\n\t\t/* No rounded corners on the left side of the last child. */\n\t\t&:last-child {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\t}\n\n\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\n\t& > .ck.ck-toolbar__separator {\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n\n\t/* Some spacing between the items and the separator before the grouped items dropdown. */\n\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n}\n\n/*\n * Styles for LTR toolbars.\n *\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"\n * because its parent is not controlled by the editor framework.\n */\n[dir="ltr"] .ck.ck-toolbar,\n.ck.ck-toolbar[dir="ltr"] {\n\t& > .ck-toolbar__items > .ck:last-child {\n\t\tmargin-right: 0;\n\t}\n\n\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\n\t\t/* No rounded corners on the right side of the first child. */\n\t\t&:first-child {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t/* No rounded corners on the left side of the last child. */\n\t\t&:last-child {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\t}\n\n\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\n\t& > .ck.ck-toolbar__separator {\n\t\tmargin-right: var(--ck-spacing-small);\n\t}\n\n\t/* Some spacing between the items and the separator before the grouped items dropdown. */\n\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\n\t\tmargin-right: var(--ck-spacing-small);\n\t}\n}\n\n/* stylelint-enable */\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]);const a=s},178:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":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.ck-rounded-corners:not(.ck-editor__nested-editable){border-radius:var(--ck-border-radius)}.ck.ck-editor__editable.ck-focused:not(.ck-editor__nested-editable){border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck.ck-editor__editable_inline{border:1px solid transparent;overflow:auto;padding:0 var(--ck-spacing-standard)}.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-panel-background)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-panel-background)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/editorui.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAWA,MACC,0CACD,CAEA,yDCJC,eDWD,CCTC,yJAEC,qCAED,CDCA,oEEPA,2BAA2B,CCF3B,qCAA8B,CDC9B,YFWA,CAGD,+BAGC,4BAA6B,CAF7B,aAAc,CACd,oCA6BD,CA1BC,wCACC,eACD,CAEA,wCACC,gBACD,CAGA,4CACC,kCACD,CAGA,2CAKC,qCACD,CAGA,sDACC,kDACD,CAKA,gEACC,oDACD,CAIA,gEACC,iDACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_shadow.css";\n@import "../../../mixins/_focus.css";\n@import "../../mixins/_button.css";\n\n:root {\n\t--ck-color-editable-blur-selection: hsl(0, 0%, 85%);\n}\n\n.ck.ck-editor__editable:not(.ck-editor__nested-editable) {\n\t@mixin ck-rounded-corners;\n\n\t&.ck-focused {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-inner-shadow);\n\t}\n}\n\n.ck.ck-editor__editable_inline {\n\toverflow: auto;\n\tpadding: 0 var(--ck-spacing-standard);\n\tborder: 1px solid transparent;\n\n\t&[dir="ltr"] {\n\t\ttext-align: left;\n\t}\n\n\t&[dir="rtl"] {\n\t\ttext-align: right;\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/116 */\n\t& > *:first-child {\n\t\tmargin-top: var(--ck-spacing-large);\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5/issues/847 */\n\t& > *:last-child {\n\t\t/*\n\t\t * This value should match with the default margins of the block elements (like .media or .image)\n\t\t * to avoid a content jumping when the fake selection container shows up (See https://github.com/ckeditor/ckeditor5/issues/9825).\n\t\t */\n\t\tmargin-bottom: var(--ck-spacing-large);\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5/issues/6517 */\n\t&.ck-blurred ::selection {\n\t\tbackground: var(--ck-color-editable-blur-selection);\n\t}\n}\n\n/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/111 */\n.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_n"] {\n\t&::after {\n\t\tborder-bottom-color: var(--ck-color-panel-background);\n\t}\n}\n\n.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_s"] {\n\t&::after {\n\t\tborder-top-color: var(--ck-color-panel-background);\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]);const a=s},426:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":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-dropdown__panel{display:none;max-width:var(--ck-dropdown-max-width);position:absolute;z-index:var(--ck-z-panel)}.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{bottom:auto;top:100%}.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-panel) + 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{margin-left:var(--ck-spacing-standard);right: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{overflow:hidden;text-overflow:ellipsis;width:7em}.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{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);border-radius:0;bottom:0;min-width:100%}.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}.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}.ck.ck-dropdown__panel:focus{outline:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/dropdown.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/dropdown.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAKA,MACC,4BACD,CAEA,gBACC,oBAAqB,CACrB,iBA2ED,CAzEC,oCACC,mBAAoB,CACpB,2BACD,CAGA,+CACC,UACD,CAEA,oCACC,YAAa,CAEb,sCAAuC,CAEvC,iBAAkB,CAHlB,yBA4DD,CAvDC,+DACC,oBACD,CAEA,mSAKC,WACD,CAEA,mSAUC,WAAY,CADZ,QAED,CAEA,oHAEC,MACD,CAEA,oHAEC,OACD,CAEA,kHAGC,QAAS,CACT,0BACD,CAEA,sHAGC,QAAS,CACT,0BACD,CAEA,sHAGC,QAAS,CACT,0BACD,CAQF,mCACC,mCACD,CCpFA,MACC,sDACD,CAEA,gBAEC,iBA2ED,CAzEC,oCACC,mCACD,CAGC,8CAIC,sCAAuC,CAHvC,gCAID,CAIA,8CACC,+BAAgC,CAGhC,oCACD,CAGD,gDC/BA,kCDiCA,CAIE,mFAEC,oCACD,CAIA,mFAEC,qCACD,CAID,iEAEC,eAAgB,CAChB,sBAAuB,CAFvB,SAGD,CAGA,6EC1DD,kCD4DC,CAGA,qDACC,2BAA4B,CAC5B,4BACD,CAEA,sGACC,UACD,CAGA,yHAEC,eAKD,CAHC,qIE7EF,2CF+EE,CAKH,uBAIC,oDAAqD,CACrD,sDAAuD,CGvFvD,eAAgB,CHwFhB,QAAS,CAGT,cAuBD,CGhHC,qFAEC,qCAED,CH4ED,uBEpFC,oCFoHD,CAnBC,6CACC,wBACD,CAEA,6CACC,yBACD,CAEA,6CACC,2BACD,CAEA,6CACC,4BACD,CAEA,6BACC,YACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-dropdown-max-width: 75vw;\n}\n\n.ck.ck-dropdown {\n\tdisplay: inline-block;\n\tposition: relative;\n\n\t& .ck-dropdown__arrow {\n\t\tpointer-events: none;\n\t\tz-index: var(--ck-z-default);\n\t}\n\n\t/* Dropdown button should span horizontally, e.g. in vertical toolbars */\n\t& .ck-button.ck-dropdown__button {\n\t\twidth: 100%;\n\t}\n\n\t& .ck-dropdown__panel {\n\t\tdisplay: none;\n\t\tz-index: var(--ck-z-panel);\n\t\tmax-width: var(--ck-dropdown-max-width);\n\n\t\tposition: absolute;\n\n\t\t&.ck-dropdown__panel-visible {\n\t\t\tdisplay: inline-block;\n\t\t}\n\n\t\t&.ck-dropdown__panel_ne,\n\t\t&.ck-dropdown__panel_nw,\n\t\t&.ck-dropdown__panel_n,\n\t\t&.ck-dropdown__panel_nmw,\n\t\t&.ck-dropdown__panel_nme {\n\t\t\tbottom: 100%;\n\t\t}\n\n\t\t&.ck-dropdown__panel_se,\n\t\t&.ck-dropdown__panel_sw,\n\t\t&.ck-dropdown__panel_smw,\n\t\t&.ck-dropdown__panel_sme,\n\t\t&.ck-dropdown__panel_s {\n\t\t\t/*\n\t\t\t * Using transform: translate3d( 0, 100%, 0 ) causes blurry dropdown on Chrome 67-78+ on non-retina displays.\n\t\t\t * See https://github.com/ckeditor/ckeditor5/issues/1053.\n\t\t\t */\n\t\t\ttop: 100%;\n\t\t\tbottom: auto;\n\t\t}\n\n\t\t&.ck-dropdown__panel_ne,\n\t\t&.ck-dropdown__panel_se {\n\t\t\tleft: 0px;\n\t\t}\n\n\t\t&.ck-dropdown__panel_nw,\n\t\t&.ck-dropdown__panel_sw {\n\t\t\tright: 0px;\n\t\t}\n\n\t\t&.ck-dropdown__panel_s,\n\t\t&.ck-dropdown__panel_n {\n\t\t\t/* Positioning panels relative to the center of the button */\n\t\t\tleft: 50%;\n\t\t\ttransform: translateX(-50%);\n\t\t}\n\n\t\t&.ck-dropdown__panel_nmw,\n\t\t&.ck-dropdown__panel_smw {\n\t\t\t/* Positioning panels relative to the middle-west of the button */\n\t\t\tleft: 75%;\n\t\t\ttransform: translateX(-75%);\n\t\t}\n\n\t\t&.ck-dropdown__panel_nme,\n\t\t&.ck-dropdown__panel_sme {\n\t\t\t/* Positioning panels relative to the middle-east of the button */\n\t\t\tleft: 25%;\n\t\t\ttransform: translateX(-25%);\n\t\t}\n\t}\n}\n\n/*\n * Toolbar dropdown panels should be always above the UI (eg. other dropdown panels) from the editor's content.\n * See https://github.com/ckeditor/ckeditor5/issues/7874\n */\n.ck.ck-toolbar .ck-dropdown__panel {\n\tz-index: calc( var(--ck-z-panel) + 1 );\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n:root {\n\t--ck-dropdown-arrow-size: calc(0.5 * var(--ck-icon-size));\n}\n\n.ck.ck-dropdown {\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t& .ck-dropdown__arrow {\n\t\twidth: var(--ck-dropdown-arrow-size);\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& .ck-dropdown__arrow {\n\t\t\tright: var(--ck-spacing-standard);\n\n\t\t\t/* A space to accommodate the triangle. */\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& .ck-dropdown__arrow {\n\t\t\tleft: var(--ck-spacing-standard);\n\n\t\t\t/* A space to accommodate the triangle. */\n\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t}\n\t}\n\n\t&.ck-disabled .ck-dropdown__arrow {\n\t\t@mixin ck-disabled;\n\t}\n\n\t& .ck-button.ck-dropdown__button {\n\t\t@mixin ck-dir ltr {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\t/* Make sure dropdowns with just an icon have the right inner spacing */\n\t\t\t\tpadding-left: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\t/* Make sure dropdowns with just an icon have the right inner spacing */\n\t\t\t\tpadding-right: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\n\t\t/* #23 */\n\t\t& .ck-button__label {\n\t\t\twidth: 7em;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\n\t\t&.ck-disabled .ck-button__label {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/816 */\n\t\t&.ck-on {\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t&.ck-dropdown__button_label-width_auto .ck-button__label {\n\t\t\twidth: auto;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/8699 */\n\t\t&.ck-off:active,\n\t\t&.ck-on:active {\n\t\t\tbox-shadow: none;\n\n\t\t\t&:focus {\n\t\t\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck.ck-dropdown__panel {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\tbackground: var(--ck-color-dropdown-panel-background);\n\tborder: 1px solid var(--ck-color-dropdown-panel-border);\n\tbottom: 0;\n\n\t/* Make sure the panel is at least as wide as the drop-down\'s button. */\n\tmin-width: 100%;\n\n\t/* Disabled corner border radius to be consistent with the .dropdown__button\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t&.ck-dropdown__panel_se {\n\t\tborder-top-left-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_sw {\n\t\tborder-top-right-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_ne {\n\t\tborder-bottom-left-radius: 0;\n\t}\n\n\t&.ck-dropdown__panel_nw {\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]);const a=s},532:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck-content ol{list-style-type:decimal}.ck-content ol ol{list-style-type:lower-latin}.ck-content ol ol ol{list-style-type:lower-roman}.ck-content ol ol ol ol{list-style-type:upper-latin}.ck-content ol ol ol ol ol{list-style-type:upper-roman}.ck-content ul{list-style-type:disc}.ck-content ul ul{list-style-type:circle}.ck-content ul ul ul,.ck-content ul ul ul ul{list-style-type:square}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-list/theme/list.css"],names:[],mappings:"AAKA,eACC,uBAiBD,CAfC,kBACC,2BAaD,CAXC,qBACC,2BASD,CAPC,wBACC,2BAKD,CAHC,2BACC,2BACD,CAMJ,eACC,oBAaD,CAXC,kBACC,sBASD,CAJE,6CACC,sBACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck-content ol {\n\tlist-style-type: decimal;\n\n\t& ol {\n\t\tlist-style-type: lower-latin;\n\n\t\t& ol {\n\t\t\tlist-style-type: lower-roman;\n\n\t\t\t& ol {\n\t\t\t\tlist-style-type: upper-latin;\n\n\t\t\t\t& ol {\n\t\t\t\t\tlist-style-type: upper-roman;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck-content ul {\n\tlist-style-type: disc;\n\n\t& ul {\n\t\tlist-style-type: circle;\n\n\t\t& ul {\n\t\t\tlist-style-type: square;\n\n\t\t\t& ul {\n\t\t\t\tlist-style-type: square;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},540:e=>{"use strict";e.exports=function(e){var t=document.createElement("style");return e.setAttributes(t,e.attributes),e.insert(t,e.options),t}},601:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck-hidden{display:none!important}:root{--ck-z-default:1;--ck-z-panel:calc(var(--ck-z-default) + 999);--ck-z-dialog:9999}.ck-transitions-disabled,.ck-transitions-disabled *{transition:none!important}:root{--ck-powered-by-font-size:calc(var(--ck-font-size-base)*7.5/13);--ck-powered-by-line-height:calc(var(--ck-font-size-base)*10/13);--ck-powered-by-letter-spacing:calc(var(--ck-font-size-base)*-0.2/13);--ck-powered-by-padding-vertical:2px;--ck-powered-by-padding-horizontal:4px;--ck-powered-by-text-color:#4f4f4f;--ck-powered-by-border-radius:var(--ck-border-radius);--ck-powered-by-background:#fff;--ck-powered-by-border-color:var(--ck-color-focus-border);--ck-powered-by-svg-width:53;--ck-powered-by-svg-height:10;--ck-powered-by-icon-width:calc(var(--ck-font-size-base)*var(--ck-powered-by-svg-width)/13);--ck-powered-by-icon-height:calc(var(--ck-font-size-base)*var(--ck-powered-by-svg-height)/13)}.ck.ck-balloon-panel.ck-powered-by-balloon{--ck-border-radius:var(--ck-powered-by-border-radius);background:var(--ck-powered-by-background);box-shadow:none;min-height:unset;z-index:calc(var(--ck-z-panel) - 1)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by{line-height:var(--ck-powered-by-line-height)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by a{align-items:center;cursor:pointer;display:flex;filter:grayscale(80%);line-height:var(--ck-powered-by-line-height);opacity:.66;padding:var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-powered-by__label{color:var(--ck-powered-by-text-color);cursor:pointer;font-size:var(--ck-powered-by-font-size);font-weight:700;letter-spacing:var(--ck-powered-by-letter-spacing);line-height:normal;margin-right:4px;padding-left:2px;text-transform:uppercase}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-icon{cursor:pointer;display:block;height:var(--ck-powered-by-icon-height);width:var(--ck-powered-by-icon-width)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by:hover a{filter:grayscale(0);opacity:1}.ck.ck-balloon-panel.ck-powered-by-balloon[class*=position_inside]{border-color:transparent}.ck.ck-balloon-panel.ck-powered-by-balloon[class*=position_border]{border:var(--ck-focus-ring);border-color:var(--ck-powered-by-border-color)}:root{--ck-evaluation-badge-font-size:calc(var(--ck-font-size-base)*7.5/13);--ck-evaluation-badge-line-height:calc(var(--ck-font-size-base)*7.5/13);--ck-evaluation-badge-letter-spacing:calc(var(--ck-font-size-base)*-0.2/13);--ck-evaluation-badge-padding-vertical:2px;--ck-evaluation-badge-padding-horizontal:4px;--ck-evaluation-badge-text-color:#4f4f4f;--ck-evaluation-badge-border-radius:var(--ck-border-radius);--ck-evaluation-badge-background:#fff;--ck-evaluation-badge-border-color:var(--ck-color-focus-border)}.ck.ck-balloon-panel.ck-evaluation-badge-balloon{--ck-border-radius:var(--ck-evaluation-badge-border-radius);background:var(--ck-evaluation-badge-background);box-shadow:none;min-height:unset;z-index:calc(var(--ck-z-panel) - 1)}.ck.ck-balloon-panel.ck-evaluation-badge-balloon .ck.ck-evaluation-badge{line-height:var(--ck-evaluation-badge-line-height);padding:var(--ck-evaluation-badge-padding-vertical) var(--ck-evaluation-badge-padding-horizontal)}.ck.ck-balloon-panel.ck-evaluation-badge-balloon .ck.ck-evaluation-badge .ck-evaluation-badge__label{color:var(--ck-evaluation-badge-text-color);display:block;font-size:var(--ck-evaluation-badge-font-size);font-weight:700;letter-spacing:var(--ck-evaluation-badge-letter-spacing);line-height:normal;padding:0 2px;text-transform:uppercase}.ck.ck-balloon-panel.ck-evaluation-badge-balloon[class*=position_inside]{border-color:transparent}.ck.ck-balloon-panel.ck-evaluation-badge-balloon[class*=position_border]{border:var(--ck-focus-ring);border-color:var(--ck-evaluation-badge-border-color)}:root{--ck-color-base-foreground:#fafafa;--ck-color-base-background:#fff;--ck-color-base-border:#ccced1;--ck-color-base-action:#53a336;--ck-color-base-focus:#6cb5f9;--ck-color-base-text:#333;--ck-color-base-active:#2977ff;--ck-color-base-active-focus:#0d65ff;--ck-color-base-error:#db3700;--ck-color-focus-border-coordinates:218,81.8%,56.9%;--ck-color-focus-border:hsl(var(--ck-color-focus-border-coordinates));--ck-color-focus-outer-shadow:#cae1fc;--ck-color-focus-disabled-shadow:rgba(119,186,248,.3);--ck-color-focus-error-shadow:rgba(255,64,31,.3);--ck-color-text:var(--ck-color-base-text);--ck-color-shadow-drop:rgba(0,0,0,.15);--ck-color-shadow-drop-active:rgba(0,0,0,.2);--ck-color-shadow-inner:rgba(0,0,0,.1);--ck-color-button-default-background:transparent;--ck-color-button-default-hover-background:#f0f0f0;--ck-color-button-default-active-background:#f0f0f0;--ck-color-button-default-disabled-background:transparent;--ck-color-button-on-background:#f0f7ff;--ck-color-button-on-hover-background:#dbecff;--ck-color-button-on-active-background:#dbecff;--ck-color-button-on-disabled-background:#f0f2f4;--ck-color-button-on-color:#2977ff;--ck-color-button-action-background:var(--ck-color-base-action);--ck-color-button-action-hover-background:#4d9d30;--ck-color-button-action-active-background:#4d9d30;--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:#939393;--ck-color-switch-button-off-hover-background:#7d7d7d;--ck-color-switch-button-on-background:var(--ck-color-button-action-background);--ck-color-switch-button-on-hover-background:#4d9d30;--ck-color-switch-button-inner-background:var(--ck-color-base-background);--ck-color-switch-button-inner-shadow:rgba(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-dialog-background:var(--ck-custom-background);--ck-color-dialog-form-header-border:var(--ck-custom-border);--ck-color-input-background:var(--ck-color-base-background);--ck-color-input-border:var(--ck-color-base-border);--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:var(--ck-color-base-border);--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-button-on-color);--ck-color-list-button-on-background-focus:var(--ck-color-button-on-color);--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-background);--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,176,255,.1);--ck-color-link-fake-selection:rgba(31,176,255,.3);--ck-color-highlight-background:#ff0;--ck-color-light-red:#fcc;--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-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{background:transparent;border:0;box-sizing:border-box;height:auto;margin:0;padding:0;position:static;text-decoration:none;transition:none;vertical-align:middle;width:auto;word-wrap:break-word}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset_all{border-collapse:collapse;color:var(--ck-color-text);cursor:auto;float:none;font:normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);text-align:left;white-space:nowrap}.ck-reset_all .ck-rtl :not(.ck-reset_all-excluded *){text-align:right}.ck-reset_all iframe:not(.ck-reset_all-excluded *){vertical-align:inherit}.ck-reset_all textarea:not(.ck-reset_all-excluded *){white-space:pre-wrap}.ck-reset_all input[type=password]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text]:not(.ck-reset_all-excluded *),.ck-reset_all textarea:not(.ck-reset_all-excluded *){cursor:text}.ck-reset_all input[type=password][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all textarea[disabled]:not(.ck-reset_all-excluded *){cursor:default}.ck-reset_all fieldset:not(.ck-reset_all-excluded *){border:2px groove #dfdee3;padding:10px}.ck-reset_all button:not(.ck-reset_all-excluded *)::-moz-focus-inner{border:0;padding: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)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_hidden.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_zindex.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_transition.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_poweredby.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_evaluationbadge.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_colors.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_disabled.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_focus.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_fonts.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_reset.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_shadow.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_spacing.css"],names:[],mappings:"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",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A class which hides an element in DOM.\n */\n.ck-hidden {\n\t/* Override selector specificity. Otherwise, all elements with some display\n\tstyle defined will override this one, which is not a desired result. */\n\tdisplay: none !important;\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-z-default: 1;\n\t--ck-z-panel: calc( var(--ck-z-default) + 999 );\n\t--ck-z-dialog: 9999;\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A class that disables all transitions of the element and its children.\n */\n.ck-transitions-disabled,\n.ck-transitions-disabled * {\n\ttransition: none !important;\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t/* where 7.5(px) is the font size of the powered by label and 13(px) is the base font size. */\n\t--ck-powered-by-font-size: calc(var(--ck-font-size-base) * 7.5 / 13);\n\t/* where 10(px) is the line height of the powered by label and 13(px) is the base font size. */\n\t--ck-powered-by-line-height: calc(var(--ck-font-size-base) * 10 / 13);\n\t/* where -0.2(px) is the letter spacing of the powered by label and 13(px) is the base font size. */\n\t--ck-powered-by-letter-spacing: calc(var(--ck-font-size-base) * -0.2 / 13);\n\t--ck-powered-by-padding-vertical: 2px;\n\t--ck-powered-by-padding-horizontal: 4px;\n\t--ck-powered-by-text-color: hsl(0, 0%, 31%);\n\t--ck-powered-by-border-radius: var(--ck-border-radius);\n\t--ck-powered-by-background: hsl(0, 0%, 100%);\n\t--ck-powered-by-border-color: var(--ck-color-focus-border);\n\n\t--ck-powered-by-svg-width: 53;\n\t--ck-powered-by-svg-height: 10;\n\t--ck-powered-by-icon-width: calc(var(--ck-font-size-base) * var(--ck-powered-by-svg-width) / 13);\n\t--ck-powered-by-icon-height: calc(var(--ck-font-size-base) * var(--ck-powered-by-svg-height) / 13);\n}\n\n.ck.ck-balloon-panel.ck-powered-by-balloon {\n\t--ck-border-radius: var(--ck-powered-by-border-radius);\n\n\tbox-shadow: none;\n\tbackground: var(--ck-powered-by-background);\n\tmin-height: unset;\n\tz-index: calc( var(--ck-z-panel) - 1 );\n\n\t& .ck.ck-powered-by {\n\t\tline-height: var(--ck-powered-by-line-height);\n\n\t\t& a {\n\t\t\tcursor: pointer;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\topacity: .66;\n\t\t\tfilter: grayscale(80%);\n\t\t\tline-height: var(--ck-powered-by-line-height);\n\t\t\tpadding: var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal);\n\t\t}\n\n\t\t& .ck-powered-by__label {\n\t\t\tfont-size: var(--ck-powered-by-font-size);\n\t\t\tletter-spacing: var(--ck-powered-by-letter-spacing);\n\t\t\tpadding-left: 2px;\n\t\t\ttext-transform: uppercase;\n\t\t\tfont-weight: bold;\n\t\t\tmargin-right: 4px;\n\t\t\tcursor: pointer;\n\t\t\tline-height: normal;\n\t\t\tcolor: var(--ck-powered-by-text-color);\n\n\t\t}\n\n\t\t& .ck-icon {\n\t\t\tdisplay: block;\n\t\t\tcursor: pointer;\n\t\t\twidth: var(--ck-powered-by-icon-width);\n\t\t\theight: var(--ck-powered-by-icon-height);\n\t\t}\n\n\t\t&:hover {\n\t\t\t& a {\n\t\t\t\tfilter: grayscale(0%);\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n\n\t&[class*="position_inside"] {\n\t\tborder-color: transparent;\n\t}\n\n\t&[class*="position_border"] {\n\t\tborder: var(--ck-focus-ring);\n\t\tborder-color: var(--ck-powered-by-border-color);\n\t}\n}\n\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t/* where 7.5(px) is the font size of the evaluation badge label and 13(px) is the base font size. */\n\t--ck-evaluation-badge-font-size: calc(var(--ck-font-size-base) * 7.5 / 13);\n\t/* where 7.5(px) is the line height of the evaluation badge label and 13(px) is the base font size. */\n\t--ck-evaluation-badge-line-height: calc(var(--ck-font-size-base) * 7.5 / 13);\n\t/* where -0.2(px) is the letter spacing of the evaluation badge label and 13(px) is the base font size. */\n\t--ck-evaluation-badge-letter-spacing: calc(var(--ck-font-size-base) * -0.2 / 13);\n\t--ck-evaluation-badge-padding-vertical: 2px;\n\t--ck-evaluation-badge-padding-horizontal: 4px;\n\t--ck-evaluation-badge-text-color: hsl(0, 0%, 31%);\n\t--ck-evaluation-badge-border-radius: var(--ck-border-radius);\n\t--ck-evaluation-badge-background: hsl(0, 0%, 100%);\n\t--ck-evaluation-badge-border-color: var(--ck-color-focus-border);\n}\n\n.ck.ck-balloon-panel.ck-evaluation-badge-balloon {\n\t--ck-border-radius: var(--ck-evaluation-badge-border-radius);\n\n\tbox-shadow: none;\n\tbackground: var(--ck-evaluation-badge-background);\n\tmin-height: unset;\n\tz-index: calc( var(--ck-z-panel) - 1 );\n\n\t& .ck.ck-evaluation-badge {\n\t\tline-height: var(--ck-evaluation-badge-line-height);\n\t\tpadding: var(--ck-evaluation-badge-padding-vertical) var(--ck-evaluation-badge-padding-horizontal);\n\n\t\t& .ck-evaluation-badge__label {\n\t\t\tdisplay: block;\n\t\t\tpadding: 0 2px;\n\t\t\tfont-size: var(--ck-evaluation-badge-font-size);\n\t\t\tletter-spacing: var(--ck-evaluation-badge-letter-spacing);\n\t\t\tfont-weight: bold;\n\t\t\tline-height: normal;\n\t\t\ttext-transform: uppercase;\n\t\t\tcolor: var(--ck-evaluation-badge-text-color);\n\t\t}\n\t}\n\n\t&[class*="position_inside"] {\n\t\tborder-color: transparent;\n\t}\n\n\t&[class*="position_border"] {\n\t\tborder: var(--ck-focus-ring);\n\t\tborder-color: var(--ck-evaluation-badge-border-color);\n\t}\n}\n\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-color-base-foreground: \t\t\t\t\t\t\t\thsl(0, 0%, 98%);\n\t--ck-color-base-background: \t\t\t\t\t\t\t\thsl(0, 0%, 100%);\n\t--ck-color-base-border: \t\t\t\t\t\t\t\t\thsl(220, 6%, 81%);\n\t--ck-color-base-action: \t\t\t\t\t\t\t\t\thsl(104, 50.2%, 42.5%);\n\t--ck-color-base-focus: \t\t\t\t\t\t\t\t\t\thsl(209, 92%, 70%);\n\t--ck-color-base-text: \t\t\t\t\t\t\t\t\t\thsl(0, 0%, 20%);\n\t--ck-color-base-active: \t\t\t\t\t\t\t\t\thsl(218.1, 100%, 58%);\n\t--ck-color-base-active-focus:\t\t\t\t\t\t\t\thsl(218.2, 100%, 52.5%);\n\t--ck-color-base-error:\t\t\t\t\t\t\t\t\t\thsl(15, 100%, 43%);\n\n\t/* -- Generic colors ------------------------------------------------------------------------ */\n\n\t--ck-color-focus-border-coordinates: \t\t\t\t\t\t218, 81.8%, 56.9%;\n\t--ck-color-focus-border: \t\t\t\t\t\t\t\t\thsl(var(--ck-color-focus-border-coordinates));\n\t--ck-color-focus-outer-shadow:\t\t\t\t\t\t\t\thsl(212.4, 89.3%, 89%);\n\t--ck-color-focus-disabled-shadow:\t\t\t\t\t\t\thsla(209, 90%, 72%,.3);\n\t--ck-color-focus-error-shadow:\t\t\t\t\t\t\t\thsla(9,100%,56%,.3);\n\t--ck-color-text: \t\t\t\t\t\t\t\t\t\t\tvar(--ck-color-base-text);\n\t--ck-color-shadow-drop: \t\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.15);\n\t--ck-color-shadow-drop-active:\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.2);\n\t--ck-color-shadow-inner: \t\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.1);\n\n\t/* -- Buttons ------------------------------------------------------------------------------- */\n\n\t--ck-color-button-default-background: \t\t\t\t\t\ttransparent;\n\t--ck-color-button-default-hover-background: \t\t\t\thsl(0, 0%, 94.1%);\n\t--ck-color-button-default-active-background: \t\t\t\thsl(0, 0%, 94.1%);\n\t--ck-color-button-default-disabled-background: \t\t\t\ttransparent;\n\n\t--ck-color-button-on-background: \t\t\t\t\t\t\thsl(212, 100%, 97.1%);\n\t--ck-color-button-on-hover-background: \t\t\t\t\t\thsl(211.7, 100%, 92.9%);\n\t--ck-color-button-on-active-background: \t\t\t\t\thsl(211.7, 100%, 92.9%);\n\t--ck-color-button-on-disabled-background: \t\t\t\t\thsl(211, 15%, 95%);\n\t--ck-color-button-on-color:\t\t\t\t\t\t\t\t\thsl(218.1, 100%, 58%);\n\n\n\t--ck-color-button-action-background: \t\t\t\t\t\tvar(--ck-color-base-action);\n\t--ck-color-button-action-hover-background: \t\t\t\t\thsl(104, 53.2%, 40.2%);\n\t--ck-color-button-action-active-background: \t\t\t\thsl(104, 53.2%, 40.2%);\n\t--ck-color-button-action-disabled-background: \t\t\t\thsl(104, 44%, 58%);\n\t--ck-color-button-action-text: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\n\t--ck-color-button-save: \t\t\t\t\t\t\t\t\thsl(120, 100%, 27%);\n\t--ck-color-button-cancel: \t\t\t\t\t\t\t\t\thsl(15, 100%, 43%);\n\n\t--ck-color-switch-button-off-background:\t\t\t\t\thsl(0, 0%, 57.6%);\n\t--ck-color-switch-button-off-hover-background:\t\t\t\thsl(0, 0%, 49%);\n\t--ck-color-switch-button-on-background:\t\t\t\t\t\tvar(--ck-color-button-action-background);\n\t--ck-color-switch-button-on-hover-background:\t\t\t\thsl(104, 53.2%, 40.2%);\n\t--ck-color-switch-button-inner-background:\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-switch-button-inner-shadow:\t\t\t\t\t\thsla(0, 0%, 0%, 0.1);\n\n\t/* -- Dropdown ------------------------------------------------------------------------------ */\n\n\t--ck-color-dropdown-panel-background: \t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-dropdown-panel-border: \t\t\t\t\t\t\tvar(--ck-color-base-border);\n\n\t/* -- Dialog -------------------------------------------------------------------------------- */\n\n\t--ck-color-dialog-background: \t\t\t\t\t\t\t\tvar(--ck-custom-background);\n\t--ck-color-dialog-form-header-border: \t\t\t\t\t\tvar(--ck-custom-border);\n\n\t/* -- Input --------------------------------------------------------------------------------- */\n\n\t--ck-color-input-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-input-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\n\t--ck-color-input-error-border:\t\t\t\t\t\t\t\tvar(--ck-color-base-error);\n\t--ck-color-input-text: \t\t\t\t\t\t\t\t\t\tvar(--ck-color-base-text);\n\t--ck-color-input-disabled-background: \t\t\t\t\t\thsl(0, 0%, 95%);\n\t--ck-color-input-disabled-border: \t\t\t\t\t\t\tvar(--ck-color-base-border);\n\t--ck-color-input-disabled-text: \t\t\t\t\t\t\thsl(0, 0%, 46%);\n\n\t/* -- List ---------------------------------------------------------------------------------- */\n\n\t--ck-color-list-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-list-button-hover-background: \t\t\t\t\tvar(--ck-color-button-default-hover-background);\n\t--ck-color-list-button-on-background: \t\t\t\t\t\tvar(--ck-color-button-on-color);\n\t--ck-color-list-button-on-background-focus: \t\t\t\tvar(--ck-color-button-on-color);\n\t--ck-color-list-button-on-text:\t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\n\t/* -- Panel --------------------------------------------------------------------------------- */\n\n\t--ck-color-panel-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-panel-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\n\n\t/* -- Toolbar ------------------------------------------------------------------------------- */\n\n\t--ck-color-toolbar-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\t--ck-color-toolbar-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\n\n\t/* -- Tooltip ------------------------------------------------------------------------------- */\n\n\t--ck-color-tooltip-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-text);\n\t--ck-color-tooltip-text: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-background);\n\n\t/* -- Engine -------------------------------------------------------------------------------- */\n\n\t--ck-color-engine-placeholder-text: \t\t\t\t\t\thsl(0, 0%, 44%);\n\n\t/* -- Upload -------------------------------------------------------------------------------- */\n\n\t--ck-color-upload-bar-background:\t\t \t\t\t\t\thsl(209, 92%, 70%);\n\n\t/* -- Link -------------------------------------------------------------------------------- */\n\n\t--ck-color-link-default:\t\t\t\t\t\t\t\t\thsl(240, 100%, 47%);\n\t--ck-color-link-selected-background:\t\t\t\t\t\thsla(201, 100%, 56%, 0.1);\n\t--ck-color-link-fake-selection:\t\t\t\t\t\t\t\thsla(201, 100%, 56%, 0.3);\n\n\t/* -- Search result highlight ---------------------------------------------------------------- */\n\n\t--ck-color-highlight-background:\t\t\t\t\t\t\thsl(60, 100%, 50%);\n\n\t/* -- Generic colors ------------------------------------------------------------------------- */\n\n\t--ck-color-light-red:\t\t\t\t\t\t\t\t\t\thsl(0, 100%, 90%);\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t/**\n\t * An opacity value of disabled UI item.\n\t */\n\t--ck-disabled-opacity: .5;\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t/**\n\t * The geometry of the of focused element's outer shadow.\n\t */\n\t--ck-focus-outer-shadow-geometry: 0 0 0 3px;\n\n\t/**\n\t * A visual style of focused element's outer shadow.\n\t */\n\t--ck-focus-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);\n\n\t/**\n\t * A visual style of focused element's outer shadow (when disabled).\n\t */\n\t--ck-focus-disabled-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);\n\n\t/**\n\t * A visual style of focused element's outer shadow (when has errors).\n\t */\n\t--ck-focus-error-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);\n\n\t/**\n\t * A visual style of focused element's border or outline.\n\t */\n\t--ck-focus-ring: 1px solid var(--ck-color-focus-border);\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-font-size-base: 13px;\n\t--ck-line-height-base: 1.84615;\n\t--ck-font-face: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\n\n\t--ck-font-size-tiny: 0.7em;\n\t--ck-font-size-small: 0.75em;\n\t--ck-font-size-normal: 1em;\n\t--ck-font-size-big: 1.4em;\n\t--ck-font-size-large: 1.8em;\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t/* This is super-important. This is **manually** adjusted so a button without an icon\n\tis never smaller than a button with icon, additionally making sure that text-less buttons\n\tare perfect squares. The value is also shared by other components which should stay "in-line"\n\twith buttons. */\n\t--ck-ui-component-min-height: 2.3em;\n}\n\n/**\n * Resets an element, ignoring its children.\n */\n.ck.ck-reset,\n.ck.ck-reset_all,\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\n\tbox-sizing: border-box;\n\twidth: auto;\n\theight: auto;\n\tposition: static;\n\n\t/* Do not include inheritable rules here. */\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tbackground: transparent;\n\ttext-decoration: none;\n\tvertical-align: middle;\n\ttransition: none;\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/105 */\n\tword-wrap: break-word;\n}\n\n/**\n * Resets an element AND its children.\n */\n.ck.ck-reset_all,\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\n\t/* These are rule inherited by all children elements. */\n\tborder-collapse: collapse;\n\tfont: normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);\n\tcolor: var(--ck-color-text);\n\ttext-align: left;\n\twhite-space: nowrap;\n\tcursor: auto;\n\tfloat: none;\n}\n\n.ck-reset_all {\n\t& .ck-rtl *:not(.ck-reset_all-excluded *) {\n\t\ttext-align: right;\n\t}\n\n\t& iframe:not(.ck-reset_all-excluded *) {\n\t\t/* For IE */\n\t\tvertical-align: inherit;\n\t}\n\n\t& textarea:not(.ck-reset_all-excluded *) {\n\t\twhite-space: pre-wrap;\n\t}\n\n\t& textarea:not(.ck-reset_all-excluded *),\n\t& input[type="text"]:not(.ck-reset_all-excluded *),\n\t& input[type="password"]:not(.ck-reset_all-excluded *) {\n\t\tcursor: text;\n\t}\n\n\t& textarea[disabled]:not(.ck-reset_all-excluded *),\n\t& input[type="text"][disabled]:not(.ck-reset_all-excluded *),\n\t& input[type="password"][disabled]:not(.ck-reset_all-excluded *) {\n\t\tcursor: default;\n\t}\n\n\t& fieldset:not(.ck-reset_all-excluded *) {\n\t\tpadding: 10px;\n\t\tborder: 2px groove hsl(255, 7%, 88%);\n\t}\n\n\t& button:not(.ck-reset_all-excluded *)::-moz-focus-inner {\n\t\t/* See http://stackoverflow.com/questions/5517744/remove-extra-button-spacing-padding-in-firefox */\n\t\tpadding: 0;\n\t\tborder: 0\n\t}\n}\n\n/**\n * Default UI rules for RTL languages.\n */\n.ck[dir="rtl"],\n.ck[dir="rtl"] .ck {\n\ttext-align: right;\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Default border-radius value.\n */\n:root{\n\t--ck-border-radius: 2px;\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t/**\n\t * A visual style of element's inner shadow (i.e. input).\n\t */\n\t--ck-inner-shadow: 2px 2px 3px var(--ck-color-shadow-inner) inset;\n\n\t/**\n\t * A visual style of element's drop shadow (i.e. panel).\n\t */\n\t--ck-drop-shadow: 0 1px 2px 1px var(--ck-color-shadow-drop);\n\n\t/**\n\t * A visual style of element's active shadow (i.e. comment or suggestion).\n\t */\n\t--ck-drop-shadow-active: 0 3px 6px 1px var(--ck-color-shadow-drop-active);\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-spacing-unit: \t\t\t\t\t\t0.6em;\n\t--ck-spacing-large: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 1.5);\n\t--ck-spacing-standard: \t\t\t\t\tvar(--ck-spacing-unit);\n\t--ck-spacing-medium: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.8);\n\t--ck-spacing-small: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.5);\n\t--ck-spacing-tiny: \t\t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.3);\n\t--ck-spacing-extra-tiny: \t\t\t\tcalc(var(--ck-spacing-unit) * 0.16);\n}\n"],sourceRoot:""}]);const a=s},734:(e,t,o)=>{const n=o(5659),i=o(8507),r={};Object.keys(n).forEach((e=>{r[e]={},Object.defineProperty(r[e],"channels",{value:n[e].channels}),Object.defineProperty(r[e],"labels",{value:n[e].labels});const t=i(e);Object.keys(t).forEach((o=>{const n=t[o];r[e][o]=function(e){const t=function(...t){const o=t[0];if(null==o)return o;o.length>1&&(t=o);const n=e(t);if("object"==typeof n)for(let e=n.length,t=0;t1&&(t=o),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(n)}))})),e.exports=r},871:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,'.ck-vertical-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.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-width)*.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-number,.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:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){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}[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)}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/responsive-form/responsiveform.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AAQC,mCAMC,WAAY,CALZ,UAAW,CAEX,iBAAkB,CAClB,UAAW,CACX,QAAS,CAHT,OAAQ,CAKR,SACD,CAEA,yCACC,YACD,CCdA,oCDoBE,wCAMC,WAAY,CALZ,UAAW,CAEX,iBAAkB,CAClB,UAAW,CACX,QAAS,CAHT,OAAQ,CAKR,SACD,CAEA,8CACC,YACD,CC9BF,CCAD,qDACC,kDACD,CAEA,uBACC,+BAoED,CAlEC,6BAEC,YACD,CASC,uGACC,sCACD,CDvBD,oCCMD,uBAqBE,SAAU,CACV,oCA+CF,CA7CE,8CACC,wDAYD,CAVC,4HAEC,WAAY,CACZ,UACD,CAGA,4EACC,kBACD,CAKA,0DACC,kDACD,CAGD,iGAIC,eAAgB,CADhB,kCAAmC,CADnC,kCAmBD,CAfC,yHACC,gDACD,CC5DF,0ODmEG,aCjEH,CDmEG,+IACC,kDACD,CDrEH",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck-vertical-form .ck-button {\n\t&::after {\n\t\tcontent: "";\n\t\twidth: 0;\n\t\tposition: absolute;\n\t\tright: -1px;\n\t\ttop: -1px;\n\t\tbottom: -1px;\n\t\tz-index: 1;\n\t}\n\n\t&:focus::after {\n\t\tdisplay: none;\n\t}\n}\n\n.ck.ck-responsive-form {\n\t@mixin ck-media-phone {\n\t\t& .ck-button {\n\t\t\t&::after {\n\t\t\t\tcontent: "";\n\t\t\t\twidth: 0;\n\t\t\t\tposition: absolute;\n\t\t\t\tright: -1px;\n\t\t\t\ttop: -1px;\n\t\t\t\tbottom: -1px;\n\t\t\t\tz-index: 1;\n\t\t\t}\n\n\t\t\t&:focus::after {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck-vertical-form > .ck-button:nth-last-child(2)::after {\n\tborder-right: 1px solid var(--ck-color-base-border);\n}\n\n.ck.ck-responsive-form {\n\tpadding: var(--ck-spacing-large);\n\n\t&:focus {\n\t\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\n\t\toutline: none;\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& > :not(:first-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& > :not(:last-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\tpadding: 0;\n\t\twidth: calc(.8 * var(--ck-input-width));\n\n\t\t& .ck-labeled-field-view {\n\t\t\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) 0;\n\n\t\t\t& .ck-input-text,\n\t\t\t& .ck-input-number {\n\t\t\t\tmin-width: 0;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t/* Let the long error messages wrap in the narrow form. */\n\t\t\t& .ck-labeled-field-view__error {\n\t\t\t\twhite-space: normal;\n\t\t\t}\n\t\t}\n\n\t\t/* Styles for two last buttons in the form (save&cancel, edit&unlink, etc.). */\n\t\t& > .ck-button:nth-last-child(2) {\n\t\t\t&::after {\n\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\t\t}\n\n\t\t& > .ck-button:nth-last-child(1),\n\t\t& > .ck-button:nth-last-child(2) {\n\t\t\tpadding: var(--ck-spacing-standard);\n\t\t\tmargin-top: var(--ck-spacing-large);\n\t\t\tborder-radius: 0;\n\n\t\t\t&:not(:focus) {\n\t\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-left: 0;\n\n\t\t\t\t&:last-of-type {\n\t\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},880:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-dialog-overlay{bottom:0;left:0;overscroll-behavior:none;position:fixed;right:0;top:0;user-select:none}.ck.ck-dialog-overlay.ck-dialog-overlay__transparent{animation:none;background:none;pointer-events:none}.ck.ck-dialog{overscroll-behavior:none;position:absolute;width:fit-content}.ck.ck-dialog .ck.ck-form__header{flex-shrink:0}.ck.ck-dialog:not(.ck-dialog_modal) .ck.ck-form__header .ck-form__header__label{cursor:grab}.ck.ck-dialog-overlay.ck-dialog-overlay__transparent .ck.ck-dialog{pointer-events:all}:root{--ck-dialog-overlay-background-color:rgba(0,0,0,.5);--ck-dialog-drop-shadow:0px 0px 6px 2px rgba(0,0,0,.15);--ck-dialog-max-width:100vw;--ck-dialog-max-height:90vh;--ck-color-dialog-background:var(--ck-color-base-background);--ck-color-dialog-form-header-border:var(--ck-color-base-border)}.ck.ck-dialog-overlay{animation:ck-dialog-fade-in .3s;background:var(--ck-dialog-overlay-background-color);z-index:var(--ck-z-dialog)}.ck.ck-dialog{border-radius:0;--ck-drop-shadow:var(--ck-dialog-drop-shadow);background:var(--ck-color-dialog-background);border:1px solid var(--ck-color-base-border);max-height:var(--ck-dialog-max-height);max-width:var(--ck-dialog-max-width);overscroll-behavior:contain}.ck-rounded-corners .ck.ck-dialog,.ck.ck-dialog.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dialog{box-shadow:var(--ck-drop-shadow),0 0}.ck.ck-dialog .ck.ck-form__header{border-bottom:1px solid var(--ck-color-dialog-form-header-border)}.ck-dialog-scroll-locked{overflow:hidden}@keyframes ck-dialog-fade-in{0%{background:transparent}to{background:var(--ck-dialog-overlay-background-color)}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dialog/dialog.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dialog/dialog.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAKA,sBAKC,QAAS,CACT,MAAO,CAJP,wBAAyB,CAEzB,cAAe,CAGf,OAAQ,CACR,KAAM,CAPN,gBAcD,CALC,qDAEC,cAAe,CACf,eAAgB,CAFhB,mBAGD,CAGD,cACC,wBAAyB,CAEzB,iBAAkB,CADlB,iBAiBD,CAdC,kCACC,aACD,CAIC,gFACC,WACD,CAGD,mEACC,kBACD,CC/BD,MACC,mDAA2D,CAC3D,uDAA8D,CAC9D,2BAA4B,CAC5B,2BAA4B,CAC5B,4DAA6D,CAC7D,gEACD,CAEA,sBACC,+BAAgC,CAChC,oDAAqD,CACrD,0BACD,CAEA,cCbC,eAAgB,CDiBhB,6CAA8C,CAE9C,4CAA6C,CAG7C,4CAA6C,CAF7C,sCAAuC,CACvC,oCAAqC,CAErC,2BAKD,CC1BC,mEAEC,qCAED,CDOD,cEfC,oCF8BD,CAHC,kCACC,iEACD,CAGD,yBACC,eACD,CAEA,6BACC,GACC,sBACD,CAEA,GACC,oDACD,CACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-dialog-overlay {\n\tuser-select: none;\n\toverscroll-behavior: none;\n\n\tposition: fixed;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\ttop: 0;\n\n\t&.ck-dialog-overlay__transparent {\n\t\tpointer-events: none;\n\t\tanimation: none;\n\t\tbackground: none;\n\t}\n}\n\n.ck.ck-dialog {\n\toverscroll-behavior: none;\n\twidth: fit-content;\n\tposition: absolute;\n\n\t& .ck.ck-form__header {\n\t\tflex-shrink: 0;\n\t}\n\n\t/* Modals should not be draggable. */\n\t&:not(.ck-dialog_modal) {\n\t\t& .ck.ck-form__header .ck-form__header__label {\n\t\t\tcursor: grab;\n\t\t}\n\t}\n\n\t.ck.ck-dialog-overlay.ck-dialog-overlay__transparent & {\n\t\tpointer-events: all;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n:root {\n\t--ck-dialog-overlay-background-color: hsla( 0, 0%, 0%, .5 );\n\t--ck-dialog-drop-shadow: 0px 0px 6px 2px hsl(0deg 0% 0% / 15%);\n\t--ck-dialog-max-width: 100vw;\n\t--ck-dialog-max-height: 90vh;\n\t--ck-color-dialog-background: var(--ck-color-base-background);\n\t--ck-color-dialog-form-header-border: var(--ck-color-base-border);\n}\n\n.ck.ck-dialog-overlay {\n\tanimation: ck-dialog-fade-in .3s;\n\tbackground: var(--ck-dialog-overlay-background-color);\n\tz-index: var(--ck-z-dialog);\n}\n\n.ck.ck-dialog {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\t--ck-drop-shadow: var(--ck-dialog-drop-shadow);\n\n\tbackground: var(--ck-color-dialog-background);\n\tmax-height: var(--ck-dialog-max-height);\n\tmax-width: var(--ck-dialog-max-width);\n\tborder: 1px solid var(--ck-color-base-border);\n\toverscroll-behavior: contain;\n\n\t& .ck.ck-form__header {\n\t\tborder-bottom: 1px solid var(--ck-color-dialog-form-header-border);\n\t}\n}\n\n.ck-dialog-scroll-locked {\n\toverflow: hidden;\n}\n\n@keyframes ck-dialog-fade-in {\n\t0% {\n\t\tbackground: hsla( 0, 0%, 0%, 0 );\n\t}\n\n\t100% {\n\t\tbackground: var(--ck-dialog-overlay-background-color);\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]);const a=s},1091:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-editor__editable img.image_placeholder{background-size:100% 100%}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageplaceholder.css"],names:[],mappings:"AAMC,8CACC,yBACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-editor__editable {\n\t& img.image_placeholder {\n\t\tbackground-size: 100% 100%;\n\t}\n}\n"],sourceRoot:""}]);const a=s},1102:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck-button.ck-dropdown-menu-list__nested-menu__item__button{border-radius:0}.ck-button.ck-dropdown-menu-list__nested-menu__item__button>.ck-spinner-container,.ck-button.ck-dropdown-menu-list__nested-menu__item__button>.ck-spinner-container .ck-spinner{--ck-toolbar-spinner-size:20px}.ck-button.ck-dropdown-menu-list__nested-menu__item__button>.ck-spinner-container{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}.ck-button.ck-dropdown-menu-list__nested-menu__item__button:focus{border-color:transparent;box-shadow:none}.ck-button.ck-dropdown-menu-list__nested-menu__item__button:focus:not(.ck-on){background:var(--ck-color-button-default-hover-background)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/menu/dropdownmenulistitembutton.css"],names:[],mappings:"AAQA,4DACC,eA0BD,CAxBC,gLAGC,8BACD,CAEA,kFAEC,4CAA+C,CAC/C,oCACD,CAMA,kEACC,wBAAyB,CACzB,eAKD,CAHC,8EACC,0DACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/*\n * List item buttons.\n */\n.ck-button.ck-dropdown-menu-list__nested-menu__item__button {\n\tborder-radius: 0;\n\n\t& > .ck-spinner-container,\n\t& > .ck-spinner-container .ck-spinner {\n\t\t/* These styles correspond to .ck-icon so that the spinner seamlessly replaces the icon. */\n\t\t--ck-toolbar-spinner-size: 20px;\n\t}\n\n\t& > .ck-spinner-container {\n\t\t/* These margins are the same as for .ck-icon. */\n\t\tmargin-left: calc(-1 * var(--ck-spacing-small));\n\t\tmargin-right: var(--ck-spacing-small);\n\t}\n\n\t/*\n\t * Hovered items automatically get focused. Default focus styles look odd\n\t * while moving across a huge list of items so let's get rid of them\n\t */\n\t&:focus {\n\t\tborder-color: transparent;\n\t\tbox-shadow: none;\n\n\t\t&:not(.ck-on) {\n\t\t\tbackground: var(--ck-color-button-default-hover-background);\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},1111:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck .ck-placeholder,.ck.ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{content:attr(data-placeholder);left:0;pointer-events:none;position:absolute;right:0}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-reset_all .ck-placeholder{position:relative}@media (forced-colors:active){.ck .ck-placeholder,.ck.ck-placeholder{forced-color-adjust:preserve-parent-color}}.ck .ck-placeholder:before,.ck.ck-placeholder:before{cursor:text}@media (forced-colors:none){.ck .ck-placeholder:before,.ck.ck-placeholder:before{color:var(--ck-color-engine-placeholder-text)}}@media (forced-colors:active){.ck .ck-placeholder:before,.ck.ck-placeholder:before{font-style:italic;margin-left:1px}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-engine/theme/placeholder.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-engine/placeholder.css"],names:[],mappings:"AAMA,uCAEC,iBAWD,CATC,qDAIC,8BAA+B,CAF/B,MAAO,CAKP,mBAAoB,CANpB,iBAAkB,CAElB,OAKD,CAKA,wCACC,YACD,CAQD,iCACC,iBACD,CC7BC,8BACC,uCCOA,yCDLA,CACD,CCOA,qDACC,WAmBD,CDvBA,4BACC,qDCMC,6CDJD,CACD,CAZA,8BACC,qDCsBC,iBAAkB,CAMlB,eD1BD,CACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/* See ckeditor/ckeditor5#936. */\n.ck.ck-placeholder,\n.ck .ck-placeholder {\n\tposition: relative;\n\n\t&::before {\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tcontent: attr(data-placeholder);\n\n\t\t/* See ckeditor/ckeditor5#469. */\n\t\tpointer-events: none;\n\t}\n}\n\n/* See ckeditor/ckeditor5#1987. */\n.ck.ck-read-only .ck-placeholder {\n\t&::before {\n\t\tdisplay: none;\n\t}\n}\n\n/*\n * Rules for the `ck-placeholder` are loaded before the rules for `ck-reset_all` in the base CKEditor 5 DLL build.\n * This fix overwrites the incorrectly set `position: static` from `ck-reset_all`.\n * See https://github.com/ckeditor/ckeditor5/issues/11418.\n */\n.ck.ck-reset_all .ck-placeholder {\n\tposition: relative;\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-media-forced-colors {\n\t@media (forced-colors: active) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n\n@define-mixin ck-media-default-colors {\n\t@media (forced-colors: none) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\n\n/* See ckeditor/ckeditor5#936. */\n.ck.ck-placeholder, .ck .ck-placeholder {\n\t@mixin ck-media-forced-colors {\n\t\t/*\n\t\t * This is needed for Edge on Windows to use the right color for the placeholder content (::before).\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/14907.\n\t\t */\n\t\tforced-color-adjust: preserve-parent-color;\n\t}\n\n\t&::before {\n\t\tcursor: text;\n\n\t\t@mixin ck-media-default-colors {\n\t\t\tcolor: var(--ck-color-engine-placeholder-text);\n\t\t}\n\n\t\t@mixin ck-media-forced-colors {\n\t\t\t/*\n\t\t\t * In the high contrast mode there is no telling between regular and placeholder text. Using\n\t\t\t * italic text to address that issue. See https://github.com/ckeditor/ckeditor5/issues/14907.\n\t\t\t */\n\t\t\tfont-style: italic;\n\n\t\t\t/*\n\t\t\t * Without this margin, the caret will not show up and blink when the user puts the selection\n\t\t\t * in the placeholder (Edge on Windows). See https://github.com/ckeditor/ckeditor5/issues/14907.\n\t\t\t */\n\t\t\tmargin-left: 1px;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},1160:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,'.ck .ck-upload-placeholder-loader{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px;--ck-upload-placeholder-image-aspect-ratio:2.8}.ck .ck-image-upload-placeholder{margin:0;width:100%}.ck .ck-image-upload-placeholder.image-inline{width:calc(var(--ck-upload-placeholder-loader-size)*2*var(--ck-upload-placeholder-image-aspect-ratio))}.ck .ck-image-upload-placeholder img{aspect-ratio:var(--ck-upload-placeholder-image-aspect-ratio)}.ck .ck-upload-placeholder-loader{height:100%;width:100%}.ck .ck-upload-placeholder-loader:before{animation:ck-upload-placeholder-loader 1s linear infinite;border-radius:50%;border-right:2px solid transparent;border-top:3px solid var(--ck-color-upload-placeholder-loader);height:var(--ck-upload-placeholder-loader-size);width:var(--ck-upload-placeholder-loader-size)}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadloader.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadloader.css"],names:[],mappings:"AAKA,kCAGC,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAEvB,MAAO,CALP,iBAAkB,CAIlB,KAOD,CAJC,yCACC,UAAW,CACX,iBACD,CCXD,MACC,4CAAqD,CACrD,wCAAyC,CACzC,8CACD,CAEA,iCAGC,QAAS,CADT,UAgBD,CAbC,8CACC,sGACD,CAEA,qCAOC,4DACD,CAGD,kCAEC,WAAY,CADZ,UAWD,CARC,yCAMC,yDAA0D,CAH1D,iBAAkB,CAElB,kCAAmC,CADnC,8DAA+D,CAF/D,+CAAgD,CADhD,8CAMD,CAGD,wCACC,GACC,uBACD,CACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck .ck-upload-placeholder-loader {\n\tposition: absolute;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttop: 0;\n\tleft: 0;\n\n\t&::before {\n\t\tcontent: '';\n\t\tposition: relative;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-color-upload-placeholder-loader: hsl(0, 0%, 70%);\n\t--ck-upload-placeholder-loader-size: 32px;\n\t--ck-upload-placeholder-image-aspect-ratio: 2.8;\n}\n\n.ck .ck-image-upload-placeholder {\n\t/* We need to control the full width of the SVG gray background. */\n\twidth: 100%;\n\tmargin: 0;\n\n\t&.image-inline {\n\t\twidth: calc( 2 * var(--ck-upload-placeholder-loader-size) * var(--ck-upload-placeholder-image-aspect-ratio) );\n\t}\n\n\t& img {\n\t\t/*\n\t\t * This is an arbitrary aspect for a 1x1 px GIF to display to the user. Not too tall, not too short.\n\t\t * There's nothing special about this number except that it should make the image placeholder look like\n\t\t * a real image during this short period after the upload started and before the image was read from the\n\t\t * file system (and a rich preview was loaded).\n\t\t */\n\t\taspect-ratio: var(--ck-upload-placeholder-image-aspect-ratio);\n\t}\n}\n\n.ck .ck-upload-placeholder-loader {\n\twidth: 100%;\n\theight: 100%;\n\n\t&::before {\n\t\twidth: var(--ck-upload-placeholder-loader-size);\n\t\theight: var(--ck-upload-placeholder-loader-size);\n\t\tborder-radius: 50%;\n\t\tborder-top: 3px solid var(--ck-color-upload-placeholder-loader);\n\t\tborder-right: 2px solid transparent;\n\t\tanimation: ck-upload-placeholder-loader 1s linear infinite;\n\t}\n}\n\n@keyframes ck-upload-placeholder-loader {\n\tto {\n\t\ttransform: rotate( 360deg );\n\t}\n}\n"],sourceRoot:""}]);const a=s},1173:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-image-custom-resize-form{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-image-custom-resize-form .ck-labeled-field-view{display:inline-block}.ck.ck-image-custom-resize-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-image-custom-resize-form{flex-wrap:wrap}.ck.ck-image-custom-resize-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-image-custom-resize-form .ck-button{flex-basis:50%}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imagecustomresizeform.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css"],names:[],mappings:"AAOA,gCAIC,sBAAuB,CAHvB,YAAa,CACb,kBAAmB,CACnB,gBAsBD,CAnBC,uDACC,oBACD,CAEA,0CACC,YACD,CCbA,oCDCD,gCAeE,cAUF,CARE,uDACC,eACD,CAEA,2CACC,cACD,CCtBD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-image-custom-resize-form {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\talign-items: flex-start;\n\n\t& .ck-labeled-field-view {\n\t\tdisplay: inline-block;\n\t}\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]);const a=s},1214:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-menu-bar-menu-item-min-width:18em}.ck.ck-menu-bar__menu .ck.ck-menu-bar__menu__item{min-width:var(--ck-menu-bar-menu-item-min-width)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenulistitem.css"],names:[],mappings:"AAKA,MACC,sCACD,CAEA,kDACC,gDACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-menu-bar-menu-item-min-width: 18em;\n}\n\n.ck.ck-menu-bar__menu .ck.ck-menu-bar__menu__item {\n\tmin-width: var(--ck-menu-bar-menu-item-min-width);\n}\n"],sourceRoot:""}]);const a=s},1216:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":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);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);color:var(--ck-color-resizer-tooltip-text);display:block;font-size:var(--ck-font-size-tiny);height:var(--ck-resizer-tooltip-height);line-height:var(--ck-resizer-tooltip-height);padding:0 var(--ck-spacing-small)}.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{left:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{right:var(--ck-resizer-tooltip-offset);top: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{left:50%;top:calc(var(--ck-resizer-tooltip-height)*-1);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-color:transparent;outline-style:solid;outline-width:var(--ck-widget-outline-thickness);transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}@media (prefers-reduced-motion:reduce){.ck .ck-widget{transition:none}}.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{box-shadow:var(--ck-inner-shadow),0 0}@media (forced-colors:none){.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{background-color:var(--ck-color-widget-editable-focus-background)}}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused:not(td,th),.ck .ck-editor__nested-editable:focus:not(td,th){border:var(--ck-focus-ring);outline:none}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{background-color:transparent;border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;box-sizing:border-box;left:calc(0px - var(--ck-widget-outline-thickness));opacity:0;padding:4px;top:0;transform:translateY(-100%);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)}@media (prefers-reduced-motion:reduce){.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{transition:none}}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{color:var(--ck-color-widget-drag-handler-icon-color);height:var(--ck-widget-handler-icon-size);width:var(--ck-widget-handler-icon-size)}.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)}@media (prefers-reduced-motion:reduce){.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{transition:none}}.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{background-color:var(--ck-color-widget-hover-border);opacity:1}.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{background-color:var(--ck-color-focus-border);opacity:1}.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:hover>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle:hover,.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{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-widget/theme/widget.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widget.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css"],names:[],mappings:"AAKA,MACC,+CAAgD,CAChD,6CAAsD,CACtD,uCAAgD,CAEhD,kDAAmD,CACnD,gCAAiC,CACjC,kEACD,CAOA,8DAEC,iBAqBD,CAnBC,4EACC,iBAOD,CALC,qFAGC,aACD,CASD,iLACC,kBACD,CAGD,kBACC,qDAAsD,CAEtD,qDAAsD,CACtD,6CAA8C,CAF9C,0CAA2C,CAI3C,aAAc,CADd,kCAAmC,CAGnC,uCAAwC,CACxC,4CAA6C,CAF7C,iCAsCD,CAlCC,8NAKC,iBACD,CAEA,0CAEC,qCAAsC,CADtC,oCAED,CAEA,2CAEC,sCAAuC,CADvC,oCAED,CAEA,8CACC,uCAAwC,CACxC,sCACD,CAEA,6CACC,uCAAwC,CACxC,qCACD,CAGA,8CAEC,QAAS,CADT,6CAAgD,CAEhD,yBACD,CChFD,MACC,iCAAkC,CAClC,kCAAmC,CACnC,4CAA6C,CAC7C,wCAAyC,CAEzC,wCAAiD,CACjD,sCAAkD,CAClD,2EAA4E,CAC5E,yEACD,CAEA,eAGC,yBAA0B,CAD1B,mBAAoB,CADpB,gDAAiD,CAGjD,6GAcD,CAZC,uCAND,eAOE,eAWF,CAVC,CAEA,0EAEC,6EACD,CAEA,qBACC,iDACD,CAGD,gCACC,4BAoBD,CAhBC,yGCrCA,qCDoDA,CE/CA,4BACC,yGFmCC,iEEjCD,CACD,CFwCC,+HG/CD,2BAA2B,CAD3B,YHkDC,CAKD,4EAKC,4BAA6B,CAa7B,iEAAkE,CAhBlE,qBAAsB,CAoBtB,mDAAoD,CAhBpD,SAAU,CALV,WAAY,CAsBZ,KAAM,CAFN,2BAA4B,CAT5B,6SAwCD,CA3BC,uCAzBD,4EA0BE,eA0BF,CAzBC,CAEA,qFAIC,oDAAqD,CADrD,yCAA0C,CAD1C,wCAeD,CAVC,kHACC,SAAU,CAGV,+DAKD,CAHC,uCAND,kHAOE,eAEF,CADC,CAKF,wHACC,SACD,CAID,kFAEC,oDAAqD,CADrD,SAED,CAKC,oMAEC,6CAA8C,CAD9C,SAOD,CAHC,gRACC,SACD,CAOH,qFACC,SAAU,CACV,oDACD,CAGA,gDAEC,eAkBD,CAhBC,yEAOC,iCACD,CAGC,gOAEC,gDACD,CAOD,wIAEC,mDAQD,CALE,ghBAEC,gDACD,CAKH,yKAOC,yDACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-color-resizer: var(--ck-color-focus-border);\n\t--ck-color-resizer-tooltip-background: hsl(0, 0%, 15%);\n\t--ck-color-resizer-tooltip-text: hsl(0, 0%, 95%);\n\n\t--ck-resizer-border-radius: var(--ck-border-radius);\n\t--ck-resizer-tooltip-offset: 10px;\n\t--ck-resizer-tooltip-height: calc(var(--ck-spacing-small) * 2 + 10px);\n}\n\n.ck .ck-widget {\n\t/* This is neccessary for type around UI to be positioned properly. */\n\tposition: relative;\n}\n\n.ck .ck-widget.ck-widget_with-selection-handle {\n\t/* Make the widget wrapper a relative positioning container for the drag handle. */\n\tposition: relative;\n\n\t& .ck-widget__selection-handle {\n\t\tposition: absolute;\n\n\t\t& .ck-icon {\n\t\t\t/* Make sure the icon in not a subject to font-size or line-height to avoid\n\t\t\tunnecessary spacing around it. */\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\n\t/* Show the selection handle on mouse hover over the widget, but not for nested widgets. */\n\t&:hover > .ck-widget__selection-handle {\n\t\tvisibility: visible;\n\t}\n\n\t/* Show the selection handle when the widget is selected, but not for nested widgets. */\n\t&.ck-widget_selected > .ck-widget__selection-handle {\n\t\tvisibility: visible;\n\t}\n}\n\n.ck .ck-size-view {\n\tbackground: var(--ck-color-resizer-tooltip-background);\n\tcolor: var(--ck-color-resizer-tooltip-text);\n\tborder: 1px solid var(--ck-color-resizer-tooltip-text);\n\tborder-radius: var(--ck-resizer-border-radius);\n\tfont-size: var(--ck-font-size-tiny);\n\tdisplay: block;\n\tpadding: 0 var(--ck-spacing-small);\n\theight: var(--ck-resizer-tooltip-height);\n\tline-height: var(--ck-resizer-tooltip-height);\n\n\t&.ck-orientation-top-left,\n\t&.ck-orientation-top-right,\n\t&.ck-orientation-bottom-right,\n\t&.ck-orientation-bottom-left,\n\t&.ck-orientation-above-center {\n\t\tposition: absolute;\n\t}\n\n\t&.ck-orientation-top-left {\n\t\ttop: var(--ck-resizer-tooltip-offset);\n\t\tleft: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t&.ck-orientation-top-right {\n\t\ttop: var(--ck-resizer-tooltip-offset);\n\t\tright: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t&.ck-orientation-bottom-right {\n\t\tbottom: var(--ck-resizer-tooltip-offset);\n\t\tright: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t&.ck-orientation-bottom-left {\n\t\tbottom: var(--ck-resizer-tooltip-offset);\n\t\tleft: var(--ck-resizer-tooltip-offset);\n\t}\n\n\t/* Class applied if the widget is too small to contain the size label */\n\t&.ck-orientation-above-center {\n\t\ttop: calc(var(--ck-resizer-tooltip-height) * -1);\n\t\tleft: 50%;\n\t\ttransform: translate(-50%);\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../mixins/_focus.css";\n@import "../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\n\n:root {\n\t--ck-widget-outline-thickness: 3px;\n\t--ck-widget-handler-icon-size: 16px;\n\t--ck-widget-handler-animation-duration: 200ms;\n\t--ck-widget-handler-animation-curve: ease;\n\n\t--ck-color-widget-blurred-border: hsl(0, 0%, 87%);\n\t--ck-color-widget-hover-border: hsl(43, 100%, 62%);\n\t--ck-color-widget-editable-focus-background: var(--ck-color-base-background);\n\t--ck-color-widget-drag-handler-icon-color: var(--ck-color-base-background);\n}\n\n.ck .ck-widget {\n\toutline-width: var(--ck-widget-outline-thickness);\n\toutline-style: solid;\n\toutline-color: transparent;\n\ttransition: outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: none;\n\t}\n\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border);\n\t}\n\n\t&:hover {\n\t\toutline-color: var(--ck-color-widget-hover-border);\n\t}\n}\n\n.ck .ck-editor__nested-editable {\n\tborder: 1px solid transparent;\n\n\t/* The :focus style is applied before .ck-editor__nested-editable_focused class is rendered in the view.\n\tThese styles show a different border for a blink of an eye, so `:focus` need to have same styles applied. */\n\t&.ck-editor__nested-editable_focused,\n\t&:focus {\n\t\t@mixin ck-box-shadow var(--ck-inner-shadow);\n\t\t@mixin ck-media-default-colors {\n\t\t\tbackground-color: var(--ck-color-widget-editable-focus-background);\n\t\t}\n\n\t\t/**\n\t\t * Focus border should not be applied to table cells because it overrides the default table cell border color.\n\t\t * In other words - in some scenarios, the part of the table cell border has focus color style, which is not expected behavior\n\t\t * because it should be the same as the table cell border color.\n\t\t */\n\t\t&:not(td, th) {\n\t\t\t@mixin ck-focus-ring;\n\t\t}\n\t}\n}\n\n.ck .ck-widget.ck-widget_with-selection-handle {\n\t& .ck-widget__selection-handle {\n\t\tpadding: 4px;\n\t\tbox-sizing: border-box;\n\n\t\t/* Background and opacity will be animated as the handler shows up or the widget gets selected. */\n\t\tbackground-color: transparent;\n\t\topacity: 0;\n\n\t\t/* Transition:\n\t\t * background-color for the .ck-widget_selected state change,\n\t\t * visibility for hiding the handler,\n\t\t * opacity for the proper look of the icon when the handler disappears. */\n\t\ttransition:\n\t\t\tbackground-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\n\t\t\tvisibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\n\t\t\topacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\n\n\t\t/* Make only top corners round. */\n\t\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\n\n\t\t/* Place the drag handler outside the widget wrapper. */\n\t\ttransform: translateY(-100%);\n\t\tleft: calc(0px - var(--ck-widget-outline-thickness));\n\t\ttop: 0;\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\ttransition: none;\n\t\t}\n\n\t\t& .ck-icon {\n\t\t\t/* Make sure the dimensions of the icon are independent of the fon-size of the content. */\n\t\t\twidth: var(--ck-widget-handler-icon-size);\n\t\t\theight: var(--ck-widget-handler-icon-size);\n\t\t\tcolor: var(--ck-color-widget-drag-handler-icon-color);\n\n\t\t\t/* The "selected" part of the icon is invisible by default */\n\t\t\t& .ck-icon__selected-indicator {\n\t\t\t\topacity: 0;\n\n\t\t\t\t/* Note: The animation is longer on purpose. Simply feels better. */\n\t\t\t\ttransition: opacity 300ms var(--ck-widget-handler-animation-curve);\n\n\t\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\t\ttransition: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* Advertise using the look of the icon that once clicked the handler, the widget will be selected. */\n\t\t&:hover .ck-icon .ck-icon__selected-indicator {\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t/* Show the selection handler on mouse hover over the widget, but not for nested widgets. */\n\t&:hover > .ck-widget__selection-handle {\n\t\topacity: 1;\n\t\tbackground-color: var(--ck-color-widget-hover-border);\n\t}\n\n\t/* Show the selection handler when the widget is selected, but not for nested widgets. */\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\t& > .ck-widget__selection-handle {\n\t\t\topacity: 1;\n\t\t\tbackground-color: var(--ck-color-focus-border);\n\n\t\t\t/* When the widget is selected, notify the user using the proper look of the icon. */\n\t\t\t& .ck-icon .ck-icon__selected-indicator {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* In a RTL environment, align the selection handler to the right side of the widget */\n/* stylelint-disable-next-line no-descending-specificity */\n.ck[dir="rtl"] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle {\n\tleft: auto;\n\tright: calc(0px - var(--ck-widget-outline-thickness));\n}\n\n/* https://github.com/ckeditor/ckeditor5/issues/6415 */\n.ck.ck-editor__editable.ck-read-only .ck-widget {\n\t/* Prevent the :hover outline from showing up because of the used outline-color transition. */\n\ttransition: none;\n\n\t&:not(.ck-widget_selected) {\n\t\t/* Disable visual effects of hover/active widget when CKEditor is in readOnly mode.\n\t\t * See: https://github.com/ckeditor/ckeditor5/issues/1261\n\t\t *\n\t\t * Leave the unit because this custom property is used in calc() by other features.\n\t\t * See: https://github.com/ckeditor/ckeditor5/issues/6775\n\t\t */\n\t\t--ck-widget-outline-thickness: 0px;\n\t}\n\n\t&.ck-widget_with-selection-handle {\n\t\t& .ck-widget__selection-handle,\n\t\t& .ck-widget__selection-handle:hover {\n\t\t\tbackground: var(--ck-color-widget-blurred-border);\n\t\t}\n\t}\n}\n\n/* Style the widget when it\'s selected but the editable it belongs to lost focus. */\n/* stylelint-disable-next-line no-descending-specificity */\n.ck.ck-editor__editable.ck-blurred .ck-widget {\n\t&.ck-widget_selected,\n\t&.ck-widget_selected:hover {\n\t\toutline-color: var(--ck-color-widget-blurred-border);\n\n\t\t&.ck-widget_with-selection-handle {\n\t\t\t& > .ck-widget__selection-handle,\n\t\t\t& > .ck-widget__selection-handle:hover {\n\t\t\t\tbackground: var(--ck-color-widget-blurred-border);\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck.ck-editor__editable > .ck-widget.ck-widget_with-selection-handle:first-child,\n.ck.ck-editor__editable blockquote > .ck-widget.ck-widget_with-selection-handle:first-child {\n\t/* Do not crop selection handler if a widget is a first-child in the blockquote or in the root editable.\n\tIn fact, anything with overflow: hidden.\n\thttps://github.com/ckeditor/ckeditor5-block-quote/issues/28\n\thttps://github.com/ckeditor/ckeditor5-widget/issues/44\n\thttps://github.com/ckeditor/ckeditor5-widget/issues/66 */\n\tmargin-top: calc(1em + var(--ck-widget-handler-icon-size));\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-media-forced-colors {\n\t@media (forced-colors: active) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n\n@define-mixin ck-media-default-colors {\n\t@media (forced-colors: none) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n"],sourceRoot:""}]);const a=s},1230:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,'.ck-image-upload-complete-icon{border-radius:50%;display:block;position:absolute;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);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{animation-delay:0ms,3s;animation-duration:.5s,.5s;animation-fill-mode:forwards,forwards;animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;background:var(--ck-color-image-upload-icon-background);font-size:calc(1px*var(--ck-image-upload-icon-size));height:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size));opacity:0;overflow:hidden;width:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size))}.ck-image-upload-complete-icon:after{animation-delay:.5s;animation-duration:.5s;animation-fill-mode:forwards;animation-name:ck-upload-complete-icon-check;border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);box-sizing:border-box;height:0;left:25%;opacity:0;top:50%;transform:scaleX(-1) rotate(135deg);transform-origin:left top;width:0}@media (prefers-reduced-motion:reduce){.ck-image-upload-complete-icon{animation-duration:0ms}.ck-image-upload-complete-icon:after{animation:none;height:.45em;opacity:1;width:.3em}}@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%{height:0;opacity:1;width:0}33%{height:0;width:.3em}to{height:.45em;opacity:1;width:.3em}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadicon.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadicon.css"],names:[],mappings:"AAKA,+BAUC,iBAAkB,CATlB,aAAc,CACd,iBAAkB,CAOlB,sCAAwC,CADxC,oCAAsC,CAGtC,SAMD,CAJC,qCACC,UAAW,CACX,iBACD,CChBD,MACC,iCAA8C,CAC9C,+CAA4D,CAG5D,8BAA+B,CAC/B,gCAAiC,CACjC,4DACD,CAEA,+BAWC,sBAA4B,CAN5B,0BAAgC,CADhC,qCAAuC,CADvC,wEAA0E,CAD1E,uDAAwD,CAMxD,oDAAuD,CAWvD,oFAAuF,CAlBvF,SAAU,CAgBV,eAAgB,CAChB,mFAqCD,CAjCC,qCAgBC,mBAAsB,CADtB,sBAAyB,CAEzB,4BAA6B,CAH7B,4CAA6C,CAF7C,sFAAuF,CADvF,oFAAqF,CASrF,qBAAsB,CAdtB,QAAS,CAJT,QAAS,CAGT,SAAU,CADV,OAAQ,CAKR,mCAAoC,CACpC,yBAA0B,CAH1B,OAcD,CAEA,uCA7CD,+BA8CE,sBASF,CAPE,qCACC,cAAe,CAGf,YAAc,CAFd,SAAU,CACV,UAED,CACD,CAGD,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,yCACC,GAGC,QAAS,CAFT,SAAU,CACV,OAED,CACA,IAEC,QAAS,CADT,UAED,CACA,GAGC,YAAc,CAFd,SAAU,CACV,UAED,CACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck-image-upload-complete-icon {\n\tdisplay: block;\n\tposition: absolute;\n\n\t/*\n\t * Smaller images should have the icon closer to the border.\n\t * Match the icon position with the linked image indicator brought by the link image feature.\n\t */\n\ttop: min(var(--ck-spacing-medium), 6%);\n\tright: min(var(--ck-spacing-medium), 6%);\n\tborder-radius: 50%;\n\tz-index: 1;\n\n\t&::after {\n\t\tcontent: "";\n\t\tposition: absolute;\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-color-image-upload-icon: hsl(0, 0%, 100%);\n\t--ck-color-image-upload-icon-background: hsl(120, 100%, 27%);\n\n\t/* Match the icon size with the linked image indicator brought by the link image feature. */\n\t--ck-image-upload-icon-size: 20;\n\t--ck-image-upload-icon-width: 2px;\n\t--ck-image-upload-icon-is-visible: clamp(0px, 100% - 50px, 1px);\n}\n\n.ck-image-upload-complete-icon {\n\topacity: 0;\n\tbackground: var(--ck-color-image-upload-icon-background);\n\tanimation-name: ck-upload-complete-icon-show, ck-upload-complete-icon-hide;\n\tanimation-fill-mode: forwards, forwards;\n\tanimation-duration: 500ms, 500ms;\n\n\t/* To make animation scalable. */\n\tfont-size: calc(1px * var(--ck-image-upload-icon-size));\n\n\t/* Hide completed upload icon after 3 seconds. */\n\tanimation-delay: 0ms, 3000ms;\n\n\t/*\n\t * Use CSS math to simulate container queries.\n\t * https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\n\t */\n\toverflow: hidden;\n\twidth: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\n\theight: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\n\n\t/* This is check icon element made from border-width mixed with animations. */\n\t&::after {\n\t\t/* Because of border transformation we need to "hard code" left position. */\n\t\tleft: 25%;\n\n\t\ttop: 50%;\n\t\topacity: 0;\n\t\theight: 0;\n\t\twidth: 0;\n\n\t\ttransform: scaleX(-1) rotate(135deg);\n\t\ttransform-origin: left top;\n\t\tborder-top: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\n\t\tborder-right: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\n\n\t\tanimation-name: ck-upload-complete-icon-check;\n\t\tanimation-duration: 500ms;\n\t\tanimation-delay: 500ms;\n\t\tanimation-fill-mode: forwards;\n\n\t\t/* #1095. While reset is not providing proper box-sizing for pseudoelements, we need to handle it. */\n\t\tbox-sizing: border-box;\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\tanimation-duration: 0ms;\n\n\t\t&::after {\n\t\t\tanimation: none;\n\t\t\topacity: 1;\n\t\t\twidth: 0.3em;\n\t\t\theight: 0.45em;\n\t\t}\n\t}\n}\n\n@keyframes ck-upload-complete-icon-show {\n\tfrom {\n\t\topacity: 0;\n\t}\n\n\tto {\n\t\topacity: 1;\n\t}\n}\n\n@keyframes ck-upload-complete-icon-hide {\n\tfrom {\n\t\topacity: 1;\n\t}\n\n\tto {\n\t\topacity: 0;\n\t}\n}\n\n@keyframes ck-upload-complete-icon-check {\n\t0% {\n\t\topacity: 1;\n\t\twidth: 0;\n\t\theight: 0;\n\t}\n\t33% {\n\t\twidth: 0.3em;\n\t\theight: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t\twidth: 0.3em;\n\t\theight: 0.45em;\n\t}\n}\n'],sourceRoot:""}]);const a=s},1330:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-list-styles-list{display:grid}:root{--ck-list-style-button-size:44px}.ck.ck-list-styles-list{column-gap:var(--ck-spacing-medium);grid-template-columns:repeat(3,auto);padding:var(--ck-spacing-large);row-gap:var(--ck-spacing-medium)}.ck.ck-list-styles-list .ck-button{box-sizing:content-box;margin:0;padding:0}.ck.ck-list-styles-list .ck-button,.ck.ck-list-styles-list .ck-button .ck-icon{height:var(--ck-list-style-button-size);width:var(--ck-list-style-button-size)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-list/theme/liststyles.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-list/liststyles.css"],names:[],mappings:"AAKA,wBACC,YACD,CCFA,MACC,gCACD,CAEA,wBAGC,mCAAoC,CAFpC,oCAAwC,CAGxC,+BAAgC,CAFhC,gCA4BD,CAxBC,mCAiBC,sBAAuB,CAPvB,QAAS,CANT,SAmBD,CAJC,+EAhBA,uCAAwC,CADxC,sCAoBA",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-list-styles-list {\n\tdisplay: grid;\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-list-style-button-size: 44px;\n}\n\n.ck.ck-list-styles-list {\n\tgrid-template-columns: repeat( 3, auto );\n\trow-gap: var(--ck-spacing-medium);\n\tcolumn-gap: var(--ck-spacing-medium);\n\tpadding: var(--ck-spacing-large);\n\n\t& .ck-button {\n\t\t/* Make the button look like a thumbnail (the icon "takes it all"). */\n\t\twidth: var(--ck-list-style-button-size);\n\t\theight: var(--ck-list-style-button-size);\n\t\tpadding: 0;\n\n\t\t/*\n\t\t * Buttons are aligned by the grid so disable default button margins to not collide with the\n\t\t * gaps in the grid.\n\t\t */\n\t\tmargin: 0;\n\n\t\t/*\n\t\t * Make sure the button border (which is displayed on focus, BTW) does not steal pixels\n\t\t * from the button dimensions and, as a result, decrease the size of the icon\n\t\t * (which becomes blurry as it scales down).\n\t\t */\n\t\tbox-sizing: content-box;\n\n\t\t& .ck-icon {\n\t\t\twidth: var(--ck-list-style-button-size);\n\t\t\theight: var(--ck-list-style-button-size);\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},1354:e=>{"use strict";e.exports=function(e){var t=e[1],o=e[3];if(!o)return t;if("function"==typeof btoa){var n=btoa(unescape(encodeURIComponent(JSON.stringify(o)))),i="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(n),r="/*# ".concat(i," */");return[t].concat([r]).join("\n")}return[t].join("\n")}},1478:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-color-mention-background:rgba(153,0,48,.1);--ck-color-mention-text:#990030}.ck-content .mention{background:var(--ck-color-mention-background);color:var(--ck-color-mention-text)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-mention/mention.css"],names:[],mappings:"AAKA,MACC,+CAAwD,CACxD,+BACD,CAEA,qBACC,6CAA8C,CAC9C,kCACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-color-mention-background: hsla(341, 100%, 30%, 0.1);\n\t--ck-color-mention-text: hsl(341, 100%, 30%);\n}\n\n.ck-content .mention {\n\tbackground: var(--ck-color-mention-background);\n\tcolor: var(--ck-color-mention-text);\n}\n"],sourceRoot:""}]);const a=s},1501:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck-content blockquote{border-left:5px solid #ccc;font-style:italic;margin-left:0;margin-right:0;overflow:hidden;padding-left:1.5em;padding-right:1.5em}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-block-quote/theme/blockquote.css"],names:[],mappings:"AAKA,uBAWC,0BAAsC,CADtC,iBAAkB,CAFlB,aAAc,CACd,cAAe,CAPf,eAAgB,CAIhB,kBAAmB,CADnB,mBAOD,CAEA,gCACC,aAAc,CACd,2BACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck-content blockquote {\n\t/* See #12 */\n\toverflow: hidden;\n\n\t/* https://github.com/ckeditor/ckeditor5-block-quote/issues/15 */\n\tpadding-right: 1.5em;\n\tpadding-left: 1.5em;\n\n\tmargin-left: 0;\n\tmargin-right: 0;\n\tfont-style: italic;\n\tborder-left: solid 5px hsl(0, 0%, 80%);\n}\n\n.ck-content[dir="rtl"] blockquote {\n\tborder-left: 0;\n\tborder-right: solid 5px hsl(0, 0%, 80%);\n}\n'],sourceRoot:""}]);const a=s},1545:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-image-insert-url{padding:var(--ck-spacing-large) var(--ck-spacing-large) 0;width:400px}.ck.ck-image-insert-url .ck-image-insert-url__action-row{display:grid;grid-template-columns:repeat(2,1fr)}:root{--ck-image-insert-insert-by-url-width:250px}.ck.ck-image-insert-url{--ck-input-width:100%}.ck.ck-image-insert-url .ck-image-insert-url__action-row{grid-column-gap:var(--ck-spacing-large);margin-top:var(--ck-spacing-large)}.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button-cancel,.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button-save{justify-content:center;min-width:auto}.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}.ck.ck-image-insert-form>.ck.ck-button{display:block;width:100%}[dir=ltr] .ck.ck-image-insert-form>.ck.ck-button{text-align:left}[dir=rtl] .ck.ck-image-insert-form>.ck.ck-button{text-align:right}.ck.ck-image-insert-form>.ck.ck-collapsible{min-width:var(--ck-image-insert-insert-by-url-width)}.ck.ck-image-insert-form>.ck.ck-collapsible:not(:first-child){border-top:1px solid var(--ck-color-base-border)}.ck.ck-image-insert-form>.ck.ck-collapsible:not(:last-child){border-bottom:1px solid var(--ck-color-base-border)}.ck.ck-image-insert-form>.ck.ck-image-insert-url{min-width:var(--ck-image-insert-insert-by-url-width);padding:var(--ck-spacing-large)}.ck.ck-image-insert-form:focus{outline:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageinsert.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageinsert.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AAKA,wBAEC,yDAA0D,CAD1D,WAOD,CAJC,yDACC,YAAa,CACb,mCACD,CCLD,MACC,2CACD,CAEA,wBACC,qBAgBD,CAdC,yDACC,uCAAwC,CACxC,kCAWD,CATC,oJAEC,sBAAuB,CACvB,cACD,CAEA,sFACC,0BACD,CAKD,uCACC,aAAc,CACd,UASD,CCpCA,iDD8BE,eC5BF,CAFA,iDDkCE,gBChCF,CDoCA,4CASC,oDACD,CATC,8DACC,gDACD,CAEA,6DACC,mDACD,CAMD,iDACC,oDAAqD,CACrD,+BACD,CAEA,+BACC,YACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-image-insert-url {\n\twidth: 400px;\n\tpadding: var(--ck-spacing-large) var(--ck-spacing-large) 0;\n\n\t& .ck-image-insert-url__action-row {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: repeat(2, 1fr);\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n:root {\n\t--ck-image-insert-insert-by-url-width: 250px;\n}\n\n.ck.ck-image-insert-url {\n\t--ck-input-width: 100%;\n\n\t& .ck-image-insert-url__action-row {\n\t\tgrid-column-gap: var(--ck-spacing-large);\n\t\tmargin-top: var(--ck-spacing-large);\n\n\t\t& .ck-button-save,\n\t\t& .ck-button-cancel {\n\t\t\tjustify-content: center;\n\t\t\tmin-width: auto;\n\t\t}\n\n\t\t& .ck-button .ck-button__label {\n\t\t\tcolor: var(--ck-color-text);\n\t\t}\n\t}\n}\n\n.ck.ck-image-insert-form {\n\t& > .ck.ck-button {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\n\t\t@mixin ck-dir ltr {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttext-align: right;\n\t\t}\n\t}\n\n\t& > .ck.ck-collapsible {\n\t\t&:not(:first-child) {\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\t}\n\n\t\t&:not(:last-child) {\n\t\t\tborder-bottom: 1px solid var(--ck-color-base-border);\n\t\t}\n\n\t\tmin-width: var(--ck-image-insert-insert-by-url-width);\n\t}\n\n\t/* This is the case when there are no other integrations configured than insert by URL */\n\t& > .ck.ck-image-insert-url {\n\t\tmin-width: var(--ck-image-insert-insert-by-url-width);\n\t\tpadding: var(--ck-spacing-large);\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},1546:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-input-width:18em;--ck-input-text-width:var(--ck-input-width)}.ck.ck-input{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);border-radius:0;min-height:var(--ck-ui-component-min-height);min-width:var(--ck-input-width);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}.ck-rounded-corners .ck.ck-input,.ck.ck-input.ck-rounded-corners{border-radius:var(--ck-border-radius)}@media (prefers-reduced-motion:reduce){.ck.ck-input{transition:none}}.ck.ck-input:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-input[readonly]{background:var(--ck-color-input-disabled-background);border:1px solid var(--ck-color-input-disabled-border);color:var(--ck-color-input-disabled-text)}.ck.ck-input[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input.ck-error{animation:ck-input-shake .3s ease both;border-color:var(--ck-color-input-error-border)}@media (prefers-reduced-motion:reduce){.ck.ck-input.ck-error{animation:none}}.ck.ck-input.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/input/input.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AASA,MACC,qBAAsB,CAGtB,2CACD,CAEA,aAGC,2CAA4C,CAC5C,6CAA8C,CCT9C,eAAgB,CDchB,4CAA6C,CAH7C,+BAAgC,CADhC,6DAA8D,CAO9D,4DAkCD,CCjDC,iEAEC,qCAED,CDaA,uCAdD,aAeE,eA+BF,CA9BC,CAEA,mBEvBA,2BAA2B,CCF3B,2CAA8B,CDC9B,YF2BA,CAEA,uBAEC,oDAAqD,CADrD,sDAAuD,CAEvD,yCAMD,CAJC,6BGnCD,oDHsCC,CAGD,sBAEC,sCAAuC,CADvC,+CAUD,CAPC,uCAJD,sBAKE,cAMF,CALC,CAEA,4BGjDD,iDHmDC,CAIF,0BACC,IACC,0BACD,CAEA,IACC,yBACD,CAEA,IACC,0BACD,CAEA,IACC,yBACD,CACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_focus.css";\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-input-width: 18em;\n\n\t/* Backward compatibility. */\n\t--ck-input-text-width: var(--ck-input-width);\n}\n\n.ck.ck-input {\n\t@mixin ck-rounded-corners;\n\n\tbackground: var(--ck-color-input-background);\n\tborder: 1px solid var(--ck-color-input-border);\n\tpadding: var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);\n\tmin-width: var(--ck-input-width);\n\n\t/* This is important to stay of the same height as surrounding buttons */\n\tmin-height: var(--ck-ui-component-min-height);\n\n\t/* Apply some smooth transition to the box-shadow and border. */\n\ttransition: box-shadow .1s ease-in-out, border .1s ease-in-out;\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: none;\n\t}\n\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t}\n\n\t&[readonly] {\n\t\tborder: 1px solid var(--ck-color-input-disabled-border);\n\t\tbackground: var(--ck-color-input-disabled-background);\n\t\tcolor: var(--ck-color-input-disabled-text);\n\n\t\t&:focus {\n\t\t\t/* The read-only input should have a slightly less visible shadow when focused. */\n\t\t\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\n\t\t}\n\t}\n\n\t&.ck-error {\n\t\tborder-color: var(--ck-color-input-error-border);\n\t\tanimation: ck-input-shake .3s ease both;\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\tanimation: none;\n\t\t}\n\n\t\t&:focus {\n\t\t\t@mixin ck-box-shadow var(--ck-focus-error-outer-shadow);\n\t\t}\n\t}\n}\n\n@keyframes ck-input-shake {\n\t20% {\n\t\ttransform: translateX(-2px);\n\t}\n\n\t40% {\n\t\ttransform: translateX(2px);\n\t}\n\n\t60% {\n\t\ttransform: translateX(-1px);\n\t}\n\n\t80% {\n\t\ttransform: translateX(1px);\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]);const a=s},1710:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-aria-live-announcer{left:-10000px;position:absolute;top:-10000px}.ck.ck-aria-live-region-list{list-style-type:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/arialiveannouncer/arialiveannouncer.css"],names:[],mappings:"AAKA,2BAEC,aAAc,CADd,iBAAkB,CAElB,YACD,CAEA,6BACC,oBACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-aria-live-announcer {\n\tposition: absolute;\n\tleft: -10000px;\n\ttop: -10000px;\n}\n\n.ck.ck-aria-live-region-list {\n\tlist-style-type: none;\n}\n"],sourceRoot:""}]);const a=s},1750:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-collapsible.ck-collapsible_collapsed>.ck-collapsible__children{display:none}:root{--ck-collapsible-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-collapsible>.ck.ck-button{border-radius:0;color:inherit;font-weight:700;width:100%}.ck.ck-collapsible>.ck.ck-button:focus{background:transparent}.ck.ck-collapsible>.ck.ck-button:active,.ck.ck-collapsible>.ck.ck-button:hover:not(:focus),.ck.ck-collapsible>.ck.ck-button:not(:focus){background:transparent;border-color:transparent;box-shadow:none}.ck.ck-collapsible>.ck.ck-button>.ck-icon{margin-right:var(--ck-spacing-medium);width:var(--ck-collapsible-arrow-size)}.ck.ck-collapsible>.ck-collapsible__children{padding:var(--ck-spacing-medium) var(--ck-spacing-large) var(--ck-spacing-large)}.ck.ck-collapsible.ck-collapsible_collapsed>.ck.ck-button .ck-icon{transform:rotate(-90deg)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/collapsible/collapsible.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/collapsible/collapsible.css"],names:[],mappings:"AAMC,sEACC,YACD,CCHD,MACC,yDACD,CAGC,iCAGC,eAAgB,CAChB,aAAc,CAFd,eAAiB,CADjB,UAmBD,CAdC,uCACC,sBACD,CAEA,wIACC,sBAAuB,CACvB,wBAAyB,CACzB,eACD,CAEA,0CACC,qCAAsC,CACtC,sCACD,CAGD,6CACC,gFACD,CAGC,mEACC,wBACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-collapsible.ck-collapsible_collapsed {\n\t& > .ck-collapsible__children {\n\t\tdisplay: none;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-collapsible-arrow-size: calc(0.5 * var(--ck-icon-size));\n}\n\n.ck.ck-collapsible {\n\t& > .ck.ck-button {\n\t\twidth: 100%;\n\t\tfont-weight: bold;\n\t\tborder-radius: 0;\n\t\tcolor: inherit;\n\n\t\t&:focus {\n\t\t\tbackground: transparent;\n\t\t}\n\n\t\t&:active, &:not(:focus), &:hover:not(:focus) {\n\t\t\tbackground: transparent;\n\t\t\tborder-color: transparent;\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t& > .ck-icon {\n\t\t\tmargin-right: var(--ck-spacing-medium);\n\t\t\twidth: var(--ck-collapsible-arrow-size);\n\t\t}\n\t}\n\n\t& > .ck-collapsible__children {\n\t\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large) var(--ck-spacing-large);\n\t}\n\n\t&.ck-collapsible_collapsed {\n\t\t& > .ck.ck-button .ck-icon {\n\t\t\ttransform: rotate(-90deg);\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},1806:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".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%}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/form.css"],names:[],mappings:"AAKA,YACC,mCAyBD,CAvBC,kBAEC,YACD,CAEA,8BACC,cAAe,CACf,OACD,CAEA,4BACC,cAWD,CARE,6DACC,4CACD,CAEA,mEACC,UACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-form {\n\tpadding: 0 0 var(--ck-spacing-large);\n\n\t&:focus {\n\t\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\n\t\toutline: none;\n\t}\n\n\t& .ck.ck-input-text {\n\t\tmin-width: 100%;\n\t\twidth: 0;\n\t}\n\n\t& .ck.ck-dropdown {\n\t\tmin-width: 100%;\n\n\t\t& .ck-dropdown__button {\n\t\t\t&:not(:focus) {\n\t\t\t\tborder: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\n\t\t\t& .ck-button__label {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},1911:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-list-properties.ck-list-properties_without-styles{padding:var(--ck-spacing-large)}.ck.ck-list-properties.ck-list-properties_without-styles>*{min-width:14em}.ck.ck-list-properties.ck-list-properties_without-styles>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-list-styles-list{grid-template-columns:repeat(4,auto)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible{border-top:1px solid var(--ck-color-base-border)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*{width:100%}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties .ck.ck-numbered-list-properties__start-index .ck-input{min-width:auto;width:100%}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order{background:transparent;margin-bottom:calc(var(--ck-spacing-tiny)*-1);padding-left:0;padding-right:0}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:active,.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:hover{background:none;border-color:transparent;box-shadow:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-list/listproperties.css"],names:[],mappings:"AAOC,yDACC,+BASD,CAPC,2DACC,cAKD,CAHC,6DACC,qCACD,CASD,wFACC,oCACD,CAGA,mFACC,gDAWD,CARE,+GACC,UAKD,CAHC,iHACC,qCACD,CAMJ,8EACC,cAAe,CACf,UACD,CAEA,uEACC,sBAAuB,CAGvB,6CAAgD,CAFhD,cAAe,CACf,eAQD,CALC,2JAGC,eAAgB,CADhB,wBAAyB,CADzB,eAGD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-list-properties {\n\t/* When there are no list styles and there is no collapsible. */\n\t&.ck-list-properties_without-styles {\n\t\tpadding: var(--ck-spacing-large);\n\n\t\t& > * {\n\t\t\tmin-width: 14em;\n\n\t\t\t& + * {\n\t\t\t\tmargin-top: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * When the numbered list property fields (start at, reversed) should be displayed,\n\t * more horizontal space is needed. Reconfigure the style grid to create that space.\n\t */\n\t&.ck-list-properties_with-numbered-properties {\n\t\t& > .ck-list-styles-list {\n\t\t\tgrid-template-columns: repeat( 4, auto );\n\t\t}\n\n\t\t/* When list styles are rendered and property fields are in a collapsible. */\n\t\t& > .ck-collapsible {\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\n\t\t\t& > .ck-collapsible__children {\n\t\t\t\t& > * {\n\t\t\t\t\twidth: 100%;\n\n\t\t\t\t\t& + * {\n\t\t\t\t\t\tmargin-top: var(--ck-spacing-standard);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-numbered-list-properties__start-index .ck-input {\n\t\tmin-width: auto;\n\t\twidth: 100%;\n\t}\n\n\t& .ck.ck-numbered-list-properties__reversed-order {\n\t\tbackground: transparent;\n\t\tpadding-left: 0;\n\t\tpadding-right: 0;\n\t\tmargin-bottom: calc(-1 * var(--ck-spacing-tiny));\n\n\t\t&:active, &:hover {\n\t\t\tbox-shadow: none;\n\t\t\tborder-color: transparent;\n\t\t\tbackground: none;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},1998:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-highlighted-text mark{background:var(--ck-color-highlight-background);font-size:inherit;font-weight:inherit;line-height:inherit;vertical-align:initial}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/highlightedtext/highlightedtext.css"],names:[],mappings:"AAKA,6BACC,+CAAgD,CAIhD,iBAAkB,CAFlB,mBAAoB,CACpB,mBAAoB,CAFpB,sBAID",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-highlighted-text mark {\n\tbackground: var(--ck-color-highlight-background);\n\tvertical-align: initial;\n\tfont-weight: inherit;\n\tline-height: inherit;\n\tfont-size: inherit;\n}\n"],sourceRoot:""}]);const a=s},2060:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;left:0;pointer-events:none;position:absolute;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{pointer-events:all;position:absolute}.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{background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius);height:var(--ck-resizer-size);width:var(--ck-resizer-size)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{left:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{right:var(--ck-resizer-offset);top: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)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-widget/theme/widgetresize.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widgetresize.css"],names:[],mappings:"AAKA,4BAEC,iBACD,CAEA,wBACC,YAAa,CAMb,MAAO,CAFP,mBAAoB,CAHpB,iBAAkB,CAMlB,KACD,CAGC,2EACC,aACD,CAGD,gCAIC,kBAAmB,CAHnB,iBAcD,CATC,4IAEC,kBACD,CAEA,4IAEC,kBACD,CCpCD,MACC,sBAAuB,CAGvB,yDAAiE,CACjE,6BACD,CAEA,wBACC,yCACD,CAEA,gCAGC,uCAAwC,CACxC,gDAA6D,CAC7D,6CAA8C,CAH9C,6BAA8B,CAD9B,4BAyBD,CAnBC,oEAEC,6BAA8B,CAD9B,4BAED,CAEA,qEAEC,8BAA+B,CAD/B,4BAED,CAEA,wEACC,+BAAgC,CAChC,8BACD,CAEA,uEACC,+BAAgC,CAChC,6BACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck .ck-widget_with-resizer {\n\t/* Make the widget wrapper a relative positioning container for the drag handle. */\n\tposition: relative;\n}\n\n.ck .ck-widget__resizer {\n\tdisplay: none;\n\tposition: absolute;\n\n\t/* The wrapper itself should not interfere with the pointer device, only the handles should. */\n\tpointer-events: none;\n\n\tleft: 0;\n\ttop: 0;\n}\n\n.ck-focused .ck-widget_with-resizer.ck-widget_selected {\n\t& > .ck-widget__resizer {\n\t\tdisplay: block;\n\t}\n}\n\n.ck .ck-widget__resizer__handle {\n\tposition: absolute;\n\n\t/* Resizers are the only UI elements that should interfere with a pointer device. */\n\tpointer-events: all;\n\n\t&.ck-widget__resizer__handle-top-left,\n\t&.ck-widget__resizer__handle-bottom-right {\n\t\tcursor: nwse-resize;\n\t}\n\n\t&.ck-widget__resizer__handle-top-right,\n\t&.ck-widget__resizer__handle-bottom-left {\n\t\tcursor: nesw-resize;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-resizer-size: 10px;\n\n\t/* Set the resizer with a 50% offset. */\n\t--ck-resizer-offset: calc( ( var(--ck-resizer-size) / -2 ) - 2px);\n\t--ck-resizer-border-width: 1px;\n}\n\n.ck .ck-widget__resizer {\n\toutline: 1px solid var(--ck-color-resizer);\n}\n\n.ck .ck-widget__resizer__handle {\n\twidth: var(--ck-resizer-size);\n\theight: var(--ck-resizer-size);\n\tbackground: var(--ck-color-focus-border);\n\tborder: var(--ck-resizer-border-width) solid hsl(0, 0%, 100%);\n\tborder-radius: var(--ck-resizer-border-radius);\n\n\t&.ck-widget__resizer__handle-top-left {\n\t\ttop: var(--ck-resizer-offset);\n\t\tleft: var(--ck-resizer-offset);\n\t}\n\n\t&.ck-widget__resizer__handle-top-right {\n\t\ttop: var(--ck-resizer-offset);\n\t\tright: var(--ck-resizer-offset);\n\t}\n\n\t&.ck-widget__resizer__handle-bottom-right {\n\t\tbottom: var(--ck-resizer-offset);\n\t\tright: var(--ck-resizer-offset);\n\t}\n\n\t&.ck-widget__resizer__handle-bottom-left {\n\t\tbottom: var(--ck-resizer-offset);\n\t\tleft: var(--ck-resizer-offset);\n\t}\n}\n"],sourceRoot:""}]);const a=s},2350:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-link-form{align-items:flex-start;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{min-width:var(--ck-input-width);padding:0}.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{border-radius:0;margin:0;padding:var(--ck-spacing-standard);width:50%}.ck.ck-link-form_layout-vertical>.ck-button:not(:focus){border-top:1px solid var(--ck-color-base-border)}[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:0 var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkform.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkform.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AAOA,iBAEC,sBAAuB,CADvB,YAkBD,CAfC,2BACC,YACD,CCPA,oCDCD,iBASE,cAUF,CARE,wCACC,eACD,CAEA,4BACC,cACD,CChBD,CDwBD,iCACC,aAYD,CALE,wHAEC,mCACD,CEhCF,iCAEC,+BAAgC,CADhC,SAgDD,CA7CC,wDACC,8EAMD,CAJC,uEACC,WAAY,CACZ,UACD,CAGD,4CAIC,eAAgB,CAFhB,QAAS,CADT,kCAAmC,CAEnC,SAkBD,CAfC,wDACC,gDACD,CC1BD,4GDiCE,aC/BF,CDiCE,mEACC,kDACD,CAKF,6CACC,gCAUD,CARC,wEACC,SAAU,CACV,UAKD,CAHC,8EACC,eACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-form {\n\tdisplay: flex;\n\talign-items: flex-start;\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n\n/*\n * Style link form differently when manual decorators are available.\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\n */\n.ck.ck-link-form_layout-vertical {\n\tdisplay: block;\n\n\t/*\n\t * Whether the form is in the responsive mode or not, if there are decorator buttons\n\t * keep the top margin of action buttons medium.\n\t */\n\t& .ck-button {\n\t\t&.ck-button-save,\n\t\t&.ck-button-cancel {\n\t\t\tmargin-top: var(--ck-spacing-medium);\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n/*\n * Style link form differently when manual decorators are available.\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\n */\n.ck.ck-link-form_layout-vertical {\n\tpadding: 0;\n\tmin-width: var(--ck-input-width);\n\n\t& .ck-labeled-field-view {\n\t\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small);\n\n\t\t& .ck-input-text {\n\t\t\tmin-width: 0;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t& > .ck-button {\n\t\tpadding: var(--ck-spacing-standard);\n\t\tmargin: 0;\n\t\twidth: 50%;\n\t\tborder-radius: 0;\n\n\t\t&:not(:focus) {\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\t}\n\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-left: 0;\n\n\t\t\t&:last-of-type {\n\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Using additional `.ck` class for stronger CSS specificity than `.ck.ck-link-form > :not(:first-child)`. */\n\t& .ck.ck-list {\n\t\tmargin: 0 var(--ck-spacing-large);\n\n\t\t& .ck-button.ck-switchbutton {\n\t\t\tpadding: 0;\n\t\t\twidth: 100%;\n\n\t\t\t&:hover {\n\t\t\t\tbackground: none;\n\t\t\t}\n\t\t}\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},2401:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzUuNzUgMCAwIDEtLjIxNy4yMDYgNS4yNTEgNS4yNTEgMCAwIDEtOC41MDMtNS45NTUuNy43IDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NHptNS40OTQtNS4zMzVhLjc1Ljc1IDAgMCAxLS4xMi4yNzRsLTEuMTQ3IDEuNjM5YS43NS43NSAwIDEgMS0xLjIyOC0uODZsLjg2LTEuMjNhMy43NSAzLjc1IDAgMCAwLTYuMTQ0LTQuMzAxbC0uODYgMS4yMjlhLjc1Ljc1IDAgMCAxLTEuMjI5LS44NmwxLjE0OC0xLjY0YS43NS43NSAwIDAgMSAuMjE3LS4yMDYgNS4yNTEgNS4yNTEgMCAwIDEgOC41MDMgNS45NTVtLTQuNTYzLTIuNTMyYS43NS43NSAwIDAgMSAuMTg0IDEuMDQ1bC0zLjE1NSA0LjUwNWEuNzUuNzUgMCAxIDEtMS4yMjktLjg2bDMuMTU1LTQuNTA2YS43NS43NSAwIDAgMSAxLjA0NS0uMTg0Ii8+PC9zdmc+"},2454:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".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-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-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}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/listdropdown.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAOA,6CCIC,eDqBD,CCnBC,iIAEC,qCAAsC,CDJtC,wBCMD,CDAC,mFCND,eDYC,CCVD,6MAEC,qCAAsC,CDKpC,2BAA4B,CAC5B,4BAA6B,CAF7B,wBCFH,CDQC,kFCdD,eDmBC,CCjBD,2MAEC,qCAAsC,CDYpC,wBAAyB,CACzB,yBCXH",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n\n.ck.ck-dropdown > .ck-dropdown__panel > .ck-list {\n\t/* Disabled radius of top-left border to be consistent with .dropdown__button\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t@mixin ck-rounded-corners {\n\t\tborder-top-left-radius: 0;\n\t}\n\n\t/* Make sure the button belonging to the first/last child of the list goes well with the\n\tborder radius of the entire panel. */\n\t& .ck-list__item {\n\t\t&:first-child > .ck-button {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t}\n\t\t}\n\n\t\t&:last-child > .ck-button {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-top-right-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]);const a=s},2688:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-autocomplete{position:relative}.ck.ck-autocomplete>.ck-search__results{position:absolute;z-index:var(--ck-z-panel)}.ck.ck-autocomplete>.ck-search__results.ck-search__results_n{bottom:100%}.ck.ck-autocomplete>.ck-search__results.ck-search__results_s{bottom:auto;top:100%}.ck.ck-autocomplete>.ck-search__results{background:var(--ck-color-base-background);border:1px solid var(--ck-color-dropdown-panel-border);border-radius:0;max-height:200px;min-width:auto;overflow-y:auto}.ck-rounded-corners .ck.ck-autocomplete>.ck-search__results,.ck.ck-autocomplete>.ck-search__results.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-autocomplete>.ck-search__results{box-shadow:var(--ck-drop-shadow),0 0}.ck.ck-autocomplete>.ck-search__results.ck-search__results_n{border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:-1px}.ck.ck-autocomplete>.ck-search__results.ck-search__results_s{border-top-left-radius:0;border-top-right-radius:0;margin-top:-1px}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/autocomplete/autocomplete.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/autocomplete/autocomplete.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAKA,oBACC,iBAeD,CAbC,wCACC,iBAAkB,CAClB,yBAUD,CARC,6DACC,WACD,CAEA,6DAEC,WAAY,CADZ,QAED,CCVD,wCAMC,0CAA2C,CAC3C,sDAAuD,CCLxD,eAAgB,CDEf,gBAAiB,CAIjB,cAAe,CAHf,eAoBD,CCrBA,uHAEC,qCAED,CDRA,wCEAA,oCFyBA,CAfC,6DACC,2BAA4B,CAC5B,4BAA6B,CAG7B,kBACD,CAEA,6DACC,wBAAyB,CACzB,yBAA0B,CAG1B,eACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-autocomplete {\n\tposition: relative;\n\n\t& > .ck-search__results {\n\t\tposition: absolute;\n\t\tz-index: var(--ck-z-panel);\n\n\t\t&.ck-search__results_n {\n\t\t\tbottom: 100%;\n\t\t}\n\n\t\t&.ck-search__results_s {\n\t\t\ttop: 100%;\n\t\t\tbottom: auto;\n\t\t}\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css";\n@import "@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css";\n\n.ck.ck-autocomplete {\n\t& > .ck-search__results {\n\t\t@mixin ck-rounded-corners;\n\t\t@mixin ck-drop-shadow;\n\n\t\tmax-height: 200px;\n\t\toverflow-y: auto;\n\t\tbackground: var(--ck-color-base-background);\n\t\tborder: 1px solid var(--ck-color-dropdown-panel-border);\n\t\tmin-width: auto;\n\n\t\t&.ck-search__results_n {\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\n\t\t\t/* Prevent duplicated borders between the input and the results pane. */\n\t\t\tmargin-bottom: -1px;\n\t\t}\n\n\t\t&.ck-search__results_s {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-top-right-radius: 0;\n\n\t\t\t/* Prevent duplicated borders between the input and the results pane. */\n\t\t\tmargin-top: -1px;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]);const a=s},2850:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,':root{--ck-table-selected-cell-background:rgba(158,207,250,.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{box-shadow:unset;caret-color:transparent;outline:unset;position:relative}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{background-color:var(--ck-table-selected-cell-background);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top: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}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableselection.css"],names:[],mappings:"AAKA,MACC,wDACD,CAGC,0IAKC,gBAAiB,CAFjB,uBAAwB,CACxB,aAAc,CAFd,iBAiCD,CA3BC,sJAGC,yDAA0D,CAK1D,QAAS,CAPT,UAAW,CAKX,MAAO,CAJP,mBAAoB,CAEpB,iBAAkB,CAGlB,OAAQ,CAFR,KAID,CAEA,wTAEC,4BACD,CAMA,gKACC,aAKD,CAHC,0NACC,YACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-table-selected-cell-background: hsla(208, 90%, 80%, .3);\n}\n\n.ck.ck-editor__editable .table table {\n\t& td.ck-editor__editable_selected,\n\t& th.ck-editor__editable_selected {\n\t\tposition: relative;\n\t\tcaret-color: transparent;\n\t\toutline: unset;\n\t\tbox-shadow: unset;\n\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/6446 */\n\t\t&:after {\n\t\t\tcontent: '';\n\t\t\tpointer-events: none;\n\t\t\tbackground-color: var(--ck-table-selected-cell-background);\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tbottom: 0;\n\t\t}\n\n\t\t& ::selection,\n\t\t&:focus {\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t/*\n\t\t * To reduce the amount of noise, all widgets in the table selection have no outline and no selection handle.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9491.\n\t\t */\n\t\t& .ck-widget {\n\t\t\toutline: unset;\n\n\t\t\t& > .ck-widget__selection-handle {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},2922:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{align-items:center;display:flex}[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{justify-content:flex-start}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar{display:flex;flex-direction:row;justify-content:space-around}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-cancel,.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-save{flex:1}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{width:100%}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard)}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker:not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon{margin-left:var(--ck-spacing-standard)}.ck.ck-color-selector .ck-color-grids-fragment label.ck.ck-color-grid__label{font-weight:unset}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker{padding:8px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker{height:100px;min-width:180px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation){border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue){border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius)}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue-pointer),.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation-pointer){height:15px;width:15px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar{padding:0 8px 8px}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorselector/colorselector.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorselector/colorselector.css"],names:[],mappings:"AAUE,oLAGC,kBAAmB,CADnB,YAMD,CCZD,wMDUG,0BCRH,CDeC,iFACC,YAAa,CACb,kBAAmB,CACnB,4BAMD,CAJC,oMAEC,MACD,CErBD,oLAEC,UACD,CAEA,0FAEC,2BAA4B,CAC5B,4BAA6B,CAF7B,qEAiBD,CAbC,sGACC,gDACD,CDhBF,gHCoBI,uCDlBJ,CAFA,gHCwBI,sCDtBJ,CC2BC,6EACC,iBACD,CAKA,oEACC,WAoBD,CAlBC,sFACC,YAAa,CACb,eAeD,CAbC,wGACC,iEACD,CAEA,iGACC,iEACD,CAEA,yNAGC,WAAY,CADZ,UAED,CAIF,iFACC,iBACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-color-selector {\n\t/* View fragment with color grids. */\n\t& .ck-color-grids-fragment {\n\t\t& .ck-button.ck-color-selector__remove-color,\n\t\t& .ck-button.ck-color-selector__color-picker {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tjustify-content: flex-start;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* View fragment with a color picker. */\n\t& .ck-color-picker-fragment {\n\t\t& .ck.ck-color-selector_action-bar {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row;\n\t\t\tjustify-content: space-around;\n\n\t\t\t& .ck-button-save,\n\t\t\t& .ck-button-cancel {\n\t\t\t\tflex: 1\n\t\t\t}\n\t\t}\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-color-selector {\n\t/* View fragment with color grids. */\n\t& .ck-color-grids-fragment {\n\t\t& .ck-button.ck-color-selector__remove-color,\n\t\t& .ck-button.ck-color-selector__color-picker {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t& .ck-button.ck-color-selector__color-picker {\n\t\t\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\n\t\t\t&:not(:focus) {\n\t\t\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t\t\t}\n\n\t\t\t& .ck.ck-icon {\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\tmargin-right: var(--ck-spacing-standard);\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t& label.ck.ck-color-grid__label {\n\t\t\tfont-weight: unset;\n\t\t}\n\t}\n\n\t/* View fragment with a color picker. */\n\t& .ck-color-picker-fragment {\n\t\t& .ck.ck-color-picker {\n\t\t\tpadding: 8px;\n\n\t\t\t& .hex-color-picker {\n\t\t\t\theight: 100px;\n\t\t\t\tmin-width: 180px;\n\n\t\t\t\t&::part(saturation) {\n\t\t\t\t\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\n\t\t\t\t}\n\n\t\t\t\t&::part(hue) {\n\t\t\t\t\tborder-radius: 0 0 var(--ck-border-radius) var(--ck-border-radius);\n\t\t\t\t}\n\n\t\t\t\t&::part(saturation-pointer),\n\t\t\t\t&::part(hue-pointer) {\n\t\t\t\t\twidth: 15px;\n\t\t\t\t\theight: 15px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t& .ck.ck-color-selector_action-bar {\n\t\t\tpadding: 0 8px 8px;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},2992:(e,t,o)=>{var n,i=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",n={};function i(e,t){if(!n[e]){n[e]={};for(var o=0;o>>8,o[2*n+1]=s%256}return o},decompressFromUint8Array:function(t){if(null==t)return r.decompress(t);for(var o=new Array(t.length/2),n=0,i=o.length;n>=1}else{for(i=1,n=0;n>=1}0==--u&&(u=Math.pow(2,p),p++),delete a[d]}else for(i=s[d],n=0;n>=1;0==--u&&(u=Math.pow(2,p),p++),s[c]=h++,d=String(l)}if(""!==d){if(Object.prototype.hasOwnProperty.call(a,d)){if(d.charCodeAt(0)<256){for(n=0;n>=1}else{for(i=1,n=0;n>=1}0==--u&&(u=Math.pow(2,p),p++),delete a[d]}else for(i=s[d],n=0;n>=1;0==--u&&(u=Math.pow(2,p),p++)}for(i=2,n=0;n>=1;for(;;){if(g<<=1,f==t-1){m.push(o(g));break}f++}return m.join("")},decompress:function(e){return null==e?"":""==e?null:r._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,o,n){var i,r,s,a,l,c,d,u=[],h=4,p=4,m=3,g="",f=[],b={val:n(0),position:o,index:1};for(i=0;i<3;i+=1)u[i]=i;for(s=0,l=Math.pow(2,2),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=n(b.index++)),s|=(a>0?1:0)*c,c<<=1;switch(s){case 0:for(s=0,l=Math.pow(2,8),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=n(b.index++)),s|=(a>0?1:0)*c,c<<=1;d=e(s);break;case 1:for(s=0,l=Math.pow(2,16),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=n(b.index++)),s|=(a>0?1:0)*c,c<<=1;d=e(s);break;case 2:return""}for(u[3]=d,r=d,f.push(d);;){if(b.index>t)return"";for(s=0,l=Math.pow(2,m),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=n(b.index++)),s|=(a>0?1:0)*c,c<<=1;switch(d=s){case 0:for(s=0,l=Math.pow(2,8),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=n(b.index++)),s|=(a>0?1:0)*c,c<<=1;u[p++]=e(s),d=p-1,h--;break;case 1:for(s=0,l=Math.pow(2,16),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=n(b.index++)),s|=(a>0?1:0)*c,c<<=1;u[p++]=e(s),d=p-1,h--;break;case 2:return f.join("")}if(0==h&&(h=Math.pow(2,m),m++),u[d])g=u[d];else{if(d!==p)return null;g=r+r.charAt(0)}f.push(g),u[p++]=r+g.charAt(0),r=g,0==--h&&(h=Math.pow(2,m),m++)}}};return r}();void 0===(n=function(){return i}.call(t,o,t,e))||(e.exports=n)},3038:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-color-image-caption-background:#f7f7f7;--ck-color-image-caption-text:#333;--ck-color-image-caption-highlighted-background:#fd0}.ck-content .image>figcaption{background-color:var(--ck-color-image-caption-background);caption-side:bottom;color:var(--ck-color-image-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;word-break:break-word}@media (forced-colors:active){.ck-content .image>figcaption{background-color:unset;color:unset}}@media (forced-colors:none){.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:ck-image-caption-highlight .6s ease-out}}@media (prefers-reduced-motion:reduce){.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:none}}@keyframes ck-image-caption-highlight{0%{background-color:var(--ck-color-image-caption-highlighted-background)}to{background-color:var(--ck-color-image-caption-background)}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imagecaption.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css"],names:[],mappings:"AAOA,MACC,2CAAoD,CACpD,kCAA8C,CAC9C,oDACD,CAGA,8BAKC,yDAA0D,CAH1D,mBAAoB,CAEpB,wCAAyC,CAHzC,qBAAsB,CAMtB,eAAgB,CAChB,mBAAoB,CAFpB,YAAa,CAHb,qBAYD,CAJC,8BAXD,8BAYE,sBAAuB,CACvB,WAEF,CADC,CCdA,4BACC,qEDmBA,iDCjBA,CACD,CDmBA,uCALD,qEAME,cAEF,CADC,CAGD,sCACC,GACC,qEACD,CAEA,GACC,yDACD,CACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\n\n:root {\n\t--ck-color-image-caption-background: hsl(0, 0%, 97%);\n\t--ck-color-image-caption-text: hsl(0, 0%, 20%);\n\t--ck-color-image-caption-highlighted-background: hsl(52deg 100% 50%);\n}\n\n/* Content styles */\n.ck-content .image > figcaption {\n\tdisplay: table-caption;\n\tcaption-side: bottom;\n\tword-break: break-word;\n\tcolor: var(--ck-color-image-caption-text);\n\tbackground-color: var(--ck-color-image-caption-background);\n\tpadding: .6em;\n\tfont-size: .75em;\n\toutline-offset: -1px;\n\n\t/* Improve placeholder rendering in high-constrast mode (https://github.com/ckeditor/ckeditor5/issues/14907). */\n\t@media (forced-colors: active) {\n\t\tbackground-color: unset;\n\t\tcolor: unset;\n\t}\n}\n\n/* Editing styles */\n.ck.ck-editor__editable .image > figcaption.image__caption_highlighted {\n\t@mixin ck-media-default-colors {\n\t\tanimation: ck-image-caption-highlight .6s ease-out;\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\tanimation: none;\n\t}\n}\n\n@keyframes ck-image-caption-highlight {\n\t0% {\n\t\tbackground-color: var(--ck-color-image-caption-highlighted-background);\n\t}\n\n\t100% {\n\t\tbackground-color: var(--ck-color-image-caption-background);\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-media-forced-colors {\n\t@media (forced-colors: active) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n\n@define-mixin ck-media-default-colors {\n\t@media (forced-colors: none) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},3086:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".color-picker-hex-input{width:max-content}.color-picker-hex-input .ck.ck-input{min-width:unset}.ck.ck-color-picker__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;margin:var(--ck-spacing-large) 0 0;width:unset}.ck.ck-color-picker__row .ck.ck-labeled-field-view{padding-top:unset}.ck.ck-color-picker__row .ck.ck-input-text{width:unset}.ck.ck-color-picker__row .ck-color-picker__hash-view{padding-right:var(--ck-spacing-medium);padding-top:var(--ck-spacing-tiny)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorpicker/colorpicker.css"],names:[],mappings:"AAKA,wBACC,iBAKD,CAHC,qCACC,eACD,CAGD,yBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAA8B,CAC9B,kCAAmC,CACnC,WAcD,CAZC,mDACC,iBACD,CAEA,2CACC,WACD,CAEA,qDAEC,sCAAuC,CADvC,kCAED",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.color-picker-hex-input {\n\twidth: max-content;\n\n\t& .ck.ck-input {\n\t\tmin-width: unset;\n\t}\n}\n\n.ck.ck-color-picker__row {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-between;\n\tmargin: var(--ck-spacing-large) 0 0;\n\twidth: unset;\n\n\t& .ck.ck-labeled-field-view {\n\t\tpadding-top: unset;\n\t}\n\n\t& .ck.ck-input-text {\n\t\twidth: unset;\n\t}\n\n\t& .ck-color-picker__hash-view {\n\t\tpadding-top: var(--ck-spacing-tiny);\n\t\tpadding-right: var(--ck-spacing-medium);\n\t}\n}\n"],sourceRoot:""}]);const a=s},3389:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-list-item-button{border-radius:0;min-height:unset;width:100%}[dir=ltr] .ck.ck-list-item-button{text-align:left}[dir=rtl] .ck.ck-list-item-button{text-align:right}[dir=ltr] .ck.ck-list-item-button.ck-list-item-button_toggleable{padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-list-item-button.ck-list-item-button_toggleable{padding-right:var(--ck-spacing-small)}.ck.ck-list-item-button .ck-list-item-button__check-holder{display:inline-flex;height:.9em;width:.9em}[dir=ltr] .ck.ck-list-item-button .ck-list-item-button__check-holder{margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-list-item-button .ck-list-item-button__check-holder{margin-left:var(--ck-spacing-small)}.ck.ck-list-item-button .ck-list-item-button__check-icon{height:100%}.ck.ck-button.ck-list-item-button{padding:var(--ck-spacing-tiny) calc(var(--ck-spacing-standard)*2)}.ck.ck-button.ck-list-item-button,.ck.ck-button.ck-list-item-button.ck-on{background:var(--ck-color-list-background);color:var(--ck-color-text)}[dir=ltr] .ck.ck-button.ck-list-item-button:has(.ck-list-item-button__check-holder){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-list-item-button:has(.ck-list-item-button__check-holder){padding-right:var(--ck-spacing-small)}.ck.ck-button.ck-list-item-button.ck-button.ck-on:hover,.ck.ck-button.ck-list-item-button.ck-on:hover,.ck.ck-button.ck-list-item-button.ck-on:not(.ck-list-item-button_toggleable),.ck.ck-button.ck-list-item-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-button.ck-list-item-button.ck-button.ck-on:hover:not(.ck-disabled),.ck.ck-button.ck-list-item-button.ck-on:hover:not(.ck-disabled),.ck.ck-button.ck-list-item-button.ck-on:not(.ck-list-item-button_toggleable):not(.ck-disabled),.ck.ck-button.ck-list-item-button:hover:not(.ck-disabled):not(.ck-disabled){color:var(--ck-color-text)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/listitembutton.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/listitembutton.css"],names:[],mappings:"AAOA,wBAGC,eAAgB,CAFhB,gBAAiB,CACjB,UAsCD,CCzCC,kCDOC,eCLD,CAFA,kCDWC,gBCTD,CAFA,iEDgBE,oCCdF,CAFA,iEDoBE,qCClBF,CDsBA,2DACC,mBAAoB,CAEpB,WAAY,CADZ,UAUD,CCpCA,qED8BE,oCC5BF,CAFA,qEDkCE,mCChCF,CDoCA,yDACC,WACD,CEvCD,kCACC,iEAiCD,CA/BC,0EAEC,0CAA2C,CAC3C,0BACD,CDRA,oFCYE,oCDVF,CAFA,oFCgBE,qCDdF,CCuBA,6OAIC,uDAKD,CAHC,qTACC,0BACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../mixins/_dir.css";\n\n.ck.ck-list-item-button {\n\tmin-height: unset;\n\twidth: 100%;\n\tborder-radius: 0;\n\n\t@mixin ck-dir ltr {\n\t\ttext-align: left;\n\t}\n\n\t@mixin ck-dir rtl {\n\t\ttext-align: right;\n\t}\n\n\t&.ck-list-item-button_toggleable {\n\t\t@mixin ck-dir ltr {\n\t\t\tpadding-left: var(--ck-spacing-small);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tpadding-right: var(--ck-spacing-small);\n\t\t}\n\t}\n\n\t& .ck-list-item-button__check-holder {\n\t\tdisplay: inline-flex;\n\t\twidth: .9em;\n\t\theight: .9em;\n\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-left: var(--ck-spacing-small);\n\t\t}\n\t}\n\n\t& .ck-list-item-button__check-icon {\n\t\theight: 100%;\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-button.ck-list-item-button {\n\tpadding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard));\n\n\t&,\n\t&.ck-on {\n\t\tbackground: var(--ck-color-list-background);\n\t\tcolor: var(--ck-color-text);\n\t}\n\n\t&:has(.ck-list-item-button__check-holder) {\n\t\t@mixin ck-dir ltr {\n\t\t\tpadding-left: var(--ck-spacing-small);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tpadding-right: var(--ck-spacing-small);\n\t\t}\n\t}\n\n\t/*\n\t * `.ck-on` class and background styling is overridden for `ck-button` in many places.\n\t * This is a workaround to make sure that the background is not overridden and uses similar\n\t * selector specificity as the other overrides.\n\t */\n\t&:hover:not(.ck-disabled),\n\t&.ck-button.ck-on:hover,\n\t&.ck-on:not(.ck-list-item-button_toggleable),\n\t&.ck-on:hover {\n\t\tbackground: var(--ck-color-list-button-hover-background);\n\n\t\t&:not(.ck-disabled) {\n\t\t\tcolor: var(--ck-color-text);\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},3579:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-panel) - 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{background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);box-shadow:var(--ck-drop-shadow),0 0;height:100%;min-height:15px;width: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}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/fakepanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/fakepanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAKA,mBACC,iBAAkB,CAGlB,mCACD,CAEA,uBACC,iBACD,CAEA,mCACC,SACD,CAEA,oCACC,SACD,CCfA,MACC,6CAA8C,CAC9C,2CACD,CAGA,uBAKC,2CAA4C,CAC5C,6CAA8C,CAC9C,qCAAsC,CCXtC,oCAA8B,CDc9B,WAAY,CAPZ,eAAgB,CAMhB,UAED,CAEA,mCACC,0DAA2D,CAC3D,uDACD,CAEA,oCACC,kEAAqE,CACrE,+DACD,CACA,oCACC,kEAAqE,CACrE,+DACD,CAGA,yIAGC,4CACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck .ck-fake-panel {\n\tposition: absolute;\n\n\t/* Fake panels should be placed under main balloon content. */\n\tz-index: calc(var(--ck-z-panel) - 1);\n}\n\n.ck .ck-fake-panel div {\n\tposition: absolute;\n}\n\n.ck .ck-fake-panel div:nth-child( 1 ) {\n\tz-index: 2;\n}\n\n.ck .ck-fake-panel div:nth-child( 2 ) {\n\tz-index: 1;\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-balloon-fake-panel-offset-horizontal: 6px;\n\t--ck-balloon-fake-panel-offset-vertical: 6px;\n}\n\n/* Let\'s use `.ck-balloon-panel` appearance. See: balloonpanel.css. */\n.ck .ck-fake-panel div {\n\t@mixin ck-drop-shadow;\n\n\tmin-height: 15px;\n\n\tbackground: var(--ck-color-panel-background);\n\tborder: 1px solid var(--ck-color-panel-border);\n\tborder-radius: var(--ck-border-radius);\n\n\twidth: 100%;\n\theight: 100%;\n}\n\n.ck .ck-fake-panel div:nth-child( 1 ) {\n\tmargin-left: var(--ck-balloon-fake-panel-offset-horizontal);\n\tmargin-top: var(--ck-balloon-fake-panel-offset-vertical);\n}\n\n.ck .ck-fake-panel div:nth-child( 2 ) {\n\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 2);\n\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 2);\n}\n.ck .ck-fake-panel div:nth-child( 3 ) {\n\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 3);\n\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 3);\n}\n\n/* If balloon is positioned above element, we need to move fake panel to the top. */\n.ck .ck-balloon-panel_arrow_s + .ck-fake-panel,\n.ck .ck-balloon-panel_arrow_se + .ck-fake-panel,\n.ck .ck-balloon-panel_arrow_sw + .ck-fake-panel {\n\t--ck-balloon-fake-panel-offset-vertical: -6px;\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]);const a=s},3669:(e,t,o)=>{"use strict";o.d(t,{A:()=>h});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r),a=o(4417),l=o.n(a),c=new URL(o(2401),o.b),d=s()(i()),u=l()(c);d.push([e.id,`.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{background-color:rgba(0,0,0,.4);background-image:url(${u});background-position:50%;background-repeat:no-repeat;background-size:14px;border-radius:100%;content:"";height:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size));overflow:hidden;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);width:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size))}`,"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkimage.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkimage.css"],names:[],mappings:"AASE,+FACC,aAAc,CACd,iBACD,CCPF,MAEC,sCAAuC,CACvC,oEACD,CAME,+FAUC,+BAAqC,CACrC,wDAA+3B,CAG/3B,uBAA2B,CAD3B,2BAA4B,CAD5B,oBAAqB,CAGrB,kBAAmB,CAdnB,UAAW,CAsBX,oGAAuG,CAFvG,eAAgB,CAbhB,sCAAwC,CADxC,oCAAsC,CAetC,mGAED",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-editor__editable {\n\t/* Linked image indicator */\n\t& figure.image > a,\n\t& a span.image-inline {\n\t\t&::after {\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t}\n\t}\n}\n\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t/* Match the icon size with the upload indicator brought by the image upload feature. */\n\t--ck-link-image-indicator-icon-size: 20;\n\t--ck-link-image-indicator-icon-is-visible: clamp(0px, 100% - 50px, 1px);\n}\n\n.ck.ck-editor__editable {\n\t/* Linked image indicator */\n\t& figure.image > a,\n\t& a span.image-inline {\n\t\t&::after {\n\t\t\tcontent: "";\n\n\t\t\t/*\n\t\t\t * Smaller images should have the icon closer to the border.\n\t\t\t * Match the icon position with the upload indicator brought by the image upload feature.\n\t\t\t */\n\t\t\ttop: min(var(--ck-spacing-medium), 6%);\n\t\t\tright: min(var(--ck-spacing-medium), 6%);\n\n\t\t\tbackground-color: hsla(0, 0%, 0%, .4);\n\t\t\tbackground-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+");\n\t\t\tbackground-size: 14px;\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tborder-radius: 100%;\n\n\t\t\t/*\n\t\t\t* Use CSS math to simulate container queries.\n\t\t\t* https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\n\t\t\t*/\n\t\t\toverflow: hidden;\n\t\t\twidth: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\n\t\t\theight: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\n\t\t}\n\t}\n}\n\n'],sourceRoot:""}]);const h=d},4001:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-content:baseline;flex-basis:0;flex-wrap:wrap}.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}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tableproperties.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableproperties.css"],names:[],mappings:"AAOE,mFAGC,sBAAuB,CADvB,YAAa,CADb,cAOD,CAHC,qHACC,gBACD,CCTH,6BACC,WAmBD,CAhBE,mFACC,mBAAoB,CACpB,SAYD,CAVC,kGACC,eAAgB,CAGhB,qCAKD,CAHC,uHACC,UACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-table-properties-form {\n\t& .ck-form__row {\n\t\t&.ck-table-properties-form__alignment-row {\n\t\t\tflex-wrap: wrap;\n\t\t\tflex-basis: 0;\n\t\t\talign-content: baseline;\n\n\t\t\t& .ck.ck-toolbar .ck-toolbar__items {\n\t\t\t\tflex-wrap: nowrap;\n\t\t\t}\n\t\t}\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-table-properties-form {\n\twidth: 320px;\n\n\t& .ck-form__row {\n\t\t&.ck-table-properties-form__alignment-row {\n\t\t\talign-self: flex-end;\n\t\t\tpadding: 0;\n\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\tbackground: none;\n\n\t\t\t\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\n\t\t\t\tmargin-top: var(--ck-spacing-standard);\n\n\t\t\t\t& .ck-toolbar__items > * {\n\t\t\t\t\twidth: 40px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},4106:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal));--ck-icon-font-size:.8333350694em}.ck.ck-icon{font-size:var(--ck-icon-font-size);height:var(--ck-icon-size);width:var(--ck-icon-size)}.ck.ck-icon,.ck.ck-icon *{cursor:inherit}.ck.ck-icon.ck-icon_inherit-color,.ck.ck-icon.ck-icon_inherit-color *{color:inherit}.ck.ck-icon.ck-icon_inherit-color :not([fill]){fill:currentColor}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/icon/icon.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/icon/icon.css"],names:[],mappings:"AAKA,YACC,qBACD,CCFA,MACC,0EAA6E,CAC7E,iCACD,CAEA,YAKC,kCAAmC,CAHnC,0BAA2B,CAD3B,yBA2BD,CAlBC,0BAFA,cAKA,CAMC,sEACC,aAMD,CAJC,+CAEC,iBACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-icon {\n\tvertical-align: middle;\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-icon-size: calc(var(--ck-line-height-base) * var(--ck-font-size-normal));\n\t--ck-icon-font-size: .8333350694em;\n}\n\n.ck.ck-icon {\n\twidth: var(--ck-icon-size);\n\theight: var(--ck-icon-size);\n\n\t/* Multiplied by the height of the line in "px" should give SVG "viewport" dimensions */\n\tfont-size: var(--ck-icon-font-size);\n\n\t/* Inherit cursor style (#5). */\n\tcursor: inherit;\n\n\t& * {\n\t\t/* Inherit cursor style (#5). */\n\t\tcursor: inherit;\n\t}\n\n\t/* Allows dynamic coloring of an icon by inheriting its color from the parent. */\n\t&.ck-icon_inherit-color {\n\t\tcolor: inherit;\n\n\t\t& * {\n\t\t\tcolor: inherit;\n\n\t\t\t&:not([fill]) {\n\t\t\t\t/* Needed by FF. */\n\t\t\t\tfill: currentColor;\n\t\t\t}\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},4204:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-color-selector-column-resizer-hover:var(--ck-color-base-active);--ck-table-column-resizer-width:7px;--ck-table-column-resizer-position-offset:calc(var(--ck-table-column-resizer-width)*-0.5 - 0.5px)}.ck-content .table .ck-table-resized{table-layout:fixed}.ck-content .table table{overflow:hidden}.ck-content .table td,.ck-content .table th{overflow-wrap:break-word;position:relative}.ck.ck-editor__editable .table .ck-table-column-resizer{bottom:0;cursor:col-resize;position:absolute;right:var(--ck-table-column-resizer-position-offset);top:0;user-select:none;width:var(--ck-table-column-resizer-width);z-index:var(--ck-z-default)}.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer,.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer{display:none}.ck.ck-editor__editable .table .ck-table-column-resizer:hover,.ck.ck-editor__editable .table .ck-table-column-resizer__active{background-color:var(--ck-color-selector-column-resizer-hover);bottom:-999999px;opacity:.25;top:-999999px}.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer{left:var(--ck-table-column-resizer-position-offset);right:unset}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tablecolumnresize.css"],names:[],mappings:"AAKA,MACC,oEAAqE,CACrE,mCAAoC,CAIpC,iGACD,CAEA,qCACC,kBACD,CAEA,yBACC,eACD,CAEA,4CAIC,wBAAyB,CACzB,iBACD,CAEA,wDAGC,QAAS,CAGT,iBAAkB,CALlB,iBAAkB,CAGlB,oDAAqD,CAFrD,KAAM,CAKN,gBAAiB,CAFjB,0CAA2C,CAG3C,2BACD,CAQA,qJACC,YACD,CAEA,8HAEC,8DAA+D,CAO/D,gBAAiB,CANjB,WAAa,CAKb,aAED,CAEA,iEACC,mDAAoD,CACpD,WACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-color-selector-column-resizer-hover: var(--ck-color-base-active);\n\t--ck-table-column-resizer-width: 7px;\n\n\t/* The offset used for absolute positioning of the resizer element, so that it is placed exactly above the cell border.\n\t The value is: minus half the width of the resizer decreased additionaly by the half the width of the border (0.5px). */\n\t--ck-table-column-resizer-position-offset: calc(var(--ck-table-column-resizer-width) * -0.5 - 0.5px);\n}\n\n.ck-content .table .ck-table-resized {\n\ttable-layout: fixed;\n}\n\n.ck-content .table table {\n\toverflow: hidden;\n}\n\n.ck-content .table td,\n.ck-content .table th {\n\t/* To prevent text overflowing beyond its cell when columns are resized by resize handler\n\t(https://github.com/ckeditor/ckeditor5/pull/14379#issuecomment-1589460978). */\n\toverflow-wrap: break-word;\n\tposition: relative;\n}\n\n.ck.ck-editor__editable .table .ck-table-column-resizer {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tright: var(--ck-table-column-resizer-position-offset);\n\twidth: var(--ck-table-column-resizer-width);\n\tcursor: col-resize;\n\tuser-select: none;\n\tz-index: var(--ck-z-default);\n}\n\n.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer {\n\tdisplay: none;\n}\n\n/* The resizer elements, which are extended to an extremely high height, break the drag & drop feature in Chrome. To make it work again,\n all resizers must be hidden while the table is dragged. */\n.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer {\n\tdisplay: none;\n}\n\n.ck.ck-editor__editable .table .ck-table-column-resizer:hover,\n.ck.ck-editor__editable .table .ck-table-column-resizer__active {\n\tbackground-color: var(--ck-color-selector-column-resizer-hover);\n\topacity: 0.25;\n\t/* The resizer element resides in each cell so to occupy the entire height of the table, which is unknown from a CSS point of view,\n\t it is extended to an extremely high height. Even for screens with a very high pixel density, the resizer will fulfill its role as\n\t it should, i.e. for a screen of 476 ppi the total height of the resizer will take over 350 sheets of A4 format, which is totally\n\t unrealistic height for a single table. */\n\ttop: -999999px;\n\tbottom: -999999px;\n}\n\n.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer {\n\tleft: var(--ck-table-column-resizer-position-offset);\n\tright: unset;\n}\n"],sourceRoot:""}]);const a=s},4214:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck-content img.image_resized{height:auto}.ck-content .image.image_resized{box-sizing:border-box;display:block;max-width:100%}.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}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageresize.css"],names:[],mappings:"AAMA,8BACC,WACD,CAEA,iCAQC,qBAAsB,CADtB,aAAc,CANd,cAkBD,CATC,qCAEC,UACD,CAEA,4CAEC,aACD,CAQC,sHACC,cACD,CAIF,oFACC,uCACD,CAEA,oFACC,sCACD,CAEA,oEACC,SACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/* Preserve aspect ratio of the resized image after introducing image height attribute. */\n.ck-content img.image_resized {\n\theight: auto;\n}\n\n.ck-content .image.image_resized {\n\tmax-width: 100%;\n\t/*\n\tThe `
      ` element for resized images must not use `display:table` as browsers do not support `max-width` for it well.\n\tSee https://stackoverflow.com/questions/4019604/chrome-safari-ignoring-max-width-in-table/14420691#14420691 for more.\n\tFortunately, since we control the width, there is no risk that the image will look bad.\n\t*/\n\tdisplay: block;\n\tbox-sizing: border-box;\n\n\t& img {\n\t\t/* For resized images it is the `
      ` element that determines the image width. */\n\t\twidth: 100%;\n\t}\n\n\t& > figcaption {\n\t\t/* The `
      ` element uses `display:block`, so `
      ` also has to. */\n\t\tdisplay: block;\n\t}\n}\n\n.ck.ck-editor__editable {\n\t/* The resized inline image nested in the table should respect its parent size.\n\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\n\t& td,\n\t& th {\n\t\t& .image-inline.image_resized img {\n\t\t\tmax-width: 100%;\n\t\t}\n\t}\n}\n\n[dir="ltr"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\n\tmargin-right: var(--ck-spacing-standard);\n}\n\n[dir="rtl"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\n\tmargin-left: var(--ck-spacing-standard);\n}\n\n.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label {\n\twidth: 4em;\n}\n'],sourceRoot:""}]);const a=s},4284:e=>{"use strict";var t,o=(t=[],function(e,o){return t[e]=o,t.filter(Boolean).join("\n")});function n(e,t,n,i){var r;if(n)r="";else{r="",i.supports&&(r+="@supports (".concat(i.supports,") {")),i.media&&(r+="@media ".concat(i.media," {"));var s=void 0!==i.layer;s&&(r+="@layer".concat(i.layer.length>0?" ".concat(i.layer):""," {")),r+=i.css,s&&(r+="}"),i.media&&(r+="}"),i.supports&&(r+="}")}if(e.styleSheet)e.styleSheet.cssText=o(t,r);else{var a=document.createTextNode(r),l=e.childNodes;l[t]&&e.removeChild(l[t]),l.length?e.insertBefore(a,l[t]):e.appendChild(a)}}var i={singleton:null,singletonCounter:0};e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=i.singletonCounter++,o=i.singleton||(i.singleton=e.insertStyleElement(e));return{update:function(e){n(o,t,!1,e)},remove:function(e){n(o,t,!0,e)}}}},4307:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-input-color{display:flex;flex-direction:row-reverse;width:100%}.ck.ck-input-color>input.ck.ck-input-text{flex-grow:1;min-width:auto}.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{overflow:hidden;position:relative}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{display:block;position:absolute}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-input-color>.ck.ck-input-text:focus{z-index: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-bottom-left-radius:0;border-top-left-radius:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-left:1px solid transparent}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-right:1px solid transparent}.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:1px solid var(--ck-color-input-border);border-radius:0;height:20px;width:20px}.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>.ck.ck-input-color__button__preview__no-color-indicator{background:red;border-radius:2px;height:150%;left:50%;top:-30%;transform:rotate(45deg);transform-origin:50%;width:8%}.ck.ck-input-color .ck.ck-input-color__remove-color{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);width:100%}.ck.ck-input-color .ck.ck-input-color__remove-color:not(:focus){border-bottom:1px solid var(--ck-color-input-border)}[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-left:var(--ck-spacing-standard);margin-right:0}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/colorinput.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/colorinput.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAKA,mBAEC,YAAa,CACb,0BAA2B,CAF3B,UAgCD,CA5BC,0CAEC,WAAY,CADZ,cAED,CAEA,sCACC,cAMD,CAHC,kFACC,YACD,CAGD,8CAEC,YAWD,CATC,kFAEC,eAAgB,CADhB,iBAOD,CAJC,0IAEC,aAAc,CADd,iBAED,CC7BF,+CCME,4BAA6B,CAD7B,yBDHF,CAFA,+CCWE,2BAA4B,CAD5B,wBDRF,CCcC,2CACC,SACD,CAIA,wEACC,SA0CD,CDjED,kFC2BG,2BAA4B,CAD5B,wBDxBH,CC2BG,8FACC,iCACD,CD/BH,kFCoCG,4BAA6B,CAD7B,yBDjCH,CCoCG,8FACC,kCACD,CAGD,oFACC,oDACD,CAEA,4GAKC,6CAA8C,CC/CjD,eAAgB,CD8Cb,WAAY,CADZ,UAcD,CCzDF,+PAEC,qCAED,CD2CG,oKAKC,cAA6B,CAC7B,iBAAkB,CAHlB,WAAY,CADZ,QAAS,CADT,QAAS,CAMT,uBAAwB,CACxB,oBAAqB,CAJrB,QAKD,CAKH,oDAIC,2BAA4B,CAC5B,4BAA6B,CAH7B,qEAAwE,CADxE,UA0BD,CApBC,gEACC,oDACD,CD7ED,8DCgFE,yBD9EF,CAFA,8DCoFE,wBDlFF,CCqFC,gEACC,uCAMD,CD9FD,0EC4FG,sCAAuC,CADvC,cDzFH",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-input-color {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: row-reverse;\n\n\t& > input.ck.ck-input-text {\n\t\tmin-width: auto;\n\t\tflex-grow: 1;\n\t}\n\n\t& > div.ck.ck-dropdown {\n\t\tmin-width: auto;\n\n\t\t/* This dropdown has no arrow but a color preview instead. */\n\t\t& > .ck-input-color__button .ck-dropdown__arrow {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t& .ck.ck-input-color__button {\n\t\t/* Resolving issue with misaligned buttons on Safari (see #10589) */\n\t\tdisplay: flex;\n\n\t\t& .ck.ck-input-color__button__preview {\n\t\t\tposition: relative;\n\t\t\toverflow: hidden;\n\n\t\t\t& > .ck.ck-input-color__button__preview__no-color-indicator {\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: block;\n\t\t\t}\n\t\t}\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "../mixins/_rounded.css";\n\n.ck.ck-input-color {\n\t& > .ck.ck-input-text {\n\t\t@mixin ck-dir ltr {\n\t\t\tborder-top-right-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tborder-top-left-radius: 0;\n\t\t\tborder-bottom-left-radius: 0;\n\t\t}\n\n\t\t/* Make sure the focused input is always on top of the dropdown button so its\n\t\t outline and border are never cropped (also when the input is read-only). */\n\t\t&:focus {\n\t\t\tz-index: 0;\n\t\t}\n\t}\n\n\t& > .ck.ck-dropdown {\n\t\t& > .ck.ck-button.ck-input-color__button {\n\t\t\tpadding: 0;\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tborder-top-left-radius: 0;\n\t\t\t\tborder-bottom-left-radius: 0;\n\n\t\t\t\t&:not(:focus) {\n\t\t\t\t\tborder-left: 1px solid transparent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tborder-top-right-radius: 0;\n\t\t\t\tborder-bottom-right-radius: 0;\n\n\t\t\t\t&:not(:focus) {\n\t\t\t\t\tborder-right: 1px solid transparent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t&.ck-disabled {\n\t\t\t\tbackground: var(--ck-color-input-disabled-background);\n\t\t\t}\n\n\t\t\t& > .ck.ck-input-color__button__preview {\n\t\t\t\t@mixin ck-rounded-corners;\n\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tborder: 1px solid var(--ck-color-input-border);\n\n\t\t\t\t& > .ck.ck-input-color__button__preview__no-color-indicator {\n\t\t\t\t\ttop: -30%;\n\t\t\t\t\tleft: 50%;\n\t\t\t\t\theight: 150%;\n\t\t\t\t\twidth: 8%;\n\t\t\t\t\tbackground: hsl(0, 100%, 50%);\n\t\t\t\t\tborder-radius: 2px;\n\t\t\t\t\ttransform: rotate(45deg);\n\t\t\t\t\ttransform-origin: 50%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-input-color__remove-color {\n\t\twidth: 100%;\n\t\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\n\n\t\tborder-bottom-left-radius: 0;\n\t\tborder-bottom-right-radius: 0;\n\n\t\t&:not(:focus) {\n\t\t\tborder-bottom: 1px solid var(--ck-color-input-border);\n\t\t}\n\n\t\t@mixin ck-dir ltr {\n\t\t\tborder-top-right-radius: 0;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tborder-top-left-radius: 0;\n\t\t}\n\n\t\t& .ck.ck-icon {\n\t\t\tmargin-right: var(--ck-spacing-standard);\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: 0;\n\t\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]);const a=s},4417:e=>{"use strict";e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},4606:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/label/label.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/label/label.css"],names:[],mappings:"AAKA,aACC,aACD,CAEA,mBACC,YACD,CCNA,aACC,eACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-label {\n\tdisplay: block;\n}\n\n.ck.ck-voice-label {\n\tdisplay: none;\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-label {\n\tfont-weight: bold;\n}\n"],sourceRoot:""}]);const a=s},4650:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-balloon-panel.ck-tooltip{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;z-index:calc(var(--ck-z-dialog) + 100);--ck-balloon-border-width:0px;--ck-balloon-arrow-offset:0px;--ck-balloon-arrow-half-width:4px;--ck-balloon-arrow-height:4px;--ck-tooltip-text-padding:4px;--ck-color-panel-background:var(--ck-color-tooltip-background);box-shadow:none;padding:0 var(--ck-spacing-medium)}.ck.ck-balloon-panel.ck-tooltip .ck-tooltip__text{color:var(--ck-color-tooltip-text);font-size:.9em;line-height:1.5}.ck.ck-balloon-panel.ck-tooltip.ck-tooltip_multi-line .ck-tooltip__text{display:inline-block;max-width:200px;padding:var(--ck-tooltip-text-padding) 0;white-space:break-spaces}.ck.ck-balloon-panel.ck-tooltip:before{display:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/tooltip/tooltip.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/tooltip/tooltip.css"],names:[],mappings:"AAOA,gCCEC,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBAAgB,CDFhB,sCAAyC,CEFzC,6BAA8B,CAC9B,6BAA8B,CAC9B,iCAAkC,CAClC,6BAA8B,CAC9B,6BAA8B,CAC9B,8DAA+D,CAkB/D,eAAgB,CAhBhB,kCFJD,CEMC,kDAGC,kCAAmC,CAFnC,cAAe,CACf,eAED,CAEA,wEAEC,oBAAqB,CAErB,eAAgB,CADhB,wCAAyC,CAFzC,wBAID,CAMA,uCACC,YACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../mixins/_unselectable.css";\n\n.ck.ck-balloon-panel.ck-tooltip {\n\t@mixin ck-unselectable;\n\n\tz-index: calc( var(--ck-z-dialog) + 100 );\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n\n.ck.ck-balloon-panel.ck-tooltip {\n\t--ck-balloon-border-width: 0px;\n\t--ck-balloon-arrow-offset: 0px;\n\t--ck-balloon-arrow-half-width: 4px;\n\t--ck-balloon-arrow-height: 4px;\n\t--ck-tooltip-text-padding: 4px;\n\t--ck-color-panel-background: var(--ck-color-tooltip-background);\n\n\tpadding: 0 var(--ck-spacing-medium);\n\n\t& .ck-tooltip__text {\n\t\tfont-size: .9em;\n\t\tline-height: 1.5;\n\t\tcolor: var(--ck-color-tooltip-text);\n\t}\n\n\t&.ck-tooltip_multi-line .ck-tooltip__text {\n\t\twhite-space: break-spaces;\n\t\tdisplay: inline-block;\n\t\tpadding: var(--ck-tooltip-text-padding) 0;\n\t\tmax-width: 200px;\n\t}\n\n\t/* Reset balloon panel styles */\n\tbox-shadow: none;\n\n\t/* Hide the default shadow of the .ck-balloon-panel tip */\n\t&::before {\n\t\tdisplay: none;\n\t}\n}\n'],sourceRoot:""}]);const a=s},4694:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-dropdown-menu-menu-item-min-width:18em}.ck.ck-dropdown-menu-list__nested-menu__item{min-width:var(--ck-dropdown-menu-menu-item-min-width)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/menu/dropdownmenulistitem.css"],names:[],mappings:"AAKA,MACC,2CACD,CAEA,6CACC,qDACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-dropdown-menu-menu-item-min-width: 18em;\n}\n\n.ck.ck-dropdown-menu-list__nested-menu__item {\n\tmin-width: var(--ck-dropdown-menu-menu-item-min-width);\n}\n"],sourceRoot:""}]);const a=s},4782:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-menu-bar{background:var(--ck-color-base-background);border:1px solid var(--ck-color-toolbar-border);display:flex;flex-wrap:wrap;gap:var(--ck-spacing-small);justify-content:flex-start;padding:var(--ck-spacing-small);width:100%}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubar.css"],names:[],mappings:"AAKA,gBAIC,0CAA2C,CAG3C,+CAAgD,CANhD,YAAa,CACb,cAAe,CAIf,2BAA4B,CAH5B,0BAA2B,CAE3B,+BAAgC,CAGhC,UACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-menu-bar {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: flex-start;\n\tbackground: var(--ck-color-base-background);\n\tpadding: var(--ck-spacing-small);\n\tgap: var(--ck-spacing-small);\n\tborder: 1px solid var(--ck-color-toolbar-border);\n\twidth: 100%;\n}\n"],sourceRoot:""}]);const a=s},4866:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-form__header{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__header h2.ck-form__header__label{flex-grow:1}:root{--ck-form-header-height:44px}.ck.ck-form__header{border-bottom:1px solid var(--ck-color-base-border);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);padding:var(--ck-spacing-small) var(--ck-spacing-large)}[dir=ltr] .ck.ck-form__header>.ck-icon{margin-right:var(--ck-spacing-medium)}[dir=rtl] .ck.ck-form__header>.ck-icon{margin-left:var(--ck-spacing-medium)}.ck.ck-form__header .ck-form__header__label{--ck-font-size-base:15px;font-weight:700}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/formheader/formheader.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/formheader/formheader.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AAKA,oBAIC,kBAAmB,CAHnB,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CAEjB,6BAKD,CAHC,8CACC,WACD,CCPD,MACC,4BACD,CAEA,oBAIC,mDAAoD,CAFpD,mCAAoC,CACpC,wCAAyC,CAFzC,uDAmBD,CCzBC,uCDaE,qCCXF,CAFA,uCDiBE,oCCfF,CDmBA,4CACC,wBAAyB,CACzB,eACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-form__header {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\talign-items: center;\n\tjustify-content: space-between;\n\n\t& h2.ck-form__header__label {\n\t\tflex-grow: 1;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n:root {\n\t--ck-form-header-height: 44px;\n}\n\n.ck.ck-form__header {\n\tpadding: var(--ck-spacing-small) var(--ck-spacing-large);\n\theight: var(--ck-form-header-height);\n\tline-height: var(--ck-form-header-height);\n\tborder-bottom: 1px solid var(--ck-color-base-border);\n\n\t& > .ck-icon {\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-right: var(--ck-spacing-medium);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-left: var(--ck-spacing-medium);\n\t\t}\n\t}\n\n\t& .ck-form__header__label {\n\t\t--ck-font-size-base: 15px;\n\t\tfont-weight: bold;\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},4868:e=>{"use strict";e.exports=function(e,t){Object.keys(t).forEach((function(o){e.setAttribute(o,t[o])}))}},4873:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-menu-bar-menu-max-width:75vw;--ck-menu-bar-nested-menu-horizontal-offset:5px}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel{max-width:var(--ck-menu-bar-menu-max-width);position:absolute;z-index:var(--ck-z-panel)}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw{bottom:100%}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw{bottom:auto;top:100%}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se{left:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw{right:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es{left:calc(100% - var(--ck-menu-bar-nested-menu-horizontal-offset))}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es{top:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en{bottom:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws{right:calc(100% - var(--ck-menu-bar-nested-menu-horizontal-offset))}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws{top:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn{bottom:0}:root{--ck-menu-bar-menu-panel-max-width:75vw}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);border-radius:0;bottom:0;height:fit-content;max-width:var(--ck-menu-bar-menu-panel-max-width)}.ck-rounded-corners .ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel{box-shadow:var(--ck-drop-shadow),0 0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se{border-top-left-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws{border-top-right-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne{border-bottom-left-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn{border-bottom-right-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel:focus{outline:none}.ck.ck-menu-bar .ck-list-item-button:active,.ck.ck-menu-bar .ck-list-item-button:focus{border-color:transparent;box-shadow:none}.ck.ck-menu-bar.ck-menu-bar_focus-border-enabled .ck-list-item-button:active,.ck.ck-menu-bar.ck-menu-bar_focus-border-enabled .ck-list-item-button:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none;position:relative;z-index:2}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenupanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenupanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css"],names:[],mappings:"AAKA,MACC,iCAAkC,CAClC,+CACD,CAEA,mDAEC,2CAA4C,CAC5C,iBAAkB,CAFlB,yBAkDD,CA9CC,gLAEC,WACD,CAEA,gLAGC,WAAY,CADZ,QAED,CAEA,gLAEC,MACD,CAEA,gLAEC,OACD,CAEA,gLAEC,kEACD,CAEA,wFACC,KACD,CAEA,wFACC,QACD,CAEA,gLAEC,mEACD,CAEA,wFACC,KACD,CAEA,wFACC,QACD,CCnDD,MACC,uCACD,CAEA,mDAIC,oDAAqD,CACrD,sDAAuD,CCPvD,eAAgB,CDQhB,QAAS,CACT,kBAAmB,CACnB,iDA0BD,CClCC,6IAEC,qCAED,CDJD,mDEJC,oCFsCD,CAvBC,gLAEC,wBACD,CAEA,gLAEC,yBACD,CAEA,gLAEC,2BACD,CAEA,gLAEC,4BACD,CAEA,yDACC,YACD,CAKC,uFAEC,wBAAyB,CACzB,eACD,CAIA,yJGhDD,2BAA2B,CDF3B,2CAA8B,CCC9B,YAAa,CHoDX,iBAAkB,CAClB,SAID",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-menu-bar-menu-max-width: 75vw;\n\t--ck-menu-bar-nested-menu-horizontal-offset: 5px;\n}\n\n.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel {\n\tz-index: var(--ck-z-panel);\n\tmax-width: var(--ck-menu-bar-menu-max-width);\n\tposition: absolute;\n\n\t&.ck-menu-bar__menu__panel_position_ne,\n\t&.ck-menu-bar__menu__panel_position_nw {\n\t\tbottom: 100%;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_se,\n\t&.ck-menu-bar__menu__panel_position_sw {\n\t\ttop: 100%;\n\t\tbottom: auto;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_ne,\n\t&.ck-menu-bar__menu__panel_position_se {\n\t\tleft: 0px;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_nw,\n\t&.ck-menu-bar__menu__panel_position_sw {\n\t\tright: 0px;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_es,\n\t&.ck-menu-bar__menu__panel_position_en {\n\t\tleft: calc( 100% - var(--ck-menu-bar-nested-menu-horizontal-offset) );\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_es {\n\t\ttop: 0px;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_en {\n\t\tbottom: 0px;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_ws,\n\t&.ck-menu-bar__menu__panel_position_wn {\n\t\tright: calc( 100% - var(--ck-menu-bar-nested-menu-horizontal-offset) );\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_ws {\n\t\ttop: 0px;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_wn {\n\t\tbottom: 0px;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n@import "../../../mixins/_focus.css";\n\n:root {\n\t--ck-menu-bar-menu-panel-max-width: 75vw;\n}\n\n.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\tbackground: var(--ck-color-dropdown-panel-background);\n\tborder: 1px solid var(--ck-color-dropdown-panel-border);\n\tbottom: 0;\n\theight: fit-content;\n\tmax-width: var(--ck-menu-bar-menu-panel-max-width);\n\n\t/* Corner border radius consistent with the button. */\n\t&.ck-menu-bar__menu__panel_position_es,\n\t&.ck-menu-bar__menu__panel_position_se {\n\t\tborder-top-left-radius: 0;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_ws,\n\t&.ck-menu-bar__menu__panel_position_sw {\n\t\tborder-top-right-radius: 0;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_en,\n\t&.ck-menu-bar__menu__panel_position_ne {\n\t\tborder-bottom-left-radius: 0;\n\t}\n\n\t&.ck-menu-bar__menu__panel_position_wn,\n\t&.ck-menu-bar__menu__panel_position_nw {\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n}\n\n.ck.ck-menu-bar {\n\t& .ck-list-item-button {\n\t\t&:focus,\n\t\t&:active {\n\t\t\tborder-color: transparent;\n\t\t\tbox-shadow: none;\n\t\t}\n\t}\n\n\t&.ck-menu-bar_focus-border-enabled .ck-list-item-button {\n\t\t&:focus,\n\t\t&:active {\n\t\t\t/* Fix truncated shadows due to rendering order. */\n\t\t\tposition: relative;\n\t\t\tz-index: 2;\n\n\t\t\t@mixin ck-focus-ring;\n\t\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n"],sourceRoot:""}]);const a=s},5067:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button{border-radius:0;padding:var(--ck-spacing-tiny) calc(var(--ck-spacing-standard)*2);width:100%}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button:focus{border-color:transparent;box-shadow:none}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button:focus:not(.ck-on){background:var(--ck-color-button-default-hover-background)}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-button__label{flex-grow:1;overflow:hidden;text-overflow:ellipsis}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button.ck-disabled>.ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button.ck-icon-spacing:not(:has(.ck-button__icon))>.ck-button__label{margin-left:calc(var(--ck-icon-size) - var(--ck-spacing-small))}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{margin-right:calc(var(--ck-spacing-small)*-1);transform:rotate(-90deg)}[dir=rtl] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{margin-left:calc(var(--ck-spacing-small)*-1);transform:rotate(90deg)}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button.ck-disabled>.ck-dropdown-menu-list__nested-menu__button__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=ltr] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{margin-left:var(--ck-spacing-standard);right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenubutton.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/menu/dropdownmenubutton.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AAKA,kGACC,mBAAoB,CACpB,2BACD,CCIA,yDAGC,eAAgB,CADhB,iEAAoE,CADpE,UA2ED,CAvEC,+DACC,wBAAyB,CACzB,eAKD,CAHC,2EACC,0DACD,CAGD,2EACC,WAAY,CACZ,eAAgB,CAChB,sBACD,CAEA,uFCvBA,kCDyBA,CAGA,uHACC,+DACD,CAEA,4GACC,mCAeD,CEnDA,sHF0CE,6CAAgD,CAHhD,wBErCF,CAFA,sHFiDE,4CAA+C,CAH/C,uBE5CF,CFmDA,wHClDA,kCDoDA,CAGC,6FACC,oCACD,CAEA,sHAIC,sCAAuC,CAHvC,gCAID,CAIA,6FACC,qCACD,CAEA,sHACC,+BAAgC,CAGhC,oCACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-dropdown-menu-list__nested-menu__button > .ck-dropdown-menu-list__nested-menu__button__arrow {\n\tpointer-events: none;\n\tz-index: var(--ck-z-default);\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../../mixins/_disabled.css";\n@import "../../../mixins/_button.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n/*\n * All menu buttons.\n */\n.ck.ck-button.ck-dropdown-menu-list__nested-menu__button {\n\twidth: 100%;\n\tpadding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard));\n\tborder-radius: 0;\n\n\t&:focus {\n\t\tborder-color: transparent;\n\t\tbox-shadow: none;\n\n\t\t&:not(.ck-on) {\n\t\t\tbackground: var(--ck-color-button-default-hover-background);\n\t\t}\n\t}\n\n\t& > .ck-button__label {\n\t\tflex-grow: 1;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&.ck-disabled > .ck-button__label {\n\t\t@mixin ck-disabled;\n\t}\n\n\t/* Spacing in buttons that miss the icon. */\n\t&.ck-icon-spacing:not(:has(.ck-button__icon)) > .ck-button__label {\n\t\tmargin-left: calc(var(--ck-icon-size) - var(--ck-spacing-small));\n\t}\n\n\t& > .ck-dropdown-menu-list__nested-menu__button__arrow {\n\t\twidth: var(--ck-dropdown-arrow-size);\n\n\t\t@mixin ck-dir ltr {\n\t\t\ttransform: rotate(-90deg);\n\n\t\t\t/* Nudge the arrow gently to the right because its center of gravity is to the left */\n\t\t\tmargin-right: calc(-1 * var(--ck-spacing-small));\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttransform: rotate(90deg);\n\n\t\t\t/* Nudge the arrow gently to the left because its center of gravity is to the right (after rotation). */\n\t\t\tmargin-left: calc(-1 * var(--ck-spacing-small));\n\t\t}\n\t}\n\n\t&.ck-disabled > .ck-dropdown-menu-list__nested-menu__button__arrow {\n\t\t@mixin ck-disabled;\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t&:not(.ck-button_with-text) {\n\t\t\tpadding-left: var(--ck-spacing-small);\n\t\t}\n\n\t\t& > .ck-dropdown-menu-list__nested-menu__button__arrow {\n\t\t\tright: var(--ck-spacing-standard);\n\n\t\t\t/* A space to accommodate the triangle. */\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t&:not(.ck-button_with-text) {\n\t\t\tpadding-right: var(--ck-spacing-small);\n\t\t}\n\n\t\t& > .ck-dropdown-menu-list__nested-menu__button__arrow {\n\t\t\tleft: var(--ck-spacing-standard);\n\n\t\t\t/* A space to accommodate the triangle. */\n\t\t\tmargin-right: var(--ck-spacing-small);\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},5072:e=>{"use strict";var t=[];function o(e){for(var o=-1,n=0;n{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button{border-radius:0}.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container,.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container .ck-spinner{--ck-toolbar-spinner-size:20px}.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container{font-size:var(--ck-icon-font-size)}[dir=ltr] .ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container{margin-right:var(--ck-spacing-medium)}[dir=rtl] .ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container{margin-left:var(--ck-spacing-medium)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenulistitembutton.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AAWC,iEACC,eAoBD,CAlBC,0LAGC,8BACD,CAEA,uFAEC,kCASD,CCzBD,iGDmBG,qCCjBH,CAFA,iGDuBG,oCCrBH",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-menu-bar__menu {\n\t/*\n\t * List item buttons.\n\t */\n\t& .ck-button.ck-menu-bar__menu__item__button {\n\t\tborder-radius: 0;\n\n\t\t& > .ck-spinner-container,\n\t\t& > .ck-spinner-container .ck-spinner {\n\t\t\t/* These styles correspond to .ck-icon so that the spinner seamlessly replaces the icon. */\n\t\t\t--ck-toolbar-spinner-size: 20px;\n\t\t}\n\n\t\t& > .ck-spinner-container {\n\t\t\t/* This ensures margins corresponding to the .ck-icon. */\n\t\t\tfont-size: var(--ck-icon-font-size);\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-right: var(--ck-spacing-medium);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-left: var(--ck-spacing-medium);\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},5079:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,'.ck-content .page-break{align-items:center;clear:both;display:flex;justify-content:center;padding:5px 0;position:relative}.ck-content .page-break:after{border-bottom:2px dashed #c4c4c4;content:"";position:absolute;width:100%}.ck-content .page-break__label{background:#fff;border:1px solid #c4c4c4;border-radius:2px;box-shadow:2px 2px 1px rgba(0,0,0,.15);color:#333;display:block;font-family:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;font-size:.75em;font-weight:700;padding:.3em .6em;position:relative;text-transform:uppercase;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}@media print{.ck-content .page-break{padding:0}.ck-content .page-break:after{display:none}.ck-content :has(+.page-break){margin-bottom:0}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-page-break/theme/pagebreak.css"],names:[],mappings:"AAKA,wBAKC,kBAAmB,CAHnB,UAAW,CAEX,YAAa,CAEb,sBAAuB,CAHvB,aAAc,CAFd,iBAaD,CANC,8BAGC,gCAAyC,CAFzC,UAAW,CACX,iBAAkB,CAElB,UACD,CAGD,+BAYC,eAA4B,CAN5B,wBAAiC,CACjC,iBAAkB,CAMlB,sCAA6C,CAF7C,UAAsB,CAPtB,aAAc,CAId,qDAA0D,CAC1D,eAAiB,CACjB,eAAiB,CAPjB,iBAAkB,CAFlB,iBAAkB,CAIlB,wBAAyB,CAWzB,wBAAyB,CACzB,qBAAsB,CACtB,oBAAqB,CACrB,gBAAiB,CAjBjB,SAkBD,CAGA,aACC,wBACC,SAKD,CAHC,8BACC,YACD,CASD,+BACC,eACD,CACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck-content .page-break {\n\tposition: relative;\n\tclear: both;\n\tpadding: 5px 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t&::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tborder-bottom: 2px dashed hsl(0, 0%, 77%);\n\t\twidth: 100%;\n\t}\n}\n\n.ck-content .page-break__label {\n\tposition: relative;\n\tz-index: 1;\n\tpadding: .3em .6em;\n\tdisplay: block;\n\ttext-transform: uppercase;\n\tborder: 1px solid hsl(0, 0%, 77%);\n\tborder-radius: 2px;\n\tfont-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\n\tfont-size: 0.75em;\n\tfont-weight: bold;\n\tcolor: hsl(0, 0%, 20%);\n\tbackground: hsl(0, 0%, 100%);\n\tbox-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);\n\n\t/* Disable the possibility to select the label text by the user. */\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n/* Do not show the page break element inside the print preview window. */\n@media print {\n\t.ck-content .page-break {\n\t\tpadding: 0;\n\n\t\t&::after {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t/*\n\t * From time to time placing page-break directly after a block element with margin causes appending a new blank page in pagination mode.\n\t * Removing margin-bottom from the block element fixes that issue and the margin is not being moved to the next blank page.\n\t *\n\t * Keep this in sync with the pagination plugins.\n\t */\n\t.ck-content *:has(+ .page-break) {\n\t\tmargin-bottom: 0;\n\t}\n}\n"],sourceRoot:""}]);const a=s},5484:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,':root{--ck-todo-list-checkmark-size:16px}.ck-content .todo-list{list-style:none}.ck-content .todo-list li{margin-bottom:5px;position:relative}.ck-content .todo-list li .todo-list{margin-top:5px}.ck-content .todo-list .todo-list__label>input{-webkit-appearance:none;border:0;display:inline-block;height:var(--ck-todo-list-checkmark-size);left:-25px;margin-left:0;margin-right:-15px;position:relative;right:0;vertical-align:middle;width:var(--ck-todo-list-checkmark-size)}.ck-content[dir=rtl] .todo-list .todo-list__label>input{left:0;margin-left:-15px;margin-right:0;right:-25px}.ck-content .todo-list .todo-list__label>input:before{border:1px solid #333;border-radius:2px;box-sizing:border-box;content:"";display:block;height:100%;position:absolute;transition:box-shadow .25s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.ck-content .todo-list .todo-list__label>input:before{transition:none}}.ck-content .todo-list .todo-list__label>input:after{border-color:transparent;border-style:solid;border-width:0 calc(var(--ck-todo-list-checkmark-size)/8) calc(var(--ck-todo-list-checkmark-size)/8) 0;box-sizing:content-box;content:"";display:block;height:calc(var(--ck-todo-list-checkmark-size)/2.6);left:calc(var(--ck-todo-list-checkmark-size)/3);pointer-events:none;position:absolute;top:calc(var(--ck-todo-list-checkmark-size)/5.3);transform:rotate(45deg);width:calc(var(--ck-todo-list-checkmark-size)/5.3)}.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}.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type=checkbox]{position:absolute}.ck-editor__editable.ck-content .todo-list .todo-list__label>input,.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input{cursor:pointer}.ck-editor__editable.ck-content .todo-list .todo-list__label>input:hover:before,.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input:hover:before{box-shadow:0 0 0 5px rgba(0,0,0,.1)}.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input{-webkit-appearance:none;border:0;display:inline-block;height:var(--ck-todo-list-checkmark-size);left:-25px;margin-left:0;margin-right:-15px;position:relative;right:0;vertical-align:middle;width:var(--ck-todo-list-checkmark-size)}.ck-editor__editable.ck-content[dir=rtl] .todo-list .todo-list__label>span[contenteditable=false]>input{left:0;margin-left:-15px;margin-right:0;right:-25px}.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input:before{border:1px solid #333;border-radius:2px;box-sizing:border-box;content:"";display:block;height:100%;position:absolute;transition:box-shadow .25s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input:before{transition:none}}.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input:after{border-color:transparent;border-style:solid;border-width:0 calc(var(--ck-todo-list-checkmark-size)/8) calc(var(--ck-todo-list-checkmark-size)/8) 0;box-sizing:content-box;content:"";display:block;height:calc(var(--ck-todo-list-checkmark-size)/2.6);left:calc(var(--ck-todo-list-checkmark-size)/3);pointer-events:none;position:absolute;top:calc(var(--ck-todo-list-checkmark-size)/5.3);transform:rotate(45deg);width:calc(var(--ck-todo-list-checkmark-size)/5.3)}.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input[checked]:before{background:#26ab33;border-color:#26ab33}.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input[checked]:after{border-color:#fff}.ck-editor__editable.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type=checkbox]{position:absolute}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-list/theme/todolist.css"],names:[],mappings:"AAKA,MACC,kCACD,CA4EA,uBACC,eAwBD,CAtBC,0BAEC,iBAAkB,CADlB,iBAMD,CAHC,qCACC,cACD,CAIA,+CAtFD,uBAAwB,CAQxB,QAAS,CAPT,oBAAqB,CAGrB,yCAA0C,CAO1C,UAAW,CAGX,aAAc,CAFd,kBAAmB,CAVnB,iBAAkB,CAWlB,OAAQ,CARR,qBAAsB,CAFtB,wCAqFC,CAvED,wDACC,MAAO,CAGP,iBAAkB,CAFlB,cAAe,CACf,WAED,CAEA,sDAOC,qBAAiC,CACjC,iBAAkB,CALlB,qBAAsB,CACtB,UAAW,CAHX,aAAc,CAKd,WAAY,CAJZ,iBAAkB,CAOlB,sCAAwC,CAJxC,UASD,CAHC,uCAXD,sDAYE,eAEF,CADC,CAGD,qDAaC,wBAAyB,CADzB,kBAAmB,CAEnB,sGAA+G,CAX/G,sBAAuB,CAEvB,UAAW,CAJX,aAAc,CAUd,mDAAwD,CAHxD,+CAAoD,CAJpD,mBAAoB,CAFpB,iBAAkB,CAOlB,gDAAqD,CAMrD,uBAAwB,CALxB,kDAMD,CAGC,+DACC,kBAA8B,CAC9B,oBACD,CAEA,8DACC,iBACD,CAwBA,wEACC,qBACD,CAEA,mGACC,iBACD,CAYD,kKAEC,cAKD,CAHC,4LACC,mCACD,CAMD,+FAxHA,uBAAwB,CAQxB,QAAS,CAPT,oBAAqB,CAGrB,yCAA0C,CAO1C,UAAW,CAGX,aAAc,CAFd,kBAAmB,CAVnB,iBAAkB,CAWlB,OAAQ,CARR,qBAAsB,CAFtB,wCAuHA,CAzGA,wGACC,MAAO,CAGP,iBAAkB,CAFlB,cAAe,CACf,WAED,CAEA,sGAOC,qBAAiC,CACjC,iBAAkB,CALlB,qBAAsB,CACtB,UAAW,CAHX,aAAc,CAKd,WAAY,CAJZ,iBAAkB,CAOlB,sCAAwC,CAJxC,UASD,CAHC,uCAXD,sGAYE,eAEF,CADC,CAGD,qGAaC,wBAAyB,CADzB,kBAAmB,CAEnB,sGAA+G,CAX/G,sBAAuB,CAEvB,UAAW,CAJX,aAAc,CAUd,mDAAwD,CAHxD,+CAAoD,CAJpD,mBAAoB,CAFpB,iBAAkB,CAOlB,gDAAqD,CAMrD,uBAAwB,CALxB,kDAMD,CAGC,+GACC,kBAA8B,CAC9B,oBACD,CAEA,8GACC,iBACD,CA2DA,uHACC,iBACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-todo-list-checkmark-size: 16px;\n}\n\n@define-mixin todo-list-checkbox {\n\t-webkit-appearance: none;\n\tdisplay: inline-block;\n\tposition: relative;\n\twidth: var(--ck-todo-list-checkmark-size);\n\theight: var(--ck-todo-list-checkmark-size);\n\tvertical-align: middle;\n\n\t/* Needed on iOS */\n\tborder: 0;\n\n\t/* LTR styles */\n\tleft: -25px;\n\tmargin-right: -15px;\n\tright: 0;\n\tmargin-left: 0;\n\n\t/* RTL styles */\n\t[dir=rtl]& {\n\t\tleft: 0;\n\t\tmargin-right: 0;\n\t\tright: -25px;\n\t\tmargin-left: -15px;\n\t}\n\n\t&::before {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tbox-sizing: border-box;\n\t\tcontent: '';\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder: 1px solid hsl(0, 0%, 20%);\n\t\tborder-radius: 2px;\n\t\ttransition: 250ms ease-in-out box-shadow;\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\ttransition: none;\n\t\t}\n\t}\n\n\t&::after {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\tbox-sizing: content-box;\n\t\tpointer-events: none;\n\t\tcontent: '';\n\n\t\t/* Calculate tick position, size and border-width proportional to the checkmark size. */\n\t\tleft: calc( var(--ck-todo-list-checkmark-size) / 3 );\n\t\ttop: calc( var(--ck-todo-list-checkmark-size) / 5.3 );\n\t\twidth: calc( var(--ck-todo-list-checkmark-size) / 5.3 );\n\t\theight: calc( var(--ck-todo-list-checkmark-size) / 2.6 );\n\t\tborder-style: solid;\n\t\tborder-color: transparent;\n\t\tborder-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0;\n\t\ttransform: rotate(45deg);\n\t}\n\n\t&[checked] {\n\t\t&::before {\n\t\t\tbackground: hsl(126, 64%, 41%);\n\t\t\tborder-color: hsl(126, 64%, 41%);\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: hsl(0, 0%, 100%);\n\t\t}\n\t}\n}\n\n/*\n * To-do list content styles.\n */\n.ck-content .todo-list {\n\tlist-style: none;\n\n\t& li {\n\t\tposition: relative;\n\t\tmargin-bottom: 5px;\n\n\t\t& .todo-list {\n\t\t\tmargin-top: 5px;\n\t\t}\n\t}\n\n\t& .todo-list__label {\n\t\t& > input {\n\t\t\t@mixin todo-list-checkbox;\n\t\t}\n\n\t\t& .todo-list__label__description {\n\t\t\tvertical-align: middle;\n\t\t}\n\n\t\t&.todo-list__label_without-description input[type=checkbox] {\n\t\t\tposition: absolute;\n\t\t}\n\t}\n}\n\n/*\n * To-do list editing view styles.\n */\n.ck-editor__editable.ck-content .todo-list .todo-list__label {\n\t/*\n\t * To-do list should be interactive only during the editing\n\t * (https://github.com/ckeditor/ckeditor5/issues/2090).\n\t */\n\t& > input,\n\t& > span[contenteditable=false] > input {\n\t\tcursor: pointer;\n\n\t\t&:hover::before {\n\t\t\tbox-shadow: 0 0 0 5px hsla(0, 0%, 0%, 0.1);\n\t\t}\n\t}\n\n\t/*\n\t * Document Lists - editing view has an additional span around checkbox.\n\t */\n\t& > span[contenteditable=false] > input {\n\t\t@mixin todo-list-checkbox;\n\t}\n\n\t&.todo-list__label_without-description {\n\t\t& input[type=checkbox] {\n\t\t\tposition: absolute;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},5540:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-search>.ck-labeled-field-view>.ck-labeled-field-view__input-wrapper>.ck-icon{position:absolute;top:50%;transform:translateY(-50%)}[dir=ltr] .ck.ck-search>.ck-labeled-field-view>.ck-labeled-field-view__input-wrapper>.ck-icon{left:var(--ck-spacing-medium)}[dir=rtl] .ck.ck-search>.ck-labeled-field-view>.ck-labeled-field-view__input-wrapper>.ck-icon{right:var(--ck-spacing-medium)}.ck.ck-search>.ck-labeled-field-view .ck-search__reset{position:absolute;top:50%;transform:translateY(-50%)}.ck.ck-search>.ck-search__results>.ck-search__info>span:first-child{display:block}.ck.ck-search>.ck-search__results>.ck-search__info:not(.ck-hidden)~*{display:none}:root{--ck-search-field-view-horizontal-spacing:calc(var(--ck-icon-size) + var(--ck-spacing-medium))}.ck.ck-search>.ck-labeled-field-view .ck-input{width:100%}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon{--ck-labeled-field-label-default-position-x:var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon>.ck-labeled-field-view__input-wrapper>.ck-icon{opacity:.5;pointer-events:none}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon .ck-input{width:100%}[dir=ltr] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon .ck-input,[dir=rtl] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon .ck-input:not(.ck-input-text_empty){padding-left:var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset{--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset.ck-labeled-field-view_empty{--ck-labeled-field-empty-unfocused-max-width:100% - var(--ck-search-field-view-horizontal-spacing) - var(--ck-spacing-medium)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset{background:none;min-height:auto;min-width:auto;opacity:.5;padding:0}[dir=ltr] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset{right:var(--ck-spacing-medium)}[dir=rtl] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset{left:var(--ck-spacing-medium)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset:hover{opacity:1}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-input{width:100%}[dir=ltr] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-input:not(.ck-input-text_empty),[dir=rtl] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-input{padding-right:var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-search__results{min-width:100%}.ck.ck-search>.ck-search__results>.ck-search__info{padding:var(--ck-spacing-medium) var(--ck-spacing-large);width:100%}.ck.ck-search>.ck-search__results>.ck-search__info *{white-space:normal}.ck.ck-search>.ck-search__results>.ck-search__info>span:first-child{font-weight:700}.ck.ck-search>.ck-search__results>.ck-search__info>span:last-child{margin-top:var(--ck-spacing-medium)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/search/search.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/search/search.css"],names:[],mappings:"AASE,oFACC,iBAAkB,CAClB,OAAQ,CACR,0BASD,CCfD,8FDSG,6BCPH,CAFA,8FDaG,8BCXH,CDeC,uDACC,iBAAkB,CAClB,OAAQ,CACR,0BACD,CAKC,oEACC,aACD,CAGA,qEACC,YACD,CEhCH,MACC,8FACD,CAIE,+CACC,UACD,CAEA,gEACC,0FAoBD,CAlBC,+GACC,UAAW,CACX,mBACD,CAEA,0EACC,UAWD,CAJE,kMACC,2DACD,CAKH,iEACC,sGAwCD,CAtCC,6FACC,6HACD,CAEA,mFAIC,eAAgB,CAFhB,eAAgB,CADhB,cAAe,CAIf,UAAW,CACX,SAaD,CD5DF,6FCkDI,8BDhDJ,CAFA,6FCsDI,6BDpDJ,CCuDG,yFACC,SACD,CAGD,2EACC,UAWD,CD1EF,oMCwEI,4DDtEJ,CC4EA,kCACC,cAkBD,CAhBC,mDAEC,wDAAyD,CADzD,UAcD,CAXC,qDACC,kBACD,CAEA,oEACC,eACD,CAEA,mEACC,mCACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-search {\n\t& > .ck-labeled-field-view {\n\t\t& > .ck-labeled-field-view__input-wrapper > .ck-icon {\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\ttransform: translateY(-50%);\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tleft: var(--ck-spacing-medium);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tright: var(--ck-spacing-medium);\n\t\t\t}\n\t\t}\n\n\t\t& .ck-search__reset {\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\ttransform: translateY(-50%);\n\t\t}\n\t}\n\n\t& > .ck-search__results {\n\t\t& > .ck-search__info {\n\t\t\t& > span:first-child {\n\t\t\t\tdisplay: block;\n\t\t\t}\n\n\t\t\t/* Hide the filtered view when nothing was found */\n\t\t\t&:not(.ck-hidden) ~ * {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n:root {\n\t--ck-search-field-view-horizontal-spacing: calc(var(--ck-icon-size) + var(--ck-spacing-medium));\n}\n\n.ck.ck-search {\n\t& > .ck-labeled-field-view {\n\t\t& .ck-input {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t&.ck-search__query_with-icon {\n\t\t\t--ck-labeled-field-label-default-position-x: var(--ck-search-field-view-horizontal-spacing);\n\n\t\t\t& > .ck-labeled-field-view__input-wrapper > .ck-icon {\n\t\t\t\topacity: .5;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\n\t\t\t& .ck-input {\n\t\t\t\twidth: 100%;\n\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\tpadding-left: var(--ck-search-field-view-horizontal-spacing);\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\t&:not(.ck-input-text_empty) {\n\t\t\t\t\t\tpadding-left: var(--ck-search-field-view-horizontal-spacing);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.ck-search__query_with-reset {\n\t\t\t--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-search-field-view-horizontal-spacing);\n\n\t\t\t&.ck-labeled-field-view_empty {\n\t\t\t\t--ck-labeled-field-empty-unfocused-max-width: 100% - var(--ck-search-field-view-horizontal-spacing) - var(--ck-spacing-medium);\n\t\t\t}\n\n\t\t\t& .ck-search__reset {\n\t\t\t\tmin-width: auto;\n\t\t\t\tmin-height: auto;\n\n\t\t\t\tbackground: none;\n\t\t\t\topacity: .5;\n\t\t\t\tpadding: 0;\n\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\tright: var(--ck-spacing-medium);\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\tleft: var(--ck-spacing-medium);\n\t\t\t\t}\n\n\t\t\t\t&:hover {\n\t\t\t\t\topacity: 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t& .ck-input {\n\t\t\t\twidth: 100%;\n\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\t&:not(.ck-input-text_empty) {\n\t\t\t\t\t\tpadding-right: var(--ck-search-field-view-horizontal-spacing);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\tpadding-right: var(--ck-search-field-view-horizontal-spacing);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .ck-search__results {\n\t\tmin-width: 100%;\n\n\t\t& > .ck-search__info {\n\t\t\twidth: 100%;\n\t\t\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large);\n\n\t\t\t& * {\n\t\t\t\twhite-space: normal;\n\t\t\t}\n\n\t\t\t& > span:first-child {\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\n\t\t\t& > span:last-child {\n\t\t\t\tmargin-top: var(--ck-spacing-medium);\n\t\t\t}\n\t\t}\n\t}\n}\n\n'],sourceRoot:""}]);const a=s},5615:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,':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-panel)}.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-border-width:1px;--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{background:var(--ck-color-panel-background);border:var(--ck-balloon-border-width) solid var(--ck-color-panel-border);border-radius:0;min-height:15px}.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}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{border-style:solid;height:0;width:0}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-width:0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_n]:before{border-color:transparent transparent var(--ck-color-panel-border) transparent;margin-top:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_n]:after{border-color:transparent transparent var(--ck-color-panel-background) transparent;margin-top:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-width:var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-color:var(--ck-color-panel-border) transparent transparent;filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow));margin-bottom:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_s]:after{border-color:var(--ck-color-panel-background) transparent transparent transparent;margin-bottom:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_e]:after,.ck.ck-balloon-panel[class*=arrow_e]:before{border-width:var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_e]:before{border-color:transparent transparent transparent var(--ck-color-panel-border);margin-right:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_e]:after{border-color:transparent transparent transparent var(--ck-color-panel-background);margin-right:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_w]:after,.ck.ck-balloon-panel[class*=arrow_w]:before{border-width:var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0}.ck.ck-balloon-panel[class*=arrow_w]:before{border-color:transparent var(--ck-color-panel-border) transparent transparent;margin-left:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_w]:after{border-color:transparent var(--ck-color-panel-background) transparent transparent;margin-left:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.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{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);right:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%;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)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:before{margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);right:calc(var(--ck-balloon-arrow-height)*-1);top:50%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:before{left:calc(var(--ck-balloon-arrow-height)*-1);margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);top:50%}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonpanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonpanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAKA,MAEC,8DACD,CAEA,qBACC,YAAa,CACb,iBAAkB,CAElB,yBAyCD,CAtCE,+GAEC,UAAW,CACX,iBACD,CAEA,wDACC,6CACD,CAEA,uDACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAGD,8CACC,aACD,CC9CD,MACC,6BAA8B,CAC9B,6BAA8B,CAC9B,8BAA+B,CAC/B,iCAAkC,CAClC,oEACD,CAEA,qBAMC,2CAA4C,CAC5C,wEAAyE,CCZzE,eAAgB,CDShB,eA0LD,CCjMC,iFAEC,qCAED,CDDD,qBEPC,oCFqMD,CApLE,+GAIC,kBAAmB,CADnB,QAAS,CADT,OAGD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,kDACD,CAEA,2CACC,iFAAkF,CAClF,gFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,iEAAkE,CAClE,uDAAwD,CACxD,qDACD,CAEA,2CACC,iFAAkF,CAClF,mFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,oDACD,CAEA,2CACC,iFAAkF,CAClF,kFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,mDACD,CAEA,2CACC,iFAAkF,CAClF,iFACD,CAIA,yGAEC,QAAS,CACT,uDAA0D,CAC1D,2CACD,CAIA,2GAEC,+CAAkD,CAClD,2CACD,CAIA,2GAEC,gDAAmD,CACnD,2CACD,CAIA,yGAIC,8CAAiD,CAFjD,QAAS,CACT,uDAED,CAIA,2GAGC,8CAAiD,CADjD,+CAED,CAIA,2GAGC,8CAAiD,CADjD,gDAED,CAIA,6GAIC,8CAAiD,CADjD,uDAA0D,CAD1D,SAGD,CAIA,6GAIC,8CAAiD,CAFjD,QAAS,CACT,sDAED,CAIA,6GAGC,uDAA0D,CAD1D,SAAU,CAEV,2CACD,CAIA,6GAEC,QAAS,CACT,sDAAyD,CACzD,2CACD,CAIA,yGAGC,sDAAyD,CADzD,6CAAgD,CAEhD,OACD,CAIA,yGAEC,4CAA+C,CAC/C,sDAAyD,CACzD,OACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t/* Make sure the balloon arrow does not float over its children. */\n\t--ck-balloon-panel-arrow-z-index: calc(var(--ck-z-default) - 3);\n}\n\n.ck.ck-balloon-panel {\n\tdisplay: none;\n\tposition: absolute;\n\n\tz-index: var(--ck-z-panel);\n\n\t&.ck-balloon-panel_with-arrow {\n\t\t&::before,\n\t\t&::after {\n\t\t\tcontent: "";\n\t\t\tposition: absolute;\n\t\t}\n\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&[class*="arrow_n"] {\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&[class*="arrow_s"] {\n\t\t&::before {\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\n\t\t}\n\n\t\t&::after {\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_visible {\n\t\tdisplay: block;\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-balloon-border-width: 1px;\n\t--ck-balloon-arrow-offset: 2px;\n\t--ck-balloon-arrow-height: 10px;\n\t--ck-balloon-arrow-half-width: 8px;\n\t--ck-balloon-arrow-drop-shadow: 0 2px 2px var(--ck-color-shadow-drop);\n}\n\n.ck.ck-balloon-panel {\n\t@mixin ck-rounded-corners;\n\t@mixin ck-drop-shadow;\n\n\tmin-height: 15px;\n\n\tbackground: var(--ck-color-panel-background);\n\tborder: var(--ck-balloon-border-width) solid var(--ck-color-panel-border);\n\n\t&.ck-balloon-panel_with-arrow {\n\t\t&::before,\n\t\t&::after {\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-style: solid;\n\t\t}\n\t}\n\n\t&[class*="arrow_n"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width);\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: transparent transparent var(--ck-color-panel-border) transparent;\n\t\t\tmargin-top: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: transparent transparent var(--ck-color-panel-background) transparent;\n\t\t\tmargin-top: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&[class*="arrow_s"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width);\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: var(--ck-color-panel-border) transparent transparent;\n\t\t\tfilter: drop-shadow(var(--ck-balloon-arrow-drop-shadow));\n\t\t\tmargin-bottom: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: var(--ck-color-panel-background) transparent transparent transparent;\n\t\t\tmargin-bottom: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&[class*="arrow_e"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height);\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: transparent transparent transparent var(--ck-color-panel-border);\n\t\t\tmargin-right: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: transparent transparent transparent var(--ck-color-panel-background);\n\t\t\tmargin-right: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&[class*="arrow_w"] {\n\t\t&::before,\n\t\t&::after {\n\t\t\tborder-width: var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0;\n\t\t}\n\n\t\t&::before {\n\t\t\tborder-color: transparent var(--ck-color-panel-border) transparent transparent;\n\t\t\tmargin-left: calc( -1 * var(--ck-balloon-border-width) );\n\t\t}\n\n\t\t&::after {\n\t\t\tborder-color: transparent var(--ck-color-panel-background) transparent transparent;\n\t\t\tmargin-left: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_n {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 50%;\n\t\t\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_ne {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_s {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 50%;\n\t\t\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_sw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_se {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_sme {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: 25%;\n\t\t\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_smw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 25%;\n\t\t\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nme {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: 25%;\n\t\t\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_nmw {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: 25%;\n\t\t\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_e {\n\t\t&::before,\n\t\t&::after {\n\t\t\tright: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: 50%;\n\t\t}\n\t}\n\n\t&.ck-balloon-panel_arrow_w {\n\t\t&::before,\n\t\t&::after {\n\t\t\tleft: calc(-1 * var(--ck-balloon-arrow-height));\n\t\t\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\n\t\t\ttop: 50%;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]);const a=s},5659:(e,t,o)=>{const n=o(8156),i={};for(const e of Object.keys(n))i[n[e]]=e;const r={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};e.exports=r;for(const e of Object.keys(r)){if(!("channels"in r[e]))throw new Error("missing channels property: "+e);if(!("labels"in r[e]))throw new Error("missing channel labels property: "+e);if(r[e].labels.length!==r[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:o}=r[e];delete r[e].channels,delete r[e].labels,Object.defineProperty(r[e],"channels",{value:t}),Object.defineProperty(r[e],"labels",{value:o})}r.rgb.hsl=function(e){const t=e[0]/255,o=e[1]/255,n=e[2]/255,i=Math.min(t,o,n),r=Math.max(t,o,n),s=r-i;let a,l;r===i?a=0:t===r?a=(o-n)/s:o===r?a=2+(n-t)/s:n===r&&(a=4+(t-o)/s),a=Math.min(60*a,360),a<0&&(a+=360);const c=(i+r)/2;return l=r===i?0:c<=.5?s/(r+i):s/(2-r-i),[a,100*l,100*c]},r.rgb.hsv=function(e){let t,o,n,i,r;const s=e[0]/255,a=e[1]/255,l=e[2]/255,c=Math.max(s,a,l),d=c-Math.min(s,a,l),u=function(e){return(c-e)/6/d+.5};return 0===d?(i=0,r=0):(r=d/c,t=u(s),o=u(a),n=u(l),s===c?i=n-o:a===c?i=1/3+t-n:l===c&&(i=2/3+o-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*r,100*c]},r.rgb.hwb=function(e){const t=e[0],o=e[1];let n=e[2];const i=r.rgb.hsl(e)[0],s=1/255*Math.min(t,Math.min(o,n));return n=1-1/255*Math.max(t,Math.max(o,n)),[i,100*s,100*n]},r.rgb.cmyk=function(e){const t=e[0]/255,o=e[1]/255,n=e[2]/255,i=Math.min(1-t,1-o,1-n);return[100*((1-t-i)/(1-i)||0),100*((1-o-i)/(1-i)||0),100*((1-n-i)/(1-i)||0),100*i]},r.rgb.keyword=function(e){const t=i[e];if(t)return t;let o,r=1/0;for(const t of Object.keys(n)){const i=n[t],l=(a=i,((s=e)[0]-a[0])**2+(s[1]-a[1])**2+(s[2]-a[2])**2);l.04045?((t+.055)/1.055)**2.4:t/12.92,o=o>.04045?((o+.055)/1.055)**2.4:o/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92;return[100*(.4124*t+.3576*o+.1805*n),100*(.2126*t+.7152*o+.0722*n),100*(.0193*t+.1192*o+.9505*n)]},r.rgb.lab=function(e){const t=r.rgb.xyz(e);let o=t[0],n=t[1],i=t[2];o/=95.047,n/=100,i/=108.883,o=o>.008856?o**(1/3):7.787*o+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;return[116*n-16,500*(o-n),200*(n-i)]},r.hsl.rgb=function(e){const t=e[0]/360,o=e[1]/100,n=e[2]/100;let i,r,s;if(0===o)return s=255*n,[s,s,s];i=n<.5?n*(1+o):n+o-n*o;const a=2*n-i,l=[0,0,0];for(let e=0;e<3;e++)r=t+1/3*-(e-1),r<0&&r++,r>1&&r--,s=6*r<1?a+6*(i-a)*r:2*r<1?i:3*r<2?a+(i-a)*(2/3-r)*6:a,l[e]=255*s;return l},r.hsl.hsv=function(e){const t=e[0];let o=e[1]/100,n=e[2]/100,i=o;const r=Math.max(n,.01);n*=2,o*=n<=1?n:2-n,i*=r<=1?r:2-r;return[t,100*(0===n?2*i/(r+i):2*o/(n+o)),100*((n+o)/2)]},r.hsv.rgb=function(e){const t=e[0]/60,o=e[1]/100;let n=e[2]/100;const i=Math.floor(t)%6,r=t-Math.floor(t),s=255*n*(1-o),a=255*n*(1-o*r),l=255*n*(1-o*(1-r));switch(n*=255,i){case 0:return[n,l,s];case 1:return[a,n,s];case 2:return[s,n,l];case 3:return[s,a,n];case 4:return[l,s,n];case 5:return[n,s,a]}},r.hsv.hsl=function(e){const t=e[0],o=e[1]/100,n=e[2]/100,i=Math.max(n,.01);let r,s;s=(2-o)*n;const a=(2-o)*i;return r=o*i,r/=a<=1?a:2-a,r=r||0,s/=2,[t,100*r,100*s]},r.hwb.rgb=function(e){const t=e[0]/360;let o=e[1]/100,n=e[2]/100;const i=o+n;let r;i>1&&(o/=i,n/=i);const s=Math.floor(6*t),a=1-n;r=6*t-s,1&s&&(r=1-r);const l=o+r*(a-o);let c,d,u;switch(s){default:case 6:case 0:c=a,d=l,u=o;break;case 1:c=l,d=a,u=o;break;case 2:c=o,d=a,u=l;break;case 3:c=o,d=l,u=a;break;case 4:c=l,d=o,u=a;break;case 5:c=a,d=o,u=l}return[255*c,255*d,255*u]},r.cmyk.rgb=function(e){const t=e[0]/100,o=e[1]/100,n=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,o*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i))]},r.xyz.rgb=function(e){const t=e[0]/100,o=e[1]/100,n=e[2]/100;let i,r,s;return i=3.2406*t+-1.5372*o+-.4986*n,r=-.9689*t+1.8758*o+.0415*n,s=.0557*t+-.204*o+1.057*n,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,r=r>.0031308?1.055*r**(1/2.4)-.055:12.92*r,s=s>.0031308?1.055*s**(1/2.4)-.055:12.92*s,i=Math.min(Math.max(0,i),1),r=Math.min(Math.max(0,r),1),s=Math.min(Math.max(0,s),1),[255*i,255*r,255*s]},r.xyz.lab=function(e){let t=e[0],o=e[1],n=e[2];t/=95.047,o/=100,n/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,o=o>.008856?o**(1/3):7.787*o+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;return[116*o-16,500*(t-o),200*(o-n)]},r.lab.xyz=function(e){let t,o,n;o=(e[0]+16)/116,t=e[1]/500+o,n=o-e[2]/200;const i=o**3,r=t**3,s=n**3;return o=i>.008856?i:(o-16/116)/7.787,t=r>.008856?r:(t-16/116)/7.787,n=s>.008856?s:(n-16/116)/7.787,t*=95.047,o*=100,n*=108.883,[t,o,n]},r.lab.lch=function(e){const t=e[0],o=e[1],n=e[2];let i;i=360*Math.atan2(n,o)/2/Math.PI,i<0&&(i+=360);return[t,Math.sqrt(o*o+n*n),i]},r.lch.lab=function(e){const t=e[0],o=e[1],n=e[2]/360*2*Math.PI;return[t,o*Math.cos(n),o*Math.sin(n)]},r.rgb.ansi16=function(e,t=null){const[o,n,i]=e;let s=null===t?r.rgb.hsv(e)[2]:t;if(s=Math.round(s/50),0===s)return 30;let a=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(o/255));return 2===s&&(a+=60),a},r.hsv.ansi16=function(e){return r.rgb.ansi16(r.hsv.rgb(e),e[2])},r.rgb.ansi256=function(e){const t=e[0],o=e[1],n=e[2];if(t===o&&o===n)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;return 16+36*Math.round(t/255*5)+6*Math.round(o/255*5)+Math.round(n/255*5)},r.ansi16.rgb=function(e){let t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const o=.5*(1+~~(e>50));return[(1&t)*o*255,(t>>1&1)*o*255,(t>>2&1)*o*255]},r.ansi256.rgb=function(e){if(e>=232){const t=10*(e-232)+8;return[t,t,t]}let t;e-=16;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},r.rgb.hex=function(e){const t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},r.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let o=t[0];3===t[0].length&&(o=o.split("").map((e=>e+e)).join(""));const n=parseInt(o,16);return[n>>16&255,n>>8&255,255&n]},r.rgb.hcg=function(e){const t=e[0]/255,o=e[1]/255,n=e[2]/255,i=Math.max(Math.max(t,o),n),r=Math.min(Math.min(t,o),n),s=i-r;let a,l;return a=s<1?r/(1-s):0,l=s<=0?0:i===t?(o-n)/s%6:i===o?2+(n-t)/s:4+(t-o)/s,l/=6,l%=1,[360*l,100*s,100*a]},r.hsl.hcg=function(e){const t=e[1]/100,o=e[2]/100,n=o<.5?2*t*o:2*t*(1-o);let i=0;return n<1&&(i=(o-.5*n)/(1-n)),[e[0],100*n,100*i]},r.hsv.hcg=function(e){const t=e[1]/100,o=e[2]/100,n=t*o;let i=0;return n<1&&(i=(o-n)/(1-n)),[e[0],100*n,100*i]},r.hcg.rgb=function(e){const t=e[0]/360,o=e[1]/100,n=e[2]/100;if(0===o)return[255*n,255*n,255*n];const i=[0,0,0],r=t%1*6,s=r%1,a=1-s;let l=0;switch(Math.floor(r)){case 0:i[0]=1,i[1]=s,i[2]=0;break;case 1:i[0]=a,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=s;break;case 3:i[0]=0,i[1]=a,i[2]=1;break;case 4:i[0]=s,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=a}return l=(1-o)*n,[255*(o*i[0]+l),255*(o*i[1]+l),255*(o*i[2]+l)]},r.hcg.hsv=function(e){const t=e[1]/100,o=t+e[2]/100*(1-t);let n=0;return o>0&&(n=t/o),[e[0],100*n,100*o]},r.hcg.hsl=function(e){const t=e[1]/100,o=e[2]/100*(1-t)+.5*t;let n=0;return o>0&&o<.5?n=t/(2*o):o>=.5&&o<1&&(n=t/(2*(1-o))),[e[0],100*n,100*o]},r.hcg.hwb=function(e){const t=e[1]/100,o=t+e[2]/100*(1-t);return[e[0],100*(o-t),100*(1-o)]},r.hwb.hcg=function(e){const t=e[1]/100,o=1-e[2]/100,n=o-t;let i=0;return n<1&&(i=(o-n)/(1-n)),[e[0],100*n,100*i]},r.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},r.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},r.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},r.gray.hsl=function(e){return[0,0,e[0]]},r.gray.hsv=r.gray.hsl,r.gray.hwb=function(e){return[0,100,e[0]]},r.gray.cmyk=function(e){return[0,0,0,e[0]]},r.gray.lab=function(e){return[e[0],0,0]},r.gray.hex=function(e){const t=255&Math.round(e[0]/100*255),o=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(o.length)+o},r.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},5667:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-menu-bar__menu>.ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-menu-bar__menu>.ck-menu-bar__menu__button{width:100%}.ck.ck-menu-bar__menu>.ck-menu-bar__menu__button>.ck-button__label{flex-grow:1;overflow:hidden;text-overflow:ellipsis}.ck.ck-menu-bar__menu>.ck-menu-bar__menu__button.ck-disabled>.ck-button__label{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-menu-bar__menu>.ck-menu-bar__menu__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-menu-bar__menu>.ck-menu-bar__menu__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button{min-height:unset;padding:var(--ck-spacing-small) var(--ck-spacing-medium)}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button .ck-button__label{line-height:unset;overflow:visible;width:unset}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button .ck-icon{display:none}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button{border-radius:0}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{margin-left:var(--ck-spacing-standard);margin-right:calc(var(--ck-spacing-small)*-1);transform:rotate(-90deg)}[dir=rtl] .ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{left:var(--ck-spacing-standard);margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small);transform:rotate(90deg)}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button.ck-disabled>.ck-menu-bar__menu__button__arrow{opacity:var(--ck-disabled-opacity)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenubutton.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenubutton.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AAMC,mFACC,mBAAoB,CACpB,2BACD,CCIA,iDACC,UAuBD,CArBC,mEACC,WAAY,CACZ,eAAgB,CAChB,sBACD,CAEA,+ECbD,kCDeC,CAGC,qFACC,oCACD,CAIA,qFACC,qCACD,CAOF,6EAEC,gBAAiB,CADjB,wDAsBD,CAnBC,+FAEC,iBAAkB,CAMlB,gBAAiB,CAPjB,WAQD,CAEA,mFACC,2BAA4B,CAC5B,4BACD,CAEA,sFACC,YACD,CAMD,mFACC,eA+BD,CA7BC,qHACC,mCAuBD,CE3FD,+HF0EG,sCAAuC,CAGvC,6CAAgD,CANhD,wBErEH,CAFA,+HFmFG,+BAAgC,CAMhC,4CAA+C,CAH/C,oCAAqC,CALrC,uBE/EH,CF2FC,iIC1FD,kCD4FC",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-menu-bar__menu {\n\t& > .ck-menu-bar__menu__button > .ck-menu-bar__menu__button__arrow {\n\t\tpointer-events: none;\n\t\tz-index: var(--ck-z-default);\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_disabled.css";\n@import "../../mixins/_button.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-menu-bar__menu {\n\t/*\n\t * All menu buttons.\n\t */\n\t& > .ck-menu-bar__menu__button {\n\t\twidth: 100%;\n\n\t\t& > .ck-button__label {\n\t\t\tflex-grow: 1;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t&.ck-disabled > .ck-button__label {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t@mixin ck-dir ltr {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\tpadding-left: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t&:not(.ck-button_with-text) {\n\t\t\t\tpadding-right: var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Top-level menu buttons only.\n\t */\n\t&.ck-menu-bar__menu_top-level > .ck-menu-bar__menu__button {\n\t\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\n\t\tmin-height: unset;\n\n\t\t& .ck-button__label {\n\t\t\twidth: unset;\n\t\t\tline-height: unset;\n\n\t\t\t/*\n\t\t\t * Top-level buttons don\'t use ellipsis and overflow: hidden clips descenders.\n\t\t\t * See https://github.com/ckeditor/ckeditor5/issues/17422.\n\t\t\t */\n\t\t\toverflow: visible;\n\t\t}\n\n\t\t&.ck-on {\n\t\t\tborder-bottom-left-radius: 0;\n\t\t\tborder-bottom-right-radius: 0;\n\t\t}\n\n\t\t& .ck-icon {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t/*\n\t * Sub-menu buttons.\n\t */\n\t&:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button {\n\t\tborder-radius: 0;\n\n\t\t& > .ck-menu-bar__menu__button__arrow {\n\t\t\twidth: var(--ck-dropdown-arrow-size);\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\ttransform: rotate(-90deg);\n\n\t\t\t\t/* A space to accommodate the triangle. */\n\t\t\t\tmargin-left: var(--ck-spacing-standard);\n\n\t\t\t\t/* Nudge the arrow gently to the right because its center of gravity is to the left */\n\t\t\t\tmargin-right: calc(-1 * var(--ck-spacing-small));\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\ttransform: rotate(90deg);\n\n\t\t\t\tleft: var(--ck-spacing-standard);\n\n\t\t\t\t/* A space to accommodate the triangle. */\n\t\t\t\tmargin-right: var(--ck-spacing-small);\n\n\t\t\t\t/* Nudge the arrow gently to the left because its center of gravity is to the right (after rotation). */\n\t\t\t\tmargin-left: calc(-1 * var(--ck-spacing-small));\n\t\t\t}\n\t\t}\n\n\t\t&.ck-disabled > .ck-menu-bar__menu__button__arrow {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},5704:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,'.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{align-items:center;flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{align-items:center;display:flex;flex-direction:column-reverse}.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{bottom:calc(var(--ck-table-properties-error-arrow-size)*-1);left:50%;position:absolute;transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:"";left:50%;position:absolute;top:calc(var(--ck-table-properties-error-arrow-size)*-1);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{max-width:80px;min-width:80px;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{animation:ck-table-form-labeled-view-status-appear .15s ease both;background:var(--ck-color-base-error);border-radius:0;color:var(--ck-color-base-background);min-width:var(--ck-table-properties-min-error-width);padding:var(--ck-spacing-small) var(--ck-spacing-medium);text-align:center}.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:after{border-color:transparent transparent var(--ck-color-base-error) transparent;border-style:solid;border-width:0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size)}@media (prefers-reduced-motion:reduce){.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:none}}.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}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tableform.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableform.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAWE,wHACC,cACD,CAEA,8DAEC,kBAAmB,CADnB,cAgBD,CAbC,qFAGC,kBAAmB,CAFnB,YAAa,CACb,6BAMD,CAEA,sMACC,WACD,CAIF,4CAEC,iBAoBD,CAlBC,8EAGC,2DAAgE,CADhE,QAAS,CADT,iBAAkB,CAGlB,8BAA+B,CAG/B,SAUD,CAPC,oFACC,UAAW,CAGX,QAAS,CAFT,iBAAkB,CAClB,wDAA6D,CAE7D,0BACD,CChDH,MACC,0CAA2C,CAC3C,2CACD,CAMI,2FACC,kCAAmC,CACnC,iBACD,CAGD,8KAIC,cAAe,CADf,cAAe,CADf,UAGD,CAGD,8DACC,SAcD,CAZC,yMAEC,QACD,CAEA,iGACC,mBAAoB,CACpB,oBAAqB,CACrB,wCAAyC,CACzC,6CAA8C,CAC9C,gCACD,CAIF,4CACC,sCA6BD,CA3BC,8EAgBC,iEAAkE,CAblE,qCAAsC,CC3CxC,eAAgB,CD4Cd,qCAAsC,CAEtC,oDAAqD,CADrD,wDAAyD,CAEzD,iBAcD,CC3DD,mMAEC,qCAED,CD4CE,oFACC,2EAA4E,CAE5E,kBAAmB,CADnB,kJAED,CAIA,uCAlBD,8EAmBE,cAEF,CADC,CAID,6GACC,YACD,CAIF,oDACC,GACC,SACD,CAEA,GACC,SACD,CACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-table-form {\n\t& .ck-form__row {\n\t\t&.ck-table-form__border-row {\n\t\t\tflex-wrap: wrap;\n\t\t}\n\n\t\t&.ck-table-form__background-row {\n\t\t\tflex-wrap: wrap;\n\t\t}\n\n\t\t&.ck-table-form__dimensions-row {\n\t\t\tflex-wrap: wrap;\n\t\t\talign-items: center;\n\n\t\t\t& .ck-labeled-field-view {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column-reverse;\n\t\t\t\talign-items: center;\n\n\t\t\t\t& .ck.ck-dropdown {\n\t\t\t\t\tflex-grow: 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t& .ck-table-form__dimension-operator {\n\t\t\t\tflex-grow: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-labeled-field-view {\n\t\t/* Allow absolute positioning of the status (error) balloons. */\n\t\tposition: relative;\n\n\t\t& .ck.ck-labeled-field-view__status {\n\t\t\tposition: absolute;\n\t\t\tleft: 50%;\n\t\t\tbottom: calc( -1 * var(--ck-table-properties-error-arrow-size) );\n\t\t\ttransform: translate(-50%,100%);\n\n\t\t\t/* Make sure the balloon status stays on top of other form elements. */\n\t\t\tz-index: 1;\n\n\t\t\t/* The arrow pointing towards the field. */\n\t\t\t&::after {\n\t\t\t\tcontent: "";\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: calc( -1 * var(--ck-table-properties-error-arrow-size) );\n\t\t\t\tleft: 50%;\n\t\t\t\ttransform: translateX( -50% );\n\t\t\t}\n\t\t}\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../mixins/_rounded.css";\n\n:root {\n\t--ck-table-properties-error-arrow-size: 6px;\n\t--ck-table-properties-min-error-width: 150px;\n}\n\n.ck.ck-table-form {\n\t& .ck-form__row {\n\t\t&.ck-table-form__border-row {\n\t\t\t& .ck-labeled-field-view {\n\t\t\t\t& > .ck-label {\n\t\t\t\t\tfont-size: var(--ck-font-size-tiny);\n\t\t\t\t\ttext-align: center;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t& .ck-table-form__border-style,\n\t\t\t& .ck-table-form__border-width {\n\t\t\t\twidth: 80px;\n\t\t\t\tmin-width: 80px;\n\t\t\t\tmax-width: 80px;\n\t\t\t}\n\t\t}\n\n\t\t&.ck-table-form__dimensions-row {\n\t\t\tpadding: 0;\n\n\t\t\t& .ck-table-form__dimensions-row__width,\n\t\t\t& .ck-table-form__dimensions-row__height {\n\t\t\t\tmargin: 0\n\t\t\t}\n\n\t\t\t& .ck-table-form__dimension-operator {\n\t\t\t\talign-self: flex-end;\n\t\t\t\tdisplay: inline-block;\n\t\t\t\theight: var(--ck-ui-component-min-height);\n\t\t\t\tline-height: var(--ck-ui-component-min-height);\n\t\t\t\tmargin: 0 var(--ck-spacing-small);\n\t\t\t}\n\t\t}\n\t}\n\n\t& .ck.ck-labeled-field-view {\n\t\tpadding-top: var(--ck-spacing-standard);\n\n\t\t& .ck.ck-labeled-field-view__status {\n\t\t\t@mixin ck-rounded-corners;\n\n\t\t\tbackground: var(--ck-color-base-error);\n\t\t\tcolor: var(--ck-color-base-background);\n\t\t\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\n\t\t\tmin-width: var(--ck-table-properties-min-error-width);\n\t\t\ttext-align: center;\n\n\t\t\t/* The arrow pointing towards the field. */\n\t\t\t&::after {\n\t\t\t\tborder-color: transparent transparent var(--ck-color-base-error) transparent;\n\t\t\t\tborder-width: 0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size);\n\t\t\t\tborder-style: solid;\n\t\t\t}\n\n\t\t\tanimation: ck-table-form-labeled-view-status-appear .15s ease both;\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\tanimation: none;\n\t\t\t}\n\t\t}\n\n\t\t/* Hide the error balloon when the field is blurred. Makes the experience much more clear. */\n\t\t& .ck-input.ck-error:not(:focus) + .ck.ck-labeled-field-view__status {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n@keyframes ck-table-form-labeled-view-status-appear {\n\t0% {\n\t\topacity: 0;\n\t}\n\n\t100% {\n\t\topacity: 1;\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]);const a=s},5706:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-spinner-container{display:block;position:relative}.ck.ck-spinner{left:0;margin:0 auto;position:absolute;right:0;top:50%;transform:translateY(-50%);z-index:1}:root{--ck-toolbar-spinner-size:18px}.ck.ck-spinner-container{animation:ck-spinner-rotate 1.5s linear infinite;height:var(--ck-toolbar-spinner-size);width:var(--ck-toolbar-spinner-size)}@media (prefers-reduced-motion:reduce){.ck.ck-spinner-container{animation-duration:3s}}.ck.ck-spinner{border:2px solid var(--ck-color-text);border-radius:50%;border-top:2px solid transparent;height:var(--ck-toolbar-spinner-size);width:var(--ck-toolbar-spinner-size)}@keyframes ck-spinner-rotate{to{transform:rotate(1turn)}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/spinner/spinner.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/spinner/spinner.css"],names:[],mappings:"AASA,yBACC,aAAc,CACd,iBACD,CAEA,eAGC,MAAO,CAEP,aAAc,CAJd,iBAAkB,CAGlB,OAAQ,CAFR,OAAQ,CAIR,0BAA2B,CAC3B,SACD,CCjBA,MACC,8BACD,CAEA,yBAGC,gDAAiD,CADjD,qCAAsC,CADtC,oCAOD,CAHC,uCALD,yBAME,qBAEF,CADC,CAGD,eAKC,qCAA6B,CAF7B,iBAAkB,CAElB,gCAA6B,CAH7B,qCAAsC,CADtC,oCAKD,CAEA,6BACC,GACC,uBACD,CACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-toolbar-spinner-size: 18px;\n}\n\n.ck.ck-spinner-container {\n\tdisplay: block;\n\tposition: relative;\n}\n\n.ck.ck-spinner {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 0;\n\tright: 0;\n\tmargin: 0 auto;\n\ttransform: translateY(-50%);\n\tz-index: 1;\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-toolbar-spinner-size: 18px;\n}\n\n.ck.ck-spinner-container {\n\twidth: var(--ck-toolbar-spinner-size);\n\theight: var(--ck-toolbar-spinner-size);\n\tanimation: 1.5s infinite ck-spinner-rotate linear;\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\tanimation-duration: 3s;\n\t}\n}\n\n.ck.ck-spinner {\n\twidth: var(--ck-toolbar-spinner-size);\n\theight: var(--ck-toolbar-spinner-size);\n\tborder-radius: 50%;\n\tborder: 2px solid var(--ck-color-text);\n\tborder-top-color: transparent;\n}\n\n@keyframes ck-spinner-rotate {\n\tto {\n\t\ttransform: rotate(360deg)\n\t}\n}\n"],sourceRoot:""}]);const a=s},6016:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".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{min-width:100%;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)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/formrow.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/formrow.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AAKA,iBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAaD,CAVC,iCACC,WACD,CAGC,wHAEC,sBACD,CCbF,iBACC,4DA2BD,CC7BC,6CDQG,mCCNH,CAFA,6CDYG,oCCVH,CDeA,2BAEC,cAAe,CADf,UAED,CAEA,2CACC,kCAKD,CAHC,wEACC,0BACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-form__row {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tjustify-content: space-between;\n\n\t/* Ignore labels that work as fieldset legends */\n\t& > *:not(.ck-label) {\n\t\tflex-grow: 1;\n\t}\n\n\t&.ck-table-form__action-row {\n\t\t& .ck-button-save,\n\t\t& .ck-button-cancel {\n\t\t\tjustify-content: center;\n\t\t}\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-form__row {\n\tpadding: var(--ck-spacing-standard) var(--ck-spacing-large) 0;\n\n\t/* Ignore labels that work as fieldset legends */\n\t& > *:not(.ck-label) {\n\t\t& + * {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: var(--ck-spacing-large);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-right: var(--ck-spacing-large);\n\t\t\t}\n\t\t}\n\t}\n\n\t& > .ck-label {\n\t\twidth: 100%;\n\t\tmin-width: 100%;\n\t}\n\n\t&.ck-table-form__action-row {\n\t\tmargin-top: var(--ck-spacing-large);\n\n\t\t& .ck-button .ck-button__label {\n\t\t\tcolor: var(--ck-color-text);\n\t\t}\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},6048:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-list{display:flex;flex-direction:column;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.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{background:var(--ck-color-list-background);border-radius:0;list-style-type:none;padding:var(--ck-spacing-small) 0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list__item{cursor:default;min-width:15em}.ck.ck-list__item>.ck-button:not(.ck-list-item-button){border-radius:0;min-height:unset;padding:var(--ck-spacing-tiny) calc(var(--ck-spacing-standard)*2);width:100%}[dir=ltr] .ck.ck-list__item>.ck-button:not(.ck-list-item-button){text-align:left}[dir=rtl] .ck.ck-list__item>.ck-button:not(.ck-list-item-button){text-align:right}.ck.ck-list__item>.ck-button:not(.ck-list-item-button) .ck-button__label{line-height:calc(var(--ck-line-height-base)*var(--ck-font-size-base))}.ck.ck-list__item>.ck-button:not(.ck-list-item-button):active{box-shadow:none}.ck.ck-list__item>.ck-button.ck-on:not(.ck-list-item-button){background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item>.ck-button.ck-on:not(.ck-list-item-button):active{box-shadow:none}.ck.ck-list__item>.ck-button.ck-on:not(.ck-list-item-button):hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item>.ck-button.ck-on:not(.ck-list-item-button):focus:not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item>.ck-button:not(.ck-list-item-button):hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item>.ck-button.ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item>.ck-button.ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck-list .ck-list__group{padding-top:var(--ck-spacing-medium)}.ck-list .ck-list__group:first-child{padding-top:0}:not(.ck-hidden)~.ck-list .ck-list__group{border-top:1px solid var(--ck-color-base-border)}.ck-list .ck-list__group>.ck-label{font-size:11px;font-weight:700;padding:var(--ck-spacing-medium) var(--ck-spacing-large) 0}.ck.ck-list__separator{background:var(--ck-color-base-border);height:1px;margin:var(--ck-spacing-small) 0;width:100%}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/list/list.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/list/list.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AAOA,YAGC,YAAa,CACb,qBAAsB,CCFtB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBDaD,CAZC,2DAEC,aACD,CAKA,kCACC,iBAAkB,CAClB,2BACD,CEdD,YAIC,0CAA2C,CCH3C,eAAgB,CDEhB,oBAAqB,CAIrB,iCACD,CCLC,+DAEC,qCAED,CDGD,kBACC,cAAe,CAGf,cA4DD,CA1DC,uDAIC,eAAgB,CAFhB,gBAAiB,CADjB,iEAAoE,CAEpE,UAwCD,CE/DA,iEF2BE,eEzBF,CAFA,iEF+BE,gBE7BF,CFgCC,yEAEC,qEACD,CAEA,8DACC,eACD,CAEA,6DACC,oDAAqD,CACrD,yCAaD,CAXC,oEACC,eACD,CAEA,qFACC,0DACD,CAEA,qFACC,4CACD,CAGD,+EACC,uDACD,CAMA,mDACC,0CAA2C,CAC3C,aAMD,CAJC,2EACC,uDAAwD,CACxD,aACD,CAKH,yBACC,oCAiBD,CAdC,qCACC,aACD,CAGA,0CACC,gDACD,CAEA,mCACC,cAAe,CACf,eAAiB,CACjB,0DACD,CAGD,uBAGC,sCAAuC,CAFvC,UAAW,CAKX,gCAAiC,CAJjC,UAKD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../mixins/_unselectable.css";\n\n.ck.ck-list {\n\t@mixin ck-unselectable;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t& .ck-list__item,\n\t& .ck-list__separator {\n\t\tdisplay: block;\n\t}\n\n\t/* Make sure that whatever child of the list item gets focus, it remains on the\n\ttop. Thanks to that, styles like box-shadow, outline, etc. are not masked by\n\tadjacent list items. */\n\t& .ck-list__item > *:focus {\n\t\tposition: relative;\n\t\tz-index: var(--ck-z-default);\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-list {\n\t@mixin ck-rounded-corners;\n\n\tlist-style-type: none;\n\tbackground: var(--ck-color-list-background);\n\n\t/* A spacing at the beginning and end of the list */\n\tpadding: var(--ck-spacing-small) 0;\n}\n\n.ck.ck-list__item {\n\tcursor: default;\n\n\t/* Almost as wide as menu bar items. */\n\tmin-width: 15em;\n\n\t& > .ck-button:not(.ck-list-item-button) {\n\t\tpadding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard));\n\t\tmin-height: unset;\n\t\twidth: 100%;\n\t\tborder-radius: 0;\n\n\t\t@mixin ck-dir ltr {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttext-align: right;\n\t\t}\n\n\t\t& .ck-button__label {\n\t\t\t/* https://github.com/ckeditor/ckeditor5-heading/issues/63 */\n\t\t\tline-height: calc(var(--ck-line-height-base) * var(--ck-font-size-base));\n\t\t}\n\n\t\t&:active {\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&.ck-on {\n\t\t\tbackground: var(--ck-color-list-button-on-background);\n\t\t\tcolor: var(--ck-color-list-button-on-text);\n\n\t\t\t&:active {\n\t\t\t\tbox-shadow: none;\n\t\t\t}\n\n\t\t\t&:hover:not(.ck-disabled) {\n\t\t\t\tbackground: var(--ck-color-list-button-on-background-focus);\n\t\t\t}\n\n\t\t\t&:focus:not(.ck-disabled) {\n\t\t\t\tborder-color: var(--ck-color-base-background);\n\t\t\t}\n\t\t}\n\n\t\t&:hover:not(.ck-disabled) {\n\t\t\tbackground: var(--ck-color-list-button-hover-background);\n\t\t}\n\t}\n\n\t/* It\'s unnecessary to change the background/text of a switch toggle; it has different ways\n\tof conveying its state (like the switcher) */\n\t& > .ck-button.ck-switchbutton {\n\t\t&.ck-on {\n\t\t\tbackground: var(--ck-color-list-background);\n\t\t\tcolor: inherit;\n\n\t\t\t&:hover:not(.ck-disabled) {\n\t\t\t\tbackground: var(--ck-color-list-button-hover-background);\n\t\t\t\tcolor: inherit;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.ck-list .ck-list__group {\n\tpadding-top: var(--ck-spacing-medium);\n\n\t/* Lists come with an inner vertical padding. Don\'t duplicate it. */\n\t&:first-child {\n\t\tpadding-top: 0;\n\t}\n\n\t/* The group should have a border when it\'s not the first item. */\n\t*:not(.ck-hidden) ~ & {\n\t\tborder-top: 1px solid var(--ck-color-base-border);\n\t}\n\n\t& > .ck-label {\n\t\tfont-size: 11px;\n\t\tfont-weight: bold;\n\t\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large) 0;\n\t}\n}\n\n.ck.ck-list__separator {\n\theight: 1px;\n\twidth: 100%;\n\tbackground: var(--ck-color-base-border);\n\n\t/* Give the separator some air */\n\tmargin: var(--ck-spacing-small) 0;\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},6186:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-heading_heading1 .ck-button__label{font-size:20px}.ck.ck-heading_heading2 .ck-button__label{font-size:17px}.ck.ck-heading_heading3 .ck-button__label{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}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-heading/theme/heading.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-heading/heading.css"],names:[],mappings:"AAKA,0CACC,cACD,CAEA,0CACC,cACD,CAEA,0CACC,cACD,CAEA,+BACC,eACD,CCZC,2EACC,SACD,CAEA,uEACC,cACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-heading_heading1 .ck-button__label {\n\tfont-size: 20px;\n}\n\n.ck.ck-heading_heading2 .ck-button__label {\n\tfont-size: 17px;\n}\n\n.ck.ck-heading_heading3 .ck-button__label {\n\tfont-size: 14px;\n}\n\n.ck[class*="ck-heading_heading"] {\n\tfont-weight: bold;\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/* Resize dropdown's button label. */\n.ck.ck-dropdown.ck-heading-dropdown {\n\t& .ck-dropdown__button .ck-button__label {\n\t\twidth: 8em;\n\t}\n\n\t& .ck-dropdown__panel .ck-list__item {\n\t\tmin-width: 18em;\n\t}\n}\n"],sourceRoot:""}]);const a=s},6314:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var o="",n=void 0!==t[5];return t[4]&&(o+="@supports (".concat(t[4],") {")),t[2]&&(o+="@media ".concat(t[2]," {")),n&&(o+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),o+=e(t),n&&(o+="}"),t[2]&&(o+="}"),t[4]&&(o+="}"),o})).join("")},t.i=function(e,o,n,i,r){"string"==typeof e&&(e=[[null,e,void 0]]);var s={};if(n)for(var a=0;a0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=r),o&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=o):d[2]=o),i&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=i):d[4]="".concat(i)),t.push(d))}},t}},6365:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".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-labeled-field-label-default-position-x:var(--ck-spacing-medium);--ck-labeled-field-label-default-position-y:calc(var(--ck-font-size-base)*0.6);--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{background:var(--ck-color-labeled-field-label-background);font-weight:400;line-height:normal;max-width:100%;overflow:hidden;padding:0 calc(var(--ck-font-size-tiny)*.5);pointer-events:none;text-overflow:ellipsis;top:0;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);transform-origin:0 0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0;transform:translate(calc(var(--ck-spacing-medium)*-1),-6px) scale(.75);transform-origin:100% 0}@media (prefers-reduced-motion:reduce){.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transition:none}}.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)}.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder)>.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):not(.ck-error)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:transparent;max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));padding:0}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder)>.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):not(.ck-error)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-labeled-field-label-default-position-x),var(--ck-labeled-field-label-default-position-y)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder)>.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):not(.ck-error)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-labeled-field-label-default-position-x)*-1),var(--ck-labeled-field-label-default-position-y)) scale(1)}.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))}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/labeledfield/labeledfieldview.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AAMC,mEACC,YAAa,CACb,iBACD,CAEA,uCACC,aAAc,CACd,iBACD,CCND,MACC,kEAAsE,CACtE,gFAAiF,CACjF,oEAAqE,CACrE,8EAAiF,CACjF,yEACD,CAEA,0BCLC,eDmHD,CCjHC,2FAEC,qCAED,CDEA,mEACC,UAwCD,CAtCC,gFAkBC,yDAA0D,CAG1D,eAAmB,CADnB,kBAAoB,CAOpB,cAAe,CAFf,eAAgB,CANhB,2CAA8C,CAH9C,mBAAoB,CAQpB,sBAAuB,CAvBvB,KAAQ,CA4BR,+JAQD,CErDD,0FFoBG,MAAS,CAGT,6DAA+D,CAF/D,oBEnBH,CAFA,0FF2BG,OAAU,CAEV,sEAA0E,CAD1E,uBE1BH,CFgDE,uCAlCD,gFAmCE,eAEF,CADC,CASD,mKACC,gCACD,CAGD,yDACC,mCAAoC,CACpC,kCAAmC,CAInC,kBAKD,CAHC,6FACC,gCACD,CAID,4OAEC,yCACD,CAIA,uWAaC,sBAAuB,CAFvB,iEAAkE,CAGlE,SACD,CEtGA,2XF0FE,+HExFF,CAFA,2XF8FE,wIE5FF,CFyGA,8FACC,sBACD,CAGA,yIACC,SACD,CAGA,kMACC,8HACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-labeled-field-view {\n\t& > .ck.ck-labeled-field-view__input-wrapper {\n\t\tdisplay: flex;\n\t\tposition: relative;\n\t}\n\n\t& .ck.ck-label {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "../../../mixins/_rounded.css";\n\n:root {\n\t--ck-labeled-field-view-transition: .1s cubic-bezier(0, 0, 0.24, 0.95);\n\t--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-spacing-medium);\n\t--ck-labeled-field-label-default-position-x: var(--ck-spacing-medium);\n\t--ck-labeled-field-label-default-position-y: calc(0.6 * var(--ck-font-size-base));\n\t--ck-color-labeled-field-label-background: var(--ck-color-base-background);\n}\n\n.ck.ck-labeled-field-view {\n\t@mixin ck-rounded-corners;\n\n\t& > .ck.ck-labeled-field-view__input-wrapper {\n\t\twidth: 100%;\n\n\t\t& > .ck.ck-label {\n\t\t\ttop: 0px;\n\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tleft: 0px;\n\t\t\t\ttransform-origin: 0 0;\n\t\t\t\t/* By default, display the label scaled down above the field. */\n\t\t\t\ttransform: translate(var(--ck-spacing-medium), -6px) scale(.75);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tright: 0px;\n\t\t\t\ttransform-origin: 100% 0;\n\t\t\t\ttransform: translate(calc(-1 * var(--ck-spacing-medium)), -6px) scale(.75);\n\t\t\t}\n\n\t\t\tpointer-events: none;\n\n\t\t\tbackground: var(--ck-color-labeled-field-label-background);\n\t\t\tpadding: 0 calc(.5 * var(--ck-font-size-tiny));\n\t\t\tline-height: initial;\n\t\t\tfont-weight: normal;\n\n\t\t\t/* Prevent overflow when the label is longer than the input */\n\t\t\ttext-overflow: ellipsis;\n\t\t\toverflow: hidden;\n\n\t\t\tmax-width: 100%;\n\n\t\t\ttransition:\n\t\t\t\ttransform var(--ck-labeled-field-view-transition),\n\t\t\t\tpadding var(--ck-labeled-field-view-transition),\n\t\t\t\tbackground var(--ck-labeled-field-view-transition);\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ck-error {\n\t\t& > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\n\t\t\tcolor: var(--ck-color-base-error);\n\t\t}\n\n\t\t& .ck-input:not([readonly]) + .ck.ck-label {\n\t\t\tcolor: var(--ck-color-base-error);\n\t\t}\n\t}\n\n\t& .ck-labeled-field-view__status {\n\t\tfont-size: var(--ck-font-size-small);\n\t\tmargin-top: var(--ck-spacing-small);\n\n\t\t/* Let the info wrap to the next line to avoid stretching the layout horizontally.\n\t\tThe status could be very long. */\n\t\twhite-space: normal;\n\n\t\t&.ck-labeled-field-view__status_error {\n\t\t\tcolor: var(--ck-color-base-error);\n\t\t}\n\t}\n\n\t/* Disabled fields and fields that have no focus should fade out. */\n\t&.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,\n\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\n\t\tcolor: var(--ck-color-input-disabled-text);\n\t}\n\n\t/* Fields that are disabled or not focused and without a placeholder should have full-sized labels. */\n\t/* stylelint-disable-next-line no-descending-specificity */\n\t&.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,\n\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder):not(.ck-error) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\n\t\t@mixin ck-dir ltr {\n\t\t\ttransform: translate(var(--ck-labeled-field-label-default-position-x), var(--ck-labeled-field-label-default-position-y)) scale(1);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttransform: translate(calc(-1 * var(--ck-labeled-field-label-default-position-x)), var(--ck-labeled-field-label-default-position-y)) scale(1);\n\t\t}\n\n\t\t/* Compensate for the default translate position. */\n\t\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width));\n\n\t\tbackground: transparent;\n\t\tpadding: 0;\n\t}\n\n\t/*------ DropdownView integration ----------------------------------------------------------------------------------- */\n\n\t/* Make sure dropdown\' background color in any of dropdown\'s state does not collide with labeled field. */\n\t& > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck.ck-button {\n\t\tbackground: transparent;\n\t}\n\n\t/* When the dropdown is "empty", the labeled field label replaces its label. */\n\t&.ck-labeled-field-view_empty > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck-button > .ck-button__label {\n\t\topacity: 0;\n\t}\n\n\t/* Make sure the label of the empty, unfocused input does not cover the dropdown arrow. */\n\t&.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 {\n\t\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard));\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},6531:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-editor__editable span[data-ck-unsafe-element]{display:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-engine/theme/renderer.css"],names:[],mappings:"AAMA,qDACC,YACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/* Elements marked by the Renderer as hidden should be invisible in the editor. */\n.ck.ck-editor__editable span[data-ck-unsafe-element] {\n\tdisplay: none;\n}\n"],sourceRoot:""}]);const a=s},6559:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-dropdown-menu-list__nested-menu{display:block}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenu.css"],names:[],mappings:"AAKA,uCACC,aACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-dropdown-menu-list__nested-menu {\n\tdisplay: block;\n}\n"],sourceRoot:""}]);const a=s},6701:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".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)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tablecellproperties.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tablecellproperties.css"],names:[],mappings:"AAOE,6FACC,cAiBD,CAdE,0HAEC,cACD,CAEA,yHAEC,cACD,CAEA,uHACC,WACD,CClBJ,kCACC,WAkBD,CAfE,2FACC,mBAAoB,CACpB,SAAU,CACV,SACD,CAGC,4GACC,eAAgB,CAGhB,qCACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-table-cell-properties-form {\n\t& .ck-form__row {\n\t\t&.ck-table-cell-properties-form__alignment-row {\n\t\t\tflex-wrap: wrap;\n\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\t&:first-of-type {\n\t\t\t\t\t/* 4 buttons out of 7 (h-alignment + v-alignment) = 0.57 */\n\t\t\t\t\tflex-grow: 0.57;\n\t\t\t\t}\n\n\t\t\t\t&:last-of-type {\n\t\t\t\t\t/* 3 buttons out of 7 (h-alignment + v-alignment) = 0.43 */\n\t\t\t\t\tflex-grow: 0.43;\n\t\t\t\t}\n\n\t\t\t\t& .ck-button {\n\t\t\t\t\tflex-grow: 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-table-cell-properties-form {\n\twidth: 320px;\n\n\t& .ck-form__row {\n\t\t&.ck-table-cell-properties-form__padding-row {\n\t\t\talign-self: flex-end;\n\t\t\tpadding: 0;\n\t\t\twidth: 25%;\n\t\t}\n\n\t\t&.ck-table-cell-properties-form__alignment-row {\n\t\t\t& .ck.ck-toolbar {\n\t\t\t\tbackground: none;\n\n\t\t\t\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\n\t\t\t\tmargin-top: var(--ck-spacing-standard);\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},6779:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,'.ck .ck-widget .ck-widget__type-around__button{display:block;overflow:hidden;position:absolute;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{left:50%;position:absolute;top:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{left:min(10%,30px);top:calc(var(--ck-widget-outline-thickness)*-.5);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-.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;left:1px;position:absolute;top:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;left:0;position:absolute;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{display:block;top:calc(var(--ck-widget-outline-thickness)*-1 - 1px)}.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{background:var(--ck-color-widget-type-around-button);border-radius:100px;height:var(--ck-widget-type-around-button-size);opacity:0;pointer-events:none;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);width:var(--ck-widget-type-around-button-size)}@media (prefers-reduced-motion:reduce){.ck .ck-widget .ck-widget__type-around__button{transition:none}}.ck .ck-widget .ck-widget__type-around__button svg{height:8px;margin-top:1px;transform:translate(-50%,-50%);transition:transform .5s ease;width:10px}@media (prefers-reduced-motion:reduce){.ck .ck-widget .ck-widget__type-around__button svg{transition:none}}.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}@media (prefers-reduced-motion:reduce){.ck .ck-widget .ck-widget__type-around__button:hover,.ck .ck-widget .ck-widget__type-around__button:hover svg line,.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:none}}.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{background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3));border-radius:100px;height:calc(var(--ck-widget-type-around-button-size) - 2px);width:calc(var(--ck-widget-type-around-button-size) - 2px)}.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{animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;background:var(--ck-color-base-text);height:1px;outline:1px solid hsla(0,0%,100%,.5);pointer-events:none}.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_selected.ck-widget_with-resizer>.ck-widget__resizer,.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_selected.ck-widget_with-resizer>.ck-widget__resizer,.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[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}}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-widget/theme/widgettypearound.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widgettypearound.css"],names:[],mappings:"AASC,+CACC,aAAc,CAEd,eAAgB,CADhB,iBAAkB,CAElB,2BAwBD,CAtBC,mDAGC,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,qCACD,CAEA,qFAGC,kBAAoB,CADpB,gDAAoD,CAGpD,0BACD,CAEA,oFAEC,mDAAuD,CACvD,mBAAqB,CAErB,yBACD,CAUA,mLACC,UAAW,CACX,aAAc,CAGd,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,qCACD,CAMD,2EACC,YAAa,CAEb,MAAO,CADP,iBAAkB,CAElB,OACD,CAOA,iFACC,gDAAqD,CACrD,iDACD,CAKA,wHAEC,aAAc,CADd,qDAED,CAKA,uHACC,wDAA6D,CAC7D,aACD,CAoBD,mOACC,YACD,CC3GA,MACC,wCAAyC,CACzC,wEAAyE,CACzE,8EAA+E,CAC/E,2FAA4F,CAC5F,wDAAyD,CACzD,uDAAwD,CACxD,yEACD,CAgBC,+CAGC,oDAAqD,CACrD,mBAAoB,CAFpB,+CAAgD,CAVjD,SAAU,CACV,mBAAoB,CAYnB,uMAAyM,CAJzM,8CAwED,CAhEC,uCATD,+CAUE,eA+DF,CA9DC,CAEA,mDAEC,UAAW,CAGX,cAAe,CAFf,8BAA+B,CAC/B,6BAA8B,CAH9B,UAwBD,CAlBC,uCAPD,mDAQE,eAiBF,CAhBC,CAEA,qDACC,mBAAoB,CACpB,mBAAoB,CAEpB,SAAU,CACV,qDAAsD,CACtD,kBAAmB,CACnB,oBAAqB,CACrB,qBACD,CAEA,wDACC,kBACD,CAGD,qDAIC,6DA4BD,CAtBE,kEACC,oDACD,CAEA,8DACC,wDACD,CAGD,uCAQE,qLACC,cACD,CAEF,CASD,uKA7FD,SAAU,CACV,mBA8FC,CAOD,gGACC,0DACD,CAOA,uKAEC,2DAQD,CANC,mLAIC,uEAAkF,CADlF,mBAAoB,CADpB,2DAA4D,CAD5D,0DAID,CAOD,8GACC,gBACD,CAKA,mDAGC,mFAAoF,CAOpF,oCAAqC,CARrC,UAAW,CAOX,oCAAwC,CARxC,mBAUD,CAOC,6JAEC,yBACD,CAUA,yKACC,iDACD,CAMA,uOAxKD,SAAU,CACV,mBAyKC,CAoBA,6yBACC,SACD,CASF,uHACC,aAAc,CACd,iBACD,CAYG,iRAxNF,SAAU,CACV,mBAyNE,CAQH,kIACC,qEAKD,CAHC,wIACC,WACD,CAGD,4CACC,GACC,oBACD,CACA,OACC,mBACD,CACD,CAEA,gDACC,OACC,mBACD,CACA,OACC,mBACD,CACD,CAEA,8CACC,GACC,6HACD,CACA,IACC,6HACD,CACA,GACC,+HACD,CACD,CAEA,kDACC,GACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,GACC,SACD,CACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck .ck-widget {\n\t/*\n\t * Styles of the type around buttons\n\t */\n\t& .ck-widget__type-around__button {\n\t\tdisplay: block;\n\t\tposition: absolute;\n\t\toverflow: hidden;\n\t\tz-index: var(--ck-z-default);\n\n\t\t& svg {\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\tleft: 50%;\n\t\t\tz-index: calc(var(--ck-z-default) + 2);\n\t\t}\n\n\t\t&.ck-widget__type-around__button_before {\n\t\t\t/* Place it in the middle of the outline */\n\t\t\ttop: calc(-0.5 * var(--ck-widget-outline-thickness));\n\t\t\tleft: min(10%, 30px);\n\n\t\t\ttransform: translateY(-50%);\n\t\t}\n\n\t\t&.ck-widget__type-around__button_after {\n\t\t\t/* Place it in the middle of the outline */\n\t\t\tbottom: calc(-0.5 * var(--ck-widget-outline-thickness));\n\t\t\tright: min(10%, 30px);\n\n\t\t\ttransform: translateY(50%);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the buttons when:\n\t * - the widget is selected,\n\t * - or the button is being hovered (regardless of the widget state).\n\t */\n\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\n\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\n\t\t&::after {\n\t\t\tcontent: "";\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\ttop: 1px;\n\t\t\tleft: 1px;\n\t\t\tz-index: calc(var(--ck-z-default) + 1);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.\n\t */\n\t& > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tdisplay: none;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\tright: 0;\n\t}\n\n\t/*\n\t * When the widget is hovered the "fake caret" would normally be narrower than the\n\t * extra outline displayed around the widget. Let\'s extend the "fake caret" to match\n\t * the full width of the widget.\n\t */\n\t&:hover > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tleft: calc( -1 * var(--ck-widget-outline-thickness) );\n\t\tright: calc( -1 * var(--ck-widget-outline-thickness) );\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" when it should be displayed before the widget (backward keyboard navigation).\n\t */\n\t&.ck-widget_type-around_show-fake-caret_before > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\ttop: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\n\t\tdisplay: block;\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" when it should be displayed after the widget (forward keyboard navigation).\n\t */\n\t&.ck-widget_type-around_show-fake-caret_after > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\n\t\tbottom: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\n\t\tdisplay: block;\n\t}\n}\n\n/*\n * Integration with the read-only mode of the editor.\n */\n.ck.ck-editor__editable.ck-read-only .ck-widget__type-around {\n\tdisplay: none;\n}\n\n/*\n * Integration with the restricted editing mode (feature) of the editor.\n */\n.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around {\n\tdisplay: none;\n}\n\n/*\n * Integration with the #isEnabled property of the WidgetTypeAround plugin.\n */\n.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around {\n\tdisplay: none;\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-widget-type-around-button-size: 20px;\n\t--ck-color-widget-type-around-button-active: var(--ck-color-focus-border);\n\t--ck-color-widget-type-around-button-hover: var(--ck-color-widget-hover-border);\n\t--ck-color-widget-type-around-button-blurred-editable: var(--ck-color-widget-blurred-border);\n\t--ck-color-widget-type-around-button-radar-start-alpha: 0;\n\t--ck-color-widget-type-around-button-radar-end-alpha: .3;\n\t--ck-color-widget-type-around-button-icon: var(--ck-color-base-background);\n}\n\n@define-mixin ck-widget-type-around-button-visible {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n@define-mixin ck-widget-type-around-button-hidden {\n\topacity: 0;\n\tpointer-events: none;\n}\n\n.ck .ck-widget {\n\t/*\n\t * Styles of the type around buttons\n\t */\n\t& .ck-widget__type-around__button {\n\t\twidth: var(--ck-widget-type-around-button-size);\n\t\theight: var(--ck-widget-type-around-button-size);\n\t\tbackground: var(--ck-color-widget-type-around-button);\n\t\tborder-radius: 100px;\n\t\ttransition: 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);\n\n\t\t@mixin ck-widget-type-around-button-hidden;\n\n\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\ttransition: none;\n\t\t}\n\n\t\t& svg {\n\t\t\twidth: 10px;\n\t\t\theight: 8px;\n\t\t\ttransform: translate(-50%,-50%);\n\t\t\ttransition: transform .5s ease;\n\t\t\tmargin-top: 1px;\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\ttransition: none;\n\t\t\t}\n\n\t\t\t& * {\n\t\t\t\tstroke-dasharray: 10;\n\t\t\t\tstroke-dashoffset: 0;\n\n\t\t\t\tfill: none;\n\t\t\t\tstroke: var(--ck-color-widget-type-around-button-icon);\n\t\t\t\tstroke-width: 1.5px;\n\t\t\t\tstroke-linecap: round;\n\t\t\t\tstroke-linejoin: round;\n\t\t\t}\n\n\t\t\t& line {\n\t\t\t\tstroke-dasharray: 7;\n\t\t\t}\n\t\t}\n\n\t\t&:hover {\n\t\t\t/*\n\t\t\t * Display the "sonar" around the button when hovered.\n\t\t\t */\n\t\t\tanimation: ck-widget-type-around-button-sonar 1s ease infinite;\n\n\t\t\t/*\n\t\t\t * Animate active button\'s icon.\n\t\t\t */\n\t\t\t& svg {\n\t\t\t\t& polyline {\n\t\t\t\t\tanimation: ck-widget-type-around-arrow-dash 2s linear;\n\t\t\t\t}\n\n\t\t\t\t& line {\n\t\t\t\t\tanimation: ck-widget-type-around-arrow-tip-dash 2s linear;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\tanimation: none;\n\n\t\t\t\t& svg {\n\t\t\t\t\t& polyline {\n\t\t\t\t\t\tanimation: none;\n\t\t\t\t\t}\n\n\t\t\t\t\t& line {\n\t\t\t\t\t\tanimation: none;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Show type around buttons when the widget gets selected or being hovered.\n\t */\n\t&.ck-widget_selected,\n\t&:hover {\n\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t@mixin ck-widget-type-around-button-visible;\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the buttons when the widget is NOT selected (but the buttons are visible\n\t * and still can be hovered).\n\t */\n\t&:not(.ck-widget_selected) > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\tbackground: var(--ck-color-widget-type-around-button-hover);\n\t}\n\n\t/*\n\t * Styles for the buttons when:\n\t * - the widget is selected,\n\t * - or the button is being hovered (regardless of the widget state).\n\t */\n\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\n\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\n\t\tbackground: var(--ck-color-widget-type-around-button-active);\n\n\t\t&::after {\n\t\t\twidth: calc(var(--ck-widget-type-around-button-size) - 2px);\n\t\t\theight: calc(var(--ck-widget-type-around-button-size) - 2px);\n\t\t\tborder-radius: 100px;\n\t\t\tbackground: linear-gradient(135deg, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,.3) 100%);\n\t\t}\n\t}\n\n\t/*\n\t * Styles for the "before" button when the widget has a selection handle. Because some space\n\t * is consumed by the handle, the button must be moved slightly to the right to let it breathe.\n\t */\n\t&.ck-widget_with-selection-handle > .ck-widget__type-around > .ck-widget__type-around__button_before {\n\t\tmargin-left: 20px;\n\t}\n\n\t/*\n\t * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.\n\t */\n\t& .ck-widget__type-around__fake-caret {\n\t\tpointer-events: none;\n\t\theight: 1px;\n\t\tanimation: ck-widget-type-around-fake-caret-pulse linear 1s infinite normal forwards;\n\n\t\t/*\n\t\t * The semi-transparent-outline+background combo improves the contrast\n\t\t * when the background underneath the fake caret is dark.\n\t\t */\n\t\toutline: solid 1px hsla(0, 0%, 100%, .5);\n\t\tbackground: var(--ck-color-base-text);\n\t}\n\n\t/*\n\t * Styles of the widget when the "fake caret" is blinking (e.g. upon keyboard navigation).\n\t * Despite the widget being physically selected in the model, its outline should disappear.\n\t */\n\t&.ck-widget_selected {\n\t\t&.ck-widget_type-around_show-fake-caret_before,\n\t\t&.ck-widget_type-around_show-fake-caret_after {\n\t\t\toutline-color: transparent;\n\t\t}\n\t}\n\n\t&.ck-widget_type-around_show-fake-caret_before,\n\t&.ck-widget_type-around_show-fake-caret_after {\n\t\t/*\n\t\t * When the "fake caret" is visible we simulate that the widget is not selected\n\t\t * (despite being physically selected), so the outline color should be for the\n\t\t * unselected widget.\n\t\t */\n\t\t&.ck-widget_selected:hover {\n\t\t\toutline-color: var(--ck-color-widget-hover-border);\n\t\t}\n\n\t\t/*\n\t\t * Styles of the type around buttons when the "fake caret" is blinking (e.g. upon keyboard navigation).\n\t\t * In this state, the type around buttons would collide with the fake carets so they should disappear.\n\t\t */\n\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t@mixin ck-widget-type-around-button-hidden;\n\t\t}\n\n\t\t/*\n\t\t * Fake horizontal caret integration with the selection handle. When the caret is visible, simply\n\t\t * hide the handle because it intersects with the caret (and does not make much sense anyway).\n\t\t */\n\t\t&.ck-widget_with-selection-handle {\n\t\t\t&.ck-widget_selected,\n\t\t\t&.ck-widget_selected:hover {\n\t\t\t\t& > .ck-widget__selection-handle {\n\t\t\t\t\topacity: 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Fake horizontal caret integration with the resize UI. When the caret is visible, simply\n\t\t * hide the resize UI because it creates too much noise. It can be visible when the user\n\t\t * hovers the widget, though.\n\t\t */\n\t\t&.ck-widget_selected.ck-widget_with-resizer > .ck-widget__resizer {\n\t\t\topacity: 0\n\t\t}\n\t}\n}\n\n/*\n * Styles for the "before" button when the widget has a selection handle in an RTL environment.\n * The selection handler is aligned to the right side of the widget so there is no need to create\n * additional space for it next to the "before" button.\n */\n.ck[dir="rtl"] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around > .ck-widget__type-around__button_before {\n\tmargin-left: 0;\n\tmargin-right: 20px;\n}\n\n/*\n * Hide type around buttons when the widget is selected as a child of a selected\n * nested editable (e.g. mulit-cell table selection).\n *\n * See https://github.com/ckeditor/ckeditor5/issues/7263.\n */\n.ck-editor__nested-editable.ck-editor__editable_selected {\n\t& .ck-widget {\n\t\t&.ck-widget_selected,\n\t\t&:hover {\n\t\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\n\t\t\t\t@mixin ck-widget-type-around-button-hidden;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/*\n * Styles for the buttons when the widget is selected but the user clicked outside of the editor (blurred the editor).\n */\n.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button:not(:hover) {\n\tbackground: var(--ck-color-widget-type-around-button-blurred-editable);\n\n\t& svg * {\n\t\tstroke: hsl(0,0%,60%);\n\t}\n}\n\n@keyframes ck-widget-type-around-arrow-dash {\n\t0% {\n\t\tstroke-dashoffset: 10;\n\t}\n\t20%, 100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes ck-widget-type-around-arrow-tip-dash {\n\t0%, 20% {\n\t\tstroke-dashoffset: 7;\n\t}\n\t40%, 100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n\n@keyframes ck-widget-type-around-button-sonar {\n\t0% {\n\t\tbox-shadow: 0 0 0 0 hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\n\t}\n\t50% {\n\t\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-end-alpha));\n\t}\n\t100% {\n\t\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\n\t}\n}\n\n@keyframes ck-widget-type-around-fake-caret-pulse {\n\t0% {\n\t\topacity: 1;\n\t}\n\t49% {\n\t\topacity: 1;\n\t}\n\t50% {\n\t\topacity: 0;\n\t}\n\t99% {\n\t\topacity: 0;\n\t}\n\t100% {\n\t\topacity: 1;\n\t}\n}\n'],sourceRoot:""}]);const a=s},7133:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,'.ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}: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-bottom-right-radius:unset;border-top-right-radius:unset}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-left-radius:unset;border-top-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-left-radius:unset;border-top-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-right-radius:unset;border-top-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton>.ck-splitbutton__arrow:not(:focus){border-bottom-width:0;border-top-width:0}.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}.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{background-color:var(--ck-color-split-button-hover-border);content:"";height:100%;position:absolute;width:1px}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:focus:after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:focus:after{--ck-color-split-button-hover-border:var(--ck-color-focus-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}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/splitbutton.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/splitbutton.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAKA,mBAEC,iBAKD,CAHC,iDACC,qCACD,CCJD,MACC,gDAAyD,CACzD,4CACD,CAQE,oIAGC,gCAAiC,CADjC,6BAED,CAEA,oIAGC,+BAAgC,CADhC,4BAED,CAGD,0CAGC,eAiBD,CAfC,oDAGC,+BAAgC,CADhC,4BAED,CAEA,oDAGC,gCAAiC,CADjC,6BAED,CAEA,8CACC,mCACD,CAKD,sDAEC,qBAAwB,CADxB,kBAED,CAIA,uCCnDA,eD6DA,CC3DA,qHAEC,qCAED,CD+CE,qKACC,2BACD,CAEA,mKACC,4BACD,CAUD,0KACC,wDACD,CAIA,8JAKC,0DAA2D,CAJ3D,UAAW,CAGX,WAAY,CAFZ,iBAAkB,CAClB,SAGD,CAGA,sIACC,iEACD,CAGC,kLACC,SACD,CAIA,kLACC,UACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-splitbutton {\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t& .ck-splitbutton__action:focus {\n\t\tz-index: calc(var(--ck-z-default) + 1);\n\t}\n}\n\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n\n:root {\n\t--ck-color-split-button-hover-background: hsl(0, 0%, 92%);\n\t--ck-color-split-button-hover-border: hsl(0, 0%, 70%);\n}\n\n.ck.ck-splitbutton {\n\t/*\n\t * Note: ck-rounded and ck-dir mixins don\'t go together (because they both use @nest).\n\t */\n\t&:hover > .ck-splitbutton__action,\n\t&.ck-splitbutton_open > .ck-splitbutton__action {\n\t\t[dir="ltr"] & {\n\t\t\t/* Don\'t round the action button on the right side */\n\t\t\tborder-top-right-radius: unset;\n\t\t\tborder-bottom-right-radius: unset;\n\t\t}\n\n\t\t[dir="rtl"] & {\n\t\t\t/* Don\'t round the action button on the left side */\n\t\t\tborder-top-left-radius: unset;\n\t\t\tborder-bottom-left-radius: unset;\n\t\t}\n\t}\n\n\t& > .ck-splitbutton__arrow {\n\t\t/* It\'s a text-less button and since the icon is positioned absolutely in such situation,\n\t\tit must get some arbitrary min-width. */\n\t\tmin-width: unset;\n\n\t\t[dir="ltr"] & {\n\t\t\t/* Don\'t round the arrow button on the left side */\n\t\t\tborder-top-left-radius: unset;\n\t\t\tborder-bottom-left-radius: unset;\n\t\t}\n\n\t\t[dir="rtl"] & {\n\t\t\t/* Don\'t round the arrow button on the right side */\n\t\t\tborder-top-right-radius: unset;\n\t\t\tborder-bottom-right-radius: unset;\n\t\t}\n\n\t\t& svg {\n\t\t\twidth: var(--ck-dropdown-arrow-size);\n\t\t}\n\t}\n\n\t/* Make sure the divider stretches 100% height of the button\n\thttps://github.com/ckeditor/ckeditor5/issues/10936 */\n\t& > .ck-splitbutton__arrow:not(:focus) {\n\t\tborder-top-width: 0px;\n\t\tborder-bottom-width: 0px;\n\t}\n\n\t/* Don\'t round the bottom left and right corners of the buttons when "open"\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\n\t&.ck-splitbutton_open {\n\t\t@mixin ck-rounded-corners {\n\t\t\t& > .ck-splitbutton__action {\n\t\t\t\tborder-bottom-left-radius: 0;\n\t\t\t}\n\n\t\t\t& > .ck-splitbutton__arrow {\n\t\t\t\tborder-bottom-right-radius: 0;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* When the split button is "open" (the arrow is on) or being hovered, it should get some styling\n\tas a whole. The background of both buttons should stand out and there should be a visual\n\tseparation between both buttons. */\n\t&.ck-splitbutton_open,\n\t&:hover {\n\t\t/* When the split button hovered as a whole, not as individual buttons. */\n\t\t& > .ck-button:not(.ck-on):not(.ck-disabled):not(:hover) {\n\t\t\tbackground: var(--ck-color-split-button-hover-background);\n\t\t}\n\n\t\t/* Splitbutton separator needs to be set with the ::after pseudoselector\n\t\tto display properly the borders on focus */\n\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\n\t\t\tcontent: \'\';\n\t\t\tposition: absolute;\n\t\t\twidth: 1px;\n\t\t\theight: 100%;\n\t\t\tbackground-color: var(--ck-color-split-button-hover-border);\n\t\t}\n\n\t\t/* Make sure the divider between the buttons looks fine when the button is focused */\n\t\t& > .ck-splitbutton__arrow:focus::after {\n\t\t\t--ck-color-split-button-hover-border: var(--ck-color-focus-border);\n\t\t}\n\n\t\t[dir="ltr"] & {\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\n\t\t\t\tleft: -1px;\n\t\t\t}\n\t\t}\n\n\t\t[dir="rtl"] & {\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\n\t\t\t\tright: -1px;\n\t\t\t}\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]);const a=s},7216:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-mention-list-max-height:300px}.ck.ck-mentions{max-height:var(--ck-mention-list-max-height);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.ck.ck-mentions>.ck-list__item{flex-shrink:0;overflow:hidden}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-mention/theme/mentionui.css"],names:[],mappings:"AAKA,MACC,kCACD,CAEA,gBACC,4CAA6C,CAM7C,iBAAkB,CAJlB,eAAgB,CAMhB,2BAQD,CAJC,+BAEC,aAAc,CADd,eAED",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-mention-list-max-height: 300px;\n}\n\n.ck.ck-mentions {\n\tmax-height: var(--ck-mention-list-max-height);\n\n\toverflow-y: auto;\n\n\t/* Prevent unnecessary horizontal scrollbar in Safari\n\thttps://github.com/ckeditor/ckeditor5-mention/issues/41 */\n\toverflow-x: hidden;\n\n\toverscroll-behavior: contain;\n\n\t/* Prevent unnecessary vertical scrollbar in Safari\n\thttps://github.com/ckeditor/ckeditor5-mention/issues/41 */\n\t& > .ck-list__item {\n\t\toverflow: hidden;\n\t\tflex-shrink: 0;\n\t}\n}\n"],sourceRoot:""}]);const a=s},7217:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel{max-height:314px;overflow-y:auto;position:absolute;z-index:calc(var(--ck-z-panel) + 1)}:root{--ck-dropdown-menu-menu-panel-max-width:75vw}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;box-shadow:var(--ck-drop-shadow),0 0;height:fit-content;max-width:var(--ck-dropdown-menu-menu-panel-max-width)}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel:after,.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel:before{display:none}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_es,.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_se{border-top-left-radius:0}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_sw,.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_ws{border-top-right-radius:0}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_en,.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_ne{border-bottom-left-radius:0}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_nw,.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_wn{border-bottom-right-radius:0}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel:focus{outline:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenupanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/menu/dropdownmenupanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAKA,0DAEC,gBAAiB,CACjB,eAAgB,CAFhB,iBAAkB,CAGlB,mCACD,CCFA,MACC,4CACD,CAEA,0DAGC,oDAAqD,CACrD,sDAAuD,CACvD,QAAS,CCRT,oCAA8B,CDS9B,kBAAmB,CACnB,sDAgCD,CA7BC,iIAEC,YACD,CAGA,4JAEC,wBACD,CAEA,4JAEC,yBACD,CAEA,4JAEC,2BACD,CAEA,4JAEC,4BACD,CAEA,gEACC,YACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel {\n\tposition: absolute;\n\tmax-height: 314px; /* With the default settings, this is equal to 10 menu items. */\n\toverflow-y: auto;\n\tz-index: calc(var(--ck-z-panel) + 1);\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../../mixins/_rounded.css";\n@import "../../../../mixins/_shadow.css";\n\n:root {\n\t--ck-dropdown-menu-menu-panel-max-width: 75vw;\n}\n\n.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel {\n\t@mixin ck-drop-shadow;\n\n\tbackground: var(--ck-color-dropdown-panel-background);\n\tborder: 1px solid var(--ck-color-dropdown-panel-border);\n\tbottom: 0;\n\theight: fit-content;\n\tmax-width: var(--ck-dropdown-menu-menu-panel-max-width);\n\n\t/* Reset balloon styling */\n\t&::after,\n\t&::before {\n\t\tdisplay: none;\n\t}\n\n\t/* Corner border radius consistent with the button. */\n\t&.ck-balloon-panel_es,\n\t&.ck-balloon-panel_se {\n\t\tborder-top-left-radius: 0;\n\t}\n\n\t&.ck-balloon-panel_ws,\n\t&.ck-balloon-panel_sw {\n\t\tborder-top-right-radius: 0;\n\t}\n\n\t&.ck-balloon-panel_en,\n\t&.ck-balloon-panel_ne {\n\t\tborder-bottom-left-radius: 0;\n\t}\n\n\t&.ck-balloon-panel_wn,\n\t&.ck-balloon-panel_nw {\n\t\tborder-bottom-right-radius: 0;\n\t}\n\n\t&:focus {\n\t\toutline: none;\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]);const a=s},7289:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{position:fixed;top:0;z-index:var(--ck-z-panel)}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{position:absolute;top:auto}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{border-top-left-radius:0;border-top-right-radius:0;border-width:0 1px 1px;box-shadow:var(--ck-drop-shadow),0 0}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/stickypanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/stickypanel.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAMC,qDAEC,cAAe,CACf,KAAM,CAFN,yBAGD,CAEA,kEAEC,iBAAkB,CADlB,QAED,CCPA,qDAIC,wBAAyB,CACzB,yBAA0B,CAF1B,sBAAuB,CCFxB,oCDKA",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-sticky-panel {\n\t& .ck-sticky-panel__content_sticky {\n\t\tz-index: var(--ck-z-panel); /* #315 */\n\t\tposition: fixed;\n\t\ttop: 0;\n\t}\n\n\t& .ck-sticky-panel__content_sticky_bottom-limit {\n\t\ttop: auto;\n\t\tposition: absolute;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_shadow.css";\n\n.ck.ck-sticky-panel {\n\t& .ck-sticky-panel__content_sticky {\n\t\t@mixin ck-drop-shadow;\n\n\t\tborder-width: 0 1px 1px;\n\t\tborder-top-left-radius: 0;\n\t\tborder-top-right-radius: 0;\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]);const a=s},7406:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-color-selector-caption-background:#f7f7f7;--ck-color-selector-caption-text:#333;--ck-color-selector-caption-highlighted-background:#fd0}.ck-content .table>figcaption{background-color:var(--ck-color-selector-caption-background);caption-side:top;color:var(--ck-color-selector-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;text-align:center;word-break:break-word}@media (forced-colors:active){.ck-content .table>figcaption{background-color:unset;color:unset}}@media (forced-colors:none){.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{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}@keyframes ck-table-caption-highlight{0%{background-color:var(--ck-color-selector-caption-highlighted-background)}to{background-color:var(--ck-color-selector-caption-background)}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tablecaption.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css"],names:[],mappings:"AAOA,MACC,8CAAuD,CACvD,qCAAiD,CACjD,uDACD,CAGA,8BAMC,4DAA6D,CAJ7D,gBAAiB,CAGjB,2CAA4C,CAJ5C,qBAAsB,CAOtB,eAAgB,CAChB,mBAAoB,CAFpB,YAAa,CAHb,iBAAkB,CADlB,qBAaD,CCxBC,8BACC,8BDoBA,sBAAuB,CACvB,WCnBA,CACD,CAIA,4BDqBC,qEACC,iDACD,CCnBD,CDsBA,gEASC,eAAgB,CARhB,oBAAqB,CACrB,qBAAsB,CAQtB,sBAAuB,CAFvB,kBAGD,CAGD,sCACC,GACC,wEACD,CAEA,GACC,4DACD,CACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\n\n:root {\n\t--ck-color-selector-caption-background: hsl(0, 0%, 97%);\n\t--ck-color-selector-caption-text: hsl(0, 0%, 20%);\n\t--ck-color-selector-caption-highlighted-background: hsl(52deg 100% 50%);\n}\n\n/* Content styles */\n.ck-content .table > figcaption {\n\tdisplay: table-caption;\n\tcaption-side: top;\n\tword-break: break-word;\n\ttext-align: center;\n\tcolor: var(--ck-color-selector-caption-text);\n\tbackground-color: var(--ck-color-selector-caption-background);\n\tpadding: .6em;\n\tfont-size: .75em;\n\toutline-offset: -1px;\n\n\t/* Improve placeholder rendering in high-constrast mode (https://github.com/ckeditor/ckeditor5/issues/14907). */\n\t@mixin ck-media-forced-colors {\n\t\tbackground-color: unset;\n\t\tcolor: unset;\n\t}\n}\n\n/* Editing styles */\n.ck.ck-editor__editable .table > figcaption {\n\t@mixin ck-media-default-colors {\n\t\t&.table__caption_highlighted {\n\t\t\tanimation: ck-table-caption-highlight .6s ease-out;\n\t\t}\n\t}\n\n\t&.ck-placeholder::before {\n\t\tpadding-left: inherit;\n\t\tpadding-right: inherit;\n\n\t\t/*\n\t\t * Make sure the table caption placeholder doesn\'t overflow the placeholder area.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\n\t\t */\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n@keyframes ck-table-caption-highlight {\n\t0% {\n\t\tbackground-color: var(--ck-color-selector-caption-highlighted-background);\n\t}\n\n\t100% {\n\t\tbackground-color: var(--ck-color-selector-caption-background);\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-media-forced-colors {\n\t@media (forced-colors: active) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n\n@define-mixin ck-media-default-colors {\n\t@media (forced-colors: none) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},7456:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".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{border-right:1px solid var(--ck-color-base-text);height:100%;margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/link.css"],names:[],mappings:"AAMA,sBACC,mDAMD,CAHC,wCACC,yFACD,CAOD,4BACC,8CACD,CAGA,sCAEC,gDAAiD,CADjD,WAAY,CAEZ,iBAAkB,CAClB,oCACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/* Class added to span element surrounding currently selected link. */\n.ck .ck-link_selected {\n\tbackground: var(--ck-color-link-selected-background);\n\n\t/* Give linked inline images some outline to let the user know they are also part of the link. */\n\t& span.image-inline {\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background);\n\t}\n}\n\n/*\n * Classes used by the "fake visual selection" displayed in the content when an input\n * in the link UI has focus (the browser does not render the native selection in this state).\n */\n.ck .ck-fake-link-selection {\n\tbackground: var(--ck-color-link-fake-selection);\n}\n\n/* A collapsed fake visual selection. */\n.ck .ck-fake-link-selection_collapsed {\n\theight: 100%;\n\tborder-right: 1px solid var(--ck-color-base-text);\n\tmargin-right: -1px;\n\toutline: solid 1px hsla(0, 0%, 100%, .5);\n}\n'],sourceRoot:""}]);const a=s},7475:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{max-width:var(--ck-toolbar-dropdown-max-width);width:max-content}.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}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/toolbardropdown.css"],names:[],mappings:"AAKA,MACC,oCACD,CAEA,4CAGC,8CAA+C,CAD/C,iBAQD,CAJE,6DACC,qCACD,CCZF,oCACC,QACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-toolbar-dropdown-max-width: 60vw;\n}\n\n.ck.ck-toolbar-dropdown > .ck-dropdown__panel {\n\t/* https://github.com/ckeditor/ckeditor5/issues/5586 */\n\twidth: max-content;\n\tmax-width: var(--ck-toolbar-dropdown-max-width);\n\n\t& .ck-button {\n\t\t&:focus {\n\t\t\tz-index: calc(var(--ck-z-default) + 1);\n\t\t}\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-toolbar-dropdown .ck-toolbar {\n\tborder: 0;\n}\n"],sourceRoot:""}]);const a=s},7504:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-editor__editable .image,.ck.ck-editor__editable .image-inline{position:relative}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{left:0;position:absolute;top:0}.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}@media (prefers-reduced-motion:reduce){.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:none;opacity:1}}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{background:var(--ck-color-upload-bar-background);height:2px;transition:width .1s;width:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadprogress.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadprogress.css"],names:[],mappings:"AAMC,qEAEC,iBACD,CAGA,uGAIC,MAAO,CAFP,iBAAkB,CAClB,KAED,CCRC,yFACC,oBAMD,CAJC,uCAHD,yFAKE,cAAe,CADf,SAGF,CADC,CAKF,uGAIC,gDAAiD,CAFjD,UAAW,CAGX,oBAAuB,CAFvB,OAGD,CAGD,kBACC,GAAO,SAAY,CACnB,GAAO,SAAY,CACpB",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-editor__editable {\n\t& .image,\n\t& .image-inline {\n\t\tposition: relative;\n\t}\n\n\t/* Upload progress bar. */\n\t& .image .ck-progress-bar,\n\t& .image-inline .ck-progress-bar {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-editor__editable {\n\t& .image,\n\t& .image-inline {\n\t\t/* Showing animation. */\n\t\t&.ck-appear {\n\t\t\tanimation: fadeIn 700ms;\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\topacity: 1;\n\t\t\t\tanimation: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Upload progress bar. */\n\t& .image .ck-progress-bar,\n\t& .image-inline .ck-progress-bar {\n\t\theight: 2px;\n\t\twidth: 0;\n\t\tbackground: var(--ck-color-upload-bar-background);\n\t\ttransition: width 100ms;\n\t}\n}\n\n@keyframes fadeIn {\n\tfrom { opacity: 0; }\n\tto { opacity: 1; }\n}\n"],sourceRoot:""}]);const a=s},7659:e=>{"use strict";var t={};e.exports=function(e,o){var n=function(e){if(void 0===t[e]){var o=document.querySelector(e);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(e){o=null}t[e]=o}return t[e]}(e);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(o)}},7875:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck-editor__editable .ck-list-bogus-paragraph{display:block}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-list/theme/documentlist.css"],names:[],mappings:"AAKA,8CACC,aACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck-editor__editable .ck-list-bogus-paragraph {\n\tdisplay: block;\n}\n"],sourceRoot:""}]);const a=s},7879:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-image-style-spacing:1.5em;--ck-inline-image-style-spacing:calc(var(--ck-image-style-spacing)/2)}.ck-content .image.image-style-block-align-left,.ck-content .image.image-style-block-align-right{max-width:calc(100% - var(--ck-image-style-spacing))}.ck-content .image.image-style-align-left,.ck-content .image.image-style-align-right{clear:none}.ck-content .image.image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image.image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image.image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image.image-style-block-align-right{margin-left:auto;margin-right:0}.ck-content .image.image-style-block-align-left{margin-left:0;margin-right:auto}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content p+.image.image-style-align-left,.ck-content p+.image.image-style-align-right,.ck-content p+.image.image-style-side{margin-top:0}.ck-content .image-inline.image-style-align-left,.ck-content .image-inline.image-style-align-right{margin-bottom:var(--ck-inline-image-style-spacing);margin-top: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)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imagestyle.css"],names:[],mappings:"AAKA,MACC,8BAA+B,CAC/B,qEACD,CAQE,iGAEC,oDACD,CAIA,qFAEC,UACD,CAEA,oCACC,WAAY,CACZ,yCAA0C,CAC1C,aACD,CAEA,0CACC,UAAW,CACX,0CACD,CAEA,2CACC,WAAY,CACZ,yCACD,CAEA,iDAEC,gBAAiB,CADjB,cAED,CAEA,gDACC,aAAc,CACd,iBACD,CAGD,sCACC,gBAAiB,CACjB,iBACD,CAEA,oCACC,UAAW,CACX,0CACD,CAEA,qCACC,WAAY,CACZ,yCACD,CAGA,+HAGC,YACD,CAGC,mGAGC,kDAAmD,CADnD,+CAED,CAEA,iDACC,iDACD,CAEA,kDACC,gDACD,CAUC,0lBAGC,qDAKD,CAHC,8nBACC,YACD,CAKD,oVAGC,2DACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-image-style-spacing: 1.5em;\n\t--ck-inline-image-style-spacing: calc(var(--ck-image-style-spacing) / 2);\n}\n\n.ck-content {\n\t/* See: https://github.com/ckeditor/ckeditor5/issues/16317 */\n\t& .image {\n\t\t/* Provides a minimal side margin for the left and right aligned images, so that the user has a visual feedback\n\t\tconfirming successful application of the style if image width exceeds the editor's size.\n\t\tSee https://github.com/ckeditor/ckeditor5/issues/9342 */\n\t\t&.image-style-block-align-left,\n\t\t&.image-style-block-align-right {\n\t\t\tmax-width: calc(100% - var(--ck-image-style-spacing));\n\t\t}\n\n\t\t/* Allows displaying multiple floating images in the same line.\n\t\tSee https://github.com/ckeditor/ckeditor5/issues/9183#issuecomment-804988132 */\n\t\t&.image-style-align-left,\n\t\t&.image-style-align-right {\n\t\t\tclear: none;\n\t\t}\n\n\t\t&.image-style-side {\n\t\t\tfloat: right;\n\t\t\tmargin-left: var(--ck-image-style-spacing);\n\t\t\tmax-width: 50%;\n\t\t}\n\n\t\t&.image-style-align-left {\n\t\t\tfloat: left;\n\t\t\tmargin-right: var(--ck-image-style-spacing);\n\t\t}\n\n\t\t&.image-style-align-right {\n\t\t\tfloat: right;\n\t\t\tmargin-left: var(--ck-image-style-spacing);\n\t\t}\n\n\t\t&.image-style-block-align-right {\n\t\t\tmargin-right: 0;\n\t\t\tmargin-left: auto;\n\t\t}\n\n\t\t&.image-style-block-align-left {\n\t\t\tmargin-left: 0;\n\t\t\tmargin-right: auto;\n\t\t}\n\t}\n\n\t& .image-style-align-center {\n\t\tmargin-left: auto;\n\t\tmargin-right: auto;\n\t}\n\n\t& .image-style-align-left {\n\t\tfloat: left;\n\t\tmargin-right: var(--ck-image-style-spacing);\n\t}\n\n\t& .image-style-align-right {\n\t\tfloat: right;\n\t\tmargin-left: var(--ck-image-style-spacing);\n\t}\n\n\t/* Simulates margin collapsing with the preceding paragraph, which does not work for the floating elements. */\n\t& p + .image.image-style-align-left,\n\t& p + .image.image-style-align-right,\n\t& p + .image.image-style-side {\n\t\tmargin-top: 0;\n\t}\n\n\t& .image-inline {\n\t\t&.image-style-align-left,\n\t\t&.image-style-align-right {\n\t\t\tmargin-top: var(--ck-inline-image-style-spacing);\n\t\t\tmargin-bottom: var(--ck-inline-image-style-spacing);\n\t\t}\n\n\t\t&.image-style-align-left {\n\t\t\tmargin-right: var(--ck-inline-image-style-spacing);\n\t\t}\n\n\t\t&.image-style-align-right {\n\t\t\tmargin-left: var(--ck-inline-image-style-spacing);\n\t\t}\n\t}\n}\n\n.ck.ck-splitbutton {\n\t/* The button should display as a regular drop-down if the action button\n\tis forced to fire the same action as the arrow button. */\n\t&.ck-splitbutton_flatten {\n\t\t&:hover,\n\t\t&.ck-splitbutton_open {\n\t\t\t& > .ck-splitbutton__action:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\n\t\t\t\tbackground-color: var(--ck-color-button-on-background);\n\n\t\t\t\t&::after {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&.ck-splitbutton_open:hover {\n\t\t\t& > .ck-splitbutton__action:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled),\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\n\t\t\t\tbackground-color: var(--ck-color-button-on-hover-background);\n\t\t\t}\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},7962:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#166fd4}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{transition:box-shadow .2s ease}@media (forced-colors:none){.ck.ck-color-grid__tile{border:0;height:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);padding:0;width:var(--ck-color-grid-tile-size)}.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.ck-color-selector__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.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: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)}}@media (forced-colors:active){.ck.ck-color-grid__tile{height:unset;min-height:unset;min-width:unset;padding:0 var(--ck-spacing-small);width:unset}.ck.ck-color-grid__tile .ck-button__label{display:inline-block}}@media (prefers-reduced-motion:reduce){.ck.ck-color-grid__tile{transition:none}}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile .ck.ck-icon{color:var(--ck-color-color-grid-check-icon);display:none}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorgrid/colorgrid.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorgrid/colorgrid.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css"],names:[],mappings:"AAKA,kBACC,YACD,CCCA,MACC,8BAA+B,CAK/B,wCACD,CAEA,kBACC,YAAa,CACb,WACD,CAEA,wBACC,8BAkED,CC3EC,4BACC,wBDgBA,QAAS,CAJT,qCAAsC,CAEtC,yCAA0C,CAD1C,wCAAyC,CAEzC,SAAU,CAJV,oCCTA,CDgBA,8HAIC,QACD,CAEA,+DACC,gDACD,CAEA,8BACC,8FACD,CAEA,gGAEC,iGACD,CCjCD,CAZA,8BACC,wBDqDA,YAAa,CAEb,gBAAiB,CADjB,eAAgB,CAEhB,iCAAkC,CAJlC,WClDA,CDwDA,0CACC,oBACD,CCzDD,CD4DA,uCAhDD,wBAiDE,eAkBF,CAjBC,CAEA,oCACC,YAAa,CACb,gBACD,CAEA,oCAEC,2CAA4C,CAD5C,YAED,CAGC,0CACC,aACD,CAIF,yBACC,oCACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-color-grid {\n\tdisplay: grid;\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\n\n:root {\n\t--ck-color-grid-tile-size: 24px;\n\n\t/* Not using global colors here because these may change but some colors in a pallette\n\t * require special treatment. For instance, this ensures no matter what the UI text color is,\n\t * the check icon will look good on the black color tile. */\n\t--ck-color-color-grid-check-icon: hsl(212, 81%, 46%);\n}\n\n.ck.ck-color-grid {\n\tgrid-gap: 5px;\n\tpadding: 8px;\n}\n\n.ck.ck-color-grid__tile {\n\ttransition: .2s ease box-shadow;\n\n\t@mixin ck-media-default-colors {\n\t\twidth: var(--ck-color-grid-tile-size);\n\t\theight: var(--ck-color-grid-tile-size);\n\t\tmin-width: var(--ck-color-grid-tile-size);\n\t\tmin-height: var(--ck-color-grid-tile-size);\n\t\tpadding: 0;\n\t\tborder: 0;\n\n\t\t&.ck-on,\n\t\t&:focus:not( .ck-disabled ),\n\t\t&:hover:not( .ck-disabled ) {\n\t\t\t/* Disable the default .ck-button\'s border ring. */\n\t\t\tborder: 0;\n\t\t}\n\n\t\t&.ck-color-selector__color-tile_bordered {\n\t\t\tbox-shadow: 0 0 0 1px var(--ck-color-base-border);\n\t\t}\n\n\t\t&.ck-on {\n\t\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-base-text);\n\t\t}\n\n\t\t&:focus:not( .ck-disabled ),\n\t\t&:hover:not( .ck-disabled ) {\n\t\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);\n\t\t}\n\t}\n\n\t/*\n\t * In high contrast mode, the colors are replaced with text labels.\n\t * See https://github.com/ckeditor/ckeditor5/issues/14907.\n\t */\n\t@mixin ck-media-forced-colors {\n\t\twidth: unset;\n\t\theight: unset;\n\t\tmin-width: unset;\n\t\tmin-height: unset;\n\t\tpadding: 0 var(--ck-spacing-small);\n\n\t\t& .ck-button__label {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: none;\n\t}\n\n\t&.ck-disabled {\n\t\tcursor: unset;\n\t\ttransition: unset;\n\t}\n\n\t& .ck.ck-icon {\n\t\tdisplay: none;\n\t\tcolor: var(--ck-color-color-grid-check-icon);\n\t}\n\n\t&.ck-on {\n\t\t& .ck.ck-icon {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n}\n\n.ck.ck-color-grid__label {\n\tpadding: 0 var(--ck-spacing-standard);\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-media-forced-colors {\n\t@media (forced-colors: active) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n\n@define-mixin ck-media-default-colors {\n\t@media (forced-colors: none) {\n\t\t& {\n\t\t\t@mixin-content;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},8040:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".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{color:var(--ck-color-link-default);cursor:pointer;max-width:var(--ck-input-width);min-width:3em;padding:0 var(--ck-spacing-medium);text-align:center;text-overflow:ellipsis}.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{max-width:100%;min-width:0}[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}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkactions.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkactions.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AAOA,oBACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,8CACC,oBAKD,CAHC,gEACC,eACD,CCXD,oCDCD,oBAcE,cAUF,CARE,8CACC,eACD,CAEA,8DACC,cACD,CCrBD,CCIA,wDACC,cAAe,CACf,eAmCD,CAjCC,0EAEC,kCAAmC,CAEnC,cAAe,CAIf,+BAAgC,CAChC,aAAc,CARd,kCAAmC,CASnC,iBAAkB,CAPlB,sBAYD,CAHC,gFACC,yBACD,CAGD,mPAIC,eACD,CAEA,+DACC,eACD,CAGC,gFACC,yBACD,CAWD,qHACC,sCACD,CDtDD,oCC0DC,wDACC,8DAMD,CAJC,0EAEC,cAAe,CADf,WAED,CChEF,gJDyEG,aCvEH,CFAA",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-actions {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t& .ck-link-actions__preview {\n\t\tdisplay: inline-block;\n\n\t\t& .ck-button__label {\n\t\t\toverflow: hidden;\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-link-actions__preview {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button:not(.ck-link-actions__preview) {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n@import "../mixins/_focus.css";\n@import "../mixins/_shadow.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-link-actions {\n\t& .ck-button.ck-link-actions__preview {\n\t\tpadding-left: 0;\n\t\tpadding-right: 0;\n\n\t\t& .ck-button__label {\n\t\t\tpadding: 0 var(--ck-spacing-medium);\n\t\t\tcolor: var(--ck-color-link-default);\n\t\t\ttext-overflow: ellipsis;\n\t\t\tcursor: pointer;\n\n\t\t\t/* Match the box model of the link editor form\'s input so the balloon\n\t\t\tdoes not change width when moving between actions and the form. */\n\t\t\tmax-width: var(--ck-input-width);\n\t\t\tmin-width: 3em;\n\t\t\ttext-align: center;\n\n\t\t\t&:hover {\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\n\t\t&,\n\t\t&:hover,\n\t\t&:focus,\n\t\t&:active {\n\t\t\tbackground: none;\n\t\t}\n\n\t\t&:active {\n\t\t\tbox-shadow: none;\n\t\t}\n\n\t\t&:focus {\n\t\t\t& .ck-button__label {\n\t\t\t\ttext-decoration: underline;\n\t\t\t}\n\t\t}\n\t}\n\n\t@mixin ck-dir ltr {\n\t\t& .ck-button:not(:first-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-dir rtl {\n\t\t& .ck-button:not(:last-child) {\n\t\t\tmargin-left: var(--ck-spacing-standard);\n\t\t}\n\t}\n\n\t@mixin ck-media-phone {\n\t\t& .ck-button.ck-link-actions__preview {\n\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\n\n\t\t\t& .ck-button__label {\n\t\t\t\tmin-width: 0;\n\t\t\t\tmax-width: 100%;\n\t\t\t}\n\t\t}\n\n\t\t& .ck-button:not(.ck-link-actions__preview) {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t}\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},8091:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-dialog .ck.ck-dialog__actions{display:flex;justify-content:flex-end;padding:var(--ck-spacing-large)}.ck.ck-dialog .ck.ck-dialog__actions>*+*{margin-left:var(--ck-spacing-large)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dialog/dialogactions.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dialog/dialogactions.css"],names:[],mappings:"AAMC,qCACC,YAAa,CACb,wBAAyB,CCDzB,+BDED,CCAC,yCACC,mCACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-dialog {\n\t& .ck.ck-dialog__actions {\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-dialog {\n\t& .ck.ck-dialog__actions {\n\t\tpadding: var(--ck-spacing-large);\n\n\t\t& > * + * {\n\t\t\tmargin-left: var(--ck-spacing-large);\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},8156:e=>{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},8368:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck-textarea{overflow-x:hidden}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/textarea/textarea.css"],names:[],mappings:"AASA,aACC,iBACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/*\n * This fixes a problem in Firefox when the initial height of the complement does not match the number of rows.\n * This bug is especially visible when rows=1.\n */\n.ck-textarea {\n\toverflow-x: hidden\n}\n"],sourceRoot:""}]);const a=s},8429:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".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%}}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/textalternativeform.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css"],names:[],mappings:"AAOA,6BACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,oDACC,oBACD,CAEA,uCACC,YACD,CCZA,oCDCD,6BAcE,cAUF,CARE,oDACC,eACD,CAEA,wCACC,cACD,CCrBD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\n\n.ck.ck-text-alternative-form {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\n\t& .ck-labeled-field-view {\n\t\tdisplay: inline-block;\n\t}\n\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t@mixin ck-media-phone {\n\t\tflex-wrap: wrap;\n\n\t\t& .ck-labeled-field-view {\n\t\t\tflex-basis: 100%;\n\t\t}\n\n\t\t& .ck-button {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-media-phone {\n\t@media screen and (max-width: 600px) {\n\t\t@mixin-content;\n\t}\n}\n"],sourceRoot:""}]);const a=s},8507:(e,t,o)=>{const n=o(5659);function i(e){const t=function(){const e={},t=Object.keys(n);for(let o=t.length,n=0;n{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck-content .image{clear:both;display:table;margin:.9em auto;min-width:50px;text-align:center}.ck-content .image img{display:block;height:auto;margin:0 auto;max-width:100%;min-width:100%}.ck-content .image-inline{align-items:flex-start;display:inline-flex;max-width:100%}.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{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}.ck.ck-editor__editable .image{z-index:1}.ck.ck-editor__editable .image.ck-widget_selected{z-index:2}.ck.ck-editor__editable .image-inline{z-index:1}.ck.ck-editor__editable .image-inline.ck-widget_selected{z-index:2}.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{display:none}.ck.ck-editor__editable .image-inline img{height:auto}.ck.ck-editor__editable td .image-inline img,.ck.ck-editor__editable th .image-inline img{max-width:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-image/theme/image.css"],names:[],mappings:"AAMC,mBAEC,UAAW,CADX,aAAc,CAOd,gBAAkB,CAGlB,cAAe,CARf,iBA2BD,CAjBC,uBAEC,aAAc,CAad,WAAY,CAVZ,aAAc,CAGd,cAAe,CAGf,cAKD,CAGD,0BAYC,sBAAuB,CANvB,mBAAoB,CAGpB,cAoBD,CAdC,kCACC,YACD,CAGA,gEAGC,WAAY,CACZ,aAAc,CAGd,cACD,CAUD,gEASC,eAAgB,CARhB,oBAAqB,CACrB,qBAAsB,CAQtB,sBAAuB,CAFvB,kBAGD,CAKA,+BACC,SASD,CAHC,kDACC,SACD,CAMD,sCACC,SAkBD,CAZC,yDACC,SAUD,CAHC,qEACC,YACD,CAMF,0CACC,WACD,CAMC,0FACC,cACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck-content {\n\t& .image {\n\t\tdisplay: table;\n\t\tclear: both;\n\t\ttext-align: center;\n\n\t\t/* Make sure there is some space between the content and the image. Center image by default. */\n\t\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\n\t \tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\n\t\tmargin: 0.9em auto;\n\n\t\t/* Make sure the caption will be displayed properly (See: https://github.com/ckeditor/ckeditor5/issues/1870). */\n\t\tmin-width: 50px;\n\n\t\t& img {\n\t\t\t/* Prevent unnecessary margins caused by line-height (see #44). */\n\t\t\tdisplay: block;\n\n\t\t\t/* Center the image if its width is smaller than the content\'s width. */\n\t\t\tmargin: 0 auto;\n\n\t\t\t/* Make sure the image never exceeds the size of the parent container (ckeditor/ckeditor5-ui#67). */\n\t\t\tmax-width: 100%;\n\n\t\t\t/* Make sure the image is never smaller than the parent container (See: https://github.com/ckeditor/ckeditor5/issues/9300). */\n\t\t\tmin-width: 100%;\n\n\t\t\t/* Keep proportions of the block image if the height is set and the image is wider than the editor width.\n\t\t\tSee https://github.com/ckeditor/ckeditor5/issues/14542. */\n\t\t\theight: auto;\n\t\t}\n\t}\n\n\t& .image-inline {\n\t\t/*\n\t\t * Normally, the .image-inline would have "display: inline-block" and "img { width: 100% }" (to follow the wrapper while resizing).\n\t\t * Unfortunately, together with "srcset", it gets automatically stretched up to the width of the editing root.\n\t\t * This strange behavior does not happen with inline-flex.\n\t\t */\n\t\tdisplay: inline-flex;\n\n\t\t/* While being resized, don\'t allow the image to exceed the width of the editing root. */\n\t\tmax-width: 100%;\n\n\t\t/* This is required by Safari to resize images in a sensible way. Without this, the browser breaks the ratio. */\n\t\talign-items: flex-start;\n\n\t\t/* When the picture is present it must act as a flex container to let the img resize properly */\n\t\t& picture {\n\t\t\tdisplay: flex;\n\t\t}\n\n\t\t/* When the picture is present, it must act like a resizable img. */\n\t\t& picture,\n\t\t& img {\n\t\t\t/* This is necessary for the img to span the entire .image-inline wrapper and to resize properly. */\n\t\t\tflex-grow: 1;\n\t\t\tflex-shrink: 1;\n\n\t\t\t/* Prevents overflowing the editing root boundaries when an inline image is very wide. */\n\t\t\tmax-width: 100%;\n\t\t}\n\t}\n}\n\n.ck.ck-editor__editable {\n\t/*\n\t * Inhertit the content styles padding of the
      in case the integration overrides `text-align: center`\n\t * of `.image` (e.g. to the left/right). This ensures the placeholder stays at the padding just like the native\n\t * caret does, and not at the edge of
      .\n\t */\n\t& .image > figcaption.ck-placeholder::before {\n\t\tpadding-left: inherit;\n\t\tpadding-right: inherit;\n\n\t\t/*\n\t\t * Make sure the image caption placeholder doesn\'t overflow the placeholder area.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\n\t\t */\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t/*\n\t * See https://github.com/ckeditor/ckeditor5/issues/15115.\n\t */\n\t& .image {\n\t\tz-index: 1;\n\n\t\t/*\n\t\t * Make sure the selected image always stays on top of its siblings.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9108.\n\t\t */\n\t\t&.ck-widget_selected {\n\t\t\tz-index: 2;\n\t\t}\n\t}\n\n\t/*\n\t * See https://github.com/ckeditor/ckeditor5/issues/15115.\n\t */\n\t& .image-inline {\n\t\tz-index: 1;\n\n\t\t/*\n\t\t * Make sure the selected inline image always stays on top of its siblings.\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9108.\n\t\t */\n\t\t&.ck-widget_selected {\n\t\t\tz-index: 2;\n\n\t\t\t/*\n\t\t\t * Make sure the native browser selection style is not displayed.\n\t\t\t * Inline image widgets have their own styles for the selected state and\n\t\t\t * leaving this up to the browser is asking for a visual collision.\n\t\t\t */\n\t\t\t& ::selection {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t/* Keep proportions of the inline image if the height is set and the image is wider than the editor width.\n\tSee https://github.com/ckeditor/ckeditor5/issues/14542. */\n\t& .image-inline img {\n\t\theight: auto;\n\t}\n\n\t/* The inline image nested in the table should have its original size if not resized.\n\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\n\t& td,\n\t& th {\n\t\t& .image-inline img {\n\t\t\tmax-width: none;\n\t\t}\n\t}\n}\n'],sourceRoot:""}]);const a=s},8603:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".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{padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;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)}.ck .ck-insert-table-dropdown__label,.ck[dir=rtl] .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{border:1px solid var(--ck-color-base-border);border-radius:1px;margin:var(--ck-insert-table-dropdown-box-margin);min-height:var(--ck-insert-table-dropdown-box-height);min-width:var(--ck-insert-table-dropdown-box-width);outline:none;transition:none}@media (prefers-reduced-motion:reduce){.ck .ck-insert-table-dropdown-grid-box{transition:none}}.ck .ck-insert-table-dropdown-grid-box:focus{box-shadow:none}.ck .ck-insert-table-dropdown-grid-box.ck-on{background:var(--ck-color-focus-outer-shadow);border-color:var(--ck-color-focus-border)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/inserttable.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/inserttable.css"],names:[],mappings:"AAKA,oCACC,YAAa,CACb,kBAAmB,CACnB,cACD,CCJA,MACC,uCAAwC,CACxC,0CAA2C,CAC3C,yCAA0C,CAC1C,yCACD,CAEA,oCAGC,yFAA0F,CAD1F,oJAED,CAEA,mFAEC,iBACD,CAEA,uCAIC,4CAA6C,CAC7C,iBAAkB,CAFlB,iDAAkD,CADlD,qDAAsD,CADtD,mDAAoD,CAKpD,YAAa,CACb,eAcD,CAZC,uCATD,uCAUE,eAWF,CAVC,CAEA,6CACC,eACD,CAEA,6CAEC,6CAA8C,CAD9C,yCAED",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck .ck-insert-table-dropdown__grid {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-insert-table-dropdown-padding: 10px;\n\t--ck-insert-table-dropdown-box-height: 11px;\n\t--ck-insert-table-dropdown-box-width: 12px;\n\t--ck-insert-table-dropdown-box-margin: 1px;\n}\n\n.ck .ck-insert-table-dropdown__grid {\n\t/* The width of a container should match 10 items in a row so there will be a 10x10 grid. */\n\twidth: calc(var(--ck-insert-table-dropdown-box-width) * 10 + var(--ck-insert-table-dropdown-box-margin) * 20 + var(--ck-insert-table-dropdown-padding) * 2);\n\tpadding: var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;\n}\n\n.ck .ck-insert-table-dropdown__label,\n.ck[dir=rtl] .ck-insert-table-dropdown__label {\n\ttext-align: center;\n}\n\n.ck .ck-insert-table-dropdown-grid-box {\n\tmin-width: var(--ck-insert-table-dropdown-box-width);\n\tmin-height: var(--ck-insert-table-dropdown-box-height);\n\tmargin: var(--ck-insert-table-dropdown-box-margin);\n\tborder: 1px solid var(--ck-color-base-border);\n\tborder-radius: 1px;\n\toutline: none;\n\ttransition: none;\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: none;\n\t}\n\n\t&:focus {\n\t\tbox-shadow: none;\n\t}\n\n\t&.ck-on {\n\t\tborder-color: var(--ck-color-focus-border);\n\t\tbackground: var(--ck-color-focus-outer-shadow);\n\t}\n}\n\n"],sourceRoot:""}]);const a=s},8864:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-color-selector-focused-cell-background:rgba(158,201,250,.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-selector-focused-cell-background);outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableediting.css"],names:[],mappings:"AAKA,MACC,gEACD,CAWE,8QAGC,2DAA4D,CAC5D,8CAA+C,CAC/C,mBACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-color-selector-focused-cell-background: hsla(212, 90%, 80%, .3);\n}\n\n.ck-widget.table {\n\t& td,\n\t& th {\n\t\t/**\n\t\t * While setting outline is fine, the border should not be modified here\n\t\t * because it overrides the default table cell border color which is not expected.\n\t\t * So do not use `@mixin ck-focus-ring;` here, or any other border styles.\n\t\t * See more: https://github.com/ckeditor/ckeditor5/issues/16979\n\t\t */\n\t\t&.ck-editor__nested-editable.ck-editor__nested-editable_focused,\n\t\t&.ck-editor__nested-editable:focus {\n\t\t\t/* A very slight background to highlight the focused cell */\n\t\t\tbackground: var(--ck-color-selector-focused-cell-background);\n\t\t\toutline: 1px solid var(--ck-color-focus-border);\n\t\t\toutline-offset: -1px; /* progressive enhancement - no IE support */\n\t\t}\n\t}\n}\n"],sourceRoot:""}]);const a=s},8948:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck.ck-button,a.ck.ck-button{align-items:center;display:inline-flex;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}[dir=ltr] .ck.ck-button,[dir=ltr] a.ck.ck-button{justify-content:left}[dir=rtl] .ck.ck-button,[dir=rtl] a.ck.ck-button{justify-content:right}.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,a.ck.ck-button{-webkit-appearance:none;background:var(--ck-color-button-default-background);border:1px solid transparent;border-radius:0;cursor:default;font-size:inherit;line-height:1;min-height:var(--ck-ui-component-min-height);min-width:var(--ck-ui-component-min-height);padding:var(--ck-spacing-tiny);text-align:center;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;vertical-align:middle;white-space:nowrap}.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)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.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)}@media (prefers-reduced-motion:reduce){.ck.ck-button,a.ck.ck-button{transition:none}}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.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{color:inherit;cursor:inherit;font-size:inherit;font-weight: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;opacity:.5}[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-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,.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__icon,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-right:var(--ck-spacing-medium)}[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-left:var(--ck-spacing-medium)}.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);color:var(--ck-color-button-on-color)}.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)}.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);color:var(--ck-color-button-action-text)}.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)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/button.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/button.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/mixins/_button.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css"],names:[],mappings:"AAQA,6BAMC,kBAAmB,CADnB,mBAAoB,CADpB,iBAAkB,CCHlB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBD0BD,CEhCC,iDFWC,oBETD,CAFA,iDFeC,qBEbD,CFgBA,iEACC,YACD,CAGC,yGACC,oBACD,CAID,iFACC,sBACD,CGzBD,6BA6BC,uBAAwB,CC7BxB,oDAAqC,CDuBrC,4BAA6B,CExB7B,eAAgB,CFOhB,cAAe,CAcf,iBAAkB,CAHlB,aAAc,CAJd,4CAA6C,CAD7C,2CAA4C,CAJ5C,8BAA+B,CAC/B,iBAAkB,CAiBlB,4DAA8D,CAnB9D,qBAAsB,CAFtB,kBAwID,CC1IE,6EACC,0DACD,CAEA,+EACC,2DACD,CAID,qDACC,6DACD,CCdA,wIAEC,qCAED,CF0BA,uCA/BD,6BAgCE,eA6GF,CA5GC,CAEA,oFGpCA,2BAA2B,CCF3B,2CAA8B,CDC9B,YHyCA,CAIC,kJAEC,aACD,CAGD,iEAIC,aAAc,CACd,cAAe,CAHf,iBAAkB,CAClB,mBAAoB,CAMpB,qBASD,CDzEA,qFCmEE,eDjEF,CAFA,qFCuEE,gBDrEF,CCyEA,yEACC,aAAc,CAUd,UACD,CDvFA,6FC+EE,mCD7EF,CAFA,6FCmFE,oCDjFF,CCyFC,oIIxFD,oDJ4FC,CAOA,gLKnGD,kCLqGC,CAEA,iGACC,UACD,CAGD,qEACC,yDAYD,CD5HA,2HCqHG,qCDnHH,CAFA,2HCyHG,oCDvHH,CC8HC,mHACC,WACD,CAID,yCChIA,+CAAqC,CDmIpC,qCACD,CCjIC,yFACC,qDACD,CAEA,2FACC,sDACD,CAID,iEACC,wDACD,CDuHA,2DACC,iCACD,CAEA,+DACC,mCACD,CAID,2CChJC,mDAAqC,CDoJrC,wCACD,CClJE,2FACC,yDACD,CAEA,6FACC,0DACD,CAID,mEACC,4DACD,CDwID,uCAEC,eACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../mixins/_unselectable.css";\n@import "../../mixins/_dir.css";\n\n.ck.ck-button,\na.ck.ck-button {\n\t@mixin ck-unselectable;\n\n\tposition: relative;\n\tdisplay: inline-flex;\n\talign-items: center;\n\n\t@mixin ck-dir ltr {\n\t\tjustify-content: left;\n\t}\n\n\t@mixin ck-dir rtl {\n\t\tjustify-content: right;\n\t}\n\n\t& .ck-button__label {\n\t\tdisplay: none;\n\t}\n\n\t&.ck-button_with-text {\n\t\t& .ck-button__label {\n\t\t\tdisplay: inline-block;\n\t\t}\n\t}\n\n\t/* Center the icon horizontally in a button without text. */\n\t&:not(.ck-button_with-text) {\n\t\tjustify-content: center;\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Makes element unselectable.\n */\n@define-mixin ck-unselectable {\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_focus.css";\n@import "../../../mixins/_shadow.css";\n@import "../../../mixins/_disabled.css";\n@import "../../../mixins/_rounded.css";\n@import "../../mixins/_button.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n.ck.ck-button,\na.ck.ck-button {\n\t@mixin ck-button-colors --ck-color-button-default;\n\t@mixin ck-rounded-corners;\n\n\twhite-space: nowrap;\n\tcursor: default;\n\tvertical-align: middle;\n\tpadding: var(--ck-spacing-tiny);\n\ttext-align: center;\n\n\t/* A very important piece of styling. Go to variable declaration to learn more. */\n\tmin-width: var(--ck-ui-component-min-height);\n\tmin-height: var(--ck-ui-component-min-height);\n\n\t/* Normalize the height of the line. Removing this will break consistent height\n\tamong text and text-less buttons (with icons). */\n\tline-height: 1;\n\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\tfont-size: inherit;\n\n\t/* Avoid flickering when the foucs border shows up. */\n\tborder: 1px solid transparent;\n\n\t/* Apply some smooth transition to the box-shadow and border. */\n\ttransition: box-shadow .2s ease-in-out, border .2s ease-in-out;\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/189 */\n\t-webkit-appearance: none;\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: none;\n\t}\n\n\t&:active,\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t}\n\n\t/* Allow icon coloring using the text "color" property. */\n\t& .ck-button__icon {\n\t\t& use,\n\t\t& use * {\n\t\t\tcolor: inherit;\n\t\t}\n\t}\n\n\t& .ck-button__label {\n\t\t/* Enable font size inheritance, which allows fluid UI scaling. */\n\t\tfont-size: inherit;\n\t\tfont-weight: inherit;\n\t\tcolor: inherit;\n\t\tcursor: inherit;\n\n\t\t/* Must be consistent with .ck-icon\'s vertical align. Otherwise, buttons with and\n\t\twithout labels (but with icons) have different sizes in Chrome */\n\t\tvertical-align: middle;\n\n\t\t@mixin ck-dir ltr {\n\t\t\ttext-align: left;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\ttext-align: right;\n\t\t}\n\t}\n\n\t& .ck-button__keystroke {\n\t\tcolor: inherit;\n\n\t\t@mixin ck-dir ltr {\n\t\t\tmargin-left: var(--ck-spacing-large);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tmargin-right: var(--ck-spacing-large);\n\t\t}\n\n\t\topacity: .5;\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\n\t&.ck-disabled {\n\t\t&:active,\n\t\t&:focus {\n\t\t\t/* The disabled button should have a slightly less visible shadow when focused. */\n\t\t\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\n\t\t}\n\n\t\t& .ck-button__icon {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\n\t\t& .ck-button__label {\n\t\t\t@mixin ck-disabled;\n\t\t}\n\n\t\t& .ck-button__keystroke {\n\t\t\topacity: .3;\n\t\t}\n\t}\n\n\t&.ck-button_with-text {\n\t\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-standard);\n\n\t\t/* stylelint-disable-next-line no-descending-specificity */\n\t\t& .ck-button__icon {\n\t\t\t@mixin ck-dir ltr {\n\t\t\t\tmargin-right: var(--ck-spacing-medium);\n\t\t\t}\n\n\t\t\t@mixin ck-dir rtl {\n\t\t\t\tmargin-left: var(--ck-spacing-medium);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ck-button_with-keystroke {\n\t\t/* stylelint-disable-next-line no-descending-specificity */\n\t\t& .ck-button__label {\n\t\t\tflex-grow: 1;\n\t\t}\n\t}\n\n\t/* A style of the button which is currently on, e.g. its feature is active. */\n\t&.ck-on {\n\t\t@mixin ck-button-colors --ck-color-button-on;\n\n\t\tcolor: var(--ck-color-button-on-color);\n\t}\n\n\t&.ck-button-save {\n\t\tcolor: var(--ck-color-button-save);\n\t}\n\n\t&.ck-button-cancel {\n\t\tcolor: var(--ck-color-button-cancel);\n\t}\n}\n\n/* A style of the button which handles the primary action. */\n.ck.ck-button-action,\na.ck.ck-button-action {\n\t@mixin ck-button-colors --ck-color-button-action;\n\n\tcolor: var(--ck-color-button-action-text);\n}\n\n.ck.ck-button-bold,\na.ck.ck-button-bold {\n\tfont-weight: bold;\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements a button of given background color.\n *\n * @param {String} $background - Background color of the button.\n * @param {String} $border - Border color of the button.\n */\n@define-mixin ck-button-colors $prefix {\n\tbackground: var($(prefix)-background);\n\n\t&:not(.ck-disabled) {\n\t\t&:hover {\n\t\t\tbackground: var($(prefix)-hover-background);\n\t\t}\n\n\t\t&:active {\n\t\t\tbackground: var($(prefix)-active-background);\n\t\t}\n\t}\n\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\n\t&.ck-disabled {\n\t\tbackground: var($(prefix)-disabled-background);\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n"],sourceRoot:""}]);const a=s},9248:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck-content code{background-color:hsla(0,0%,78%,.3);border-radius:2px;padding:.15em}.ck.ck-editor__editable .ck-code_selected{background-color:hsla(0,0%,78%,.5)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-basic-styles/theme/code.css"],names:[],mappings:"AAKA,iBACC,kCAAuC,CAEvC,iBAAkB,CADlB,aAED,CAEA,0CACC,kCACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck-content code {\n\tbackground-color: hsla(0, 0%, 78%, 0.3);\n\tpadding: .15em;\n\tborder-radius: 2px;\n}\n\n.ck.ck-editor__editable .ck-code_selected {\n\tbackground-color: hsla(0, 0%, 78%, 0.5);\n}\n"],sourceRoot:""}]);const a=s},9262:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,'.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;pointer-events:none;position:relative}.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}.ck.ck-clipboard-drop-target-line{pointer-events:none;position:absolute}: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{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);margin-left:-1px;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{border-color:var(--ck-clipboard-drop-target-color) transparent transparent transparent;border-style:solid;border-width:calc(var(--ck-clipboard-drop-target-dot-height)) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5);content:"";display:block;height:0;left:50%;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);transform:translateX(-50%);width:0}.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}.ck.ck-clipboard-drop-target-line{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);height:0;margin-top:-1px}.ck.ck-clipboard-drop-target-line:before{border-style:solid;content:"";height:0;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-width)*-.5);width:0}[dir=ltr] .ck.ck-clipboard-drop-target-line:before{border-color:transparent transparent transparent var(--ck-clipboard-drop-target-color);border-width:calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5) var(--ck-clipboard-drop-target-dot-height);left:-1px}[dir=rtl] .ck.ck-clipboard-drop-target-line:before{border-color:transparent var(--ck-clipboard-drop-target-color) transparent transparent;border-width:calc(var(--ck-clipboard-drop-target-dot-width)*.5) var(--ck-clipboard-drop-target-dot-height) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0;right:-1px}',"",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-clipboard/theme/clipboard.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-clipboard/clipboard.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css"],names:[],mappings:"AASC,8DACC,cAAe,CAEf,mBAAoB,CADpB,iBAOD,CAJC,mEACC,iBAAkB,CAClB,OACD,CAWA,qJACC,YACD,CAIF,kCAEC,mBAAoB,CADpB,iBAED,CC9BA,MACC,yCAA0C,CAC1C,yCAA0C,CAC1C,6DACD,CAOE,mEAIC,gDAAiD,CADjD,sDAAuD,CAFvD,2DAA8D,CAI9D,gBAAiB,CAHjB,wDAqBD,CAfC,yEAWC,sFAAuF,CAEvF,kBAAmB,CADnB,qKAA0K,CAX1K,UAAW,CAIX,aAAc,CAFd,QAAS,CAIT,QAAS,CADT,iBAAkB,CAElB,wDAA2D,CAE3D,0BAA2B,CAR3B,OAYD,CAOF,kEACC,gGACD,CAKA,gDACC,OAAS,CACT,sBACD,CAGD,kCAGC,gDAAiD,CADjD,sDAAuD,CADvD,QAAS,CAGT,eAwBD,CAtBC,yCAMC,kBAAmB,CALnB,UAAW,CAIX,QAAS,CAHT,iBAAkB,CAClB,uDAA0D,CAC1D,OAiBD,CCjFA,mDDwEE,sFAAuF,CADvF,+JAAoK,CAFpK,SCnEF,CAFA,mDD+EE,sFAAuF,CADvF,+JAAmK,CAFnK,UC1EF",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-editor__editable {\n\t/*\n\t * Vertical drop target (in text).\n\t */\n\t& .ck.ck-clipboard-drop-target-position {\n\t\tdisplay: inline;\n\t\tposition: relative;\n\t\tpointer-events: none;\n\n\t\t& span {\n\t\t\tposition: absolute;\n\t\t\twidth: 0;\n\t\t}\n\t}\n\n\t/*\n\t * Styles of the widget being dragged (its preview).\n\t */\n\t& .ck-widget:-webkit-drag {\n\t\t& > .ck-widget__selection-handle {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t& > .ck-widget__type-around {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n}\n\n.ck.ck-clipboard-drop-target-line {\n\tposition: absolute;\n\tpointer-events: none;\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import \"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\";\n\n:root {\n\t--ck-clipboard-drop-target-dot-width: 12px;\n\t--ck-clipboard-drop-target-dot-height: 8px;\n\t--ck-clipboard-drop-target-color: var(--ck-color-focus-border);\n}\n\n.ck.ck-editor__editable {\n\t/*\n\t * Vertical drop target (in text).\n\t */\n\t& .ck.ck-clipboard-drop-target-position {\n\t\t& span {\n\t\t\tbottom: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\n\t\t\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\n\t\t\tborder: 1px solid var(--ck-clipboard-drop-target-color);\n\t\t\tbackground: var(--ck-clipboard-drop-target-color);\n\t\t\tmargin-left: -1px;\n\n\t\t\t/* The triangle above the marker */\n\t\t\t&::after {\n\t\t\t\tcontent: '';\n\t\t\t\twidth: 0;\n\t\t\t\theight: 0;\n\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\tleft: 50%;\n\t\t\t\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\n\n\t\t\t\ttransform: translateX(-50%);\n\t\t\t\tborder-color: var(--ck-clipboard-drop-target-color) transparent transparent transparent;\n\t\t\t\tborder-width: calc(var(--ck-clipboard-drop-target-dot-height)) calc(.5 * var(--ck-clipboard-drop-target-dot-width)) 0 calc(.5 * var(--ck-clipboard-drop-target-dot-width));\n\t\t\t\tborder-style: solid;\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Styles of the widget that it a drop target.\n\t */\n\t& .ck-widget.ck-clipboard-drop-target-range {\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color) !important;\n\t}\n\n\t/*\n\t * Styles of the widget being dragged (its preview).\n\t */\n\t& .ck-widget:-webkit-drag {\n\t\tzoom: 0.6;\n\t\toutline: none !important;\n\t}\n}\n\n.ck.ck-clipboard-drop-target-line {\n\theight: 0;\n\tborder: 1px solid var(--ck-clipboard-drop-target-color);\n\tbackground: var(--ck-clipboard-drop-target-color);\n\tmargin-top: -1px;\n\n\t&::before {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-width));\n\t\twidth: 0;\n\t\theight: 0;\n\t\tborder-style: solid;\n\n\t\t@mixin ck-dir ltr {\n\t\t\tleft: -1px;\n\n\t\t\tborder-width: calc(.5 * var(--ck-clipboard-drop-target-dot-width)) 0 calc(.5 * var(--ck-clipboard-drop-target-dot-width)) var(--ck-clipboard-drop-target-dot-height);\n\t\t\tborder-color: transparent transparent transparent var(--ck-clipboard-drop-target-color);\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\tright: -1px;\n\n\t\t\tborder-width:calc(.5 * var(--ck-clipboard-drop-target-dot-width)) var(--ck-clipboard-drop-target-dot-height) calc(.5 * var(--ck-clipboard-drop-target-dot-width)) 0;\n\t\t\tborder-color: transparent var(--ck-clipboard-drop-target-color) transparent transparent;\n\t\t}\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n'],sourceRoot:""}]);const a=s},9428:e=>{var t=!0,o=!1,n=!1;function i(e,t,o){var n=e.attrIndex(t),i=[t,o];n<0?e.attrPush(i):e.attrs[n]=i}function r(e,t){for(var o=e[t].level-1,n=t-1;n>=0;n--)if(e[n].level===o)return n;return-1}function s(e,t){return"inline"===e[t].type&&function(e){return"paragraph_open"===e.type}(e[t-1])&&function(e){return"list_item_open"===e.type}(e[t-2])&&function(e){return 0===e.content.indexOf("[ ] ")||0===e.content.indexOf("[x] ")||0===e.content.indexOf("[X] ")}(e[t])}function a(e,i){if(e.children.unshift(function(e,o){var n=new o("html_inline","",0),i=t?' disabled="" ':"";0===e.content.indexOf("[ ] ")?n.content='':0!==e.content.indexOf("[x] ")&&0!==e.content.indexOf("[X] ")||(n.content='');return n}(e,i)),e.children[1].content=e.children[1].content.slice(3),e.content=e.content.slice(3),o)if(n){e.children.pop();var r="task-item-"+Math.ceil(1e7*Math.random()-1e3);e.children[0].content=e.children[0].content.slice(0,-1)+' id="'+r+'">',e.children.push(function(e,t,o){var n=new o("html_inline","",0);return n.content='",n.attrs=[{for:t}],n}(e.content,r,i))}else e.children.unshift(function(e){var t=new e("html_inline","",0);return t.content="",t}(i))}e.exports=function(e,l){l&&(t=!l.enabled,o=!!l.label,n=!!l.labelAfter),e.core.ruler.after("inline","github-task-lists",(function(e){for(var o=e.tokens,n=2;n{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,":root{--ck-accessibility-help-dialog-max-width:600px;--ck-accessibility-help-dialog-max-height:400px;--ck-accessibility-help-dialog-border-color:#ccced1;--ck-accessibility-help-dialog-code-background-color:#ededed;--ck-accessibility-help-dialog-kbd-shadow-color:#9c9c9c}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content{border:1px solid transparent;max-height:var(--ck-accessibility-help-dialog-max-height);max-width:var(--ck-accessibility-help-dialog-max-width);overflow:auto;padding:var(--ck-spacing-large);user-select:text}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content *{white-space:normal}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content .ck-label{display:none}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h3{font-size:1.2em;font-weight:700}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h4{font-size:1em;font-weight:700}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h3,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h4,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content p,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content table{margin:1em 0}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl{border-bottom:none;border-top:1px solid var(--ck-accessibility-help-dialog-border-color);display:grid;grid-template-columns:2fr 1fr}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dd,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dt{border-bottom:1px solid var(--ck-accessibility-help-dialog-border-color);padding:.4em 0}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dt{grid-column-start:1}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dd{grid-column-start:2;text-align:right}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content code,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd{background:var(--ck-accessibility-help-dialog-code-background-color);border-radius:2px;display:inline-block;font-size:.9em;line-height:1;padding:.4em;text-align:center;vertical-align:middle}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content code{font-family:monospace}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd{box-shadow:0 1px 1px var(--ck-accessibility-help-dialog-kbd-shadow-color);margin:0 1px;min-width:1.8em}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd+kbd{margin-left:2px}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/accessibilityhelp.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAQA,MACC,8CAA+C,CAC/C,+CAAgD,CAChD,mDAA8D,CAC9D,4DAAyE,CACzE,uDACD,CAEA,wEAOC,4BAA6B,CAJ7B,yDAA0D,CAD1D,uDAAwD,CAExD,aAAc,CAHd,+BAAgC,CAIhC,gBAgFD,CA5EC,8ECdA,2BAA2B,CCF3B,2CAA8B,CDC9B,YDkBA,CAEA,0EACC,kBACD,CAGA,kFACC,YACD,CAEA,2EAEC,eAAgB,CADhB,eAED,CAEA,2EAEC,aAAc,CADd,eAED,CAEA,8SAIC,YACD,CAEA,2EAIC,kBAAmB,CADnB,qEAAsE,CAFtE,YAAa,CACb,6BAiBD,CAbC,4JACC,wEAAyE,CACzE,cACD,CAEA,8EACC,mBACD,CAEA,8EACC,mBAAoB,CACpB,gBACD,CAGD,yJAEC,oEAAqE,CAIrE,iBAAkB,CALlB,oBAAqB,CAOrB,cAAe,CAHf,aAAc,CAFd,YAAa,CAIb,iBAAkB,CAHlB,qBAKD,CAEA,6EACC,qBACD,CAEA,4EAEC,yEAA4E,CAC5E,YAAa,CAFb,eAOD,CAHC,gFACC,eACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_focus.css";\n@import "../../../mixins/_shadow.css";\n\n:root {\n\t--ck-accessibility-help-dialog-max-width: 600px;\n\t--ck-accessibility-help-dialog-max-height: 400px;\n\t--ck-accessibility-help-dialog-border-color: hsl(220, 6%, 81%);\n\t--ck-accessibility-help-dialog-code-background-color: hsl(0deg 0% 92.94%);\n\t--ck-accessibility-help-dialog-kbd-shadow-color: hsl(0deg 0% 61%);\n}\n\n.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content {\n\tpadding: var(--ck-spacing-large);\n\tmax-width: var(--ck-accessibility-help-dialog-max-width);\n\tmax-height: var(--ck-accessibility-help-dialog-max-height);\n\toverflow: auto;\n\tuser-select: text;\n\n\tborder: 1px solid transparent;\n\n\t&:focus {\n\t\t@mixin ck-focus-ring;\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\n\t}\n\n\t* {\n\t\twhite-space: normal;\n\t}\n\n\t/* Hide the main label of the content container. */\n\t& .ck-label {\n\t\tdisplay: none;\n\t}\n\n\t& h3 {\n\t\tfont-weight: bold;\n\t\tfont-size: 1.2em;\n\t}\n\n\t& h4 {\n\t\tfont-weight: bold;\n\t\tfont-size: 1em;\n\t}\n\n\t& p,\n\t& h3,\n\t& h4,\n\t& table {\n\t\tmargin: 1em 0;\n\t}\n\n\t& dl {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 2fr 1fr;\n\t\tborder-top: 1px solid var(--ck-accessibility-help-dialog-border-color);\n\t\tborder-bottom: none;\n\n\t\t& dt, & dd {\n\t\t\tborder-bottom: 1px solid var(--ck-accessibility-help-dialog-border-color);\n\t\t\tpadding: .4em 0;\n\t\t}\n\n\t\t& dt {\n\t\t\tgrid-column-start: 1;\n\t\t}\n\n\t\t& dd {\n\t\t\tgrid-column-start: 2;\n\t\t\ttext-align: right;\n\t\t}\n\t}\n\n\t& kbd, & code {\n\t\tdisplay: inline-block;\n\t\tbackground: var(--ck-accessibility-help-dialog-code-background-color);\n\t\tpadding: .4em;\n\t\tvertical-align: middle;\n\t\tline-height: 1;\n\t\tborder-radius: 2px;\n\t\ttext-align: center;\n\t\tfont-size: .9em;\n\t}\n\n\t& code {\n\t\tfont-family: monospace;\n\t}\n\n\t& kbd {\n\t\tmin-width: 1.8em;\n\t\tbox-shadow: 0px 1px 1px var(--ck-accessibility-help-dialog-kbd-shadow-color);\n\t\tmargin: 0 1px;\n\n\t\t& + kbd {\n\t\t\tmargin-left: 2px;\n\t\t}\n\t}\n}\n\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A visual style of focused element's border.\n */\n@define-mixin ck-focus-ring {\n\t/* Disable native outline. */\n\toutline: none;\n\tborder: var(--ck-focus-ring)\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A helper to combine multiple shadows.\n */\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\n\tbox-shadow: $shadowA, $shadowB;\n}\n\n/**\n * Gives an element a drop shadow so it looks like a floating panel.\n */\n@define-mixin ck-drop-shadow {\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\n}\n"],sourceRoot:""}]);const a=s},9624:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".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:calc(1.07692em + 1px);--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - 2px);--ck-switch-button-inner-hover-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton,.ck.ck-button.ck-switchbutton.ck-on:active,.ck.ck-button.ck-switchbutton.ck-on:focus,.ck.ck-button.ck-switchbutton.ck-on:hover,.ck.ck-button.ck-switchbutton:active,.ck.ck-button.ck-switchbutton:focus,.ck.ck-button.ck-switchbutton:hover{background:transparent;color:inherit}[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{background:var(--ck-color-switch-button-off-background);border:1px solid transparent;border-radius:0;transition:background .4s ease,box-shadow .2s ease-in-out,outline .2s ease-in-out;width:var(--ck-switch-button-toggle-width)}.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 .ck-button__toggle__inner{background:var(--ck-color-switch-button-inner-background);border-radius:0;height:var(--ck-switch-button-toggle-inner-size);transition:all .3s ease;width:var(--ck-switch-button-toggle-inner-size)}.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)*.5)}@media (prefers-reduced-motion:reduce){.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{transition:none}}.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:var(--ck-switch-button-inner-hover-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton:focus{border-color:transparent;box-shadow:none;outline:none}.ck.ck-button.ck-switchbutton:focus .ck-button__toggle{box-shadow:0 0 0 1px var(--ck-color-base-background),0 0 0 5px var(--ck-color-focus-outer-shadow);outline:var(--ck-focus-ring);outline-offset:1px}.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))}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/switchbutton.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/switchbutton.css","webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css"],names:[],mappings:"AASE,4HACC,aACD,CCCF,MAEC,8CAA+C,CAE/C,0DAAgE,CAChE,2HAIC,CACD,0FACD,CAOC,0QAEC,sBAAuB,CADvB,aAED,CC3BA,0DDgCE,4CC9BF,CAFA,0DDqCE,2CCnCF,CDuCA,iDAkBC,uDAAwD,CAFxD,4BAA6B,CEpD9B,eAAgB,CFmDf,iFAAsF,CAEtF,0CA2BD,CE9EA,yIAEC,qCAED,CDXA,2DD8CE,gBC5CF,CAFA,2DDmDE,iBCjDF,CD2DC,2EAOC,yDAA0D,CE/D5D,eAAgB,CF8Dd,gDAAiD,CAIjD,uBAA0B,CAL1B,+CAUD,CErED,6LAEC,qCAAsC,CFsDpC,8CEpDH,CF8DE,uCAZD,2EAaE,eAEF,CADC,CAGD,uDACC,6DAKD,CAHC,iFACC,qDACD,CAIF,6DGpFA,kCHsFA,CAGA,oCACC,wBAAyB,CAEzB,eAAgB,CADhB,YAQD,CALC,uDACC,iGAAmG,CAEnG,4BAA6B,CAD7B,kBAED,CAKA,uDACC,sDAkBD,CAhBC,6DACC,4DACD,CC/GF,2FDsHI,2DCpHJ,CAFA,2FD0HI,oECxHJ",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-button.ck-switchbutton {\n\t& .ck-button__toggle {\n\t\tdisplay: block;\n\n\t\t& .ck-button__toggle__inner {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n}\n",'/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@import "../../../mixins/_rounded.css";\n@import "../../../mixins/_disabled.css";\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\n\n/* Note: To avoid rendering issues (aliasing) but to preserve the responsive nature\nof the component, floating–point numbers have been used which, for the default font size\n(see: --ck-font-size-base), will generate simple integers. */\n:root {\n\t/* 34px at 13px font-size */\n\t--ck-switch-button-toggle-width: 2.6153846154em;\n\t/* 14px at 13px font-size */\n\t--ck-switch-button-toggle-inner-size: calc(1.0769230769em + 1px);\n\t--ck-switch-button-translation: calc(\n\t\tvar(--ck-switch-button-toggle-width) -\n\t\tvar(--ck-switch-button-toggle-inner-size) -\n\t\t2px /* Border */\n\t);\n\t--ck-switch-button-inner-hover-shadow: 0 0 0 5px var(--ck-color-switch-button-inner-shadow);\n}\n\n.ck.ck-button.ck-switchbutton {\n\t/* Unlike a regular button, the switch button text color and background should never change.\n\t * Changing toggle switch (background, outline) is enough to carry the information about the\n\t * state of the entire component (https://github.com/ckeditor/ckeditor5/issues/12519)\n\t */\n\t&, &:hover, &:focus, &:active, &.ck-on:hover, &.ck-on:focus, &.ck-on:active {\n\t\tcolor: inherit;\n\t\tbackground: transparent;\n\t}\n\n\t& .ck-button__label {\n\t\t@mixin ck-dir ltr {\n\t\t\t/* Separate the label from the switch */\n\t\t\tmargin-right: calc(2 * var(--ck-spacing-large));\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t/* Separate the label from the switch */\n\t\t\tmargin-left: calc(2 * var(--ck-spacing-large));\n\t\t}\n\t}\n\n\t& .ck-button__toggle {\n\t\t@mixin ck-rounded-corners;\n\n\t\t@mixin ck-dir ltr {\n\t\t\t/* Make sure the toggle is always to the right as far as possible. */\n\t\t\tmargin-left: auto;\n\t\t}\n\n\t\t@mixin ck-dir rtl {\n\t\t\t/* Make sure the toggle is always to the left as far as possible. */\n\t\t\tmargin-right: auto;\n\t\t}\n\n\t\t/* Apply some smooth transition to the box-shadow and border. */\n\t\t/* Gently animate the background color of the toggle switch */\n\t\ttransition: background 400ms ease, box-shadow .2s ease-in-out, outline .2s ease-in-out;\n\t\tborder: 1px solid transparent;\n\t\twidth: var(--ck-switch-button-toggle-width);\n\t\tbackground: var(--ck-color-switch-button-off-background);\n\n\t\t& .ck-button__toggle__inner {\n\t\t\t@mixin ck-rounded-corners {\n\t\t\t\tborder-radius: calc(.5 * var(--ck-border-radius));\n\t\t\t}\n\n\t\t\twidth: var(--ck-switch-button-toggle-inner-size);\n\t\t\theight: var(--ck-switch-button-toggle-inner-size);\n\t\t\tbackground: var(--ck-color-switch-button-inner-background);\n\n\t\t\t/* Gently animate the inner part of the toggle switch */\n\t\t\ttransition: all 300ms ease;\n\n\t\t\t@media (prefers-reduced-motion: reduce) {\n\t\t\t\ttransition: none;\n\t\t\t}\n\t\t}\n\n\t\t&:hover {\n\t\t\tbackground: var(--ck-color-switch-button-off-hover-background);\n\n\t\t\t& .ck-button__toggle__inner {\n\t\t\t\tbox-shadow: var(--ck-switch-button-inner-hover-shadow);\n\t\t\t}\n\t\t}\n\t}\n\n\t&.ck-disabled .ck-button__toggle {\n\t\t@mixin ck-disabled;\n\t}\n\n\t/* Overriding default .ck-button:focus styles + an outline around the toogle */\n\t&:focus {\n\t\tborder-color: transparent;\n\t\toutline: none;\n\t\tbox-shadow: none;\n\n\t\t& .ck-button__toggle {\n\t\t\tbox-shadow: 0 0 0 1px var(--ck-color-base-background), 0 0 0 5px var(--ck-color-focus-outer-shadow);\n\t\t\toutline-offset: 1px;\n\t\t\toutline: var(--ck-focus-ring);\n\t\t}\n\t}\n\n\t/* stylelint-disable-next-line no-descending-specificity */\n\t&.ck-on {\n\t\t& .ck-button__toggle {\n\t\t\tbackground: var(--ck-color-switch-button-on-background);\n\n\t\t\t&:hover {\n\t\t\t\tbackground: var(--ck-color-switch-button-on-hover-background);\n\t\t\t}\n\n\t\t\t& .ck-button__toggle__inner {\n\t\t\t\t/*\n\t\t\t\t* Move the toggle switch to the right. It will be animated.\n\t\t\t\t*/\n\t\t\t\t@mixin ck-dir ltr {\n\t\t\t\t\ttransform: translateX( var( --ck-switch-button-translation ) );\n\t\t\t\t}\n\n\t\t\t\t@mixin ck-dir rtl {\n\t\t\t\t\ttransform: translateX( calc( -1 * var( --ck-switch-button-translation ) ) );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n','/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n@define-mixin ck-dir $direction {\n\t[dir="$(direction)"] & {\n\t\t@mixin-content;\n\t}\n}\n',"/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * Implements rounded corner interface for .ck-rounded-corners class.\n *\n * @see $ck-border-radius\n */\n@define-mixin ck-rounded-corners {\n\tborder-radius: 0;\n\n\t.ck-rounded-corners &,\n\t&.ck-rounded-corners {\n\t\tborder-radius: var(--ck-border-radius);\n\t\t@mixin-content;\n\t}\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n/**\n * A class which indicates that an element holding it is disabled.\n */\n@define-mixin ck-disabled {\n\topacity: var(--ck-disabled-opacity);\n}\n"],sourceRoot:""}]);const a=s},9938:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck .ck-balloon-rotator__navigation{align-items:center;display:flex;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-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-left:var(--ck-spacing-small);margin-right:var(--ck-spacing-standard)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonrotator.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonrotator.css"],names:[],mappings:"AAKA,oCAEC,kBAAmB,CADnB,YAAa,CAEb,sBACD,CAKA,6CACC,sBACD,CCXA,oCACC,6CAA8C,CAC9C,sDAAuD,CACvD,iCAgBD,CAbC,sCAGC,qCAAsC,CAFtC,oCAAqC,CACrC,kCAED,CAGA,iEAIC,mCAAoC,CAHpC,uCAID,CAMA,2DACC,eACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck .ck-balloon-rotator__navigation {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Buttons inside a toolbar should be centered when rotator bar is wider.\n * See: https://github.com/ckeditor/ckeditor5-ui/issues/495\n */\n.ck .ck-balloon-rotator__content .ck-toolbar {\n\tjustify-content: center;\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck .ck-balloon-rotator__navigation {\n\tbackground: var(--ck-color-toolbar-background);\n\tborder-bottom: 1px solid var(--ck-color-toolbar-border);\n\tpadding: 0 var(--ck-spacing-small);\n\n\t/* Let's keep similar appearance to `ck-toolbar`. */\n\t& > * {\n\t\tmargin-right: var(--ck-spacing-small);\n\t\tmargin-top: var(--ck-spacing-small);\n\t\tmargin-bottom: var(--ck-spacing-small);\n\t}\n\n\t/* Gives counter more breath than buttons. */\n\t& .ck-balloon-rotator__counter {\n\t\tmargin-right: var(--ck-spacing-standard);\n\n\t\t/* We need to use smaller margin because of previous button's right margin. */\n\t\tmargin-left: var(--ck-spacing-small);\n\t}\n}\n\n.ck .ck-balloon-rotator__content {\n\n\t/* Disable default annotation shadow inside rotator with fake panels. */\n\t& .ck.ck-annotation-wrapper {\n\t\tbox-shadow: none;\n\t}\n}\n"],sourceRoot:""}]);const a=s},9939:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".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)}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css","webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/blocktoolbar.css"],names:[],mappings:"AAKA,4BACC,iBAAkB,CAClB,2BACD,CCHA,MACC,oDAAqD,CACrD,yDACD,CAEA,4BACC,0CAA2C,CAC3C,sCACD",sourcesContent:["/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck.ck-block-toolbar-button {\n\tposition: absolute;\n\tz-index: var(--ck-z-default);\n}\n","/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n:root {\n\t--ck-color-block-toolbar-button: var(--ck-color-text);\n\t--ck-block-toolbar-button-size: var(--ck-font-size-normal);\n}\n\n.ck.ck-block-toolbar-button {\n\tcolor: var(--ck-color-block-toolbar-button);\n\tfont-size: var(--ck-block-toolbar-size);\n}\n"],sourceRoot:""}]);const a=s},9969:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});var n=o(1354),i=o.n(n),r=o(6314),s=o.n(r)()(i());s.push([e.id,".ck-content .table{display:table;margin:.9em auto}.ck-content .table table{border:1px double #b3b3b3;border-collapse:collapse;border-spacing:0;height:100%;width:100%}.ck-content .table table td,.ck-content .table table th{border:1px solid #bfbfbf;min-width:2em;padding:.4em}.ck-content .table table th{background:rgba(0,0,0,.05);font-weight:700}@media print{.ck-content .table table{height:auto}}.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%}","",{version:3,sources:["webpack://./node_modules/@ckeditor/ckeditor5-table/theme/table.css"],names:[],mappings:"AAKA,mBAKC,aAAc,CADd,gBAiCD,CA9BC,yBAYC,yBAAkC,CAVlC,wBAAyB,CACzB,gBAAiB,CAKjB,WAAY,CADZ,UAsBD,CAfC,wDAQC,wBAAiC,CANjC,aAAc,CACd,YAMD,CAEA,4BAEC,0BAA+B,CAD/B,eAED,CAeF,aACC,yBACC,WACD,CACD,CAIA,+BACC,gBACD,CAEA,+BACC,eACD,CAEA,+CAKC,oBAAqB,CAMrB,UACD",sourcesContent:['/*\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n\n.ck-content .table {\n\t/* Give the table widget some air and center it horizontally */\n\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\n\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\n\tmargin: 0.9em auto;\n\tdisplay: table;\n\n\t& table {\n\t\t/* The table cells should have slight borders */\n\t\tborder-collapse: collapse;\n\t\tborder-spacing: 0;\n\n\t\t/* Table width and height are set on the parent
      . Make sure the table inside stretches\n\t\tto the full dimensions of the container (https://github.com/ckeditor/ckeditor5/issues/6186). */\n\t\twidth: 100%;\n\t\theight: 100%;\n\n\t\t/* The outer border of the table should be slightly darker than the inner lines.\n\t\tAlso see https://github.com/ckeditor/ckeditor5-table/issues/50. */\n\t\tborder: 1px double hsl(0, 0%, 70%);\n\n\t\t& td,\n\t\t& th {\n\t\t\tmin-width: 2em;\n\t\t\tpadding: .4em;\n\n\t\t\t/* The border is inherited from .ck-editor__nested-editable styles, so theoretically it\'s not necessary here.\n\t\t\tHowever, the border is a content style, so it should use .ck-content (so it works outside the editor).\n\t\t\tHence, the duplication. See https://github.com/ckeditor/ckeditor5/issues/6314 */\n\t\t\tborder: 1px solid hsl(0, 0%, 75%);\n\t\t}\n\n\t\t& th {\n\t\t\tfont-weight: bold;\n\t\t\tbackground: hsla(0, 0%, 0%, 5%);\n\t\t}\n\t}\n}\n\n/**\n * Expanding the table to the full height of the parent container is necessary because tables\n * are rendered inside
      elements, which is kinda buggy in table height calculation.\n * While setting `height: 100%` fixes the issue in the editing mode described here:\n * https://github.com/ckeditor/ckeditor5/issues/6186\n *\n * it\'s causing another issue with the table height in the print preview mode here:\n * https://github.com/ckeditor/ckeditor5/issues/16856\n *\n * For now, resetting the height to `initial` in the print mode works as a workaround.\n */\n@media print {\n\t.ck-content .table table {\n\t\theight: initial;\n\t}\n}\n\n/* Text alignment of the table header should match the editor settings and override the native browser styling,\nwhen content is available outside the editor. See https://github.com/ckeditor/ckeditor5/issues/6638 */\n.ck-content[dir="rtl"] .table th {\n\ttext-align: right;\n}\n\n.ck-content[dir="ltr"] .table th {\n\ttext-align: left;\n}\n\n.ck-editor__editable .ck-table-bogus-paragraph {\n\t/*\n\t * Use display:inline-block to force Chrome/Safari to limit text mutations to this element.\n\t * See https://github.com/ckeditor/ckeditor5/issues/6062.\n\t */\n\tdisplay: inline-block;\n\n\t/*\n\t * Inline HTML elements nested in the span should always be dimensioned in relation to the whole cell width.\n\t * See https://github.com/ckeditor/ckeditor5/issues/9117.\n\t */\n\twidth: 100%;\n}\n'],sourceRoot:""}]);const a=s}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,exports:{}};return o[e](r,r.exports,i),r.exports}i.m=o,i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}var r=Object.create(null);i.r(r);var s={};e=e||[null,t({}),t([]),t(t)];for(var a=2&n&&o;"object"==typeof a&&!~e.indexOf(a);a=t(a))Object.getOwnPropertyNames(a).forEach((e=>s[e]=()=>o[e]));return s.default=()=>o,i.d(r,s),r},i.d=(e,t)=>{for(var o in t)i.o(t,o)&&!i.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.b=document.baseURI||self.location.href;var r={};return(()=>{"use strict";var e={};i.r(e),i.d(e,{decode:()=>UI,encode:()=>KI,format:()=>ZI,parse:()=>lP});var t={};i.r(t),i.d(t,{Any:()=>uP,Cc:()=>hP,Cf:()=>pP,P:()=>cP,S:()=>dP,Z:()=>mP});var o={};i.r(o),i.d(o,{arrayReplaceAt:()=>jP,assign:()=>HP,escapeHtml:()=>eF,escapeRE:()=>oF,fromCodePoint:()=>$P,has:()=>LP,isMdAsciiPunct:()=>sF,isPunctChar:()=>rF,isSpace:()=>nF,isString:()=>NP,isValidEntityCode:()=>qP,isWhiteSpace:()=>iF,lib:()=>lF,normalizeReference:()=>aF,unescapeAll:()=>ZP,unescapeMd:()=>KP});var n={};let r;i.r(n),i.d(n,{parseLinkDestination:()=>dF,parseLinkLabel:()=>cF,parseLinkTitle:()=>uF});try{r={window,document}}catch(e){r={window:{},document:{}}}const s=r;function a(){try{return navigator.userAgent.toLowerCase()}catch(e){return""}}const l=a(),c={isMac:d(l),isWindows:u(l),isGecko:h(l),isSafari:p(l),isiOS:m(l),isAndroid:g(l),isBlink:f(l),get isMediaForcedColors(){return!!s.window.matchMedia&&s.window.matchMedia("(forced-colors: active)").matches},get isMotionReduced(){return!!s.window.matchMedia&&s.window.matchMedia("(prefers-reduced-motion)").matches},features:{isRegExpUnicodePropertySupported:b()}};function d(e){return e.indexOf("macintosh")>-1}function u(e){return e.indexOf("windows")>-1}function h(e){return!!e.match(/gecko\/\d+/)}function p(e){return e.indexOf(" applewebkit/")>-1&&-1===e.indexOf("chrome")}function m(e){return!!e.match(/iphone|ipad/i)||d(e)&&navigator.maxTouchPoints>0}function g(e){return e.indexOf("android")>-1}function f(e){return e.indexOf("chrome/")>-1&&e.indexOf("edge/")<0}function b(){let e=!1;try{e=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch(e){}return e}function k(e,t,o,n){o=o||function(e,t){return e===t};const i=Array.isArray(e)?e:Array.prototype.slice.call(e),r=Array.isArray(t)?t:Array.prototype.slice.call(t),s=function(e,t,o){const n=w(e,t,o);if(-1===n)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const i=y(e,n),r=y(t,n),s=w(i,r,o),a=e.length-s,l=t.length-s;return{firstIndex:n,lastIndexOld:a,lastIndexNew:l}}(i,r,o),a=n?function(e,t){const{firstIndex:o,lastIndexOld:n,lastIndexNew:i}=e;if(-1===o)return Array(t).fill("equal");let r=[];o>0&&(r=r.concat(Array(o).fill("equal")));i-o>0&&(r=r.concat(Array(i-o).fill("insert")));n-o>0&&(r=r.concat(Array(n-o).fill("delete")));i0&&o.push({index:n,type:"insert",values:e.slice(n,r)});i-n>0&&o.push({index:n+(r-n),type:"delete",howMany:i-n});return o}(r,s);return a}function w(e,t,o){for(let n=0;n200||i>200||n+i>300)return A.fastDiff(e,t,o,!0);let r,s;if(ic?-1:1;d[n+h]&&(d[n]=d[n+h].slice(0)),d[n]||(d[n]=[]),d[n].push(i>c?r:s);let p=Math.max(i,c),m=p-n;for(;mc;p--)u[p]=h(p);u[c]=h(c),m++}while(u[c]!==l);return d[c].slice(1)}A.fastDiff=k;const C=function(){return function e(){e.called=!0}};class v{constructor(e,t){this.source=e,this.name=t,this.path=[],this.stop=C(),this.off=C()}}const x=new Array(256).fill("").map(((e,t)=>("0"+t.toString(16)).slice(-2)));function E(){const[e,t,o,n]=crypto.getRandomValues(new Uint32Array(4));return"e"+x[255&e]+x[e>>8&255]+x[e>>16&255]+x[e>>24&255]+x[255&t]+x[t>>8&255]+x[t>>16&255]+x[t>>24&255]+x[255&o]+x[o>>8&255]+x[o>>16&255]+x[o>>24&255]+x[255&n]+x[n>>8&255]+x[n>>16&255]+x[n>>24&255]}const D={get(e="normal"){return"number"!=typeof e?this[e]||this.normal:e},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5};function B(e,t){const o=D.get(t.priority);let n=0,i=e.length;for(;n>1;D.get(e[t].priority){if("object"==typeof t&&null!==t){if(o.has(t))return`[object ${t.constructor.name}]`;o.add(t)}return t},i=t?` ${JSON.stringify(t,n)}`:"",r=I(e);return e+i+r}(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 S(e.message,t);throw o.stack=e.stack,o}}function T(e,t){console.warn(...P(e,t))}function I(e){return`\nRead more: https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html#error-${e}`}function P(e,t){const o=I(e);return t?[e,t,o]:[e,o]}const F="44.3.0",R=new Date(2025,2,5);if(globalThis.CKEDITOR_VERSION)throw new S("ckeditor-duplicated-modules",null);globalThis.CKEDITOR_VERSION=F;const M=Symbol("listeningTo"),z=Symbol("emitterId"),O=Symbol("delegations"),N=V(Object);function V(e){if(!e)return N;return class extends e{on(e,t,o){this.listenTo(this,e,t,o)}once(e,t,o){let n=!1;this.listenTo(this,e,((e,...o)=>{n||(n=!0,e.off(),t.call(this,e,...o))}),o)}off(e,t){this.stopListening(this,e,t)}listenTo(e,t,o,n={}){let i,r;this[M]||(this[M]={});const s=this[M];H(e)||L(e);const a=H(e);(i=s[a])||(i=s[a]={emitter:e,callbacks:{}}),(r=i.callbacks[t])||(r=i.callbacks[t]=[]),r.push(o),function(e,t,o,n,i){t._addEventListener?t._addEventListener(o,n,i):e._addEventListener.call(t,o,n,i)}(this,e,t,o,n)}stopListening(e,t,o){const n=this[M];let i=e&&H(e);const r=n&&i?n[i]:void 0,s=r&&t?r.callbacks[t]:void 0;if(!(!n||e&&!r||t&&!s))if(o){U(this,e,t,o);-1!==s.indexOf(o)&&(1===s.length?delete r.callbacks[t]:U(this,e,t,o))}else if(s){for(;o=s.pop();)U(this,e,t,o);delete r.callbacks[t]}else if(r){for(t in r.callbacks)this.stopListening(e,t);delete n[i]}else{for(i in n)this.stopListening(n[i].emitter);delete this[M]}}fire(e,...t){try{const o=e instanceof v?e:new v(this,e),n=o.name;let i=function(e,t){if(!e._events)return null;let o=t;do{const t=e._events[o];if(t&&t.callbacks&&t.callbacks.length)return t.callbacks;const n=o.lastIndexOf(":");o=n>-1?o.substring(0,n):""}while(o);return null}(this,n);if(o.path.push(this),i){i=i.slice();for(let e=0;e{this[O]||(this[O]=new Map),e.forEach((e=>{const n=this[O].get(e);n?n.set(t,o):this[O].set(e,new Map([[t,o]]))}))}}}stopDelegating(e,t){if(this[O])if(e)if(t){const o=this[O].get(e);o&&o.delete(t)}else this[O].delete(e);else this[O].clear()}_addEventListener(e,t,o){!function(e,t){const o=j(e);if(o[t])return;let n=t,i=null;const r=[];for(;""!==n&&!o[n];)o[n]={callbacks:[],childEvents:[]},r.push(o[n]),i&&o[n].childEvents.push(i),i=n,n=n.substr(0,n.lastIndexOf(":"));if(""!==n){for(const e of r)e.callbacks=o[n].callbacks.slice();o[n].childEvents.push(i)}}(this,e);const n=q(this,e),i={callback:t,priority:D.get(o.priority)};for(const e of n)B(e,i)}_removeEventListener(e,t){const o=q(this,e);for(const e of o)for(let o=0;o{V[e]=N.prototype[e]}));const W=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},G=Symbol("observableProperties"),K=Symbol("boundObservables"),Z=Symbol("boundProperties"),J=Symbol("decoratedMethods"),Y=Symbol("decoratedOriginal"),Q=X(V());function X(e){if(!e)return Q;return class extends e{set(e,t){if(W(e))return void Object.keys(e).forEach((t=>{this.set(t,e[t])}),this);ee(this);const o=this[G];if(e in this&&!o.has(e))throw new S("observable-set-cannot-override",this);Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:()=>o.get(e),set(t){const n=o.get(e);let i=this.fire(`set:${e}`,e,t,n);void 0===i&&(i=t),n===i&&o.has(e)||(o.set(e,i),this.fire(`change:${e}`,e,i,n))}}),this[e]=t}bind(...e){if(!e.length||!ne(e))throw new S("observable-bind-wrong-properties",this);if(new Set(e).size!==e.length)throw new S("observable-bind-duplicate-properties",this);ee(this);const t=this[Z];e.forEach((e=>{if(t.has(e))throw new S("observable-bind-rebind",this)}));const o=new Map;return e.forEach((e=>{const n={property:e,to:[]};t.set(e,n),o.set(e,n)})),{to:te,toMany:oe,_observable:this,_bindProperties:e,_to:[],_bindings:o}}unbind(...e){if(!this[G])return;const t=this[Z],o=this[K];if(e.length){if(!ne(e))throw new S("observable-unbind-wrong-properties",this);e.forEach((e=>{const n=t.get(e);n&&(n.to.forEach((([e,t])=>{const i=o.get(e),r=i[t];r.delete(n),r.size||delete i[t],Object.keys(i).length||(o.delete(e),this.stopListening(e,"change"))})),t.delete(e))}))}else o.forEach(((e,t)=>{this.stopListening(t,"change")})),o.clear(),t.clear()}decorate(e){ee(this);const t=this[e];if(!t)throw new S("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][Y]=t,this[J]||(this[J]=[]),this[J].push(e)}stopListening(e,t,o){if(!e&&this[J]){for(const e of this[J])this[e]=this[e][Y];delete this[J]}super.stopListening(e,t,o)}}}function ee(e){e[G]||(Object.defineProperty(e,G,{value:new Map}),Object.defineProperty(e,K,{value:new Map}),Object.defineProperty(e,Z,{value:new Map}))}function te(...e){const t=function(...e){if(!e.length)throw new S("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("observable-bind-to-parse-error",null);o={observable:e,properties:[]},t.to.push(o)}})),t}(...e),o=Array.from(this._bindings.keys()),n=o.length;if(!t.callback&&t.to.length>1)throw new S("observable-bind-to-no-callback",this);if(n>1&&t.callback)throw new S("observable-bind-to-extra-callback",this);var i;t.to.forEach((e=>{if(e.properties.length&&e.properties.length!==n)throw new S("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),i=this._observable,this._to.forEach((e=>{const t=i[K];let o;t.get(e.observable)||i.listenTo(e.observable,"change",((n,r)=>{o=t.get(e.observable)[r],o&&o.forEach((e=>{ie(i,e.property)}))}))})),function(e){let t;e._bindings.forEach(((o,n)=>{e._to.forEach((i=>{t=i.properties[o.callback?0:e._bindProperties.indexOf(n)],o.to.push([i.observable,t]),function(e,t,o,n){const i=e[K],r=i.get(o),s=r||{};s[n]||(s[n]=new Set);s[n].add(t),r||i.set(o,s)}(e._observable,o,i.observable,t)}))}))}(this),this._bindProperties.forEach((e=>{ie(this._observable,e)}))}function oe(e,t,o){if(this._bindings.size>1)throw new S("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 ne(e){return e.every((e=>"string"==typeof e))}function ie(e,t){const o=e[Z].get(t);let n;o.callback?n=o.callback.apply(e,o.to.map((e=>e[0][e[1]]))):(n=o.to[0],n=n[0][n[1]]),Object.prototype.hasOwnProperty.call(e,t)?e[t]=n:e.set(t,n)}function re(e){let t=0;for(const o of e)t++;return t}function se(e,t){const o=Math.min(e.length,t.length);for(let n=0;n{X[e]=Q.prototype[e]}));const le="object"==typeof global&&global&&global.Object===Object&&global;var ce="object"==typeof self&&self&&self.Object===Object&&self;const de=le||ce||Function("return this")();const ue=de.Symbol;var he=Object.prototype,pe=he.hasOwnProperty,me=he.toString,ge=ue?ue.toStringTag:void 0;const fe=function(e){var t=pe.call(e,ge),o=e[ge];try{e[ge]=void 0;var n=!0}catch(e){}var i=me.call(e);return n&&(t?e[ge]=o:delete e[ge]),i};var be=Object.prototype.toString;const ke=function(e){return be.call(e)};var we=ue?ue.toStringTag:void 0;const _e=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":we&&we in Object(e)?fe(e):ke(e)};const ye=Array.isArray;const Ae=function(e){return null!=e&&"object"==typeof e};const Ce=function(e){return"string"==typeof e||!ye(e)&&Ae(e)&&"[object String]"==_e(e)};function ve(e,t,o={},n=[]){const i=o&&o.xmlns,r=i?e.createElementNS(i,t):e.createElement(t);for(const e in o)r.setAttribute(e,o[e]);!Ce(n)&&ae(n)||(n=[n]);for(let t of n)Ce(t)&&(t=e.createTextNode(t)),r.appendChild(t);return r}const xe=function(e,t){return function(o){return e(t(o))}};const Ee=xe(Object.getPrototypeOf,Object);var De=Function.prototype,Be=Object.prototype,Se=De.toString,Te=Be.hasOwnProperty,Ie=Se.call(Object);const Pe=function(e){if(!Ae(e)||"[object Object]"!=_e(e))return!1;var t=Ee(e);if(null===t)return!0;var o=Te.call(t,"constructor")&&t.constructor;return"function"==typeof o&&o instanceof o&&Se.call(o)==Ie};const Fe=function(){this.__data__=[],this.size=0};const Re=function(e,t){return e===t||e!=e&&t!=t};const Me=function(e,t){for(var o=e.length;o--;)if(Re(e[o][0],t))return o;return-1};var ze=Array.prototype.splice;const Oe=function(e){var t=this.__data__,o=Me(t,e);return!(o<0)&&(o==t.length-1?t.pop():ze.call(t,o,1),--this.size,!0)};const Ne=function(e){var t=this.__data__,o=Me(t,e);return o<0?void 0:t[o][1]};const Ve=function(e){return Me(this.__data__,e)>-1};const Le=function(e,t){var o=this.__data__,n=Me(o,e);return n<0?(++this.size,o.push([e,t])):o[n][1]=t,this};function He(e){var t=-1,o=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991};var Yt={};Yt["[object Float32Array]"]=Yt["[object Float64Array]"]=Yt["[object Int8Array]"]=Yt["[object Int16Array]"]=Yt["[object Int32Array]"]=Yt["[object Uint8Array]"]=Yt["[object Uint8ClampedArray]"]=Yt["[object Uint16Array]"]=Yt["[object Uint32Array]"]=!0,Yt["[object Arguments]"]=Yt["[object Array]"]=Yt["[object ArrayBuffer]"]=Yt["[object Boolean]"]=Yt["[object DataView]"]=Yt["[object Date]"]=Yt["[object Error]"]=Yt["[object Function]"]=Yt["[object Map]"]=Yt["[object Number]"]=Yt["[object Object]"]=Yt["[object RegExp]"]=Yt["[object Set]"]=Yt["[object String]"]=Yt["[object WeakMap]"]=!1;const Qt=function(e){return Ae(e)&&Jt(e.length)&&!!Yt[_e(e)]};const Xt=function(e){return function(t){return e(t)}};var eo="object"==typeof exports&&exports&&!exports.nodeType&&exports,to=eo&&"object"==typeof module&&module&&!module.nodeType&&module,oo=to&&to.exports===eo&&le.process;const no=function(){try{var e=to&&to.require&&to.require("util").types;return e||oo&&oo.binding&&oo.binding("util")}catch(e){}}();var io=no&&no.isTypedArray;const ro=io?Xt(io):Qt;var so=Object.prototype.hasOwnProperty;const ao=function(e,t){var o=ye(e),n=!o&&jt(e),i=!o&&!n&&Gt(e),r=!o&&!n&&!i&&ro(e),s=o||n||i||r,a=s?Ot(e.length,String):[],l=a.length;for(var c in e)!t&&!so.call(e,c)||s&&("length"==c||i&&("offset"==c||"parent"==c)||r&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Zt(c,l))||a.push(c);return a};var lo=Object.prototype;const co=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||lo)};const uo=xe(Object.keys,Object);var ho=Object.prototype.hasOwnProperty;const po=function(e){if(!co(e))return uo(e);var t=[];for(var o in Object(e))ho.call(e,o)&&"constructor"!=o&&t.push(o);return t};const mo=function(e){return null!=e&&Jt(e.length)&&!Ge(e)};const go=function(e){return mo(e)?ao(e):po(e)};const fo=function(e,t){return e&&zt(t,go(t),e)};const bo=function(e){var t=[];if(null!=e)for(var o in Object(e))t.push(o);return t};var ko=Object.prototype.hasOwnProperty;const wo=function(e){if(!W(e))return bo(e);var t=co(e),o=[];for(var n in e)("constructor"!=n||!t&&ko.call(e,n))&&o.push(n);return o};const _o=function(e){return mo(e)?ao(e,!0):wo(e)};const yo=function(e,t){return e&&zt(t,_o(t),e)};var Ao="object"==typeof exports&&exports&&!exports.nodeType&&exports,Co=Ao&&"object"==typeof module&&module&&!module.nodeType&&module,vo=Co&&Co.exports===Ao?de.Buffer:void 0,xo=vo?vo.allocUnsafe:void 0;const Eo=function(e,t){if(t)return e.slice();var o=e.length,n=xo?xo(o):new e.constructor(o);return e.copy(n),n};const Do=function(e,t){var o=-1,n=e.length;for(t||(t=Array(n));++o{this._setToTarget(e,n,t[n],o)}))}}function Pn(e){return Sn(e,Fn)}function Fn(e){return Tn(e)||"function"==typeof e?e:void 0}function Rn(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}function Mn(e){const t=Object.prototype.toString.apply(e);return"[object Window]"==t||"[object global]"==t}const zn=On(V());function On(e){if(!e)return zn;return class extends e{listenTo(e,t,o,n={}){if(Rn(e)||Mn(e)){const i={capture:!!n.useCapture,passive:!!n.usePassive},r=this._getProxyEmitter(e,i)||new Nn(e,i);this.listenTo(r,t,o,n)}else super.listenTo(e,t,o,n)}stopListening(e,t,o){if(Rn(e)||Mn(e)){const n=this._getAllProxyEmitters(e);for(const e of n)this.stopListening(e,t,o)}else super.stopListening(e,t,o)}_getProxyEmitter(e,t){return function(e,t){const o=e[M];return o&&o[t]?o[t].emitter:null}(this,Vn(e,t))}_getAllProxyEmitters(e){return[{capture:!1,passive:!1},{capture:!1,passive:!0},{capture:!0,passive:!1},{capture:!0,passive:!0}].map((t=>this._getProxyEmitter(e,t))).filter((e=>!!e))}}}["_getProxyEmitter","_getAllProxyEmitters","on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((e=>{On[e]=zn.prototype[e]}));class Nn extends(V()){constructor(e,t){super(),L(this,Vn(e,t)),this._domNode=e,this._options=t}attach(e){if(this._domListeners&&this._domListeners[e])return;const t=this._createDomListener(e);this._domNode.addEventListener(e,t,this._options),this._domListeners||(this._domListeners={}),this._domListeners[e]=t}detach(e){let t;!this._domListeners[e]||(t=this._events[e])&&t.callbacks.length||this._domListeners[e].removeListener()}_addEventListener(e,t,o){this.attach(e),V().prototype._addEventListener.call(this,e,t,o)}_removeEventListener(e,t){V().prototype._removeEventListener.call(this,e,t),this.detach(e)}_createDomListener(e){const t=t=>{this.fire(e,t)};return t.removeListener=()=>{this._domNode.removeEventListener(e,t,this._options),delete this._domListeners[e]},t}}function Vn(e,t){let o=function(e){return e["data-ck-expando"]||(e["data-ck-expando"]=E())}(e);for(const e of Object.keys(t).sort())t[e]&&(o+="-"+e);return o}function Ln(e){const t=[];let o=e;for(;o&&o.nodeType!=Node.DOCUMENT_NODE;)t.unshift(o),o=o.parentNode;return t}function Hn(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)}}function jn(e){if(!e.target)return null;const t=e.target.ownerDocument,o=e.clientX,n=e.clientY;let i=null;return t.caretRangeFromPoint&&t.caretRangeFromPoint(o,n)?i=t.caretRangeFromPoint(o,n):e.rangeParent&&(i=t.createRange(),i.setStart(e.rangeParent,e.rangeOffset),i.collapse(!0)),i}function qn(e){return"[object Text]"==Object.prototype.toString.call(e)}function $n(e){return"[object Range]"==Object.prototype.toString.apply(e)}function Un(e){return e&&e.parentNode?e.offsetParent===s.document.body?null:e.offsetParent:null}const Wn=["top","right","bottom","left","width","height"];class Gn{constructor(e){const t=$n(e);if(Object.defineProperty(this,"_source",{value:e._source||e,writable:!0,enumerable:!1}),Jn(e)||t)if(t){const t=Gn.getDomRangeRects(e);Kn(this,Gn.getBoundingRect(t))}else Kn(this,e.getBoundingClientRect());else if(Mn(e)){const{innerWidth:t,innerHeight:o}=e;Kn(this,{top:0,right:t,bottom:o,left:0,width:t,height:o})}else Kn(this,e)}clone(){return new Gn(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),width:0,height:0};if(t.width=t.right-t.left,t.height=t.bottom-t.top,t.width<0||t.height<0)return null;{const e=new Gn(t);return e._source=this._source,e}}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(Zn(e))return t;let o,n=e,i=e.parentNode||e.commonAncestorContainer;for(;i&&!Zn(i);){const e="visible"===((r=i)instanceof HTMLElement?r.ownerDocument.defaultView.getComputedStyle(r).overflow:"visible");n instanceof HTMLElement&&"absolute"===Yn(n)&&(o=n);const s=Yn(i);if(e||o&&("relative"===s&&e||"relative"!==s)){n=i,i=i.parentNode;continue}const a=new Gn(i),l=t.getIntersection(a);if(!l)return null;l.getArea(){for(const t of e){const e=Qn._getElementCallbacks(t.target);if(e)for(const o of e)o(t)}}))}}Qn._observerInstance=null,Qn._elementCallbacks=null;const Xn=Qn;function ei(e,t){e instanceof HTMLTextAreaElement&&(e.value=t),e.innerHTML=t}function ti(e){return t=>t+e}function oi(e){let t=0;for(;e.previousSibling;)e=e.previousSibling,t++;return t}function ni(e,t,o){e.insertBefore(o,e.childNodes[t]||null)}function ii(e){return e&&e.nodeType===Node.COMMENT_NODE}function ri(e){return!!e&&(qn(e)?ri(e.parentElement):!!e.getClientRects&&!!e.getClientRects().length)}function si({element:e,target:t,positions:o,limiter:n,fitInViewport:i,viewportOffsetConfig:r}){Ge(t)&&(t=t()),Ge(n)&&(n=n());const a=Un(e),l=function(e){e=Object.assign({top:0,bottom:0,left:0,right:0},e);const t=new Gn(s.window);return t.top+=e.top,t.height-=e.top,t.bottom-=e.bottom,t.height-=e.bottom,t}(r),c=new Gn(e),d=ai(t,l);let u;if(!d||!l.getIntersection(d))return null;const h={targetRect:d,elementRect:c,positionedElementAncestor:a,viewportRect:l};if(n||i){if(n){const e=ai(n,l);e&&(h.limiterRect=e)}u=function(e,t){const{elementRect:o}=t,n=o.getArea(),i=e.map((e=>new li(e,t))).filter((e=>!!e.name));let r=0,s=null;for(const e of i){const{limiterIntersectionArea:t,viewportIntersectionArea:o}=e;if(t===n)return e;const i=o**2+t**2;i>r&&(r=i,s=e)}return s}(o,h)}else u=new li(o[0],h);return u}function ai(e,t){const o=new Gn(e).getVisible();return o?o.getIntersection(t):null}class li{constructor(e,t){const o=e(t.targetRect,t.elementRect,t.viewportRect,t.limiterRect);if(!o)return;const{left:n,top:i,name:r,config:s}=o;this.name=r,this.config=s,this._positioningFunctionCoordinates={left:n,top:i},this._options=t}get left(){return this._absoluteRect.left}get top(){return this._absoluteRect.top}get limiterIntersectionArea(){const e=this._options.limiterRect;return e?e.getIntersectionArea(this._rect):0}get viewportIntersectionArea(){return this._options.viewportRect.getIntersectionArea(this._rect)}get _rect(){return this._cachedRect||(this._cachedRect=this._options.elementRect.clone().moveTo(this._positioningFunctionCoordinates.left,this._positioningFunctionCoordinates.top)),this._cachedRect}get _absoluteRect(){return this._cachedAbsoluteRect||(this._cachedAbsoluteRect=this._rect.toAbsoluteRect()),this._cachedAbsoluteRect}}function ci(e){const t=e.parentNode;t&&t.removeChild(e)}function di({window:e,rect:t,alignToTop:o,forceScroll:n,viewportOffset:i}){const r=t.clone().moveBy(0,i.bottom),s=t.clone().moveBy(0,-i.top),a=new Gn(e).excludeScrollbarsAndBorders(),l=o&&n,c=[s,r].every((e=>a.contains(e)));let{scrollX:d,scrollY:u}=e;const h=d,p=u;l?u-=a.top-t.top+i.top:c||(pi(s,a)?u-=a.top-t.top+i.top:hi(r,a)&&(u+=o?t.top-a.top-i.top:t.bottom-a.bottom+i.bottom)),c||(mi(t,a)?d-=a.left-t.left+i.left:gi(t,a)&&(d+=t.right-a.right+i.right)),d==h&&u===p||e.scrollTo(d,u)}function ui({parent:e,getRect:t,alignToTop:o,forceScroll:n,ancestorOffset:i=0,limiterElement:r}){const s=fi(e),a=o&&n;let l,c,d;const u=r||s.document.body;for(;e!=u;)c=t(),l=new Gn(e).excludeScrollbarsAndBorders(),d=l.contains(c),a?e.scrollTop-=l.top-c.top+i:d||(pi(c,l)?e.scrollTop-=l.top-c.top+i:hi(c,l)&&(e.scrollTop+=o?c.top-l.top-i:c.bottom-l.bottom+i)),d||(mi(c,l)?e.scrollLeft-=l.left-c.left+i:gi(c,l)&&(e.scrollLeft+=c.right-l.right+i)),e=e.parentNode}function hi(e,t){return e.bottom>t.bottom}function pi(e,t){return e.topt.right}function fi(e){return $n(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function bi(e){if($n(e)){let t=e.commonAncestorContainer;return qn(t)&&(t=t.parentNode),t}return e.parentNode}function ki(e,t){const o=fi(e),n=new Gn(e);if(o===t)return n;{let e=o;for(;e!=t;){const t=e.frameElement,o=new Gn(t).excludeScrollbarsAndBorders();n.moveBy(o.left,o.top),e=e.parent}}return n}const wi={ctrl:"⌃",cmd:"⌘",alt:"⌥",shift:"⇧"},_i={ctrl:"Ctrl+",alt:"Alt+",shift:"Shift+"},yi={37:"←",38:"↑",39:"→",40:"↓",9:"⇥",33:"Page Up",34:"Page Down"},Ai=Bi(),Ci=Object.fromEntries(Object.entries(Ai).map((([e,t])=>{let o;return o=t in yi?yi[t]:e.charAt(0).toUpperCase()+e.slice(1),[t,o]})));function vi(e){let t;if("string"==typeof e){if(t=Ai[e.toLowerCase()],!t)throw new S("keyboard-unknown-key",null,{key:e})}else t=e.keyCode+(e.altKey?Ai.alt:0)+(e.ctrlKey?Ai.ctrl:0)+(e.shiftKey?Ai.shift:0)+(e.metaKey?Ai.cmd:0);return t}function xi(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 vi(e.slice(0,-1));const t=vi(e);return(c.isMac||c.isiOS)&&t==Ai.ctrl?Ai.cmd:t}(e):e)).reduce(((e,t)=>t+e),0)}function Ei(e,t){let o=xi(e);const n=t?"Mac"===t:c.isMac||c.isiOS;return Object.entries(n?wi:_i).reduce(((e,[t,n])=>(o&Ai[t]&&(o&=~Ai[t],e+=n),e)),"")+(o?Ci[o]:"")}function Di(e,t){const o="ltr"===t;switch(e){case Ai.arrowleft:return o?"left":"right";case Ai.arrowright:return o?"right":"left";case Ai.arrowup:return"up";case Ai.arrowdown:return"down"}}function Bi(){const e={pageup:33,pagedown:34,end:35,home:36,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++){e[String.fromCharCode(t).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;return Object.assign(e,{"'":222,",":108,"-":109,".":110,"/":111,";":186,"=":187,"[":219,"\\":220,"]":221,"`":223}),e}function Si(e){return Array.isArray(e)?e:[e]}const Ti=function(e,t,o){(void 0!==o&&!Re(e[t],o)||void 0===o&&!(t in e))&&Ft(e,t,o)};const Ii=function(e){return function(t,o,n){for(var i=-1,r=Object(t),s=n(t),a=s.length;a--;){var l=s[e?a:++i];if(!1===o(r[l],l,r))break}return t}}();const Pi=function(e){return Ae(e)&&mo(e)};const Fi=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]};const Ri=function(e){return zt(e,_o(e))};const Mi=function(e,t,o,n,i,r,s){var a=Fi(e,o),l=Fi(t,o),c=s.get(l);if(c)Ti(e,o,c);else{var d=r?r(a,l,o+"",e,t,s):void 0,u=void 0===d;if(u){var h=ye(l),p=!h&&Gt(l),m=!h&&!p&&ro(l);d=l,h||p||m?ye(a)?d=a:Pi(a)?d=Do(a):p?(u=!1,d=Eo(l,!0)):m?(u=!1,d=pn(l,!0)):d=[]:Pe(l)||jt(l)?(d=a,jt(a)?d=Ri(a):W(a)&&!Ge(a)||(d=bn(l))):u=!1}u&&(s.set(l,d),i(d,l,n,r,s),s.delete(l)),Ti(e,o,d)}};const zi=function e(t,o,n,i,r){t!==o&&Ii(o,(function(s,a){if(r||(r=new Tt),W(s))Mi(t,o,a,n,e,i,r);else{var l=i?i(Fi(t,a),s,a+"",t,o,r):void 0;void 0===l&&(l=s),Ti(t,a,l)}}),_o)};const Oi=function(e){return e};const Ni=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)};var Vi=Math.max;const Li=function(e,t,o){return t=Vi(void 0===t?e.length-1:t,0),function(){for(var n=arguments,i=-1,r=Vi(n.length-t,0),s=Array(r);++i0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}};const Ui=$i(ji);const Wi=function(e,t){return Ui(Li(e,t,Oi),e+"")};const Gi=function(e,t,o){if(!W(o))return!1;var n=typeof t;return!!("number"==n?mo(o)&&Zt(t,o.length):"string"==n&&t in o)&&Re(o[t],e)};const Ki=function(e){return Wi((function(t,o){var n=-1,i=o.length,r=i>1?o[i-1]:void 0,s=i>2?o[2]:void 0;for(r=e.length>3&&"function"==typeof r?(i--,r):void 0,s&&Gi(o[0],o[1],s)&&(r=i<3?void 0:r,i=1),t=Object(t);++n1===e?0:1),d=l[a];if("string"==typeof d)return d;return d[Number(c(o))]}s.window.CKEDITOR_TRANSLATIONS||(s.window.CKEDITOR_TRANSLATIONS={});const Qi=["ar","ara","dv","div","fa","per","fas","he","heb","ku","kur","ug","uig"];function Xi(e){return Qi.includes(e)?"rtl":"ltr"}class er{constructor({uiLanguage:e="en",contentLanguage:t,translations:o}={}){this.uiLanguage=e,this.contentLanguage=t||this.uiLanguage,this.uiLanguageDirection=Xi(this.uiLanguage),this.contentLanguageDirection=Xi(this.contentLanguage),this.translations=function(e){return Array.isArray(e)?e.reduce(((e,t)=>Ji(e,t))):e}(o),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=Si(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)=>othis._items.length||t<0)throw new S("collection-add-item-invalid-index",this);let o=0;for(const n of e){const e=this._getItemIdBeforeAdding(n),i=t+o;this._items.splice(i,0,n),this._itemMap.set(e,n),this.fire("add",n,i),o++}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("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 t&&this._itemMap.has(t)}}getIndex(e){let t;return t="string"==typeof e?this._itemMap.get(e):e,t?this._items.indexOf(t):-1}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)}forEach(e,t){this._items.forEach(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("collection-bind-to-rebind",this);return this._bindToCollection=e,{as:e=>{this._setUpBindToBinding((t=>new e(t)))},using:e=>{"function"==typeof e?this._setUpBindToBinding(e):this._setUpBindToBinding((t=>t[e]))}}}_setUpBindToBinding(e){const t=this._bindToCollection,o=(o,n,i)=>{const r=t._bindToCollection==this,s=t._bindToInternalToExternalMap.get(n);if(r&&s)this._bindToExternalToInternalMap.set(n,s),this._bindToInternalToExternalMap.set(s,n);else{const o=e(n);if(!o)return void this._skippedIndexesFromExternal.push(i);let r=i;for(const e of this._skippedIndexesFromExternal)i>e&&r--;for(const e of t._skippedIndexesFromExternal)r>=e&&r++;this._bindToExternalToInternalMap.set(n,o),this._bindToInternalToExternalMap.set(o,n),this.add(o,r);for(let e=0;e{const n=this._bindToExternalToInternalMap.get(t);n&&this.remove(n),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce(((e,t)=>(ot&&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("collection-add-invalid-id",this);if(this.get(o))throw new S("collection-add-item-already-exists",this)}else e[t]=o=E();return o}_remove(e){let t,o,n,i=!1;const r=this._idProperty;if("string"==typeof e?(o=e,n=this._itemMap.get(o),i=!n,n&&(t=this._items.indexOf(n))):"number"==typeof e?(t=e,n=this._items[t],i=!n,n&&(o=n[r])):(n=e,o=n[r],t=this._items.indexOf(n),i=-1==t||!this._itemMap.get(o)),i)throw new S("collection-remove-404",this);this._items.splice(t,1),this._itemMap.delete(o);const s=this._bindToInternalToExternalMap.get(n);return this._bindToInternalToExternalMap.delete(n),this._bindToExternalToInternalMap.delete(s),this.fire("remove",n,t),[n,t]}[Symbol.iterator](){return this._items[Symbol.iterator]()}}function or(e){const t=e.next();return t.done?null:t.value}class nr extends(On(X())){constructor(){super(),this._elements=new Set,this._externalViews=new Set,this._blurTimeout=null,this.set("isFocused",!1),this.set("focusedElement",null)}get elements(){return Array.from(this._elements.values())}get externalViews(){return Array.from(this._externalViews.values())}add(e){if(rr(e))this._addElement(e);else if(ir(e))this._addView(e);else{if(!e.element)throw new S("focustracker-add-view-missing-element",{focusTracker:this,view:e});this._addElement(e.element)}}remove(e){rr(e)?this._removeElement(e):ir(e)?this._removeView(e):this._removeElement(e.element)}_addElement(e){if(this._elements.has(e))throw new S("focustracker-add-element-already-exist",this);this.listenTo(e,"focus",(()=>{const t=this.externalViews.find((t=>function(e,t){if(sr(e,t))return!0;return!!t.focusTracker.externalViews.find((t=>sr(e,t)))}(e,t)));t?this._focus(t.element):this._focus(e)}),{useCapture:!0}),this.listenTo(e,"blur",(()=>{this._blur()}),{useCapture:!0}),this._elements.add(e)}_removeElement(e){this._elements.has(e)&&(this.stopListening(e),this._elements.delete(e)),e===this.focusedElement&&this._blur()}_addView(e){e.element&&this._addElement(e.element),this.listenTo(e.focusTracker,"change:focusedElement",(()=>{e.focusTracker.focusedElement?e.element&&this._focus(e.element):this._blur()})),this._externalViews.add(e)}_removeView(e){e.element&&this._removeElement(e.element),this.stopListening(e.focusTracker),this._externalViews.delete(e)}destroy(){this.stopListening(),this._elements.clear(),this._externalViews.clear(),this.isFocused=!1,this.focusedElement=null}_focus(e){this._clearBlurTimeout(),this.focusedElement=e,this.isFocused=!0}_blur(){if(this.elements.find((e=>e.contains(document.activeElement))))return;this.externalViews.find((e=>e.focusTracker.isFocused&&!e.focusTracker._blurTimeout))||(this._clearBlurTimeout(),this._blurTimeout=setTimeout((()=>{this.focusedElement=null,this.isFocused=!1}),0))}_clearBlurTimeout(){clearTimeout(this._blurTimeout),this._blurTimeout=null}}function ir(e){return"focusTracker"in e&&e.focusTracker instanceof nr}function rr(e){return Tn(e)}function sr(e,t){return!!t.element&&t.element.contains(document.activeElement)&&e.contains(t.element)}class ar{constructor(){this._listener=new(On())}listenTo(e){this._listener.listenTo(e,"keydown",((e,t)=>{this._listener.fire("_keydown:"+vi(t),t)}))}set(e,t,o={}){const n=xi(e),i=o.priority;this._listener.listenTo(this._listener,"_keydown:"+n,((e,n)=>{o.filter&&!o.filter(n)||(t(n,(()=>{n.preventDefault(),n.stopPropagation(),e.stop()})),e.return=!0)}),{priority:i})}press(e){return!!this._listener.fire("_keydown:"+vi(e),e)}stopListening(e){this._listener.stopListening(e)}destroy(){this.stopListening()}}function lr(e){return ae(e)?new Map(e):function(e){const t=new Map;for(const o in e)t.set(o,e[o]);return t}(e)}function cr(e,t,o){const n=e.length,i=t.length;for(let t=n-1;t>=o;t--)e[t+i]=e[t];for(let n=0;ne(...i)),t)}return n.cancel=()=>{clearTimeout(o)},n}function ur(e){try{if(!e.startsWith("ey"))return null;const t=atob(e.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(t)}catch(e){return null}}function hr(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 pr(e,t){return!!(o=e.charAt(t))&&1==o.length&&/[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(o);var o}const mr=fr();function gr(e,t){const o=String(e).matchAll(mr);return Array.from(o).some((e=>e.indexe.source)).join("|")+")";return new RegExp(`${e}|${t}(?:‍${t})*`,"ug")}class br extends(X()){constructor(e){super(),this._disableStack=new Set,this.editor=e,this.set("isEnabled",!0)}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",kr,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",kr),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}static get isOfficialPlugin(){return!1}static get isPremiumPlugin(){return!1}}function kr(e){e.return=!1,e.stop()}class wr extends(X()){constructor(e){super(),this.editor=e,this.set("value",void 0),this.set("isEnabled",!1),this._affectsData=!0,this._isEnabledBasedOnSelection=!0,this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",(()=>{this.refresh()})),this.listenTo(e,"change:isReadOnly",(()=>{this.refresh()})),this.on("set:isEnabled",(t=>{if(!this.affectsData)return;const o=e.model.document.selection,n=!("$graveyard"==o.getFirstPosition().root.rootName)&&e.model.canEditAt(o);(e.isReadOnly||this._isEnabledBasedOnSelection&&!n)&&(t.return=!1,t.stop())}),{priority:"highest"}),this.on("execute",(e=>{this.isEnabled||e.stop()}),{priority:"high"})}get affectsData(){return this._affectsData}set affectsData(e){this._affectsData=e}refresh(){this.isEnabled=!0}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",_r,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",_r),this.refresh())}execute(...e){}destroy(){this.stopListening()}}function _r(e){e.return=!1,e.stop()}class yr extends(V()){constructor(e,t=[],o=[]){super(),this._plugins=new Map,this._context=e,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 S("plugincollection-plugin-not-loaded",this._context,{plugin:t})}return t}has(e){return this._plugins.has(e)}init(e,t=[],o=[]){const n=this,i=this._context;!function e(t,o=new Set){t.forEach((t=>{a(t)&&(o.has(t)||(o.add(t),t.pluginName&&!n._availablePlugins.has(t.pluginName)&&n._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:n._availablePlugins.get(e))).reduce(((t,n)=>o.has(n)?t:(o.add(n),n.requires&&(u(n.requires,n),e(n.requires,o).forEach((e=>t.add(e)))),t.add(n))),new Set)}(e.filter((e=>!c(e,t))))];!function(e,t){for(const o of t){if("function"!=typeof o)throw new S("plugincollection-replace-plugin-invalid-type",null,{pluginItem:o});const t=o.pluginName;if(!t)throw new S("plugincollection-replace-plugin-missing-name",null,{pluginItem:o});if(o.requires&&o.requires.length)throw new S("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:t});const i=n._availablePlugins.get(t);if(!i)throw new S("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:t});const r=e.indexOf(i);if(-1===r){if(n._contextPlugins.has(i))return;throw new S("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:t})}if(i.requires&&i.requires.length)throw new S("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:t});e.splice(r,1,o),n._availablePlugins.set(t,o)}}(r,o);const s=function(e){return e.map((e=>{let t=n._contextPlugins.get(e);return t=t||new e(i),n._add(e,t),t}))}(r);return h(s,"init").then((()=>h(s,"afterInit"))).then((()=>s));function a(e){return"function"==typeof e}function l(e){return a(e)&&!!e.isContextPlugin}function c(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:n._availablePlugins.get(e)||e)).forEach((e=>{!function(e,t){if(a(e))return;if(t)throw new S("plugincollection-soft-required",i,{missingPlugin:e,requiredBy:d(t)});throw new S("plugincollection-plugin-not-found",i,{plugin:e})}(e,o),function(e,t){if(!l(t))return;if(l(e))return;throw new S("plugincollection-context-required",i,{plugin:d(e),requiredBy:d(t)})}(e,o),function(e,o){if(!o)return;if(!c(e,t))return;throw new S("plugincollection-required",i,{plugin:d(e),requiredBy:d(o)})}(e,o)}))}function h(e,t){return e.reduce(((e,o)=>o[t]?n._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 S("plugincollection-plugin-name-conflict",null,{pluginName:o,plugin1:this._plugins.get(o).constructor,plugin2:e});this._plugins.set(o,t)}}}class Ar{constructor(e){this._contextOwner=null;const{translations:t,...o}=e||{};this.config=new In(o,this.constructor.defaultConfig);const n=this.constructor.builtinPlugins;this.config.define("plugins",n),this.plugins=new yr(this,n);const i=this.config.get("language")||{};this.locale=new er({uiLanguage:"string"==typeof i?i:i.ui,contentLanguage:this.config.get("language.content"),translations:t}),this.t=this.locale.t,this.editors=new tr}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 S("context-initplugins-constructor-only",null,{Plugin:o});if(!0!==o.isContextPlugin)throw new S("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 S("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)))}))}}class Cr extends(X()){constructor(e){super(),this.context=e}destroy(){this.stopListening()}static get isContextPlugin(){return!0}static get isOfficialPlugin(){return!1}static get isPremiumPlugin(){return!1}}const vr=function(e){return"symbol"==typeof e||Ae(e)&&"[object Symbol]"==_e(e)};var xr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Er=/^\w*$/;const Dr=function(e,t){if(ye(e))return!1;var o=typeof e;return!("number"!=o&&"symbol"!=o&&"boolean"!=o&&null!=e&&!vr(e))||(Er.test(e)||!xr.test(e)||null!=t&&e in Object(t))};function Br(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var o=function(){var n=arguments,i=t?t.apply(this,n):n[0],r=o.cache;if(r.has(i))return r.get(i);var s=e.apply(this,n);return o.cache=r.set(i,s)||r,s};return o.cache=new(Br.Cache||Dt),o}Br.Cache=Dt;const Sr=Br;const Tr=function(e){var t=Sr(e,(function(e){return 500===o.size&&o.clear(),e})),o=t.cache;return t};var Ir=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Pr=/\\(\\)?/g,Fr=Tr((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(Ir,(function(e,o,n,i){t.push(n?i.replace(Pr,"$1"):o||e)})),t}));const Rr=Fr;const Mr=function(e,t){for(var o=-1,n=null==e?0:e.length,i=Array(n);++ods([[t,s]],e)))}is.has(r)||(is.set(r,new Map),r.registerPostFixer((e=>ds(is.get(r),e))),r.on("change:isComposing",(()=>{e.change((e=>ds(is.get(r),e)))}),{priority:"high"})),t.is("editableElement")&&t.on("change:placeholder",((e,t,o)=>s(o))),t.placeholder?s(t.placeholder):o&&s(o),o&&function(){rs||T("enableplaceholder-deprecated-text-option");rs=!0}()}function as(e,t){return!t.hasClass("ck-placeholder")&&(e.addClass("ck-placeholder",t),!0)}function ls(e,t){return!!t.hasClass("ck-placeholder")&&(e.removeClass("ck-placeholder",t),!0)}function cs(e,t){if(!e.isAttached())return!1;if(function(e){for(const t of e.getChildren())if(!t.is("uiElement"))return!0;return!1}(e))return!1;const o=e.document,n=o.selection.anchor;return(!o.isComposing||!n||n.parent!==e)&&(!!t||(!o.isFocused||!!n&&n.parent!==e))}function ds(e,t){const o=[];let n=!1;for(const[i,r]of e)r.isDirectHost&&(o.push(i),us(t,i,r)&&(n=!0));for(const[i,r]of e){if(r.isDirectHost)continue;const e=hs(i);e&&(o.includes(e)||(r.hostElement=e,us(t,i,r)&&(n=!0)))}return n}function us(e,t,o){const{text:n,isDirectHost:i,hostElement:r}=o;let s=!1;r.getAttribute("data-placeholder")!==n&&(e.setAttribute("data-placeholder",n,r),s=!0);return(i||1==t.childCount)&&cs(r,o.keepOnFocus)?as(e,r)&&(s=!0):ls(e,r)&&(s=!0),s}function hs(e){if(e.childCount){const t=e.getChild(0);if(t.is("element")&&!t.is("uiElement")&&!t.is("attributeElement"))return t}return null}class ps{is(){throw new Error("is() method is abstract")}}const ms=function(e){return Bn(e,4)};class gs extends(V(ps)){constructor(e){super(),this.document=e,this.parent=null}get index(){let e;if(!this.parent)return null;if(-1==(e=this.parent.getChildIndex(this)))throw new S("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={}){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),n=e.getAncestors(t);let i=0;for(;o[i]==n[i]&&o[i];)i++;return 0===i?null:o[i-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),o=e.getPath(),n=se(t,o);switch(n){case"prefix":return!0;case"extension":return!1;default:return t[n]e.data.length)throw new S("view-textproxy-wrong-offsetintext",this);if(o<0||t+o>e.data.length)throw new S("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}getAncestors(e={}){const t=[];let o=e.includeSelf?this.textNode:this.parent;for(;null!==o;)t[e.parentFirst?"push":"unshift"](o),o=o.parent;return t}}bs.prototype.is=function(e){return"$textProxy"===e||"view:$textProxy"===e||"textProxy"===e||"view:textProxy"===e};class ks{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 ws(e),this._consumables.set(e,o)),o.add(t?_s(t):e._getConsumables()))}test(e,t){const o=this._consumables.get(e);return void 0===o?null:e.is("$text")||e.is("documentFragment")?o:o.test(_s(t))}consume(e,t){if(e.is("$text")||e.is("documentFragment"))return!!this.test(e,t)&&(this._consumables.set(e,!1),!0);const o=this._consumables.get(e);return void 0!==o&&o.consume(_s(t))}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(_s(t)))}static createFrom(e,t){if(t||(t=new ks),e.is("$text"))t.add(e);else if(e.is("element")||e.is("documentFragment")){t.add(e);for(const o of e.getChildren())ks.createFrom(o,t)}return t}}class ws{constructor(e){this._canConsumeName=null,this._attributes=new Map,this.element=e}add(e){e.name&&(this._canConsumeName=!0);for(const[t,o]of e.attributes)if(o){let e=this._attributes.get(t);e&&"boolean"!=typeof e||(e=new Map,this._attributes.set(t,e)),e.set(o,!0)}else{if("style"==t||"class"==t)throw new S("viewconsumable-invalid-attribute",this);this._attributes.set(t,!0)}}test(e){if(e.name&&!this._canConsumeName)return this._canConsumeName;for(const[t,o]of e.attributes){const e=this._attributes.get(t);if(void 0===e)return null;if(!1===e)return!1;if(!0!==e)if(o){const t=e.get(o);if(void 0===t)return null;if(!t)return!1}else for(const t of e.values())if(!t)return!1}return!0}consume(e){if(!this.test(e))return!1;e.name&&(this._canConsumeName=!1);for(const[t,o]of e.attributes){const e=this._attributes.get(t);if("boolean"==typeof e)for(const[e]of this.element._getConsumables(t,o).attributes)this._attributes.set(e,!1);else if(o)for(const[,n]of this.element._getConsumables(t,o).attributes)e.set(n,!1);else for(const t of e.keys())e.set(t,!1)}return!0}revert(e){e.name&&(this._canConsumeName=!0);for(const[t,o]of e.attributes){const e=this._attributes.get(t);if(!1!==e){if(void 0!==e&&!0!==e)if(o){!1===e.get(o)&&e.set(o,!0)}else for(const t of e.keys())e.set(t,!0)}else this._attributes.set(t,!0)}}}function _s(e){const t=[];return"attributes"in e&&e.attributes&&ys(t,e.attributes),"classes"in e&&e.classes&&ys(t,e.classes,"class"),"styles"in e&&e.styles&&ys(t,e.styles,"style"),{name:e.name||!1,attributes:t}}function ys(e,t,o){if("string"!=typeof t)for(const n of t)Array.isArray(n)?e.push(n):e.push(o?[o,n]:[n]);else e.push(o?[o,t]:[t])}class As{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=this._isElementMatching(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 n=this._isElementMatching(o,e);n&&t.push({element:o,pattern:e,match:n})}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}_isElementMatching(e,t){if("function"==typeof t){const o=t(e);return o&&"object"==typeof o?_s(o):o}const o={};if(t.name&&(o.name=function(e,t){if(e instanceof RegExp)return!!t.match(e);return e===t}(t.name,e.name),!o.name))return null;const n=[];return t.attributes&&!function(e,t,o){let n;"object"!=typeof e||e instanceof RegExp||Array.isArray(e)?n=["class","style"]:(void 0!==e.style&&T("matcher-pattern-deprecated-attributes-style-key",e),void 0!==e.class&&T("matcher-pattern-deprecated-attributes-class-key",e));return t._collectAttributesMatch(vs(e),o,n)}(t.attributes,e,n)||t.classes&&!function(e,t,o){return t._collectAttributesMatch(vs(e,"class"),o)}(t.classes,e,n)||t.styles&&!function(e,t,o){return t._collectAttributesMatch(vs(e,"style"),o)}(t.styles,e,n)?null:(n.length&&(o.attributes=n),o)}}function Cs(e,t){return!0===e||e===t||e instanceof RegExp&&!!String(t).match(e)}function vs(e,t){if(Array.isArray(e))return e.map((e=>"object"!=typeof e||e instanceof RegExp?t?[t,e,!0]:[e,!0]:(void 0!==e.key&&void 0!==e.value||T("matcher-pattern-missing-key-or-value",e),t?[t,e.key,e.value]:[e.key,e.value])));if("object"!=typeof e||e instanceof RegExp)return[t?[t,e,!0]:[e,!0]];const o=[];for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&o.push(t?[t,n,e[n]]:[n,e[n]]);return o}const xs=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};const Es=function(e,t,o){var n=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(o=o>i?i:o)<0&&(o+=i),i=t>o?0:o-t>>>0,t>>>=0;for(var r=Array(i);++nt===e));return Array.isArray(t)}set(e,t){if(this._cachedStyleNames=null,this._cachedExpandedStyleNames=null,W(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){for(const t of Si(e)){this._cachedStyleNames=null,this._cachedExpandedStyleNames=null;const e=Ps(t);Ss(this._styles,e),delete this._styles[t],this._cleanEmptyObjectsOnPath(e)}}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]&&!W(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){return this.isEmpty?[]:e?(this._cachedExpandedStyleNames=this._cachedExpandedStyleNames||this._styleProcessor.getStyleNames(this._styles),this._cachedExpandedStyleNames):(this._cachedStyleNames=this._cachedStyleNames||this.getStylesEntries().map((([e])=>e)),this._cachedStyleNames)}keys(){return this.getStyleNames()}clear(){this._styles={},this._cachedStyleNames=null,this._cachedExpandedStyleNames=null}isSimilar(e){if(this.size!==e.size)return!1;for(const t of this.getStyleNames())if(!e.has(t)||e.getAsString(t)!==this.getAsString(t))return!1;return!0}getStylesEntries(){const e=[],t=Object.keys(this._styles);for(const o of t)e.push(...this._styleProcessor.getReducedForm(o,this._styles));return e}_clone(){const e=new this.constructor(this._styleProcessor);return e.set(this.getNormalized()),e}_getTokensMatch(e,t){const o=[];for(const n of this.getStyleNames(!0))if(Cs(e,n)){if(!0===t){o.push(n);continue}Cs(t,this.getAsString(n))&&o.push(n)}return o.length?o:void 0}_getConsumables(e){const t=[];if(e){t.push(e);for(const o of this._styleProcessor.getRelatedStyles(e))t.push(o)}else for(const e of this.getStyleNames()){for(const o of this._styleProcessor.getRelatedStyles(e))t.push(o);t.push(e)}return t}_canMergeFrom(e){for(const t of e.getStyleNames())if(this.has(t)&&this.getAsString(t)!==e.getAsString(t))return!1;return!0}_mergeFrom(e){for(const t of e.getStyleNames())this.has(t)||this.set(t,e.getAsString(t))}_isMatching(e){for(const t of e.getStyleNames())if(!this.has(t)||this.getAsString(t)!==e.getAsString(t))return!1;return!0}_cleanEmptyObjectsOnPath(e){const t=e.split(".");if(!(t.length>1))return;const o=t.splice(0,t.length-1).join("."),n=qr(this._styles,o);if(!n)return;!Object.keys(n).length&&this.remove(o)}}class Is{constructor(){this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(e,t,o){if(W(t))Fs(o,Ps(e),t);else if(this._normalizers.has(e)){const n=this._normalizers.get(e),{path:i,value:r}=n(t);Fs(o,i,r)}else Fs(o,e,t)}getNormalized(e,t){if(!e)return Ji({},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 qr(t,o);const n=o(e,t);if(n)return n}return qr(t,Ps(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=new Set;for(const o of this._consumables.keys()){const n=this.getNormalized(o,e);n&&("object"!=typeof n||Object.keys(n).length)&&t.add(o)}for(const o of Object.keys(e))t.add(o);return Array.from(t)}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 Ps(e){return e.replace("-",".")}function Fs(e,t,o){let n=o;W(o)&&(n=Ji({},qr(e,t),o)),Ur(e,t,n)}class Rs{constructor(){this._set=new Set}get isEmpty(){return 0==this._set.size}get size(){return this._set.size}has(e){return this._set.has(e)}keys(){return Array.from(this._set.keys())}setTo(e){this.clear();for(const t of e.split(/\s+/))t&&this._set.add(t);return this}set(e){for(const t of Si(e))t&&this._set.add(t)}remove(e){for(const t of Si(e))this._set.delete(t)}clear(){this._set.clear()}toString(){return Array.from(this._set).join(" ")}isSimilar(e){if(this.size!==e.size)return!1;for(const t of this.keys())if(!e.has(t))return!1;return!0}_clone(){const e=new this.constructor;return e._set=new Set(this._set),e}_getTokensMatch(e){const t=[];if(!0===e){for(const e of this._set.keys())t.push(e);return t}if("string"==typeof e){for(const o of e.split(/\s+/)){if(!this._set.has(o))return;t.push(o)}return t}for(const o of this._set.keys())o.match(e)&&t.push(o);return t.length?t:void 0}_getConsumables(e){return e?[e]:this.keys()}_canMergeFrom(){return!0}_mergeFrom(e){for(const t of e._set.keys())this._set.has(t)||this._set.add(t)}_isMatching(e){for(const t of e._set.keys())if(!this._set.has(t))return!1;return!0}}class Ms extends gs{get _classes(){return this._attrs.get("class")}get _styles(){return this._attrs.get("style")}constructor(e,t,o,n){super(e),this._unsafeAttributesToRender=[],this._customProperties=new Map,this.name=t,this._attrs=this._parseAttributes(o),this._children=[],n&&this._insertChild(0,n)}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes&&(yield"class"),this._styles&&(yield"style");for(const e of this._attrs.keys())"class"!=e&&"style"!=e&&(yield e)}*getAttributes(){for(const[e,t]of this._attrs.entries())yield[e,String(t)]}getAttribute(e){return this._attrs.has(e)?String(this._attrs.get(e)):void 0}hasAttribute(e,t){return!!this._attrs.has(e)&&(void 0===t||(Os(this.name,e)||zs(this.name,e)?this._attrs.get(e).has(t):this._attrs.get(e)===t))}isSimilar(e){if(!(e instanceof Ms))return!1;if(this===e)return!0;if(this.name!=e.name)return!1;if(this._attrs.size!==e._attrs.size)return!1;for(const[t,o]of this._attrs){const n=e._attrs.get(t);if(void 0===n)return!1;if("string"==typeof o||"string"==typeof n){if(n!==o)return!1}else if(!o.isSimilar(n))return!1}return!0}hasClass(...e){for(const t of e)if(!this._classes||!this._classes.has(t))return!1;return!0}getClassNames(){const e=this._classes?this._classes.keys():[],t=e[Symbol.iterator]();return Object.assign(e,{next:t.next.bind(t)})}getStyle(e){return this._styles&&this._styles.getAsString(e)}getNormalizedStyle(e){return this._styles&&this._styles.getNormalized(e)}getStyleNames(e){return this._styles?this._styles.getStyleNames(e):[]}hasStyle(...e){for(const t of e)if(!this._styles||!this._styles.has(t))return!1;return!0}findAncestor(...e){const t=new As(...e);let o=this.parent;for(;o&&!o.is("documentFragment");){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=this._classes?this._classes.keys().sort().join(","):"",t=this._styles&&String(this._styles),o=Array.from(this._attrs).filter((([e])=>"style"!=e&&"class"!=e)).map((e=>`${e[0]}="${e[1]}"`)).sort().join(" ");return this.name+(""==e?"":` class="${e}"`)+(t?` style="${t}"`:"")+(""==o?"":` ${o}`)}shouldRenderUnsafeAttribute(e){return this._unsafeAttributesToRender.includes(e)}_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._customProperties=new Map(this._customProperties),o.getFillerOffset=this.getFillerOffset,o._unsafeAttributesToRender=this._unsafeAttributesToRender,o}_appendChild(e){return this._insertChild(this.childCount,e)}_insertChild(e,t){this._fireChange("children",this,{index:e});let o=0;const n=function(e,t){if("string"==typeof t)return[new fs(e,t)];ae(t)||(t=[t]);const o=[];for(const n of t)"string"==typeof n?o.push(new fs(e,n)):n instanceof bs?o.push(new fs(e,n.data)):o.push(n);return o}(this.document,t);for(const t of n)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,{index:e});for(let o=e;ot&&e.selection.editableElement==this)),this.listenTo(e.selection,"change",(()=>{this.isFocused=e.isFocused&&e.selection.editableElement==this}))}destroy(){this.stopListening()}}Ls.prototype.is=function(e,t){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};const Hs=Symbol("rootName");class js extends Ls{constructor(e,t){super(e,t),this.rootName="main"}get rootName(){return this.getCustomProperty(Hs)}set rootName(e){this._setCustomProperty(Hs,e)}set _name(e){this.name=e}}js.prototype.is=function(e,t){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};class qs{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new S("view-tree-walker-no-start-position",null);if(e.direction&&"forward"!=e.direction&&"backward"!=e.direction)throw new S("view-tree-walker-unknown-direction",e.startPosition,{direction:e.direction});this.boundaries=e.boundaries||null,e.startPosition?this._position=$s._createAt(e.startPosition):this._position=$s._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}get position(){return this._position}skip(e){let t,o;do{o=this.position,t=this.next()}while(!t.done&&e(t.value));t.done||(this._position=o)}jumpTo(e){this._boundaryStartParent&&e.isBefore(this.boundaries.start)?e=this.boundaries.start:this._boundaryEndParent&&e.isAfter(this.boundaries.end)&&(e=this.boundaries.end),this._position=e.clone()}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,value:void 0};if(o===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0,value:void 0};let n;if(o&&o.is("view:$text")){if(e.isAtEnd)return this._position=$s._createAfter(o),this._next();n=o.data[e.offset]}else n=o.getChild(e.offset);if("string"==typeof n){let n;if(this.singleCharacters)n=1;else{n=(o===this._boundaryEndParent?this.boundaries.end.offset:o.data.length)-e.offset}const i=new bs(o,e.offset,n);return e.offset+=n,this._position=e,this._formatReturnValue("text",i,t,e,n)}if(n&&n.is("view:element")){if(this.shallow){if(this.boundaries&&this.boundaries.end.isBefore(e))return{done:!0,value:void 0};e.offset++}else e=new $s(n,0);return this._position=e,this._formatReturnValue("elementStart",n,t,e,1)}if(n&&n.is("view:$text")){if(this.singleCharacters)return e=new $s(n,0),this._position=e,this._next();let o,i=n.data.length;return n==this._boundaryEndParent?(i=this.boundaries.end.offset,o=new bs(n,0,i),e=$s._createAfter(o)):(o=new bs(n,0,n.data.length),e.offset++),this._position=e,this._formatReturnValue("text",o,t,e,i)}return e=$s._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,value:void 0};if(o==this._boundaryStartParent&&e.offset==this.boundaries.start.offset)return{done:!0,value:void 0};let n;if(o.is("view:$text")){if(e.isAtStart)return this._position=$s._createBefore(o),this._previous();n=o.data[e.offset-1]}else n=o.getChild(e.offset-1);if("string"==typeof n){let n;if(this.singleCharacters)n=1;else{const t=o===this._boundaryStartParent?this.boundaries.start.offset:0;n=e.offset-t}e.offset-=n;const i=new bs(o,e.offset,n);return this._position=e,this._formatReturnValue("text",i,t,e,n)}if(n&&n.is("view:element"))return this.shallow?(e.offset--,this._position=e,this._formatReturnValue("elementStart",n,t,e,1)):(e=new $s(n,n.childCount),this._position=e,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",n,t,e));if(n&&n.is("view:$text")){if(this.singleCharacters)return e=new $s(n,n.data.length),this._position=e,this._previous();let o,i=n.data.length;if(n==this._boundaryStartParent){const t=this.boundaries.start.offset;o=new bs(n,t,n.data.length-t),i=o.data.length,e=$s._createBefore(o)}else o=new bs(n,0,n.data.length),e.offset--;return this._position=e,this._formatReturnValue("text",o,t,e,i)}return e=$s._createBefore(o),this._position=e,this._formatReturnValue("elementStart",o,t,e,1)}_formatReturnValue(e,t,o,n,i){return t.is("view:$textProxy")&&(t.offsetInText+t.data.length==t.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?o=$s._createAfter(t.textNode):(n=$s._createAfter(t.textNode),this._position=n)),0===t.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?o=$s._createBefore(t.textNode):(n=$s._createBefore(t.textNode),this._position=n))),{done:!1,value:{type:e,item:t,previousPosition:o,nextPosition:n,length:i}}}}class $s extends ps{constructor(e,t){super(),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 Ls);){if(!e.parent)return null;e=e.parent}return e}getShiftedBy(e){const t=$s._createAt(this),o=t.offset+e;return t.offset=o<0?0:o,t}getLastMatchingPosition(e,t={}){t.startPosition=this;const o=new qs(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 n=0;for(;t[n]==o[n]&&t[n];)n++;return 0===n?null:t[n-1]}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 n=se(t,o);switch(n){case"prefix":return"before";case"extension":return"after";default:return t[n]0?new this(o,n):new this(n,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($s._createBefore(e),t)}}function Ws(e){return!(!e.item.is("attributeElement")&&!e.item.is("uiElement"))}Us.prototype.is=function(e){return"range"===e||"view:range"===e};class Gs extends(V(ps)){constructor(...e){super(),this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",e.length&&this.setTo(...e)}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 n of e._ranges)if(t.isEqual(n)){o=!0;break}if(!o)return!1}return!0}isSimilar(e){if(this.isBackward!=e.isBackward)return!1;const t=re(this.getRanges());if(t!=re(e.getRanges()))return!1;if(0==t)return!0;for(let t of this.getRanges()){t=t.getTrimmed();let o=!1;for(let n of e.getRanges())if(n=n.getTrimmed(),t.start.isEqual(n.start)&&t.end.isEqual(n.end)){o=!0;break}if(!o)return!1}return!0}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}setTo(...e){let[t,o,n]=e;if("object"==typeof o&&(n=o,o=void 0),null===t)this._setRanges([]),this._setFakeOptions(n);else if(t instanceof Gs||t instanceof Ks)this._setRanges(t.getRanges(),t.isBackward),this._setFakeOptions({fake:t.isFake,label:t.fakeSelectionLabel});else if(t instanceof Us)this._setRanges([t],n&&n.backward),this._setFakeOptions(n);else if(t instanceof $s)this._setRanges([new Us(t)]),this._setFakeOptions(n);else if(t instanceof gs){const e=!!n&&!!n.backward;let i;if(void 0===o)throw new S("view-selection-setto-required-second-parameter",this);i="in"==o?Us._createIn(t):"on"==o?Us._createOn(t):new Us($s._createAt(t,o)),this._setRanges([i],e),this._setFakeOptions(n)}else{if(!ae(t))throw new S("view-selection-setto-not-selectable",this);this._setRanges(t,n&&n.backward),this._setFakeOptions(n)}this.fire("change")}setFocus(e,t){if(null===this.anchor)throw new S("view-selection-setfocus-no-ranges",this);const o=$s._createAt(e,t);if("same"==o.compareWith(this.focus))return;const n=this.anchor;this._ranges.pop(),"before"==o.compareWith(n)?this._addRange(new Us(o,n),!0):this._addRange(new Us(n,o)),this.fire("change")}_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 Us))throw new S("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 S("view-selection-range-intersects",this,{addedRange:e,intersectingRange:t});this._ranges.push(new Us(e.start,e.end))}}Gs.prototype.is=function(e){return"selection"===e||"view:selection"===e};class Ks extends(V(ps)){constructor(...e){super(),this._selection=new Gs,this._selection.delegate("change").to(this),e.length&&this._selection.setTo(...e)}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)}_setTo(...e){this._selection.setTo(...e)}_setFocus(e,t){this._selection.setFocus(e,t)}}Ks.prototype.is=function(e){return"selection"===e||"documentSelection"==e||"view:selection"==e||"view:documentSelection"==e};class Zs extends v{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}}const Js=Symbol("bubbling contexts");function Ys(e){return class extends e{fire(e,...t){try{const o=e instanceof v?e:new v(this,e),n=ta(this);if(!n.size)return;if(Qs(o,"capturing",this),Xs(n,"$capture",o,...t))return o.return;const i=o.startRange||this.selection.getFirstRange(),r=i?i.getContainedElement():null,s=!!r&&Boolean(ea(n,r));let a=r||function(e){if(!e)return null;const t=e.start.parent,o=e.end.parent,n=t.getPath(),i=o.getPath();return n.length>i.length?t:o}(i);if(Qs(o,"atTarget",a),!s){if(Xs(n,"$text",o,...t))return o.return;Qs(o,"bubbling",a)}for(;a;){if(a.is("rootElement")){if(Xs(n,"$root",o,...t))return o.return}else if(a.is("element")&&Xs(n,a.name,o,...t))return o.return;if(Xs(n,a,o,...t))return o.return;a=a.parent,Qs(o,"bubbling",a)}return Qs(o,"bubbling",this),Xs(n,"$document",o,...t),o.return}catch(e){S.rethrowUnexpectedError(e,this)}}_addEventListener(e,t,o){const n=Si(o.context||"$document"),i=ta(this);for(const r of n){let n=i.get(r);n||(n=new(V()),i.set(r,n)),this.listenTo(n,e,t,o)}}_removeEventListener(e,t){const o=ta(this);for(const n of o.values())this.stopListening(n,e,t)}}}{const e=Ys(Object);["fire","_addEventListener","_removeEventListener"].forEach((t=>{Ys[t]=e.prototype[t]}))}function Qs(e,t,o){e instanceof Zs&&(e._eventPhase=t,e._currentTarget=o)}function Xs(e,t,o,...n){const i="string"==typeof t?e.get(t):ea(e,t);return!!i&&(i.fire(o,...n),o.stop.called)}function ea(e,t){for(const[o,n]of e)if("function"==typeof o&&o(t))return n;return null}function ta(e){return e[Js]||(e[Js]=new Map),e[Js]}class oa extends(Ys(X())){constructor(e){super(),this._postFixers=new Set,this.selection=new Ks,this.roots=new tr({idProperty:"rootName"}),this.stylesProcessor=e,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1)}getRoot(e="main"){return this.roots.get(e)}registerPostFixer(e){this._postFixers.add(e)}destroy(){this.roots.forEach((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)}}class na extends Ms{constructor(e,t,o,n){super(e,t,o,n),this._priority=10,this._id=null,this._clonesGroup=null,this.getFillerOffset=ra}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new S("attribute-element-get-elements-with-same-id-no-id",this);return new Set(this._clonesGroup)}isSimilar(e){return null!==this.id||null!==e.id?this.id===e.id:super.isSimilar(e)&&this.priority==e.priority}_clone(e=!1){const t=super._clone(e);return t._priority=this._priority,t._id=this._id,t}_canMergeAttributesFrom(e){return null===this.id&&null===e.id&&this.priority===e.priority&&super._canMergeAttributesFrom(e)}_canSubtractAttributesOf(e){return null===this.id&&null===e.id&&this.priority===e.priority&&super._canSubtractAttributesOf(e)}}na.DEFAULT_PRIORITY=10;const ia=na;function ra(){if(sa(this))return null;let e=this.parent;for(;e&&e.is("attributeElement");){if(sa(e)>1)return null;e=e.parent}return!e||sa(e)>1?null:this.childCount}function sa(e){return Array.from(e.getChildren()).filter((e=>!e.is("uiElement"))).length}na.prototype.is=function(e,t){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};class aa extends Ms{constructor(e,t,o,n){super(e,t,o,n),this.getFillerOffset=la}_insertChild(e,t){if(t&&(t instanceof gs||Array.from(t).length>0))throw new S("view-emptyelement-cannot-add",[this,t]);return 0}}function la(){return null}aa.prototype.is=function(e,t){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};class ca extends Ms{constructor(e,t,o,n){super(e,t,o,n),this.getFillerOffset=ua}_insertChild(e,t){if(t&&(t instanceof gs||Array.from(t).length>0))throw new S("view-uielement-cannot-add",[this,t]);return 0}render(e,t){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 da(e){e.document.on("arrowKey",((t,o)=>function(e,t,o){if(t.keyCode==Ai.arrowright){const e=t.domTarget.ownerDocument.defaultView.getSelection(),n=1==e.rangeCount&&e.getRangeAt(0).collapsed;if(n||t.shiftKey){const t=e.focusNode,i=e.focusOffset,r=o.domPositionToView(t,i);if(null===r)return;let s=!1;const a=r.getLastMatchingPosition((e=>(e.item.is("uiElement")&&(s=!0),!(!e.item.is("uiElement")&&!e.item.is("attributeElement")))));if(s){const t=o.viewPositionToDom(a);n?e.collapse(t.parent,t.offset):e.extend(t.parent,t.offset)}}}}(0,o,e.domConverter)),{priority:"low"})}function ua(){return null}ca.prototype.is=function(e,t){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};class ha extends Ms{constructor(e,t,o,n){super(e,t,o,n),this.getFillerOffset=pa}_insertChild(e,t){if(t&&(t instanceof gs||Array.from(t).length>0))throw new S("view-rawelement-cannot-add",[this,t]);return 0}render(e,t){}}function pa(){return null}ha.prototype.is=function(e,t){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};class ma extends(V(ps)){constructor(e,t){super(),this._children=[],this._customProperties=new Map,this.document=e,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}get name(){}get getFillerOffset(){}getCustomProperty(e){return this._customProperties.get(e)}*getCustomProperties(){yield*this._customProperties.entries()}_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,{index:e});let o=0;const n=function(e,t){if("string"==typeof t)return[new fs(e,t)];ae(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new fs(e,t):t instanceof bs?new fs(e,t.data):t))}(this.document,t);for(const t of n)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,{index:e});for(let o=e;o{const o=e[e.length-1],n=!t.is("uiElement");return o&&o.breakAttributes==n?o.nodes.push(t):e.push({breakAttributes:n,nodes:[t]}),e}),[]);let n=null,i=e;for(const{nodes:e,breakAttributes:t}of o){const o=this._insertNodes(i,e,t);n||(n=o.start),i=o.end}return n?new Us(n,i):new Us(e)}remove(e){const t=e instanceof Us?e:Us._createOn(e);if(va(t,this.document),t.isCollapsed)return new ma(this.document);const{start:o,end:n}=this._breakAttributesRange(t,!0),i=o.parent,r=n.offset-o.offset,s=i._removeChildren(o.offset,r);for(const e of s)this._removeFromClonedElementsGroup(e);const a=this.mergeAttributes(o);return t.start=a,t.end=a.clone(),new ma(this.document,s)}clear(e,t){va(e,this.document);const o=e.getWalker({direction:"backward",ignoreElementEnd:!0});for(const n of o){const o=n.item;let i;if(o.is("element")&&t.isSimilar(o))i=Us._createOn(o);else if(!n.nextPosition.isAfter(e.start)&&o.is("$textProxy")){const e=o.getAncestors().find((e=>e.is("element")&&t.isSimilar(e)));e&&(i=Us._createIn(e))}i&&(i.end.isAfter(e.end)&&(i.end=e.end),i.start.isBefore(e.start)&&(i.start=e.start),this.remove(i))}}move(e,t){let o;if(t.isAfter(e.end)){const n=(t=this._breakAttributes(t,!0)).parent,i=n.childCount;e=this._breakAttributesRange(e,!0),o=this.remove(e),t.offset+=n.childCount-i}else o=this.remove(e);return this.insert(t,o)}wrap(e,t){if(!(t instanceof ia))throw new S("view-writer-wrap-invalid-attribute",this.document);if(va(e,this.document),e.isCollapsed){let n=e.start;n.parent.is("element")&&(o=n.parent,!Array.from(o.getChildren()).some((e=>!e.is("uiElement"))))&&(n=n.getLastMatchingPosition((e=>e.item.is("uiElement")))),n=this._wrapPosition(n,t);const i=this.document.selection;return i.isCollapsed&&i.getFirstPosition().isEqual(e.start)&&this.setSelection(n),new Us(n)}return this._wrapRange(e,t);var o}unwrap(e,t){if(!(t instanceof ia))throw new S("view-writer-unwrap-invalid-attribute",this.document);if(va(e,this.document),e.isCollapsed)return e;const{start:o,end:n}=this._breakAttributesRange(e,!0),i=o.parent,r=this._unwrapChildren(i,o.offset,n.offset,t),s=this.mergeAttributes(r.start);s.isEqual(r.start)||r.end.offset--;const a=this.mergeAttributes(r.end);return new Us(s,a)}rename(e,t){const o=new Ns(this.document,e,t.getAttributes());return this.insert($s._createAfter(t),o),this.move(Us._createIn(t),$s._createAt(o,0)),this.remove(Us._createOn(t)),o}clearClonedElementsGroup(e){this._cloneGroups.delete(e)}createPositionAt(e,t){return $s._createAt(e,t)}createPositionAfter(e){return $s._createAfter(e)}createPositionBefore(e){return $s._createBefore(e)}createRange(e,t){return new Us(e,t)}createRangeOn(e){return Us._createOn(e)}createRangeIn(e){return Us._createIn(e)}createSelection(...e){return new Gs(...e)}createSlot(e="children"){if(!this._slotFactory)throw new S("view-writer-invalid-create-slot-context",this.document);return this._slotFactory(this,e)}_registerSlotFactory(e){this._slotFactory=e}_clearSlotFactory(){this._slotFactory=null}_insertNodes(e,t,o){let n,i;if(n=o?fa(e):e.parent.is("$text")?e.parent.parent:e.parent,!n)throw new S("view-writer-invalid-position-container",this.document);i=o?this._breakAttributes(e,!0):e.parent.is("$text")?wa(e):e;const r=n._insertChild(i.offset,t);for(const e of t)this._addToClonedElementsGroup(e);const s=i.getShiftedBy(r),a=this.mergeAttributes(i);a.isEqual(i)||s.offset--;const l=this.mergeAttributes(s);return new Us(a,l)}_wrapChildren(e,t,o,n){let i=t;const r=[];for(;i!1,e.parent._insertChild(e.offset,o);const n=new Us(e,e.getShiftedBy(1));this.wrap(n,t);const i=new $s(o.parent,o.index);o._remove();const r=i.nodeBefore,s=i.nodeAfter;return r&&r.is("view:$text")&&s&&s.is("view:$text")?_a(r,s):ka(i)}_breakAttributesRange(e,t=!1){const o=e.start,n=e.end;if(va(e,this.document),e.isCollapsed){const o=this._breakAttributes(e.start,t);return new Us(o,o)}const i=this._breakAttributes(n,t),r=i.parent.childCount,s=this._breakAttributes(o,t);return i.offset+=i.parent.childCount-r,new Us(s,i)}_breakAttributes(e,t=!1){const o=e.offset,n=e.parent;if(e.parent.is("emptyElement"))throw new S("view-writer-cannot-break-empty-element",this.document);if(e.parent.is("uiElement"))throw new S("view-writer-cannot-break-ui-element",this.document);if(e.parent.is("rawElement"))throw new S("view-writer-cannot-break-raw-element",this.document);if(!t&&n.is("$text")&&Ca(n.parent))return e.clone();if(Ca(n))return e.clone();if(n.is("$text"))return this._breakAttributes(wa(e),t);if(o==n.childCount){const e=new $s(n.parent,n.index+1);return this._breakAttributes(e,t)}if(0===o){const e=new $s(n.parent,n.index);return this._breakAttributes(e,t)}{const e=n.index+1,i=n._clone();n.parent._insertChild(e,i),this._addToClonedElementsGroup(i);const r=n.childCount-o,s=n._removeChildren(o,r);i._appendChild(s);const a=new $s(n.parent,e);return this._breakAttributes(a,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 fa(e){let t=e.parent;for(;!Ca(t);){if(!t)return;t=t.parent}return t}function ba(e,t){return e.priorityt.priority)&&e.getIdentity()o instanceof e)))throw new S("view-writer-insert-invalid-node-type",t);o.is("$text")||Aa(o.getChildren(),t)}}function Ca(e){return e&&(e.is("containerElement")||e.is("documentFragment"))}function va(e,t){const o=fa(e.start),n=fa(e.end);if(!o||!n||o!==n)throw new S("view-writer-invalid-range-container",t)}const xa=e=>e.createTextNode(" "),Ea=e=>{const t=e.createElement("span");return t.dataset.ckeFiller="true",t.innerText=" ",t},Da=e=>{const t=e.createElement("br");return t.dataset.ckeFiller="true",t},Ba="⁠".repeat(7);function Sa(e){return"string"==typeof e?e.substr(0,7)===Ba:qn(e)&&e.data.substr(0,7)===Ba}function Ta(e){return 7==e.data.length&&Sa(e)}function Ia(e){const t="string"==typeof e?e:e.data;return Sa(e)?t.slice(7):t}function Pa(e,t){if(t.keyCode==Ai.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;Sa(t)&&o<=7&&e.collapse(t,0)}}}var Fa=i(6531),Ra={attributes:{"data-cke":!0}};Ra.setAttributes=Xr(),Ra.insert=Yr().bind(null,"head"),Ra.domAPI=Zr(),Ra.insertStyleElement=ts();Gr()(Fa.A,Ra);Fa.A&&Fa.A.locals&&Fa.A.locals;class Ma extends(X()){constructor(e,t){super(),this.domDocuments=new Set,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this._inlineFiller=null,this._fakeSelectionContainer=null,this.domConverter=e,this.selection=t,this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1),c.isBlink&&!c.isAndroid&&this.on("change:isSelecting",(()=>{this.isSelecting||this.render()}))}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 S("view-renderer-unknown-type",this)}this.markedChildren.add(t)}}}render(){if(this.isComposing&&!c.isAndroid)return;let e=null;const t=!(c.isBlink&&!c.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),e&&e.parent.is("$text")&&(e=$s._createBefore(e.parent)));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;Sa(t.parent)?this._inlineFiller=t.parent:this._inlineFiller=za(o,t.parent,t.offset)}else this._inlineFiller=null;this._updateFocus(),this._updateSelection(),this.domConverter._clearTemporaryCustomProperties(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(e){const t=this.domConverter.mapViewToDom(e);if(!t)return;const o=Array.from(t.childNodes),n=Array.from(this.domConverter.viewChildrenToDom(e,{withChildren:!1})),i=this._diffNodeLists(o,n),r=this._findUpdateActions(i,o,n,Oa);if(-1!==r.indexOf("update")){const t={equal:0,insert:0,delete:0};for(const i of r)if("update"===i){const i=t.equal+t.insert,r=t.equal+t.delete,s=e.getChild(i);!s||s.is("uiElement")||s.is("rawElement")||this._updateElementMappings(s,o[r]),ci(n[i]),t.equal++}else t[i]++}}_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._createBefore(e.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&&qn(t.parent)&&Sa(t.parent))}_removeInlineFiller(){const e=this._inlineFiller;if(!Sa(e))throw new S("view-renderer-filler-was-lost",this);Ta(e)?e.remove():e.data=e.data.substr(7),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;const n=e.nodeBefore,i=e.nodeAfter;return!(n instanceof fs||i instanceof fs)&&(!!(o!==t.getFillerOffset()||n&&n.is("element","br"))&&(!c.isAndroid||!n&&!i))}_updateText(e,t){const o=this.domConverter.findCorrespondingDomText(e);let n=this.domConverter.viewToDom(e).data;const i=t.inlineFillerPosition;i&&i.parent==e.parent&&i.offset==e.index&&(n=Ba+n),this._updateTextNode(o,n)}_updateAttrs(e){const t=this.domConverter.mapViewToDom(e);if(t){for(const o of Array.from(t.attributes)){const n=o.name;e.hasAttribute(n)||this.domConverter.removeDomElementAttribute(t,n)}for(const o of e.getAttributeKeys())this.domConverter.setDomElementAttribute(t,o,e.getAttribute(o),e)}}_updateChildren(e,t){const o=this.domConverter.mapViewToDom(e);if(!o)return;if(c.isAndroid){let e=null;for(const t of Array.from(o.childNodes)){if(e&&qn(e)&&qn(t)){o.normalize();break}e=t}}const n=t.inlineFillerPosition,i=o.childNodes,r=Array.from(this.domConverter.viewChildrenToDom(e,{bind:!0}));n&&n.parent===e&&za(o.ownerDocument,r,n.offset);const s=this._diffNodeLists(i,r),a=this._findUpdateActions(s,i,r,Na);let l=0;const d=new Set;for(const e of a)"delete"===e?(d.add(i[l]),ci(i[l])):"equal"!==e&&"update"!==e||l++;l=0;for(const e of a)"insert"===e?(ni(o,l,r[l]),l++):"update"===e?(this._updateTextNode(i[l],r[l].data),l++):"equal"===e&&(this._markDescendantTextToSync(this.domConverter.domToView(r[l])),l++);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;const n=o[o.length-1];n==t&&o.pop();return o}(e,this._fakeSelectionContainer),A(e,t,Va.bind(null,this.domConverter))}_findUpdateActions(e,t,o,n){if(-1===e.indexOf("insert")||-1===e.indexOf("delete"))return e;let i=[],r=[],s=[];const a={equal:0,insert:0,delete:0};for(const l of e)"insert"===l?s.push(o[a.equal+a.insert]):"delete"===l?r.push(t[a.equal+a.delete]):(i=i.concat(A(r,s,n).map((e=>"equal"===e?"update":e))),i.push("equal"),r=[],s=[]),a[l]++;return i.concat(A(r,s,n).map((e=>"equal"===e?"update":e)))}_updateTextNode(e,t){const o=e.data;o!=t&&(c.isAndroid&&this.isComposing&&o.replace(/\u00A0/g," ")==t.replace(/\u00A0/g," ")||this._updateTextNodeInternal(e,t))}_updateTextNodeInternal(e,t){const o=k(e.data,t);for(const t of o)"insert"===t.type?e.insertData(t.index,t.values.join("")):e.deleteData(t.index,t.howMany)}_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(c.isBlink&&!c.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._fakeSelectionContainer&&this._fakeSelectionContainer.isConnected?(this._removeFakeSelection(),this._updateDomSelection(e)):this.isComposing&&c.isAndroid||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 n=t.getSelection(),i=t.createRange();n.removeAllRanges(),i.selectNodeContents(o),n.addRange(i)}_updateDomSelection(e){const t=e.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(t))return;const o=this.domConverter.viewPositionToDom(this.selection.anchor),n=this.domConverter.viewPositionToDom(this.selection.focus);t.setBaseAndExtent(o.parent,o.offset,n.parent,n.offset),c.isGecko&&function(e,t){let o=e.parent,n=e.offset;qn(o)&&Ta(o)&&(n=oi(o)+1,o=o.parentNode);if(o.nodeType!=Node.ELEMENT_NODE||n!=o.childNodes.length-1)return;const i=o.childNodes[n];i&&"BR"==i.tagName&&t.addRange(t.getRangeAt(0))}(n,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){const t=e.getSelection();if(t.rangeCount){const o=e.activeElement,n=this.domConverter.mapDomToView(o);o&&n&&t.removeAllRanges()}}}_removeFakeSelection(){const e=this._fakeSelectionContainer;e&&e.remove()}_updateFocus(){if(this.isFocused){const e=this.selection.editableElement;e&&this.domConverter.focus(e)}}}function za(e,t,o){const n=t instanceof Array?t:t.childNodes,i=n[o];if(qn(i))return i.data=Ba+i.data,i;{const i=e.createTextNode(Ba);return Array.isArray(t)?n.splice(o,0,i):ni(t,o,i),i}}function Oa(e,t){return Rn(e)&&Rn(t)&&!qn(e)&&!qn(t)&&!ii(e)&&!ii(t)&&e.tagName.toLowerCase()===t.tagName.toLowerCase()}function Na(e,t){return Rn(e)&&Rn(t)&&qn(e)&&qn(t)}function Va(e,t,o){return t===o||(qn(t)&&qn(o)?t.data===o.data:!(!e.isBlockFiller(t)||!e.isBlockFiller(o)))}const La=Da(s.document),Ha=xa(s.document),ja=Ea(s.document),qa="data-ck-unsafe-attribute-",$a="data-ck-unsafe-element";class Ua{constructor(e,{blockFillerMode:t,renderingMode:o="editing"}={}){this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap,this._rawContentElementMatcher=new As,this._inlineObjectElementMatcher=new As,this._elementsWithTemporaryCustomProperties=new Set,this.document=e,this.renderingMode=o,this.blockFillerMode=t||("editing"===o?"br":"nbsp"),this.preElements=["pre","textarea"],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.unsafeElements=["script","style"],this._domDocument="editing"===this.renderingMode?s.document:s.document.implementation.createHTMLDocument("")}bindFakeSelection(e,t){this._fakeSelectionMapping.set(e,new Gs(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.children)this.unbindDomElement(t)}}bindDocumentFragments(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}shouldRenderAttribute(e,t,o){return"data"===this.renderingMode||!(e=e.toLowerCase()).startsWith("on")&&(("srcdoc"!==e||!t.match(/\bon\S+\s*=|javascript:|<\s*\/*script/i))&&("img"===o&&("src"===e||"srcset"===e)||("source"===o&&"srcset"===e||!t.match(/^\s*(javascript:|data:(image\/svg|text\/x?html))/i))))}setContentOf(e,t){if("data"===this.renderingMode)return void(e.innerHTML=t);const o=(new DOMParser).parseFromString(t,"text/html"),n=o.createDocumentFragment(),i=o.body.childNodes;for(;i.length>0;)n.appendChild(i[0]);const r=o.createTreeWalker(n,NodeFilter.SHOW_ELEMENT),s=[];let a;for(;a=r.nextNode();)s.push(a);for(const e of s){for(const t of e.getAttributeNames())this.setDomElementAttribute(e,t,e.getAttribute(t));const t=e.tagName.toLowerCase();this._shouldRenameElement(t)&&(Qa(t),e.replaceWith(this._createReplacementDomElement(t,e)))}for(;e.firstChild;)e.firstChild.remove();e.append(n)}viewToDom(e,t={}){if(e.is("$text")){const t=this._processDataFromViewText(e);return this._domDocument.createTextNode(t)}{const o=e;if(this.mapViewToDom(o)){if(!o.getCustomProperty("editingPipeline:doNotReuseOnce"))return this.mapViewToDom(o);this._elementsWithTemporaryCustomProperties.add(o)}let n;if(o.is("documentFragment"))n=this._domDocument.createDocumentFragment(),t.bind&&this.bindDocumentFragments(n,o);else{if(o.is("uiElement"))return n="$comment"===o.name?this._domDocument.createComment(o.getCustomProperty("$rawContent")):o.render(this._domDocument,this),t.bind&&this.bindElements(n,o),n;this._shouldRenameElement(o.name)?(Qa(o.name),n=this._createReplacementDomElement(o.name)):n=o.hasAttribute("xmlns")?this._domDocument.createElementNS(o.getAttribute("xmlns"),o.name):this._domDocument.createElement(o.name),o.is("rawElement")&&o.render(n,this),t.bind&&this.bindElements(n,o);for(const e of o.getAttributeKeys())this.setDomElementAttribute(n,e,o.getAttribute(e),o)}if(!1!==t.withChildren)for(const e of this.viewChildrenToDom(o,t))n instanceof HTMLTemplateElement?n.content.appendChild(e):n.appendChild(e);return n}}setDomElementAttribute(e,t,o,n){const i=this.shouldRenderAttribute(t,o,e.tagName.toLowerCase())||n&&n.shouldRenderUnsafeAttribute(t);i||T("domconverter-unsafe-attribute-detected",{domElement:e,key:t,value:o}),function(e){try{s.document.createAttribute(e)}catch(e){return!1}return!0}(t)?(e.hasAttribute(t)&&!i?e.removeAttribute(t):e.hasAttribute(qa+t)&&i&&e.removeAttribute(qa+t),e.setAttribute(i?t:qa+t,o)):T("domconverter-invalid-attribute-detected",{domElement:e,key:t,value:o})}removeDomElementAttribute(e,t){t!=$a&&(e.removeAttribute(t),e.removeAttribute(qa+t))}*viewChildrenToDom(e,t={}){const o=e.getFillerOffset&&e.getFillerOffset();let n=0;for(const i of e.getChildren()){o===n&&(yield this._getBlockFiller());const e=i.is("element")&&!!i.getCustomProperty("dataPipeline:transparentRendering")&&!or(i.getAttributes());if(e&&"data"==this.renderingMode)if(i.is("rawElement")){const e=this._domDocument.createElement(i.name);i.render(e,this),yield*[...e.childNodes]}else yield*this.viewChildrenToDom(i,t);else e&&T("domconverter-transparent-rendering-unsupported-in-editing-pipeline",{viewElement:i}),yield this.viewToDom(i,t);n++}o===n&&(yield this._getBlockFiller())}viewRangeToDom(e){const t=this.viewPositionToDom(e.start),o=this.viewPositionToDom(e.end),n=this._domDocument.createRange();return n.setStart(t.parent,t.offset),n.setEnd(o.parent,o.offset),n}viewPositionToDom(e){const t=e.parent;if(t.is("$text")){const o=this.findCorrespondingDomText(t);if(!o)return null;let n=e.offset;return Sa(o)&&(n+=7),{parent:o,offset:n}}{let o,n,i;if(0===e.offset){if(o=this.mapViewToDom(t),!o)return null;i=o.childNodes[0]}else{const t=e.nodeBefore;if(n=t.is("$text")?this.findCorrespondingDomText(t):this.mapViewToDom(t),!n)return null;o=n.parentNode,i=n.nextSibling}if(qn(i)&&Sa(i))return{parent:i,offset:7};return{parent:o,offset:n?oi(n)+1:0}}}domToView(e,t={}){const o=[],n=this._domToView(e,t,o),i=n.next().value;return i?(n.next(),this._processDomInlineNodes(null,o,t),"br"==this.blockFillerMode&&Ja(i)||i.is("$text")&&0==i.data.length?null:i):null}*domChildrenToView(e,t={},o=[]){let n=[];n=e instanceof HTMLTemplateElement?[...e.content.childNodes]:[...e.childNodes];for(let i=0;i{const{scrollLeft:t,scrollTop:o}=e;n.push([t,o])})),t.focus(),Wa(t,(e=>{const[t,o]=n.shift();e.scrollLeft=t,e.scrollTop=o})),s.window.scrollTo(e,o)}}_clearDomSelection(){const e=this.mapViewToDom(this.document.selection.editableElement);if(!e)return;const t=e.ownerDocument.defaultView.getSelection(),o=this.domSelectionToView(t);o&&o.rangeCount>0&&t.removeAllRanges()}isElement(e){return e&&e.nodeType==Node.ELEMENT_NODE}isDocumentFragment(e){return e&&e.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isBlockFiller(e){return"br"==this.blockFillerMode?e.isEqualNode(La):!!Ya(e,this.blockElements)||(e.isEqualNode(ja)||function(e,t){const o=e.isEqualNode(Ha);return o&&Ga(e,t)&&1===e.parentNode.childNodes.length}(e,this.blockElements))}isDomSelectionBackward(e){if(e.isCollapsed)return!1;const t=this._domDocument.createRange();try{t.setStart(e.anchorNode,e.anchorOffset),t.setEnd(e.focusNode,e.focusOffset)}catch(e){return!1}const o=t.collapsed;return t.detach(),o}getHostViewElement(e){const t=Ln(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)}registerInlineObjectMatcher(e){this._inlineObjectElementMatcher.add(e)}_clearTemporaryCustomProperties(){for(const e of this._elementsWithTemporaryCustomProperties)e._removeCustomProperty("editingPipeline:doNotReuseOnce");this._elementsWithTemporaryCustomProperties.clear()}_getBlockFiller(){switch(this.blockFillerMode){case"nbsp":return xa(this._domDocument);case"markedNbsp":return Ea(this._domDocument);case"br":return Da(this._domDocument)}}_isDomSelectionPositionCorrect(e,t){if(qn(e)&&Sa(e)&&t<7)return!1;if(this.isElement(e)&&Sa(e.childNodes[t]))return!1;const o=this.mapDomToView(e);return!o||!o.is("uiElement")&&!o.is("rawElement")}*_domToView(e,t,o){if("br"!=this.blockFillerMode&&Ya(e,this.blockElements))return null;const n=this.getHostViewElement(e);if(n)return n;if(ii(e)&&t.skipComments)return null;if(qn(e)){if(Ta(e))return null;{const t=e.data;if(""===t)return null;const n=new fs(this.document,t);return o.push(n),n}}{let n=this.mapDomToView(e);if(n)return this._isInlineObjectElement(n)&&o.push(n),n;if(this.isDocumentFragment(e))n=new ma(this.document),t.bind&&this.bindDocumentFragments(e,n);else{n=this._createViewElement(e,t),t.bind&&this.bindElements(e,n);const i=e.attributes;if(i)for(let e=i.length,t=0;t0?t[e-1]:null,l=e+1e.is("element")&&t.includes(e.name)))}(e,this.preElements))return!0;for(const t of e.getAncestors({parentFirst:!0}))if(t.is("element")&&t.hasStyle("white-space")&&"inherit"!==t.getStyle("white-space"))return["pre","pre-wrap","break-spaces"].includes(t.getStyle("white-space"));return!1}_getTouchingInlineViewNode(e,t){const o=new qs({startPosition:t?$s._createAfter(e):$s._createBefore(e),direction:t?"forward":"backward"});for(const{item:e}of o){if(e.is("$textProxy"))return e;if(!e.is("element")||!e.getCustomProperty("dataPipeline:transparentRendering")){if(e.is("element","br"))return null;if(this._isInlineObjectElement(e))return e;if(e.is("containerElement"))return null}}return null}_isBlockDomElement(e){return this.isElement(e)&&this.blockElements.includes(e.tagName.toLowerCase())}_isBlockViewElement(e){return e.is("element")&&this.blockElements.includes(e.name)}_isInlineObjectElement(e){return!!e.is("element")&&("br"==e.name||this.inlineObjectElements.includes(e.name)||!!this._inlineObjectElementMatcher.match(e))}_createViewElement(e,t){if(ii(e))return new ca(this.document,"$comment");const o=t.keepOriginalCase?e.tagName:e.tagName.toLowerCase();return new Ms(this.document,o)}_isViewElementWithRawContent(e,t){return!1!==t.withChildren&&e.is("element")&&!!this._rawContentElementMatcher.match(e)}_shouldRenameElement(e){const t=e.toLowerCase();return"editing"===this.renderingMode&&this.unsafeElements.includes(t)}_createReplacementDomElement(e,t){const o=this._domDocument.createElement("span");if(o.setAttribute($a,e),t){for(;t.firstChild;)o.appendChild(t.firstChild);for(const e of t.getAttributeNames())o.setAttribute(e,t.getAttribute(e))}return o}}function Wa(e,t){let o=e;for(;o;)t(o),o=o.parentElement}function Ga(e,t){const o=e.parentNode;return!!o&&!!o.tagName&&t.includes(o.tagName.toLowerCase())}function Ka(e,t,o){return" "==t&&e&&e.is("element")&&1==e.childCount&&o.includes(e.name)}function Za(e,t){return" "==t&&e&&e.is("element","span")&&1==e.childCount&&e.hasAttribute("data-cke-filler")}function Ja(e){return e.is("element","br")&&e.hasAttribute("data-cke-filler")}function Ya(e,t){return"BR"===e.tagName&&Ga(e,t)&&1===e.parentNode.childNodes.length}function Qa(e){"script"===e&&T("domconverter-unsafe-script-element-detected"),"style"===e&&T("domconverter-unsafe-style-element-detected")}class Xa extends(On()){constructor(e){super(),this._isEnabled=!1,this.view=e,this.document=e.document}get isEnabled(){return this._isEnabled}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] *")}}var el=Ki((function(e,t){zt(t,_o(t),e)}));const tl=el;class ol{constructor(e,t,o){this.view=e,this.document=e.document,this.domEvent=t,this.domTarget=t.target,tl(this,o)}get target(){return this.view.domConverter.mapDomToView(this.domTarget)}preventDefault(){this.domEvent.preventDefault()}stopPropagation(){this.domEvent.stopPropagation()}}class nl extends Xa{constructor(){super(...arguments),this.useCapture=!1,this.usePassive=!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,usePassive:this.usePassive})}))}stopObserving(e){this.stopListening(e)}fire(e,t,o){this.isEnabled&&this.document.fire(e,new ol(this.view,t,o))}}class il extends nl{constructor(){super(...arguments),this.domEventType=["keydown","keyup"]}onDomEvent(e){const t={keyCode:e.keyCode,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,get keystroke(){return vi(this)}};this.fire(e.type,e,t)}}const rl=function(){return de.Date.now()};var sl=/\s/;const al=function(e){for(var t=e.length;t--&&sl.test(e.charAt(t)););return t};var ll=/^\s+/;const cl=function(e){return e?e.slice(0,al(e)+1).replace(ll,""):e};var dl=/^[-+]0x[0-9a-f]+$/i,ul=/^0b[01]+$/i,hl=/^0o[0-7]+$/i,pl=parseInt;const ml=function(e){if("number"==typeof e)return e;if(vr(e))return NaN;if(W(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=W(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=cl(e);var o=ul.test(e);return o||hl.test(e)?pl(e.slice(2),o?2:8):dl.test(e)?NaN:+e};var gl=Math.max,fl=Math.min;const bl=function(e,t,o){var n,i,r,s,a,l,c=0,d=!1,u=!1,h=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function p(t){var o=n,r=i;return n=i=void 0,c=t,s=e.apply(r,o)}function m(e){var o=e-l;return void 0===l||o>=t||o<0||u&&e-c>=r}function g(){var e=rl();if(m(e))return f(e);a=setTimeout(g,function(e){var o=t-(e-l);return u?fl(o,r-(e-c)):o}(e))}function f(e){return a=void 0,h&&n?p(e):(n=i=void 0,s)}function b(){var e=rl(),o=m(e);if(n=arguments,i=this,l=e,o){if(void 0===a)return function(e){return c=e,a=setTimeout(g,t),d?p(e):s}(l);if(u)return clearTimeout(a),a=setTimeout(g,t),p(l)}return void 0===a&&(a=setTimeout(g,t)),s}return t=ml(t)||0,W(o)&&(d=!!o.leading,r=(u="maxWait"in o)?gl(ml(o.maxWait)||0,t):r,h="trailing"in o?!!o.trailing:h),b.cancel=function(){void 0!==a&&clearTimeout(a),c=0,n=l=i=a=void 0},b.flush=function(){return void 0===a?s:f(rl())},b};class kl extends Xa{constructor(e){super(e),this._fireSelectionChangeDoneDebounced=bl((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"})}stopObserving(){}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(e){const t=this.document.selection,o=new Gs(t.getRanges(),{backward:t.isBackward,fake:!1});e!=Ai.arrowleft&&e!=Ai.arrowup||o.setTo(o.getFirstPosition()),e!=Ai.arrowright&&e!=Ai.arrowdown||o.setTo(o.getLastPosition());const n={oldSelection:t,newSelection:o,domSelection:null};this.document.fire("selectionChange",n),this._fireSelectionChangeDoneDebounced(n)}}const wl=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this};const _l=function(e){return this.__data__.has(e)};function yl(e){var t=-1,o=null==e?0:e.length;for(this.__data__=new Dt;++ta))return!1;var c=r.get(e),d=r.get(t);if(c&&d)return c==t&&d==e;var u=-1,h=!0,p=2&o?new Al:void 0;for(r.set(e,t),r.set(t,e);++uthis._handleFocus())),t.on("blur",((e,t)=>this._handleBlur(t))),t.on("beforeinput",(()=>{t.isFocused||this._handleFocus()}),{priority:"highest"})}flush(){this._isFocusChanging&&(this._isFocusChanging=!1,this.document.isFocused=!0)}onDomEvent(e){this.fire(e.type,e)}destroy(){this._clearTimeout(),super.destroy()}_handleFocus(){this._clearTimeout(),this._isFocusChanging=!0,this._renderTimeoutId=setTimeout((()=>{this._renderTimeoutId=null,this.flush(),this.view.change((()=>{}))}),50)}_handleBlur(e){const t=this.document.selection.editableElement;null!==t&&t!==e.target||(this.document.isFocused=!1,this._isFocusChanging=!1,this.view.change((()=>{})))}_clearTimeout(){this._renderTimeoutId&&(clearTimeout(this._renderTimeoutId),this._renderTimeoutId=null)}}class ql extends Xa{constructor(e){super(e),this.mutationObserver=e.getObserver(Ll),this.focusObserver=e.getObserver(jl),this.selection=this.document.selection,this.domConverter=e.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=bl((e=>{this.document.fire("selectionChangeDone",e)}),200),this._clearInfiniteLoopInterval=setInterval((()=>this._clearInfiniteLoop()),1e3),this._documentIsSelectingInactivityTimeoutDebounced=bl((()=>this.document.isSelecting=!1),5e3),this._loopbackCounter=0}observe(e){const t=e.ownerDocument,o=()=>{this.document.isSelecting&&(this._handleSelectionChange(t),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",useCapture:!0}),this.listenTo(e,"keyup",o,{priority:"highest",useCapture:!0}),this._documents.has(t)||(this.listenTo(t,"mouseup",o,{priority:"highest",useCapture:!0}),this.listenTo(t,"selectionchange",(()=>{this.document.isComposing&&!c.isAndroid||(this._handleSelectionChange(t),this._documentIsSelectingInactivityTimeoutDebounced())})),this.listenTo(this.view.document,"compositionstart",(()=>{this._handleSelectionChange(t)}),{priority:"lowest"}),this._documents.add(t))}stopObserving(e){this.stopListening(e)}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel(),this._documentIsSelectingInactivityTimeoutDebounced.cancel()}_reportInfiniteLoop(){}_handleSelectionChange(e){if(!this.isEnabled)return;const t=e.defaultView.getSelection();if(this.checkShouldIgnoreEventFromTarget(t.anchorNode))return;this.mutationObserver.flush();const o=this.domConverter.domSelectionToView(t);if(0!=o.rangeCount){if(this.view.hasDomSelection=!0,this.focusObserver.flush(),!this.selection.isEqual(o)||!this.domConverter.isDomSelectionCorrect(t))if(++this._loopbackCounter>60)this._reportInfiniteLoop();else if(this.selection.isSimilar(o))this.view.forceRender();else{const e={oldSelection:this.selection,newSelection:o,domSelection:t};this.document.fire("selectionChange",e),this._fireSelectionChangeDoneDebounced(e)}}else this.view.hasDomSelection=!1}_clearInfiniteLoop(){this._loopbackCounter=0}}class $l extends nl{constructor(e){super(e),this.domEventType=["compositionstart","compositionupdate","compositionend"];const t=this.document;t.on("compositionstart",(()=>{t.isComposing=!0}),{priority:"low"}),t.on("compositionend",(()=>{t.isComposing=!1}),{priority:"low"})}onDomEvent(e){this.fire(e.type,e,{data:e.data})}}class Ul{constructor(e,t={}){this._files=t.cacheFiles?Wl(e):null,this._native=e}get files(){return this._files||(this._files=Wl(this._native)),this._files}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}setDragImage(e,t,o){this._native.setDragImage(e,t,o)}get isCanceled(){return"none"==this._native.dropEffect||!!this._native.mozUserCancelled}}function Wl(e){const t=Array.from(e.files||[]),o=Array.from(e.items||[]);return t.length?t:o.filter((e=>"file"===e.kind)).map((e=>e.getAsFile()))}class Gl extends nl{constructor(){super(...arguments),this.domEventType="beforeinput"}onDomEvent(e){const t=e.getTargetRanges(),o=this.view,n=o.document;let i=null,r=null,s=[];if(e.dataTransfer&&(i=new Ul(e.dataTransfer)),null!==e.data?r=e.data:i&&(r=i.getData("text/plain")),n.selection.isFake)s=Array.from(n.selection.getRanges());else if(t.length)s=t.map((e=>{const t=o.domConverter.domPositionToView(e.startContainer,e.startOffset),n=o.domConverter.domPositionToView(e.endContainer,e.endOffset);return t?o.createRange(t,n):n?o.createRange(n):void 0})).filter((e=>!!e));else if(c.isAndroid){const t=e.target.ownerDocument.defaultView.getSelection();s=Array.from(o.domConverter.domSelectionToView(t).getRanges())}if(c.isAndroid&&"insertCompositionText"==e.inputType&&r&&r.endsWith("\n"))this.fire(e.type,e,{inputType:"insertParagraph",targetRanges:[o.createRange(s[0].end)]});else if("insertText"==e.inputType&&r&&r.includes("\n")){const t=r.split(/\n{1,2}/g);let o=s;for(let r=0;r{if(this.isEnabled&&((o=t.keyCode)==Ai.arrowright||o==Ai.arrowleft||o==Ai.arrowup||o==Ai.arrowdown)){const o=new Zs(this.document,"arrowKey",this.document.selection.getFirstRange());this.document.fire(o,t),o.stop.called&&e.stop()}var o}))}observe(){}stopObserving(){}}class Zl extends Xa{constructor(e){super(e);const t=this.document;t.on("keydown",((e,o)=>{if(!this.isEnabled||o.keyCode!=Ai.tab||o.ctrlKey)return;const n=new Zs(t,"tab",t.selection.getFirstRange());t.fire(n,o),n.stop.called&&e.stop()}))}observe(){}stopObserving(){}}const Jl=function(e){return Bn(e,5)};class Yl extends(X()){constructor(e){super(),this.domRoots=new Map,this._initialDomRootAttributes=new WeakMap,this._observers=new Map,this._ongoingChange=!1,this._postFixersInProgress=!1,this._renderingDisabled=!1,this._hasChangedSinceTheLastRendering=!1,this.document=new oa(e),this.domConverter=new Ua(this.document),this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new Ma(this.domConverter,this.document.selection),this._renderer.bind("isFocused","isSelecting","isComposing").to(this.document,"isFocused","isSelecting","isComposing"),this._writer=new ga(this.document),this.addObserver(Ll),this.addObserver(jl),this.addObserver(ql),this.addObserver(il),this.addObserver(kl),this.addObserver($l),this.addObserver(Kl),this.addObserver(Gl),this.addObserver(Zl),this.document.on("arrowKey",Pa,{priority:"low"}),da(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})),c.isiOS&&this.listenTo(this.document,"blur",((e,t)=>{this.domConverter.mapDomToView(t.domEvent.relatedTarget)||this.domConverter._clearDomSelection()})),this.listenTo(this.document,"mutations",((e,{mutations:t})=>{t.forEach((e=>this._renderer.markToSync(e.type,e.node)))}),{priority:"low"}),this.listenTo(this.document,"mutations",(()=>{this.forceRender()}),{priority:"lowest"})}attachDomRoot(e,t="main"){const o=this.document.getRoot(t);o._name=e.tagName.toLowerCase();const n={};for(const{name:t,value:i}of Array.from(e.attributes))n[t]=i,"class"===t?this._writer.addClass(i.split(" "),o):o.hasAttribute(t)||this._writer.setAttribute(t,i,o);this._initialDomRootAttributes.set(e,n);const i=()=>{this._writer.setAttribute("contenteditable",(!o.isReadOnly).toString(),o),o.isReadOnly?this._writer.addClass("ck-read-only",o):this._writer.removeClass("ck-read-only",o)};i(),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(i))),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);for(const e of this._observers.values())e.stopObserving(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({alignToTop:e,forceScroll:t,viewportOffset:o=20,ancestorOffset:n=20}={}){const i=this.document.selection.getFirstRange();if(!i)return;const r=Jl({alignToTop:e,forceScroll:t,viewportOffset:o,ancestorOffset:n});"number"==typeof o&&(o={top:o,bottom:o,left:o,right:o});const s={target:this.domConverter.viewRangeToDom(i),viewportOffset:o,ancestorOffset:n,alignToTop:e,forceScroll:t};this.fire("scrollToTheSelection",s,r),function({target:e,viewportOffset:t=0,ancestorOffset:o=0,alignToTop:n,forceScroll:i}){const r=fi(e);let s=r,a=null;for(t=function(e){return"number"==typeof e?{top:e,bottom:e,left:e,right:e}:e}(t);s;){let l;l=bi(s==r?e:a),ui({parent:l,getRect:()=>ki(e,s),alignToTop:n,ancestorOffset:o,forceScroll:i});let c=ki(e,s);const d=ki(l,s);if(c.height>d.height){const e=c.getIntersection(d);e&&(c=e)}if(di({window:s,rect:c,viewportOffset:t,alignToTop:n,forceScroll:i}),s.parent!=s){if(a=s.frameElement,s=s.parent,!a)return}else s=null}}(s)}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 S("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){S.rethrowUnexpectedError(e,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.getObserver(jl).flush(),this.change((()=>{}))}destroy(){for(const e of this._observers.values())e.destroy();this.document.destroy(),this.stopListening()}createPositionAt(e,t){return $s._createAt(e,t)}createPositionAfter(e){return $s._createAfter(e)}createPositionBefore(e){return $s._createBefore(e)}createRange(e,t){return new Us(e,t)}createRangeOn(e){return Us._createOn(e)}createRangeIn(e){return Us._createIn(e)}createSelection(...e){return new Gs(...e)}_disableRendering(e){this._renderingDisabled=e,0==e&&this.change((()=>{}))}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}class Ql{is(){throw new Error("is() method is abstract")}}class Xl extends Ql{constructor(e,t,o){if(super(),this.textNode=e,t<0||t>e.offsetSize)throw new S("model-textproxy-wrong-offsetintext",this);if(o<0||t+o>e.offsetSize)throw new S("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}getPath(){const e=this.textNode.getPath();return e.length>0&&(e[e.length-1]+=this.offsetInText),e}getAncestors(e={}){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()}}Xl.prototype.is=function(e){return"$textProxy"===e||"model:$textProxy"===e||"textProxy"===e||"model:textProxy"===e};class ec{constructor(e){if(!e||!e.boundaries&&!e.startPosition)throw new S("model-tree-walker-no-start-position",null);const t=e.direction||"forward";if("forward"!=t&&"backward"!=t)throw new S("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=oc._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}get position(){return this._position}skip(e){let t,o,n,i;do{n=this.position,i=this._visitedParent,({done:t,value:o}=this.next())}while(!t&&e(o));t||(this._position=n,this._visitedParent=i)}jumpTo(e){this._boundaryStartParent&&e.isBefore(this.boundaries.start)?e=this.boundaries.start:this._boundaryEndParent&&e.isAfter(this.boundaries.end)&&(e=this.boundaries.end),this._position=e.clone(),this._visitedParent=e.parent}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,value:void 0};if(o===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0,value:void 0};const n=nc(t,o),i=n||ic(t,o,n);if(i&&i.is("model:element")){if(this.shallow){if(this.boundaries&&this.boundaries.end.isBefore(t))return{done:!0,value:void 0};t.offset++}else t.path.push(0),this._visitedParent=i;return this._position=t,tc("elementStart",i,e,t,1)}if(i&&i.is("model:$text")){let n;if(this.singleCharacters)n=1;else{let e=i.endOffset;this._boundaryEndParent==o&&this.boundaries.end.offsete&&(e=this.boundaries.start.offset),n=t.offset-e}const i=t.offset-r.startOffset,s=new Xl(r,i-n,n);return t.offset-=n,this._position=t,tc("text",s,e,t,n)}return t.path.pop(),this._position=t,this._visitedParent=o.parent,tc("elementStart",o,e,t,1)}}function tc(e,t,o,n,i){return{done:!1,value:{type:e,item:t,previousPosition:o,nextPosition:n,length:i}}}class oc extends Ql{constructor(e,t,o="toNone"){if(super(),!e.is("element")&&!e.is("documentFragment"))throw new S("model-position-root-invalid",e);if(!Array.isArray(t)||0===t.length)throw new S("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;t1)return!1;if(1===t)return sc(e,this,o);if(-1===t)return sc(this,e,o)}return this.path.length===e.path.length||(this.path.length>e.path.length?ac(this.path,t):ac(e.path,t))}hasSameParentAs(e){if(this.root!==e.root)return!1;return"same"==se(this.getParentPath(),e.getParentPath())}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=oc._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)?oc._createAt(e.deletionPosition):this._getTransformedByMove(e.deletionPosition,e.graveyardPosition,1),o}_getTransformedByDeletion(e,t){const o=oc._createAt(this);if(this.root!=e.root)return o;if("same"==se(e.getParentPath(),this.getParentPath())){if(e.offsetthis.offset)return null;o.offset-=t}}else if("prefix"==se(e.getParentPath(),this.getParentPath())){const n=e.path.length-1;if(e.offset<=this.path[n]){if(e.offset+t>this.path[n])return null;o.path[n]-=t}}return o}_getTransformedByInsertion(e,t){const o=oc._createAt(this);if(this.root!=e.root)return o;if("same"==se(e.getParentPath(),this.getParentPath()))(e.offset=t;){if(e.path[n]+i!==o.maxOffset)return!1;i=1,n--,o=o.parent}return!0}(e,o+1))}function ac(e,t){for(;tt+1;){const t=n.maxOffset-o.offset;0!==t&&e.push(new lc(o,o.getShiftedBy(t))),o.path=o.path.slice(0,-1),o.offset++,n=n.parent}for(;o.path.length<=this.end.path.length;){const t=this.end.path[o.path.length-1],n=t-o.offset;0!==n&&e.push(new lc(o,o.getShiftedBy(n))),o.offset=t,o.path.push(0)}return e}getWalker(e={}){return e.boundaries=this,new ec(e)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new ec(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new ec(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 lc(this.start,this.end)]}getTransformedByOperations(e){const t=[new lc(this.start,this.end)];for(const o of e)for(let e=0;e0?new this(o,n):new this(n,o)}static _createIn(e){return new this(oc._createAt(e,0),oc._createAt(e,e.maxOffset))}static _createOn(e){return this._createFromPositionAndShift(oc._createBefore(e),e.offsetSize)}static _createFromRanges(e){if(0===e.length)throw new S("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),n=new this(t.start,t.end);for(let t=o-1;t>=0&&e[t].end.isEqual(n.start);t--)n.start=oc._createAt(e[t].start);for(let t=o+1;t{if(t.viewPosition)return;const o=this._modelToViewMapping.get(t.modelPosition.parent);if(!o)throw new S("mapping-model-position-view-parent-not-found",this,{modelPosition:t.modelPosition});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),n=this._viewToModelMapping.get(o),i=this._toModelOffset(t.viewPosition.parent,t.viewPosition.offset,o);t.modelPosition=oc._createAt(n,i)}),{priority:"low"})}bindElements(e,t){this._modelToViewMapping.set(e,t),this._viewToModelMapping.set(t,e)}unbindViewElement(e,t={}){const o=this.toModelElement(e);if(this._elementToMarkerNames.has(e))for(const t of this._elementToMarkerNames.get(e))this._unboundMarkerNames.add(t);if(t.defer)this._deferredBindingRemovals.set(e,e.root);else{this._viewToModelMapping.delete(e)&&this._cache.stopTracking(e),this._modelToViewMapping.get(o)==e&&this._modelToViewMapping.delete(o)}}unbindModelElement(e){const t=this.toViewElement(e);if(this._modelToViewMapping.delete(e),this._viewToModelMapping.get(t)==e){this._viewToModelMapping.delete(t)&&this._cache.stopTracking(t)}}bindElementToMarker(e,t){const o=this._markerNameToElements.get(t)||new Set;o.add(e);const n=this._elementToMarkerNames.get(e)||new Set;n.add(t),this._markerNameToElements.set(t,o),this._elementToMarkerNames.set(e,n)}unbindElementFromMarkerName(e,t){const o=this._markerNameToElements.get(t);o&&(o.delete(e),0==o.size&&this._markerNameToElements.delete(t));const n=this._elementToMarkerNames.get(e);n&&(n.delete(t),0==n.size&&this._elementToMarkerNames.delete(e))}flushUnboundMarkerNames(){const e=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),e}flushDeferredBindings(){for(const[e,t]of this._deferredBindingRemovals)e.root==t&&this.unbindViewElement(e);this._deferredBindingRemovals=new Map}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set,this._deferredBindingRemovals=new Map}toModelElement(e){return this._viewToModelMapping.get(e)}toViewElement(e){return this._modelToViewMapping.get(e)}toModelRange(e){return new lc(this.toModelPosition(e.start),this.toModelPosition(e.end))}toViewRange(e){return new Us(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={}){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 n=0;for(let o=0;o0;){const e=t.pop(),n=e.name&&this._viewToModelLengthCallbacks.size>0&&this._viewToModelLengthCallbacks.get(e.name);if(n)o+=n(e);else if(this._viewToModelMapping.has(e))o+=1;else if(e.is("$text"))o+=e.data.length;else{if(e.is("uiElement"))continue;for(const o of e.getChildren())t.push(o)}}return o}findPositionIn(e,t){if(0===t)return this._moveViewPositionToTextNode(new $s(e,0));if(0==this._viewToModelLengthCallbacks.size&&this._viewToModelMapping.has(e)){const o=this._cache.getClosest(e,t);return this._findPositionStartingFrom(o.viewPosition,o.modelOffset,t,e,!0)}return this._findPositionStartingFrom(new $s(e,0),0,t,e,!1)}_findPositionStartingFrom(e,t,o,n,i){let r,s=e.parent,a=e.offset;if(s.is("$text"))return new $s(s,o-t);let l=t,c=0;for(;l{this._clearCacheInsideParent(t,o.index)},this._invalidateOnTextChangeCallback=(e,t)=>{this._clearCacheStartingBefore(t)}}save(e,t,o,n){const i=this._cachedMapping.get(o),r=i.cacheMap.get(n);if(r){const o=e.getChild(t-1),n=r.viewPosition.nodeBefore?this._nodeToCacheListIndex.get(r.viewPosition.nodeBefore):0;return void this._nodeToCacheListIndex.set(o,n)}const s={viewPosition:new $s(e,t),modelOffset:n};i.maxModelOffset=n>i.maxModelOffset?n:i.maxModelOffset,i.cacheMap.set(n,s);let a=i.cacheList.length-1;for(;a>=0&&i.cacheList[a].modelOffset>n;)a--;if(i.cacheList.splice(a+1,0,s),t>0){const o=e.getChild(t-1);this._nodeToCacheListIndex.set(o,a+1)}}getClosest(e,t){const o=this._cachedMapping.get(e);let n;if(o)if(t>o.maxModelOffset)n=o.cacheList[o.cacheList.length-1];else{const e=o.cacheMap.get(t);n=e||this._findInCacheList(o.cacheList,t)}else n=this.startTracking(e);const i=this._hoistViewPosition(n.viewPosition);return{modelOffset:n.modelOffset,viewPosition:i}}_hoistViewPosition(e){for(;e.parent.parent&&!this._cachedMapping.has(e.parent)&&e.isAtEnd;){const t=e.parent.parent,o=t.getChildIndex(e.parent)+1;e=new $s(t,o)}return e}startTracking(e){const t={viewPosition:new $s(e,0),modelOffset:0},o={maxModelOffset:0,cacheList:[t],cacheMap:new Map([[0,t]])};return this._cachedMapping.set(e,o),e.on("change:children",this._invalidateOnChildrenChangeCallback),e.on("change:text",this._invalidateOnTextChangeCallback),t}stopTracking(e){e.off("change:children",this._invalidateOnChildrenChangeCallback),e.off("change:text",this._invalidateOnTextChangeCallback),this._cachedMapping.delete(e)}_clearCacheInsideParent(e,t){if(0==t)this._cachedMapping.has(e)?this._clearCacheAll(e):this._clearCacheStartingBefore(e);else{const o=e.getChild(t-1);this._clearCacheStartingBefore(o)}}_clearCacheAll(e){const t=this._cachedMapping.get(e);t.maxModelOffset>0&&(t.maxModelOffset=0,t.cacheList.length=1,t.cacheMap.clear(),t.cacheMap.set(0,t.cacheList[0]))}_clearCacheStartingBefore(e){const t=this._nodeToCacheListIndex.get(e);if(void 0===t){const t=e.parent;return void(this._cachedMapping.has(t)||this._clearCacheStartingBefore(t))}let o=e.parent;for(;!this._cachedMapping.has(o);)o=o.parent;this._clearCacheFromIndex(o,t)}_clearCacheFromIndex(e,t){0===t&&(t=1);const o=this._cachedMapping.get(e),n=o.cacheList[t-1];if(!n)return;o.maxModelOffset=n.modelOffset;const i=o.cacheList.splice(t);for(const e of i){o.cacheMap.delete(e.modelOffset);const t=e.viewPosition.nodeBefore;this._nodeToCacheListIndex.delete(t)}}_findInCacheList(e,t){let o=0,n=e.length-1,i=n-o>>1,r=e[i];for(;o>1),r=e[i];return r.modelOffset<=t?r:e[i-1]}}class uc{constructor(){this._consumable=new Map,this._textProxyRegistry=new Map}add(e,t){t=hc(t),e instanceof Xl&&(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=hc(t),e instanceof Xl&&(e=this._getSymbolForTextProxy(e)),!!this.test(e,t)&&(this._consumable.get(e).set(t,!1),!0)}test(e,t){t=hc(t),e instanceof Xl&&(e=this._getSymbolForTextProxy(e));const o=this._consumable.get(e);if(void 0===o)return null;const n=o.get(t);return void 0===n?null:n}revert(e,t){t=hc(t),e instanceof Xl&&(e=this._getSymbolForTextProxy(e));const o=this.test(e,t);return!1===o?(this._consumable.get(e).set(t,!0),!0):!0!==o&&null}verifyAllConsumed(e){const t=[];for(const[o,n]of this._consumable)for(const[i,r]of n){const n=i.split(":")[0];r&&e==n&&t.push({event:i,item:o.name||o.description})}if(t.length)throw new S("conversion-model-consumable-not-consumed",null,{items:t})}_getSymbolForTextProxy(e){let t=null;const o=this._textProxyRegistry.get(e.startOffset);if(o){const n=o.get(e.endOffset);n&&(t=n.get(e.parent))}return t||(t=this._addSymbolForTextProxy(e)),t}_addSymbolForTextProxy(e){const t=e.startOffset,o=e.endOffset,n=e.parent,i=Symbol("$textProxy:"+e.data);let r,s;return r=this._textProxyRegistry.get(t),r||(r=new Map,this._textProxyRegistry.set(t,r)),s=r.get(o),s||(s=new Map,r.set(o,s)),s.set(n,i),i}}function hc(e){const t=e.split(":");return"insert"==t[0]?t[0]:"addMarker"==t[0]||"removeMarker"==t[0]?e:t.length>1?t[0]+":"+t[1]:t[0]}class pc extends(V()){constructor(e){super(),this._conversionApi={dispatcher:this,...e},this._firedEventsMap=new WeakMap}convertChanges(e,t,o){const n=this._createConversionApi(o,e.getRefreshedItems());for(const t of e.getMarkersToRemove())this._convertMarkerRemove(t.name,t.range,n);const i=this._reduceChanges(e.getChanges());for(const e of i)"insert"===e.type?this._convertInsert(lc._createFromPositionAndShift(e.position,e.length),n):"reinsert"===e.type?this._convertReinsert(lc._createFromPositionAndShift(e.position,e.length),n):"remove"===e.type?this._convertRemove(e.position,e.length,e.name,n):this._convertAttribute(e.range,e.attributeKey,e.attributeOldValue,e.attributeNewValue,n);n.mapper.flushDeferredBindings();for(const e of n.mapper.flushUnboundMarkerNames()){const o=t.get(e).getRange();this._convertMarkerRemove(e,o,n),this._convertMarkerAdd(e,o,n)}for(const t of e.getMarkersToAdd())this._convertMarkerAdd(t.name,t.range,n);n.consumable.verifyAllConsumed("insert")}convert(e,t,o,n={}){const i=this._createConversionApi(o,void 0,n);this._convertInsert(e,i);for(const[e,o]of t)this._convertMarkerAdd(e,o,i);i.consumable.verifyAllConsumed("insert")}convertSelection(e,t,o){const n=this._createConversionApi(o);this.fire("cleanSelection",{selection:e},n);const i=e.getFirstPosition().root;if(!n.mapper.toViewElement(i))return;const r=Array.from(t.getMarkersAtPosition(e.getFirstPosition()));if(this._addConsumablesForSelection(n.consumable,e,r),this.fire("selection",{selection:e},n),e.isCollapsed){for(const t of r)if(n.consumable.test(e,"addMarker:"+t.name)){const o=t.getRange();if(!mc(e.getFirstPosition(),t,n.mapper))continue;const i={item:e,markerName:t.name,markerRange:o};this.fire(`addMarker:${t.name}`,i,n)}for(const t of e.getAttributeKeys())if(n.consumable.test(e,"attribute:"+t)){const o={item:e,range:e.getFirstRange(),attributeKey:t,attributeOldValue:null,attributeNewValue:e.getAttribute(t)};this.fire(`attribute:${t}:$text`,o,n)}}}_convertInsert(e,t,o={}){o.doNotAddConsumables||this._addConsumablesForInsert(t.consumable,e);for(const o of e.getWalker({shallow:!0}))this._testAndFire("insert",gc(o),t)}_convertRemove(e,t,o,n){this.fire(`remove:${o}`,{position:e,length:t},n)}_convertAttribute(e,t,o,n,i){this._addConsumablesForRange(i.consumable,e,`attribute:${t}`);for(const r of e){const e={item:r.item,range:lc._createFromPositionAndShift(r.previousPosition,r.length),attributeKey:t,attributeOldValue:o,attributeNewValue:n};this._testAndFire(`attribute:${t}`,e,i)}}_convertReinsert(e,t){const o=Array.from(e.getWalker({shallow:!0}));this._addConsumablesForInsert(t.consumable,o);for(const e of o.map(gc))this._testAndFire("insert",{...e,reconversion:!0},t)}_convertMarkerAdd(e,t,o){if("$graveyard"==t.root.rootName)return;const n=`addMarker:${e}`;if(o.consumable.add(t,n),this.fire(n,{markerName:e,markerRange:t},o),o.consumable.consume(t,n)){this._addConsumablesForRange(o.consumable,t,n);for(const i of t.getItems()){if(!o.consumable.test(i,n))continue;const r={item:i,range:lc._createOn(i),markerName:e,markerRange:t};this.fire(n,r,o)}}}_convertMarkerRemove(e,t,o){"$graveyard"!=t.root.rootName&&this.fire(`removeMarker:${e}`,{markerName:e,markerRange:t},o)}_reduceChanges(e){const t={changes:e};return this.fire("reduceChanges",t),t.changes}_addConsumablesForInsert(e,t){for(const o of t){const t=o.item;if(null===e.test(t,"insert")){e.add(t,"insert");for(const o of t.getAttributeKeys())e.add(t,"attribute:"+o)}}return e}_addConsumablesForRange(e,t,o){for(const n of t.getItems())e.add(n,o);return e}_addConsumablesForSelection(e,t,o){e.add(t,"selection");for(const n of o)e.add(t,"addMarker:"+n.name);for(const o of t.getAttributeKeys())e.add(t,"attribute:"+o);return e}_testAndFire(e,t,o){const n=function(e,t){const o=t.item.is("element")?t.item.name:"$text";return`${e}:${o}`}(e,t),i=t.item.is("$textProxy")?o.consumable._getSymbolForTextProxy(t.item):t.item,r=this._firedEventsMap.get(o),s=r.get(i);if(s){if(s.has(n))return;s.add(n)}else r.set(i,new Set([n]));this.fire(n,t,o)}_testAndFireAddAttributes(e,t){const o={item:e,range:lc._createOn(e)};for(const e of o.item.getAttributeKeys())o.attributeKey=e,o.attributeOldValue=null,o.attributeNewValue=o.item.getAttribute(e),this._testAndFire(`attribute:${e}`,o,t)}_createConversionApi(e,t=new Set,o={}){const n={...this._conversionApi,consumable:new uc,writer:e,options:o,convertItem:e=>this._convertInsert(lc._createOn(e),n),convertChildren:e=>this._convertInsert(lc._createIn(e),n,{doNotAddConsumables:!0}),convertAttributes:e=>this._testAndFireAddAttributes(e,n),canReuseView:e=>!t.has(n.mapper.toModelElement(e))};return this._firedEventsMap.set(n,new Map),n}}function mc(e,t,o){const n=t.getRange(),i=Array.from(e.getAncestors());i.shift(),i.reverse();return!i.some((e=>{if(n.containsItem(e)){return!!o.toViewElement(e).getCustomProperty("addHighlight")}}))}function gc(e){return{item:e.item,range:lc._createFromPositionAndShift(e.previousPosition,e.length)}}class fc extends Ql{constructor(e){super(),this.parent=null,this._index=null,this._startOffset=null,this._attrs=lr(e)}get document(){return null}get index(){return this._index}get startOffset(){return this._startOffset}get offsetSize(){return 1}get endOffset(){return null===this.startOffset?null:this.startOffset+this.offsetSize}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 null!==this.parent&&this.root.isAttached()}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.startOffset),t=t.parent;return e}getAncestors(e={}){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),n=e.getAncestors(t);let i=0;for(;o[i]==n[i]&&o[i];)i++;return 0===i?null:o[i-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),o=e.getPath(),n=se(t,o);switch(n){case"prefix":return!0;case"extension":return!1;default:return t[n](e[t[0]]=t[1],e)),{})),e}_clone(e){return new this.constructor(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(e,t){this._attrs.set(e,t)}_setAttributesTo(e){this._attrs=lr(e)}_removeAttribute(e){return this._attrs.delete(e)}_clearAttributes(){this._attrs.clear()}}fc.prototype.is=function(e){return"node"===e||"model:node"===e};class bc extends(V(Ql)){constructor(...e){super(),this._lastRangeBackward=!1,this._attrs=new Map,this._ranges=[],e.length&&this.setTo(...e)}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 n of e._ranges)if(t.isEqual(n)){o=!0;break}if(!o)return!1}return!0}*getRanges(){for(const e of this._ranges)yield new lc(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 lc(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 lc(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){let[t,o,n]=e;if("object"==typeof o&&(n=o,o=void 0),null===t)this._setRanges([]);else if(t instanceof bc)this._setRanges(t.getRanges(),t.isBackward);else if(t&&"function"==typeof t.getRanges)this._setRanges(t.getRanges(),t.isBackward);else if(t instanceof lc)this._setRanges([t],!!n&&!!n.backward);else if(t instanceof oc)this._setRanges([new lc(t)]);else if(t instanceof fc){const e=!!n&&!!n.backward;let i;if("in"==o)i=lc._createIn(t);else if("on"==o)i=lc._createOn(t);else{if(void 0===o)throw new S("model-selection-setto-required-second-parameter",[this,t]);i=new lc(oc._createAt(t,o))}this._setRanges([i],e)}else{if(!ae(t))throw new S("model-selection-setto-not-selectable",[this,t]);this._setRanges(t,n&&!!n.backward)}}_setRanges(e,t=!1){const o=Array.from(e),n=o.some((t=>{if(!(t instanceof lc))throw new S("model-selection-set-ranges-not-range",[this,e]);return this._ranges.every((e=>!e.isEqual(t)))}));(o.length!==this._ranges.length||n)&&(this._replaceAllRanges(o),this._lastRangeBackward=!!t,this.fire("change:range",{directChange:!0}))}setFocus(e,t){if(null===this.anchor)throw new S("model-selection-setfocus-no-ranges",[this,e]);const o=oc._createAt(e,t);if("same"==o.compareWith(this.focus))return;const n=this.anchor;this._ranges.length&&this._popRange(),"before"==o.compareWith(n)?(this._pushRange(new lc(o,n)),this._lastRangeBackward=!0):(this._pushRange(new lc(n,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()}*getSelectedBlocks(){const e=new WeakSet;for(const t of this.getRanges()){const o=_c(t.start,e);Ac(o,t)&&(yield o);const n=t.getWalker();for(const o of n){const i=o.item;"elementEnd"==o.type&&wc(i,e,t)?yield i:"elementStart"==o.type&&i.is("model:element")&&i.root.document.model.schema.isBlock(i)&&n.jumpTo(oc._createAt(i,"end"))}const i=_c(t.end,e);Cc(i,t)&&(yield i)}}containsEntireContent(e=this.anchor.root){const t=oc._createAt(e,0),o=oc._createAt(e,"end");return t.isTouching(this.getFirstPosition())&&o.isTouching(this.getLastPosition())}_pushRange(e){this._checkRange(e),this._ranges.push(new lc(e.start,e.end))}_checkRange(e){for(let t=0;t0;)this._popRange()}_popRange(){this._ranges.pop()}}function kc(e,t){return!t.has(e)&&(t.add(e),e.root.document.model.schema.isBlock(e)&&!!e.parent)}function wc(e,t,o){return kc(e,t)&&yc(e,o)}function _c(e,t){const o=e.parent.root.document.model.schema,n=e.parent.getAncestors({parentFirst:!0,includeSelf:!0});let i=!1;const r=n.find((e=>!i&&(i=o.isLimit(e),!i&&kc(e,t))));return n.forEach((e=>t.add(e))),r}function yc(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(lc._createOn(o),!0)}function Ac(e,t){return!!e&&(!(!t.isCollapsed&&!e.isEmpty)||!t.start.isTouching(oc._createAt(e,e.maxOffset))&&yc(e,t))}function Cc(e,t){return!!e&&(!(!t.isCollapsed&&!e.isEmpty)||!t.end.isTouching(oc._createAt(e,0))&&yc(e,t))}bc.prototype.is=function(e){return"selection"===e||"model:selection"===e};class vc extends(V(lc)){constructor(e,t){super(e,t),xc.call(this)}detach(){this.stopListening()}toRange(){return new lc(this.start,this.end)}static fromRange(e){return new vc(e.start,e.end)}}function xc(){this.listenTo(this.root.document.model,"applyOperation",((e,t)=>{const o=t[0];o.isDocumentOperation&&Ec.call(this,o)}),{priority:"low"})}function Ec(e){const t=this.getTransformedByOperation(e),o=lc._createFromRanges(t),n=!o.isEqual(this),i=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 r=null;if(n){"$graveyard"==o.root.rootName&&(r="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:r})}else i&&this.fire("change:content",this.toRange(),{deletionPosition:r})}vc.prototype.is=function(e){return"liveRange"===e||"model:liveRange"===e||"range"==e||"model:range"===e};class Dc extends fc{constructor(e,t){super(t),this._data=e||""}get offsetSize(){return this.data.length}get data(){return this._data}toJSON(){const e=super.toJSON();return e.data=this.data,e}_clone(){return new Dc(this.data,this.getAttributes())}static fromJSON(e){return new Dc(e.data,e.attributes)}}Dc.prototype.is=function(e){return"$text"===e||"model:$text"===e||"text"===e||"model:text"===e||"node"===e||"model:node"===e};const Bc="selection:";class Sc extends(V(Ql)){constructor(e){super(),this._selection=new Tc(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)}_setFocus(e,t){this._selection.setFocus(e,t)}_setTo(...e){this._selection.setTo(...e)}_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 Bc+e}static _isStoreAttributeKey(e){return e.startsWith(Bc)}}Sc.prototype.is=function(e){return"selection"===e||"model:selection"==e||"documentSelection"==e||"model:documentSelection"==e};class Tc extends bc{constructor(e){super(),this.markers=new tr({idProperty:"name"}),this._attributePriority=new Map,this._selectionRestorePosition=null,this._hasChangedRange=!1,this._overriddenGravityRegister=new Set,this._observedMarkers=new Set,this._model=e.model,this._document=e,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",(()=>{this._validateSelectionRanges(this.getRanges())})),this.listenTo(this._model.markers,"update",((e,t,o,n)=>{this._updateMarker(t,n)})),this.listenTo(this._document,"change",((e,t)=>{!function(e,t){const o=e.document.differ;for(const n of o.getChanges()){if("insert"!=n.type)continue;const o=n.position.parent;n.length===o.maxOffset&&e.enqueueChange(t,(e=>{const t=Array.from(o.getAttributeKeys()).filter((e=>e.startsWith(Bc)));for(const n of t)e.removeAttribute(n,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{if(this._hasChangedRange=!0,t.root==this._document.graveyard){this._selectionRestorePosition=n.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 n=t.getRange();for(const o of this.getRanges())n.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 n=!1;const i=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),n=!0):!o&&r&&(this.markers.remove(e),n=!0)}else r&&(this.markers.remove(e),n=!0);n&&this.fire("change:marker",{oldMarkers:i,directChange:!1})}_updateAttributes(e){const t=lr(this._getSurroundingAttributes()),o=lr(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 n=[];for(const[e,t]of this.getAttributes())o.has(e)&&o.get(e)===t||n.push(e);for(const[e]of o)this.hasAttribute(e)||n.push(e);n.length>0&&this.fire("change:attribute",{attributeKeys:n,directChange:!1})}_setAttribute(e,t,o=!0){const n=o?"normal":"low";if("low"==n&&"normal"==this._attributePriority.get(e))return!1;return super.getAttribute(e)!==t&&(this._attrs.set(e,t),this._attributePriority.set(e,n),!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,n]of e){this._setAttribute(o,n,!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(Bc)){const o=t.substr(10);yield[o,e.getAttribute(t)]}}_getSurroundingAttributes(){const e=this.getFirstPosition(),t=this._model.schema;if("$graveyard"==e.root.rootName)return null;let o=null;if(this.isCollapsed){const n=e.textNode?e.textNode:e.nodeBefore,i=e.textNode?e.textNode:e.nodeAfter;if(this.isGravityOverridden||(o=Ic(n,t)),o||(o=Ic(i,t)),!this.isGravityOverridden&&!o){let e=n;for(;e&&!o;)e=e.previousSibling,o=Ic(e,t)}if(!o){let e=i;for(;e&&!o;)e=e.nextSibling,o=Ic(e,t)}o||(o=this.getStoredAttributes())}else{const e=this.getFirstRange();for(const n of e){if(n.item.is("element")&&t.isObject(n.item)){o=Ic(n.item,t);break}if("text"==n.type){o=n.item.getAttributes();break}}}return o}_fixGraveyardSelection(e){const t=this._model.schema.getNearestSelectionRange(e);t&&this._pushRange(t)}}function Ic(e,t){if(!e)return null;if(e instanceof Xl||e instanceof Dc)return e.getAttributes();if(!t.isInline(e))return null;if(!t.isObject(e))return[];const o=[];for(const[n,i]of e.getAttributes())t.checkAttribute("$text",n)&&!1!==t.getAttributeProperties(n).copyFromObject&&o.push([n,i]);return o}class Pc{constructor(e){this._nodes=[],this._offsetToNode=[],e&&this._insertNodes(0,e)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._offsetToNode.length}getNode(e){return this._nodes[e]||null}getNodeAtOffset(e){return this._offsetToNode[e]||null}getNodeIndex(e){return e.index}getNodeStartOffset(e){return e.startOffset}indexToOffset(e){if(e==this._nodes.length)return this.maxOffset;const t=this._nodes[e];if(!t)throw new S("model-nodelist-index-out-of-bounds",this);return this.getNodeStartOffset(t)}offsetToIndex(e){if(e==this._offsetToNode.length)return this._nodes.length;const t=this._offsetToNode[e];if(!t)throw new S("model-nodelist-offset-out-of-bounds",this,{offset:e,nodeList:this});return this.getNodeIndex(t)}_insertNodes(e,t){const o=[];for(const e of t){if(!(e instanceof fc))throw new S("model-nodelist-insertnodes-not-node",this);o.push(e)}let n=this.indexToOffset(e);cr(this._nodes,o,e),cr(this._offsetToNode,function(e){const t=[];let o=0;for(const n of e)for(let e=0;enull!==e.index)),this._offsetToNode=this._offsetToNode.filter((e=>null!==e.index));let t=0;for(let e=0;ee.toJSON()))}}class Fc extends fc{constructor(e,t,o){super(t),this._children=new Pc,this.name=e,o&&this._insertChild(0,o)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}getChild(e){return this._children.getNode(e)}getChildAtOffset(e){return this._children.getNodeAtOffset(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.getChildAtOffset(o);return t}findAncestor(e,t={}){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?function(e){const t=[];for(const o of e)t.push(o._clone(!0));return t}(this._children):void 0;return new Fc(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 Dc(e)];ae(e)||(e=[e]);const t=[];for(const o of e)"string"==typeof o?t.push(new Dc(o)):o instanceof Xl?t.push(new Dc(o.data,o.getAttributes())):t.push(o);return t}(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}_removeChildrenArray(e){this._children._removeNodesArray(e);for(const t of e)t.parent=null}static fromJSON(e){let t;if(e.children){t=[];for(const o of e.children)o.name?t.push(Fc.fromJSON(o)):t.push(Dc.fromJSON(o))}return new Fc(e.name,e.attributes,t)}}Fc.prototype.is=function(e,t){return t?t===this.name&&("element"===e||"model:element"===e):"element"===e||"model:element"===e||"node"===e||"model:node"===e};class Rc{constructor(e){this._dispatchers=e}add(e){for(const t of this._dispatchers)e(t);return this}}class Mc extends Rc{elementToElement(e){return this.add(function(e){const t=Hc(e.model),o=jc(e.view,"container");t.attributes.length&&(t.children=!0);return n=>{n.on(`insert:${t.name}`,Nc(o,Gc(t)),{priority:e.converterPriority||"normal"}),(t.children||t.attributes.length)&&n.on("reduceChanges",Wc(t),{priority:"low"})}}(e))}elementToStructure(e){return this.add(function(e){const t=Hc(e.model),o=jc(e.view,"container");return t.children=!0,n=>{if(n._conversionApi.schema.checkChild(t.name,"$text"))throw new S("conversion-element-to-structure-disallowed-text",n,{elementName:t.name});var i,r;n.on(`insert:${t.name}`,(i=o,r=Gc(t),(e,t,o)=>{if(!r(t.item,o.consumable,{preflight:!0}))return;const n=new Map;o.writer._registerSlotFactory(function(e,t,o){return(n,i)=>{const r=n.createContainerElement("$slot");let s=null;if("children"===i)s=Array.from(e.getChildren());else{if("function"!=typeof i)throw new S("conversion-slot-mode-unknown",o.dispatcher,{modeOrFilter:i});s=Array.from(e.getChildren()).filter((e=>i(e)))}return t.set(r,s),r}}(t.item,n,o));const s=i(t.item,o,t);if(o.writer._clearSlotFactory(),!s)return;!function(e,t,o){const n=Array.from(t.values()).flat(),i=new Set(n);if(i.size!=n.length)throw new S("conversion-slot-filter-overlap",o.dispatcher,{element:e});if(i.size!=e.childCount)throw new S("conversion-slot-filter-incomplete",o.dispatcher,{element:e})}(t.item,n,o),r(t.item,o.consumable);const a=o.mapper.toViewPosition(t.range.start);o.mapper.bindElements(t.item,s),o.writer.insert(a,s),o.convertAttributes(t.item),function(e,t,o,n){o.mapper.on("modelToViewPosition",s,{priority:"highest"});let i=null,r=null;for([i,r]of t)Kc(e,r,o,n),o.writer.move(o.writer.createRangeIn(i),o.writer.createPositionBefore(i)),o.writer.remove(i);function s(e,t){const o=t.modelPosition.nodeAfter,n=r.indexOf(o);n<0||(t.viewPosition=t.mapper.findPositionIn(i,n))}o.mapper.off("modelToViewPosition",s)}(s,n,o,{reconversion:t.reconversion})}),{priority:e.converterPriority||"normal"}),n.on("reduceChanges",Wc(t),{priority:"low"})}}(e))}attributeToElement(e){return this.add(function(e){e=Jl(e);let t=e.model;"string"==typeof t&&(t={key:t});let o=`attribute:${t.key}`;t.name&&(o+=":"+t.name);if(t.values)for(const o of t.values)e.view[o]=jc(e.view[o],"attribute");else e.view=jc(e.view,"attribute");const n=qc(e);return t=>{t.on(o,Oc(n),{priority:e.converterPriority||"normal"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=Jl(e);let t=e.model;"string"==typeof t&&(t={key:t});let o=`attribute:${t.key}`;t.name&&(o+=":"+t.name);if(t.values)for(const o of t.values)e.view[o]=$c(e.view[o]);else e.view=$c(e.view);const n=qc(e);return t=>{var i;t.on(o,(i=n,(e,t,o)=>{if(!o.consumable.test(t.item,e.name))return;const n=i(t.attributeOldValue,o,t),r=i(t.attributeNewValue,o,t);if(!n&&!r)return;o.consumable.consume(t.item,e.name);const s=o.mapper.toViewElement(t.item),a=o.writer;if(!s)throw new S("conversion-attribute-to-attribute-on-text",o.dispatcher,t);if(null!==t.attributeOldValue&&n){let e=n.value;"style"==n.key&&(e="string"==typeof n.value?new Ts(a.document.stylesProcessor).setTo(n.value).getStylesEntries().map((([e])=>e)):Object.keys(n.value)),a.removeAttribute(n.key,e,s)}if(null!==t.attributeNewValue&&r){let e=r.value;"style"==r.key&&"string"==typeof r.value&&(e=Object.fromEntries(new Ts(a.document.stylesProcessor).setTo(r.value).getStylesEntries())),a.setAttribute(r.key,e,!1,s)}}),{priority:e.converterPriority||"normal"})}}(e))}markerToElement(e){return this.add(function(e){const t=jc(e.view,"ui");return o=>{o.on(`addMarker:${e.model}`,Vc(t),{priority:e.converterPriority||"normal"}),o.on(`removeMarker:${e.model}`,((e,t,o)=>{const n=o.mapper.markerNameToElements(t.markerName);if(n){for(const e of n)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,n)=>{if(!t.item)return;if(!(t.item instanceof bc||t.item instanceof Sc||t.item.is("$textProxy")))return;const i=Uc(o,t,n);if(!i)return;if(!n.consumable.consume(t.item,e.name))return;const r=n.writer,s=zc(r,i),a=r.document.selection;if(t.item instanceof bc||t.item instanceof Sc)r.wrap(a.getFirstRange(),s);else{const e=n.mapper.toViewRange(t.range),o=r.wrap(e,s);for(const e of o.getItems())if(e.is("attributeElement")&&e.isSimilar(s)){n.mapper.bindElementToMarker(e,t.markerName);break}}}),{priority:e.converterPriority||"normal"}),t.on(`addMarker:${e.model}`,function(e){return(t,o,n)=>{if(!o.item)return;if(!(o.item instanceof Fc))return;const i=Uc(e,o,n);if(!i)return;if(!n.consumable.test(o.item,t.name))return;const r=n.mapper.toViewElement(o.item);if(r&&r.getCustomProperty("addHighlight")){n.consumable.consume(o.item,t.name);for(const e of lc._createIn(o.item))n.consumable.consume(e.item,t.name);r.getCustomProperty("addHighlight")(r,i,n.writer),n.mapper.bindElementToMarker(r,o.markerName)}}}(e.view),{priority:e.converterPriority||"normal"}),t.on(`removeMarker:${e.model}`,function(e){return(t,o,n)=>{if(o.markerRange.isCollapsed)return;const i=Uc(e,o,n);if(!i)return;const r=zc(n.writer,i),s=n.mapper.markerNameToElements(o.markerName);if(s){for(const e of s)if(n.mapper.unbindElementFromMarkerName(e,o.markerName),e.is("attributeElement"))n.writer.unwrap(n.writer.createRangeOn(e),r);else{e.getCustomProperty("removeHighlight")(e,i.id,n.writer)}n.writer.clearClonedElementsGroup(o.markerName),t.stop()}}}(e.view),{priority:e.converterPriority||"normal"})}}(e))}markerToData(e){return this.add(function(e){e=Jl(e);const t=e.model;let o=e.view;o||(o=o=>({group:t,name:o.substr(e.model.length+1)}));return n=>{var i;n.on(`addMarker:${t}`,(i=o,(e,t,o)=>{const n=i(t.markerName,o);if(!n)return;const r=t.markerRange;o.consumable.consume(r,e.name)&&(Lc(r,!1,o,t,n),Lc(r,!0,o,t,n),e.stop())}),{priority:e.converterPriority||"normal"}),n.on(`removeMarker:${t}`,function(e){return(t,o,n)=>{const i=e(o.markerName,n);if(!i)return;const r=n.mapper.markerNameToElements(o.markerName);if(r){for(const e of r)n.mapper.unbindElementFromMarkerName(e,o.markerName),e.is("containerElement")?(s(`data-${i.group}-start-before`,e),s(`data-${i.group}-start-after`,e),s(`data-${i.group}-end-before`,e),s(`data-${i.group}-end-after`,e)):n.writer.clear(n.writer.createRangeOn(e),e);n.writer.clearClonedElementsGroup(o.markerName),t.stop()}function s(e,t){if(t.hasAttribute(e)){const o=new Set(t.getAttribute(e).split(","));o.delete(i.name),0==o.size?n.writer.removeAttribute(e,t):n.writer.setAttribute(e,Array.from(o).join(","),t)}}}}(o),{priority:e.converterPriority||"normal"})}}(e))}}function zc(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 Oc(e){return(t,o,n)=>{if(!n.consumable.test(o.item,t.name))return;const i=e(o.attributeOldValue,n,o),r=e(o.attributeNewValue,n,o);if(!i&&!r)return;n.consumable.consume(o.item,t.name);const s=n.writer,a=s.document.selection;if(o.item instanceof bc||o.item instanceof Sc)s.wrap(a.getFirstRange(),r);else{let e=n.mapper.toViewRange(o.range);null!==o.attributeOldValue&&i&&(e=s.unwrap(e,i)),null!==o.attributeNewValue&&r&&s.wrap(e,r)}}}function Nc(e,t=Jc){return(o,n,i)=>{if(!t(n.item,i.consumable,{preflight:!0}))return;const r=e(n.item,i,n);if(!r)return;t(n.item,i.consumable);const s=i.mapper.toViewPosition(n.range.start);i.mapper.bindElements(n.item,r),i.writer.insert(s,r),i.convertAttributes(n.item),Kc(r,n.item.getChildren(),i,{reconversion:n.reconversion})}}function Vc(e){return(t,o,n)=>{o.isOpening=!0;const i=e(o,n);o.isOpening=!1;const r=e(o,n);if(!i||!r)return;const s=o.markerRange;if(s.isCollapsed&&!n.consumable.consume(s,t.name))return;for(const e of s)if(!n.consumable.consume(e.item,t.name))return;const a=n.mapper,l=n.writer;l.insert(a.toViewPosition(s.start),i),n.mapper.bindElementToMarker(i,o.markerName),s.isCollapsed||(l.insert(a.toViewPosition(s.end),r),n.mapper.bindElementToMarker(r,o.markerName)),t.stop()}}function Lc(e,t,o,n,i){const r=t?e.start:e.end,s=r.nodeAfter&&r.nodeAfter.is("element")?r.nodeAfter:null,a=r.nodeBefore&&r.nodeBefore.is("element")?r.nodeBefore:null;if(s||a){let e,r;t&&s||!t&&!a?(e=s,r=!0):(e=a,r=!1);const l=o.mapper.toViewElement(e);if(l)return void function(e,t,o,n,i,r){const s=`data-${r.group}-${t?"start":"end"}-${o?"before":"after"}`,a=e.hasAttribute(s)?e.getAttribute(s).split(","):[];a.unshift(r.name),n.writer.setAttribute(s,a.join(","),e),n.mapper.bindElementToMarker(e,i.markerName)}(l,t,r,o,n,i)}!function(e,t,o,n,i){const r=`${i.group}-${t?"start":"end"}`,s=i.name?{name:i.name}:null,a=o.writer.createUIElement(r,s);o.writer.insert(e,a),o.mapper.bindElementToMarker(a,n.markerName)}(o.mapper.toViewPosition(r),t,o,n,i)}function Hc(e){return"string"==typeof e&&(e={name:e}),{name:e.name,attributes:e.attributes?Si(e.attributes):[],children:!!e.children}}function jc(e,t){return"function"==typeof e?e:(o,n)=>function(e,t,o){"string"==typeof e&&(e={name:e});let n;const i=t.writer,r=Object.assign({},e.attributes);if("container"==o)n=i.createContainerElement(e.name,r);else if("attribute"==o){const t={priority:e.priority||ia.DEFAULT_PRIORITY};n=i.createAttributeElement(e.name,r,t)}else n=i.createUIElement(e.name,r);if(e.styles){const t=Object.keys(e.styles);for(const o of t)i.setStyle(o,e.styles[o],n)}if(e.classes){const t=e.classes;if("string"==typeof t)i.addClass(t,n);else for(const e of t)i.addClass(e,n)}return n}(e,n,t)}function qc(e){return e.model.values?(t,o,n)=>{const i=e.view[t];return i?i(t,o,n):null}:e.view}function $c(e){return"string"==typeof e?t=>({key:e,value:t}):"object"==typeof e?e.value?()=>e:t=>({key:e.key,value:t}):e}function Uc(e,t,o){const n="function"==typeof e?e(t,o):e;return n?(n.priority||(n.priority=10),n.id||(n.id=t.markerName),n):null}function Wc(e){const t=function(e){return(t,o)=>{if(!t.is("element",e.name))return!1;if("attribute"==o.type){if(e.attributes.includes(o.attributeKey))return!0}else if(e.children)return!0;return!1}}(e);return(e,o)=>{const n=[];o.reconvertedElements||(o.reconvertedElements=new Set);for(const e of o.changes){const i="attribute"==e.type?e.range.start.nodeAfter:e.position.parent;if(i&&t(i,e)){if(!o.reconvertedElements.has(i)){o.reconvertedElements.add(i);const e=oc._createBefore(i);let t=n.length;for(let o=n.length-1;o>=0;o--){const i=n[o],r=("attribute"==i.type?i.range.start:i.position).compareWith(e);if("before"==r||"remove"==i.type&&"same"==r)break;t=o}n.splice(t,0,{type:"remove",name:i.name,position:e,length:1},{type:"reinsert",name:i.name,position:e,length:1})}}else n.push(e)}o.changes=n}}function Gc(e){return(t,o,n={})=>{const i=["insert"];for(const o of e.attributes)t.hasAttribute(o)&&i.push(`attribute:${o}`);return!!i.every((e=>o.test(t,e)))&&(n.preflight||i.forEach((e=>o.consume(t,e))),!0)}}function Kc(e,t,o,n){for(const i of t)Zc(e.root,i,o,n)||o.convertItem(i)}function Zc(e,t,o,n){const{writer:i,mapper:r}=o;if(!n.reconversion)return!1;const s=r.toViewElement(t);return!(!s||s.root==e)&&(!!o.canReuseView(s)&&(i.move(i.createRangeOn(s),r.toViewPosition(oc._createBefore(t))),!0))}function Jc(e,t,{preflight:o}={}){return o?t.test(e,"insert"):t.consume(e,"insert")}function Yc(e){const{schema:t,document:o}=e.model;for(const n of o.getRoots())if(n.isEmpty&&!t.checkChild(n,"$text")&&t.checkChild(n,"paragraph"))return e.insertElement("paragraph",n),!0;return!1}function Qc(e,t,o){const n=o.createContext(e);return!!o.checkChild(n,"paragraph")&&!!o.checkChild(n.push("paragraph"),t)}function Xc(e,t){const o=t.createElement("paragraph");return t.insert(o,e),t.createPositionAt(o,0)}class ed extends Rc{elementToElement(e){return this.add(td(e))}elementToAttribute(e){return this.add(function(e){e=Jl(e),id(e);const t=rd(e,!1),o=od(e.view),n=o?`element:${o}`:"element";return o=>{o.on(n,t,{priority:e.converterPriority||"low"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=Jl(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,o=void 0===e.view.value?/[\s\S]*/:e.view.value;let n;if("class"==t||"style"==t){const e="class"==t?"classes":"styles";n={[e]:o}}else n={attributes:{[t]:o}};e.view.name&&(n.name=e.view.name);return e.view=n,t}(e));id(e,t);const o=rd(e,!0);return t=>{t.on("element",o,{priority:e.converterPriority||"low"})}}(e))}elementToMarker(e){return this.add(function(e){const t=function(e){return(t,o)=>{const n="string"==typeof e?e:e(t,o);return o.writer.createElement("$marker",{"data-name":n})}}(e.model);return td({...e,model:t})}(e))}dataToMarker(e){return this.add(function(e){e=Jl(e),e.model||(e.model=t=>t?e.view+":"+t:e.view);const t={view:e.view,model:e.model},o=nd(sd(t,"start")),n=nd(sd(t,"end"));return i=>{i.on(`element:${e.view}-start`,o,{priority:e.converterPriority||"normal"}),i.on(`element:${e.view}-end`,n,{priority:e.converterPriority||"normal"});const r=D.low,s=D.highest,a=D.get(e.converterPriority)/s;i.on("element",function(e){return(t,o,n)=>{const i=`data-${e.view}`;function r(t,i){for(const r of i){const i=e.model(r,n),s=n.writer.createElement("$marker",{"data-name":i});n.writer.insert(s,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]}}(n.consumable.test(o.viewItem,{attributes:i+"-end-after"})||n.consumable.test(o.viewItem,{attributes:i+"-start-after"})||n.consumable.test(o.viewItem,{attributes:i+"-end-before"})||n.consumable.test(o.viewItem,{attributes:i+"-start-before"}))&&(o.modelRange||Object.assign(o,n.convertChildren(o.viewItem,o.modelCursor)),n.consumable.consume(o.viewItem,{attributes:i+"-end-after"})&&r(o.modelRange.end,o.viewItem.getAttribute(i+"-end-after").split(",")),n.consumable.consume(o.viewItem,{attributes:i+"-start-after"})&&r(o.modelRange.end,o.viewItem.getAttribute(i+"-start-after").split(",")),n.consumable.consume(o.viewItem,{attributes:i+"-end-before"})&&r(o.modelRange.start,o.viewItem.getAttribute(i+"-end-before").split(",")),n.consumable.consume(o.viewItem,{attributes:i+"-start-before"})&&r(o.modelRange.start,o.viewItem.getAttribute(i+"-start-before").split(",")))}}(t),{priority:r+a})}}(e))}}function td(e){const t=nd(e=Jl(e)),o=od(e.view),n=o?`element:${o}`:"element";return o=>{o.on(n,t,{priority:e.converterPriority||"normal"})}}function od(e){return"string"==typeof e?e:"object"==typeof e&&"string"==typeof e.name?e.name:null}function nd(e){const t=new As(e.view);return(o,n,i)=>{const r=t.match(n.viewItem);if(!r)return;const s=r.match;if(s.name=!0,!i.consumable.test(n.viewItem,s))return;const a=function(e,t,o){return e instanceof Function?e(t,o):o.writer.createElement(e)}(e.model,n.viewItem,i);a&&i.safeInsert(a,n.modelCursor)&&(i.consumable.consume(n.viewItem,s),i.convertChildren(n.viewItem,a),i.updateConversionResult(a,n))}}function id(e,t=null){const o=null===t||(e=>e.getAttribute(t)),n="object"!=typeof e.model?e.model:e.model.key,i="object"!=typeof e.model||void 0===e.model.value?o:e.model.value;e.model={key:n,value:i}}function rd(e,t){const o=new As(e.view);return(n,i,r)=>{if(!i.modelRange&&t)return;const s=o.match(i.viewItem);if(!s)return;if(!function(e,t){const o="function"==typeof e?e(t):e;if("object"==typeof o&&!od(o))return!1;return!o.classes&&!o.attributes&&!o.styles}(e.view,i.viewItem)?delete s.match.name:s.match.name=!0,!r.consumable.test(i.viewItem,s.match))return;const a=e.model.key,l="function"==typeof e.model.value?e.model.value(i.viewItem,r):e.model.value;if(null===l)return;i.modelRange||Object.assign(i,r.convertChildren(i.viewItem,i.modelCursor));const c=function(e,t,o,n){let i=!1;for(const r of Array.from(e.getItems({shallow:o})))n.schema.checkAttribute(r,t.key)&&(i=!0,r.hasAttribute(t.key)||n.writer.setAttribute(t.key,t.value,r));return i}(i.modelRange,{key:a,value:l},t,r);c&&(r.consumable.test(i.viewItem,{name:!0})&&(s.match.name=!0),r.consumable.consume(i.viewItem,s.match))}}function sd(e,t){return{view:`${e.view}-${t}`,model:(t,o)=>{const n=t.getAttribute("name"),i=e.model(n,o);return o.writer.createElement("$marker",{"data-name":i})}}}function ad(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.selection,n=t.schema,i=[];let r=!1;for(const e of o.getRanges()){const t=ld(e,n);t&&!t.isEqual(e)?(i.push(t),r=!0):i.push(e)}r&&e.setSelection(function(e){const t=[...e],o=new Set;let n=1;for(;n!o.has(t)))}(i),{backward:o.isBackward});return!1}(t,e)))}function ld(e,t){return e.isCollapsed?function(e,t){const o=e.start,n=t.getNearestSelectionRange(o);if(!n){const e=o.getAncestors().reverse().find((e=>t.isObject(e)));return e?lc._createOn(e):null}if(!n.isCollapsed)return n;const i=n.start;if(o.isEqual(i))return null;return new lc(i)}(e,t):function(e,t){const{start:o,end:n}=e,i=t.checkChild(o,"$text"),r=t.checkChild(n,"$text"),s=t.getLimitElement(o),a=t.getLimitElement(n);if(s===a){if(i&&r)return null;if(function(e,t,o){const n=e.nodeAfter&&!o.isLimit(e.nodeAfter)||o.checkChild(e,"$text"),i=t.nodeBefore&&!o.isLimit(t.nodeBefore)||o.checkChild(t,"$text");return n||i}(o,n,t)){const e=o.nodeAfter&&t.isSelectable(o.nodeAfter)?null:t.getNearestSelectionRange(o,"forward"),i=n.nodeBefore&&t.isSelectable(n.nodeBefore)?null:t.getNearestSelectionRange(n,"backward"),r=e?e.start:o,s=i?i.end:n;return new lc(r,s)}}const l=s&&!s.is("rootElement"),c=a&&!a.is("rootElement");if(l||c){const e=o.nodeAfter&&n.nodeBefore&&o.nodeAfter.parent===n.nodeBefore.parent,i=l&&(!e||!dd(o.nodeAfter,t)),r=c&&(!e||!dd(n.nodeBefore,t));let d=o,u=n;return i&&(d=oc._createBefore(cd(s,t))),r&&(u=oc._createAfter(cd(a,t))),new lc(d,u)}return null}(e,t)}function cd(e,t){let o=e,n=o;for(;t.isLimit(n)&&n.parent;)o=n,n=n.parent;return o}function dd(e,t){return e&&t.isSelectable(e)}class ud extends(X()){constructor(e,t){super(),this.model=e,this.view=new Yl(t),this.mapper=new cc,this.downcastDispatcher=new pc({mapper:this.mapper,schema:e.schema});const o=this.model.document,n=o.selection,i=this.model.markers;var r,s,a;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,i,e),this.downcastDispatcher.convertSelection(n,i,e)}))}),{priority:"low"}),this.listenTo(this.view.document,"selectionChange",function(e,t){return(o,n)=>{const i=n.newSelection,r=[];for(const e of i.getRanges())r.push(t.toModelRange(e));const s=e.createSelection(r,{backward:i.isBackward});s.isEqual(e.document.selection)||e.change((e=>{e.setSelection(s)}))}}(this.model,this.mapper)),this.listenTo(this.view.document,"beforeinput",(r=this.mapper,s=this.model.schema,a=this.view,(e,t)=>{if(!a.document.isComposing||c.isAndroid)for(let e=0;e{if(!o.consumable.consume(t.item,e.name))return;const n=o.writer,i=o.mapper.toViewPosition(t.range.start),r=n.createText(t.item.data);n.insert(i,r)}),{priority:"lowest"}),this.downcastDispatcher.on("insert",((e,t,o)=>{o.convertAttributes(t.item),t.reconversion||!t.item.is("element")||t.item.isEmpty||o.convertChildren(t.item)}),{priority:"lowest"}),this.downcastDispatcher.on("remove",((e,t,o)=>{const n=o.mapper.toViewPosition(t.position),i=t.position.getShiftedBy(t.length),r=o.mapper.toViewPosition(i,{isPhantom:!0}),s=o.writer.createRange(n,r),a=o.writer.remove(s.getTrimmed());for(const e of o.writer.createRangeIn(a).getItems())o.mapper.unbindViewElement(e,{defer:!0})}),{priority:"low"}),this.downcastDispatcher.on("cleanSelection",((e,t,o)=>{const n=o.writer,i=n.document.selection;for(const e of i.getRanges())e.isCollapsed&&e.end.parent.isAttached()&&o.writer.mergeAttributes(e.start);n.setSelection(null)})),this.downcastDispatcher.on("selection",((e,t,o)=>{const n=t.selection;if(n.isCollapsed)return;if(!o.consumable.consume(n,"selection"))return;const i=[];for(const e of n.getRanges())i.push(o.mapper.toViewRange(e));o.writer.setSelection(i,{backward:n.isBackward})}),{priority:"low"}),this.downcastDispatcher.on("selection",((e,t,o)=>{const n=t.selection;if(!n.isCollapsed)return;if(!o.consumable.consume(n,"selection"))return;const i=o.writer,r=n.getFirstPosition(),s=o.mapper.toViewPosition(r),a=i.breakAttributes(s);i.setSelection(a)}),{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using((e=>{if("$graveyard"==e.rootName)return null;const t=new js(this.view.document,e.name);return t.rootName=e.rootName,this.mapper.bindElements(e,t),t}))}destroy(){this.view.destroy(),this.stopListening()}reconvertMarker(e){const t="string"==typeof e?e:e.name,o=this.model.markers.get(t);if(!o)throw new S("editingcontroller-reconvertmarker-marker-not-exist",this,{markerName:t});this.model.change((()=>{this.model.markers._refresh(o)}))}reconvertItem(e){this.model.change((()=>{this.model.document.differ._refreshItem(e)}))}}class hd extends(X()){constructor(){super(),this._sourceDefinitions={},this._attributeProperties=Object.create(null),this._customChildChecks=new Map,this._customAttributeChecks=new Map,this._genericCheckSymbol=Symbol("$generic"),this.decorate("checkChild"),this.decorate("checkAttribute"),this.on("checkAttribute",((e,t)=>{t[0]=new pd(t[0])}),{priority:"highest"}),this.on("checkChild",((e,t)=>{t[0]=new pd(t[0]),t[1]=this.getDefinition(t[1])}),{priority:"highest"})}register(e,t){if(this._sourceDefinitions[e])throw new S("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 S("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:"is"in e&&(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(e,t)}checkAttribute(e,t){const o=this.getDefinition(e.last);if(!o)return!1;const n=this._evaluateAttributeChecks(e,t);return void 0!==n?n:o.allowAttributes.includes(t)}checkMerge(e,t){if(e instanceof oc){const t=e.nodeBefore,o=e.nodeAfter;if(!(t instanceof Fc))throw new S("schema-check-merge-no-element-before",this);if(!(o instanceof Fc))throw new S("schema-check-merge-no-element-after",this);return this.checkMerge(t,o)}if(this.isLimit(e)||this.isLimit(t))return!1;for(const o of t.getChildren())if(!this.checkChild(e,o))return!1;return!0}addChildCheck(e,t){const o=void 0!==t?t:this._genericCheckSymbol,n=this._customChildChecks.get(o)||[];n.push(e),this._customChildChecks.set(o,n)}addAttributeCheck(e,t){const o=void 0!==t?t:this._genericCheckSymbol,n=this._customAttributeChecks.get(o)||[];n.push(e),this._customAttributeChecks.set(o,n)}setAttributeProperties(e,t){this._attributeProperties[e]=Object.assign(this.getAttributeProperties(e),t)}getAttributeProperties(e){return this._attributeProperties[e]||Object.create(null)}getLimitElement(e){let t;if(e instanceof oc)t=e.parent;else{t=(e instanceof lc?[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 Dc("",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("$graveyard"==e.root.rootName)return null;if(this.checkChild(e,"$text"))return new lc(e);let o,n;const i=e.getAncestors().reverse().find((e=>this.isLimit(e)))||e.root;"both"!=t&&"backward"!=t||(o=new ec({boundaries:lc._createIn(i),startPosition:e,direction:"backward"})),"both"!=t&&"forward"!=t||(n=new ec({boundaries:lc._createIn(i),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,n)){const t=e.walker==o?"elementEnd":"elementStart",n=e.value;if(n.type==t&&this.isObject(n.item))return lc._createOn(n.item);if(this.checkChild(n.nextPosition,"$text"))return new lc(n.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}setAllowedAttributes(e,t,o){const n=o.model;for(const[i,r]of Object.entries(t))n.schema.checkAttribute(e,i)&&o.setAttribute(i,r,e)}removeDisallowedAttributes(e,t){for(const o of e)if(o.is("$text"))Ed(this,o,t);else{const e=lc._createIn(o).getPositions();for(const o of e){Ed(this,o.nodeBefore||o.parent,t)}}}getAttributesWithProperty(e,t,o){const n={};for(const[i,r]of e.getAttributes()){const e=this.getAttributeProperties(i);void 0!==e[t]&&(void 0!==o&&o!==e[t]||(n[i]=r))}return n}createContext(e){return new pd(e)}_clearCache(){this._compiledDefinitions=null}_compile(){const e={},t=this._sourceDefinitions,o=Object.keys(t);for(const n of o)e[n]=md(t[n],n);const n=Object.values(e);for(const t of n)gd(e,t),fd(e,t),bd(e,t),kd(e,t);for(const t of n)wd(e,t);for(const t of n)_d(e,t);for(const t of n)yd(e,t);for(const t of n)Ad(e,t);for(const t of n)Cd(e,t);this._compiledDefinitions=function(e){const t={};for(const o of Object.values(e))t[o.name]={name:o.name,isBlock:!!o.isBlock,isContent:!!o.isContent,isInline:!!o.isInline,isLimit:!!o.isLimit,isObject:!!o.isObject,isSelectable:!!o.isSelectable,allowIn:Array.from(o.allowIn).filter((t=>!!e[t])),allowChildren:Array.from(o.allowChildren).filter((t=>!!e[t])),allowAttributes:Array.from(o.allowAttributes)};return t}(e)}_checkContextMatch(e,t){const o=e.last;let n=this._evaluateChildChecks(e,t);if(n=void 0!==n?n:t.allowIn.includes(o.name),!n)return!1;const i=this.getDefinition(o),r=e.trimLast();return!!i&&(0==r.length||this._checkContextMatch(r,i))}_evaluateChildChecks(e,t){const o=this._customChildChecks.get(this._genericCheckSymbol)||[],n=this._customChildChecks.get(t.name)||[];for(const i of[...o,...n]){const o=i(e,t);if(void 0!==o)return o}}_evaluateAttributeChecks(e,t){const o=this._customAttributeChecks.get(this._genericCheckSymbol)||[],n=this._customAttributeChecks.get(t)||[];for(const i of[...o,...n]){const o=i(e,t);if(void 0!==o)return o}}*_getValidRangesForRange(e,t){let o=e.start,n=e.start;for(const i of e.getItems({shallow:!0}))i.is("element")&&(yield*this._getValidRangesForRange(lc._createIn(i),t)),this.checkAttribute(i,t)||(o.isEqual(n)||(yield new lc(o,n)),o=oc._createAfter(i)),n=oc._createAfter(i);o.isEqual(n)||(yield new lc(o,n))}findOptimalInsertionRange(e,t){const o=e.getSelectedElement();if(o&&this.isObject(o)&&!this.isInline(o))return"before"==t||"after"==t?new lc(oc._createAt(o,t)):lc._createOn(o);const n=or(e.getSelectedBlocks());if(!n)return new lc(e.focus);if(n.isEmpty)return new lc(oc._createAt(n,0));const i=oc._createAfter(n);return e.focus.isTouching(i)?new lc(i):new lc(oc._createBefore(n))}}class pd{constructor(e){if(e instanceof pd)return e;let t;t="string"==typeof e?[e]:Array.isArray(e)?e:e.getAncestors({includeSelf:!0}),this._items=t.map(xd)}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 pd([e]);return t._items=[...this._items,...t._items],t}trimLast(){const e=new pd([]);return e._items=this._items.slice(0,-1),e}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 md(e,t){const o={name:t,allowIn:new Set,allowChildren:new Set,disallowIn:new Set,disallowChildren:new Set,allowContentOf:new Set,allowWhere:new Set,allowAttributes:new Set,disallowAttributes:new Set,allowAttributesOf:new Set,inheritTypesFrom:new Set};return function(e,t){for(const o of e){const e=Object.keys(o).filter((e=>e.startsWith("is")));for(const n of e)t[n]=!!o[n]}}(e,o),vd(e,o,"allowIn"),vd(e,o,"allowChildren"),vd(e,o,"disallowIn"),vd(e,o,"disallowChildren"),vd(e,o,"allowContentOf"),vd(e,o,"allowWhere"),vd(e,o,"allowAttributes"),vd(e,o,"disallowAttributes"),vd(e,o,"allowAttributesOf"),vd(e,o,"inheritTypesFrom"),function(e,t){for(const o of e){const e=o.inheritAllFrom;e&&(t.allowContentOf.add(e),t.allowWhere.add(e),t.allowAttributesOf.add(e),t.inheritTypesFrom.add(e))}}(e,o),o}function gd(e,t){for(const o of t.allowIn){const n=e[o];n?n.allowChildren.add(t.name):t.allowIn.delete(o)}}function fd(e,t){for(const o of t.allowChildren){const n=e[o];n?n.allowIn.add(t.name):t.allowChildren.delete(o)}}function bd(e,t){for(const o of t.disallowIn){const n=e[o];n?n.disallowChildren.add(t.name):t.disallowIn.delete(o)}}function kd(e,t){for(const o of t.disallowChildren){const n=e[o];n?n.disallowIn.add(t.name):t.disallowChildren.delete(o)}}function wd(e,t){for(const e of t.disallowChildren)t.allowChildren.delete(e);for(const e of t.disallowIn)t.allowIn.delete(e);for(const e of t.disallowAttributes)t.allowAttributes.delete(e)}function _d(e,t){for(const o of t.allowContentOf){const n=e[o];n&&(n.disallowChildren.forEach((o=>{t.allowChildren.has(o)||(t.disallowChildren.add(o),e[o].disallowIn.add(t.name))})),n.allowChildren.forEach((o=>{t.disallowChildren.has(o)||(t.allowChildren.add(o),e[o].allowIn.add(t.name))})))}}function yd(e,t){for(const o of t.allowWhere){const n=e[o];n&&(n.disallowIn.forEach((o=>{t.allowIn.has(o)||(t.disallowIn.add(o),e[o].disallowChildren.add(t.name))})),n.allowIn.forEach((o=>{t.disallowIn.has(o)||(t.allowIn.add(o),e[o].allowChildren.add(t.name))})))}}function Ad(e,t){for(const o of t.allowAttributesOf){const n=e[o];if(!n)return;n.allowAttributes.forEach((e=>{t.disallowAttributes.has(e)||t.allowAttributes.add(e)}))}}function Cd(e,t){for(const o of t.inheritTypesFrom){const n=e[o];if(n){const e=Object.keys(n).filter((e=>e.startsWith("is")));for(const o of e)o in t||(t[o]=n[o])}}}function vd(e,t,o){for(const n of e){let e=n[o];"string"==typeof e&&(e=[e]),Array.isArray(e)&&e.forEach((e=>t[o].add(e)))}}function xd(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 Ed(e,t,o){for(const n of t.getAttributeKeys())e.checkAttribute(t,n)||o.removeAttribute(n,t)}class Dd extends(V()){constructor(e){super(),this._splitParts=new Map,this._cursorParents=new Map,this._modelCursor=null,this._emptyElementsToKeep=new Set,this.conversionApi={...e,consumable:null,writer:null,store:null,convertItem:(e,t)=>this._convertItem(e,t),convertChildren:(e,t)=>this._convertChildren(e,t),safeInsert:(e,t)=>this._safeInsert(e,t),updateConversionResult:(e,t)=>this._updateConversionResult(e,t),splitToAllowedParent:(e,t)=>this._splitToAllowedParent(e,t),getSplitParts:e=>this._getSplitParts(e),keepEmptyElement:e=>this._keepEmptyElement(e)}}convert(e,t,o=["$root"]){this.fire("viewCleanup",e),this._modelCursor=function(e,t){let o;for(const n of new pd(e)){const e={};for(const t of n.getAttributeKeys())e[t]=n.getAttribute(t);const i=t.createElement(n.name,e);o&&t.insert(i,o),o=oc._createAt(i,0)}return o}(o,t),this.conversionApi.writer=t,this.conversionApi.consumable=ks.createFrom(e),this.conversionApi.store={};const{modelRange:n}=this._convertItem(e,this._modelCursor),i=t.createDocumentFragment();if(n){this._removeEmptyElements();const e=this._modelCursor.parent,o=e._removeChildren(0,e.childCount);i._insertChild(0,o),i.markers=function(e,t){const o=new Set,n=new Map,i=lc._createIn(e).getItems();for(const e of i)e.is("element","$marker")&&o.add(e);for(const e of o){const o=e.getAttribute("data-name"),i=t.createPositionBefore(e);n.has(o)?n.get(o).end=i.clone():n.set(o,new lc(i.clone())),t.remove(e)}return n}(i,t)}return this._modelCursor=null,this._splitParts.clear(),this._cursorParents.clear(),this._emptyElementsToKeep.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,i}_convertItem(e,t){const o={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 lc))throw new S("view-conversion-dispatcher-incorrect-result",this);return{modelRange:o.modelRange,modelCursor:o.modelCursor}}_convertChildren(e,t){let o=t.is("position")?t:oc._createAt(t,0);const n=new lc(o);for(const t of Array.from(e.getChildren())){const e=this._convertItem(t,o);e.modelRange instanceof lc&&(n.end=e.modelRange.end,o=e.modelCursor)}return{modelRange:n,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),n=this.conversionApi.writer;t.modelRange||(t.modelRange=n.createRange(n.createPositionBefore(e),n.createPositionAfter(o[o.length-1])));const i=this._cursorParents.get(e);t.modelCursor=i?n.createPositionAt(i,0):t.modelRange.end}_splitToAllowedParent(e,t){const{schema:o,writer:n}=this.conversionApi;let i=o.findAllowedParent(t,e);if(i){if(i===t.parent)return{position:t};this._modelCursor.parent.getAncestors().includes(i)&&(i=null)}if(!i)return Qc(t,e,o)?{position:Xc(t,n)}:null;const r=this.conversionApi.writer.split(t,i),s=[];for(const e of r.range.getWalker())if("elementEnd"==e.type)s.push(e.item);else{const t=s.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}_keepEmptyElement(e){this._emptyElementsToKeep.add(e)}_removeEmptyElements(){const e=new Map;for(const t of this._splitParts.keys())if(t.isEmpty&&!this._emptyElementsToKeep.has(t)){const o=e.get(t.parent)||[];o.push(t),this._splitParts.delete(t),e.set(t.parent,o)}for(const[t,o]of e)t._removeChildrenArray(o);e.size&&this._removeEmptyElements()}}class Bd{getHtml(e){const t=s.document.implementation.createHTMLDocument("").createElement("div");return t.appendChild(e),t.innerHTML}}class Sd{constructor(e){this.skipComments=!0,this.domParser=new DOMParser,this.domConverter=new Ua(e,{renderingMode:"data"}),this.htmlWriter=new Bd}toData(e){const t=this.domConverter.viewToDom(e);return this.htmlWriter.getHtml(t)}toView(e){const t=this._toDom(e);return this.domConverter.domToView(t,{skipComments:this.skipComments})}registerRawContentMatcher(e){this.domConverter.registerRawContentMatcher(e)}useFillerType(e){this.domConverter.blockFillerMode="marked"==e?"markedNbsp":"nbsp"}_toDom(e){/<(?:html|body|head|meta)(?:\s[^>]*)?>/i.test(e.trim().slice(0,1e4))||(e=`${e}`);const t=this.domParser.parseFromString(e,"text/html"),o=t.createDocumentFragment(),n=t.body.childNodes;for(;n.length>0;)o.appendChild(n[0]);return o}}class Td extends(V()){constructor(e,t){super(),this.model=e,this.mapper=new cc,this.downcastDispatcher=new pc({mapper:this.mapper,schema:e.schema}),this.downcastDispatcher.on("insert:$text",((e,t,o)=>{if(!o.consumable.consume(t.item,e.name))return;const n=o.writer,i=o.mapper.toViewPosition(t.range.start),r=n.createText(t.item.data);n.insert(i,r)}),{priority:"lowest"}),this.downcastDispatcher.on("insert",((e,t,o)=>{o.convertAttributes(t.item),t.reconversion||!t.item.is("element")||t.item.isEmpty||o.convertChildren(t.item)}),{priority:"lowest"}),this.upcastDispatcher=new Dd({schema:e.schema}),this.viewDocument=new oa(t),this.stylesProcessor=t,this.htmlProcessor=new Sd(this.viewDocument),this.processor=this.htmlProcessor,this._viewWriter=new ga(this.viewDocument),this.upcastDispatcher.on("text",((e,t,{schema:o,consumable:n,writer:i})=>{let r=t.modelCursor;if(!n.test(t.viewItem))return;if(!o.checkChild(r,"$text")){if(!Qc(r,"$text",o))return;if(0==t.viewItem.data.trim().length)return;r=Xc(r,i)}n.consume(t.viewItem);const s=i.createText(t.viewItem.data);i.insert(s,r),t.modelRange=i.createRange(r,r.getShiftedBy(s.offsetSize)),t.modelCursor=t.modelRange.end}),{priority:"lowest"}),this.upcastDispatcher.on("element",((e,t,o)=>{if(!t.modelRange&&o.consumable.consume(t.viewItem,{name:!0})){const{modelRange:e,modelCursor:n}=o.convertChildren(t.viewItem,t.modelCursor);t.modelRange=e,t.modelCursor=n}}),{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",((e,t,o)=>{if(!t.modelRange&&o.consumable.consume(t.viewItem,{name:!0})){const{modelRange:e,modelCursor:n}=o.convertChildren(t.viewItem,t.modelCursor);t.modelRange=e,t.modelCursor=n}}),{priority:"lowest"}),X().prototype.decorate.call(this,"init"),X().prototype.decorate.call(this,"set"),X().prototype.decorate.call(this,"get"),X().prototype.decorate.call(this,"toView"),X().prototype.decorate.call(this,"toModel"),this.on("init",(()=>{this.fire("ready")}),{priority:"lowest"}),this.on("ready",(()=>{this.model.enqueueChange({isUndoable:!1},Yc)}),{priority:"lowest"})}get(e={}){const{rootName:t="main",trim:o="empty"}=e;if(!this._checkIfRootsExists([t]))throw new S("datacontroller-get-non-existent-root",this);const n=this.model.document.getRoot(t);return n.isAttached()||T("datacontroller-get-detached-root",this),"empty"!==o||this.model.hasContent(n,{ignoreWhitespaces:!0})?this.stringify(n,e):""}stringify(e,t={}){const o=this.toView(e,t);return this.processor.toData(o)}toView(e,t={}){const o=this.viewDocument,n=this._viewWriter;this.mapper.clearBindings();const i=lc._createIn(e),r=new ma(o);this.mapper.bindElements(e,r);const s=e.is("documentFragment")?e.markers:function(e){const t=[],o=e.root.document;if(!o)return new Map;const n=lc._createIn(e);for(const e of o.model.markers){const o=e.getRange(),i=o.isCollapsed,r=o.start.isEqual(n.start)||o.end.isEqual(n.end);if(i&&r)t.push([e.name,o]);else{const i=n.getIntersection(o);i&&t.push([e.name,i])}}return t.sort((([e,t],[o,n])=>{if("after"!==t.end.compareWith(n.start))return 1;if("before"!==t.start.compareWith(n.end))return-1;switch(t.start.compareWith(n.start)){case"before":return 1;case"after":return-1;default:switch(t.end.compareWith(n.end)){case"before":return 1;case"after":return-1;default:return o.localeCompare(e)}}})),new Map(t)}(e);return this.downcastDispatcher.convert(i,s,n,t),r}init(e){if(this.model.document.version)throw new S("datacontroller-init-document-not-empty",this);let t={};if("string"==typeof e?t.main=e:t=e,!this._checkIfRootsExists(Object.keys(t)))throw new S("datacontroller-init-non-existent-root",this);return this.model.enqueueChange({isUndoable:!1},(e=>{for(const o of Object.keys(t)){const n=this.model.document.getRoot(o);e.insert(this.parse(t[o],n),n,0)}})),Promise.resolve()}set(e,t={}){let o={};if("string"==typeof e?o.main=e:o=e,!this._checkIfRootsExists(Object.keys(o)))throw new S("datacontroller-set-non-existent-root",this);this.model.enqueueChange(t.batchType||{},(e=>{e.setSelection(null),e.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const t of Object.keys(o)){const n=this.model.document.getRoot(t);e.remove(e.createRangeIn(n)),e.insert(this.parse(o[t],n),n,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.getRoot(t))return!1;return!0}}class Id{constructor(e,t){this._helpers=new Map,this._downcast=Si(e),this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=Si(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 S("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:e,dispatchers:[t],isDowncast:o})}for(e){if(!this._helpers.has(e))throw new S("conversion-for-unknown-group",this);return this._helpers.get(e)}elementToElement(e){this.for("downcast").elementToElement(e);for(const{model:t,view:o}of Pd(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 Pd(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 Pd(e))this.for("upcast").attributeToAttribute({view:o,model:t})}_createConversionHelpers({name:e,dispatchers:t,isDowncast:o}){if(this._helpers.has(e))throw new S("conversion-group-exists",this);const n=o?new Mc(t):new ed(t);this._helpers.set(e,n)}}function*Pd(e){if(e.model.values)for(const t of e.model.values){const o={key:e.model.key,value:t},n=e.view[t],i=e.upcastAlso?e.upcastAlso[t]:void 0;yield*Fd(o,n,i)}else yield*Fd(e.model,e.view,e.upcastAlso)}function*Fd(e,t,o){if(yield{model:e,view:t},o)for(const t of Si(o))yield{model:e,view:t}}class Rd{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,t){return new this(e.baseVersion)}}function Md(e,t){const o=Nd(t),n=o.reduce(((e,t)=>e+t.offsetSize),0),i=e.parent;Ld(e);const r=e.index;return i._insertChild(r,o),Vd(i,r+o.length),Vd(i,r),new lc(e,e.getShiftedBy(n))}function zd(e){if(!e.isFlat)throw new S("operation-utils-remove-range-not-flat",this);const t=e.start.parent;Ld(e.start),Ld(e.end);const o=t._removeChildren(e.start.index,e.end.index-e.start.index);return Vd(t,e.start.index),o}function Od(e,t){if(!e.isFlat)throw new S("operation-utils-move-range-not-flat",this);const o=zd(e);return Md(t=t._getTransformedByDeletion(e.start,e.end.offset-e.start.offset),o)}function Nd(e){const t=[];!function e(o){if("string"==typeof o)t.push(new Dc(o));else if(o instanceof Xl)t.push(new Dc(o.data,o.getAttributes()));else if(o instanceof fc)t.push(o);else if(ae(o))for(const t of o)e(t);else{}}(e);for(let e=1;ee.maxOffset)throw new S("move-operation-nodes-do-not-exist",this);if(e===t&&o=o&&this.targetPosition.path[e]e._clone(!0)))),t=new qd(this.position,e,this.baseVersion);return t.shouldReceiveAttributes=this.shouldReceiveAttributes,t}getReversed(){const e=this.position.root.document.graveyard,t=new oc(e,[0]);return new jd(this.position,this.nodes.maxOffset,t,this.baseVersion+1)}_validate(){const e=this.position.parent;if(!e||e.maxOffsete._clone(!0)))),Md(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(Fc.fromJSON(t)):o.push(Dc.fromJSON(t));const n=new qd(oc.fromJSON(e.position,t),o,e.baseVersion);return n.shouldReceiveAttributes=e.shouldReceiveAttributes,n}}class $d extends Rd{constructor(e,t,o,n,i){super(i),this.splitPosition=e.clone(),this.splitPosition.stickiness="toNext",this.howMany=t,this.insertionPosition=o,this.graveyardPosition=n?n.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 oc(this.insertionPosition.root,e)}get movedRange(){const e=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new lc(this.splitPosition,e)}get affectedSelectable(){const e=[lc._createFromPositionAndShift(this.splitPosition,0),lc._createFromPositionAndShift(this.insertionPosition,0)];return this.graveyardPosition&&e.push(lc._createFromPositionAndShift(this.graveyardPosition,0)),e}clone(){return new $d(this.splitPosition,this.howMany,this.insertionPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.splitPosition.root.document.graveyard,t=new oc(e,[0]);return new Ud(this.moveTargetPosition,this.howMany,this.splitPosition,t,this.baseVersion+1)}_validate(){const e=this.splitPosition.parent,t=this.splitPosition.offset;if(!e||e.maxOffset0&&(e.sourcePosition.isEqual(t.sourcePosition.getShiftedBy(t.howMany))&&this._setRelation(e,t,"mergeSourceAffected"),e.targetPosition.isEqual(t.sourcePosition)&&this._setRelation(e,t,"mergeTargetWasBefore"));else if(e instanceof Wd){const o=e.newRange;if(!o)return;if(t instanceof Ud){const n=o.start.isEqual(t.targetPosition),i=o.start.isEqual(t.deletionPosition),r=o.end.isEqual(t.deletionPosition),s=o.end.isEqual(t.sourcePosition);(n||i||r||s)&&this._setRelation(e,t,{wasInLeftElement:n,wasStartBeforeMergedElement:i,wasEndBeforeMergedElement:r,wasInRightElement:s})}}}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),n=this._history.getUndoneOperation(o);if(!n)return null;const i=this.originalOperations.get(e),r=this._relations.get(i);return r&&r.get(n)||null}_setRelation(e,t,o){const n=this.originalOperations.get(e),i=this.originalOperations.get(t);let r=this._relations.get(n);r||(r=new Map,this._relations.set(n,r)),r.set(i,o)}}function au(e,t){for(const o of e)o.baseVersion=t++}function lu(e,t){for(let o=0;o{if(e.key===t.key&&e.range.start.hasSameParentAs(t.range.start)){const n=e.range.getDifference(t.range).map((t=>new Kd(t,e.key,e.oldValue,e.newValue,0))),i=e.range.getIntersection(t.range);return i&&o.aIsStrong&&n.push(new Kd(i,t.key,t.newValue,e.newValue,0)),0==n.length?[new Zd(0)]:n}return[e]})),ou(Kd,qd,((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 Kd(t,e.key,e.oldValue,e.newValue,e.baseVersion)));if(t.shouldReceiveAttributes){const n=du(t,e.key,e.oldValue);n&&o.unshift(n)}return o}return e.range=e.range._getTransformedByInsertion(t.position,t.howMany,!1)[0],[e]})),ou(Kd,Ud,((e,t)=>{const o=[];e.range.start.hasSameParentAs(t.deletionPosition)&&(e.range.containsPosition(t.deletionPosition)||e.range.start.isEqual(t.deletionPosition))&&o.push(lc._createFromPositionAndShift(t.graveyardPosition,1));const n=e.range._getTransformedByMergeOperation(t);return n.isCollapsed||o.push(n),o.map((t=>new Kd(t,e.key,e.oldValue,e.newValue,e.baseVersion)))})),ou(Kd,jd,((e,t)=>{const o=function(e,t){const o=lc._createFromPositionAndShift(t.sourcePosition,t.howMany);let n=null,i=[];o.containsRange(e,!0)?n=e:e.start.hasSameParentAs(o.start)?(i=e.getDifference(o),n=e.getIntersection(o)):i=[e];const r=[];for(let e of i){e=e._getTransformedByDeletion(t.sourcePosition,t.howMany);const o=t.getMovedRangeStart(),n=e.start.hasSameParentAs(o),i=e._getTransformedByInsertion(o,t.howMany,n);r.push(...i)}n&&r.push(n._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany,!1)[0]);return r}(e.range,t);return o.map((t=>new Kd(t,e.key,e.oldValue,e.newValue,e.baseVersion)))})),ou(Kd,$d,((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 lc(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]})),ou(qd,Kd,((e,t)=>{const o=[e];if(e.shouldReceiveAttributes&&e.position.hasSameParentAs(t.range.start)&&t.range.containsPosition(e.position)){const n=du(e,t.key,t.newValue);n&&o.push(n)}return o})),ou(qd,qd,((e,t,o)=>(e.position.isEqual(t.position)&&o.aIsStrong||(e.position=e.position._getTransformedByInsertOperation(t)),[e]))),ou(qd,jd,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),ou(qd,$d,((e,t)=>(e.position=e.position._getTransformedBySplitOperation(t),[e]))),ou(qd,Ud,((e,t)=>(e.position=e.position._getTransformedByMergeOperation(t),[e]))),ou(Wd,qd,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByInsertOperation(t)[0]),e.newRange&&(e.newRange=e.newRange._getTransformedByInsertOperation(t)[0]),[e]))),ou(Wd,Wd,((e,t,o)=>{if(e.name==t.name){if(!o.aIsStrong)return[new Zd(0)];e.oldRange=t.newRange?t.newRange.clone():null}return[e]})),ou(Wd,Ud,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByMergeOperation(t)),e.newRange&&(e.newRange=e.newRange._getTransformedByMergeOperation(t)),[e]))),ou(Wd,jd,((e,t)=>{const o=[e];if(e.oldRange&&(e.oldRange=lc._createFromRanges(e.oldRange._getTransformedByMoveOperation(t))),e.newRange){const n=e.newRange._getTransformedByMoveOperation(t);e.newRange=n[0];for(let t=1;t{if(e.oldRange&&(e.oldRange=e.oldRange._getTransformedBySplitOperation(t)),e.newRange){if(o.abRelation){const n=e.newRange._getTransformedBySplitOperation(t);return e.newRange.start.isEqual(t.splitPosition)&&o.abRelation.wasStartBeforeMergedElement?e.newRange.start=oc._createAt(t.insertionPosition):e.newRange.start.isEqual(t.splitPosition)&&!o.abRelation.wasInLeftElement?e.newRange.start=oc._createAt(t.moveTargetPosition):e.newRange.start=n.start,e.newRange.end.isEqual(t.splitPosition)&&o.abRelation.wasInRightElement?e.newRange.end=oc._createAt(t.moveTargetPosition):e.newRange.end.isEqual(t.splitPosition)&&o.abRelation.wasEndBeforeMergedElement?e.newRange.end=oc._createAt(t.insertionPosition):e.newRange.end=n.end,[e]}e.newRange=e.newRange._getTransformedBySplitOperation(t)}return[e]})),ou(Ud,qd,((e,t)=>(e.sourcePosition.hasSameParentAs(t.position)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByInsertOperation(t),e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t),[e]))),ou(Ud,Ud,((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 oc(t.graveyardPosition.root,o),e.howMany=0,[e]}return[new Zd(0)]}if(e.sourcePosition.isEqual(t.sourcePosition)&&!e.targetPosition.isEqual(t.targetPosition)&&!o.bWasUndone&&"splitAtSource"!=o.abRelation){const n="$graveyard"==e.targetPosition.root.rootName,i="$graveyard"==t.targetPosition.root.rootName;if(i&&!n||!(n&&!i)&&o.aIsStrong){const o=t.targetPosition._getTransformedByMergeOperation(t),n=e.targetPosition._getTransformedByMergeOperation(t);return[new jd(o,e.howMany,n,0)]}return[new Zd(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]})),ou(Ud,jd,((e,t,o)=>{const n=lc._createFromPositionAndShift(t.sourcePosition,t.howMany);return"remove"==t.type&&!o.bWasUndone&&e.deletionPosition.hasSameParentAs(t.sourcePosition)&&n.containsPosition(e.sourcePosition)?[new Zd(0)]:(t.sourcePosition.getShiftedBy(t.howMany).isEqual(e.sourcePosition)?e.sourcePosition.stickiness="toNone":t.targetPosition.isEqual(e.sourcePosition)&&"mergeSourceAffected"==o.abRelation?e.sourcePosition.stickiness="toNext":t.sourcePosition.isEqual(e.targetPosition)?(e.targetPosition.stickiness="toNone",e.howMany-=t.howMany):t.targetPosition.isEqual(e.targetPosition)&&"mergeTargetWasBefore"==o.abRelation?(e.targetPosition.stickiness="toPrevious",e.howMany+=t.howMany):(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.sourcePosition.stickiness="toPrevious",e.targetPosition.stickiness="toNext",e.graveyardPosition.isEqual(t.targetPosition)||(e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)),[e])})),ou(Ud,$d,((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)){if(t.graveyardPosition&&e.deletionPosition.isEqual(t.graveyardPosition)||"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]})),ou(jd,qd,((e,t)=>{const o=lc._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]})),ou(jd,jd,((e,t,o)=>{const n=lc._createFromPositionAndShift(e.sourcePosition,e.howMany),i=lc._createFromPositionAndShift(t.sourcePosition,t.howMany);let r,s=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),uu(e,t)&&uu(t,e))return[t.getReversed()];if(n.containsPosition(t.targetPosition)&&n.containsRange(i,!0))return n.start=n.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),n.end=n.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),hu([n],r);if(i.containsPosition(e.targetPosition)&&i.containsRange(n,!0))return n.start=n.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),n.end=n.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),hu([n],r);const l=se(e.sourcePosition.getParentPath(),t.sourcePosition.getParentPath());if("prefix"==l||"extension"==l)return n.start=n.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),n.end=n.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),hu([n],r);"remove"!=e.type||"remove"==t.type||o.aWasUndone||o.forceWeakRemove?"remove"==e.type||"remove"!=t.type||o.bWasUndone||o.forceWeakRemove||(s=!1):s=!0;const c=[],d=n.getDifference(i);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"==se(e.start.getParentPath(),t.getMovedRangeStart().getParentPath()),n=e._getTransformedByInsertion(t.getMovedRangeStart(),t.howMany,o);c.push(...n)}const u=n.getIntersection(i);return null!==u&&s&&(u.start=u.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),u.end=u.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),0===c.length?c.push(u):1==c.length?i.start.isBefore(n.start)||i.start.isEqual(n.start)?c.unshift(u):c.push(u):c.splice(1,0,u)),0===c.length?[new Zd(e.baseVersion)]:hu(c,r)})),ou(jd,$d,((e,t,o)=>{let n=e.targetPosition.clone();e.targetPosition.isEqual(t.insertionPosition)&&t.graveyardPosition&&"moveTargetAfter"!=o.abRelation||(n=e.targetPosition._getTransformedBySplitOperation(t));const i=lc._createFromPositionAndShift(e.sourcePosition,e.howMany);if(i.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.howMany++,e.targetPosition=n,[e];if(i.start.hasSameParentAs(t.splitPosition)&&i.containsPosition(t.splitPosition)){let e=new lc(t.splitPosition,i.end);e=e._getTransformedBySplitOperation(t);return hu([new lc(i.start,t.splitPosition),e],n)}e.targetPosition.isEqual(t.splitPosition)&&"insertAtSource"==o.abRelation&&(n=t.moveTargetPosition),e.targetPosition.isEqual(t.insertionPosition)&&"insertBetween"==o.abRelation&&(n=e.targetPosition);const r=[i._getTransformedBySplitOperation(t)];if(t.graveyardPosition){const n=i.start.isEqual(t.graveyardPosition)||i.containsPosition(t.graveyardPosition);e.howMany>1&&n&&!o.aWasUndone&&r.push(lc._createFromPositionAndShift(t.insertionPosition,1))}return hu(r,n)})),ou(jd,Ud,((e,t,o)=>{const n=lc._createFromPositionAndShift(e.sourcePosition,e.howMany);if(t.deletionPosition.hasSameParentAs(e.sourcePosition)&&n.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 Zd(0)]}else if(!o.aWasUndone){const o=[];let n=t.graveyardPosition.clone(),i=t.targetPosition._getTransformedByMergeOperation(t);const r=e.targetPosition.getTransformedByOperation(t);e.howMany>1&&(o.push(new jd(e.sourcePosition,e.howMany-1,r,0)),n=n._getTransformedByMove(e.sourcePosition,r,e.howMany-1),i=i._getTransformedByMove(e.sourcePosition,r,e.howMany-1));const s=t.deletionPosition._getCombined(e.sourcePosition,r),a=new jd(n,1,s,0),l=a.getMovedRangeStart().path.slice();l.push(0);const c=new oc(a.targetPosition.root,l);i=i._getTransformedByMove(n,s,1);const d=new jd(i,t.howMany,c,0);return o.push(a),o.push(d),o}const i=lc._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByMergeOperation(t);return e.sourcePosition=i.start,e.howMany=i.end.offset-i.start.offset,e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]})),ou(Jd,qd,((e,t)=>(e.position=e.position._getTransformedByInsertOperation(t),[e]))),ou(Jd,Ud,((e,t)=>e.position.isEqual(t.deletionPosition)?(e.position=t.graveyardPosition.clone(),e.position.stickiness="toNext",[e]):(e.position=e.position._getTransformedByMergeOperation(t),[e]))),ou(Jd,jd,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),ou(Jd,Jd,((e,t,o)=>{if(e.position.isEqual(t.position)){if(!o.aIsStrong)return[new Zd(0)];e.oldName=t.newName}return[e]})),ou(Jd,$d,((e,t)=>{if("same"==se(e.position.path,t.splitPosition.getParentPath())&&!t.graveyardPosition){const t=new Jd(e.position.getShiftedBy(1),e.oldName,e.newName,0);return[e,t]}return e.position=e.position._getTransformedBySplitOperation(t),[e]})),ou(Yd,Yd,((e,t,o)=>{if(e.root===t.root&&e.key===t.key){if(!o.aIsStrong||e.newValue===t.newValue)return[new Zd(0)];e.oldValue=t.newValue}return[e]})),ou(Qd,Qd,((e,t)=>e.rootName===t.rootName&&e.isAdd===t.isAdd?[new Zd(0)]:[e])),ou($d,qd,((e,t)=>(e.splitPosition.hasSameParentAs(t.position)&&e.splitPosition.offset{if(!e.graveyardPosition&&!o.bWasUndone&&e.splitPosition.hasSameParentAs(t.sourcePosition)){const o=t.graveyardPosition.path.slice();o.push(0);const n=new oc(t.graveyardPosition.root,o),i=$d.getInsertionPosition(new oc(t.graveyardPosition.root,o)),r=new $d(n,0,i,null,0);return e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=$d.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.getInsertionPosition(e.splitPosition),e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]})),ou($d,jd,((e,t,o)=>{const n=lc._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.graveyardPosition){const i=n.start.isEqual(e.graveyardPosition)||n.containsPosition(e.graveyardPosition);if(!o.bWasUndone&&i){const o=e.splitPosition._getTransformedByMoveOperation(t),n=e.graveyardPosition._getTransformedByMoveOperation(t),i=n.path.slice();i.push(0);const r=new oc(n.root,i);return[new jd(o,e.howMany,r,0)]}e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)}const i=e.splitPosition.isEqual(t.targetPosition);if(i&&("insertAtSource"==o.baRelation||"splitBefore"==o.abRelation))return e.howMany+=t.howMany,e.splitPosition=e.splitPosition._getTransformedByDeletion(t.sourcePosition,t.howMany),e.insertionPosition=$d.getInsertionPosition(e.splitPosition),[e];if(i&&o.abRelation&&o.abRelation.howMany){const{howMany:t,offset:n}=o.abRelation;return e.howMany+=t,e.splitPosition=e.splitPosition.getShiftedBy(n),[e]}if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&n.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{if(e.splitPosition.isEqual(t.splitPosition)){if(!e.graveyardPosition&&!t.graveyardPosition)return[new Zd(0)];if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition))return[new Zd(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 n="$graveyard"==e.splitPosition.root.rootName,i="$graveyard"==t.splitPosition.root.rootName;if(i&&!n||!(n&&!i)&&o.aIsStrong){const o=[];return t.howMany&&o.push(new jd(t.moveTargetPosition,t.howMany,t.splitPosition,0)),e.howMany&&o.push(new jd(e.splitPosition,e.howMany,e.moveTargetPosition,0)),o}return[new Zd(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 n=new oc(t.insertionPosition.root,o);return[e,new jd(e.insertionPosition,1,n,0)]}return e.splitPosition.hasSameParentAs(t.splitPosition)&&e.splitPosition.offset{const o=t[0];o.isDocumentOperation&&gu.call(this,o)}),{priority:"low"})}function gu(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)}}pu.prototype.is=function(e){return"livePosition"===e||"model:livePosition"===e||"position"==e||"model:position"===e};class fu{constructor(e={}){"string"==typeof e&&(e="transparent"===e?{isUndoable:!1}:{},T("batch-constructor-deprecated-string-type"));const{isUndoable:t=!0,isLocal:o=!0,isUndo:n=!1,isTyping:i=!1}=e;this.operations=[],this.isUndoable=t,this.isLocal=o,this.isUndo=n,this.isTyping=i}get type(){return T("batch-type-deprecated"),"default"}get baseVersion(){for(const e of this.operations)if(null!==e.baseVersion)return e.baseVersion;return null}addOperation(e){return e.isDocumentOperation&&(e.batch=this,this.operations.push(e)),e}}class bu{constructor(e){this._changesInElement=new Map,this._elementsSnapshots=new Map,this._elementChildrenSnapshots=new Map,this._elementState=new Map,this._changedMarkers=new Map,this._changedRoots=new Map,this._changeCount=0,this._cachedChanges=null,this._cachedChangesWithGraveyard=null,this._refreshedItems=new Set,this._markerCollection=e}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size&&0==this._changedRoots.size}bufferOperation(e){const t=e;switch(t.type){case"insert":if(this._isInInsertedElement(t.position.parent))return;this._markInsert(t.position.parent,t.position.offset,t.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":for(const e of t.range.getItems({shallow:!0}))this._isInInsertedElement(e.parent)||this._markAttribute(e);break;case"remove":case"move":case"reinsert":{if(t.sourcePosition.isEqual(t.targetPosition)||t.sourcePosition.getShiftedBy(t.howMany).isEqual(t.targetPosition))return;const e=this._isInInsertedElement(t.sourcePosition.parent),o=this._isInInsertedElement(t.targetPosition.parent);e||this._markRemove(t.sourcePosition.parent,t.sourcePosition.offset,t.howMany),o||this._markInsert(t.targetPosition.parent,t.getMovedRangeStart().offset,t.howMany);const n=lc._createFromPositionAndShift(t.sourcePosition,t.howMany);for(const e of n.getItems({shallow:!0}))this._setElementState(e,"move");break}case"rename":{if(this._isInInsertedElement(t.position.parent))return;this._markRemove(t.position.parent,t.position.offset,1),this._markInsert(t.position.parent,t.position.offset,1);const e=lc._createFromPositionAndShift(t.position,1);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getData();this.bufferMarkerChange(t.name,e,e)}this._setElementState(t.position.nodeAfter,"rename");break}case"split":{const e=t.splitPosition.parent;if(!this._isInInsertedElement(e)){this._markRemove(e,t.splitPosition.offset,t.howMany);const o=lc._createFromPositionAndShift(t.splitPosition,t.howMany);for(const e of o.getItems({shallow:!0}))this._setElementState(e,"move")}this._isInInsertedElement(t.insertionPosition.parent)||this._markInsert(t.insertionPosition.parent,t.insertionPosition.offset,1),t.graveyardPosition&&(this._markRemove(t.graveyardPosition.parent,t.graveyardPosition.offset,1),this._setElementState(t.graveyardPosition.nodeAfter,"move"));break}case"merge":{const e=t.sourcePosition.parent;this._isInInsertedElement(e.parent)||this._markRemove(e.parent,e.startOffset,1);const o=t.graveyardPosition.parent;this._markInsert(o,t.graveyardPosition.offset,1),this._setElementState(e,"move");const n=t.targetPosition.parent;if(!this._isInInsertedElement(n)){this._markInsert(n,t.targetPosition.offset,e.maxOffset);const o=lc._createFromPositionAndShift(t.sourcePosition,t.howMany);for(const e of o.getItems({shallow:!0}))this._setElementState(e,"move")}break}case"detachRoot":case"addRoot":{const e=t.affectedSelectable;if(!e._isLoaded)return;if(e.isAttached()==t.isAdd)return;this._bufferRootStateChange(t.rootName,t.isAdd);break}case"addRootAttribute":case"removeRootAttribute":case"changeRootAttribute":{if(!t.root._isLoaded)return;const e=t.root.rootName;this._bufferRootAttributeChange(e,t.key,t.oldValue,t.newValue);break}}this._cachedChanges=null}bufferMarkerChange(e,t,o){t.range&&t.range.root.is("rootElement")&&!t.range.root._isLoaded&&(t.range=null),o.range&&o.range.root.is("rootElement")&&!o.range.root._isLoaded&&(o.range=null);let n=this._changedMarkers.get(e);n?n.newMarkerData=o:(n={newMarkerData:o,oldMarkerData:t},this._changedMarkers.set(e,n)),null==n.oldMarkerData.range&&null==o.range&&this._changedMarkers.delete(e)}getMarkersToRemove(){const e=[];for(const[t,o]of this._changedMarkers)null!=o.oldMarkerData.range&&e.push({name:t,range:o.oldMarkerData.range});return e}getMarkersToAdd(){const e=[];for(const[t,o]of this._changedMarkers)null!=o.newMarkerData.range&&e.push({name:t,range:o.newMarkerData.range});return e}getChangedMarkers(){return Array.from(this._changedMarkers).map((([e,t])=>({name:e,data:{oldRange:t.oldMarkerData.range,newRange:t.newMarkerData.range}})))}hasDataChanges(){if(this.getChanges().length)return!0;if(this._changedRoots.size>0)return!0;for(const{newMarkerData:e,oldMarkerData:t}of this._changedMarkers.values()){if(e.affectsData!==t.affectsData)return!0;if(e.affectsData){const o=e.range&&!t.range,n=!e.range&&t.range,i=e.range&&t.range&&!e.range.isEqual(t.range);if(o||n||i)return!0}}return!1}getChanges(e={}){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.offsete.position.root!=t.position.root?e.position.root.rootNamee));for(const e of t)delete e.changeCount,"attribute"==e.type&&(delete e.position,delete e.length);return this._changeCount=0,this._cachedChangesWithGraveyard=t,this._cachedChanges=t.filter(Au),e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice()}getChangedRoots(){return Array.from(this._changedRoots.values()).map((e=>{const t={...e};return void 0!==t.state&&delete t.attributes,t}))}getRefreshedItems(){return new Set(this._refreshedItems)}reset(){this._changesInElement.clear(),this._elementChildrenSnapshots.clear(),this._elementsSnapshots.clear(),this._elementState.clear(),this._changedMarkers.clear(),this._changedRoots.clear(),this._refreshedItems.clear(),this._cachedChanges=null}_refreshItem(e){if(this._isInInsertedElement(e.parent))return;this._markRemove(e.parent,e.startOffset,e.offsetSize),this._markInsert(e.parent,e.startOffset,e.offsetSize),this._refreshedItems.add(e),this._setElementState(e,"refresh");const t=lc._createOn(e);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getData();this.bufferMarkerChange(e.name,t,t)}this._cachedChanges=null}_bufferRootLoad(e){if(e.isAttached()){this._bufferRootStateChange(e.rootName,!0),this._markInsert(e,0,e.maxOffset);for(const t of e.getAttributeKeys())this._bufferRootAttributeChange(e.rootName,t,null,e.getAttribute(t));for(const t of this._markerCollection)if(t.getRange().root==e){const e=t.getData();this.bufferMarkerChange(t.name,{...e,range:null},e)}}}_bufferRootStateChange(e,t){if(!this._changedRoots.has(e))return void this._changedRoots.set(e,{name:e,state:t?"attached":"detached"});const o=this._changedRoots.get(e);void 0!==o.state?(delete o.state,void 0===o.attributes&&this._changedRoots.delete(e)):o.state=t?"attached":"detached"}_bufferRootAttributeChange(e,t,o,n){const i=this._changedRoots.get(e)||{name:e},r=i.attributes||{};if(r[t]){const e=r[t];n===e.oldValue?delete r[t]:e.newValue=n}else r[t]={oldValue:o,newValue:n};0===Object.entries(r).length?(delete i.attributes,void 0===i.state&&this._changedRoots.delete(e)):(i.attributes=r,this._changedRoots.set(e,i))}_markInsert(e,t,o){if(e.root.is("rootElement")&&!e.root._isLoaded)return;const n={type:"insert",offset:t,howMany:o,count:this._changeCount++};this._markChange(e,n)}_markRemove(e,t,o){if(e.root.is("rootElement")&&!e.root._isLoaded)return;const n={type:"remove",offset:t,howMany:o,count:this._changeCount++};this._markChange(e,n),this._removeAllNestedChanges(e,t,o)}_markAttribute(e){if(e.root.is("rootElement")&&!e.root._isLoaded)return;const t={type:"attribute",offset:e.startOffset,howMany:e.offsetSize,count:this._changeCount++};this._markChange(e.parent,t)}_markChange(e,t){this._makeSnapshots(e);const o=this._getChangesForElement(e);this._handleChange(t,o),o.push(t);for(let e=0;eo&&this._elementState.set(e,t)}_getDiffActionForNode(e,t){if(!e.is("element"))return t;if(!this._elementsSnapshots.has(e))return t;const o=this._elementState.get(e);return o&&"move"!=o?o:t}_getChangesForElement(e){let t;return this._changesInElement.has(e)?t=this._changesInElement.get(e):(t=[],this._changesInElement.set(e,t)),t}_makeSnapshots(e){if(this._elementChildrenSnapshots.has(e))return;const t=_u(e.getChildren());this._elementChildrenSnapshots.set(e,t);for(const e of t)this._elementsSnapshots.set(e.node,e)}_handleChange(e,t){e.nodesToHandle=e.howMany;for(const o of t){const n=e.offset+e.howMany,i=o.offset+o.howMany;if("insert"==e.type&&("insert"==o.type&&(e.offset<=o.offset?o.offset+=e.howMany:e.offseto.offset){if(n>i){const e={type:"attribute",offset:i,howMany:n-i,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.offseti?(e.nodesToHandle=n-i,e.offset=i):e.nodesToHandle=0);if("remove"==o.type&&e.offseto.offset){const i={type:"attribute",offset:o.offset,howMany:n-o.offset,count:this._changeCount++};this._handleChange(i,t),t.push(i),e.nodesToHandle=o.offset-e.offset,e.howMany=e.nodesToHandle}"attribute"==o.type&&(e.offset>=o.offset&&n<=i?(e.nodesToHandle=0,e.howMany=0,e.offset=0):e.offset<=o.offset&&n>=i&&(o.howMany=0))}}e.howMany=e.nodesToHandle,delete e.nodesToHandle}_getInsertDiff(e,t,o,n,i){const r={type:"insert",position:oc._createAt(e,t),name:n.name,attributes:new Map(n.attributes),length:1,changeCount:this._changeCount++,action:o};return"insert"!=o&&i&&(r.before={name:i.name,attributes:new Map(i.attributes)}),r}_getRemoveDiff(e,t,o,n){return{type:"remove",action:o,position:oc._createAt(e,t),name:n.name,attributes:new Map(n.attributes),length:1,changeCount:this._changeCount++}}_getAttributesDiff(e,t,o){const n=[];o=new Map(o);for(const[i,r]of t){const t=o.has(i)?o.get(i):null;t!==r&&n.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:i,attributeOldValue:r,attributeNewValue:t,changeCount:this._changeCount++}),o.delete(i)}for(const[t,i]of o)n.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:t,attributeOldValue:null,attributeNewValue:i,changeCount:this._changeCount++});return n}_isInInsertedElement(e){const t=e.parent;if(!t)return!1;const o=this._changesInElement.get(t),n=e.startOffset;if(o)for(const e of o)if("insert"==e.type&&n>=e.offset&&nn){for(let t=0;t1500)for(let t=0;tthis._version+1&&this._gaps.set(this._version,e),this._version=e}get lastOperation(){return this._operations[this._operations.length-1]}addOperation(e){if(e.baseVersion!==this.version)throw new S("model-document-history-addoperation-incorrect-version",this,{operation:e,historyVersion:this.version});this._operations.push(e),this._version++,this._baseVersionToOperationIndex.set(e.baseVersion,this._operations.length-1)}getOperations(e,t=this.version){if(!this._operations.length)return[];const o=this._operations[0];void 0===e&&(e=o.baseVersion);let n=t-1;for(const[t,o]of this._gaps)e>t&&et&&nthis.lastOperation.baseVersion)return[];let i=this._baseVersionToOperationIndex.get(e);void 0===i&&(i=0);let r=this._baseVersionToOperationIndex.get(n);return void 0===r&&(r=this._operations.length-1),this._operations.slice(i,r+1)}getOperation(e){const t=this._baseVersionToOperationIndex.get(e);if(void 0!==t)return this._operations[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)}reset(){this._version=0,this._undoPairs=new Map,this._operations=[],this._undoneOperations=new Set,this._gaps=new Map,this._baseVersionToOperationIndex=new Map}}class vu extends Fc{constructor(e,t,o="main"){super(t),this._isAttached=!0,this._isLoaded=!0,this._document=e,this.rootName=o}get document(){return this._document}isAttached(){return this._isAttached}toJSON(){return this.rootName}}vu.prototype.is=function(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};const xu="$graveyard";class Eu extends(V()){constructor(e){super(),this.model=e,this.history=new Cu,this.selection=new Sc(this),this.roots=new tr({idProperty:"rootName"}),this.differ=new ku(e.markers),this.isReadOnly=!1,this._postFixers=new Set,this._hasSelectionChangedFromTheLastChangeBlock=!1,this.createRoot("$root",xu),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.history.addOperation(o)}),{priority:"low"}),this.listenTo(this.selection,"change",(()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0})),this.listenTo(e.markers,"update",((e,t,o,n,i)=>{const r={...t.getData(),range:n};this.differ.bufferMarkerChange(t.name,i,r),null===o&&t.on("change",((e,o)=>{const n=t.getData();this.differ.bufferMarkerChange(t.name,{...n,range:o},n)}))})),this.registerPostFixer((e=>{let t=!1;for(const o of this.roots)o.isAttached()||o.isEmpty||(e.remove(e.createRangeIn(o)),t=!0);for(const o of this.model.markers)o.getRange().root.isAttached()||(e.removeMarker(o),t=!0);return t}))}get version(){return this.history.version}set version(e){this.history.version=e}get graveyard(){return this.getRoot(xu)}createRoot(e="$root",t="main"){if(this.roots.get(t))throw new S("model-document-createroot-name-exists",this,{name:t});const o=new vu(this,e,t);return this.roots.add(o),o}destroy(){this.selection.destroy(),this.stopListening()}getRoot(e="main"){return this.roots.get(e)}getRootNames(e=!1){return this.getRoots(e).map((e=>e.rootName))}getRoots(e=!1){return this.roots.filter((t=>t!=this.graveyard&&(e||t.isAttached())&&t._isLoaded))}registerPostFixer(e){this._postFixers.add(e)}toJSON(){const e=ms(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(){const e=this.getRoots();return e.length?e[0]:this.graveyard}_getDefaultRange(){const e=this._getDefaultRoot(),t=this.model,o=t.schema,n=t.createPositionFromPath(e,[0]);return o.getNearestSelectionRange(n)||t.createRange(n)}_validateSelectionRange(e){return e.start.isValid()&&e.end.isValid()&&Du(e.start)&&Du(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 Du(e){const t=e.textNode;if(t){const o=t.data,n=e.offset-t.startOffset;return!hr(o,n)&&!pr(o,n)}return!0}class Bu extends(V()){constructor(){super(...arguments),this._markers=new Map}[Symbol.iterator](){return this._markers.values()}has(e){const t=e instanceof Su?e.name:e;return this._markers.has(t)}get(e){return this._markers.get(e)||null}_set(e,t,o=!1,n=!1){const i=e instanceof Su?e.name:e;if(i.includes(","))throw new S("markercollection-incorrect-marker-name",this);const r=this._markers.get(i);if(r){const e=r.getData(),s=r.getRange();let a=!1;return s.isEqual(t)||(r._attachLiveRange(vc.fromRange(t)),a=!0),o!=r.managedUsingOperations&&(r._managedUsingOperations=o,a=!0),"boolean"==typeof n&&n!=r.affectsData&&(r._affectsData=n,a=!0),a&&this.fire(`update:${i}`,r,s,t,e),r}const s=vc.fromRange(t),a=new Su(i,s,o,n);return this._markers.set(i,a),this.fire(`update:${i}`,a,null,t,{...a.getData(),range:null}),a}_remove(e){const t=e instanceof Su?e.name:e,o=this._markers.get(t);return!!o&&(this._markers.delete(t),this.fire(`update:${t}`,o,o.getRange(),null,o.getData()),this._destroyMarker(o),!0)}_refresh(e){const t=e instanceof Su?e.name:e,o=this._markers.get(t);if(!o)throw new S("markercollection-refresh-marker-not-exists",this);const n=o.getRange();this.fire(`update:${t}`,o,n,n,o.getData())}*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()}}class Su extends(V(Ql)){constructor(e,t,o,n){super(),this.name=e,this._liveRange=this._attachLiveRange(t),this._managedUsingOperations=o,this._affectsData=n}get managedUsingOperations(){if(!this._liveRange)throw new S("marker-destroyed",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new S("marker-destroyed",this);return this._affectsData}getData(){return{range:this.getRange(),affectsData:this.affectsData,managedUsingOperations:this.managedUsingOperations}}getStart(){if(!this._liveRange)throw new S("marker-destroyed",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new S("marker-destroyed",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new S("marker-destroyed",this);return this._liveRange.toRange()}_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}}Su.prototype.is=function(e){return"marker"===e||"model:marker"===e};class Tu extends Rd{constructor(e,t){super(null),this.sourcePosition=e.clone(),this.howMany=t}get type(){return"detach"}get affectedSelectable(){return null}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e}_validate(){if(this.sourcePosition.root.document)throw new S("detach-operation-on-document-node",this)}_execute(){zd(lc._createFromPositionAndShift(this.sourcePosition,this.howMany))}static get className(){return"DetachOperation"}}class Iu extends Ql{constructor(e){super(),this.markers=new Map,this._children=new Pc,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 nextSibling(){return null}get previousSibling(){return null}get root(){return this}get parent(){return null}get document(){return null}isAttached(){return!1}getAncestors(){return[]}getChild(e){return this._children.getNode(e)}getChildAtOffset(e){return this._children.getNodeAtOffset(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.getChildAtOffset(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(Fc.fromJSON(o)):t.push(Dc.fromJSON(o));return new Iu(t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const o=function(e){if("string"==typeof e)return[new Dc(e)];ae(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new Dc(e):e instanceof Xl?new Dc(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}_removeChildrenArray(e){this._children._removeNodesArray(e);for(const t of e)t.parent=null}}Iu.prototype.is=function(e){return"documentFragment"===e||"model:documentFragment"===e};class Pu{constructor(e,t){this.model=e,this.batch=t}createText(e,t){return new Dc(e,t)}createElement(e,t){return new Fc(e,t)}createDocumentFragment(){return new Iu}cloneElement(e,t=!0){return e._clone(t)}insert(e,t,o=0){if(this._assertWriterUsedCorrectly(),e instanceof Dc&&""==e.data)return;const n=oc._createAt(t,o);if(e.parent){if(Ou(e.root,n.root))return void this.move(lc._createOn(e),n);if(e.root.document)throw new S("model-writer-insert-forbidden-move",this);this.remove(e)}const i=n.root.document?n.root.document.version:null,r=e instanceof Iu?e._removeChildren(0,e.childCount):e,s=new qd(n,r,i);if(e instanceof Dc&&(s.shouldReceiveAttributes=!0),this.batch.addOperation(s),this.model.applyOperation(s),e instanceof Iu)for(const[t,o]of e.markers){const e=oc._createAt(o.root,0),i={range:new lc(o.start._getCombined(e,n),o.end._getCombined(e,n)),usingOperation:!0,affectsData:!0};this.model.markers.has(t)?this.updateMarker(t,i):this.addMarker(t,i)}}insertText(e,t,o,n){t instanceof Iu||t instanceof Fc||t instanceof oc?this.insert(this.createText(e),t,o):this.insert(this.createText(e,t),o,n)}insertElement(e,t,o,n){t instanceof Iu||t instanceof Fc||t instanceof oc?this.insert(this.createElement(e),t,o):this.insert(this.createElement(e,t),o,n)}append(e,t){this.insert(e,t,"end")}appendText(e,t,o){t instanceof Iu||t instanceof Fc?this.insert(this.createText(e),t,"end"):this.insert(this.createText(e,t),o,"end")}appendElement(e,t,o){t instanceof Iu||t instanceof Fc?this.insert(this.createElement(e),t,"end"):this.insert(this.createElement(e,t),o,"end")}setAttribute(e,t,o){if(this._assertWriterUsedCorrectly(),o instanceof lc){const n=o.getMinimalFlatRanges();for(const o of n)Fu(this,e,t,o)}else Ru(this,e,t,o)}setAttributes(e,t){for(const[o,n]of lr(e))this.setAttribute(o,n,t)}removeAttribute(e,t){if(this._assertWriterUsedCorrectly(),t instanceof lc){const o=t.getMinimalFlatRanges();for(const t of o)Fu(this,e,null,t)}else Ru(this,e,null,t)}clearAttributes(e){this._assertWriterUsedCorrectly();const t=e=>{for(const t of e.getAttributeKeys())this.removeAttribute(t,e)};if(e instanceof lc)for(const o of e.getItems())t(o);else t(e)}move(e,t,o){if(this._assertWriterUsedCorrectly(),!(e instanceof lc))throw new S("writer-move-invalid-range",this);if(!e.isFlat)throw new S("writer-move-range-not-flat",this);const n=oc._createAt(t,o);if(n.isEqual(e.start))return;if(this._addOperationForAffectedMarkers("move",e),!Ou(e.root,n.root))throw new S("writer-move-different-document",this);const i=e.root.document?e.root.document.version:null,r=new jd(e.start,e.end.offset-e.start.offset,n,i);this.batch.addOperation(r),this.model.applyOperation(r)}remove(e){this._assertWriterUsedCorrectly();const t=(e instanceof lc?e:lc._createOn(e)).getMinimalFlatRanges().reverse();for(const e of t)this._addOperationForAffectedMarkers("move",e),zu(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 Fc))throw new S("writer-merge-no-element-before",this);if(!(o instanceof Fc))throw new S("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){return this.model.createSelection(...e)}_mergeDetached(e){const t=e.nodeBefore,o=e.nodeAfter;this.move(lc._createIn(o),oc._createAt(t,"end")),this.remove(o)}_merge(e){const t=oc._createAt(e.nodeBefore,"end"),o=oc._createAt(e.nodeAfter,0),n=e.root.document.graveyard,i=new oc(n,[0]),r=e.root.document.version,s=new Ud(o,e.nodeAfter.maxOffset,t,i,r);this.batch.addOperation(s),this.model.applyOperation(s)}rename(e,t){if(this._assertWriterUsedCorrectly(),!(e instanceof Fc))throw new S("writer-rename-not-element-instance",this);const o=e.root.document?e.root.document.version:null,n=new Jd(oc._createBefore(e),e.name,t,o);this.batch.addOperation(n),this.model.applyOperation(n)}split(e,t){this._assertWriterUsedCorrectly();let o,n,i=e.parent;if(!i.parent)throw new S("writer-split-element-no-parent",this);if(t||(t=i.parent),!e.parent.getAncestors({includeSelf:!0}).includes(t))throw new S("writer-split-invalid-limit-element",this);do{const t=i.root.document?i.root.document.version:null,r=i.maxOffset-e.offset,s=$d.getInsertionPosition(e),a=new $d(e,r,s,null,t);this.batch.addOperation(a),this.model.applyOperation(a),o||n||(o=i,n=e.parent.nextSibling),i=(e=this.createPositionAfter(e.parent)).parent}while(i!==t);return{position:e,range:new lc(oc._createAt(o,"end"),oc._createAt(n,0))}}wrap(e,t){if(this._assertWriterUsedCorrectly(),!e.isFlat)throw new S("writer-wrap-range-not-flat",this);const o=t instanceof Fc?t:new Fc(t);if(o.childCount>0)throw new S("writer-wrap-element-not-empty",this);if(null!==o.parent)throw new S("writer-wrap-element-attached",this);this.insert(o,e.start);const n=new lc(e.start.getShiftedBy(1),e.end.getShiftedBy(1));this.move(n,oc._createAt(o,0))}unwrap(e){if(this._assertWriterUsedCorrectly(),null===e.parent)throw new S("writer-unwrap-element-no-parent",this);this.move(lc._createIn(e),this.createPositionAfter(e)),this.remove(e)}addMarker(e,t){if(this._assertWriterUsedCorrectly(),!t||"boolean"!=typeof t.usingOperation)throw new S("writer-addmarker-no-usingoperation",this);const o=t.usingOperation,n=t.range,i=void 0!==t.affectsData&&t.affectsData;if(this.model.markers.has(e))throw new S("writer-addmarker-marker-exists",this);if(!n)throw new S("writer-addmarker-no-range",this);return o?(Mu(this,e,null,n,i),this.model.markers.get(e)):this.model.markers._set(e,n,o,i)}updateMarker(e,t){this._assertWriterUsedCorrectly();const o="string"==typeof e?e:e.name,n=this.model.markers.get(o);if(!n)throw new S("writer-updatemarker-marker-not-exists",this);if(!t)return T("writer-updatemarker-reconvert-using-editingcontroller",{markerName:o}),void this.model.markers._refresh(n);const i="boolean"==typeof t.usingOperation,r="boolean"==typeof t.affectsData,s=r?t.affectsData:n.affectsData;if(!i&&!t.range&&!r)throw new S("writer-updatemarker-wrong-options",this);const a=n.getRange(),l=t.range?t.range:a;i&&t.usingOperation!==n.managedUsingOperations?t.usingOperation?Mu(this,o,null,l,s):(Mu(this,o,a,null,s),this.model.markers._set(o,l,void 0,s)):n.managedUsingOperations?Mu(this,o,a,l,s):this.model.markers._set(o,l,void 0,s)}removeMarker(e){this._assertWriterUsedCorrectly();const t="string"==typeof e?e:e.name;if(!this.model.markers.has(t))throw new S("writer-removemarker-no-marker",this);const o=this.model.markers.get(t);if(!o.managedUsingOperations)return void this.model.markers._remove(t);Mu(this,t,o.getRange(),null,o.affectsData)}addRoot(e,t="$root"){this._assertWriterUsedCorrectly();const o=this.model.document.getRoot(e);if(o&&o.isAttached())throw new S("writer-addroot-root-exists",this);const n=this.model.document,i=new Qd(e,t,!0,n,n.version);return this.batch.addOperation(i),this.model.applyOperation(i),this.model.document.getRoot(e)}detachRoot(e){this._assertWriterUsedCorrectly();const t="string"==typeof e?this.model.document.getRoot(e):e;if(!t||!t.isAttached())throw new S("writer-detachroot-no-root",this);for(const e of this.model.markers)e.getRange().root===t&&this.removeMarker(e);for(const e of t.getAttributeKeys())this.removeAttribute(e,t);this.remove(this.createRangeIn(t));const o=this.model.document,n=new Qd(t.rootName,t.name,!1,o,o.version);this.batch.addOperation(n),this.model.applyOperation(n)}setSelection(...e){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(...e)}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 lr(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 n=Sc._getStoreAttributeKey(e);this.setAttribute(n,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=Sc._getStoreAttributeKey(e);this.removeAttribute(o,t.anchor.parent)}t._removeAttribute(e)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new S("writer-incorrect-use",this)}_addOperationForAffectedMarkers(e,t){for(const o of this.model.markers){if(!o.managedUsingOperations)continue;const n=o.getRange();let i=!1;if("move"===e){const e=t;i=e.containsPosition(n.start)||e.start.isEqual(n.start)||e.containsPosition(n.end)||e.end.isEqual(n.end)}else{const e=t,o=e.nodeBefore,r=e.nodeAfter,s=n.start.parent==o&&n.start.isAtEnd,a=n.end.parent==r&&0==n.end.offset,l=n.end.nodeAfter==r,c=n.start.nodeAfter==r;i=s||a||l||c}i&&this.updateMarker(o.name,{range:n})}}}function Fu(e,t,o,n){const i=e.model,r=i.document;let s,a,l,c=n.start;for(const e of n.getWalker({shallow:!0}))l=e.item.getAttribute(t),s&&a!=l&&(a!=o&&d(),c=s),s=e.nextPosition,a=l;function d(){const n=new lc(c,s),l=n.root.document?r.version:null,d=new Kd(n,t,a,o,l);e.batch.addOperation(d),i.applyOperation(d)}s instanceof oc&&s!=c&&a!=o&&d()}function Ru(e,t,o,n){const i=e.model,r=i.document,s=n.getAttribute(t);let a,l;if(s!=o){if(n.root===n){const e=n.document?r.version:null;l=new Yd(n,t,s,o,e)}else{a=new lc(oc._createBefore(n),e.createPositionAfter(n));const i=a.root.document?r.version:null;l=new Kd(a,t,s,o,i)}e.batch.addOperation(l),i.applyOperation(l)}}function Mu(e,t,o,n,i){const r=e.model,s=r.document,a=new Wd(t,o,n,r.markers,!!i,s.version);e.batch.addOperation(a),r.applyOperation(a)}function zu(e,t,o,n){let i;if(e.root.document){const o=n.document,r=new oc(o.graveyard,[0]);i=new jd(e,t,r,o.version)}else i=new Tu(e,t);o.addOperation(i),n.applyOperation(i)}function Ou(e,t){return e===t||e instanceof vu&&t instanceof vu}function Nu(e,t,o={}){if(t.isCollapsed)return;const n=t.getFirstRange();if("$graveyard"==n.root.rootName)return;const i=e.schema;e.change((e=>{if(!o.doNotResetEntireContent&&function(e,t){const o=e.getLimitElement(t);if(!t.containsEntireContent(o))return!1;const n=t.getFirstRange();if(n.start.parent==n.end.parent)return!1;return e.checkChild(o,"paragraph")}(i,t))return void function(e,t){const o=e.model.schema.getLimitElement(t);e.remove(e.createRangeIn(o)),ju(e,e.createPositionAt(o,0),t)}(e,t);const r={};if(!o.doNotAutoparagraph){const e=t.getSelectedElement();e&&Object.assign(r,i.getAttributesWithProperty(e,"copyOnReplace",!0))}const[s,a]=function(e){const t=e.root.document.model,o=e.start;let n=e.end;if(t.hasContent(e,{ignoreMarkers:!0})){const o=function(e){const t=e.parent,o=t.root.document.model.schema,n=t.getAncestors({parentFirst:!0,includeSelf:!0});for(const e of n){if(o.isLimit(e))return null;if(o.isBlock(e))return e}}(n);if(o&&n.isTouching(t.createPositionAt(o,0))){const o=t.createSelection(e);t.modifySelection(o,{direction:"backward"});const i=o.getLastPosition(),r=t.createRange(i,n);t.hasContent(r,{ignoreMarkers:!0})||(n=i)}}return[pu.fromPosition(o,"toPrevious"),pu.fromPosition(n,"toNext")]}(n);s.isTouching(a)||e.remove(e.createRange(s,a)),o.leaveUnmerged||(!function(e,t,o){const n=e.model;if(!Hu(e.model.schema,t,o))return;const[i,r]=function(e,t){const o=e.getAncestors(),n=t.getAncestors();let i=0;for(;o[i]&&o[i]==n[i];)i++;return[o[i],n[i]]}(t,o);if(!i||!r)return;!n.hasContent(i,{ignoreMarkers:!0})&&n.hasContent(r,{ignoreMarkers:!0})?Lu(e,t,o,i.parent):Vu(e,t,o,i.parent)}(e,s,a),i.removeDisallowedAttributes(s.parent.getChildren(),e)),qu(e,t,s),!o.doNotAutoparagraph&&function(e,t){const o=e.checkChild(t,"$text"),n=e.checkChild(t,"paragraph");return!o&&n}(i,s)&&ju(e,s,t,r),s.detach(),a.detach()}))}function Vu(e,t,o,n){const i=t.parent,r=o.parent;if(i!=n&&r!=n){for(t=e.createPositionAfter(i),(o=e.createPositionBefore(r)).isEqual(t)||e.insert(r,t),e.merge(t);o.parent.isEmpty;){const t=o.parent;o=e.createPositionBefore(t),e.remove(t)}Hu(e.model.schema,t,o)&&Vu(e,t,o,n)}}function Lu(e,t,o,n){const i=t.parent,r=o.parent;if(i!=n&&r!=n){for(t=e.createPositionAfter(i),(o=e.createPositionBefore(r)).isEqual(t)||e.insert(i,o);t.parent.isEmpty;){const o=t.parent;t=e.createPositionBefore(o),e.remove(o)}o=e.createPositionBefore(r),function(e,t){const o=t.nodeBefore,n=t.nodeAfter;o.name!=n.name&&e.rename(o,n.name);e.clearAttributes(o),e.setAttributes(Object.fromEntries(n.getAttributes()),o),e.merge(t)}(e,o),Hu(e.model.schema,t,o)&&Lu(e,t,o,n)}}function Hu(e,t,o){const n=t.parent,i=o.parent;return n!=i&&(!e.isLimit(n)&&!e.isLimit(i)&&function(e,t,o){const n=new lc(e,t);for(const e of n.getWalker())if(o.isLimit(e.item))return!1;return!0}(t,o,e))}function ju(e,t,o,n={}){const i=e.createElement("paragraph");e.model.schema.setAllowedAttributes(i,n,e),e.insert(i,t),qu(e,o,e.createPositionAt(i,0))}function qu(e,t,o){t instanceof Sc?e.setSelection(o):t.setTo(o)}function $u(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)}}))}class Uu{constructor(e,t,o){this._firstNode=null,this._lastNode=null,this._lastAutoParagraph=null,this._filterAttributesOf=[],this._affectedStart=null,this._affectedEnd=null,this._nodeToSelect=null,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)}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 S("insertcontent-invalid-insertion-position",this);this.position=o,this._setAffectedBoundaries(this.position)}}getSelectionRange(){return this._nodeToSelect?lc._createOn(this._nodeToSelect):this.model.schema.getNearestSelectionRange(this.position)}getAffectedRange(){return this._affectedStart?new lc(this._affectedStart,this._affectedEnd):null}destroy(){this._affectedStart&&this._affectedStart.detach(),this._affectedEnd&&this._affectedEnd.detach()}_handleNode(e){this._checkAndSplitToAllowedPosition(e)?(this._appendToFragment(e),this._firstNode||(this._firstNode=e),this._lastNode=e):this.schema.isObject(e)||this._handleDisallowedNode(e)}_insertPartialFragment(){if(this._documentFragment.isEmpty)return;const e=pu.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()}_handleDisallowedNode(e){e.is("element")&&this.handleNodes(e.getChildren())}_appendToFragment(e){if(!this.schema.checkChild(this.position,e))throw new S("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=pu.fromPosition(e,"toPrevious")),this._affectedEnd&&!this._affectedEnd.isBefore(e)||(this._affectedEnd&&this._affectedEnd.detach(),this._affectedEnd=pu.fromPosition(e,"toNext"))}_mergeOnLeft(){const e=this._firstNode;if(!(e instanceof Fc))return;if(!this._canMergeLeft(e))return;const t=pu._createBefore(e);t.stickiness="toNext";const o=pu.fromPosition(this.position,"toNext");this._affectedStart.isEqual(t)&&(this._affectedStart.detach(),this._affectedStart=pu._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=pu._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 Fc))return;if(!this._canMergeRight(e))return;const t=pu._createAfter(e);if(t.stickiness="toNext",!this.position.isEqual(t))throw new S("insertcontent-invalid-insertion-position",this);this.position=oc._createAt(t.nodeBefore,"end");const o=pu.fromPosition(this.position,"toPrevious");this._affectedEnd.isEqual(t)&&(this._affectedEnd.detach(),this._affectedEnd=pu._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=pu._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 Fc&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(t,e)}_canMergeRight(e){const t=e.nextSibling;return t instanceof Fc&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(e,t)}_insertAutoParagraph(){this._insertPartialFragment();const e=this.writer.createElement("paragraph");this.writer.insert(e,this.position),this._setAffectedBoundaries(this.position),this._lastAutoParagraph=e,this.position=this.writer.createPositionAt(e,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 this.schema.checkChild(this.position.parent,e)||this._insertAutoParagraph(),!0}_getAllowedIn(e,t){return this.schema.checkChild(e,t)||this.schema.checkChild(e,"paragraph")&&this.schema.checkChild("paragraph",t)?e:this.schema.isLimit(e)?null:this._getAllowedIn(e.parent,t)}}function Wu(e,t,o,n={}){if(!e.schema.isObject(t))throw new S("insertobject-element-not-an-object",e,{object:t});const i=o||e.document.selection;let r=i;n.findOptimalPosition&&e.schema.isBlock(t)&&(r=e.createSelection(e.schema.findOptimalInsertionRange(i,n.findOptimalPosition)));const s=or(i.getSelectedBlocks()),a={};return s&&Object.assign(a,e.schema.getAttributesWithProperty(s,"copyOnReplace",!0)),e.change((o=>{r.isCollapsed||e.deleteContent(r,{doNotAutoparagraph:!0});let i=t;const s=r.anchor.parent;!e.schema.checkChild(s,t)&&e.schema.checkChild(s,"paragraph")&&e.schema.checkChild("paragraph",t)&&(i=o.createElement("paragraph"),o.insert(t,i)),e.schema.setAllowedAttributes(i,a,o);const l=e.insertContent(i,r);return l.isCollapsed||n.setSelection&&function(e,t,o,n){const i=e.model;if("on"==o)return void e.setSelection(t,"on");if("after"!=o)throw new S("insertobject-invalid-place-parameter-value",i);let r=t.nextSibling;if(i.schema.isInline(t))return void e.setSelection(t,"after");const s=r&&i.schema.checkChild(r,"$text");!s&&i.schema.checkChild(t.parent,"paragraph")&&(r=e.createElement("paragraph"),i.schema.setAllowedAttributes(r,n,e),i.insertContent(r,e.createPositionAfter(t)));r&&e.setSelection(r,0)}(o,t,n.setSelection,a),l}))}function Gu(e,t){const{isForward:o,walker:n,unit:i,schema:r,treatEmojiAsSingleUnit:s}=e,{type:a,item:l,nextPosition:c}=t;if("text"==a)return"word"===e.unit?function(e,t){let o=e.position.textNode;o||(o=t?e.position.nodeAfter:e.position.nodeBefore);for(;o&&o.is("$text");){const n=e.position.offset-o.startOffset;if(Ju(o,n,t))o=t?e.position.nodeAfter:e.position.nodeBefore;else{if(Zu(o.data,n,t))break;e.next()}}return e.position}(n,o):function(e,t,o){const n=e.position.textNode;if(n){const i=n.data;let r=e.position.offset-n.startOffset;for(;hr(i,r)||"character"==t&&pr(i,r)||o&&gr(i,r);)e.next(),r=e.position.offset-n.startOffset}return e.position}(n,i,s);if(a==(o?"elementStart":"elementEnd")){if(r.isSelectable(l))return oc._createAt(l,o?"after":"before");if(r.checkChild(c,"$text"))return c}else{if(r.isLimit(l))return void n.skip((()=>!0));if(r.checkChild(c,"$text"))return c}}function Ku(e,t){const o=e.root,n=oc._createAt(o,t?"end":0);return t?new lc(e,n):new lc(n,e)}function Zu(e,t,o){const n=t+(o?0:-1);return' ,.?!:;"-()'.includes(e.charAt(n))}function Ju(e,t,o){return t===(o?e.offsetSize:0)}class Yu extends(X()){constructor(){super(),this.markers=new Bu,this.document=new Eu(this),this.schema=new hd,this._pendingChanges=[],this._currentWriter=null,["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("$container",{allowIn:["$root","$container"]}),this.schema.register("$block",{allowIn:["$root","$container"],isBlock:!0}),this.schema.register("$blockObject",{allowWhere:"$block",isBlock:!0,isObject:!0}),this.schema.register("$inlineObject",{allowWhere:"$text",allowAttributesOf:"$text",isInline:!0,isObject:!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((()=>!0),"$marker"),ad(this),this.document.registerPostFixer(Yc),this.on("insertContent",((e,[t,o])=>{e.return=function(e,t,o){return e.change((n=>{const i=o||e.document.selection;i.isCollapsed||e.deleteContent(i,{doNotAutoparagraph:!0});const r=new Uu(e,n,i.anchor),s=[];let a;if(t.is("documentFragment")){if(t.markers.size){const e=[];for(const[o,n]of t.markers){const{start:t,end:i}=n,r=t.isEqual(i);e.push({position:t,name:o,isCollapsed:r},{position:i,name:o,isCollapsed:r})}e.sort((({position:e},{position:t})=>e.isBefore(t)?1:-1));for(const{position:o,name:i,isCollapsed:r}of e){let e=null,a=null;const l=o.parent===t&&o.isAtStart,c=o.parent===t&&o.isAtEnd;l||c?r&&(a=l?"start":"end"):(e=n.createElement("$marker"),n.insert(e,o)),s.push({name:i,element:e,collapsed:a})}}a=t.getChildren()}else a=[t];r.handleNodes(a);let l=r.getSelectionRange();if(t.is("documentFragment")&&s.length){const e=l?vc.fromRange(l):null,t={};for(let e=s.length-1;e>=0;e--){const{name:o,element:i,collapsed:a}=s[e],l=!t[o];if(l&&(t[o]=[]),i){const e=n.createPositionAt(i,"before");t[o].push(e),n.remove(i)}else{const e=r.getAffectedRange();if(!e){a&&t[o].push(r.position);continue}a?t[o].push(e[a]):t[o].push(l?e.start:e.end)}}for(const[e,[o,i]]of Object.entries(t))o&&i&&o.root===i.root&&o.root.document&&!n.model.markers.has(e)&&n.addMarker(e,{usingOperation:!0,affectsData:!0,range:new lc(o,i)});e&&(l=e.toRange(),e.detach())}l&&(i instanceof Sc?n.setSelection(l):i.setTo(l));const c=r.getAffectedRange()||e.createRange(i.anchor);return r.destroy(),c}))}(this,t,o)})),this.on("insertObject",((e,[t,o,n])=>{e.return=Wu(this,t,o,n)})),this.on("canEditAt",(e=>{const t=!this.document.isReadOnly;e.return=t,t||e.stop()}))}change(e){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new fu,callback:e}),this._runPendingChanges()[0]):e(this._currentWriter)}catch(e){S.rethrowUnexpectedError(e,this)}}enqueueChange(e,t){try{e?"function"==typeof e?(t=e,e=new fu):e instanceof fu||(e=new fu(e)):e=new fu,this._pendingChanges.push({batch:e,callback:t}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(e){S.rethrowUnexpectedError(e,this)}}applyOperation(e){e._execute()}insertContent(e,t,o,...n){const i=Qu(t,o);return this.fire("insertContent",[e,i,o,...n])}insertObject(e,t,o,n,...i){const r=Qu(t,o);return this.fire("insertObject",[e,r,n,n,...i])}deleteContent(e,t){Nu(this,e,t)}modifySelection(e,t){!function(e,t,o={}){const n=e.schema,i="backward"!=o.direction,r=o.unit?o.unit:"character",s=!!o.treatEmojiAsSingleUnit,a=t.focus,l=new ec({boundaries:Ku(a,i),singleCharacters:!0,direction:i?"forward":"backward"}),c={walker:l,schema:n,isForward:i,unit:r,treatEmojiAsSingleUnit:s};let d;for(;d=l.next();){if(d.done)return;const o=Gu(c,d.value);if(o)return void(t instanceof Sc?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(),n=t.getFirstRange();if(!n||n.isCollapsed)return o;const i=n.start.root,r=n.start.getCommonPath(n.end),s=i.getNodeByPath(r);let a;a=n.start.parent==n.end.parent?n:e.createRange(e.createPositionAt(s,n.start.path[r.length]),e.createPositionAt(s,n.end.path[r.length]+1));const l=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!=n){const t=n._getTransformedByMove(a.start,e.createPositionAt(o,0),l)[0],i=e.createRange(e.createPositionAt(o,0),t.start);$u(e.createRange(t.end,e.createPositionAt(o,"end")),e),$u(i,e)}return o}))}(this,e)}hasContent(e,t={}){const o=e instanceof lc?e:lc._createIn(e);if(o.isCollapsed)return!1;const{ignoreWhitespaces:n=!1,ignoreMarkers:i=!1}=t;if(!i)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(!n)return!0;if(-1!==e.data.search(/\S/))return!0}return!1}canEditAt(e){const t=Qu(e);return this.fire("canEditAt",[t])}createPositionFromPath(e,t,o){return new oc(e,t,o)}createPositionAt(e,t){return oc._createAt(e,t)}createPositionAfter(e){return oc._createAfter(e)}createPositionBefore(e){return oc._createBefore(e)}createRange(e,t){return new lc(e,t)}createRangeIn(e){return lc._createIn(e)}createRangeOn(e){return lc._createOn(e)}createSelection(...e){return new bc(...e)}createBatch(e){return new fu(e)}createOperationFromJSON(e){return eu.fromJSON(e,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const e=[];this.fire("_beforeChanges");try{for(;this._pendingChanges.length;){const t=this._pendingChanges[0].batch;this._currentWriter=new Pu(this,t);const o=this._pendingChanges[0].callback(this._currentWriter);e.push(o),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}}finally{this._pendingChanges.length=0,this._currentWriter=null,this.fire("_afterChanges")}return e}}function Qu(e,t){if(e)return e instanceof bc||e instanceof Sc?e:e instanceof fc?t||0===t?new bc(e,t):e.is("rootElement")?new bc(e,"in"):new bc(e,"on"):new bc(e)}class Xu extends nl{constructor(){super(...arguments),this.domEventType="click"}onDomEvent(e){this.fire(e.type,e)}}class eh extends nl{constructor(){super(...arguments),this.domEventType=["mousedown","mouseup","mouseover","mouseout"]}onDomEvent(e){this.fire(e.type,e)}}class th extends nl{constructor(){super(...arguments),this.domEventType=["touchstart","touchend","touchmove"]}onDomEvent(e){this.fire(e.type,e)}}class oh{constructor(e){this.document=e}createDocumentFragment(e){return new ma(this.document,e)}createElement(e,t,o){return new Ms(this.document,e,t,o)}createText(e){return new fs(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 n=o.getChildIndex(e);return this.removeChildren(n,1,o),this.insertChild(n,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 Ms(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){Pe(e)&&void 0===o?t._setStyle(e):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 $s._createAt(e,t)}createPositionAfter(e){return $s._createAfter(e)}createPositionBefore(e){return $s._createBefore(e)}createRange(e,t){return new Us(e,t)}createRangeOn(e){return Us._createOn(e)}createRangeIn(e){return Us._createIn(e)}createSelection(...e){return new Gs(...e)}}const nh=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ih=/^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i,rh=/^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,sh=/^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i,ah=/^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,lh=/\w+\((?:[^()]|\([^()]*\))*\)|\S+/gi,ch=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 dh(e){return e.startsWith("#")?nh.test(e):e.startsWith("rgb")?ih.test(e)||rh.test(e):e.startsWith("hsl")?sh.test(e)||ah.test(e):ch.has(e.toLowerCase())}const uh=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"];function hh(e){return uh.includes(e)}const ph=/^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;function mh(e){return ph.test(e)}const gh=/^[+-]?[0-9]*([.][0-9]+)?%$/;const fh=["repeat-x","repeat-y","repeat","space","round","no-repeat"];function bh(e){return fh.includes(e)}const kh=["center","top","bottom","left","right"];function wh(e){return kh.includes(e)}const _h=["fixed","scroll","local"];function yh(e){return _h.includes(e)}const Ah=/^url\(/;function Ch(e){return Ah.test(e)}function vh(e=""){if(""===e)return{top:void 0,right:void 0,bottom:void 0,left:void 0};const t=Dh(e),o=t[0],n=t[2]||o,i=t[1]||o;return{top:o,bottom:n,right:i,left:t[3]||i}}function xh(e){return t=>{const{top:o,right:n,bottom:i,left:r}=t,s=[];return[o,n,r,i].every((e=>!!e))?s.push([e,Eh(t)]):(o&&s.push([e+"-top",o]),n&&s.push([e+"-right",n]),i&&s.push([e+"-bottom",i]),r&&s.push([e+"-left",r])),s}}function Eh({top:e,right:t,bottom:o,left:n}){const i=[];return n!==t?i.push(e,t,o,n):o!==e?i.push(e,t,o):t!==e?i.push(e,t):i.push(e),i.join(" ")}function Dh(e){const t=e.trim().slice(0,1500).matchAll(lh);return Array.from(t).map((e=>e[0]))}function Bh(e){e.setNormalizer("background",(e=>{const t={},o=Dh(e);for(const e of o)bh(e)?(t.repeat=t.repeat||[],t.repeat.push(e)):wh(e)?(t.position=t.position||[],t.position.push(e)):yh(e)?t.attachment=e:dh(e)?t.color=e:Ch(e)&&(t.image=e);return{path:"background",value:t}})),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 Sh(e){e.setNormalizer("border",(e=>{const{color:t,style:o,width:n}=zh(e);return{path:"border",value:{color:vh(t),style:vh(o),width:vh(n)}}})),e.setNormalizer("border-top",Th("top")),e.setNormalizer("border-right",Th("right")),e.setNormalizer("border-bottom",Th("bottom")),e.setNormalizer("border-left",Th("left")),e.setNormalizer("border-color",Ih("color")),e.setNormalizer("border-width",Ih("width")),e.setNormalizer("border-style",Ih("style")),e.setNormalizer("border-top-color",Fh("color","top")),e.setNormalizer("border-top-style",Fh("style","top")),e.setNormalizer("border-top-width",Fh("width","top")),e.setNormalizer("border-right-color",Fh("color","right")),e.setNormalizer("border-right-style",Fh("style","right")),e.setNormalizer("border-right-width",Fh("width","right")),e.setNormalizer("border-bottom-color",Fh("color","bottom")),e.setNormalizer("border-bottom-style",Fh("style","bottom")),e.setNormalizer("border-bottom-width",Fh("width","bottom")),e.setNormalizer("border-left-color",Fh("color","left")),e.setNormalizer("border-left-style",Fh("style","left")),e.setNormalizer("border-left-width",Fh("width","left")),e.setExtractor("border-top",Rh("top")),e.setExtractor("border-right",Rh("right")),e.setExtractor("border-bottom",Rh("bottom")),e.setExtractor("border-left",Rh("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",xh("border-color")),e.setReducer("border-style",xh("border-style")),e.setReducer("border-width",xh("border-width")),e.setReducer("border-top",Oh("top")),e.setReducer("border-right",Oh("right")),e.setReducer("border-bottom",Oh("bottom")),e.setReducer("border-left",Oh("left")),e.setReducer("border",function(){return t=>{const o=Mh(t,"top"),n=Mh(t,"right"),i=Mh(t,"bottom"),r=Mh(t,"left"),s=[o,n,i,r],a={width:e(s,"width"),style:e(s,"style"),color:e(s,"color")},l=Nh(a,"all");if(l.length)return l;const c=Object.entries(a).reduce(((e,[t,o])=>(o&&(e.push([`border-${t}`,o]),s.forEach((e=>delete e[t]))),e)),[]);return[...c,...Nh(o,"top"),...Nh(n,"right"),...Nh(i,"bottom"),...Nh(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 Th(e){return t=>{const{color:o,style:n,width:i}=zh(t),r={};return void 0!==o&&(r.color={[e]:o}),void 0!==n&&(r.style={[e]:n}),void 0!==i&&(r.width={[e]:i}),{path:"border",value:r}}}function Ih(e){return t=>({path:"border",value:Ph(t,e)})}function Ph(e,t){return{[t]:vh(e)}}function Fh(e,t){return o=>({path:"border",value:{[e]:{[t]:o}}})}function Rh(e){return(t,o)=>{if(o.border)return Mh(o.border,e)}}function Mh(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 zh(e){const t={},o=Dh(e);for(const e of o)mh(e)||/thin|medium|thick/.test(e)?t.width=e:hh(e)?t.style=e:t.color=e;return t}function Oh(e){return t=>Nh(t,e)}function Nh(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 n=o.map((t=>e[t])).join(" ");return["all"==t?["border",n]:[`border-${t}`,n]]}return"all"==t?[]:o.map((o=>[`border-${t}-${o}`,e[o]]))}function Vh(e){var t;e.setNormalizer("padding",(t="padding",e=>({path:t,value:vh(e)}))),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",xh("padding")),e.setStyleRelation("padding",["padding-top","padding-right","padding-bottom","padding-left"])}class Lh{constructor(e){if(this.crashes=[],this.state="initializing",this._now=Date.now,this.crashes=[],this._crashNumberLimit="number"==typeof e.crashNumberLimit?e.crashNumberLimit:3,this._minimumNonErrorTimePeriod="number"==typeof e.minimumNonErrorTimePeriod?e.minimumNonErrorTimePeriod:5e3,this._boundErrorHandler=e=>{const t="error"in e?e.error:e.reason;t instanceof Error&&this._handleError(t,e)},this._listeners={},!this._restart)throw new Error("The Watchdog class was split into the abstract `Watchdog` class and the `EditorWatchdog` class. Please, use `EditorWatchdog` if you have used the `Watchdog` class previously.")}destroy(){this._stopErrorHandling(),this._listeners={}}on(e,t){this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t)}off(e,t){this._listeners[e]=this._listeners[e].filter((e=>e!==t))}_fire(e,...t){const o=this._listeners[e]||[];for(const e of o)e.apply(this,[null,...t])}_startErrorHandling(){window.addEventListener("error",this._boundErrorHandler),window.addEventListener("unhandledrejection",this._boundErrorHandler)}_stopErrorHandling(){window.removeEventListener("error",this._boundErrorHandler),window.removeEventListener("unhandledrejection",this._boundErrorHandler)}_handleError(e,t){if(this._shouldReactToError(e)){this.crashes.push({message:e.message,stack:e.stack,filename:t instanceof ErrorEvent?t.filename:void 0,lineno:t instanceof ErrorEvent?t.lineno:void 0,colno:t instanceof ErrorEvent?t.colno:void 0,date:this._now()});const o=this._shouldRestart();this.state="crashed",this._fire("stateChange"),this._fire("error",{error:e,causesRestart:o}),o?this._restart():(this.state="crashedPermanently",this._fire("stateChange"))}}_shouldReactToError(e){return e.is&&e.is("CKEditorError")&&void 0!==e.context&&null!==e.context&&"ready"===this.state&&this._isErrorComingFromThisItem(e)}_shouldRestart(){if(this.crashes.length<=this._crashNumberLimit)return!0;return(this.crashes[this.crashes.length-1].date-this.crashes[this.crashes.length-1-this._crashNumberLimit].date)/this._crashNumberLimit>this._minimumNonErrorTimePeriod}}const Hh=function(e,t,o){var n=!0,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return W(o)&&(n="leading"in o?!!o.leading:n,i="trailing"in o?!!o.trailing:i),bl(e,t,{leading:n,maxWait:t,trailing:i})};function jh(e,t=new Set){const o=[e],n=new Set;let i=0;for(;o.length>i;){const e=o[i++];if(!n.has(e)&&qh(e)&&!t.has(e))if(n.add(e),Symbol.iterator in e)try{for(const t of e)o.push(t)}catch(e){}else for(const t in e)"defaultValue"!==t&&o.push(e[t])}return n}function qh(e){const t=Object.prototype.toString.call(e),o=typeof e;return!("number"===o||"boolean"===o||"string"===o||"symbol"===o||"function"===o||"[object Date]"===t||"[object RegExp]"===t||"[object Module]"===t||null==e||e._watchdogExcluded||e instanceof EventTarget||e instanceof Event)}function $h(e,t,o=new Set){if(e===t&&("object"==typeof(n=e)&&null!==n))return!0;var n;const i=jh(e,o),r=jh(t,o);for(const e of i)if(r.has(e))return!0;return!1}class Uh extends Lh{constructor(e,t={}){super(t),this._editor=null,this._lifecyclePromise=null,this._initUsingData=!0,this._editables={},this._throttledSave=Hh(this._save.bind(this),"number"==typeof t.saveInterval?t.saveInterval:5e3),e&&(this._creator=(t,o)=>e.create(t,o)),this._destructor=e=>e.destroy()}get editor(){return this._editor}get _item(){return this._editor}setCreator(e){this._creator=e}setDestructor(e){this._destructor=e}_restart(){return Promise.resolve().then((()=>(this.state="initializing",this._fire("stateChange"),this._destroy()))).catch((e=>{console.error("An error happened during the editor destroying.",e)})).then((()=>{const e={},t=[],o=this._config.rootsAttributes||{},n={};for(const[i,r]of Object.entries(this._data.roots))r.isLoaded?(e[i]="",n[i]=o[i]||{}):t.push(i);const i={...this._config,extraPlugins:this._config.extraPlugins||[],lazyRoots:t,rootsAttributes:n,_watchdogInitialData:this._data};return delete i.initialData,i.extraPlugins.push(Wh),this._initUsingData?this.create(e,i,i.context):Tn(this._elementOrData)?this.create(this._elementOrData,i,i.context):this.create(this._editables,i,i.context)})).then((()=>{this._fire("restart")}))}create(e=this._elementOrData,t=this._config,o){return this._lifecyclePromise=Promise.resolve(this._lifecyclePromise).then((()=>(super._startErrorHandling(),this._elementOrData=e,this._initUsingData="string"==typeof e||Object.keys(e).length>0&&"string"==typeof Object.values(e)[0],this._config=this._cloneEditorConfiguration(t)||{},this._config.context=o,this._creator(e,this._config)))).then((e=>{this._editor=e,e.model.document.on("change:data",this._throttledSave),this._lastDocumentVersion=e.model.document.version,this._data=this._getData(),this._initUsingData||(this._editables=this._getEditables()),this.state="ready",this._fire("stateChange")})).finally((()=>{this._lifecyclePromise=null})),this._lifecyclePromise}destroy(){return this._lifecyclePromise=Promise.resolve(this._lifecyclePromise).then((()=>(this.state="destroyed",this._fire("stateChange"),super.destroy(),this._destroy()))).finally((()=>{this._lifecyclePromise=null})),this._lifecyclePromise}_destroy(){return Promise.resolve().then((()=>{this._stopErrorHandling(),this._throttledSave.cancel();const e=this._editor;return this._editor=null,e.model.document.off("change:data",this._throttledSave),this._destructor(e)}))}_save(){const e=this._editor.model.document.version;try{this._data=this._getData(),this._initUsingData||(this._editables=this._getEditables()),this._lastDocumentVersion=e}catch(e){console.error(e,"An error happened during restoring editor data. Editor will be restored from the previously saved data.")}}_setExcludedProperties(e){this._excludedProps=e}_getData(){const e=this._editor,t=e.model.document.roots.filter((e=>e.isAttached()&&"$graveyard"!=e.rootName)),{plugins:o}=e,n=o.has("CommentsRepository")&&o.get("CommentsRepository"),i=o.has("TrackChanges")&&o.get("TrackChanges"),r={roots:{},markers:{},commentThreads:JSON.stringify([]),suggestions:JSON.stringify([])};t.forEach((e=>{r.roots[e.rootName]={content:JSON.stringify(Array.from(e.getChildren())),attributes:JSON.stringify(Array.from(e.getAttributes())),isLoaded:e._isLoaded}}));for(const t of e.model.markers)t._affectsData&&(r.markers[t.name]={rangeJSON:t.getRange().toJSON(),usingOperation:t._managedUsingOperations,affectsData:t._affectsData});return n&&(r.commentThreads=JSON.stringify(n.getCommentThreads({toJSON:!0,skipNotAttached:!0}))),i&&(r.suggestions=JSON.stringify(i.getSuggestions({toJSON:!0,skipNotAttached:!0}))),r}_getEditables(){const e={};for(const t of this.editor.model.document.getRootNames()){const o=this.editor.ui.getEditableElement(t);o&&(e[t]=o)}return e}_isErrorComingFromThisItem(e){return $h(this._editor,e.context,this._excludedProps)}_cloneEditorConfiguration(e){return Sn(e,((e,t)=>Tn(e)||"context"===t?e:void 0))}}class Wh{constructor(e){this.editor=e,this._data=e.config.get("_watchdogInitialData")}init(){this.editor.data.on("init",(e=>{e.stop(),this.editor.model.enqueueChange({isUndoable:!1},(e=>{this._restoreCollaborationData(),this._restoreEditorData(e)})),this.editor.data.fire("ready")}),{priority:999})}_createNode(e,t){if("name"in t){const o=e.createElement(t.name,t.attributes);if(t.children)for(const n of t.children)o._appendChild(this._createNode(e,n));return o}return e.createText(t.data,t.attributes)}_restoreEditorData(e){const t=this.editor;Object.entries(this._data.roots).forEach((([o,{content:n,attributes:i}])=>{const r=JSON.parse(n),s=JSON.parse(i),a=t.model.document.getRoot(o);for(const[t,o]of s)e.setAttribute(t,o,a);for(const t of r){const o=this._createNode(e,t);e.insert(o,a,"end")}})),Object.entries(this._data.markers).forEach((([o,n])=>{const{document:i}=t.model,{rangeJSON:{start:r,end:s},...a}=n,l=i.getRoot(r.root),c=e.createPositionFromPath(l,r.path,r.stickiness),d=e.createPositionFromPath(l,s.path,s.stickiness),u=e.createRange(c,d);e.addMarker(o,{range:u,...a})}))}_restoreCollaborationData(){const e=JSON.parse(this._data.commentThreads),t=JSON.parse(this._data.suggestions);e.forEach((e=>{const t=this.editor.config.get("collaboration.channelId"),o=this.editor.plugins.get("CommentsRepository");if(o.hasCommentThread(e.threadId)){o.getCommentThread(e.threadId).remove()}o.addCommentThread({channelId:t,...e})})),t.forEach((e=>{const t=this.editor.plugins.get("TrackChangesEditing");if(t.hasSuggestion(e.id)){t.getSuggestion(e.id).attributes=e.attributes}else t.addSuggestionData(e)}))}}const Gh=Symbol("MainQueueId");class Kh{constructor(){this._onEmptyCallbacks=[],this._queues=new Map,this._activeActions=0}onEmpty(e){this._onEmptyCallbacks.push(e)}enqueue(e,t){const o=e===Gh;this._activeActions++,this._queues.get(e)||this._queues.set(e,Promise.resolve());const n=(o?Promise.all(this._queues.values()):Promise.all([this._queues.get(Gh),this._queues.get(e)])).then(t),i=n.catch((()=>{}));return this._queues.set(e,i),n.finally((()=>{this._activeActions--,this._queues.get(e)===i&&0===this._activeActions&&this._onEmptyCallbacks.forEach((e=>e()))}))}}function Zh(e){return Array.isArray(e)?e:[e]}class Jh{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 S("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()}}class Yh extends ar{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)}}const Qh="contentEditing",Xh="common";class ep{constructor(e){this.keystrokeInfos=new Map,this._editor=e;const t=e.config.get("menuBar.isVisible"),o=e.locale.t;this.addKeystrokeInfoCategory({id:Qh,label:o("Content editing keystrokes"),description:o("These keyboard shortcuts allow for quick access to content editing features.")});const n=[{label:o("Close contextual balloons, dropdowns, and dialogs"),keystroke:"Esc"},{label:o("Open the accessibility help dialog"),keystroke:"Alt+0"},{label:o("Move focus between form fields (inputs, buttons, etc.)"),keystroke:[["Tab"],["Shift+Tab"]]},{label:o("Move focus to the toolbar, navigate between toolbars"),keystroke:"Alt+F10",mayRequireFn:!0},{label:o("Navigate through the toolbar or menu bar"),keystroke:[["arrowup"],["arrowright"],["arrowdown"],["arrowleft"]]},{label:o("Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content."),keystroke:[["Enter"],["Space"]]}];t&&n.push({label:o("Move focus to the menu bar, navigate between menu bars"),keystroke:"Alt+F9",mayRequireFn:!0}),this.addKeystrokeInfoCategory({id:"navigation",label:o("User interface and content navigation keystrokes"),description:o("Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface."),groups:[{id:"common",keystrokes:n}]})}addKeystrokeInfoCategory({id:e,label:t,description:o,groups:n}){this.keystrokeInfos.set(e,{id:e,label:t,description:o,groups:new Map}),this.addKeystrokeInfoGroup({categoryId:e,id:Xh}),n&&n.forEach((t=>{this.addKeystrokeInfoGroup({categoryId:e,...t})}))}addKeystrokeInfoGroup({categoryId:e=Qh,id:t,label:o,keystrokes:n}){const i=this.keystrokeInfos.get(e);if(!i)throw new S("accessibility-unknown-keystroke-info-category",this._editor,{groupId:t,categoryId:e});i.groups.set(t,{id:t,label:o,keystrokes:n||[]})}addKeystrokeInfos({categoryId:e=Qh,groupId:t=Xh,keystrokes:o}){if(!this.keystrokeInfos.has(e))throw new S("accessibility-unknown-keystroke-info-category",this._editor,{categoryId:e,keystrokes:o});const n=this.keystrokeInfos.get(e);if(!n.groups.has(t))throw new S("accessibility-unknown-keystroke-info-group",this._editor,{groupId:t,categoryId:e,keystrokes:o});n.groups.get(t).keystrokes.push(...o)}}function tp(e){return Object.getPrototypeOf(e).constructor.editorName}function op(e){if(!e)return;const t=Array.isArray(e)?{items:e}:e,o=function e(t){return t.flatMap((t=>"string"==typeof t?[t]:e(t.items)))}(t.items||[]);return{isMultiline:o.includes("-"),shouldNotGroupWhenFull:!!t.shouldNotGroupWhenFull,items:(n=o,n.filter((e=>"|"!==e&&"-"!==e)))};var n}function np(){let e="unknown",t="unknown";return c.isMac?e="mac":c.isWindows?e="windows":c.isiOS?e="ios":c.isAndroid&&(e="android"),c.isGecko?t="gecko":c.isBlink?t="blink":c.isSafari&&(t="safari"),{os:e,browser:t}}function ip(){return localStorage.getItem("__ckeditor-session-id")||localStorage.setItem("__ckeditor-session-id",E()),localStorage.getItem("__ckeditor-session-id")}function rp(){return s.window.CKEDITOR_PAGE_SESSION_ID=s.window.CKEDITOR_PAGE_SESSION_ID||E(),s.window.CKEDITOR_PAGE_SESSION_ID}class sp extends(X()){static get editorName(){return"Editor"}constructor(e={}){if(super(),"sanitizeHtml"in e)throw new S("editor-config-sanitizehtml-not-supported");const t=this.constructor,{translations:o,...n}=t.defaultConfig||{},{translations:i=o,...r}=e,s=e.language||n.language;this._context=e.context||new Ar({language:s,translations:i}),this._context._addEditor(this,!e.context);const a=Array.from(t.builtinPlugins||[]);this.config=new In(r,n),this.config.define("plugins",a),this.config.define(this._context._getEditorConfig()),function(e){let t=e.get("licenseKey");!t&&window.CKEDITOR_GLOBAL_LICENSE_KEY&&(t=window.CKEDITOR_GLOBAL_LICENSE_KEY,e.set("licenseKey",t));if(!t)throw new S("license-key-missing")}(this.config),this.plugins=new yr(this,a,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this._readOnlyLocks=new Set,this.commands=new Jh,this.set("state","initializing"),this.once("ready",(()=>this.state="ready"),{priority:"high"}),this.once("destroy",(()=>this.state="destroyed"),{priority:"high"}),this.model=new Yu,this.on("change:isReadOnly",(()=>{this.model.document.isReadOnly=this.isReadOnly}));const l=new Is;this.data=new Td(this.model,l),this.editing=new ud(this.model,l),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new Id([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 Yh(this),this.keystrokes.listenTo(this.editing.view.document),this.accessibility=new ep(this),function(e){const t=e.config.get("licenseKey"),o=window[Symbol.for("cke distribution")]||"sh";function n(t){e.enableReadOnlyMode(Symbol("invalidLicense")),e._showLicenseError(t)}if("GPL"==t)return void("cloud"==o&&n("distributionChannel"));const i=function(e){const t=e.split(".");return 3!=t.length?null:t[1]}(t);if(!i)return void n("invalid");const r=ur(i);if(!r)return void n("invalid");if(!function(e){return["exp","jti","vc"].every((t=>t in e))}(r))return void n("invalid");if(r.distributionChannel&&!Si(r.distributionChannel).includes(o))return void n("distributionChannel");if(function(e){const t=Array.isArray(e)?e:[e],o=function(){const e=[];for(let t=0;t<256;t++){let o=t;for(let e=0;e<8;e++)1&o?o=3988292384^o>>>1:o>>>=1;e[t]=o}return e}();let n=-1;const i=t.map((e=>Array.isArray(e)?e.join(""):String(e))).join("");for(let e=0;e>>8^o[255&(n^i.charCodeAt(e))];return n=~n>>>0,n.toString(16).padStart(8,"0")}(function(e){return Object.getOwnPropertyNames(e).sort().filter((t=>"vc"!=t&&null!=e[t])).map((t=>e[t]))}(r))!=r.vc.toLowerCase())return void n("invalid");if(new Date(1e3*r.exp)0&&!function(e){const{hostname:t}=new URL(window.location.href);if(e.includes(t))return!0;const o=t.split(".");return e.filter((e=>e.includes("*"))).map((e=>e.split("."))).filter((e=>e.length<=o.length)).map((e=>Array(o.length-e.length).fill("*"===e[0]?"*":"").concat(e))).some((e=>o.every(((t,o)=>e[o]===t||"*"===e[o]))))}(s))return void n("domainLimit");if(["evaluation","trial"].includes(r.licenseType)&&1e3*r.exp{n(`${t}Limit`)}),6e5);e.on("destroy",(()=>{clearTimeout(o)}))}r.usageEndpoint&&e.once("ready",(()=>{const o={requestId:E(),requestTime:Math.round(Date.now()/1e3),license:t,editor:lp(e)};e._sendUsageRequest(r.usageEndpoint,o).then((e=>{const{status:t,message:o}=e;o&&console.warn(o),"ok"!=t&&n("usageLimit")}),(()=>{var e,t;e="license-key-validation-endpoint-not-reachable",t={url:r.usageEndpoint},console.error(...P(e,t))}))}),{priority:"high"})}(this)}get isReadOnly(){return this._readOnlyLocks.size>0}set isReadOnly(e){throw new S("editor-isreadonly-has-no-setter")}enableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new S("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)||(this._readOnlyLocks.add(e),1===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!0,!1))}disableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new S("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)&&(this._readOnlyLocks.delete(e),0===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!1,!0))}setData(e){this.data.set(e)}getData(e){return this.data.get(e)}initPlugins(){const e=this.config,t=e.get("plugins"),o=e.get("removePlugins")||[],n=e.get("extraPlugins")||[],i=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(n),o,i)}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,...t){try{return this.commands.execute(e,...t)}catch(e){S.rethrowUnexpectedError(e,this)}}focus(){this.editing.view.focus()}static create(...e){throw new Error("This is an abstract method.")}_showLicenseError(e,t){setTimeout((()=>{if("invalid"==e)throw new S("invalid-license-key");if("expired"==e)throw new S("license-key-expired");if("domainLimit"==e)throw new S("license-key-domain-limit");if("featureNotAllowed"==e)throw new S("license-key-plugin-not-allowed",null,{pluginName:t});if("evaluationLimit"==e)throw new S("license-key-evaluation-limit");if("trialLimit"==e)throw new S("license-key-trial-limit");if("developmentLimit"==e)throw new S("license-key-development-limit");if("usageLimit"==e)throw new S("license-key-usage-limit");if("distributionChannel"==e)throw new S("license-key-invalid-distribution-channel")}),0),this._showLicenseError=()=>{}}async _sendUsageRequest(e,t){const o=new Headers({"Content-Type":"application/json"}),n=await fetch(new URL(e),{method:"POST",headers:o,body:JSON.stringify(t)});if(!n.ok)throw new Error(`HTTP Response: ${n.status}`);return n.json()}}sp.Context=Ar,sp.EditorWatchdog=Uh,sp.ContextWatchdog=class extends Lh{constructor(e,t={}){super(t),this._watchdogs=new Map,this._context=null,this._contextProps=new Set,this._actionQueues=new Kh,this._watchdogConfig=t,this._creator=t=>e.create(t),this._destructor=e=>e.destroy(),this._actionQueues.onEmpty((()=>{"initializing"===this.state&&(this.state="ready",this._fire("stateChange"))}))}setCreator(e){this._creator=e}setDestructor(e){this._destructor=e}get context(){return this._context}create(e={}){return this._actionQueues.enqueue(Gh,(()=>(this._contextConfig=e,this._create())))}getItem(e){return this._getWatchdog(e)._item}getItemState(e){return this._getWatchdog(e).state}add(e){const t=Zh(e);return Promise.all(t.map((e=>this._actionQueues.enqueue(e.id,(()=>{if("destroyed"===this.state)throw new Error("Cannot add items to destroyed watchdog.");if(!this._context)throw new Error("Context was not created yet. You should call the `ContextWatchdog#create()` method first.");let t;if(this._watchdogs.has(e.id))throw new Error(`Item with the given id is already added: '${e.id}'.`);if("editor"===e.type)return t=new Uh(null,this._watchdogConfig),t.setCreator(e.creator),t._setExcludedProperties(this._contextProps),e.destructor&&t.setDestructor(e.destructor),this._watchdogs.set(e.id,t),t.on("error",((o,{error:n,causesRestart:i})=>{this._fire("itemError",{itemId:e.id,error:n}),i&&this._actionQueues.enqueue(e.id,(()=>new Promise((o=>{const n=()=>{t.off("restart",n),this._fire("itemRestart",{itemId:e.id}),o()};t.on("restart",n)}))))})),t.create(e.sourceElementOrData,e.config,this._context);throw new Error(`Not supported item type: '${e.type}'.`)})))))}remove(e){const t=Zh(e);return Promise.all(t.map((e=>this._actionQueues.enqueue(e,(()=>{const t=this._getWatchdog(e);return this._watchdogs.delete(e),t.destroy()})))))}destroy(){return this._actionQueues.enqueue(Gh,(()=>(this.state="destroyed",this._fire("stateChange"),super.destroy(),this._destroy())))}_restart(){return this._actionQueues.enqueue(Gh,(()=>(this.state="initializing",this._fire("stateChange"),this._destroy().catch((e=>{console.error("An error happened during destroying the context or items.",e)})).then((()=>this._create())).then((()=>this._fire("restart"))))))}_create(){return Promise.resolve().then((()=>(this._startErrorHandling(),this._creator(this._contextConfig)))).then((e=>(this._context=e,this._contextProps=jh(this._context),Promise.all(Array.from(this._watchdogs.values()).map((e=>(e._setExcludedProperties(this._contextProps),e.create(void 0,void 0,this._context))))))))}_destroy(){return Promise.resolve().then((()=>{this._stopErrorHandling();const e=this._context;return this._context=null,this._contextProps=new Set,Promise.all(Array.from(this._watchdogs.values()).map((e=>e.destroy()))).then((()=>this._destructor(e)))}))}_getWatchdog(e){const t=this._watchdogs.get(e);if(!t)throw new Error(`Item with the given id was not registered: ${e}.`);return t}_isErrorComingFromThisItem(e){for(const t of this._watchdogs.values())if(t._isErrorComingFromThisItem(e))return!1;return $h(this._context,e.context)}};const ap=sp;function lp(e){const t=function(e){return{sessionId:ip(),pageSessionId:rp(),hostname:window.location.hostname,version:globalThis.CKEDITOR_VERSION,type:tp(e),plugins:(t=e.plugins,Array.from(t).filter((([e])=>!!e.pluginName)).map((([e])=>{const{pluginName:t,isContextPlugin:o,isOfficialPlugin:n,isPremiumPlugin:i}=e;return{isContext:!!o,isOfficial:!!n,isPremium:!!i,name:t}}))),distribution:{channel:window[Symbol.for("cke distribution")]||"sh"},env:np(),integration:Object.create(null),menuBar:{isVisible:!!e.config.get("menuBar.isVisible")},language:{ui:e.locale.uiLanguage,content:e.locale.contentLanguage},toolbar:{main:op(e.config.get("toolbar")),block:op(e.config.get("blockToolbar")),balloon:op(e.config.get("balloonToolbar"))}};var t}(e);return e.fire("collectUsageData",{setUsageData:function(e,o){if(void 0!==qr(t,e))throw new S("editor-usage-data-path-already-set",{path:e});Ur(t,e,o)}}),t}function cp(e){return class extends e{updateSourceElement(e){if(!this.sourceElement)throw new S("editor-missing-sourceelement",this);const t=this.config.get("updateSourceElementOnDestroy"),o=this.sourceElement instanceof HTMLTextAreaElement;if(!t&&!o)return void ei(this.sourceElement,"");const n="string"==typeof e?e:this.data.get();ei(this.sourceElement,n)}}}cp.updateSourceElement=cp(Object).prototype.updateSourceElement;class dp extends Cr{static get pluginName(){return"PendingActions"}static get isOfficialPlugin(){return!0}init(){this.set("hasAny",!1),this._actions=new tr({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if("string"!=typeof e)throw new S("pendingactions-add-invalid-message",this);const t=new(X());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]()}}const up={bold:'',cancel:'',caption:'',check:'',cog:'',colorPalette:'',eraser:'',history:'',image:'',imageUpload:'',imageAssetManager:'',imageUrl:'',lowVision:'',textAlternative:'',loupe:'',previousArrow:'',nextArrow:'',importExport:'',paragraph:'',plus:'',text:'',alignBottom:'',alignMiddle:'',alignTop:'',alignLeft:'',alignCenter:'',alignRight:'',alignJustify:'',objectLeft:'',objectCenter:'',objectRight:'',objectFullWidth:'',objectInline:'',objectBlockLeft:'',objectBlockRight:'',objectSizeCustom:'',objectSizeFull:'',objectSizeLarge:'',objectSizeSmall:'',objectSizeMedium:'',pencil:'',pilcrow:'',quote:'',threeVerticalDots:'',dragIndicator:'',redo:'',undo:'',bulletedList:'',numberedList:'',todoList:'',codeBlock:'',browseFiles:'',heading1:'',heading2:'',heading3:'',heading4:'',heading5:'',heading6:'',horizontalLine:'',html:'',indent:'',outdent:'',table:'',source:'\n',remove:'',bookmark:'',bookmarkInline:'',emoji:'\n'};class hp extends tr{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 S("ui-viewcollection-delegate-wrong-events",this);return{to:t=>{for(const o of this)for(const n of e)o.delegate(n).to(t);this.on("add",((o,n)=>{for(const o of e)n.delegate(o).to(t)})),this.on("remove",((o,n)=>{for(const o of e)n.stopDelegating(o,t)}))}}}_renderViewIntoCollectionParent(e,t){e.isRendered||e.render(),e.element&&this._parentElement&&this._parentElement.insertBefore(e.element,this._parentElement.children[t])}remove(e){return super.remove(e)}}class pp extends(V()){constructor(e){super(),Object.assign(this,Cp(Ap(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,intoFragment:!1,isApplying:!0,revertData:this._revertData}),e}revert(e){if(!this._revertData)throw new S("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)Sp(o)?yield o:Tp(o)&&(yield*e(o))}(this)}static bind(e,t){return{to:(o,n)=>new gp({eventNameOrFunction:o,attribute:o,observable:e,emitter:t,callback:n}),if:(o,n,i)=>new fp({observable:e,emitter:t,attribute:o,valueIfTrue:n,callback:i})}}static extend(e,t){if(e._isRendered)throw new S("template-extend-render",[this,e]);Dp(e,Cp(Ap(t)))}_renderNode(e){let t;if(t=e.node?this.tag&&this.text:this.tag?this.text:!this.text,t)throw new S("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(""),bp(this.text)?this._bindToObservable({schema:this.text,updater:wp(t),data:e}):t.textContent=this.text.join(""),t}_renderAttributes(e){if(!this.attributes)return;const t=e.node,o=e.revertData;for(const n in this.attributes){const i=t.getAttribute(n),r=this.attributes[n];o&&(o.attributes[n]=i);const s=Pp(r)?r[0].ns:null;if(bp(r)){const a=Pp(r)?r[0].value:r;o&&Fp(n)&&a.unshift(i),this._bindToObservable({schema:a,updater:_p(t,n,s),data:e})}else if("style"==n&&"string"!=typeof r[0])this._renderStyleAttribute(r[0],e);else{o&&i&&Fp(n)&&r.unshift(i);const e=r.map((e=>e&&e.value||e)).reduce(((e,t)=>e.concat(t)),[]).reduce(xp,"");Bp(e)||t.setAttributeNS(s,n,e)}}}_renderStyleAttribute(e,t){const o=t.node;for(const n in e){const i=e[n];bp(i)?this._bindToObservable({schema:[i],updater:yp(o,n),data:t}):o.style[n]=i}}_renderElementChildren(e){const t=e.node,o=e.intoFragment?document.createDocumentFragment():t,n=e.isApplying;let i=0;for(const r of this.children)if(Ip(r)){if(!n){r.setParent(t);for(const e of r)o.appendChild(e.element)}}else if(Sp(r))n||(r.isRendered||r.render(),o.appendChild(r.element));else if(Rn(r))o.appendChild(r);else if(n){const t={children:[],bindings:[],attributes:{}};e.revertData.children.push(t),r._renderNode({intoFragment:!1,node:o.childNodes[i++],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[n,i]=t.split("@");return o.activateDomEventListener(n,i,e)}));e.revertData&&e.revertData.bindings.push(o)}}_bindToObservable({schema:e,updater:t,data:o}){const n=o.revertData;kp(e,t,o);const i=e.filter((e=>!Bp(e))).filter((e=>e.observable)).map((n=>n.activateAttributeListener(e,t,o)));n&&n.bindings.push(i)}_revertTemplateFromNode(e,t){for(const e of t.bindings)for(const t of e)t();if(t.text)return void(e.textContent=t.text);const o=e;for(const e in t.attributes){const n=t.attributes[e];null===n?o.removeAttribute(e):o.setAttribute(e,n)}for(let e=0;ekp(e,t,o);return this.emitter.listenTo(this.observable,`change:${this.attribute}`,n),()=>{this.emitter.stopListening(this.observable,`change:${this.attribute}`,n)}}}class gp extends mp{constructor(e){super(e),this.eventNameOrFunction=e.eventNameOrFunction}activateDomEventListener(e,t,o){const n=(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,n),()=>{this.emitter.stopListening(o.node,e,n)}}}class fp extends mp{constructor(e){super(e),this.valueIfTrue=e.valueIfTrue}getValue(e){return!Bp(super.getValue(e))&&(this.valueIfTrue||!0)}}function bp(e){return!!e&&(e.value&&(e=e.value),Array.isArray(e)?e.some(bp):e instanceof mp)}function kp(e,t,{node:o}){const n=function(e,t){return e.map((e=>e instanceof mp?e.getValue(t):e))}(e,o);let i;i=1==e.length&&e[0]instanceof fp?n[0]:n.reduce(xp,""),Bp(i)?t.remove():t.set(i)}function wp(e){return{set(t){e.textContent=t},remove(){e.textContent=""}}}function _p(e,t,o){return{set(n){e.setAttributeNS(o,t,n)},remove(){e.removeAttributeNS(o,t)}}}function yp(e,t){return{set(o){e.style[t]=o},remove(){e.style[t]=null}}}function Ap(e){return Sn(e,(e=>{if(e&&(e instanceof mp||Tp(e)||Sp(e)||Ip(e)))return e}))}function Cp(e){if("string"==typeof e?e=function(e){return{text:[e]}}(e):e.text&&function(e){e.text=Si(e.text)}(e),e.on&&(e.eventListeners=function(e){for(const t in e)vp(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=Si(e[t].value)),vp(e,t)}(e.attributes);const t=[];if(e.children)if(Ip(e.children))t.push(e.children);else for(const o of e.children)Tp(o)||Sp(o)||Rn(o)?t.push(o):t.push(new pp(o));e.children=t}return e}function vp(e,t){e[t]=Si(e[t])}function xp(e,t){return Bp(t)?e:Bp(e)?t:`${e} ${t}`}function Ep(e,t){for(const o in t)e[o]?e[o].push(...t[o]):e[o]=t[o]}function Dp(e,t){if(t.attributes&&(e.attributes||(e.attributes={}),Ep(e.attributes,t.attributes)),t.eventListeners&&(e.eventListeners||(e.eventListeners={}),Ep(e.eventListeners,t.eventListeners)),t.text&&e.text.push(...t.text),t.children&&t.children.length){if(e.children.length!=t.children.length)throw new S("ui-template-extend-children-mismatch",e);let o=0;for(const n of t.children)Dp(e.children[o++],n)}}function Bp(e){return!e&&0!==e}function Sp(e){return e instanceof zp}function Tp(e){return e instanceof pp}function Ip(e){return e instanceof hp}function Pp(e){return W(e[0])&&e[0].ns}function Fp(e){return"class"==e||"style"==e}var Rp=i(601),Mp={attributes:{"data-cke":!0}};Mp.setAttributes=Xr(),Mp.insert=Yr().bind(null,"head"),Mp.domAPI=Zr(),Mp.insertStyleElement=ts();Gr()(Rp.A,Mp);Rp.A&&Rp.A.locals&&Rp.A.locals;class zp extends(On(X())){constructor(e){super(),this.element=null,this.isRendered=!1,this.locale=e,this.t=e&&e.t,this._viewCollections=new tr,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",((t,o)=>{o.locale=e,o.t=e&&e.t})),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=pp.bind(this,this)}createCollection(e){const t=new hp(e);return this._viewCollections.add(t),t}registerChild(e){ae(e)||(e=[e]);for(const t of e)this._unboundChildren.add(t)}deregisterChild(e){ae(e)||(e=[e]);for(const t of e)this._unboundChildren.remove(t)}setTemplate(e){this.template=new pp(e)}extendTemplate(e){pp.extend(this.template,e)}render(){if(this.isRendered)throw new S("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)}}function Op({emitter:e,activator:t,callback:o,contextElements:n,listenerOptions:i}){e.listenTo(document,"mousedown",((e,i)=>{if(!t())return;const r="function"==typeof i.composedPath?i.composedPath():[],s="function"==typeof n?n():n;for(const e of s)if(e.contains(i.target)||r.includes(e))return;o()}),i)}function Np(e){return class extends e{disableCssTransitions(){this._isCssTransitionsDisabled=!0}enableCssTransitions(){this._isCssTransitionsDisabled=!1}constructor(...e){super(...e),this.set("_isCssTransitionsDisabled",!1),this.initializeCssTransitionDisablerMixin()}initializeCssTransitionDisablerMixin(){this.extendTemplate({attributes:{class:[this.bindTemplate.if("_isCssTransitionsDisabled","ck-transitions-disabled")]}})}}}function Vp({view:e}){e.listenTo(e.element,"submit",((t,o)=>{o.preventDefault(),e.fire("submit")}),{useCapture:!0})}function Lp({keystrokeHandler:e,focusTracker:t,gridItems:o,numberOfColumns:n,uiLanguageDirection:i}){const r="number"==typeof n?()=>n:n;function s(e){return n=>{const i=o.find((e=>e.element===t.focusedElement)),r=o.getIndex(i),s=e(r,o);o.get(s).focus(),n.stopPropagation(),n.preventDefault()}}function a(e,t){return e===t-1?0:e+1}function l(e,t){return 0===e?t-1:e-1}e.set("arrowright",s(((e,t)=>"rtl"===i?l(e,t.length):a(e,t.length)))),e.set("arrowleft",s(((e,t)=>"rtl"===i?a(e,t.length):l(e,t.length)))),e.set("arrowup",s(((e,t)=>{let o=e-r();return o<0&&(o=e+r()*Math.floor(t.length/r()),o>t.length-1&&(o-=r())),o}))),e.set("arrowdown",s(((e,t)=>{let o=e+r();return o>t.length-1&&(o=e%r()),o})))}var Hp=i(4106),jp={attributes:{"data-cke":!0}};jp.setAttributes=Xr(),jp.insert=Yr().bind(null,"head"),jp.domAPI=Zr(),jp.insertStyleElement=ts();Gr()(Hp.A,jp);Hp.A&&Hp.A.locals&&Hp.A.locals;class qp extends zp{constructor(){super();const e=this.bindTemplate;this.set("content",""),this.set("viewBox","0 0 20 20"),this.set("fillColor",""),this.set("isColorInherited",!0),this.set("isVisible",!0),this.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon",e.if("isVisible","ck-hidden",(e=>!e)),"ck-reset_all-excluded",e.if("isColorInherited","ck-icon_inherit-color")],viewBox:e.to("viewBox"),"aria-hidden":!0}})}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");t&&(this.viewBox=t);for(const{name:t,value:o}of Array.from(e.attributes))qp.presentationalAttributeNames.includes(t)&&this.element.setAttribute(t,o);for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);for(;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}))}}qp.presentationalAttributeNames=["alignment-baseline","baseline-shift","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-rendering","cursor","direction","display","dominant-baseline","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","image-rendering","letter-spacing","lighting-color","marker-end","marker-mid","marker-start","mask","opacity","overflow","paint-order","pointer-events","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-anchor","text-decoration","text-overflow","text-rendering","transform","unicode-bidi","vector-effect","visibility","white-space","word-spacing","writing-mode"];const $p=qp;class Up extends zp{constructor(){super(),this.set({style:void 0,text:void 0,id:void 0});const e=this.bindTemplate;this.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:e.to("style"),id:e.to("id")},children:[{text:e.to("text")}]})}}var Wp=i(8948),Gp={attributes:{"data-cke":!0}};Gp.setAttributes=Xr(),Gp.insert=Yr().bind(null,"head"),Gp.domAPI=Zr(),Gp.insertStyleElement=ts();Gr()(Wp.A,Gp);Wp.A&&Wp.A.locals&&Wp.A.locals;class Kp extends zp{constructor(e,t=new Up){super(e),this._focusDelayed=null;const o=this.bindTemplate,n=E();this.set("_ariaPressed",!1),this.set("_ariaChecked",!1),this.set("ariaLabel",void 0),this.set("ariaLabelledBy",`ck-editor__aria-label_${n}`),this.set("class",void 0),this.set("labelStyle",void 0),this.set("icon",void 0),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isVisible",!0),this.set("isToggleable",!1),this.set("keystroke",void 0),this.set("label",void 0),this.set("role",void 0),this.set("tabindex",-1),this.set("tooltip",!1),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.set("withKeystroke",!1),this.children=this.createCollection(),this.labelView=this._setupLabelView(t),this.iconView=new $p,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));const i={tag:"button",attributes:{class:["ck","ck-button",o.to("class"),o.if("isEnabled","ck-disabled",(e=>!e)),o.if("isVisible","ck-hidden",(e=>!e)),o.to("isOn",(e=>e?"ck-on":"ck-off")),o.if("withText","ck-button_with-text"),o.if("withKeystroke","ck-button_with-keystroke")],role:o.to("role"),type:o.to("type",(e=>e||"button")),tabindex:o.to("tabindex"),"aria-checked":o.to("_ariaChecked"),"aria-pressed":o.to("_ariaPressed"),"aria-label":o.to("ariaLabel"),"aria-labelledby":o.to("ariaLabelledBy"),"aria-disabled":o.if("isEnabled",!0,(e=>!e)),"data-cke-tooltip-text":o.to("_tooltipString"),"data-cke-tooltip-position":o.to("tooltipPosition")},children:this.children,on:{click:o.to((e=>{this.isEnabled?this.fire("execute"):e.preventDefault()}))}};this.bind("_ariaPressed").to(this,"isOn",this,"isToggleable",this,"role",((e,t,o)=>!(!t||Zp(o))&&String(!!e))),this.bind("_ariaChecked").to(this,"isOn",this,"isToggleable",this,"role",((e,t,o)=>!(!t||!Zp(o))&&String(!!e))),c.isSafari&&(this._focusDelayed||(this._focusDelayed=dr((()=>this.focus()),0)),i.on.mousedown=o.to((()=>{this._focusDelayed()})),i.on.mouseup=o.to((()=>{this._focusDelayed.cancel()}))),this.setTemplate(i)}render(){super.render(),this.icon&&(this.iconView.bind("content").to(this,"icon"),this.children.add(this.iconView)),this.children.add(this.labelView),this.withKeystroke&&this.keystroke&&this.children.add(this.keystrokeView)}focus(){this.element.focus()}destroy(){this._focusDelayed&&this._focusDelayed.cancel(),super.destroy()}_setupLabelView(e){return e.bind("text","style","id").to(this,"label","labelStyle","ariaLabelledBy"),e}_createKeystrokeView(){const e=new zp;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",(e=>Ei(e)))}]}),e}_getTooltipString(e,t,o){return e?"string"==typeof e?e:(o&&(o=Ei(o)),e instanceof Function?e(t,o):`${t}${o?` (${o})`:""}`):""}}function Zp(e){switch(e){case"radio":case"checkbox":case"option":case"switch":case"menuitemcheckbox":case"menuitemradio":return!0;default:return!1}}var Jp=i(4866),Yp={attributes:{"data-cke":!0}};Yp.setAttributes=Xr(),Yp.insert=Yr().bind(null,"head"),Yp.domAPI=Zr(),Yp.insertStyleElement=ts();Gr()(Jp.A,Yp);Jp.A&&Jp.A.locals&&Jp.A.locals;class Qp extends zp{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}),t.icon&&(this.iconView=new $p,this.iconView.content=t.icon,this.children.add(this.iconView));const n=new zp(e);n.setTemplate({tag:"h2",attributes:{class:["ck","ck-form__header__label"],role:"presentation"},children:[{text:o.to("label")}]}),this.children.add(n)}}class Xp extends(V()){constructor(e){if(super(),this.focusables=e.focusables,this.focusTracker=e.focusTracker,this.keystrokeHandler=e.keystrokeHandler,this.actions=e.actions,e.actions&&e.keystrokeHandler)for(const t in e.actions){let o=e.actions[t];"string"==typeof o&&(o=[o]);for(const n of o)e.keystrokeHandler.set(n,((e,o)=>{this[t](),o()}),e.keystrokeHandlerOptions)}this.on("forwardCycle",(()=>this.focusFirst()),{priority:"low"}),this.on("backwardCycle",(()=>this.focusLast()),{priority:"low"})}get first(){return this.focusables.find(em)||null}get last(){return this.focusables.filter(em).slice(-1)[0]||null}get next(){return this._getDomFocusableItem(1)}get previous(){return this._getDomFocusableItem(-1)}get current(){let e=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find(((t,o)=>{const n=t.element===this.focusTracker.focusedElement;return n&&(e=o),n})),e)}focusFirst(){this._focus(this.first,1)}focusLast(){this._focus(this.last,-1)}focusNext(){const e=this.next;e&&this.focusables.getIndex(e)===this.current||e===this.first?this.fire("forwardCycle"):this._focus(e,1)}focusPrevious(){const e=this.previous;e&&this.focusables.getIndex(e)===this.current||e===this.last?this.fire("backwardCycle"):this._focus(e,-1)}chain(e){const t=()=>null===this.current?null:this.focusables.get(this.current);this.listenTo(e,"forwardCycle",(e=>{const o=t();this.focusNext(),o!==t()&&e.stop()}),{priority:"low"}),this.listenTo(e,"backwardCycle",(e=>{const o=t();this.focusPrevious(),o!==t()&&e.stop()}),{priority:"low"})}unchain(e){this.stopListening(e)}_focus(e,t){e&&this.focusTracker.focusedElement!==e.element&&e.focus(t)}_getDomFocusableItem(e){const t=this.focusables.length;if(!t)return null;const o=this.current;if(null===o)return this[1===e?"first":"last"];let n=this.focusables.get(o),i=(o+t+e)%t;do{const o=this.focusables.get(i);if(em(o)){n=o;break}i=(i+t+e)%t}while(i!==o);return n}}function em(e){return tm(e)&&ri(e.element)}function tm(e){return!(!("focus"in e)||"function"!=typeof e.focus)}function om(e){return class extends e{constructor(...e){super(...e),this._onDragBound=this._onDrag.bind(this),this._onDragEndBound=this._onDragEnd.bind(this),this._lastDraggingCoordinates={x:0,y:0},this.on("render",(()=>{this._attachListeners()})),this.set("isDragging",!1)}_attachListeners(){this.listenTo(this.element,"mousedown",this._onDragStart.bind(this)),this.listenTo(this.element,"touchstart",this._onDragStart.bind(this))}_attachDragListeners(){this.listenTo(s.document,"mouseup",this._onDragEndBound),this.listenTo(s.document,"touchend",this._onDragEndBound),this.listenTo(s.document,"mousemove",this._onDragBound),this.listenTo(s.document,"touchmove",this._onDragBound)}_detachDragListeners(){this.stopListening(s.document,"mouseup",this._onDragEndBound),this.stopListening(s.document,"touchend",this._onDragEndBound),this.stopListening(s.document,"mousemove",this._onDragBound),this.stopListening(s.document,"touchmove",this._onDragBound)}_onDragStart(e,t){if(!this._isHandleElementPressed(t))return;this._attachDragListeners();let o=0,n=0;t instanceof MouseEvent?(o=t.clientX,n=t.clientY):(o=t.touches[0].clientX,n=t.touches[0].clientY),this._lastDraggingCoordinates={x:o,y:n},this.isDragging=!0}_onDrag(e,t){if(!this.isDragging)return void this._detachDragListeners();let o=0,n=0;t instanceof MouseEvent?(o=t.clientX,n=t.clientY):(o=t.touches[0].clientX,n=t.touches[0].clientY),t.preventDefault(),this.fire("drag",{deltaX:Math.round(o-this._lastDraggingCoordinates.x),deltaY:Math.round(n-this._lastDraggingCoordinates.y)}),this._lastDraggingCoordinates={x:o,y:n}}_onDragEnd(){this._detachDragListeners(),this.isDragging=!1}_isHandleElementPressed(e){return!!this.dragHandleElement&&(this.dragHandleElement===e.target||e.target instanceof HTMLElement&&this.dragHandleElement.contains(e.target))}}}var nm=i(8091),im={attributes:{"data-cke":!0}};im.setAttributes=Xr(),im.insert=Yr().bind(null,"head"),im.domAPI=Zr(),im.insertStyleElement=ts();Gr()(nm.A,im);nm.A&&nm.A.locals&&nm.A.locals;class rm extends zp{constructor(e){super(e),this.children=this.createCollection(),this.keystrokes=new ar,this._focusTracker=new nr,this._focusables=new hp,this.focusCycler=new Xp({focusables:this._focusables,focusTracker:this._focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-dialog__actions"]},children:this.children})}render(){super.render(),this.keystrokes.listenTo(this.element)}setButtons(e){for(const t of e){const e=new Kp(this.locale);let o;for(o in e.on("execute",(()=>t.onExecute())),t.onCreate&&t.onCreate(e),t)"onExecute"!=o&&"onCreate"!=o&&e.set(o,t[o]);this.children.add(e)}this._updateFocusCyclableItems()}focus(e){-1===e?this.focusCycler.focusLast():this.focusCycler.focusFirst()}_updateFocusCyclableItems(){Array.from(this.children).forEach((e=>{this._focusables.add(e),this._focusTracker.add(e.element)}))}}class sm extends zp{constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-dialog__content"]},children:this.children})}reset(){for(;this.children.length;)this.children.remove(0)}}var am=i(880),lm={attributes:{"data-cke":!0}};lm.setAttributes=Xr(),lm.insert=Yr().bind(null,"head"),lm.domAPI=Zr(),lm.insertStyleElement=ts();Gr()(am.A,lm);am.A&&am.A.locals&&am.A.locals;const cm="screen-center",dm="editor-center",um="editor-top-side",hm="editor-top-center",pm="editor-bottom-center",mm="editor-above-center",gm="editor-below-center",fm=ti("px");class bm extends(om(zp)){constructor(e,{getCurrentDomRoot:t,getViewportOffset:o,keystrokeHandlerOptions:n}){super(e),this.wasMoved=!1;const i=this.bindTemplate,r=e.t;this.set("className",""),this.set("ariaLabel",r("Editor dialog")),this.set("isModal",!1),this.set("position",cm),this.set("_isVisible",!1),this.set("_isTransparent",!1),this.set("_top",0),this.set("_left",0),this._getCurrentDomRoot=t,this._getViewportOffset=o,this.decorate("moveTo"),this.parts=this.createCollection(),this.keystrokes=new ar,this.focusTracker=new nr,this._focusables=new hp,this._focusCycler=new Xp({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"},keystrokeHandlerOptions:n}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-dialog-overlay",i.if("isModal","ck-dialog-overlay__transparent",(e=>!e)),i.if("_isVisible","ck-hidden",(e=>!e))],tabindex:"-1"},children:[{tag:"div",attributes:{tabindex:"-1",class:["ck","ck-dialog",i.if("isModal","ck-dialog_modal"),i.to("className")],role:"dialog","aria-label":i.to("ariaLabel"),style:{top:i.to("_top",(e=>fm(e))),left:i.to("_left",(e=>fm(e))),visibility:i.if("_isTransparent","hidden")}},children:this.parts}]})}render(){super.render(),this.keystrokes.set("Esc",((e,t)=>{e.defaultPrevented||(this.fire("close",{source:"escKeyPress"}),t())})),this.on("drag",((e,{deltaX:t,deltaY:o})=>{this.wasMoved=!0,this.moveBy(t,o)})),this.listenTo(s.window,"resize",(()=>{this._isVisible&&!this.wasMoved&&this.updatePosition()})),this.listenTo(s.document,"scroll",(()=>{this._isVisible&&!this.wasMoved&&this.updatePosition()})),this.on("change:_isVisible",((e,t,o)=>{o&&(this._isTransparent=!0,setTimeout((()=>{this.updatePosition(),this._isTransparent=!1,this.focus()}),10))})),this.keystrokes.listenTo(this.element)}get dragHandleElement(){return this.headerView&&!this.isModal?this.headerView.element:null}setupParts({icon:e,title:t,hasCloseButton:o=!0,content:n,actionButtons:i}){t&&(this.headerView=new Qp(this.locale,{icon:e}),o&&(this.closeButtonView=this._createCloseButton(),this.headerView.children.add(this.closeButtonView)),this.headerView.label=t,this.ariaLabel=t,this.parts.add(this.headerView,0)),n&&(n instanceof zp&&(n=[n]),this.contentView=new sm(this.locale),this.contentView.children.addMany(n),this.parts.add(this.contentView)),i&&(this.actionsView=new rm(this.locale),this.actionsView.setButtons(i),this.parts.add(this.actionsView)),this._updateFocusCyclableItems()}focus(){this._focusCycler.focusFirst()}moveTo(e,t){const o=this._getViewportRect(),n=this._getDialogRect();e+n.width>o.right&&(e=o.right-n.width),e{var t;this._focusables.add(e),this.focusTracker.add(e.element),tm(t=e)&&"focusCycler"in t&&t.focusCycler instanceof Xp&&this._focusCycler.chain(e.focusCycler)}))}_createCloseButton(){const e=new Kp(this.locale),t=this.locale.t;return e.set({label:t("Close"),tooltip:!0,icon:up.cancel}),e.on("execute",(()=>this.fire("close",{source:"closeButton"}))),e}}bm.defaultOffset=15;const km=bm;class wm extends br{static get pluginName(){return"Dialog"}static get isOfficialPlugin(){return!0}constructor(e){super(e);const t=e.t;this._initShowHideListeners(),this._initFocusToggler(),this._initMultiRootIntegration(),this.set({id:null,isOpen:!1}),e.accessibility.addKeystrokeInfos({categoryId:"navigation",keystrokes:[{label:t("Move focus in and out of an active dialog window"),keystroke:"Ctrl+F6",mayRequireFn:!0}]})}destroy(){super.destroy(),wm._visibleDialogPlugin===this&&this._unlockBodyScroll()}_initShowHideListeners(){this.on("show",((e,t)=>{this._show(t)})),this.on("show",((e,t)=>{t.onShow&&t.onShow(this)}),{priority:"low"}),this.on("hide",(()=>{wm._visibleDialogPlugin&&wm._visibleDialogPlugin._hide()})),this.on("hide",(()=>{this._onHide&&(this._onHide(this),this._onHide=void 0)}),{priority:"low"})}_initFocusToggler(){const e=this.editor;e.keystrokes.set("Ctrl+F6",((t,o)=>{this.isOpen&&!this.view.isModal&&(this.view.focusTracker.isFocused?e.editing.view.focus():this.view.focus(),o())}))}_initMultiRootIntegration(){const e=this.editor.model;e.document.on("change:data",(()=>{if(!this.view)return;const t=e.document.differ.getChangedRoots();for(const e of t)e.state&&this.view.updatePosition()}))}show(e){this.hide(),this.fire(`show:${e.id}`,e)}_show({id:e,icon:t,title:o,hasCloseButton:n=!0,content:i,actionButtons:r,className:s,isModal:a,position:l,onHide:c,keystrokeHandlerOptions:d}){const u=this.editor;this.view=new km(u.locale,{getCurrentDomRoot:()=>u.editing.view.getDomRoot(u.model.document.selection.anchor.root.rootName),getViewportOffset:()=>u.ui.viewportOffset,keystrokeHandlerOptions:d});const h=this.view;h.on("close",(()=>{this.hide()})),u.ui.view.body.add(h),u.keystrokes.listenTo(h.element),l||(l=a?cm:dm),a&&this._lockBodyScroll(),h.set({position:l,_isVisible:!0,className:s,isModal:a}),h.setupParts({icon:t,title:o,hasCloseButton:n,content:i,actionButtons:r}),this.id=e,c&&(this._onHide=c),this.isOpen=!0,wm._visibleDialogPlugin=this}hide(){wm._visibleDialogPlugin&&wm._visibleDialogPlugin.fire(`hide:${wm._visibleDialogPlugin.id}`)}_hide(){if(!this.view)return;const e=this.editor,t=this.view;t.isModal&&this._unlockBodyScroll(),t.contentView&&t.contentView.reset(),e.ui.view.body.remove(t),e.ui.focusTracker.remove(t.element),e.keystrokes.stopListening(t.element),t.destroy(),e.editing.view.focus(),this.id=null,this.isOpen=!1,wm._visibleDialogPlugin=null}_lockBodyScroll(){document.documentElement.classList.add("ck-dialog-scroll-locked")}_unlockBodyScroll(){document.documentElement.classList.remove("ck-dialog-scroll-locked")}}var _m=i(3389),ym={attributes:{"data-cke":!0}};ym.setAttributes=Xr(),ym.insert=Yr().bind(null,"head"),ym.domAPI=Zr(),ym.insertStyleElement=ts();Gr()(_m.A,ym);_m.A&&_m.A.locals&&_m.A.locals;class Am extends Kp{constructor(e,t=new Up){super(e,t),this._checkIconHolderView=new Cm,this.set({hasCheckSpace:!1,_hasCheck:this.isToggleable});const o=this.bindTemplate;this.extendTemplate({attributes:{class:["ck-list-item-button",o.if("isToggleable","ck-list-item-button_toggleable")]}}),this.bind("_hasCheck").to(this,"hasCheckSpace",this,"isToggleable",((e,t)=>e||t))}render(){super.render(),this._hasCheck&&this.children.add(this._checkIconHolderView,0),this._watchCheckIconHolderMount()}_watchCheckIconHolderMount(){this._checkIconHolderView.bind("isOn").to(this,"isOn",(e=>this.isToggleable&&e)),this.on("change:_hasCheck",((e,t,o)=>{const{children:n,_checkIconHolderView:i}=this;o?n.add(i,0):n.remove(i)}))}}class Cm extends zp{constructor(){super(),this._checkIconView=this._createCheckIconView();const e=this.bindTemplate;this.children=this.createCollection(),this.set("isOn",!1),this.setTemplate({tag:"span",children:this.children,attributes:{class:["ck","ck-list-item-button__check-holder",e.to("isOn",(e=>e?"ck-on":"ck-off"))]}})}render(){super.render(),this.isOn&&this.children.add(this._checkIconView,0),this._watchCheckIconMount()}_watchCheckIconMount(){this.on("change:isOn",((e,t,o)=>{const{children:n,_checkIconView:i}=this;o&&!n.has(i)?n.add(i):!o&&n.has(i)&&n.remove(i)}))}_createCheckIconView(){const e=new $p;return e.content=up.check,e.extendTemplate({attributes:{class:"ck-list-item-button__check-icon"}}),e}}var vm=i(5078),xm={attributes:{"data-cke":!0}};xm.setAttributes=Xr(),xm.insert=Yr().bind(null,"head"),xm.domAPI=Zr(),xm.insertStyleElement=ts();Gr()(vm.A,xm);vm.A&&vm.A.locals&&vm.A.locals;class Em extends Am{constructor(e){super(e),this.set({withText:!0,withKeystroke:!0,tooltip:!1,role:"menuitem"}),this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item__button"]}})}}var Dm=i(4606),Bm={attributes:{"data-cke":!0}};Bm.setAttributes=Xr(),Bm.insert=Yr().bind(null,"head"),Bm.domAPI=Zr(),Bm.insertStyleElement=ts();Gr()(Dm.A,Bm);Dm.A&&Dm.A.locals&&Dm.A.locals;class Sm extends zp{constructor(e){super(e),this.set("text",void 0),this.set("for",void 0),this.id=`ck-editor__label_${E()}`;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 Tm extends zp{constructor(e,t){super(e);const o=e.t,n=new Sm;n.text=o("Help Contents. To close this dialog press ESC."),this.setTemplate({tag:"div",attributes:{class:["ck","ck-accessibility-help-dialog__content"],"aria-labelledby":n.id,role:"document",tabindex:-1},children:[ve(document,"p",{},o("Below, you can find a list of keyboard shortcuts that can be used in the editor.")),...this._createCategories(Array.from(t.values())),n]})}focus(){this.element.focus()}_createCategories(e){return e.map((e=>{const t=[ve(document,"h3",{},e.label),...Array.from(e.groups.values()).map((e=>this._createGroup(e))).flat()];return e.description&&t.splice(1,0,ve(document,"p",{},e.description)),ve(document,"section",{},t)}))}_createGroup(e){const t=e.keystrokes.sort(((e,t)=>e.label.localeCompare(t.label))).map((e=>this._createGroupRow(e))).flat(),o=[ve(document,"dl",{},t)];return e.label&&o.unshift(ve(document,"h4",{},e.label)),o}_createGroupRow(e){const t=this.locale.t,o=ve(document,"dt"),n=ve(document,"dd"),i=function(e){if("string"==typeof e)return[[e]];if("string"==typeof e[0])return[e];return e}(e.keystroke),r=[];for(const e of i)r.push(e.map(Im).join(""));return o.innerHTML=e.label,n.innerHTML=r.join(", ")+(e.mayRequireFn&&c.isMac?` ${t("(may require Fn)")}`:""),[o,n]}}function Im(e){return Ei(e).split("+").map((e=>`${e}`)).join("+")}const Pm='';var Fm=i(9550),Rm={attributes:{"data-cke":!0}};Rm.setAttributes=Xr(),Rm.insert=Yr().bind(null,"head"),Rm.domAPI=Zr(),Rm.insertStyleElement=ts();Gr()(Fm.A,Rm);Fm.A&&Fm.A.locals&&Fm.A.locals;class Mm extends br{constructor(){super(...arguments),this.contentView=null}static get requires(){return[wm]}static get pluginName(){return"AccessibilityHelp"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t;e.ui.componentFactory.add("accessibilityHelp",(()=>{const e=this._createButton(Kp);return e.set({tooltip:!0,withText:!1,label:t("Accessibility help")}),e})),e.ui.componentFactory.add("menuBar:accessibilityHelp",(()=>{const e=this._createButton(Em);return e.label=t("Accessibility"),e})),e.keystrokes.set("Alt+0",((e,t)=>{this._toggleDialog(),t()})),this._setupRootLabels()}_createButton(e){const t=this.editor,o=t.plugins.get("Dialog"),n=new e(t.locale);return n.set({keystroke:"Alt+0",icon:Pm,isToggleable:!0}),n.on("execute",(()=>this._toggleDialog())),n.bind("isOn").to(o,"id",(e=>"accessibilityHelp"===e)),n}_setupRootLabels(){const e=this.editor,t=e.editing.view,o=e.t;function n(e,t){const n=[t.getAttribute("aria-label"),o("Press %0 for help.",[Ei("Alt+0")])].filter((e=>e)).join(". ");e.setAttribute("aria-label",n,t)}e.ui.on("ready",(()=>{t.change((e=>{for(const o of t.document.roots)n(e,o)})),e.on("addRoot",((o,i)=>{const r=e.editing.view.document.getRoot(i.rootName);t.change((e=>n(e,r)))}),{priority:"low"})}))}_toggleDialog(){const e=this.editor,t=e.plugins.get("Dialog"),o=e.locale.t;this.contentView||(this.contentView=new Tm(e.locale,e.accessibility.keystrokeInfos)),"accessibilityHelp"===t.id?t.hide():t.show({id:"accessibilityHelp",className:"ck-accessibility-help-dialog",title:o("Accessibility help"),icon:Pm,hasCloseButton:!0,content:this.contentView})}}class zm extends hp{constructor(e,t=[]){super(t),this.locale=e}get bodyCollectionContainer(){return this._bodyCollectionContainer}attachToDom(){this._bodyCollectionContainer=new pp({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection,role:"application"},children:this}).render(),zm._bodyWrapper&&zm._bodyWrapper.isConnected||(zm._bodyWrapper=ve(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(zm._bodyWrapper)),zm._bodyWrapper.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove(),zm._bodyWrapper&&!zm._bodyWrapper.childElementCount&&(zm._bodyWrapper.remove(),delete zm._bodyWrapper)}}var Om=i(9624),Nm={attributes:{"data-cke":!0}};Nm.setAttributes=Xr(),Nm.insert=Yr().bind(null,"head"),Nm.domAPI=Zr(),Nm.insertStyleElement=ts();Gr()(Om.A,Nm);Om.A&&Om.A.locals&&Om.A.locals;class Vm extends Kp{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 zp;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),e}}class Lm extends(jm(Kp)){}class Hm extends(jm(Am)){}function jm(e){return class extends e{constructor(...e){super(...e),this.buttonView=this,this._fileInputView=new qm(this.locale),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.on("execute",(()=>{this._fileInputView.open()})),this.extendTemplate({attributes:{class:"ck-file-dialog-button"}})}render(){super.render(),this.children.add(this._fileInputView)}}}class qm extends zp{constructor(e){super(e),this.set("acceptedType",void 0),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()}}const $m='';var Um=i(1750),Wm={attributes:{"data-cke":!0}};Wm.setAttributes=Xr(),Wm.insert=Yr().bind(null,"head"),Wm.domAPI=Zr(),Wm.insertStyleElement=ts();Gr()(Um.A,Wm);Um.A&&Um.A.locals&&Um.A.locals;class Gm extends zp{constructor(e,t){super(e);const o=this.bindTemplate;this.set("isCollapsed",!1),this.set("label",""),this.buttonView=this._createButtonView(),this.children=this.createCollection(),this.set("_collapsibleAriaLabelUid",void 0),t&&this.children.addMany(t),this.setTemplate({tag:"div",attributes:{class:["ck","ck-collapsible",o.if("isCollapsed","ck-collapsible_collapsed")]},children:[this.buttonView,{tag:"div",attributes:{class:["ck","ck-collapsible__children"],role:"region",hidden:o.if("isCollapsed","hidden"),"aria-labelledby":o.to("_collapsibleAriaLabelUid")},children:this.children}]})}render(){super.render(),this._collapsibleAriaLabelUid=this.buttonView.labelView.element.id}focus(){this.buttonView.focus()}_createButtonView(){const e=new Kp(this.locale),t=e.bindTemplate;return e.set({withText:!0,icon:$m}),e.extendTemplate({attributes:{"aria-expanded":t.to("isOn",(e=>String(e)))}}),e.bind("label").to(this),e.bind("isOn").to(this,"isCollapsed",(e=>!e)),e.on("execute",(()=>{this.isCollapsed=!this.isCollapsed})),e}}function Km(e,t){const o=e.t,n={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=n[e.label];return t&&t!=e.label&&(e.label=t),e}))}function Zm(e){return e.map(Jm).filter((e=>!!e))}function Jm(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}`}}}}class Ym extends Kp{constructor(e){super(e);const t=this.bindTemplate;this.set("color",void 0),this.set("hasBorder",!1),this.icon='',this.extendTemplate({attributes:{style:{backgroundColor:t.to("color",(e=>c.isMediaForcedColors?null:e))},class:["ck","ck-color-grid__tile",t.if("hasBorder","ck-color-selector__color-tile_bordered")]}})}render(){super.render(),this.iconView.fillColor="hsl(0, 0%, 100%)"}}var Qm=i(7962),Xm={attributes:{"data-cke":!0}};Xm.setAttributes=Xr(),Xm.insert=Yr().bind(null,"head"),Xm.domAPI=Zr(),Xm.insertStyleElement=ts();Gr()(Qm.A,Xm);Qm.A&&Qm.A.locals&&Qm.A.locals;class eg extends zp{constructor(e,t){super(e);const o=t&&t.colorDefinitions?t.colorDefinitions:[];this.columns=t&&t.columns?t.columns:5;const n={gridTemplateColumns:`repeat( ${this.columns}, 1fr)`};this.set("selectedColor",void 0),this.items=this.createCollection(),this.focusTracker=new nr,this.keystrokes=new ar,this.items.on("add",((e,t)=>{t.isOn=t.color===this.selectedColor})),o.forEach((e=>{const t=new Ym;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:n}}),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),Lp({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:this.columns,uiLanguageDirection:this.locale&&this.locale.uiLanguageDirection})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}}var tg=i(8156);const og=function(e){var t,o,n=[],i=1;if("string"==typeof e)if(tg[e])n=tg[e].slice(),o="rgb";else if("transparent"===e)i=0,o="rgb",n=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(e)){var r=e.slice(1);i=1,(l=r.length)<=4?(n=[parseInt(r[0]+r[0],16),parseInt(r[1]+r[1],16),parseInt(r[2]+r[2],16)],4===l&&(i=parseInt(r[3]+r[3],16)/255)):(n=[parseInt(r[0]+r[1],16),parseInt(r[2]+r[3],16),parseInt(r[4]+r[5],16)],8===l&&(i=parseInt(r[6]+r[7],16)/255)),n[0]||(n[0]=0),n[1]||(n[1]=0),n[2]||(n[2]=0),o="rgb"}else if(t=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(e)){var s=t[1],a="rgb"===s;o=r=s.replace(/a$/,"");var l="cmyk"===r?4:"gray"===r?1:3;n=t[2].trim().split(/\s*[,\/]\s*|\s+/).map((function(e,t){if(/%$/.test(e))return t===l?parseFloat(e)/100:"rgb"===r?255*parseFloat(e)/100:parseFloat(e);if("h"===r[t]){if(/deg$/.test(e))return parseFloat(e);if(void 0!==ng[e])return ng[e]}return parseFloat(e)})),s===r&&n.push(1),i=a||void 0===n[l]?1:n[l],n=n.slice(0,l)}else e.length>10&&/[0-9](?:\s|\/)/.test(e)&&(n=e.match(/([0-9]+)/g).map((function(e){return parseFloat(e)})),o=e.match(/([a-z])/gi).join("").toLowerCase());else isNaN(e)?Array.isArray(e)||e.length?(n=[e[0],e[1],e[2]],o="rgb",i=4===e.length?e[3]:1):e instanceof Object&&(null!=e.r||null!=e.red||null!=e.R?(o="rgb",n=[e.r||e.red||e.R||0,e.g||e.green||e.G||0,e.b||e.blue||e.B||0]):(o="hsl",n=[e.h||e.hue||e.H||0,e.s||e.saturation||e.S||0,e.l||e.lightness||e.L||e.b||e.brightness]),i=e.a||e.alpha||e.opacity||1,null!=e.opacity&&(i/=100)):(o="rgb",n=[e>>>16,(65280&e)>>>8,255&e]);return{space:o,values:n,alpha:i}};var ng={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};var ig=i(734),rg=i.t(ig,2);function sg(e,t){if(!e)return"";const o=ag(e);if(!o)return"";if(o.space===t)return e;if(n=o,!Object.keys(rg).includes(n.space))return"";var n;const i=rg[o.space][t];if(!i)return"";return function(e,t){switch(t){case"hex":return`#${e}`;case"rgb":return`rgb(${e[0]}, ${e[1]}, ${e[2]})`;case"hsl":return`hsl(${e[0]}, ${e[1]}%, ${e[2]}%)`;case"hwb":return`hwb(${e[0]}, ${e[1]}, ${e[2]})`;case"lab":return`lab(${e[0]}% ${e[1]} ${e[2]})`;case"lch":return`lch(${e[0]}% ${e[1]} ${e[2]})`;default:return""}}(i("hex"===o.space?o.hexValue:o.values),t)}function ag(e){if(e.startsWith("#")){const t=og(e);return{space:"hex",values:t.values,hexValue:e,alpha:t.alpha}}const t=og(e);return t.space?t:null}var lg=i(6365),cg={attributes:{"data-cke":!0}};cg.setAttributes=Xr(),cg.insert=Yr().bind(null,"head"),cg.domAPI=Zr(),cg.insertStyleElement=ts();Gr()(lg.A,cg);lg.A&&lg.A.locals&&lg.A.locals;class dg extends zp{constructor(e,t){super(e);const o=`ck-labeled-field-view-${E()}`,n=`ck-labeled-field-view-status-${E()}`;this.fieldView=t(this,o,n),this.set("label",void 0),this.set("isEnabled",!0),this.set("isEmpty",!0),this.set("isFocused",!1),this.set("errorText",null),this.set("infoText",null),this.set("class",void 0),this.set("placeholder",void 0),this.labelView=this._createLabelView(o),this.statusView=this._createStatusView(n),this.fieldWrapperChildren=this.createCollection([this.fieldView,this.labelView]),this.bind("_statusText").to(this,"errorText",this,"infoText",((e,t)=>e||t));const i=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",i.to("class"),i.if("isEnabled","ck-disabled",(e=>!e)),i.if("isEmpty","ck-labeled-field-view_empty"),i.if("isFocused","ck-labeled-field-view_focused"),i.if("placeholder","ck-labeled-field-view_placeholder"),i.if("errorText","ck-error")]},children:[{tag:"div",attributes:{class:["ck","ck-labeled-field-view__input-wrapper"]},children:this.fieldWrapperChildren},this.statusView]})}_createLabelView(e){const t=new Sm(this.locale);return t.for=e,t.bind("text").to(this,"label"),t}_createStatusView(e){const t=new zp(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(e){this.fieldView.focus(e)}}class ug extends zp{constructor(e){super(e),this.set("value",void 0),this.set("id",void 0),this.set("placeholder",void 0),this.set("tabIndex",void 0),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("ariaDescribedById",void 0),this.set("ariaLabel",void 0),this.focusTracker=new nr,this.bind("isFocused").to(this.focusTracker),this.set("isEmpty",!0);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck","ck-input",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"),tabindex:t.to("tabIndex"),readonly:t.to("isReadOnly"),"aria-invalid":t.if("hasError",!0),"aria-describedby":t.to("ariaDescribedById"),"aria-label":t.to("ariaLabel")},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()}))}destroy(){super.destroy(),this.focusTracker.destroy()}select(){this.element.select()}focus(){this.element.focus()}reset(){this.value=this.element.value="",this._updateIsEmpty()}_updateIsEmpty(){this.isEmpty=!this.element.value}_setDomElementValue(e){this.element.value=e||0===e?e:""}}var hg=i(1546),pg={attributes:{"data-cke":!0}};pg.setAttributes=Xr(),pg.insert=Yr().bind(null,"head"),pg.domAPI=Zr(),pg.insertStyleElement=ts();Gr()(hg.A,pg);hg.A&&hg.A.locals&&hg.A.locals;class mg extends ug{constructor(e){super(e),this.set("inputMode","text");const t=this.bindTemplate;this.extendTemplate({attributes:{inputmode:t.to("inputMode")}})}}class gg extends mg{constructor(e){super(e),this.extendTemplate({attributes:{type:"text",class:["ck-input-text"]}})}}class fg extends mg{constructor(e,{min:t,max:o,step:n}={}){super(e);const i=this.bindTemplate;this.set("min",t),this.set("max",o),this.set("step",n),this.extendTemplate({attributes:{type:"number",class:["ck-input-number"],min:i.to("min"),max:i.to("max"),step:i.to("step")}})}}var bg=i(8368),kg={attributes:{"data-cke":!0}};kg.setAttributes=Xr(),kg.insert=Yr().bind(null,"head"),kg.domAPI=Zr(),kg.insertStyleElement=ts();Gr()(bg.A,kg);bg.A&&bg.A.locals&&bg.A.locals;class wg extends zp{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")],tabindex:"-1"},children:this.children,on:{selectstart:t.to((e=>{"input"!==e.target.tagName.toLocaleLowerCase()&&e.preventDefault()}))}})}focus(){if(this.children.length){const e=this.children.first;"function"==typeof e.focus?e.focus():T("ui-dropdown-panel-focus-child-missing-focus",{childView:this.children.first,dropdownPanel:this})}}focusLast(){if(this.children.length){const e=this.children.last;"function"==typeof e.focusLast?e.focusLast():e.focus()}}}var _g=i(426),yg={attributes:{"data-cke":!0}};yg.setAttributes=Xr(),yg.insert=Yr().bind(null,"head"),yg.domAPI=Zr(),yg.insertStyleElement=ts();Gr()(_g.A,yg);_g.A&&_g.A.locals&&_g.A.locals;class Ag extends zp{constructor(e,t,o){super(e);const n=this.bindTemplate;this.buttonView=t,this.panelView=o,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("class",void 0),this.set("id",void 0),this.set("panelPosition","auto"),this.panelView.bind("isVisible").to(this,"isOpen"),this.keystrokes=new ar,this.focusTracker=new nr,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",n.to("class"),n.if("isEnabled","ck-disabled",(e=>!e))],id:n.to("id"),"aria-describedby":n.to("ariaDescribedById")},children:[t,o]}),t.extendTemplate({attributes:{class:["ck-dropdown__button"],"data-cke-tooltip-disabled":n.to("isOpen")}})}render(){super.render(),this.focusTracker.add(this.buttonView.element),this.focusTracker.add(this.panelView.element),this.listenTo(this.buttonView,"open",(()=>{this.isOpen=!this.isOpen})),this.on("change:isOpen",((e,t,o)=>{if(o)if("auto"===this.panelPosition){const e=Ag._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions});this.panelView.position=e?e.name:this._defaultPanelPositionName}else this.panelView.position=this.panelPosition})),this.keystrokes.listenTo(this.element);const e=(e,t)=>{this.isOpen&&(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:n,northEast:i,northWest:r,southMiddleEast:s,southMiddleWest:a,northMiddleEast:l,northMiddleWest:c}=Ag.defaultPanelPositions;return"rtl"!==this.locale.uiLanguageDirection?[o,n,s,a,e,i,r,l,c,t]:[n,o,a,s,e,r,i,c,l,t]}get _defaultPanelPositionName(){return"rtl"===this.locale.uiLanguageDirection?"sw":"se"}}Ag.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"})},Ag._getOptimalPosition=si;const Cg=Ag;class vg extends Kp{constructor(e){super(e),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0,"aria-expanded":this.bindTemplate.to("isOn",(e=>String(e)))}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new $p;return e.content=$m,e.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),e}}var xg=i(1102),Eg={attributes:{"data-cke":!0}};Eg.setAttributes=Xr(),Eg.insert=Yr().bind(null,"head"),Eg.domAPI=Zr(),Eg.insertStyleElement=ts();Gr()(xg.A,Eg);xg.A&&xg.A.locals&&xg.A.locals;var Dg=i(5067),Bg={attributes:{"data-cke":!0}};Bg.setAttributes=Xr(),Bg.insert=Yr().bind(null,"head"),Bg.domAPI=Zr(),Bg.insertStyleElement=ts();Gr()(Dg.A,Bg);Dg.A&&Dg.A.locals&&Dg.A.locals;class Sg extends Am{constructor(e){super(e);const t=this.bindTemplate;this.set({withText:!0,role:"menuitem"}),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{class:["ck-dropdown-menu-list__nested-menu__button"],"aria-haspopup":!0,"aria-expanded":this.bindTemplate.to("isOn",(e=>String(e))),"data-cke-tooltip-disabled":t.to("isOn")},on:{mouseenter:t.to("mouseenter")}})}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new $p;return e.content=$m,e.extendTemplate({attributes:{class:"ck-dropdown-menu-list__nested-menu__button__arrow"}}),e}}class Tg extends zp{constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible",!0),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item",t.if("isVisible","ck-hidden",(e=>!e))],role:"presentation"},children:this.children})}focus(){this.children.first&&this.children.first.focus()}}class Ig extends zp{constructor(e){super(e),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}class Pg extends zp{constructor(e,t=new Sm){super(e);const o=this.bindTemplate,n=new Mg(e);this.set({label:"",isVisible:!0}),this.labelView=t,this.labelView.bind("text").to(this,"label"),this.children=this.createCollection(),this.children.addMany([this.labelView,n]),n.set({role:"group",ariaLabelledBy:t.id}),n.focusTracker.destroy(),n.keystrokes.destroy(),this.items=n.items,this.setTemplate({tag:"li",attributes:{role:"presentation",class:["ck","ck-list__group",o.if("isVisible","ck-hidden",(e=>!e))]},children:this.children})}focus(){if(this.items){const e=this.items.find((e=>!(e instanceof Ig)));e&&e.focus()}}}var Fg=i(6048),Rg={attributes:{"data-cke":!0}};Rg.setAttributes=Xr(),Rg.insert=Yr().bind(null,"head"),Rg.domAPI=Zr(),Rg.insertStyleElement=ts();Gr()(Fg.A,Rg);Fg.A&&Fg.A.locals&&Fg.A.locals;class Mg extends zp{constructor(e){super(e),this._listItemGroupToChangeListeners=new WeakMap;const t=this.bindTemplate;this.focusables=new hp,this.items=this.createCollection(),this.focusTracker=new nr,this.keystrokes=new ar,this._focusCycler=new Xp({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this.set("ariaLabel",void 0),this.set("ariaLabelledBy",void 0),this.set("role",void 0),this.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"],role:t.to("role"),"aria-label":t.to("ariaLabel"),"aria-labelledby":t.to("ariaLabelledBy")},children:this.items})}render(){super.render();for(const e of this.items)e instanceof Pg?this._registerFocusableItemsGroup(e):e instanceof Tg&&this._registerFocusableListItem(e);this.items.on("change",((e,t)=>{for(const e of t.removed)e instanceof Pg?this._deregisterFocusableItemsGroup(e):e instanceof Tg&&this._deregisterFocusableListItem(e);for(const e of Array.from(t.added).reverse())e instanceof Pg?this._registerFocusableItemsGroup(e,t.index):this._registerFocusableListItem(e,t.index)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}focusFirst(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}_registerFocusableListItem(e,t){this.focusTracker.add(e.element),this.focusables.add(e,t)}_deregisterFocusableListItem(e){this.focusTracker.remove(e.element),this.focusables.remove(e)}_getOnGroupItemsChangeCallback(e){return(t,o)=>{for(const e of o.removed)this._deregisterFocusableListItem(e);for(const t of Array.from(o.added).reverse())this._registerFocusableListItem(t,this.items.getIndex(e)+o.index)}}_registerFocusableItemsGroup(e,t){Array.from(e.items).forEach(((e,o)=>{const n=void 0!==t?t+o:void 0;this._registerFocusableListItem(e,n)}));const o=this._getOnGroupItemsChangeCallback(e);this._listItemGroupToChangeListeners.set(e,o),e.items.on("change",o)}_deregisterFocusableItemsGroup(e){for(const t of e.items)this._deregisterFocusableListItem(t);e.items.off("change",this._listItemGroupToChangeListeners.get(e)),this._listItemGroupToChangeListeners.delete(e)}}class zg extends Mg{constructor(e){super(e);const t=this.bindTemplate;this.role="menu",this.set("isVisible",!0),this.extendTemplate({attributes:{class:["ck-dropdown-menu-list",t.if("isVisible","ck-hidden",(e=>!e))]}})}}const Og={eastSouth:e=>({top:e.top,left:e.right-5,name:"es"}),eastNorth:(e,t)=>({top:e.top-t.height+e.height,left:e.right-5,name:"en"}),westSouth:(e,t)=>({top:e.top,left:e.left-t.width+5,name:"ws"}),westNorth:(e,t)=>({top:e.top-t.height+e.height,left:e.left-t.width+5,name:"wn"})};var Ng=i(4694),Vg={attributes:{"data-cke":!0}};Vg.setAttributes=Xr(),Vg.insert=Yr().bind(null,"head"),Vg.domAPI=Zr(),Vg.insertStyleElement=ts();Gr()(Ng.A,Vg);Ng.A&&Ng.A.locals&&Ng.A.locals;const Lg={openOnArrowRightKey(e){const t="rtl"===e.locale.uiLanguageDirection?"arrowleft":"arrowright";e.keystrokes.set(t,((t,o)=>{e.focusTracker.focusedElement===e.buttonView.element&&e.isEnabled&&(e.isOpen||(e.isOpen=!0),e.panelView.focus(),o())}))},openOnButtonClick(e){e.buttonView.on("execute",(()=>{e.isEnabled&&(e.isOpen=!0)}))},openAndFocusOnEnterKeyPress(e){e.keystrokes.set("enter",((t,o)=>{e.focusTracker.focusedElement===e.buttonView.element&&(e.isOpen=!0,e.panelView.focus(),o())}))},closeOnArrowLeftKey(e){const t="rtl"===e.locale.uiLanguageDirection?"arrowright":"arrowleft";e.keystrokes.set(t,((t,o)=>{e.isOpen&&(e.focus(),e.isOpen=!1,o())}))},closeOnEscKey(e){e.keystrokes.set("esc",((t,o)=>{e.isOpen&&(e.focus(),e.isOpen=!1,o())}))},closeOnParentClose(e,t){t.on("change:isOpen",((o,n,i)=>{i||o.source!==t||(e.isOpen=!1)}))}};var Hg=i(5615),jg={attributes:{"data-cke":!0}};jg.setAttributes=Xr(),jg.insert=Yr().bind(null,"head"),jg.domAPI=Zr(),jg.insertStyleElement=ts();Gr()(Hg.A,jg);Hg.A&&Hg.A.locals&&Hg.A.locals;const qg=ti("px"),$g={top:-99999,left:-99999,name:"arrowless",config:{withArrow:!1}};class Ug extends zp{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",void 0),this._pinWhenIsVisibleCallback=null,this._resizeObserver=null,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",qg),left:t.to("left",qg)}},children:this.content})}destroy(){this.hide(),super.destroy()}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(e){const t=Gg(e.target);if(t&&!ri(t))return!1;this.show();const o=Ug.defaultPositions,n=Object.assign({},{element:this.element,positions:[o.southArrowNorth,o.southArrowNorthMiddleWest,o.southArrowNorthMiddleEast,o.southArrowNorthWest,o.southArrowNorthEast,o.northArrowSouth,o.northArrowSouthMiddleWest,o.northArrowSouthMiddleEast,o.northArrowSouthWest,o.northArrowSouthEast,o.viewportStickyNorth],limiter:s.document.body,fitInViewport:!0},e),i=Ug._getOptimalPosition(n)||$g,r=parseInt(i.left),a=parseInt(i.top),l=i.name,c=i.config||{},{withArrow:d=!0}=c;return this.top=a,this.left=r,this.position=l,this.withArrow=d,!0}pin(e){this.unpin(),this._startPinning(e)&&(this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(e):this._stopPinning()},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){if(!this.attachTo(e))return!1;let t=Gg(e.target);const o=e.limiter?Gg(e.limiter):s.document.body;if(this.listenTo(s.document,"scroll",((n,i)=>{const r=i.target,s=t&&r.contains(t),a=o&&r.contains(o);!s&&!a&&t&&o||this.attachTo(e)}),{useCapture:!0}),this.listenTo(s.window,"resize",(()=>{this.attachTo(e)})),!this._resizeObserver&&(t&&qn(t)&&(t=t.parentElement),t)){const e=()=>{ri(t)||this.unpin()};this._resizeObserver=new Xn(t,e)}return!0}_stopPinning(){this.stopListening(s.document,"scroll"),this.stopListening(s.window,"resize"),this._resizeObserver&&(this._resizeObserver.destroy(),this._resizeObserver=null)}static generatePositions(e={}){const{sideOffset:t=Ug.arrowSideOffset,heightOffset:o=Ug.arrowHeightOffset,stickyVerticalOffset:n=Ug.stickyVerticalOffset,config:i}=e;return{northWestArrowSouthWest:(e,o)=>({top:r(e,o),left:e.left-t,name:"arrow_sw",...i&&{config:i}}),northWestArrowSouthMiddleWest:(e,o)=>({top:r(e,o),left:e.left-.25*o.width-t,name:"arrow_smw",...i&&{config:i}}),northWestArrowSouth:(e,t)=>({top:r(e,t),left:e.left-t.width/2,name:"arrow_s",...i&&{config:i}}),northWestArrowSouthMiddleEast:(e,o)=>({top:r(e,o),left:e.left-.75*o.width+t,name:"arrow_sme",...i&&{config:i}}),northWestArrowSouthEast:(e,o)=>({top:r(e,o),left:e.left-o.width+t,name:"arrow_se",...i&&{config:i}}),northArrowSouthWest:(e,o)=>({top:r(e,o),left:e.left+e.width/2-t,name:"arrow_sw",...i&&{config:i}}),northArrowSouthMiddleWest:(e,o)=>({top:r(e,o),left:e.left+e.width/2-.25*o.width-t,name:"arrow_smw",...i&&{config:i}}),northArrowSouth:(e,t)=>({top:r(e,t),left:e.left+e.width/2-t.width/2,name:"arrow_s",...i&&{config:i}}),northArrowSouthMiddleEast:(e,o)=>({top:r(e,o),left:e.left+e.width/2-.75*o.width+t,name:"arrow_sme",...i&&{config:i}}),northArrowSouthEast:(e,o)=>({top:r(e,o),left:e.left+e.width/2-o.width+t,name:"arrow_se",...i&&{config:i}}),northEastArrowSouthWest:(e,o)=>({top:r(e,o),left:e.right-t,name:"arrow_sw",...i&&{config:i}}),northEastArrowSouthMiddleWest:(e,o)=>({top:r(e,o),left:e.right-.25*o.width-t,name:"arrow_smw",...i&&{config:i}}),northEastArrowSouth:(e,t)=>({top:r(e,t),left:e.right-t.width/2,name:"arrow_s",...i&&{config:i}}),northEastArrowSouthMiddleEast:(e,o)=>({top:r(e,o),left:e.right-.75*o.width+t,name:"arrow_sme",...i&&{config:i}}),northEastArrowSouthEast:(e,o)=>({top:r(e,o),left:e.right-o.width+t,name:"arrow_se",...i&&{config:i}}),southWestArrowNorthWest:e=>({top:s(e),left:e.left-t,name:"arrow_nw",...i&&{config:i}}),southWestArrowNorthMiddleWest:(e,o)=>({top:s(e),left:e.left-.25*o.width-t,name:"arrow_nmw",...i&&{config:i}}),southWestArrowNorth:(e,t)=>({top:s(e),left:e.left-t.width/2,name:"arrow_n",...i&&{config:i}}),southWestArrowNorthMiddleEast:(e,o)=>({top:s(e),left:e.left-.75*o.width+t,name:"arrow_nme",...i&&{config:i}}),southWestArrowNorthEast:(e,o)=>({top:s(e),left:e.left-o.width+t,name:"arrow_ne",...i&&{config:i}}),southArrowNorthWest:e=>({top:s(e),left:e.left+e.width/2-t,name:"arrow_nw",...i&&{config:i}}),southArrowNorthMiddleWest:(e,o)=>({top:s(e),left:e.left+e.width/2-.25*o.width-t,name:"arrow_nmw",...i&&{config:i}}),southArrowNorth:(e,t)=>({top:s(e),left:e.left+e.width/2-t.width/2,name:"arrow_n",...i&&{config:i}}),southArrowNorthMiddleEast:(e,o)=>({top:s(e),left:e.left+e.width/2-.75*o.width+t,name:"arrow_nme",...i&&{config:i}}),southArrowNorthEast:(e,o)=>({top:s(e),left:e.left+e.width/2-o.width+t,name:"arrow_ne",...i&&{config:i}}),southEastArrowNorthWest:e=>({top:s(e),left:e.right-t,name:"arrow_nw",...i&&{config:i}}),southEastArrowNorthMiddleWest:(e,o)=>({top:s(e),left:e.right-.25*o.width-t,name:"arrow_nmw",...i&&{config:i}}),southEastArrowNorth:(e,t)=>({top:s(e),left:e.right-t.width/2,name:"arrow_n",...i&&{config:i}}),southEastArrowNorthMiddleEast:(e,o)=>({top:s(e),left:e.right-.75*o.width+t,name:"arrow_nme",...i&&{config:i}}),southEastArrowNorthEast:(e,o)=>({top:s(e),left:e.right-o.width+t,name:"arrow_ne",...i&&{config:i}}),westArrowEast:(e,t)=>({top:e.top+e.height/2-t.height/2,left:e.left-t.width-o,name:"arrow_e",...i&&{config:i}}),eastArrowWest:(e,t)=>({top:e.top+e.height/2-t.height/2,left:e.right+o,name:"arrow_w",...i&&{config:i}}),viewportStickyNorth:(e,t,o,r)=>{const s=r||o;return e.getIntersection(s)?s.height-e.height>n?null:{top:s.top+n,left:e.left+e.width/2-t.width/2,name:"arrowless",config:{withArrow:!1,...i}}:null}};function r(e,t){return e.top-t.height-o}function s(e){return e.bottom+o}}}Ug.arrowSideOffset=25,Ug.arrowHeightOffset=10,Ug.stickyVerticalOffset=20,Ug._getOptimalPosition=si,Ug.defaultPositions=Ug.generatePositions();const Wg=Ug;function Gg(e){return Tn(e)?e:$n(e)?e.commonAncestorContainer:"function"==typeof e?Gg(e()):null}var Kg=i(7217),Zg={attributes:{"data-cke":!0}};Zg.setAttributes=Xr(),Zg.insert=Yr().bind(null,"head"),Zg.domAPI=Zr(),Zg.insertStyleElement=ts();Gr()(Kg.A,Zg);Kg.A&&Kg.A.locals&&Kg.A.locals;class Jg extends Wg{constructor(e){super(e);const t=this.bindTemplate;this.set({isVisible:!1,position:"se",class:null,top:0,left:0}),this.extendTemplate({tag:"div",attributes:{class:["ck-reset","ck-dropdown-menu__nested-menu__panel"],tabindex:"-1"},on:{selectstart:t.to((e=>{"input"!==e.target.tagName.toLocaleLowerCase()&&e.preventDefault()}))}})}focus(e=1){const{content:t}=this;t.length&&(1===e?t.first.focus():t.last.focus())}}var Yg=i(6559),Qg={attributes:{"data-cke":!0}};Qg.setAttributes=Xr(),Qg.insert=Yr().bind(null,"head"),Qg.domAPI=Zr(),Qg.insertStyleElement=ts();Gr()(Yg.A,Qg);Yg.A&&Yg.A.locals&&Yg.A.locals;class Xg extends zp{constructor(e,t,o,n,i){super(e),this._bodyCollection=t,this.id=o,this.set({isOpen:!1,isEnabled:!0,panelPosition:"w",class:void 0,parentMenuView:null}),this.keystrokes=new ar,this.focusTracker=new nr,this.buttonView=new Sg(e),this.buttonView.delegate("mouseenter").to(this),this.buttonView.bind("isOn","isEnabled").to(this,"isOpen","isEnabled"),this.buttonView.label=n,this.panelView=new Jg(e),this.panelView.isVisible=!0,this.listView=new zg(e),this.listView.bind("ariaLabel").to(this.buttonView,"label"),this.panelView.content.add(this.listView);const r=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown-menu-list__nested-menu",r.to("class"),r.if("isEnabled","ck-disabled",(e=>!e))],role:"presentation"},children:[this.buttonView]}),this.parentMenuView=i,this.parentMenuView&&this._handleParentMenuView(),this._attachBehaviors()}get _panelPositions(){const{westSouth:e,eastSouth:t,westNorth:o,eastNorth:n}=Og;return"ltr"===this.locale.uiLanguageDirection?[t,n,e,o]:[e,o,t,n]}render(){super.render(),this.panelView.render(),this.focusTracker.add(this.buttonView.element),this.focusTracker.add(this.panelView.element),this.focusTracker.add(this.listView),this.keystrokes.listenTo(this.element),this._mountPanelOnOpen()}destroy(){this._removePanelFromBody(),this.panelView.destroy(),super.destroy()}focus(){this.buttonView.focus()}_handleParentMenuView(){this.delegate(...Xg.DELEGATED_EVENTS).to(this.parentMenuView),Lg.closeOnParentClose(this,this.parentMenuView)}_attachBehaviors(){Lg.openOnButtonClick(this),Lg.openAndFocusOnEnterKeyPress(this),Lg.openOnArrowRightKey(this),Lg.closeOnEscKey(this),Lg.closeOnArrowLeftKey(this)}_mountPanelOnOpen(){const{panelView:e}=this;this.on("change:isOpen",((t,o,n)=>{t.source===this&&(n||!this._bodyCollection.has(e)?n&&!this._bodyCollection.has(e)&&this._addPanelToBody():this._removePanelFromBody())}))}_removePanelFromBody(){const{panelView:e,keystrokes:t}=this;this._bodyCollection.has(e)&&(this._bodyCollection.remove(e),t.stopListening(e.element))}_addPanelToBody(){const{panelView:e,buttonView:t,keystrokes:o}=this;this._bodyCollection.has(e)||(this._bodyCollection.add(e),o.listenTo(e.element),e.pin({positions:this._panelPositions,limiter:s.document.body,element:e.element,target:t.element,fitInViewport:!0}))}}Xg.DELEGATED_EVENTS=["mouseenter","execute","change:isOpen"];class ef extends zp{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}class tf extends zp{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__line-break"]}})}}function of(e){if(Array.isArray(e))return{items:e,removeItems:[]};const t={items:[],removeItems:[]};return e?{...t,...e}:t}var nf=i(66),rf={attributes:{"data-cke":!0}};rf.setAttributes=Xr(),rf.insert=Yr().bind(null,"head"),rf.domAPI=Zr(),rf.insertStyleElement=ts();Gr()(nf.A,rf);nf.A&&nf.A.locals&&nf.A.locals;const sf=(()=>({alignLeft:up.alignLeft,bold:up.bold,importExport:up.importExport,paragraph:up.paragraph,plus:up.plus,text:up.text,threeVerticalDots:up.threeVerticalDots,pilcrow:up.pilcrow,dragIndicator:up.dragIndicator}))();class af extends zp{constructor(e,t){super(e);const o=this.bindTemplate,n=this.t;this.options=t||{},this.set("ariaLabel",n("Editor toolbar")),this.set("maxWidth","auto"),this.set("role","toolbar"),this.items=this.createCollection(),this.focusTracker=new nr,this.keystrokes=new ar,this.set("class",void 0),this.set("isCompact",!1),this.itemsView=new lf(e),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection();const i="rtl"===e.uiLanguageDirection;this._focusCycler=new Xp({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[i?"arrowright":"arrowleft","arrowup"],focusNext:[i?"arrowleft":"arrowright","arrowdown"]}});const r=["ck","ck-toolbar",o.to("class"),o.if("isCompact","ck-toolbar_compact")];var s;this.options.shouldGroupWhenFull&&this.options.isFloating&&r.push("ck-toolbar_floating"),this.setTemplate({tag:"div",attributes:{class:r,role:o.to("role"),"aria-label":o.to("ariaLabel"),style:{maxWidth:o.to("maxWidth")},tabindex:-1},children:this.children,on:{mousedown:(s=this,s.bindTemplate.to((e=>{e.target===s.element&&e.preventDefault()})))}}),this._behavior=this.options.shouldGroupWhenFull?new df(this):new cf(this)}render(){super.render(),this.focusTracker.add(this.element);for(const e of this.items)this.focusTracker.add(e);this.items.on("add",((e,t)=>{this.focusTracker.add(t)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t)})),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(e,t,o){this.items.addMany(this._buildItemsFromConfig(e,t,o))}_buildItemsFromConfig(e,t,o){const n=of(e),i=o||n.removeItems;return this._cleanItemsConfiguration(n.items,t,i).map((e=>W(e)?this._createNestedToolbarDropdown(e,t,i):"|"===e?new ef:"-"===e?new tf:t.create(e))).filter((e=>!!e))}_cleanItemsConfiguration(e,t,o){const n=e.filter(((e,n,i)=>"|"===e||-1===o.indexOf(e)&&("-"===e?!this.options.shouldGroupWhenFull||(T("toolbarview-line-break-ignored-when-grouping-items",i),!1):!(!W(e)&&!t.has(e))||(T("toolbarview-item-unavailable",{item:e}),!1))));return this._cleanSeparatorsAndLineBreaks(n)}_cleanSeparatorsAndLineBreaks(e){const t=e=>"-"!==e&&"|"!==e,o=e.length,n=e.findIndex(t);if(-1===n)return[];const i=o-e.slice().reverse().findIndex(t);return e.slice(n,i).filter(((e,o,n)=>{if(t(e))return!0;return!(o>0&&n[o-1]===e)}))}_createNestedToolbarDropdown(e,t,o){let{label:n,icon:i,items:r,tooltip:s=!0,withText:a=!1}=e;if(r=this._cleanItemsConfiguration(r,t,o),!r.length)return null;const l=kf(this.locale);return n||T("toolbarview-nested-toolbar-dropdown-missing-label",e),l.class="ck-toolbar__nested-toolbar-dropdown",l.buttonView.set({label:n,tooltip:s,withText:!!a}),!1!==i?l.buttonView.icon=sf[i]||i||up.threeVerticalDots:l.buttonView.withText=!0,wf(l,(()=>l.toolbarView._buildItemsFromConfig(r,t,o))),l}}class lf extends zp{constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class cf{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=>tm(e)?e:null)),e.extendTemplate({attributes:{class:[t.if("isVertical","ck-toolbar_vertical")]}})}render(){}destroy(){}}class df{constructor(e){this.resizeObserver=null,this.cachedPadding=null,this.shouldUpdateGroupingOnNextResize=!1,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(),e.itemsView.children.bindTo(this.ungroupedItems).using((e=>e)),this.ungroupedItems.on("change",this._updateFocusCyclableItems.bind(this)),e.children.on("change",this._updateFocusCyclableItems.bind(this)),e.items.on("change",((e,t)=>{const o=t.index,n=Array.from(t.added);for(const e of t.removed)o>=this.ungroupedItems.length?this.groupedItems.remove(e):this.ungroupedItems.remove(e);for(let e=o;ethis.ungroupedItems.length?this.groupedItems.add(t,e-this.ungroupedItems.length):this.ungroupedItems.add(t,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(!ri(this.viewElement))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 Gn(e.lastChild),n=new Gn(e);if(!this.cachedPadding){const o=s.window.getComputedStyle(e),n="ltr"===t?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(o[n])}return"ltr"===t?o.right>n.right-this.cachedPadding:o.left{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 ef),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=kf(e);return o.class="ck-toolbar__grouped-dropdown",o.panelPosition="ltr"===e.uiLanguageDirection?"sw":"se",wf(o,this.groupedItems),o.buttonView.set({label:t("Show more items"),tooltip:!0,tooltipPosition:"rtl"===e.uiLanguageDirection?"se":"sw",icon:up.threeVerticalDots}),o}_updateFocusCyclableItems(){this.viewFocusables.clear(),this.ungroupedItems.map((e=>{tm(e)&&this.viewFocusables.add(e)})),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}var uf=i(7133),hf={attributes:{"data-cke":!0}};hf.setAttributes=Xr(),hf.insert=Yr().bind(null,"head"),hf.domAPI=Zr(),hf.insertStyleElement=ts();Gr()(uf.A,hf);uf.A&&uf.A.locals&&uf.A.locals;class pf extends zp{constructor(e,t){super(e);const o=this.bindTemplate;this.set("class",void 0),this.set("labelStyle",void 0),this.set("icon",void 0),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isToggleable",!1),this.set("isVisible",!0),this.set("keystroke",void 0),this.set("withKeystroke",!1),this.set("label",void 0),this.set("tabindex",-1),this.set("tooltip",!1),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.children=this.createCollection(),this.actionView=this._createActionView(t),this.arrowView=this._createArrowView(),this.keystrokes=new ar,this.focusTracker=new nr,this.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",o.to("class"),o.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())}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.actionView.focus()}_createActionView(e){const t=e||new Kp;return e||t.bind("icon","isEnabled","isOn","isToggleable","keystroke","label","tabindex","tooltip","tooltipPosition","type","withText").to(this),t.extendTemplate({attributes:{class:"ck-splitbutton__action"}}),t.delegate("execute").to(this),t}_createArrowView(){const e=new Kp,t=e.bindTemplate;return e.icon=$m,e.extendTemplate({attributes:{class:["ck-splitbutton__arrow"],"data-cke-tooltip-disabled":t.to("isOn"),"aria-haspopup":!0,"aria-expanded":t.to("isOn",(e=>String(e)))}}),e.bind("isEnabled").to(this),e.bind("label").to(this),e.bind("tooltip").to(this),e.delegate("execute").to(this,"open"),e}}var mf=i(7475),gf={attributes:{"data-cke":!0}};gf.setAttributes=Xr(),gf.insert=Yr().bind(null,"head"),gf.domAPI=Zr(),gf.insertStyleElement=ts();Gr()(mf.A,gf);mf.A&&mf.A.locals&&mf.A.locals;var ff=i(2454),bf={attributes:{"data-cke":!0}};bf.setAttributes=Xr(),bf.insert=Yr().bind(null,"head"),bf.domAPI=Zr(),bf.insertStyleElement=ts();Gr()(ff.A,bf);ff.A&&ff.A.locals&&ff.A.locals;function kf(e,t=vg){const o="function"==typeof t?new t(e):t,n=new wg(e),i=new Cg(e,o,n);return o.bind("isEnabled").to(i),o instanceof pf?o.arrowView.bind("isOn").to(i,"isOpen"):o.bind("isOn").to(i,"isOpen"),function(e){(function(e){Op({emitter:e,activator:()=>e.isRendered&&e.isOpen,callback:()=>{e.isOpen=!1},contextElements:()=>[e.element,...vf(e.focusTracker).filter((t=>!e.element.contains(t)))]})})(e),function(e){e.on("execute",(t=>{t.source instanceof Vm||(e.isOpen=!1)}))}(e),function(e){e.focusTracker.on("change:isFocused",((t,o,n)=>{!n&&e.isOpen&&(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),function(e){e.on("change:isOpen",((t,o,n)=>{if(n)return;e.focusTracker.elements.some((e=>e.contains(s.document.activeElement)))&&e.buttonView.focus()}))}(e),function(e){e.on("change:isOpen",((t,o,n)=>{n&&e.panelView.focus()}),{priority:"low"})}(e)}(i),i}function wf(e,t,o={}){e.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),e.isOpen?_f(e,t,o):e.once("change:isOpen",(()=>_f(e,t,o)),{priority:"highest"}),o.enableActiveItemFocusOnDropdownOpen&&Cf(e,(()=>e.toolbarView.items.find((e=>e.isOn))))}function _f(e,t,o){const n=e.locale,i=n.t,r=e.toolbarView=new af(n),s="function"==typeof t?t():t;r.ariaLabel=o.ariaLabel||i("Dropdown toolbar"),o.maxWidth&&(r.maxWidth=o.maxWidth),o.class&&(r.class=o.class),o.isCompact&&(r.isCompact=o.isCompact),o.isVertical&&(r.isVertical=!0),s instanceof hp?r.items.bindTo(s).using((e=>e)):r.items.addMany(s),e.panelView.children.add(r),e.focusTracker.add(r),r.items.delegate("execute").to(e)}function yf(e,t,o={}){e.isOpen?Af(e,t,o):e.once("change:isOpen",(()=>Af(e,t,o)),{priority:"highest"}),Cf(e,(()=>e.listView.items.find((e=>e instanceof Tg&&e.children.first.isOn))))}function Af(e,t,o){const n=e.locale,i=e.listView=new Mg(n),r="function"==typeof t?t():t;i.ariaLabel=o.ariaLabel,i.role=o.role,xf(e,i.items,r,n),e.panelView.children.add(i),i.items.delegate("execute").to(e)}function Cf(e,t){e.on("change:isOpen",(()=>{if(!e.isOpen)return;const o=t();o&&("function"==typeof o.focus?o.focus():T("ui-dropdown-focus-child-on-open-child-missing-focus",{view:o}))}),{priority:D.low-10})}function vf(e){return[...e.elements,...e.externalViews.flatMap((e=>vf(e.focusTracker)))]}function xf(e,t,o,n){t.on("change",(()=>{const e=[...t].reduce(((e,t)=>(t instanceof Tg&&t.children.first instanceof Am&&e.push(t.children.first),e)),[]),o=e.some((e=>e.isToggleable));e.forEach((e=>{e.hasCheckSpace=o}))})),t.bindTo(o).using((t=>{if("separator"===t.type)return new Ig(n);if("group"===t.type){const o=new Pg(n);return o.set({label:t.label}),xf(e,o.items,t.items,n),o.items.delegate("execute").to(e),o}if("button"===t.type||"switchbutton"===t.type){const e="menuitemcheckbox"===t.model.role||"menuitemradio"===t.model.role,o=new Tg(n);let i;return"button"===t.type?(i=new Am(n),i.set({isToggleable:e})):i=new Vm(n),i.bind(...Object.keys(t.model)).to(t.model),i.delegate("execute").to(o),o.children.add(i),o}return null}))}const Ef=(e,t,o)=>{const n=new gg(e.locale);return n.set({id:t,ariaDescribedById:o}),n.bind("isReadOnly").to(e,"isEnabled",(e=>!e)),n.bind("hasError").to(e,"errorText",(e=>!!e)),n.on("input",(()=>{e.errorText=null})),e.bind("isEmpty","isFocused","placeholder").to(n),n},Df=(e,t,o)=>{const n=new fg(e.locale);return n.set({id:t,ariaDescribedById:o,inputMode:"numeric"}),n.bind("isReadOnly").to(e,"isEnabled",(e=>!e)),n.bind("hasError").to(e,"errorText",(e=>!!e)),n.on("input",(()=>{e.errorText=null})),e.bind("isEmpty","isFocused","placeholder").to(n),n},Bf=(e,t,o)=>{const n=kf(e.locale);return n.set({id:t,ariaDescribedById:o}),n.bind("isEnabled").to(e),n},Sf=(e,t=0,o=1)=>e>o?o:eMath.round(o*e)/o,If=(Math.PI,e=>("#"===e[0]&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:4===e.length?Tf(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:8===e.length?Tf(parseInt(e.substring(6,8),16)/255,2):1})),Pf=({h:e,s:t,v:o,a:n})=>{const i=(200-t)*o/100;return{h:Tf(e),s:Tf(i>0&&i<200?t*o/100/(i<=100?i:200-i)*100:0),l:Tf(i/2),a:Tf(n,2)}},Ff=e=>{const{h:t,s:o,l:n}=Pf(e);return`hsl(${t}, ${o}%, ${n}%)`},Rf=({h:e,s:t,v:o,a:n})=>{e=e/360*6,t/=100,o/=100;const i=Math.floor(e),r=o*(1-t),s=o*(1-(e-i)*t),a=o*(1-(1-e+i)*t),l=i%6;return{r:Tf(255*[o,s,r,r,a,o][l]),g:Tf(255*[a,o,o,s,r,r][l]),b:Tf(255*[r,r,a,o,o,s][l]),a:Tf(n,2)}},Mf=e=>{const t=e.toString(16);return t.length<2?"0"+t:t},zf=({r:e,g:t,b:o,a:n})=>{const i=n<1?Mf(Tf(255*n)):"";return"#"+Mf(e)+Mf(t)+Mf(o)+i},Of=({r:e,g:t,b:o,a:n})=>{const i=Math.max(e,t,o),r=i-Math.min(e,t,o),s=r?i===e?(t-o)/r:i===t?2+(o-e)/r:4+(e-t)/r:0;return{h:Tf(60*(s<0?s+6:s)),s:Tf(i?r/i*100:0),v:Tf(i/255*100),a:n}},Nf=(e,t)=>{if(e===t)return!0;for(const o in e)if(e[o]!==t[o])return!1;return!0},Vf={},Lf=e=>{let t=Vf[e];return t||(t=document.createElement("template"),t.innerHTML=e,Vf[e]=t),t},Hf=(e,t,o)=>{e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:o}))};let jf=!1;const qf=e=>"touches"in e,$f=(e,t)=>{const o=qf(t)?t.touches[0]:t,n=e.el.getBoundingClientRect();Hf(e.el,"move",e.getMove({x:Sf((o.pageX-(n.left+window.pageXOffset))/n.width),y:Sf((o.pageY-(n.top+window.pageYOffset))/n.height)}))};class Uf{constructor(e,t,o,n){const i=Lf(`
      `);e.appendChild(i.content.cloneNode(!0));const r=e.querySelector(`[part=${t}]`);r.addEventListener("mousedown",this),r.addEventListener("touchstart",this),r.addEventListener("keydown",this),this.el=r,this.xy=n,this.nodes=[r.firstChild,r]}set dragging(e){const t=e?document.addEventListener:document.removeEventListener;t(jf?"touchmove":"mousemove",this),t(jf?"touchend":"mouseup",this)}handleEvent(e){switch(e.type){case"mousedown":case"touchstart":if(e.preventDefault(),!(e=>!(jf&&!qf(e)||(jf||(jf=qf(e)),0)))(e)||!jf&&0!=e.button)return;this.el.focus(),$f(this,e),this.dragging=!0;break;case"mousemove":case"touchmove":e.preventDefault(),$f(this,e);break;case"mouseup":case"touchend":this.dragging=!1;break;case"keydown":((e,t)=>{const o=t.keyCode;o>40||e.xy&&o<37||o<33||(t.preventDefault(),Hf(e.el,"move",e.getMove({x:39===o?.01:37===o?-.01:34===o?.05:33===o?-.05:35===o?1:36===o?-1:0,y:40===o?.01:38===o?-.01:0},!0)))})(this,e)}}style(e){e.forEach(((e,t)=>{for(const o in e)this.nodes[t].style.setProperty(o,e[o])}))}}class Wf extends Uf{constructor(e){super(e,"hue",'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"',!1)}update({h:e}){this.h=e,this.style([{left:e/360*100+"%",color:Ff({h:e,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuenow",`${Tf(e)}`)}getMove(e,t){return{h:t?Sf(this.h+360*e.x,0,360):360*e.x}}}class Gf extends Uf{constructor(e){super(e,"saturation",'aria-label="Color"',!0)}update(e){this.hsva=e,this.style([{top:100-e.v+"%",left:`${e.s}%`,color:Ff(e)},{"background-color":Ff({h:e.h,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuetext",`Saturation ${Tf(e.s)}%, Brightness ${Tf(e.v)}%`)}getMove(e,t){return{s:t?Sf(this.hsva.s+100*e.x,0,100):100*e.x,v:t?Sf(this.hsva.v-100*e.y,0,100):Math.round(100-100*e.y)}}}const Kf=Symbol("same"),Zf=Symbol("color"),Jf=Symbol("hsva"),Yf=Symbol("update"),Qf=Symbol("parts"),Xf=Symbol("css"),eb=Symbol("sliders");class tb extends HTMLElement{static get observedAttributes(){return["color"]}get[Xf](){return[':host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;display:flex;place-content:center center;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{content:"";width:100%;height:100%;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}',"[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}","[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}"]}get[eb](){return[Gf,Wf]}get color(){return this[Zf]}set color(e){if(!this[Kf](e)){const t=this.colorModel.toHsva(e);this[Yf](t),this[Zf]=e}}constructor(){super();const e=Lf(``),t=this.attachShadow({mode:"open"});t.appendChild(e.content.cloneNode(!0)),t.addEventListener("move",this),this[Qf]=this[eb].map((e=>new e(t)))}connectedCallback(){if(this.hasOwnProperty("color")){const e=this.color;delete this.color,this.color=e}else this.color||(this.color=this.colorModel.defaultColor)}attributeChangedCallback(e,t,o){const n=this.colorModel.fromAttr(o);this[Kf](n)||(this.color=n)}handleEvent(e){const t=this[Jf],o={...t,...e.detail};let n;this[Yf](o),Nf(o,t)||this[Kf](n=this.colorModel.fromHsva(o))||(this[Zf]=n,Hf(this,"color-changed",{value:n}))}[Kf](e){return this.color&&this.colorModel.equal(e,this.color)}[Yf](e){this[Jf]=e,this[Qf].forEach((t=>t.update(e)))}}const ob={defaultColor:"#000",toHsva:e=>Of(If(e)),fromHsva:({h:e,s:t,v:o})=>zf(Rf({h:e,s:t,v:o,a:1})),equal:(e,t)=>e.toLowerCase()===t.toLowerCase()||Nf(If(e),If(t)),fromAttr:e=>e};class nb extends tb{get colorModel(){return ob}}var ib=i(3086),rb={attributes:{"data-cke":!0}};rb.setAttributes=Xr(),rb.insert=Yr().bind(null,"head"),rb.domAPI=Zr(),rb.insertStyleElement=ts();Gr()(ib.A,rb);ib.A&&ib.A.locals&&ib.A.locals;class sb extends zp{constructor(e,t={}){super(e),this.set({color:"",_hexColor:""}),this.hexInputRow=this._createInputRow();const o=this.createCollection();t.hideInput||o.add(this.hexInputRow),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker"],tabindex:-1},children:o}),this._config=t,this._debounceColorPickerEvent=bl((e=>{this.set("color",e),this.fire("colorSelected",{color:this.color})}),150,{leading:!0}),this.on("set:color",((e,t,o)=>{e.return=sg(o,this._config.format||"hsl")})),this.on("change:color",(()=>{this._hexColor=ab(this.color)})),this.on("change:_hexColor",(()=>{document.activeElement!==this.picker&&this.picker.setAttribute("color",this._hexColor),ab(this.color)!=ab(this._hexColor)&&(this.color=this._hexColor)}))}render(){var e,t;if(super.render(),e="hex-color-picker",t=nb,void 0===customElements.get(e)&&customElements.define(e,t),this.picker=s.document.createElement("hex-color-picker"),this.picker.setAttribute("class","hex-color-picker"),this.picker.setAttribute("tabindex","-1"),this._createSlidersView(),this.element){this.hexInputRow.element?this.element.insertBefore(this.picker,this.hexInputRow.element):this.element.appendChild(this.picker);const e=document.createElement("style");e.textContent='[role="slider"]:focus [part$="pointer"] {border: 1px solid #fff;outline: 1px solid var(--ck-color-focus-border);box-shadow: 0 0 0 2px #fff;}',this.picker.shadowRoot.appendChild(e)}this.picker.addEventListener("color-changed",(e=>{const t=e.detail.value;this._debounceColorPickerEvent(t)}))}focus(){if(!this._config.hideInput&&(c.isGecko||c.isiOS||c.isSafari||c.isBlink)){this.hexInputRow.children.get(1).focus()}this.slidersView.first.focus()}_createSlidersView(){const e=[...this.picker.shadowRoot.children].filter((e=>"slider"===e.getAttribute("role"))).map((e=>new lb(e)));this.slidersView=this.createCollection(),e.forEach((e=>{this.slidersView.add(e)}))}_createInputRow(){const e=this._createColorInput();return new db(this.locale,e)}_createColorInput(){const e=new dg(this.locale,Ef),{t}=this.locale;return e.set({label:t("HEX"),class:"color-picker-hex-input"}),e.fieldView.bind("value").to(this,"_hexColor",(t=>e.isFocused?e.fieldView.value:t.startsWith("#")?t.substring(1):t)),e.fieldView.on("input",(()=>{const t=e.fieldView.element.value;if(t){const e=ub(t);e&&this._debounceColorPickerEvent(e)}})),e}isValid(){const{t:e}=this.locale;return!!this._config.hideInput||(this.resetValidationStatus(),!!this.hexInputRow.getParsedColor()||(this.hexInputRow.inputView.errorText=e('Please enter a valid color (e.g. "ff0000").'),!1))}resetValidationStatus(){this.hexInputRow.inputView.errorText=null}}function ab(e){let t=function(e){if(!e)return"";const t=ag(e);return t?"hex"===t.space?t.hexValue:sg(e,"hex"):"#000"}(e);return t||(t="#000"),4===t.length&&(t="#"+[t[1],t[1],t[2],t[2],t[3],t[3]].join("")),t.toLowerCase()}class lb extends zp{constructor(e){super(),this.element=e}focus(){this.element.focus()}}class cb extends zp{constructor(e){super(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker__hash-view"]},children:"#"})}}class db extends zp{constructor(e,t){super(e),this.inputView=t,this.children=this.createCollection([new cb,this.inputView]),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker__row"]},children:this.children})}getParsedColor(){return ub(this.inputView.fieldView.element.value)}}function ub(e){if(!e)return null;const t=e.trim().replace(/^#/,"");return[3,4,6,8].includes(t.length)&&/^(([0-9a-fA-F]{2}){3,4}|([0-9a-fA-F]){3,4})$/.test(t)?`#${t}`:null}class hb extends(X(tr)){constructor(e){super(e),this.set("isEmpty",!0),this.on("change",(()=>{this.set("isEmpty",0===this.length)}))}add(e,t){return this.find((t=>t.color===e.color))?this:super.add(e,t)}hasColor(e){return!!this.find((t=>t.color===e))}}class pb extends zp{constructor(e,{colors:t,columns:o,removeButtonLabel:n,documentColorsLabel:i,documentColorsCount:r,colorPickerLabel:s,focusTracker:a,focusables:l}){super(e);const c=this.bindTemplate;this.set("isVisible",!0),this.focusTracker=a,this.items=this.createCollection(),this.colorDefinitions=t,this.columns=o,this.documentColors=new hb,this.documentColorsCount=r,this._focusables=l,this._removeButtonLabel=n,this._colorPickerLabel=s,this._documentColorsLabel=i,this.setTemplate({tag:"div",attributes:{class:["ck-color-grids-fragment",c.if("isVisible","ck-hidden",(e=>!e))]},children:this.items}),this.removeColorButtonView=this._createRemoveColorButton(),this.items.add(this.removeColorButtonView)}updateDocumentColors(e,t){const o=e.document,n=this.documentColorsCount;this.documentColors.clear();for(const i of o.getRoots()){const o=e.createRangeIn(i);for(const e of o.getItems())if(e.is("$textProxy")&&e.hasAttribute(t)&&(this._addColorToDocumentColors(e.getAttribute(t)),this.documentColors.length>=n))return}}updateSelectedColors(){const e=this.documentColorsGrid,t=this.staticColorsGrid,o=this.selectedColor;t.selectedColor=o,e&&(e.selectedColor=o)}render(){if(super.render(),this.staticColorsGrid=this._createStaticColorsGrid(),this.items.add(this.staticColorsGrid),this.documentColorsCount){const e=pp.bind(this.documentColors,this.documentColors),t=new zp(this.locale);t.setTemplate({tag:"span",attributes:{class:["ck","ck-color-grid__label",e.if("isEmpty","ck-hidden")]},children:[{text:this._documentColorsLabel}]}),this.items.add(t),this.documentColorsGrid=this._createDocumentColorsGrid(),this.items.add(this.documentColorsGrid)}this._createColorPickerButton(),this._addColorSelectorElementsToFocusTracker()}focus(){this.removeColorButtonView.focus()}destroy(){super.destroy()}addColorPickerButton(){this.colorPickerButtonView&&(this.items.add(this.colorPickerButtonView),this.focusTracker.add(this.colorPickerButtonView.element),this._focusables.add(this.colorPickerButtonView))}_addColorSelectorElementsToFocusTracker(){this.focusTracker.add(this.removeColorButtonView.element),this._focusables.add(this.removeColorButtonView),this.staticColorsGrid&&(this.focusTracker.add(this.staticColorsGrid.element),this._focusables.add(this.staticColorsGrid)),this.documentColorsGrid&&(this.focusTracker.add(this.documentColorsGrid.element),this._focusables.add(this.documentColorsGrid))}_createColorPickerButton(){this.colorPickerButtonView=new Kp,this.colorPickerButtonView.set({label:this._colorPickerLabel,withText:!0,icon:up.colorPalette,class:"ck-color-selector__color-picker"}),this.colorPickerButtonView.on("execute",(()=>{this.fire("colorPicker:show")}))}_createRemoveColorButton(){const e=new Kp;return e.set({withText:!0,icon:up.eraser,label:this._removeButtonLabel}),e.class="ck-color-selector__remove-color",e.on("execute",(()=>{this.fire("execute",{value:null,source:"removeColorButton"})})),e.render(),e}_createStaticColorsGrid(){const e=new eg(this.locale,{colorDefinitions:this.colorDefinitions,columns:this.columns});return e.on("execute",((e,t)=>{this.fire("execute",{value:t.value,source:"staticColorsGrid"})})),e}_createDocumentColorsGrid(){const e=pp.bind(this.documentColors,this.documentColors),t=new eg(this.locale,{columns:this.columns});return t.extendTemplate({attributes:{class:e.if("isEmpty","ck-hidden")}}),t.items.bindTo(this.documentColors).using((e=>{const t=new Ym;return t.set({color:e.color,hasBorder:e.options&&e.options.hasBorder}),e.label&&t.set({label:e.label,tooltip:!0}),t.on("execute",(()=>{this.fire("execute",{value:e.color,source:"documentColorsGrid"})})),t})),this.documentColors.on("change:isEmpty",((e,o,n)=>{n&&(t.selectedColor=null)})),t}_addColorToDocumentColors(e){const t=this.colorDefinitions.find((t=>t.color===e));t?this.documentColors.add(Object.assign({},t)):this.documentColors.add({color:e,label:e,options:{hasBorder:!1}})}}class mb extends zp{constructor(e,{focusTracker:t,focusables:o,keystrokes:n,colorPickerViewConfig:i}){super(e),this.items=this.createCollection(),this.focusTracker=t,this.keystrokes=n,this.set("isVisible",!1),this.set("selectedColor",void 0),this._focusables=o,this._colorPickerViewConfig=i;const r=this.bindTemplate,{saveButtonView:s,cancelButtonView:a}=this._createActionButtons();this.saveButtonView=s,this.cancelButtonView=a,this.actionBarView=this._createActionBarView({saveButtonView:s,cancelButtonView:a}),this.setTemplate({tag:"div",attributes:{class:["ck-color-picker-fragment",r.if("isVisible","ck-hidden",(e=>!e))]},children:this.items})}render(){super.render();const e=new sb(this.locale,{...this._colorPickerViewConfig});this.colorPickerView=e,this.colorPickerView.render(),this.selectedColor&&(e.color=this.selectedColor),this.listenTo(this,"change:selectedColor",((t,o,n)=>{e.color=n})),this.items.add(this.colorPickerView),this.items.add(this.actionBarView),this._addColorPickersElementsToFocusTracker(),this._stopPropagationOnArrowsKeys(),this._executeOnEnterPress(),this._executeUponColorChange()}destroy(){super.destroy()}focus(){this.colorPickerView.focus()}resetValidationStatus(){this.colorPickerView.resetValidationStatus()}_executeOnEnterPress(){this.keystrokes.set("enter",(e=>{this.isVisible&&this.focusTracker.focusedElement!==this.cancelButtonView.element&&this.colorPickerView.isValid()&&(this.fire("execute",{value:this.selectedColor}),e.stopPropagation(),e.preventDefault())}))}_stopPropagationOnArrowsKeys(){const e=e=>e.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e)}_addColorPickersElementsToFocusTracker(){for(const e of this.colorPickerView.slidersView)this.focusTracker.add(e.element),this._focusables.add(e);const e=this.colorPickerView.hexInputRow.children.get(1);e.element&&(this.focusTracker.add(e.element),this._focusables.add(e)),this.focusTracker.add(this.saveButtonView.element),this._focusables.add(this.saveButtonView),this.focusTracker.add(this.cancelButtonView.element),this._focusables.add(this.cancelButtonView)}_createActionBarView({saveButtonView:e,cancelButtonView:t}){const o=new zp,n=this.createCollection();return n.add(e),n.add(t),o.setTemplate({tag:"div",attributes:{class:["ck","ck-color-selector_action-bar"]},children:n}),o}_createActionButtons(){const e=this.locale,t=e.t,o=new Kp(e),n=new Kp(e);return o.set({icon:up.check,class:"ck-button-save",type:"button",withText:!1,label:t("Accept")}),n.set({icon:up.cancel,class:"ck-button-cancel",type:"button",withText:!1,label:t("Cancel")}),o.on("execute",(()=>{this.colorPickerView.isValid()&&this.fire("execute",{source:"colorPickerSaveButton",value:this.selectedColor})})),n.on("execute",(()=>{this.fire("colorPicker:cancel")})),{saveButtonView:o,cancelButtonView:n}}_executeUponColorChange(){this.colorPickerView.on("colorSelected",((e,t)=>{this.fire("execute",{value:t.color,source:"colorPicker"}),this.set("selectedColor",t.color)}))}}var gb=i(2922),fb={attributes:{"data-cke":!0}};fb.setAttributes=Xr(),fb.insert=Yr().bind(null,"head"),fb.domAPI=Zr(),fb.insertStyleElement=ts();Gr()(gb.A,fb);gb.A&&gb.A.locals&&gb.A.locals;class bb extends zp{constructor(e,{colors:t,columns:o,removeButtonLabel:n,documentColorsLabel:i,documentColorsCount:r,colorPickerLabel:s,colorPickerViewConfig:a}){super(e),this.items=this.createCollection(),this.focusTracker=new nr,this.keystrokes=new ar,this._focusables=new hp,this._colorPickerViewConfig=a,this._focusCycler=new Xp({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.colorGridsFragmentView=new pb(e,{colors:t,columns:o,removeButtonLabel:n,documentColorsLabel:i,documentColorsCount:r,colorPickerLabel:s,focusTracker:this.focusTracker,focusables:this._focusables}),this.colorPickerFragmentView=new mb(e,{focusables:this._focusables,focusTracker:this.focusTracker,keystrokes:this.keystrokes,colorPickerViewConfig:a}),this.set("_isColorGridsFragmentVisible",!0),this.set("_isColorPickerFragmentVisible",!1),this.set("selectedColor",void 0),this.colorGridsFragmentView.bind("isVisible").to(this,"_isColorGridsFragmentVisible"),this.colorPickerFragmentView.bind("isVisible").to(this,"_isColorPickerFragmentVisible"),this.on("change:selectedColor",((e,t,o)=>{this.colorGridsFragmentView.set("selectedColor",o),this.colorPickerFragmentView.set("selectedColor",o)})),this.colorGridsFragmentView.on("change:selectedColor",((e,t,o)=>{this.set("selectedColor",o)})),this.colorPickerFragmentView.on("change:selectedColor",((e,t,o)=>{this.set("selectedColor",o)})),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-selector"]},children:this.items})}render(){super.render(),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}appendUI(){this._appendColorGridsFragment(),this._colorPickerViewConfig&&this._appendColorPickerFragment()}showColorPickerFragment(){this.colorPickerFragmentView.colorPickerView&&!this._isColorPickerFragmentVisible&&(this._isColorPickerFragmentVisible=!0,this.colorPickerFragmentView.focus(),this.colorPickerFragmentView.resetValidationStatus(),this._isColorGridsFragmentVisible=!1)}showColorGridsFragment(){this._isColorGridsFragmentVisible||(this._isColorGridsFragmentVisible=!0,this.colorGridsFragmentView.focus(),this._isColorPickerFragmentVisible=!1)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}updateDocumentColors(e,t){this.colorGridsFragmentView.updateDocumentColors(e,t)}updateSelectedColors(){this.colorGridsFragmentView.updateSelectedColors()}_appendColorGridsFragment(){this.items.length||(this.items.add(this.colorGridsFragmentView),this.colorGridsFragmentView.delegate("execute").to(this),this.colorGridsFragmentView.delegate("colorPicker:show").to(this))}_appendColorPickerFragment(){2!==this.items.length&&(this.items.add(this.colorPickerFragmentView),this.colorGridsFragmentView.colorPickerButtonView&&this.colorGridsFragmentView.colorPickerButtonView.on("execute",(()=>{this.showColorPickerFragment()})),this.colorGridsFragmentView.addColorPickerButton(),this.colorPickerFragmentView.delegate("execute").to(this),this.colorPickerFragmentView.delegate("colorPicker:cancel").to(this))}}class kb{constructor(e){this._components=new Map,this.editor=e}*names(){for(const e of this._components.values())yield e.originalName}add(e,t){this._components.set(wb(e),{callback:t,originalName:e})}create(e){if(!this.has(e))throw new S("componentfactory-item-missing",this,{name:e});return this._components.get(wb(e)).callback(this.editor.locale)}has(e){return this._components.has(wb(e))}}function wb(e){return String(e).toLowerCase()}var _b=i(4650),yb={attributes:{"data-cke":!0}};yb.setAttributes=Xr(),yb.insert=Yr().bind(null,"head"),yb.domAPI=Zr(),yb.insertStyleElement=ts();Gr()(_b.A,yb);_b.A&&_b.A.locals&&_b.A.locals;const Ab="ck-tooltip";class Cb extends(On()){constructor(e){if(super(),this._currentElementWithTooltip=null,this._currentTooltipPosition=null,this._mutationObserver=null,Cb._editors.add(e),Cb._instance)return Cb._instance;Cb._instance=this,this.tooltipTextView=new zp(e.locale),this.tooltipTextView.set("text",""),this.tooltipTextView.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:this.tooltipTextView.bindTemplate.to("text")}]}),this.balloonPanelView=new Wg(e.locale),this.balloonPanelView.class=Ab,this.balloonPanelView.content.add(this.tooltipTextView),this._mutationObserver=function(e){const t=new MutationObserver((()=>{e()}));return{attach(e){t.observe(e,{attributes:!0,attributeFilter:["data-cke-tooltip-text","data-cke-tooltip-position"]})},detach(){t.disconnect()}}}((()=>{this._updateTooltipPosition()})),this._pinTooltipDebounced=bl(this._pinTooltip,600),this._unpinTooltipDebounced=bl(this._unpinTooltip,400),this.listenTo(s.document,"keydown",this._onKeyDown.bind(this),{useCapture:!0}),this.listenTo(s.document,"mouseenter",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(s.document,"mouseleave",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(s.document,"focus",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(s.document,"blur",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(s.document,"scroll",this._onScroll.bind(this),{useCapture:!0}),this._watchdogExcluded=!0}destroy(e){const t=e.ui.view&&e.ui.view.body;Cb._editors.delete(e),this.stopListening(e.ui),t&&t.has(this.balloonPanelView)&&t.remove(this.balloonPanelView),Cb._editors.size||(this._unpinTooltip(),this.balloonPanelView.destroy(),this.stopListening(),Cb._instance=null)}static getPositioningFunctions(e){const t=Cb.defaultBalloonPositions;return{s:[t.southArrowNorth,t.southArrowNorthEast,t.southArrowNorthWest],n:[t.northArrowSouth],e:[t.eastArrowWest],w:[t.westArrowEast],sw:[t.southArrowNorthEast],se:[t.southArrowNorthWest]}[e]}_onKeyDown(e,t){"Escape"===t.key&&this._currentElementWithTooltip&&(this._unpinTooltip(),t.stopPropagation())}_onEnterOrFocus(e,{target:t}){const o=xb(t);o?o!==this._currentElementWithTooltip?(this._unpinTooltip(),"focus"===e.name&&!o.matches(":hover")||o.matches("[data-cke-tooltip-instant]")?this._pinTooltip(o,Eb(o)):this._pinTooltipDebounced(o,Eb(o))):this._unpinTooltipDebounced.cancel():"focus"===e.name&&this._unpinTooltip()}_onLeaveOrBlur(e,{target:t,relatedTarget:o}){if("mouseleave"===e.name){if(!Tn(t))return;const e=this.balloonPanelView.element,n=e&&(e===o||e.contains(o)),i=!n&&t===e;if(n)return void this._unpinTooltipDebounced.cancel();if(!i&&this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;const r=xb(t),s=xb(o);(i||r&&r!==s)&&(this._pinTooltipDebounced.cancel(),this._currentElementWithTooltip&&this._currentElementWithTooltip.matches("[data-cke-tooltip-instant]")||r&&r.matches("[data-cke-tooltip-instant]")?this._unpinTooltip():this._unpinTooltipDebounced())}else{if(this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;this._pinTooltipDebounced.cancel(),this._unpinTooltipDebounced()}}_onScroll(e,{target:t}){this._currentElementWithTooltip&&(t.contains(this.balloonPanelView.element)&&t.contains(this._currentElementWithTooltip)||this._unpinTooltip())}_pinTooltip(e,{text:t,position:o,cssClass:n}){this._unpinTooltip();const i=or(Cb._editors.values()).ui.view.body;i.has(this.balloonPanelView)||i.add(this.balloonPanelView),this.tooltipTextView.text=t,this.balloonPanelView.class=[Ab,n].filter((e=>e)).join(" "),this.balloonPanelView.pin({target:e,positions:Cb.getPositioningFunctions(o)}),this._mutationObserver.attach(e);for(const e of Cb._editors)this.listenTo(e.ui,"update",this._updateTooltipPosition.bind(this),{priority:"low"});this._currentElementWithTooltip=e,this._currentTooltipPosition=o}_unpinTooltip(){this._unpinTooltipDebounced.cancel(),this._pinTooltipDebounced.cancel(),this.balloonPanelView.unpin();for(const e of Cb._editors)this.stopListening(e.ui,"update");this._currentElementWithTooltip=null,this._currentTooltipPosition=null,this.tooltipTextView.text="",this._mutationObserver.detach()}_updateTooltipPosition(){if(!this._currentElementWithTooltip)return;const e=Eb(this._currentElementWithTooltip);ri(this._currentElementWithTooltip)&&e.text?this.balloonPanelView.pin({target:this._currentElementWithTooltip,positions:Cb.getPositioningFunctions(e.position)}):this._unpinTooltip()}}Cb.defaultBalloonPositions=Wg.generatePositions({heightOffset:5,sideOffset:13}),Cb._editors=new Set,Cb._instance=null;const vb=Cb;function xb(e){return Tn(e)?e.closest("[data-cke-tooltip-text]:not([data-cke-tooltip-disabled])"):null}function Eb(e){return{text:e.dataset.ckeTooltipText,position:e.dataset.ckeTooltipPosition||"s",cssClass:e.dataset.ckeTooltipClass||""}}class Db extends(On()){constructor(e,t={}){super(),this._balloonView=null,this._showBalloonThrottled=Hh((()=>this._showBalloon()),50,{leading:!0}),this._lastFocusedEditableElement=null,this.editor=e,this._balloonClass=t.balloonClass,e.on("ready",(()=>this._handleEditorReady()))}destroy(){const e=this._balloonView;e&&(e.unpin(),this._balloonView=null),this._showBalloonThrottled.cancel(),this.stopListening()}_handleEditorReady(){const e=this.editor;this._isEnabled()&&e.ui.view&&(e.ui.focusTracker.on("change:isFocused",((e,t,o)=>{this._updateLastFocusedEditableElement(),o?this._showBalloon():this._hideBalloon()})),e.ui.focusTracker.on("change:focusedElement",((e,t,o)=>{this._updateLastFocusedEditableElement(),o&&this._showBalloon()})),e.ui.on("update",(()=>{this._showBalloonThrottled()})))}_getNormalizedConfig(){return{side:"ltr"===this.editor.locale.contentLanguageDirection?"right":"left",position:"border",verticalOffset:0,horizontalOffset:5}}_showBalloon(){const e=this._getBalloonAttachOptions();e&&(this._balloonView||(this._balloonView=this._createBalloonView()),this._balloonView.pin(e))}_hideBalloon(){this._balloonView&&this._balloonView.unpin()}_createBalloonView(){const e=this.editor,t=new Wg,o=this._createBadgeContent();return t.content.add(o),this._balloonClass&&(t.class=this._balloonClass),e.ui.view.body.add(t),t}_getBalloonAttachOptions(){if(!this._lastFocusedEditableElement)return null;const e=this._getNormalizedConfig(),t="right"===e.side?function(e,t){return Bb(e,t,((e,o)=>e.left+e.width-o.width-t.horizontalOffset))}(this._lastFocusedEditableElement,e):function(e,t){return Bb(e,t,(e=>e.left+t.horizontalOffset))}(this._lastFocusedEditableElement,e);return{target:this._lastFocusedEditableElement,positions:[t]}}_updateLastFocusedEditableElement(){const e=this.editor,t=e.ui.focusTracker.isFocused,o=e.ui.focusTracker.focusedElement;if(!t||!o)return void(this._lastFocusedEditableElement=null);const n=Array.from(e.ui.getEditableElementsNames()).map((t=>e.ui.getEditableElement(t)));n.includes(o)?this._lastFocusedEditableElement=o:this._lastFocusedEditableElement=n[0]}}function Bb(e,t,o){return(n,i)=>{const r=new Gn(e);if(r.width<350||r.height<50)return null;let s;s="inside"===t.position?r.bottom-i.height:r.bottom-i.height/2,s-=t.verticalOffset;const a=o(r,i),l=n.clone().moveTo(a,s).getIntersection(i.clone().moveTo(a,s)).getVisible();return!l||l.getArea()\n',isColorInherited:!1}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-powered-by"],"aria-hidden":!0},children:[{tag:"a",attributes:{href:"https://ckeditor.com/powered-by-ckeditor/?utm_source=ckeditor&utm_medium=referral&utm_campaign=701Dn000000hVgmIAE_powered_by_ckeditor_logo",target:"_blank",tabindex:"-1"},children:[...t?[{tag:"span",attributes:{class:["ck","ck-powered-by__label"]},children:[t]}]:[],o],on:{dragstart:n.to((e=>e.preventDefault()))}}]})}}class Ib extends Db{constructor(e){super(e,{balloonClass:"ck-evaluation-badge-balloon"}),this.licenseTypeMessage={evaluation:"For evaluation purposes only",trial:"For evaluation purposes only",development:"For development purposes only"}}_isEnabled(){const e=Fb(this.editor.config.get("licenseKey"));return Boolean(e&&this.licenseTypeMessage[e])}_createBadgeContent(){const e=Fb(this.editor.config.get("licenseKey"));return new Pb(this.editor.locale,this.licenseTypeMessage[e])}_getNormalizedConfig(){const e=super._getNormalizedConfig(),t=this.editor.config.get("ui.poweredBy")||{};return{position:t.position||e.position,side:"left"===(t.side||e.side)?"right":"left",verticalOffset:e.verticalOffset,horizontalOffset:e.horizontalOffset}}}class Pb extends zp{constructor(e,t){super(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-evaluation-badge"],"aria-hidden":!0},children:[{tag:"span",attributes:{class:["ck","ck-evaluation-badge__label"]},children:[t]}]})}}function Fb(e){if("GPL"==e)return"GPL";const t=ur(e.split(".")[1]);return t?t.licenseType||"production":null}var Rb=i(1710),Mb={attributes:{"data-cke":!0}};Mb.setAttributes=Xr(),Mb.insert=Yr().bind(null,"head"),Mb.domAPI=Zr(),Mb.insertStyleElement=ts();Gr()(Rb.A,Mb);Rb.A&&Rb.A.locals&&Rb.A.locals;const zb={POLITE:"polite",ASSERTIVE:"assertive"};class Ob{constructor(e){this.editor=e,e.once("ready",(()=>{for(const e of Object.values(zb))this.announce("",e)}))}announce(e,t=zb.POLITE){const o=this.editor;if(!o.ui.view)return;this.view||(this.view=new Nb(o.locale),o.ui.view.body.add(this.view));const{politeness:n,isUnsafeHTML:i}="string"==typeof t?{politeness:t}:t;let r=this.view.regionViews.find((e=>e.politeness===n));r||(r=new Vb(o,n),this.view.regionViews.add(r)),r.announce({announcement:e,isUnsafeHTML:i})}}class Nb extends zp{constructor(e){super(e),this.regionViews=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-aria-live-announcer"]},children:this.regionViews})}}class Vb extends zp{constructor(e,t){super(e.locale),this.setTemplate({tag:"div",attributes:{"aria-live":t,"aria-relevant":"additions"},children:[{tag:"ul",attributes:{class:["ck","ck-aria-live-region-list"]}}]}),e.on("destroy",(()=>{null!==this._pruneAnnouncementsInterval&&(clearInterval(this._pruneAnnouncementsInterval),this._pruneAnnouncementsInterval=null)})),this.politeness=t,this._domConverter=e.data.htmlProcessor.domConverter,this._pruneAnnouncementsInterval=setInterval((()=>{this.element&&this._listElement.firstChild&&this._listElement.firstChild.remove()}),5e3)}announce({announcement:e,isUnsafeHTML:t}){if(!e.trim().length)return;const o=document.createElement("li");t?this._domConverter.setContentOf(o,e):o.innerText=e,this._listElement.appendChild(o)}get _listElement(){return this.element.querySelector("ul")}}var Lb=i(1214),Hb={attributes:{"data-cke":!0}};Hb.setAttributes=Xr(),Hb.insert=Yr().bind(null,"head"),Hb.domAPI=Zr(),Hb.insertStyleElement=ts();Gr()(Lb.A,Hb);Lb.A&&Lb.A.locals&&Lb.A.locals;class jb extends Tg{constructor(e,t){super(e);const o=this.bindTemplate;this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item"]},on:{mouseenter:o.to("mouseenter")}}),this.delegate("mouseenter").to(t)}}const qb={toggleMenusAndFocusItemsOnHover(e){e.on("menu:mouseenter",(t=>{if(e.isFocusBorderEnabled||e.isOpen){if(e.isOpen)for(const o of e.menus){const e=t.path[0],n=e instanceof jb&&e.children.first===o;o.isOpen=(t.path.includes(o)||n)&&o.isEnabled}t.source.focus()}}))},focusCycleMenusOnArrows(e){const t="rtl"===e.locale.uiLanguageDirection;function o(t,o){const n=e.children.getIndex(t),i=t.isOpen,r=e.children.length,s=e.children.get((n+r+o)%r);t.isOpen=!1,i&&(s.isOpen=!0),s.buttonView.focus()}e.on("menu:arrowright",(e=>{o(e.source,t?-1:1)})),e.on("menu:arrowleft",(e=>{o(e.source,t?1:-1)}))},closeMenusWhenTheBarCloses(e){e.on("change:isOpen",(()=>{e.isOpen||e.menus.forEach((e=>{e.isOpen=!1}))}))},closeMenuWhenAnotherOnTheSameLevelOpens(e){e.on("menu:change:isOpen",((t,o,n)=>{n&&e.menus.filter((e=>t.source.parentMenuView===e.parentMenuView&&t.source!==e&&e.isOpen)).forEach((e=>{e.isOpen=!1}))}))},closeOnClickOutside(e){Op({emitter:e,activator:()=>e.isOpen,callback:()=>e.close(),contextElements:()=>e.children.map((e=>e.element))})},enableFocusHighlightOnInteraction(e){let t=!1;e.on("change:isOpen",((o,n,i)=>{i||(t||(e.isFocusBorderEnabled=!1),t=!1)})),e.listenTo(e.element,"keydown",(()=>{t=!0}),{useCapture:!0}),e.listenTo(e.element,"keyup",(()=>{t=!1}),{useCapture:!0}),e.listenTo(e.element,"focus",(()=>{t&&(e.isFocusBorderEnabled=!0)}),{useCapture:!0})}},$b={openAndFocusPanelOnArrowDownKey(e){e.keystrokes.set("arrowdown",((t,o)=>{e.focusTracker.focusedElement===e.buttonView.element&&(e.isOpen||(e.isOpen=!0),e.panelView.focus(),o())}))},openOnArrowRightKey(e){const t="rtl"===e.locale.uiLanguageDirection?"arrowleft":"arrowright";e.keystrokes.set(t,((t,o)=>{e.focusTracker.focusedElement===e.buttonView.element&&e.isEnabled&&(e.isOpen||(e.isOpen=!0),e.panelView.focus(),o())}))},openOnButtonClick(e){e.buttonView.on("execute",(()=>{e.isOpen=!0}))},toggleOnButtonClick(e){e.buttonView.on("execute",(()=>{e.isOpen=!e.isOpen}))},openAndFocusOnEnterKeyPress(e){e.keystrokes.set("enter",((t,o)=>{e.focusTracker.focusedElement===e.buttonView.element&&(e.isOpen=!0,e.panelView.focus(),o())}))},closeOnArrowLeftKey(e){const t="rtl"===e.locale.uiLanguageDirection?"arrowright":"arrowleft";e.keystrokes.set(t,((t,o)=>{e.isOpen&&(e.isOpen=!1,e.focus(),o())}))},closeOnEscKey(e){e.keystrokes.set("esc",((t,o)=>{e.isOpen&&(e.isOpen=!1,e.focus(),o())}))},closeOnParentClose(e){e.parentMenuView.on("change:isOpen",((t,o,n)=>{n||t.source!==e.parentMenuView||(e.isOpen=!1)}))}},Ub={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"}),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"}),eastSouth:e=>({top:e.top,left:e.right-5,name:"es"}),eastNorth:(e,t)=>({top:e.top-t.height,left:e.right-5,name:"en"}),westSouth:(e,t)=>({top:e.top,left:e.left-t.width+5,name:"ws"}),westNorth:(e,t)=>({top:e.top-t.height,left:e.left-t.width+5,name:"wn"})},Wb=[{menuId:"file",label:"File",groups:[{groupId:"export",items:["menuBar:exportPdf","menuBar:exportWord"]},{groupId:"import",items:["menuBar:importWord"]},{groupId:"revisionHistory",items:["menuBar:revisionHistory"]}]},{menuId:"edit",label:"Edit",groups:[{groupId:"undo",items:["menuBar:undo","menuBar:redo"]},{groupId:"selectAll",items:["menuBar:selectAll"]},{groupId:"findAndReplace",items:["menuBar:findAndReplace"]}]},{menuId:"view",label:"View",groups:[{groupId:"sourceEditingEnhanced",items:["menuBar:sourceEditingEnhanced"]},{groupId:"sourceEditing",items:["menuBar:sourceEditing"]},{groupId:"showBlocks",items:["menuBar:showBlocks"]},{groupId:"previewMergeFields",items:["menuBar:previewMergeFields"]},{groupId:"restrictedEditing",items:["menuBar:restrictedEditing"]}]},{menuId:"insert",label:"Insert",groups:[{groupId:"insertMainWidgets",items:["menuBar:insertImage","menuBar:ckbox","menuBar:ckfinder","menuBar:insertTable"]},{groupId:"insertInline",items:["menuBar:link","menuBar:bookmark","menuBar:comment","menuBar:insertMergeField","menuBar:emoji"]},{groupId:"insertMinorWidgets",items:["menuBar:mediaEmbed","menuBar:insertTemplate","menuBar:specialCharacters","menuBar:blockQuote","menuBar:codeBlock","menuBar:htmlEmbed"]},{groupId:"insertStructureWidgets",items:["menuBar:horizontalLine","menuBar:pageBreak","menuBar:tableOfContents"]},{groupId:"restrictedEditingException",items:["menuBar:restrictedEditingException"]}]},{menuId:"format",label:"Format",groups:[{groupId:"textAndFont",items:[{menuId:"text",label:"Text",groups:[{groupId:"basicStyles",items:["menuBar:bold","menuBar:italic","menuBar:underline","menuBar:strikethrough","menuBar:superscript","menuBar:subscript","menuBar:code"]},{groupId:"textPartLanguage",items:["menuBar:textPartLanguage"]}]},{menuId:"font",label:"Font",groups:[{groupId:"fontProperties",items:["menuBar:fontSize","menuBar:fontFamily"]},{groupId:"fontColors",items:["menuBar:fontColor","menuBar:fontBackgroundColor"]},{groupId:"highlight",items:["menuBar:highlight"]}]},"menuBar:heading"]},{groupId:"list",items:["menuBar:bulletedList","menuBar:numberedList","menuBar:multiLevelList","menuBar:todoList"]},{groupId:"indent",items:["menuBar:alignment","menuBar:indent","menuBar:outdent"]},{groupId:"caseChange",items:["menuBar:caseChange"]},{groupId:"removeFormat",items:["menuBar:removeFormat"]}]},{menuId:"tools",label:"Tools",groups:[{groupId:"aiTools",items:["menuBar:aiAssistant","menuBar:aiCommands"]},{groupId:"tools",items:["menuBar:trackChanges","menuBar:commentsArchive"]}]},{menuId:"help",label:"Help",groups:[{groupId:"help",items:["menuBar:accessibilityHelp"]}]}];function Gb({normalizedConfig:e,locale:t,componentFactory:o,extraItems:n}){const i=Jl(e);return Kb(e,i,n),function(e,t){const o=t.removeItems,n=[];t.items=t.items.filter((({menuId:e})=>!o.includes(e)||(n.push(e),!1))),Qb(t.items,(e=>{e.groups=e.groups.filter((({groupId:e})=>!o.includes(e)||(n.push(e),!1)));for(const t of e.groups)t.items=t.items.filter((e=>{const t=ok(e);return!o.includes(t)||(n.push(t),!1)}))}));for(const t of o)n.includes(t)||T("menu-bar-item-could-not-be-removed",{menuBarConfig:e,itemName:t})}(e,i),Kb(e,i,i.addItems),function(e,t,o){Qb(t.items,(n=>{for(const i of n.groups)i.items=i.items.filter((i=>{const r="string"==typeof i&&!o.has(i);return r&&!t.isUsingDefaultConfig&&T("menu-bar-item-unavailable",{menuBarConfig:e,parentMenuConfig:Jl(n),componentName:i}),!r}))}))}(e,i,o),Jb(e,i),function(e,t){const o=t.t,n={File:o({string:"File",id:"MENU_BAR_MENU_FILE"}),Edit:o({string:"Edit",id:"MENU_BAR_MENU_EDIT"}),View:o({string:"View",id:"MENU_BAR_MENU_VIEW"}),Insert:o({string:"Insert",id:"MENU_BAR_MENU_INSERT"}),Format:o({string:"Format",id:"MENU_BAR_MENU_FORMAT"}),Tools:o({string:"Tools",id:"MENU_BAR_MENU_TOOLS"}),Help:o({string:"Help",id:"MENU_BAR_MENU_HELP"}),Text:o({string:"Text",id:"MENU_BAR_MENU_TEXT"}),Font:o({string:"Font",id:"MENU_BAR_MENU_FONT"})};Qb(e.items,(e=>{e.label in n&&(e.label=n[e.label])}))}(i,t),i}function Kb(e,t,o){const n=[];if(0!=o.length){for(const e of o){const o=ek(e.position),r=tk(e.position);if("object"==typeof(i=e)&&"menu"in i)if(r){const i=t.items.findIndex((e=>e.menuId===r));if(-1!=i)"before"===o?(t.items.splice(i,0,e.menu),n.push(e)):"after"===o&&(t.items.splice(i+1,0,e.menu),n.push(e));else{Zb(t,e.menu,r,o)&&n.push(e)}}else"start"===o?(t.items.unshift(e.menu),n.push(e)):"end"===o&&(t.items.push(e.menu),n.push(e));else if(Xb(e))Qb(t.items,(t=>{if(t.menuId===r)"start"===o?(t.groups.unshift(e.group),n.push(e)):"end"===o&&(t.groups.push(e.group),n.push(e));else{const i=t.groups.findIndex((e=>e.groupId===r));-1!==i&&("before"===o?(t.groups.splice(i,0,e.group),n.push(e)):"after"===o&&(t.groups.splice(i+1,0,e.group),n.push(e)))}}));else{Zb(t,e.item,r,o)&&n.push(e)}}var i;for(const t of o)n.includes(t)||T("menu-bar-item-could-not-be-added",{menuBarConfig:e,addedItemConfig:t})}}function Zb(e,t,o,n){let i=!1;return Qb(e.items,(e=>{for(const{groupId:r,items:s}of e.groups){if(i)return;if(r===o)"start"===n?(s.unshift(t),i=!0):"end"===n&&(s.push(t),i=!0);else{const e=s.findIndex((e=>ok(e)===o));-1!==e&&("before"===n?(s.splice(e,0,t),i=!0):"after"===n&&(s.splice(e+1,0,t),i=!0))}}})),i}function Jb(e,t){const o=t.isUsingDefaultConfig;let n=!1;t.items=t.items.filter((t=>!!t.groups.length||(Yb(e,t,o),!1))),t.items.length?(Qb(t.items,(t=>{t.groups=t.groups.filter((e=>!!e.items.length||(n=!0,!1)));for(const i of t.groups)i.items=i.items.filter((t=>!(nk(t)&&!t.groups.length)||(Yb(e,t,o),n=!0,!1)))})),n&&Jb(e,t)):Yb(e,e,o)}function Yb(e,t,o){o||T("menu-bar-menu-empty",{menuBarConfig:e,emptyMenuConfig:t})}function Qb(e,t){if(Array.isArray(e))for(const t of e)o(t);function o(e){t(e);for(const t of e.groups)for(const e of t.items)nk(e)&&o(e)}}function Xb(e){return"object"==typeof e&&"group"in e}function ek(e){return e.startsWith("start")?"start":e.startsWith("end")?"end":e.startsWith("after")?"after":"before"}function tk(e){const t=e.match(/^[^:]+:(.+)/);return t?t[1]:null}function ok(e){return"string"==typeof e?e:e.menuId}function nk(e){return"object"==typeof e&&"menuId"in e}class ik extends(X()){constructor(e){super(),this.isReady=!1,this._editableElementsMap=new Map,this._focusableToolbarDefinitions=[],this._extraMenuBarElements=[],this._lastFocusedForeignElement=null;const t=e.editing.view;this.editor=e,this.componentFactory=new kb(e),this.focusTracker=new nr,this.tooltipManager=new vb(e),this.poweredBy=new Sb(e),this.evaluationBadge=new Ib(e),this.ariaLiveAnnouncer=new Ob(e),this.set("viewportOffset",this._readViewportOffsetFromConfig()),this.once("ready",(()=>{this._bindBodyCollectionWithFocusTracker(),this.isReady=!0})),this.listenTo(t.document,"layoutChanged",this.update.bind(this)),this.listenTo(t,"scrollToTheSelection",this._handleScrollToTheSelection.bind(this)),this._initFocusTracking()}get element(){return null}update(){this.fire("update")}destroy(){this.stopListening(),this.focusTracker.destroy(),this.tooltipManager.destroy(this.editor),this.poweredBy.destroy(),this.evaluationBadge.destroy();for(const e of this._editableElementsMap.values())e.ckeditorInstance=null,this.editor.keystrokes.stopListening(e);this._editableElementsMap=new Map,this._focusableToolbarDefinitions=[]}setEditableElement(e,t){this._editableElementsMap.set(e,t),t.ckeditorInstance||(t.ckeditorInstance=this.editor),this.focusTracker.add(t);const o=()=>{this.editor.editing.view.getDomRoot(e)||this.editor.keystrokes.listenTo(t)};this.isReady?o():this.once("ready",o)}removeEditableElement(e){const t=this._editableElementsMap.get(e);t&&(this._editableElementsMap.delete(e),this.editor.keystrokes.stopListening(t),this.focusTracker.remove(t),t.ckeditorInstance=null)}getEditableElement(e="main"){return this._editableElementsMap.get(e)}getEditableElementsNames(){return this._editableElementsMap.keys()}addToolbar(e,t={}){e.isRendered?(this.focusTracker.add(e),this.editor.keystrokes.listenTo(e.element)):e.once("render",(()=>{this.focusTracker.add(e),this.editor.keystrokes.listenTo(e.element)})),this._focusableToolbarDefinitions.push({toolbarView:e,options:t})}extendMenuBar(e){this._extraMenuBarElements.push(e)}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}_initMenuBar(e){const t=e.element;this.focusTracker.add(t),this.editor.keystrokes.listenTo(t);const o=function(e){let t;return t="items"in e&&e.items?{items:e.items,removeItems:[],addItems:[],isVisible:!0,isUsingDefaultConfig:!1,...e}:{items:Jl(Wb),addItems:[],removeItems:[],isVisible:!0,isUsingDefaultConfig:!0,...e},t}(this.editor.config.get("menuBar")||{});e.fillFromConfig(o,this.componentFactory,this._extraMenuBarElements),this.editor.keystrokes.set("Esc",((e,o)=>{t.contains(this.editor.ui.focusTracker.focusedElement)&&(this._lastFocusedForeignElement?(this._lastFocusedForeignElement.focus(),this._lastFocusedForeignElement=null):this.editor.editing.view.focus(),o())})),this.editor.keystrokes.set("Alt+F9",((o,n)=>{t.contains(this.editor.ui.focusTracker.focusedElement)||(this._saveLastFocusedForeignElement(),e.isFocusBorderEnabled=!0,e.focus(),n())}))}_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}}_initFocusTracking(){const e=this.editor;let t;e.keystrokes.set("Alt+F10",((e,o)=>{this._saveLastFocusedForeignElement();const n=this._getCurrentFocusedToolbarDefinition();n&&t||(t=this._getFocusableCandidateToolbarDefinitions());for(let e=0;e{const n=this._getCurrentFocusedToolbarDefinition();n&&(this._lastFocusedForeignElement?(this._lastFocusedForeignElement.focus(),this._lastFocusedForeignElement=null):e.editing.view.focus(),n.options.afterBlur&&n.options.afterBlur(),o())}))}_saveLastFocusedForeignElement(){const e=this.focusTracker.focusedElement;Array.from(this._editableElementsMap.values()).includes(e)&&!Array.from(this.editor.editing.view.domRoots.values()).includes(e)&&(this._lastFocusedForeignElement=e)}_getFocusableCandidateToolbarDefinitions(){const e=[];for(const t of this._focusableToolbarDefinitions){const{toolbarView:o,options:n}=t;(ri(o.element)||n.beforeFocus)&&e.push(t)}return e.sort(((e,t)=>rk(e)-rk(t))),e}_getCurrentFocusedToolbarDefinition(){for(const e of this._focusableToolbarDefinitions)if(e.toolbarView.element&&e.toolbarView.element.contains(this.focusTracker.focusedElement))return e;return null}_focusFocusableCandidateToolbar(e){const{toolbarView:t,options:{beforeFocus:o}}=e;return o&&o(),!!ri(t.element)&&(t.focus(),!0)}_handleScrollToTheSelection(e,t){const o={top:0,bottom:0,left:0,right:0,...this.viewportOffset};t.viewportOffset.top+=o.top,t.viewportOffset.bottom+=o.bottom,t.viewportOffset.left+=o.left,t.viewportOffset.right+=o.right}_bindBodyCollectionWithFocusTracker(){const e=this.view.body;for(const t of e)this.focusTracker.add(t.element);e.on("add",((e,t)=>{this.focusTracker.add(t.element)})),e.on("remove",((e,t)=>{this.focusTracker.remove(t.element)}))}}function rk(e){const{toolbarView:t,options:o}=e;let n=10;return ri(t.element)&&n--,o.isContextual&&n--,n}var sk=i(178),ak={attributes:{"data-cke":!0}};ak.setAttributes=Xr(),ak.insert=Yr().bind(null,"head"),ak.domAPI=Zr(),ak.insertStyleElement=ts();Gr()(sk.A,ak);sk.A&&sk.A.locals&&sk.A.locals;class lk extends zp{constructor(e){super(e),this.body=new zm(e)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}class ck extends zp{constructor(e,t,o){super(e),this.name=null,this.setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:e.contentLanguage,dir:e.contentLanguageDirection}}),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()}get hasExternalElement(){return this._hasExternalElement}_updateIsFocusedClasses(){const e=this._editingView;function t(t){e.change((o=>{const n=e.document.getRoot(t.name);o.addClass(t.isFocused?"ck-focused":"ck-blurred",n),o.removeClass(t.isFocused?"ck-blurred":"ck-focused",n)}))}e.isRenderingInProgress?function o(n){e.once("change:isRenderingInProgress",((e,i,r)=>{r?o(n):t(n)}))}(this):t(this)}}class dk extends ck{constructor(e,t,o,n={}){super(e,t,o),this._options=n,this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}})}render(){super.render();const e=this._editingView;e.change((t=>{const o=e.document.getRoot(this.name);t.setAttribute("aria-label",this.getEditableAriaLabel(),o)}))}getEditableAriaLabel(){const e=this.locale.t,t=this._options.label,o=this._editableElement,n=this.name;if("string"==typeof t)return t;if("object"==typeof t)return t[n];if("function"==typeof t)return t(this);if(o){const e=o.getAttribute("aria-label");if(e)return e}return e("Rich Text Editor. Editing area: %0",n)}}class uk extends Cr{static get pluginName(){return"Notification"}static get isOfficialPlugin(){return!0}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=e.namespace?`show:${e.type}:${e.namespace}`:`show:${e.type}`;this.fire(t,{message:e.message,type:e.type,title:e.title||""})}}class hk extends(X()){constructor(e,t){super(),t&&tl(this,t),e&&this.set(e)}}var pk=i(9938),mk={attributes:{"data-cke":!0}};mk.setAttributes=Xr(),mk.insert=Yr().bind(null,"head"),mk.domAPI=Zr(),mk.insertStyleElement=ts();Gr()(pk.A,mk);pk.A&&pk.A.locals&&pk.A.locals;var gk=i(3579),fk={attributes:{"data-cke":!0}};fk.setAttributes=Xr(),fk.insert=Yr().bind(null,"head"),fk.domAPI=Zr(),fk.insertStyleElement=ts();Gr()(gk.A,fk);gk.A&&gk.A.locals&&gk.A.locals;const bk=ti("px");class kk extends br{static get pluginName(){return"ContextualBalloon"}static get isOfficialPlugin(){return!0}constructor(e){super(e),this._viewToStack=new Map,this._idToStack=new Map,this._view=null,this._rotatorView=null,this._fakePanelsView=null,this.positionLimiter=()=>{const e=this.editor.editing.view,t=e.document.selection.editableElement;return t?e.domConverter.mapViewToDom(t.root):null},this.decorate("getPositionOptions"),this.set("visibleView",null),this.set("_numberOfStacks",0),this.set("_singleViewMode",!1)}destroy(){super.destroy(),this._view&&this._view.destroy(),this._rotatorView&&this._rotatorView.destroy(),this._fakePanelsView&&this._fakePanelsView.destroy()}get view(){return this._view||this._createPanelView(),this._view}hasView(e){return Array.from(this._viewToStack.keys()).includes(e)}add(e){if(this._view||this._createPanelView(),this.hasView(e.view))throw new S("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 S("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.getPositionOptions()),this._fakePanelsView.updatePosition()}getPositionOptions(){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}showStack(e){this.visibleStack=e;const t=this._idToStack.get(e);if(!t)throw new S("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==t&&this._showView(Array.from(t.values()).pop())}_createPanelView(){this._view=new Wg(this.editor.locale),this.editor.ui.view.body.add(this._view),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}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 wk(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 n=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return t("%0 of %1",[n,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 _k(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:n=!1}){this.view.class=t,this.view.withArrow=o,this._rotatorView.showView(e),this.visibleView=e,this.view.pin(this.getPositionOptions()),this._fakePanelsView.updatePosition(),n&&(this._singleViewMode=!0)}}class wk extends zp{constructor(e){super(e);const t=e.t,o=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new nr,this.buttonPrevView=this._createButtonView(t("Previous"),up.previousArrow),this.buttonNextView=this._createButtonView(t("Next"),up.nextArrow),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)}destroy(){super.destroy(),this.focusTracker.destroy()}showView(e){this.hideView(),this.content.add(e)}hideView(){this.content.clear()}_createButtonView(e,t){const o=new Kp(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o}}class _k extends zp{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",bk),left:o.to("left",bk),width:o.to("width",bk),height:o.to("height",bk)}},children:this.content}),this.on("change:numberOfPanels",((e,t,o,n)=>{o>n?this._addPanels(o-n):this._removePanels(n-o),this.updatePosition()}))}_addPanels(e){for(;e--;){const e=new zp;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:n}=new Gn(this._balloonPanelView.element);Object.assign(this,{top:e,left:t,width:o,height:n})}}}var yk=i(7289),Ak={attributes:{"data-cke":!0}};Ak.setAttributes=Xr(),Ak.insert=Yr().bind(null,"head"),Ak.domAPI=Zr(),Ak.insertStyleElement=ts();Gr()(yk.A,Ak);yk.A&&yk.A.locals&&yk.A.locals;class Ck extends dg{constructor(e,t){const o=e.t,n=Object.assign({},{showResetButton:!0,showIcon:!0,creator:Ef},t);super(e,n.creator),this.label=t.label,this._viewConfig=n,this._viewConfig.showIcon&&(this.iconView=new $p,this.iconView.content=up.loupe,this.fieldWrapperChildren.add(this.iconView,0),this.extendTemplate({attributes:{class:"ck-search__query_with-icon"}})),this._viewConfig.showResetButton&&(this.resetButtonView=new Kp(e),this.resetButtonView.set({label:o("Clear"),icon:up.cancel,class:"ck-search__reset",isVisible:!1,tooltip:!0}),this.resetButtonView.on("execute",(()=>{this.reset(),this.focus(),this.fire("reset")})),this.resetButtonView.bind("isVisible").to(this.fieldView,"isEmpty",(e=>!e)),this.fieldWrapperChildren.add(this.resetButtonView),this.extendTemplate({attributes:{class:"ck-search__query_with-reset"}}))}reset(){this.fieldView.reset(),this._viewConfig.showResetButton&&(this.resetButtonView.isVisible=!1)}}class vk extends zp{constructor(){super();const e=this.bindTemplate;this.set({isVisible:!1,primaryText:"",secondaryText:""}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-search__info",e.if("isVisible","ck-hidden",(e=>!e))],tabindex:-1},children:[{tag:"span",children:[{text:[e.to("primaryText")]}]},{tag:"span",children:[{text:[e.to("secondaryText")]}]}]})}focus(){this.element.focus()}}class xk extends zp{constructor(e){super(e),this.children=this.createCollection(),this.focusTracker=new nr,this.setTemplate({tag:"div",attributes:{class:["ck","ck-search__results"],tabindex:-1},children:this.children}),this._focusCycler=new Xp({focusables:this.children,focusTracker:this.focusTracker})}render(){super.render();for(const e of this.children)this.focusTracker.add(e.element)}focus(){this._focusCycler.focusFirst()}focusFirst(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}var Ek=/[\\^$.*+?()[\]{}|]/g,Dk=RegExp(Ek.source);const Bk=function(e){return(e=Vr(e))&&Dk.test(e)?e.replace(Ek,"\\$&"):e};var Sk=i(5540),Tk={attributes:{"data-cke":!0}};Tk.setAttributes=Xr(),Tk.insert=Yr().bind(null,"head"),Tk.domAPI=Zr(),Tk.insertStyleElement=ts();Gr()(Sk.A,Tk);Sk.A&&Sk.A.locals&&Sk.A.locals;class Ik extends zp{constructor(e,t){super(e),this._config=t,this.filteredView=t.filteredView,this.queryView=this._createSearchTextQueryView(),this.focusTracker=new nr,this.keystrokes=new ar,this.resultsView=new xk(e),this.children=this.createCollection(),this.focusableChildren=this.createCollection([this.queryView,this.resultsView]),this.set("isEnabled",!0),this.set("resultsCount",0),this.set("totalItemsCount",0),t.infoView&&t.infoView.instance?this.infoView=t.infoView.instance:(this.infoView=new vk,this._enableDefaultInfoViewBehavior(),this.on("render",(()=>{this.search("")}))),this.resultsView.children.addMany([this.infoView,this.filteredView]),this.focusCycler=new Xp({focusables:this.focusableChildren,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.on("search",((e,{resultsCount:t,totalItemsCount:o})=>{this.resultsCount=t,this.totalItemsCount=o})),this.setTemplate({tag:"div",attributes:{class:["ck","ck-search",t.class||null],tabindex:"-1"},children:this.children})}render(){super.render(),this.children.addMany([this.queryView,this.resultsView]);const e=e=>e.stopPropagation();for(const e of this.focusableChildren)this.focusTracker.add(e.element);this.keystrokes.listenTo(this.element),this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e)}focus(){this.queryView.focus()}reset(){this.queryView.reset(),this.search(""),this.filteredView.element.scrollTo(0,0)}search(e){const t=e?new RegExp(Bk(e),"ig"):null,o=this.filteredView.filter(t);this.fire("search",{query:e,...o})}_createSearchTextQueryView(){const e=new Ck(this.locale,this._config.queryView);return this.listenTo(e.fieldView,"input",(()=>{this.search(e.fieldView.element.value)})),e.on("reset",(()=>this.reset())),e.bind("isEnabled").to(this),e}_enableDefaultInfoViewBehavior(){const e=this.locale.t,t=this.infoView;function o(e,{query:t,resultsCount:o,totalItemsCount:n}){return"function"==typeof e?e(t,o,n):e}this.on("search",((n,i)=>{if(i.resultsCount)t.set({isVisible:!1});else{const n=this._config.infoView&&this._config.infoView.text;let r,s;i.totalItemsCount?n&&n.notFound?(r=n.notFound.primary,s=n.notFound.secondary):(r=e("No results found"),s=""):n&&n.noSearchableItems?(r=n.noSearchableItems.primary,s=n.noSearchableItems.secondary):(r=e("No searchable items"),s=""),t.set({primaryText:o(r,i),secondaryText:o(s,i),isVisible:!0})}}))}}var Pk=i(2688),Fk={attributes:{"data-cke":!0}};Fk.setAttributes=Xr(),Fk.insert=Yr().bind(null,"head"),Fk.domAPI=Zr(),Fk.insertStyleElement=ts();Gr()(Pk.A,Fk);Pk.A&&Pk.A.locals&&Pk.A.locals;class Rk extends Ik{constructor(e,t){super(e,t),this._config=t;const o=ti("px");this.extendTemplate({attributes:{class:["ck-autocomplete"]}});const n=this.resultsView.bindTemplate;this.resultsView.set("isVisible",!1),this.resultsView.set("_position","s"),this.resultsView.set("_width",0),this.resultsView.extendTemplate({attributes:{class:[n.if("isVisible","ck-hidden",(e=>!e)),n.to("_position",(e=>`ck-search__results_${e}`))],style:{width:n.to("_width",o)}}}),this.focusTracker.on("change:isFocused",((e,o,n)=>{this._updateResultsVisibility(),n?this.resultsView.element.scrollTop=0:t.resetOnBlur&&this.queryView.reset()})),this.on("search",(()=>{this._updateResultsVisibility(),this._updateResultsViewWidthAndPosition()})),this.keystrokes.set("esc",((e,t)=>{this.resultsView.isVisible&&(this.queryView.focus(),this.resultsView.isVisible=!1,t())})),this.listenTo(s.document,"scroll",(()=>{this._updateResultsViewWidthAndPosition()})),this.on("change:isEnabled",(()=>{this._updateResultsVisibility()})),this.filteredView.on("execute",((e,{value:t})=>{this.focus(),this.reset(),this.queryView.fieldView.value=this.queryView.fieldView.element.value=t,this.resultsView.isVisible=!1})),this.resultsView.on("change:isVisible",(()=>{this._updateResultsViewWidthAndPosition()}))}_updateResultsViewWidthAndPosition(){if(!this.resultsView.isVisible)return;this.resultsView._width=new Gn(this.queryView.fieldView.element).width;const e=Rk._getOptimalPosition({element:this.resultsView.element,target:this.queryView.element,fitInViewport:!0,positions:Rk.defaultResultsPositions});this.resultsView._position=e?e.name:"s"}_updateResultsVisibility(){const e=void 0===this._config.queryMinChars?0:this._config.queryMinChars,t=this.queryView.fieldView.element.value.length;this.resultsView.isVisible=this.focusTracker.isFocused&&this.isEnabled&&t>=e}}Rk.defaultResultsPositions=[e=>({top:e.bottom,left:e.left,name:"s"}),(e,t)=>({top:e.top-t.height,left:e.left,name:"n"})],Rk._getOptimalPosition=si;Mk={"&":"&","<":"<",">":">",'"':""","'":"'"};var Mk;var zk=/[&<>"']/g;RegExp(zk.source);var Ok=i(1998),Nk={attributes:{"data-cke":!0}};Nk.setAttributes=Xr(),Nk.insert=Yr().bind(null,"head"),Nk.domAPI=Zr(),Nk.insertStyleElement=ts();Gr()(Ok.A,Nk);Ok.A&&Ok.A.locals&&Ok.A.locals;var Vk=i(5706),Lk={attributes:{"data-cke":!0}};Lk.setAttributes=Xr(),Lk.insert=Yr().bind(null,"head"),Lk.domAPI=Zr(),Lk.insertStyleElement=ts();Gr()(Vk.A,Lk);Vk.A&&Vk.A.locals&&Vk.A.locals;var Hk=i(9939),jk={attributes:{"data-cke":!0}};jk.setAttributes=Xr(),jk.insert=Yr().bind(null,"head"),jk.domAPI=Zr(),jk.insertStyleElement=ts();Gr()(Hk.A,jk);Hk.A&&Hk.A.locals&&Hk.A.locals;var qk=i(5667),$k={attributes:{"data-cke":!0}};$k.setAttributes=Xr(),$k.insert=Yr().bind(null,"head"),$k.domAPI=Zr(),$k.insertStyleElement=ts();Gr()(qk.A,$k);qk.A&&qk.A.locals&&qk.A.locals;class Uk extends Am{constructor(e){super(e);const t=this.bindTemplate;this.set({withText:!0,role:"menuitem"}),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{class:["ck-menu-bar__menu__button"],"aria-haspopup":!0,"aria-expanded":this.bindTemplate.to("isOn",(e=>String(e))),"data-cke-tooltip-disabled":t.to("isOn")},on:{mouseenter:t.to("mouseenter")}})}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new $p;return e.content=$m,e.extendTemplate({attributes:{class:"ck-menu-bar__menu__button__arrow"}}),e}}var Wk=i(4873),Gk={attributes:{"data-cke":!0}};Gk.setAttributes=Xr(),Gk.insert=Yr().bind(null,"head"),Gk.domAPI=Zr(),Gk.insertStyleElement=ts();Gr()(Wk.A,Gk);Wk.A&&Wk.A.locals&&Wk.A.locals;class Kk extends zp{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-menu-bar__menu__panel",t.to("position",(e=>`ck-menu-bar__menu__panel_position_${e}`)),t.if("isVisible","ck-hidden",(e=>!e))],tabindex:"-1"},children:this.children,on:{selectstart:t.to((e=>{"input"!==e.target.tagName.toLocaleLowerCase()&&e.preventDefault()}))}})}focus(e=1){this.children.length&&(1===e?this.children.first.focus():this.children.last.focus())}}var Zk=i(55),Jk={attributes:{"data-cke":!0}};Jk.setAttributes=Xr(),Jk.insert=Yr().bind(null,"head"),Jk.domAPI=Zr(),Jk.insertStyleElement=ts();Gr()(Zk.A,Jk);Zk.A&&Zk.A.locals&&Zk.A.locals;class Yk extends zp{constructor(e){super(e);const t=this.bindTemplate;this.buttonView=new Uk(e),this.buttonView.delegate("mouseenter").to(this),this.buttonView.bind("isOn","isEnabled").to(this,"isOpen","isEnabled"),this.panelView=new Kk(e),this.panelView.bind("isVisible").to(this,"isOpen"),this.keystrokes=new ar,this.focusTracker=new nr,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("panelPosition","w"),this.set("class",void 0),this.set("parentMenuView",null),this.setTemplate({tag:"div",attributes:{class:["ck","ck-menu-bar__menu",t.to("class"),t.if("isEnabled","ck-disabled",(e=>!e)),t.if("parentMenuView","ck-menu-bar__menu_top-level",(e=>!e))]},children:[this.buttonView,this.panelView]})}render(){super.render(),this.focusTracker.add(this.buttonView.element),this.focusTracker.add(this.panelView.element),this.keystrokes.listenTo(this.element),$b.closeOnEscKey(this),this._repositionPanelOnOpen()}_attachBehaviors(){this.parentMenuView?($b.openOnButtonClick(this),$b.openOnArrowRightKey(this),$b.closeOnArrowLeftKey(this),$b.openAndFocusOnEnterKeyPress(this),$b.closeOnParentClose(this)):(this._propagateArrowKeystrokeEvents(),$b.openAndFocusPanelOnArrowDownKey(this),$b.toggleOnButtonClick(this))}_propagateArrowKeystrokeEvents(){this.keystrokes.set("arrowright",((e,t)=>{this.fire("arrowright"),t()})),this.keystrokes.set("arrowleft",((e,t)=>{this.fire("arrowleft"),t()}))}_repositionPanelOnOpen(){this.on("change:isOpen",((e,t,o)=>{if(!o)return;const n=Yk._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions});this.panelView.position=n?n.name:this._defaultMenuPositionName}))}focus(){this.buttonView.focus()}get _panelPositions(){const{southEast:e,southWest:t,northEast:o,northWest:n,westSouth:i,eastSouth:r,westNorth:s,eastNorth:a}=Ub;return"ltr"===this.locale.uiLanguageDirection?this.parentMenuView?[r,a,i,s]:[e,t,o,n]:this.parentMenuView?[i,s,r,a]:[t,e,n,o]}get _defaultMenuPositionName(){return"ltr"===this.locale.uiLanguageDirection?this.parentMenuView?"es":"se":this.parentMenuView?"ws":"sw"}}Yk._getOptimalPosition=si;const Qk=Yk;class Xk extends Mg{constructor(e){super(e),this.role="menu",this.items.on("change",this._setItemsCheckSpace.bind(this))}_setItemsCheckSpace(){const e=Array.from(this.items).some((e=>{const t=ew(e);return t&&t.isToggleable}));this.items.forEach((t=>{const o=ew(t);o&&(o.hasCheckSpace=e)}))}}function ew(e){return e instanceof Tg?e.children.map((e=>function(e){return"object"==typeof e&&"buttonView"in e&&e.buttonView instanceof Kp}(e)?e.buttonView:e)).find((e=>e instanceof Am)):null}class tw extends Hm{constructor(e){super(e),this.set({withText:!0,withKeystroke:!0,tooltip:!1,role:"menuitem"}),this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item__button"]}})}}var ow=i(4782),nw={attributes:{"data-cke":!0}};nw.setAttributes=Xr(),nw.insert=Yr().bind(null,"head"),nw.domAPI=Zr(),nw.insertStyleElement=ts();Gr()(ow.A,nw);ow.A&&ow.A.locals&&ow.A.locals;const iw=["mouseenter","arrowleft","arrowright","change:isOpen"];class rw extends zp{constructor(e){super(e),this.menus=[];const t=e.t,o=this.bindTemplate;this.set({isOpen:!1,isFocusBorderEnabled:!1}),this._setupIsOpenUpdater(),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-menu-bar",o.if("isFocusBorderEnabled","ck-menu-bar_focus-border-enabled")],"aria-label":t("Editor menu bar"),role:"menubar"},children:this.children})}fillFromConfig(e,t,o=[]){const n=Gb({normalizedConfig:e,locale:this.locale,componentFactory:t,extraItems:o}).items.map((e=>this._createMenu({componentFactory:t,menuDefinition:e})));this.children.addMany(n)}render(){super.render(),qb.toggleMenusAndFocusItemsOnHover(this),qb.closeMenusWhenTheBarCloses(this),qb.closeMenuWhenAnotherOnTheSameLevelOpens(this),qb.focusCycleMenusOnArrows(this),qb.closeOnClickOutside(this),qb.enableFocusHighlightOnInteraction(this)}focus(){this.children.first&&this.children.first.focus()}close(){for(const e of this.children)e.isOpen=!1}registerMenu(e,t=null){t?(e.delegate(...iw).to(t),e.parentMenuView=t):e.delegate(...iw).to(this,(e=>"menu:"+e)),e._attachBehaviors(),this.menus.push(e)}_createMenu({componentFactory:e,menuDefinition:t,parentMenuView:o}){const n=this.locale,i=new Qk(n);return this.registerMenu(i,o),i.buttonView.set({label:t.label}),i.once("change:isOpen",(()=>{const o=new Xk(n);o.ariaLabel=t.label,i.panelView.children.add(o),o.items.addMany(this._createMenuItems({menuDefinition:t,parentMenuView:i,componentFactory:e}))})),i}_createMenuItems({menuDefinition:e,parentMenuView:t,componentFactory:o}){const n=this.locale,i=[];for(const r of e.groups){for(const e of r.items){const r=new jb(n,t);if(W(e))r.children.add(this._createMenu({componentFactory:o,menuDefinition:e,parentMenuView:t}));else{const n=this._createMenuItemContentFromFactory({componentName:e,componentFactory:o,parentMenuView:t});if(!n)continue;r.children.add(n)}i.push(r)}r!==e.groups[e.groups.length-1]&&i.push(new Ig(n))}return i}_createMenuItemContentFromFactory({componentName:e,parentMenuView:t,componentFactory:o}){const n=o.create(e);return n instanceof Qk||n instanceof Em||n instanceof tw?(this._registerMenuTree(n,t),n.on("execute",(()=>{this.close()})),n):(T("menu-bar-component-unsupported",{componentName:e,componentView:n}),null)}_registerMenuTree(e,t){if(!(e instanceof Qk))return void e.delegate("mouseenter").to(t);this.registerMenu(e,t);const o=e.panelView.children.filter((e=>e instanceof Xk))[0];if(!o)return void e.delegate("mouseenter").to(t);const n=o.items.filter((e=>e instanceof Tg));for(const t of n)this._registerMenuTree(t.children.get(0),e)}_setupIsOpenUpdater(){let e;this.on("menu:change:isOpen",((t,o,n)=>{clearTimeout(e),n?this.isOpen=!0:e=setTimeout((()=>{this.isOpen=Array.from(this.children).some((e=>e.isOpen))}),0)}))}}class sw extends ik{constructor(e,t){super(e),this.view=t}init(){const e=this.editor,t=this.view,o=e.editing.view,n=t.editable,i=o.document.getRoot();n.name=i.rootName,t.render();const r=n.element;this.setEditableElement(n.name,r),t.editable.bind("isFocused").to(this.focusTracker),o.attachDomRoot(r),this._initPlaceholder(),this._initToolbar(),this._initMenuBar(this.view.menuBarView),this.fire("ready")}destroy(){super.destroy();const e=this.view,t=this.editor.editing.view;t.getDomRoot(e.editable.name)&&t.detachDomRoot(e.editable.name),e.destroy()}_initToolbar(){const e=this.editor,t=this.view;t.toolbar.fillFromConfig(e.config.get("toolbar"),this.componentFactory),this.addToolbar(t.toolbar)}_initPlaceholder(){const e=this.editor,t=e.editing.view,o=t.document.getRoot(),n=e.config.get("placeholder");if(n){const e="string"==typeof n?n:n[o.rootName];e&&(o.placeholder=e)}ss({view:t,element:o,isDirectHost:!1,keepOnFocus:!0})}}class aw extends lk{constructor(e,t,o={}){super(e),this.toolbar=new af(e,{shouldGroupWhenFull:o.shouldToolbarGroupWhenFull}),this.menuBarView=new rw(e),this.editable=new dk(e,t,o.editableElement,{label:o.label}),this.toolbar.extendTemplate({attributes:{class:["ck-reset_all","ck-rounded-corners"],dir:e.uiLanguageDirection}}),this.menuBarView.extendTemplate({attributes:{class:["ck-reset_all","ck-rounded-corners"],dir:e.uiLanguageDirection}})}render(){super.render(),this.registerChild([this.menuBarView,this.toolbar,this.editable])}}class lw extends(cp(ap)){static get editorName(){return"DecoupledEditor"}constructor(e,t={}){if(!cw(e)&&void 0!==t.initialData)throw new S("editor-create-initial-data",null);super(t),void 0===this.config.get("initialData")&&this.config.set("initialData",function(e){return cw(e)?(t=e,t instanceof HTMLTextAreaElement?t.value:t.innerHTML):e;var t}(e)),cw(e)&&(this.sourceElement=e,function(e,t){if(t.ckeditorInstance)throw new S("editor-source-element-already-used",e);t.ckeditorInstance=e,e.once("destroy",(()=>{delete t.ckeditorInstance}))}(this,e)),this.model.document.createRoot();const o=!this.config.get("toolbar.shouldNotGroupWhenFull"),n=new aw(this.locale,this.editing.view,{editableElement:this.sourceElement,shouldToolbarGroupWhenFull:o,label:this.config.get("label")});this.ui=new sw(this,n)}destroy(){const e=this.getData();return this.ui.destroy(),super.destroy().then((()=>{this.sourceElement&&this.updateSourceElement(e)}))}static create(e,t={}){return new Promise((o=>{if(cw(e)&&"TEXTAREA"===e.tagName)throw new S("editor-wrong-element",null);const n=new this(e,t);o(n.initPlugins().then((()=>n.ui.init())).then((()=>n.data.init(n.config.get("initialData")))).then((()=>n.fire("ready"))).then((()=>n)))}))}}function cw(e){return Tn(e)}class dw extends(V()){constructor(){super(...arguments),this._stack=[]}add(e,t){const o=this._stack,n=o[0];this._insertDescriptor(e);const i=o[0];n===i||uw(n,i)||this.fire("change:top",{oldDescriptor:n,newDescriptor:i,writer:t})}remove(e,t){const o=this._stack,n=o[0];this._removeDescriptor(e);const i=o[0];n===i||uw(n,i)||this.fire("change:top",{oldDescriptor:n,newDescriptor:i,writer:t})}_insertDescriptor(e){const t=this._stack,o=t.findIndex((t=>t.id===e.id));if(uw(e,t[o]))return;o>-1&&t.splice(o,1);let n=0;for(;t[n]&&hw(t[n],e);)n++;t.splice(n,0,e)}_removeDescriptor(e){const t=this._stack,o=t.findIndex((t=>t.id===e));o>-1&&t.splice(o,1)}}function uw(e,t){return e&&t&&e.priority==t.priority&&pw(e.classes)==pw(t.classes)}function hw(e,t){return e.priority>t.priority||!(e.prioritypw(t.classes)}function pw(e){return Array.isArray(e)?e.sort().join(","):e}const mw="widget-type-around";function gw(e,t,o){return!!e&&ww(e)&&!o.isInline(t)}function fw(e){return e.getAttribute(mw)}const bw='',kw="ck-widget_selected";function ww(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function _w(e,t,o={}){if(!e.is("containerElement"))throw new S("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass("ck-widget",e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=Ew,t.setCustomProperty("widgetLabel",[],e),o.label&&function(e,t){const o=e.getCustomProperty("widgetLabel");o.push(t)}(e,o.label),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 $p;return o.set("content",bw),o.render(),t.appendChild(o.element),t}));t.insert(t.createPositionAt(e,0),o),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),Cw(e,t),e}function yw(e,t,o){if(t.classes&&o.addClass(Si(t.classes),e),t.attributes)for(const n in t.attributes)o.setAttribute(n,t.attributes[n],e)}function Aw(e,t,o){if(t.classes&&o.removeClass(Si(t.classes),e),t.attributes)for(const n in t.attributes)o.removeAttribute(n,e)}function Cw(e,t,o=yw,n=Aw){const i=new dw;i.on("change:top",((t,i)=>{i.oldDescriptor&&n(e,i.oldDescriptor,i.writer),i.newDescriptor&&o(e,i.newDescriptor,i.writer)}));t.setCustomProperty("addHighlight",((e,t,o)=>i.add(t,o)),e),t.setCustomProperty("removeHighlight",((e,t,o)=>i.remove(t,o)),e)}function vw(e,t,o={}){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("role","textbox",e),t.setAttribute("tabindex","-1",e),o.label&&t.setAttribute("aria-label",o.label,e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",((o,n,i)=>{t.setAttribute("contenteditable",i?"false":"true",e)})),e.on("change:isFocused",((o,n,i)=>{i?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)})),Cw(e,t),e}function xw(e,t){const o=e.getSelectedElement();if(o){const n=fw(e);if(n)return t.createRange(t.createPositionAt(o,n))}return t.schema.findOptimalInsertionRange(e)}function Ew(){return null}function Dw(e){const t=e=>{const{width:t,paddingLeft:o,paddingRight:n}=e.ownerDocument.defaultView.getComputedStyle(e);return parseFloat(t)-(parseFloat(o)||0)-(parseFloat(n)||0)},o=e.parentElement;if(!o)return 0;let n=t(o);let i=0,r=o;for(;isNaN(n);){if(r=r.parentElement,++i>5)return 0;n=t(r)}return n}class Bw extends br{static get pluginName(){return"OPMacroToc"}static get buttonName(){return"insertToc"}init(){const e=this.editor,t=e.model,o=e.conversion;t.schema.register("op-macro-toc",{allowWhere:"$block",isBlock:!0,isLimit:!0}),o.for("upcast").elementToElement({view:{name:"macro",classes:"toc"},model:"op-macro-toc"}),o.for("editingDowncast").elementToElement({model:"op-macro-toc",view:(e,{writer:t})=>_w(this.createTocViewElement(t),t,{label:this.label})}),o.for("dataDowncast").elementToElement({model:"op-macro-toc",view:(e,{writer:t})=>this.createTocDataElement(t)}),e.ui.componentFactory.add(Bw.buttonName,(t=>{const o=new Kp(t);return o.set({label:this.label,withText:!0}),o.on("execute",(()=>{e.model.change((t=>{const o=t.createElement("op-macro-toc",{});e.model.insertContent(o,e.model.document.selection)}))})),o}))}get label(){return window.I18n.t("js.editor.macro.toc")}createTocViewElement(e){const t=e.createText(this.label),o=e.createContainerElement("div");return e.insert(e.createPositionAt(o,0),t),o}createTocDataElement(e){return e.createContainerElement("macro",{class:"toc"})}}const Sw=Symbol("isOPEmbeddedTable");function Tw(e){const t=e.getSelectedElement();return!(!t||!function(e){return!!e.getCustomProperty(Sw)&&ww(e)}(t))}function Iw(e){return _.get(e.config,"_config.openProject.context.resource")}function Pw(e){return _.get(e.config,"_config.openProject.pluginContext")}function Fw(e,t){return Pw(e).services[t]}function Rw(e){return Fw(e,"pathHelperService")}function Mw(e){return Fw(e,"i18n")}class zw extends br{static get pluginName(){return"EmbeddedTableEditing"}static get buttonName(){return"insertEmbeddedTable"}init(){const e=this.editor,t=e.model,o=e.conversion,n=Pw(e);this.text={button:window.I18n.t("js.editor.macro.embedded_table.button"),macro_text:window.I18n.t("js.editor.macro.embedded_table.text")},t.schema.register("op-macro-embedded-table",{allowWhere:"$block",allowAttributes:["opEmbeddedTableQuery"],isBlock:!0,isObject:!0}),o.for("upcast").elementToElement({view:{name:"macro",classes:"embedded-table"},model:(e,{writer:t})=>{const o=e.getAttribute("data-query-props");return t.createElement("op-macro-embedded-table",{opEmbeddedTableQuery:o?JSON.parse(o):{}})}}),o.for("editingDowncast").elementToElement({model:"op-macro-embedded-table",view:(e,{writer:t})=>{return o=this.createEmbeddedTableView(t),n=t,this.label,n.setCustomProperty(Sw,!0,o),_w(o,n,{label:"your label here"});var o,n}}),o.for("dataDowncast").elementToElement({model:"op-macro-embedded-table",view:(e,{writer:t})=>this.createEmbeddedTableDataElement(e,t)}),e.ui.componentFactory.add(zw.buttonName,(t=>{const o=new Kp(t);return o.set({label:this.text.button,withText:!0}),o.on("execute",(()=>n.runInZone((()=>{n.services.externalQueryConfiguration.show({currentQuery:{},callback:t=>e.model.change((o=>{const n=o.createElement("op-macro-embedded-table",{opEmbeddedTableQuery:t});e.model.insertContent(n,e.model.document.selection)}))})})))),o}))}createEmbeddedTableView(e){const t=e.createText(this.text.macro_text),o=e.createContainerElement("div");return e.insert(e.createPositionAt(o,0),t),o}createEmbeddedTableDataElement(e,t){const o=e.getAttribute("opEmbeddedTableQuery")||{};return t.createContainerElement("macro",{class:"embedded-table","data-query-props":JSON.stringify(o)})}}class Ow{constructor(e,t=20){this._batch=null,this.model=e,this._size=0,this.limit=t,this._isLocked=!1,this._changeCallback=(e,t)=>{t.isLocal&&t.isUndoable&&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({isTyping:!0})),this._batch}get size(){return this._size}input(e){this._size+=e,this._size>=this.limit&&this._reset(!0)}get isLocked(){return this._isLocked}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=!1){this.isLocked&&!e||(this._batch=null,this._size=0)}}class Nw extends wr{constructor(e,t){super(e),this._buffer=new Ow(e.model,t),this._isEnabledBasedOnSelection=!1}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,o=t.document,n=e.text||"",i=n.length;let r=o.selection;if(e.selection?r=e.selection:e.range&&(r=t.createSelection(e.range)),!t.canEditAt(r))return;const s=e.resultRange;t.enqueueChange(this._buffer.batch,(e=>{this._buffer.lock();const a=Array.from(o.selection.getAttributes());t.deleteContent(r),n&&t.insertContent(e.createText(n,a),r),s?e.setSelection(s):r.is("documentSelection")||e.setSelection(r),this._buffer.unlock(),this._buffer.input(i)}))}}const Vw=["insertText","insertReplacementText"],Lw=[...Vw,"insertCompositionText"];class Hw extends Xa{constructor(e){super(e),this.focusObserver=e.getObserver(jl);const t=c.isAndroid?Lw:Vw,o=e.document;o.on("beforeinput",((n,i)=>{if(!this.isEnabled)return;const{data:r,targetRanges:s,inputType:a,domEvent:l}=i;if(!t.includes(a))return;this.focusObserver.flush();const c=new v(o,"insertText");o.fire(c,new ol(e,l,{text:r,selection:e.createSelection(s)})),c.stop.called&&n.stop()})),c.isAndroid||o.on("compositionend",((t,{data:n,domEvent:i})=>{this.isEnabled&&n&&o.fire("insertText",new ol(e,i,{text:n}))}),{priority:"lowest"})}observe(){}stopObserving(){}}class jw extends br{static get pluginName(){return"Input"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model,o=e.editing.view,n=e.editing.mapper,i=t.document.selection;this._compositionQueue=new qw(e),o.addObserver(Hw);const r=new Nw(e,e.config.get("typing.undoStep")||20);e.commands.add("insertText",r),e.commands.add("input",r),this.listenTo(o.document,"insertText",((r,s)=>{o.document.isComposing||s.preventDefault(),c.isAndroid&&o.document.isComposing&&this._compositionQueue.flush("next beforeinput");const{text:a,selection:l}=s;let d;d=l?Array.from(l.getRanges()).map((e=>n.toModelRange(e))):Array.from(i.getRanges());let u=a;if(c.isAndroid){const e=Array.from(d[0].getItems()).reduce(((e,t)=>e+(t.is("$textProxy")?t.data:"")),"");if(e&&(e.length<=u.length?u.startsWith(e)&&(u=u.substring(e.length),d[0].start=d[0].start.getShiftedBy(e.length)):e.startsWith(u)&&(d[0].start=d[0].start.getShiftedBy(u.length),u="")),0==u.length&&d[0].isCollapsed)return}const h={text:u,selection:t.createSelection(d)};c.isAndroid&&o.document.isComposing?this._compositionQueue.push(h):(e.execute("insertText",h),o.scrollToTheSelection())})),c.isAndroid?this.listenTo(o.document,"keydown",((e,n)=>{!i.isCollapsed&&229==n.keyCode&&o.document.isComposing&&$w(t,r)})):this.listenTo(o.document,"compositionstart",(()=>{i.isCollapsed||$w(t,r)})),c.isAndroid?(this.listenTo(o.document,"mutations",((e,{mutations:t})=>{if(o.document.isComposing)for(const{node:e}of t){const t=Uw(e,n),o=n.toModelElement(t);if(this._compositionQueue.isComposedElement(o))return void this._compositionQueue.flush("mutations")}})),this.listenTo(o.document,"compositionend",(()=>{this._compositionQueue.flush("composition end")})),this.listenTo(o.document,"compositionend",(()=>{const e=[];for(const t of this._compositionQueue.flushComposedElements()){const o=n.toViewElement(t);o&&e.push({type:"children",node:o})}e.length&&o.document.fire("mutations",{mutations:e})}),{priority:"lowest"})):this.listenTo(o.document,"compositionend",(()=>{o.document.fire("mutations",{mutations:[]})}),{priority:"lowest"})}destroy(){super.destroy(),this._compositionQueue.destroy()}}class qw{constructor(e){this.flushDebounced=bl((()=>this.flush("timeout")),50),this._queue=[],this._compositionElements=new Set,this.editor=e}destroy(){for(this.flushDebounced.cancel(),this._compositionElements.clear();this._queue.length;)this.shift()}get length(){return this._queue.length}push(e){const t={text:e.text};if(e.selection){t.selectionRanges=[];for(const o of e.selection.getRanges())t.selectionRanges.push(vc.fromRange(o)),this._compositionElements.add(o.start.parent)}this._queue.push(t),this.flushDebounced()}shift(){const e=this._queue.shift(),t={text:e.text};if(e.selectionRanges){const o=e.selectionRanges.map((e=>function(e){const t=e.toRange();if(e.detach(),"$graveyard"==t.root.rootName)return null;return t}(e))).filter((e=>!!e));o.length&&(t.selection=this.editor.model.createSelection(o))}return t}flush(e){const t=this.editor,o=t.model,n=t.editing.view;if(this.flushDebounced.cancel(),!this._queue.length)return;const i=t.commands.get("insertText").buffer;o.enqueueChange(i.batch,(()=>{for(i.lock();this._queue.length;){const e=this.shift();t.execute("insertText",e)}i.unlock()})),n.scrollToTheSelection()}isComposedElement(e){return this._compositionElements.has(e)}flushComposedElements(){const e=Array.from(this._compositionElements);return this._compositionElements.clear(),e}}function $w(e,t){if(!t.isEnabled)return;const o=t.buffer;o.lock(),e.enqueueChange(o.batch,(()=>{e.deleteContent(e.document.selection)})),o.unlock()}function Uw(e,t){let o=e.is("$text")?e.parent:e;for(;!t.toModelElement(o);)o=o.parent;return o}class Ww extends wr{constructor(e,t){super(e),this.direction=t,this._buffer=new Ow(e.model,e.config.get("typing.undoStep")),this._isEnabledBasedOnSelection=!1}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,o=t.document;t.enqueueChange(this._buffer.batch,(n=>{this._buffer.lock();const i=n.createSelection(e.selection||o.selection);if(!t.canEditAt(i))return;const r=e.sequence||1,s=i.isCollapsed;if(i.isCollapsed&&t.modifySelection(i,{direction:this.direction,unit:e.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(r))return void this._replaceEntireContentWithParagraph(n);if(this._shouldReplaceFirstBlockWithParagraph(i,r))return void this.editor.execute("paragraph",{selection:i});if(i.isCollapsed)return;let a=0;i.getFirstRange().getMinimalFlatRanges().forEach((e=>{a+=re(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),t.deleteContent(i,{doNotResetEntireContent:s,direction:this.direction}),this._buffer.input(a),n.setSelection(i),this._buffer.unlock()}))}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,o=t.document.selection,n=t.schema.getLimitElement(o);if(!(o.isCollapsed&&o.containsEntireContent(n)))return!1;if(!t.schema.checkChild(n,"paragraph"))return!1;const i=n.getChild(0);return!i||!i.is("element","paragraph")}_replaceEntireContentWithParagraph(e){const t=this.editor.model,o=t.document.selection,n=t.schema.getLimitElement(o),i=e.createElement("paragraph");e.remove(e.createRangeIn(n)),e.insert(i,n),e.setSelection(i,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const o=this.editor.model;if(t>1||"backward"!=this.direction)return!1;if(!e.isCollapsed)return!1;const n=e.getFirstPosition(),i=o.schema.getLimitElement(n),r=i.getChild(0);return n.parent==r&&(!!e.containsEntireContent(r)&&(!!o.schema.checkChild(i,"paragraph")&&"paragraph"!=r.name))}}const Gw="word",Kw="selection",Zw="backward",Jw="forward",Yw={deleteContent:{unit:Kw,direction:Zw},deleteContentBackward:{unit:"codePoint",direction:Zw},deleteWordBackward:{unit:Gw,direction:Zw},deleteHardLineBackward:{unit:Kw,direction:Zw},deleteSoftLineBackward:{unit:Kw,direction:Zw},deleteContentForward:{unit:"character",direction:Jw},deleteWordForward:{unit:Gw,direction:Jw},deleteHardLineForward:{unit:Kw,direction:Jw},deleteSoftLineForward:{unit:Kw,direction:Jw}};class Qw extends Xa{constructor(e){super(e);const t=e.document;let o=0;t.on("keydown",(()=>{o++})),t.on("keyup",(()=>{o=0})),t.on("beforeinput",((n,i)=>{if(!this.isEnabled)return;const{targetRanges:r,domEvent:s,inputType:a}=i,l=Yw[a];if(!l)return;const d={direction:l.direction,unit:l.unit,sequence:o};d.unit==Kw&&(d.selectionToRemove=e.createSelection(r[0])),"deleteContentBackward"===a&&(c.isAndroid&&(d.sequence=1),function(e){if(1!=e.length||e[0].isCollapsed)return!1;const t=e[0].getWalker({direction:"backward",singleCharacters:!0,ignoreElementEnd:!0});let o=0;for(const{nextPosition:e,item:n}of t){if(e.parent.is("$text")){const t=e.parent.data,n=e.offset;if(hr(t,n)||pr(t,n)||gr(t,n))continue;o++}else(n.is("containerElement")||n.is("emptyElement"))&&o++;if(o>1)return!0}return!1}(r)&&(d.unit=Kw,d.selectionToRemove=e.createSelection(r)));const u=new Zs(t,"delete",r[0]);t.fire(u,new ol(e,s,d)),u.stop.called&&n.stop()})),c.isBlink&&function(e){const t=e.view,o=t.document;let n=null,i=!1;function r(e){return e==Ai.backspace||e==Ai.delete}function s(e){return e==Ai.backspace?Zw:Jw}o.on("keydown",((e,{keyCode:t})=>{n=t,i=!1})),o.on("keyup",((a,{keyCode:l,domEvent:c})=>{const d=o.selection,u=e.isEnabled&&l==n&&r(l)&&!d.isCollapsed&&!i;if(n=null,u){const e=d.getFirstRange(),n=new Zs(o,"delete",e),i={unit:Kw,direction:s(l),selectionToRemove:d};o.fire(n,new ol(t,c,i))}})),o.on("beforeinput",((e,{inputType:t})=>{const o=Yw[t];r(n)&&o&&o.direction==s(n)&&(i=!0)}),{priority:"high"}),o.on("beforeinput",((e,{inputType:t,data:o})=>{n==Ai.delete&&"insertText"==t&&""==o&&e.stop()}),{priority:"high"})}(this)}observe(){}stopObserving(){}}class Xw extends br{static get pluginName(){return"Delete"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.editing.view,o=t.document,n=e.model.document;t.addObserver(Qw),this._undoOnBackspace=!1;const i=new Ww(e,"forward");e.commands.add("deleteForward",i),e.commands.add("forwardDelete",i),e.commands.add("delete",new Ww(e,"backward")),this.listenTo(o,"delete",((n,i)=>{o.isComposing||i.preventDefault();const{direction:r,sequence:s,selectionToRemove:a,unit:l}=i,c="forward"===r?"deleteForward":"delete",d={sequence:s};if("selection"==l){const t=Array.from(a.getRanges()).map((t=>e.editing.mapper.toModelRange(t)));d.selection=e.model.createSelection(t)}else d.unit=l;e.execute(c,d),t.scrollToTheSelection()}),{priority:"low"}),this.listenTo(o,"keydown",((t,i)=>{if(o.isComposing||i.keyCode!=Ai.backspace||!n.selection.isCollapsed)return;const r=e.model.schema.getLimitElement(n.selection);e.model.createPositionAt(r,0).isTouching(n.selection.getFirstPosition())&&i.preventDefault()})),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(n,"change",(()=>{this._undoOnBackspace=!1})))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}class e_ extends br{static get requires(){return[jw,Xw]}static get pluginName(){return"Typing"}static get isOfficialPlugin(){return!0}}function t_(e,t){let o=e.start;return{text:Array.from(e.getWalker({ignoreElementEnd:!1})).reduce(((e,{item:n})=>n.is("$text")||n.is("$textProxy")?e+n.data:(o=t.createPositionAfter(n),"")),""),range:t.createRange(o,e.end)}}class o_ extends(X()){constructor(e,t){super(),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()}get hasMatch(){return this._hasMatch}_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)=>{!t.isUndo&&t.isLocal&&this._evaluateTextBeforeSelection("data",{batch:t})}))}_evaluateTextBeforeSelection(e,t={}){const o=this.model,n=o.document.selection,i=o.createRange(o.createPositionAt(n.focus.parent,0),n.focus),{text:r,range:s}=t_(i,o),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this._hasMatch=!!a,a){const o=Object.assign(t,{text:r,range:s});"object"==typeof a&&Object.assign(o,a),this.fire(`matched:${e}`,o)}}}class n_ extends br{static get pluginName(){return"TwoStepCaretMovement"}static get isOfficialPlugin(){return!0}constructor(e){super(e),this._isNextGravityRestorationSkipped=!1,this.attributes=new Set,this._overrideUid=null}init(){const e=this.editor,t=e.model,o=e.editing.view,n=e.locale,i=t.document.selection;this.listenTo(o.document,"arrowKey",((e,t)=>{if(!i.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const o=t.keyCode==Ai.arrowright,r=t.keyCode==Ai.arrowleft;if(!o&&!r)return;const s=n.contentLanguageDirection;let a=!1;a="ltr"===s&&o||"rtl"===s&&r?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()}),{context:"$text",priority:"highest"}),this.listenTo(i,"change:range",((e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&c_(i.getFirstPosition(),this.attributes)||this._restoreGravity())})),this._enableClickingAfterNode(),this._enableInsertContentSelectionAttributesFixer(),this._handleDeleteContentAfterNode()}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,o=this.editor.model,n=o.document.selection,i=n.getFirstPosition();return!this._isGravityOverridden&&((!i.isAtStart||!i_(n,t))&&(!!c_(i,t)&&(a_(e),i_(n,t)&&c_(i,t,!0)?s_(o,t):this._overrideGravity(),!0)))}_handleBackwardMovement(e){const t=this.attributes,o=this.editor.model,n=o.document.selection,i=n.getFirstPosition();return this._isGravityOverridden?(a_(e),this._restoreGravity(),c_(i,t,!0)?s_(o,t):r_(o,t,i),!0):i.isAtStart?!!i_(n,t)&&(a_(e),r_(o,t,i),!0):!i_(n,t)&&c_(i,t,!0)?(a_(e),r_(o,t,i),!0):!!l_(i,t)&&(i.isAtEnd&&!i_(n,t)&&c_(i,t)?(a_(e),r_(o,t,i),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1))}_enableClickingAfterNode(){const e=this.editor,t=e.model,o=t.document.selection,n=e.editing.view.document;e.editing.view.addObserver(eh),e.editing.view.addObserver(th);let i=!1,r=!1;this.listenTo(n,"touchstart",(()=>{r=!1,i=!0})),this.listenTo(n,"mousedown",(()=>{r=!0})),this.listenTo(n,"selectionChange",(()=>{const e=this.attributes;if(!r&&!i)return;if(r=!1,i=!1,!o.isCollapsed)return;if(!i_(o,e))return;const n=o.getFirstPosition();c_(n,e)&&(n.isAtStart||c_(n,e,!0)?s_(t,e):this._isGravityOverridden||this._overrideGravity())}))}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection,o=this.attributes;this.listenTo(e,"insertContent",(()=>{const n=t.getFirstPosition();i_(t,o)&&c_(n,o)&&s_(e,o)}),{priority:"low"})}_handleDeleteContentAfterNode(){const e=this.editor,t=e.model,o=t.document.selection,n=e.editing.view;let i=!1,r=!1;this.listenTo(n.document,"delete",((e,t)=>{i="backward"===t.direction}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{if(!i)return;const e=o.getFirstPosition();r=i_(o,this.attributes)&&!l_(e,this.attributes)}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{i&&(i=!1,r||e.model.enqueueChange((()=>{const e=o.getFirstPosition();i_(o,this.attributes)&&c_(e,this.attributes)&&(e.isAtStart||c_(e,this.attributes,!0)?s_(t,this.attributes):this._isGravityOverridden||this._overrideGravity())})))}),{priority:"low"})}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 i_(e,t){for(const o of t)if(e.hasAttribute(o))return!0;return!1}function r_(e,t,o){const n=o.nodeBefore;e.change((o=>{if(n){const t=[],i=e.schema.isObject(n)&&e.schema.isInline(n);for(const[o,r]of n.getAttributes())!e.schema.checkAttribute("$text",o)||i&&!1===e.schema.getAttributeProperties(o).copyFromObject||t.push([o,r]);o.setSelectionAttribute(t)}else o.removeSelectionAttribute(t)}))}function s_(e,t){e.change((e=>{e.removeSelectionAttribute(t)}))}function a_(e){e.preventDefault()}function l_(e,t){return c_(e.getShiftedBy(-1),t)}function c_(e,t,o=!1){const{nodeBefore:n,nodeAfter:i}=e;for(const e of t){const t=n?n.getAttribute(e):void 0,r=i?i.getAttribute(e):void 0;if((!o||void 0!==t&&void 0!==r)&&r!==t)return!0}return!1}d_('"'),d_("'"),d_("'"),d_('"'),d_('"'),d_("'");function d_(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function u_(e,t,o,n){return n.createRange(h_(e,t,o,!0,n),h_(e,t,o,!1,n))}function h_(e,t,o,n,i){let r=e.textNode||(n?e.nodeBefore:e.nodeAfter),s=null;for(;r&&r.getAttribute(t)==o;)s=r,r=n?r.previousSibling:r.nextSibling;return s?i.createPositionAt(s,n?"before":"after"):e}function p_(e,t,o,n){const i=e.editing.view,r=new Set;i.document.registerPostFixer((i=>{const s=e.model.document.selection;let a=!1;if(s.hasAttribute(t)){const l=u_(s.getFirstPosition(),t,s.getAttribute(t),e.model),c=e.editing.mapper.toViewRange(l);for(const e of c.getItems())e.is("element",o)&&!e.hasClass(n)&&(i.addClass(n,e),r.add(e),a=!0)}return a})),e.conversion.for("editingDowncast").add((e=>{function t(){i.change((e=>{for(const t of r.values())e.removeClass(n,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"})}))}function*m_(e,t){for(const o of t)o&&e.getAttributeProperties(o[0]).copyOnEnter&&(yield o)}class g_ extends wr{execute(){this.editor.model.change((e=>{this.enterBlock(e),this.fire("afterExecute",{writer:e})}))}enterBlock(e){const t=this.editor.model,o=t.document.selection,n=t.schema,i=o.isCollapsed,r=o.getFirstRange(),s=r.start.parent,a=r.end.parent;if(n.isLimit(s)||n.isLimit(a))return i||s!=a||t.deleteContent(o),!1;if(i){const t=m_(e.model.schema,o.getAttributes());return f_(e,r.start),e.setSelectionAttribute(t),!0}{const n=!(r.start.isAtStart&&r.end.isAtEnd),i=s==a;if(t.deleteContent(o,{leaveUnmerged:n}),n){if(i)return f_(e,o.focus),!0;e.setSelection(a,0)}}return!1}}function f_(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}const b_={insertParagraph:{isSoft:!1},insertLineBreak:{isSoft:!0}};class k_ extends Xa{constructor(e){super(e);const t=this.document;let o=!1;t.on("keydown",((e,t)=>{o=t.shiftKey})),t.on("beforeinput",((n,i)=>{if(!this.isEnabled)return;let r=i.inputType;c.isSafari&&o&&"insertParagraph"==r&&(r="insertLineBreak");const s=i.domEvent,a=b_[r];if(!a)return;const l=new Zs(t,"enter",i.targetRanges[0]);t.fire(l,new ol(e,s,{isSoft:a.isSoft})),l.stop.called&&n.stop()}))}observe(){}stopObserving(){}}class w_ extends br{static get pluginName(){return"Enter"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.editing.view,o=t.document,n=this.editor.t;t.addObserver(k_),e.commands.add("enter",new g_(e)),this.listenTo(o,"enter",((n,i)=>{o.isComposing||i.preventDefault(),i.isSoft||(e.execute("enter"),t.scrollToTheSelection())}),{priority:"low"}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:n("Insert a hard break (a new paragraph)"),keystroke:"Enter"}]})}}class __ extends wr{execute(){const e=this.editor.model,t=e.document;e.change((o=>{!function(e,t,o){const n=o.isCollapsed,i=o.getFirstRange(),r=i.start.parent,s=i.end.parent,a=r==s;if(n){const n=m_(e.schema,o.getAttributes());y_(e,t,i.end),t.removeSelectionAttribute(o.getAttributeKeys()),t.setSelectionAttribute(n)}else{const n=!(i.start.isAtStart&&i.end.isAtEnd);e.deleteContent(o,{leaveUnmerged:n}),a?y_(e,t,o.focus):n&&t.setSelection(s,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 n=t.getFirstRange(),i=n.start.parent,r=n.end.parent;if((A_(i,e)||A_(r,e))&&i!==r)return!1;return!0}(e.schema,t.selection)}}function y_(e,t,o){const n=t.createElement("softBreak");e.insertContent(n,o),t.setSelection(n,"after")}function A_(e,t){return!e.is("rootElement")&&(t.isLimit(e)||A_(e.parent,t))}class C_ extends br{static get pluginName(){return"ShiftEnter"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model.schema,o=e.conversion,n=e.editing.view,i=n.document,r=this.editor.t;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")}),n.addObserver(k_),e.commands.add("shiftEnter",new __(e)),this.listenTo(i,"enter",((t,o)=>{i.isComposing||o.preventDefault(),o.isSoft&&(e.execute("shiftEnter"),n.scrollToTheSelection())}),{priority:"low"}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:r("Insert a soft break (a <br> element)"),keystroke:"Shift+Enter"}]})}}var v_=i(6779),x_={attributes:{"data-cke":!0}};x_.setAttributes=Xr(),x_.insert=Yr().bind(null,"head"),x_.domAPI=Zr(),x_.insertStyleElement=ts();Gr()(v_.A,x_);v_.A&&v_.A.locals&&v_.A.locals;const E_=["before","after"],D_=(new DOMParser).parseFromString('',"image/svg+xml").firstChild,B_="ck-widget__type-around_disabled";class S_ extends br{constructor(){super(...arguments),this._currentFakeCaretModelElement=null}static get pluginName(){return"WidgetTypeAround"}static get isOfficialPlugin(){return!0}static get requires(){return[w_,Xw]}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",((o,n,i)=>{t.change((e=>{for(const o of t.document.roots)i?e.removeClass(B_,o):e.addClass(B_,o)})),i||e.model.change((e=>{e.removeSelectionAttribute(mw)}))})),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableInsertObjectIntegration(),this._enableDeleteContentIntegration()}destroy(){super.destroy(),this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const o=this.editor,n=o.editing.view,i=o.model.schema.getAttributesWithProperty(e,"copyOnReplace",!0);o.execute("insertParagraph",{position:o.model.createPositionAt(e,t),attributes:i}),n.focus(),n.scrollToTheSelection()}_listenToIfEnabled(e,t,o,n){this.listenTo(e,t,((...e)=>{this.isEnabled&&o(...e)}),n)}_insertParagraphAccordingToFakeCaretPosition(){const e=this.editor.model.document.selection,t=fw(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,n={before:o("Insert paragraph before block"),after:o("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",((e,i,r)=>{const s=r.mapper.toViewElement(i.item);if(s&&gw(s,i.item,t)){!function(e,t,o){const n=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 E_){const n=new pp({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${o}`],title:t[o],"aria-hidden":"true"},children:[e.ownerDocument.importNode(D_,!0)]});e.appendChild(n.render())}}(o,t),function(e){const t=new pp({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(o),o}));e.insert(e.createPositionAt(o,"end"),n)}(r.writer,n,s);s.getCustomProperty("widgetLabel").push((()=>this.isEnabled?o("Press Enter to type after or press Shift + Enter to type before the widget"):""))}}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,o=t.document.selection,n=t.schema,i=e.editing.view;function r(e){return`ck-widget_type-around_show-fake-caret_${e}`}this._listenToIfEnabled(i.document,"arrowKey",((e,t)=>{this._handleArrowKeyPress(e,t)}),{context:[ww,"$text"],priority:"high"}),this._listenToIfEnabled(o,"change:range",((t,o)=>{o.directChange&&e.model.change((e=>{e.removeSelectionAttribute(mw)}))})),this._listenToIfEnabled(t.document,"change:data",(()=>{const t=o.getSelectedElement();if(t){if(gw(e.editing.mapper.toViewElement(t),t,n))return}e.model.change((e=>{e.removeSelectionAttribute(mw)}))})),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",((e,t,o)=>{const i=o.writer;if(this._currentFakeCaretModelElement){const e=o.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(i.removeClass(E_.map(r),e),this._currentFakeCaretModelElement=null)}const s=t.selection.getSelectedElement();if(!s)return;const a=o.mapper.toViewElement(s);if(!gw(a,s,n))return;const l=fw(t.selection);l&&(i.addClass(r(l),a),this._currentFakeCaretModelElement=s)})),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",((t,o,n)=>{n||e.model.change((e=>{e.removeSelectionAttribute(mw)}))}))}_handleArrowKeyPress(e,t){const o=this.editor,n=o.model,i=n.document.selection,r=n.schema,s=o.editing.view,a=function(e,t){const o=Di(e,t);return"down"===o||"right"===o}(t.keyCode,o.locale.contentLanguageDirection),l=s.document.selection.getSelectedElement();let c;gw(l,o.editing.mapper.toModelElement(l),r)?c=this._handleArrowKeyPressOnSelectedWidget(a):i.isCollapsed?c=this._handleArrowKeyPressWhenSelectionNextToAWidget(a):t.shiftKey||(c=this._handleArrowKeyPressWhenNonCollapsedSelection(a)),c&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,o=fw(t.document.selection);return t.change((t=>{if(!o)return t.setSelectionAttribute(mw,e?"after":"before"),!0;if(!(o===(e?"after":"before")))return t.removeSelectionAttribute(mw),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,o=t.model,n=o.schema,i=t.plugins.get("Widget"),r=i._getObjectElementNextToSelection(e);return!!gw(t.editing.mapper.toViewElement(r),r,n)&&(o.change((t=>{i._setSelectionOverElement(r),t.setSelectionAttribute(mw,e?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(e){const t=this.editor,o=t.model,n=o.schema,i=t.editing.mapper,r=o.document.selection,s=e?r.getLastPosition().nodeBefore:r.getFirstPosition().nodeAfter;return!!gw(i.toViewElement(s),s,n)&&(o.change((t=>{t.setSelection(s,"on"),t.setSelectionAttribute(mw,e?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",((o,n)=>{const i=n.domTarget.closest(".ck-widget__type-around__button");if(!i)return;const r=function(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(i),s=function(e,t){const o=e.closest(".ck-widget");return t.mapDomToView(o)}(i,t.domConverter),a=e.editing.mapper.toModelElement(s);this._insertParagraph(a,r),n.preventDefault(),o.stop()}))}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,o=e.editing.view;this._listenToIfEnabled(o.document,"enter",((o,n)=>{if("atTarget"!=o.eventPhase)return;const i=t.getSelectedElement(),r=e.editing.mapper.toViewElement(i),s=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:gw(r,i,s)&&(this._insertParagraph(i,n.isSoft?"before":"after"),a=!0),a&&(n.preventDefault(),o.stop())}),{context:ww})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view.document;this._listenToIfEnabled(e,"insertText",((t,o)=>{this._insertParagraphAccordingToFakeCaretPosition()&&(o.selection=e.selection)}),{priority:"high"}),c.isAndroid?this._listenToIfEnabled(e,"keydown",((e,t)=>{229==t.keyCode&&this._insertParagraphAccordingToFakeCaretPosition()})):this._listenToIfEnabled(e,"compositionstart",(()=>{this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"high"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,o=e.model,n=o.schema;this._listenToIfEnabled(t.document,"delete",((t,i)=>{if("atTarget"!=t.eventPhase)return;const r=fw(o.document.selection);if(!r)return;const s=i.direction,a=o.document.selection.getSelectedElement(),l="forward"==s;if("before"===r===l)e.execute("delete",{selection:o.createSelection(a,"on")});else{const t=n.getNearestSelectionRange(o.createPositionAt(a,r),s);if(t)if(t.isCollapsed){const i=o.createSelection(t.start);if(o.modifySelection(i,{direction:s}),i.focus.isEqual(t.start)){const e=function(e,t){let o=t;for(const n of t.getAncestors({parentFirst:!0})){if(n.childCount>1||e.isLimit(n))break;o=n}return o}(n,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")}))}i.preventDefault(),t.stop()}),{context:ww})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,o=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",((e,[n,i])=>{if(i&&!i.is("documentSelection"))return;const r=fw(o);return r?(e.stop(),t.change((e=>{const i=o.getSelectedElement(),s=t.createPositionAt(i,r),a=e.createSelection(s),l=t.insertContent(n,a);return e.setSelection(a),l}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"insertObject",((e,o)=>{const[,n,i={}]=o;if(n&&!n.is("documentSelection"))return;const r=fw(t);r&&(i.findOptimalPosition=r,o[3]=i)}),{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;fw(t)&&e.stop()}),{priority:"high"})}}function T_(e){const t=e.model;return(o,n)=>{const i=n.keyCode==Ai.arrowup,r=n.keyCode==Ai.arrowdown,s=n.shiftKey,a=t.document.selection;if(!i&&!r)return;const l=r;if(s&&function(e,t){return!e.isCollapsed&&e.isBackward==t}(a,l))return;const c=function(e,t,o){const n=e.model;if(o){const e=t.isCollapsed?t.focus:t.getLastPosition(),o=I_(n,e,"forward");if(!o)return null;const i=n.createRange(e,o),r=P_(n.schema,i,"backward");return r?n.createRange(e,r):null}{const e=t.isCollapsed?t.focus:t.getFirstPosition(),o=I_(n,e,"backward");if(!o)return null;const i=n.createRange(o,e),r=P_(n.schema,i,"forward");return r?n.createRange(r,e):null}}(e,a,l);if(c){if(c.isCollapsed){if(a.isCollapsed)return;if(s)return}(c.isCollapsed||function(e,t,o){const n=e.model,i=e.view.domConverter;if(o){const e=n.createSelection(t.start);n.modifySelection(e),e.focus.isAtEnd||t.start.isEqual(e.focus)||(t=n.createRange(e.focus,t.end))}const r=e.mapper.toViewRange(t),s=i.viewRangeToDom(r),a=Gn.getDomRangeRects(s);let l;for(const e of a)if(void 0!==l){if(Math.round(e.top)>=l)return!1;l=Math.max(l,Math.round(e.bottom))}else l=Math.round(e.bottom);return!0}(e,c,l))&&(t.change((e=>{const o=l?c.end:c.start;if(s){const n=t.createSelection(a.anchor);n.setFocus(o),e.setSelection(n)}else e.setSelection(o)})),o.stop(),n.preventDefault(),n.stopPropagation())}}}function I_(e,t,o){const n=e.schema,i=e.createRangeIn(t.root),r="forward"==o?"elementStart":"elementEnd";for(const{previousPosition:e,item:s,type:a}of i.getWalker({startPosition:t,direction:o})){if(n.isLimit(s)&&!n.isInline(s))return e;if(a==r&&n.isBlock(s))return null}return null}function P_(e,t,o){const n="backward"==o?t.end:t.start;if(e.checkChild(n,"$text"))return n;for(const{nextPosition:n}of t.getWalker({direction:o}))if(e.checkChild(n,"$text"))return n;return null}var F_=i(1216),R_={attributes:{"data-cke":!0}};R_.setAttributes=Xr(),R_.insert=Yr().bind(null,"head"),R_.domAPI=Zr(),R_.insertStyleElement=ts();Gr()(F_.A,R_);F_.A&&F_.A.locals&&F_.A.locals;class M_ extends br{constructor(){super(...arguments),this._previouslySelected=new Set}static get pluginName(){return"Widget"}static get isOfficialPlugin(){return!0}static get requires(){return[S_,Xw]}init(){const e=this.editor,t=e.editing.view,o=t.document,n=e.t;this.editor.editing.downcastDispatcher.on("selection",((t,o,n)=>{const i=n.writer,r=o.selection;if(r.isCollapsed)return;const s=r.getSelectedElement();if(!s)return;const a=e.editing.mapper.toViewElement(s);var l;ww(a)&&(n.consumable.consume(r,"selection")&&i.setSelection(i.createRangeOn(a),{fake:!0,label:(l=a,l.getCustomProperty("widgetLabel").reduce(((e,t)=>"function"==typeof t?e?e+". "+t():t():e?e+". "+t:t),""))}))})),this.editor.editing.downcastDispatcher.on("selection",((e,t,o)=>{this._clearPreviouslySelectedWidgets(o.writer);const n=o.writer,i=n.document.selection;let r=null;for(const e of i.getRanges())for(const t of e){const e=t.item;ww(e)&&!z_(e,r)&&(n.addClass(kw,e),this._previouslySelected.add(e),r=e)}}),{priority:"low"}),t.addObserver(eh),this.listenTo(o,"mousedown",((...e)=>this._onMousedown(...e))),this.listenTo(o,"arrowKey",((...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)}),{context:[ww,"$text"]}),this.listenTo(o,"arrowKey",((...e)=>{this._preventDefaultOnArrowKeyPress(...e)}),{context:"$root"}),this.listenTo(o,"arrowKey",T_(this.editor.editing),{context:"$text"}),this.listenTo(o,"delete",((e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())}),{context:"$root"}),this.listenTo(o,"tab",((e,t)=>{"atTarget"==e.eventPhase&&(t.shiftKey||this._selectFirstNestedEditable()&&(t.preventDefault(),e.stop()))}),{context:ww,priority:"low"}),this.listenTo(o,"tab",((e,t)=>{t.shiftKey&&this._selectAncestorWidget()&&(t.preventDefault(),e.stop())}),{priority:"low"}),this.listenTo(o,"keydown",((e,t)=>{t.keystroke==Ai.esc&&this._selectAncestorWidget()&&(t.preventDefault(),e.stop())}),{priority:"low"}),e.accessibility.addKeystrokeInfoGroup({id:"widget",label:n("Keystrokes that can be used when a widget is selected (for example: image, table, etc.)"),keystrokes:[{label:n("Move focus from an editable area back to the parent widget"),keystroke:"Esc"},{label:n("Insert a new paragraph directly after a widget"),keystroke:"Enter"},{label:n("Insert a new paragraph directly before a widget"),keystroke:"Shift+Enter"},{label:n("Move the caret to allow typing directly before a widget"),keystroke:[["arrowup"],["arrowleft"]]},{label:n("Move the caret to allow typing directly after a widget"),keystroke:[["arrowdown"],["arrowright"]]}]})}_onMousedown(e,t){const o=this.editor,n=o.editing.view,i=n.document;let r=t.target;if(!r)return;if(t.domEvent.detail>=3)return void(this._selectBlockContent(r)&&t.preventDefault());if(!ww(r)){const e=function(e){let t=e;for(;t;){if(t.is("editableElement")||ww(t))return t;t=t.parent}return null}(r);if(!e)return;if(ww(e))r=e;else{const e=function(e,t){const o=jn(t.domEvent);let n=null;n=o?e.domConverter.domRangeToView(o):e.createRange(e.createPositionAt(t.target,0));if(!n)return null;const i=n.start;if(!i.parent)return null;let r=i.parent;i.parent.is("editableElement")&&(i.isAtEnd&&i.nodeBefore?r=i.nodeBefore:i.isAtStart&&i.nodeAfter&&(r=i.nodeAfter));if(r.is("$text"))return r.parent;return r}(n,t);if(!e||!ww(e))return;r=e}}c.isAndroid&&t.preventDefault(),i.isFocused||n.focus();const s=o.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_selectBlockContent(e){const t=this.editor,o=t.model,n=t.editing.mapper,i=o.schema,r=n.findMappedViewAncestor(this.editor.editing.view.createPositionAt(e,0)),s=function(e,t){for(const o of e.getAncestors({includeSelf:!0,parentFirst:!0})){if(t.checkChild(o,"$text"))return o;if(t.isLimit(o)&&!t.isObject(o))break}return null}(n.toModelElement(r),o.schema);return!!s&&(o.change((e=>{const t=i.isLimit(s)?null:function(e,t){const o=new ec({startPosition:e});for(const{item:e}of o){if(t.isLimit(e)||!e.is("element"))return null;if(t.checkChild(e,"$text"))return e}return null}(e.createPositionAfter(s),i),o=e.createPositionAt(s,0),n=t?e.createPositionAt(t,0):e.createPositionAt(s,"end");e.setSelection(e.createRange(o,n))})),!0)}_handleSelectionChangeOnArrowKeyPress(e,t){const o=t.keyCode,n=this.editor.model,i=n.schema,r=n.document.selection,s=r.getSelectedElement(),a=Di(o,this.editor.locale.contentLanguageDirection),l="down"==a||"right"==a,c="up"==a||"down"==a;if(s&&i.isObject(s)){const o=l?r.getLastPosition():r.getFirstPosition(),s=i.getNearestSelectionRange(o,l?"forward":"backward");return void(s&&(n.change((e=>{e.setSelection(s)})),t.preventDefault(),e.stop()))}if(!r.isCollapsed&&!t.shiftKey){const o=r.getFirstPosition(),s=r.getLastPosition(),a=o.nodeAfter,c=s.nodeBefore;return void((a&&i.isObject(a)||c&&i.isObject(c))&&(n.change((e=>{e.setSelection(l?s:o)})),t.preventDefault(),e.stop()))}if(!r.isCollapsed)return;const d=this._getObjectElementNextToSelection(l);if(d&&i.isObject(d)){if(i.isInline(d)&&c)return;this._setSelectionOverElement(d),t.preventDefault(),e.stop()}}_preventDefaultOnArrowKeyPress(e,t){const o=this.editor.model,n=o.schema,i=o.document.selection.getSelectedElement();i&&n.isObject(i)&&(t.preventDefault(),e.stop())}_handleDelete(e){const t=this.editor.model.document.selection;if(!this.editor.model.canEditAt(t))return;if(!t.isCollapsed)return;const o=this._getObjectElementNextToSelection(e);return o?(this.editor.model.change((e=>{let n=t.anchor.parent;for(;n.isEmpty;){const t=n;n=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,n=t.document.selection,i=t.createSelection(n);if(t.modifySelection(i,{direction:e?"forward":"backward"}),i.isEqual(n))return null;const r=e?i.focus.nodeBefore:i.focus.nodeAfter;return r&&o.isObject(r)?r:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass(kw,t);this._previouslySelected.clear()}_selectFirstNestedEditable(){const e=this.editor,t=this.editor.editing.view.document;for(const o of t.selection.getFirstRange().getItems())if(o.is("editableElement")){const t=e.editing.mapper.toModelElement(o);if(!t)continue;const n=e.model.createPositionAt(t,0),i=e.model.schema.getNearestSelectionRange(n,"forward");return e.model.change((e=>{e.setSelection(i)})),!0}return!1}_selectAncestorWidget(){const e=this.editor,t=e.editing.mapper,o=e.editing.view.document.selection.getFirstPosition().parent,n=(o.is("$text")?o.parent:o).findAncestor(ww);if(!n)return!1;const i=t.toModelElement(n);return!!i&&(e.model.change((e=>{e.setSelection(i,"on")})),!0)}}function z_(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}class O_ extends br{constructor(){super(...arguments),this._toolbarDefinitions=new Map}static get requires(){return[kk]}static get pluginName(){return"WidgetToolbarRepository"}static get isOfficialPlugin(){return!0}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||!ww(t))})(e.editing.view.document.selection)&&t.stop()}),{priority:"high"})}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:n,balloonClassName:i="ck-toolbar-container"}){if(!o.length)return void T("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,s=r.t,a=new af(r.locale);if(a.ariaLabel=t||s("Widget toolbar"),this._toolbarDefinitions.has(e))throw new S("widget-toolbar-duplicated",this,{toolbarId:e});const l={view:a,getRelatedElement:n,balloonClassName:i,itemsConfig:o,initialized:!1};r.ui.addToolbar(a,{isContextual:!0,beforeFocus:()=>{const e=n(r.editing.view.document.selection);e&&this._showToolbar(l,e)},afterBlur:()=>{this._hideToolbar(l)}}),this._toolbarDefinitions.set(e,l)}_updateToolbarsVisibility(){let e=0,t=null,o=null;for(const n of this._toolbarDefinitions.values()){const i=n.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&i)if(this.editor.ui.focusTracker.isFocused){const r=i.getAncestors().length;r>e&&(e=r,t=i,o=n)}else this._isToolbarVisible(n)&&this._hideToolbar(n);else this._isToolbarInBalloon(n)&&this._hideToolbar(n)}o&&this._showToolbar(o,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?N_(this.editor,t):this._isToolbarInBalloon(e)||(e.initialized||(e.initialized=!0,e.view.fillFromConfig(e.itemsConfig,this.editor.ui.componentFactory)),this._balloon.add({view:e.view,position:V_(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);N_(this.editor,t)}})))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function N_(e,t){const o=e.plugins.get("ContextualBalloon"),n=V_(e,t);o.updatePosition(n)}function V_(e,t){const o=e.editing.view,n=Wg.defaultPositions;return{target:o.domConverter.mapViewToDom(t),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,n.viewportStickyNorth]}}class L_ extends(X()){constructor(e){super(),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}get originalWidth(){return this._originalWidth}get originalHeight(){return this._originalHeight}get originalWidthPercents(){return this._originalWidthPercents}get aspectRatio(){return this._aspectRatio}begin(e,t,o){const n=new Gn(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const o of t)if(e.classList.contains(H_(o)))return o}(e),this._referenceCoordinates=function(e,t){const o=new Gn(e),n=t.split("-"),i={x:"right"==n[1]?o.right:o.left,y:"bottom"==n[0]?o.bottom:o.top};return i.x+=e.ownerDocument.defaultView.scrollX,i.y+=e.ownerDocument.defaultView.scrollY,i}(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=n.width,this._originalHeight=n.height,this._aspectRatio=n.width/n.height;const i=o.style.width;i&&i.match(/^\d+(\.\d*)?%$/)?this._originalWidthPercents=parseFloat(i):this._originalWidthPercents=function(e,t=new Gn(e)){const o=Dw(e);return o?t.width/o*100:0}(o,n)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}function H_(e){return`ck-widget__resizer__handle-${e}`}class j_ extends zp{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,n)=>"px"===e.unit?`${t}×${o}`:`${n}%`)),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 q_ extends(X()){constructor(e){super(),this._viewResizerWrapper=null,this._options=e,this.set("isEnabled",!0),this.set("isSelected",!1),this.bind("isVisible").to(this,"isEnabled",this,"isSelected",((e,t)=>e&&t)),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"})}get state(){return this._state}show(){this._options.editor.editing.view.change((e=>{e.removeClass("ck-hidden",this._viewResizerWrapper)}))}hide(){this._options.editor.editing.view.change((e=>{e.addClass("ck-hidden",this._viewResizerWrapper)}))}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change((o=>{const n=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),o}));o.insert(o.createPositionAt(t,"end"),n),o.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=n,this.isVisible||this.hide()})),this.on("change:isVisible",(()=>{this.isVisible?(this.show(),this.redraw()):this.hide()}))}begin(e){this._state=new L_(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||"%",n=("%"===o?t.widthPercents:t.width)+o;e.setStyle("width",n,this._options.viewElement)}));const o=this._getHandleHost(),n=new Gn(o),i=Math.round(n.width),r=Math.round(n.height),s=new Gn(o);t.width=Math.round(s.width),t.height=Math.round(s.height),this.redraw(n),this.state.update({...t,handleHostWidth:i,handleHostHeight:r})}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 n=t.parentElement,i=this._getHandleHost(),r=this._viewResizerWrapper,s=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(n.isSameNode(i)){const t=e||new Gn(i);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[i.offsetWidth+"px",i.offsetHeight+"px",i.offsetLeft+"px",i.offsetTop+"px"];"same"!==se(s,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:(n=e).pageX,y:n.pageY};var n;const i=!this._options.isCentered||this._options.isCentered(this),r={x:t._referenceCoordinates.x-(o.x+t.originalWidth),y:o.y-t.originalHeight-t._referenceCoordinates.y};i&&t.activeHandlePosition.endsWith("-right")&&(r.x=o.x-(t._referenceCoordinates.x+t.originalWidth)),i&&(r.x*=2);let s=Math.abs(t.originalWidth+r.x),a=Math.abs(t.originalHeight+r.y);return"width"==(s/t.aspectRatio>a?"width":"height")?a=s/t.aspectRatio:s=a*t.aspectRatio,{width:Math.round(s),height:Math.round(a),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*s*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 n of t)e.appendChild(new pp({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(o=n,`ck-widget__resizer__handle-${o}`)}}).render());var o}_appendSizeUI(e){this._sizeView=new j_,this._sizeView.render(),e.appendChild(this._sizeView.element)}}var $_=i(2060),U_={attributes:{"data-cke":!0}};U_.setAttributes=Xr(),U_.insert=Yr().bind(null,"head"),U_.domAPI=Zr(),U_.insertStyleElement=ts();Gr()($_.A,U_);$_.A&&$_.A.locals&&$_.A.locals;class W_ extends br{constructor(){super(...arguments),this._resizers=new Map}static get pluginName(){return"WidgetResize"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.editing,t=s.window.document;this.set("selectedResizer",null),this.set("_activeResizer",null),e.view.addObserver(eh),this._observer=new(On()),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)),this._redrawSelectedResizerThrottled=Hh((()=>this.redrawSelectedResizer()),200),this.editor.ui.on("update",this._redrawSelectedResizerThrottled),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(s.window,"resize",this._redrawSelectedResizerThrottled);const o=this.editor.editing.view.document.selection;o.on("change",(()=>{const e=o.getSelectedElement(),t=this.getResizerByViewElement(e)||null;t?this.select(t):this.deselect()}))}redrawSelectedResizer(){this.selectedResizer&&this.selectedResizer.isVisible&&this.selectedResizer.redraw()}destroy(){super.destroy(),this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawSelectedResizerThrottled.cancel()}select(e){this.deselect(),this.selectedResizer=e,this.selectedResizer.isSelected=!0}deselect(){this.selectedResizer&&(this.selectedResizer.isSelected=!1),this.selectedResizer=null}attachTo(e){const t=new q_(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 n=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(n)==t&&this.select(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;q_.isResizeHandle(o)&&(this._activeResizer=this._getResizerByHandle(o)||null,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)}}function G_(e,t,o){e.ui.componentFactory.add(t,(t=>{const n=new Kp(t);return n.set({label:I18n.t("js.button_edit"),icon:'\n',tooltip:!0}),n.on("execute",(()=>{const t=e.model.document.selection.getSelectedElement();t&&o(t)})),n}))}const K_="ck-toolbar-container";function Z_(e,t,o,n){const i=t.config.get(o+".toolbar");if(!i||!i.length)return;const r=t.plugins.get("ContextualBalloon"),s=new af(t.locale);function a(){t.ui.focusTracker.isFocused&&n(t.editing.view.document.selection)?c()?function(e,t){const o=e.plugins.get("ContextualBalloon");if(t(e.editing.view.document.selection)){const t=J_(e);o.updatePosition(t)}}(t,n):r.hasView(s)||r.add({view:s,position:J_(t),balloonClassName:K_}):l()}function l(){c()&&r.remove(s)}function c(){return r.visibleView==s}s.fillFromConfig(i,t.ui.componentFactory),e.listenTo(t.editing.view,"render",a),e.listenTo(t.ui.focusTracker,"change:isFocused",a,{priority:"low"})}function J_(e){const t=e.editing.view,o=Wg.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast]}}class Y_ extends br{static get requires(){return[kk]}static get pluginName(){return"EmbeddedTableToolbar"}init(){const e=this.editor,t=this.editor.model,o=Pw(e);G_(e,"opEditEmbeddedTableQuery",(e=>{const n=o.services.externalQueryConfiguration,i=e.getAttribute("opEmbeddedTableQuery")||{};o.runInZone((()=>{n.show({currentQuery:i,callback:o=>t.change((t=>{t.setAttribute("opEmbeddedTableQuery",o,e)}))})}))}))}afterInit(){Z_(this,this.editor,"OPMacroEmbeddedTable",Tw)}}const Q_=Symbol("isWpButtonMacroSymbol");function X_(e){const t=e.getSelectedElement();return!(!t||!function(e){return!!e.getCustomProperty(Q_)&&ww(e)}(t))}class ey extends br{static get pluginName(){return"OPMacroWpButtonEditing"}static get buttonName(){return"insertWorkPackageButton"}init(){const e=this.editor,t=e.model,o=e.conversion,n=Pw(e);t.schema.register("op-macro-wp-button",{allowWhere:["$block"],allowAttributes:["type","classes"],isBlock:!0,isLimit:!0}),o.for("upcast").elementToElement({view:{name:"macro",classes:"create_work_package_link"},model:(e,{writer:t})=>{const o=e.getAttribute("data-type")||"",n=e.getAttribute("data-classes")||"";return t.createElement("op-macro-wp-button",{type:o,classes:n})}}),o.for("editingDowncast").elementToElement({model:"op-macro-wp-button",view:(e,{writer:t})=>this.createMacroViewElement(e,t)}),o.for("dataDowncast").elementToElement({model:"op-macro-wp-button",view:(e,{writer:t})=>t.createContainerElement("macro",{class:"create_work_package_link","data-type":e.getAttribute("type")||"","data-classes":e.getAttribute("classes")||""})}),e.ui.componentFactory.add(ey.buttonName,(t=>{const o=new Kp(t);return o.set({label:window.I18n.t("js.editor.macro.work_package_button.button"),withText:!0}),o.on("execute",(()=>{n.services.macros.configureWorkPackageButton().then((t=>e.model.change((o=>{const n=o.createElement("op-macro-wp-button",{});o.setAttribute("type",t.type,n),o.setAttribute("classes",t.classes,n),e.model.insertContent(n,e.model.document.selection)}))))})),o}))}macroLabel(e){return e?window.I18n.t("js.editor.macro.work_package_button.with_type",{typename:e}):window.I18n.t("js.editor.macro.work_package_button.without_type")}createMacroViewElement(e,t){const o=e.getAttribute("classes")||"",n=this.macroLabel(),i=t.createText(n),r=t.createContainerElement("span",{class:o});return t.insert(t.createPositionAt(r,0),i),function(e,t,o){return t.setCustomProperty(Q_,!0,e),_w(e,t,{label:o})}(r,t,{label:n})}}class ty extends br{static get requires(){return[kk]}static get pluginName(){return"OPMacroWpButtonToolbar"}init(){const e=this.editor,t=Pw(e);G_(e,"opEditWpMacroButton",(o=>{const n=t.services.macros,i=o.getAttribute("type"),r=o.getAttribute("classes");n.configureWorkPackageButton(i,r).then((t=>e.model.change((e=>{e.setAttribute("classes",t.classes,o),e.setAttribute("type",t.type,o)}))))}))}afterInit(){Z_(this,this.editor,"OPMacroWpButton",X_)}}class oy extends(X()){constructor(){super();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,n)=>{t.onload=()=>{const e=t.result;this._data=e,o(e)},t.onerror=()=>{n("error")},t.onabort=()=>{n("aborted")},this._reader.readAsDataURL(e)}))}abort(){this._reader.abort()}}class ny extends br{constructor(){super(...arguments),this.loaders=new tr,this._loadersMap=new Map,this._pendingAction=null}static get pluginName(){return"FileRepository"}static get isOfficialPlugin(){return!0}static get requires(){return[dp]}init(){this.loaders.on("change",(()=>this._updatePendingAction())),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 T("filerepository-no-upload-adapter"),null;const t=new iy(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 iy?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(dp);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}}class iy extends(X()){constructor(e,t){super(),this.id=E(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new oy,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 S("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 S("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,n)=>{t.rejecter=n,t.isFulfilled=!1,e.then((e=>{t.isFulfilled=!0,o(e)})).catch((e=>{t.isFulfilled=!0,n(e)}))})),t}}class ry{constructor(e,t,o){this.loader=e,this.resource=t,this.editor=o}upload(){const e=this.resource,t=Fw(this.editor,"attachmentsResourceService");return e?this.loader.file.then((o=>t.attachFiles(e,[o]).toPromise().then((e=>(this.editor.model.fire("op:attachment-added",e),this.buildResponse(e[0])))).catch((e=>{console.error("Failed upload %O",e)})))):(console.warn("resource not available in this CKEditor instance"),Promise.reject("Not possible to upload attachments without resource"))}buildResponse(e){return{default:e._links.staticDownloadLocation.href}}abort(){return!1}}class sy extends nl{constructor(e){super(e),this.domEventType=["paste","copy","cut","drop","dragover","dragstart","dragend","dragenter","dragleave"];const t=this.document;function o(e){return(o,n)=>{n.preventDefault();const i=n.dropRange?[n.dropRange]:null,r=new v(t,e);t.fire(r,{dataTransfer:n.dataTransfer,method:o.name,targetRanges:i,target:n.target,domEvent:n.domEvent}),r.stop.called&&n.stopPropagation()}}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="clipboardData"in e?e.clipboardData:e.dataTransfer,o="drop"==e.type||"paste"==e.type,n={dataTransfer:new Ul(t,{cacheFiles:o})};if("drop"==e.type||"dragover"==e.type){const t=jn(e);n.dropRange=t&&this.view.domConverter.domRangeToView(t)}this.fire(e.type,e,n)}}const ay=["figcaption","li"],ly=["ol","ul"];function cy(e,t){if(t.is("$text")||t.is("$textProxy"))return t.data;if(t.is("element","img")&&t.hasAttribute("alt"))return t.getAttribute("alt");if(t.is("element","br"))return"\n";let o="",n=null;for(const i of t.getChildren())o+=uy(i,n)+cy(e,i),n=i;if(t.is("rawElement")){const n=document.createElement("div");t.render(n,e),o+=dy(n)}return o}function dy(e){let t="";if(e.nodeType===Node.TEXT_NODE)return e.textContent;if("BR"===e.tagName)return"\n";for(const o of e.childNodes)t+=dy(o);return t}function uy(e,t){return t?e.is("element","li")&&!e.isEmpty&&e.getChild(0).is("containerElement")||ly.includes(e.name)&&ly.includes(t.name)?"\n\n":e.is("containerElement")||t.is("containerElement")?ay.includes(e.name)||ay.includes(t.name)?"\n":e.is("element")&&e.getCustomProperty("dataPipeline:transparentRendering")||t.is("element")&&t.getCustomProperty("dataPipeline:transparentRendering")?"":"\n\n":"":""}const hy=function(e,t){return e&&Ii(e,t,go)};const py=function(e,t,o,n){var i=o.length,r=i,s=!n;if(null==e)return!r;for(e=Object(e);i--;){var a=o[i];if(s&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++ie.model.getSelectedContent(e.model.document.selection)){return this.editor.model.change((n=>{const i=n.model.document.selection;n.setSelection(t);const r=this._insertFakeMarkersIntoSelection(n,n.model.document.selection,e),s=o(n),a=this._removeFakeMarkersInsideElement(n,s);for(const[e,t]of Object.entries(r)){a[e]||(a[e]=n.createRangeIn(s));for(const e of t)n.remove(e)}s.markers.clear();for(const[e,t]of Object.entries(a))s.markers.set(e,t);return n.setSelection(i),s}))}_pasteMarkersIntoTransformedElement(e,t){const o=this._getPasteMarkersFromRangeMap(e);return this.editor.model.change((e=>{const n=this._insertFakeMarkersElements(e,o),i=t(e),r=this._removeFakeMarkersInsideElement(e,i);for(const t of Object.values(n).flat())e.remove(t);for(const[t,o]of Object.entries(r))e.model.markers.has(t)||e.addMarker(t,{usingOperation:!0,affectsData:!0,range:o});return i}))}_pasteFragmentWithMarkers(e){const t=this._getPasteMarkersFromRangeMap(e.markers);e.markers.clear();for(const o of t)e.markers.set(o.name,o.range);return this.editor.model.insertContent(e)}_forceMarkersCopy(e,t,o={allowedActions:"all",copyPartiallySelected:!0,duplicateOnPaste:!0}){const n=this._markersToCopy.get(e);this._markersToCopy.set(e,o),t(),n?this._markersToCopy.set(e,n):this._markersToCopy.delete(e)}_isMarkerCopyable(e,t){const o=this._getMarkerClipboardConfig(e);if(!o)return!1;if(!t)return!0;const{allowedActions:n}=o;return"all"===n||n.includes(t)}_hasMarkerConfiguration(e){return!!this._getMarkerClipboardConfig(e)}_getMarkerClipboardConfig(e){const[t]=e.split(":");return this._markersToCopy.get(t)||null}_insertFakeMarkersIntoSelection(e,t,o){const n=this._getCopyableMarkersFromSelection(e,t,o);return this._insertFakeMarkersElements(e,n)}_getCopyableMarkersFromSelection(e,t,o){const n=Array.from(t.getRanges()),i=new Set(n.flatMap((t=>Array.from(e.model.markers.getMarkersIntersectingRange(t)))));return Array.from(i).filter((e=>{if(!this._isMarkerCopyable(e.name,o))return!1;const{copyPartiallySelected:t}=this._getMarkerClipboardConfig(e.name);if(!t){const t=e.getRange();return n.some((e=>e.containsRange(t,!0)))}return!0})).map((e=>({name:"dragstart"===o?this._getUniqueMarkerName(e.name):e.name,range:e.getRange()})))}_getPasteMarkersFromRangeMap(e,t=null){const{model:o}=this.editor;return(e instanceof Map?Array.from(e.entries()):Object.entries(e)).flatMap((([e,n])=>{if(!this._hasMarkerConfiguration(e))return[{name:e,range:n}];if(this._isMarkerCopyable(e,t)){const t=this._getMarkerClipboardConfig(e),i=o.markers.has(e)&&"$graveyard"===o.markers.get(e).getRange().root.rootName;return(t.duplicateOnPaste||i)&&(e=this._getUniqueMarkerName(e)),[{name:e,range:n}]}return[]}))}_insertFakeMarkersElements(e,t){const o={},n=t.flatMap((e=>{const{start:t,end:o}=e.range;return[{position:t,marker:e,type:"start"},{position:o,marker:e,type:"end"}]})).sort((({position:e},{position:t})=>e.isBefore(t)?1:-1));for(const{position:t,marker:i,type:r}of n){const n=e.createElement("$marker",{"data-name":i.name,"data-type":r});o[i.name]||(o[i.name]=[]),o[i.name].push(n),e.insert(n,t)}return o}_removeFakeMarkersInsideElement(e,t){const o=this._getAllFakeMarkersFromElement(e,t).reduce(((t,o)=>{const n=o.markerElement&&e.createPositionBefore(o.markerElement);let i=t[o.name],r=!1;if(i&&i.start&&i.end){this._getMarkerClipboardConfig(o.name).duplicateOnPaste?t[this._getUniqueMarkerName(o.name)]=t[o.name]:r=!0,i=null}return r||(t[o.name]={...i,[o.type]:n}),o.markerElement&&e.remove(o.markerElement),t}),{});return Ey(o,(o=>new lc(o.start||e.createPositionFromPath(t,[0]),o.end||e.createPositionAt(t,"end"))))}_getAllFakeMarkersFromElement(e,t){const o=Array.from(e.createRangeIn(t)).flatMap((({item:e})=>{if(!e.is("element","$marker"))return[];const t=e.getAttribute("data-name"),o=e.getAttribute("data-type");return[{markerElement:e,name:t,type:o}]})),n=[],i=[];for(const e of o){if("end"===e.type){o.some((t=>t.name===e.name&&"start"===t.type))||n.push({markerElement:null,name:e.name,type:"start"})}if("start"===e.type){o.some((t=>t.name===e.name&&"end"===t.type))||i.unshift({markerElement:null,name:e.name,type:"end"})}}return[...n,...o,...i]}_getUniqueMarkerName(e){const t=e.split(":"),o=E().substring(1,6);return 3===t.length?`${t.slice(0,2).join(":")}:${o}`:`${t.join(":")}:${o}`}}class By extends br{static get pluginName(){return"ClipboardPipeline"}static get isOfficialPlugin(){return!0}static get requires(){return[Dy]}init(){this.editor.editing.view.addObserver(sy),this._setupPasteDrop(),this._setupCopyCut()}_fireOutputTransformationEvent(e,t,o){const n=this.editor.plugins.get("ClipboardMarkersUtils");this.editor.model.enqueueChange({isUndoable:"cut"===o},(()=>{const i=n._copySelectedFragmentWithMarkers(o,t);this.fire("outputTransformation",{dataTransfer:e,content:i,method:o})}))}_setupPasteDrop(){const e=this.editor,t=e.model,o=e.editing.view,n=o.document,i=this.editor.plugins.get("ClipboardMarkersUtils");this.listenTo(n,"clipboardInput",((t,o)=>{"paste"!=o.method||e.model.canEditAt(e.model.document.selection)||t.stop()}),{priority:"highest"}),this.listenTo(n,"clipboardInput",((e,t)=>{const n=t.dataTransfer;let i;if(t.content)i=t.content;else{let e="";n.getData("text/html")?e=function(e){return e.replace(/(\s+)<\/span>/g,((e,t)=>1==t.length?" ":t)).replace(//g,"")}(n.getData("text/html")):n.getData("text/plain")&&(((r=(r=n.getData("text/plain")).replace(/&/g,"&").replace(//g,">").replace(/\r?\n\r?\n/g,"

      ").replace(/\r?\n/g,"
      ").replace(/\t/g,"    ").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

      ")||r.includes("
      "))&&(r=`

      ${r}

      `),e=r),i=this.editor.data.htmlProcessor.toView(e)}var r;const s=new v(this,"inputTransformation"),a=n.getData("application/ckeditor5-editor-id")||null;this.fire(s,{content:i,dataTransfer:n,sourceEditorId:a,targetRanges:t.targetRanges,method:t.method}),s.stop.called&&e.stop(),o.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",((e,o)=>{if(o.content.isEmpty)return;const n=this.editor.data.toModel(o.content,"$clipboardHolder");0!=n.childCount&&(e.stop(),t.change((()=>{this.fire("contentInsertion",{content:n,method:o.method,sourceEditorId:o.sourceEditorId,dataTransfer:o.dataTransfer,targetRanges:o.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((e,t)=>{t.resultRange=i._pasteFragmentWithMarkers(t.content)}),{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,o=e.editing.view.document,n=(e,o)=>{const n=o.dataTransfer;o.preventDefault(),this._fireOutputTransformationEvent(n,t.selection,e.name)};this.listenTo(o,"copy",n,{priority:"low"}),this.listenTo(o,"cut",((t,o)=>{e.model.canEditAt(e.model.document.selection)?n(t,o):o.preventDefault()}),{priority:"low"}),this.listenTo(this,"outputTransformation",((t,n)=>{const i=e.data.toView(n.content,{isClipboardPipeline:!0});o.fire("clipboardOutput",{dataTransfer:n.dataTransfer,content:i,method:n.method})}),{priority:"low"}),this.listenTo(o,"clipboardOutput",((o,n)=>{n.content.isEmpty||(n.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(n.content)),n.dataTransfer.setData("text/plain",cy(e.data.htmlProcessor.domConverter,n.content)),n.dataTransfer.setData("application/ckeditor5-editor-id",this.editor.id)),"cut"==n.method&&e.model.deleteContent(t.selection)}),{priority:"low"})}}const Sy=ti("px");class Ty extends zp{constructor(){super();const e=this.bindTemplate;this.set({isVisible:!1,left:null,top:null,width:null}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-clipboard-drop-target-line",e.if("isVisible","ck-hidden",(e=>!e))],style:{left:e.to("left",(e=>Sy(e))),top:e.to("top",(e=>Sy(e))),width:e.to("width",(e=>Sy(e)))}}})}}class Iy extends br{constructor(){super(...arguments),this.removeDropMarkerDelayed=dr((()=>this.removeDropMarker()),40),this._updateDropMarkerThrottled=Hh((e=>this._updateDropMarker(e)),40),this._reconvertMarkerThrottled=Hh((()=>{this.editor.model.markers.has("drop-target")&&this.editor.editing.reconvertMarker("drop-target")}),0),this._dropTargetLineView=new Ty,this._domEmitter=new(On()),this._scrollables=new Map}static get pluginName(){return"DragDropTarget"}static get isOfficialPlugin(){return!0}init(){this._setupDropMarker()}destroy(){this._domEmitter.stopListening();for(const{resizeObserver:e}of this._scrollables.values())e.destroy();return this._updateDropMarkerThrottled.cancel(),this.removeDropMarkerDelayed.cancel(),this._reconvertMarkerThrottled.cancel(),super.destroy()}updateDropMarker(e,t,o,n,i,r){this.removeDropMarkerDelayed.cancel();const s=Py(this.editor,e,t,o,n,i,r);if(s)return r&&r.containsRange(s)?this.removeDropMarker():void this._updateDropMarkerThrottled(s)}getFinalDropRange(e,t,o,n,i,r){const s=Py(this.editor,e,t,o,n,i,r);return this.removeDropMarker(),s}removeDropMarker(){const e=this.editor.model;this.removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),this._dropTargetLineView.isVisible=!1,e.markers.has("drop-target")&&e.change((e=>{e.removeMarker("drop-target")}))}_setupDropMarker(){const e=this.editor;e.ui.view.body.add(this._dropTargetLineView),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 this._dropTargetLineView.isVisible=!1,this._createDropTargetPosition(o);t.markerRange.isCollapsed?this._updateDropTargetLine(t.markerRange):this._dropTargetLineView.isVisible=!1}})}_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})}))}_createDropTargetPosition(e){return e.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.append("⁠",e.createElement("span"),"⁠"),t}))}_updateDropTargetLine(e){const t=this.editor.editing,o=e.start.nodeBefore,n=e.start.nodeAfter,i=e.start.parent,r=o?t.mapper.toViewElement(o):null,a=r?t.view.domConverter.mapViewToDom(r):null,l=n?t.mapper.toViewElement(n):null,c=l?t.view.domConverter.mapViewToDom(l):null,d=t.mapper.toViewElement(i);if(!d)return;const u=t.view.domConverter.mapViewToDom(d),h=this._getScrollableRect(d),{scrollX:p,scrollY:m}=s.window,g=a?new Gn(a):null,f=c?new Gn(c):null,b=new Gn(u).excludeScrollbarsAndBorders(),k=g?g.bottom:b.top,w=f?f.top:b.bottom,_=s.window.getComputedStyle(u),y=k<=w?(k+w)/2:w;if(h.topa.schema.checkChild(r,e)))){if(a.schema.checkChild(r,"$text"))return a.createRange(r);if(t)return Ry(e,zy(e,t.parent),n,i)}}}else if(a.schema.isInline(c))return Ry(e,c,n,i);if(a.schema.isBlock(c))return Ry(e,c,n,i);if(a.schema.checkChild(c,"$block")){const t=Array.from(c.getChildren()).filter((t=>t.is("element")&&!Fy(e,t)));let o=0,r=t.length;if(0==r)return a.createRange(a.createPositionAt(c,"end"));for(;o{o?(this.forceDisabled("readOnlyMode"),this._isBlockDragging=!1):this.clearForceDisabled("readOnlyMode")})),c.isAndroid&&this.forceDisabled("noAndroidSupport"),e.plugins.has("BlockToolbar")){const t=e.plugins.get("BlockToolbar").buttonView.element;this._domEmitter.listenTo(t,"dragstart",((e,t)=>this._handleBlockDragStart(t))),this._domEmitter.listenTo(s.document,"dragover",((e,t)=>this._handleBlockDragging(t))),this._domEmitter.listenTo(s.document,"drop",((e,t)=>this._handleBlockDragging(t))),this._domEmitter.listenTo(s.document,"dragend",(()=>this._handleBlockDragEnd()),{useCapture:!0}),this.isEnabled&&t.setAttribute("draggable","true"),this.on("change:isEnabled",((e,o,n)=>{t.setAttribute("draggable",n?"true":"false")}))}}destroy(){return this._domEmitter.stopListening(),super.destroy()}_handleBlockDragStart(e){if(!this.isEnabled)return;const t=this.editor.model,o=t.document.selection,n=this.editor.editing.view,i=Array.from(o.getSelectedBlocks()),r=t.createRange(t.createPositionBefore(i[0]),t.createPositionAfter(i[i.length-1]));t.change((e=>e.setSelection(r))),this._isBlockDragging=!0,n.focus(),n.getObserver(sy).onDomEvent(e)}_handleBlockDragging(e){if(!this.isEnabled||!this._isBlockDragging)return;const t=e.clientX+("ltr"==this.editor.locale.contentLanguageDirection?100:-100),o=e.clientY,n=document.elementFromPoint(t,o),i=this.editor.editing.view;n&&n.closest(".ck-editor__editable")&&i.getObserver(sy).onDomEvent({...e,type:e.type,dataTransfer:e.dataTransfer,target:n,clientX:t,clientY:o,preventDefault:()=>e.preventDefault(),stopPropagation:()=>e.stopPropagation()})}_handleBlockDragEnd(){this._isBlockDragging=!1}}var Ny=i(9262),Vy={attributes:{"data-cke":!0}};Vy.setAttributes=Xr(),Vy.insert=Yr().bind(null,"head"),Vy.domAPI=Zr(),Vy.insertStyleElement=ts();Gr()(Ny.A,Vy);Ny.A&&Ny.A.locals&&Ny.A.locals;class Ly extends br{constructor(){super(...arguments),this._clearDraggableAttributesDelayed=dr((()=>this._clearDraggableAttributes()),40),this._blockMode=!1,this._domEmitter=new(On())}static get pluginName(){return"DragDrop"}static get isOfficialPlugin(){return!0}static get requires(){return[By,M_,Iy,Oy]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,t.addObserver(sy),t.addObserver(eh),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),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)})),c.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._previewContainer&&this._previewContainer.remove(),this._domEmitter.stopListening(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,o=e.editing.view,n=o.document,i=e.plugins.get(Iy);this.listenTo(n,"dragstart",((e,o)=>{if(o.target&&o.target.is("editableElement"))return void o.preventDefault();if(this._prepareDraggedRange(o.target),!this._draggedRange)return void o.preventDefault();this._draggingUid=E(),o.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",o.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const n=t.createSelection(this._draggedRange.toRange());this.editor.plugins.get("ClipboardPipeline")._fireOutputTransformationEvent(o.dataTransfer,n,"dragstart");const{dataTransfer:i,domTarget:r,domEvent:s}=o,{clientX:a}=s;this._updatePreview({dataTransfer:i,domTarget:r,clientX:a}),o.stopPropagation(),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(n,"dragend",((e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)}),{priority:"low"}),this._domEmitter.listenTo(s.document,"dragend",(()=>{this._blockMode=!1}),{useCapture:!0}),this.listenTo(n,"dragenter",(()=>{this.isEnabled&&o.focus()})),this.listenTo(n,"dragleave",(()=>{i.removeDropMarkerDelayed()})),this.listenTo(n,"dragging",((e,t)=>{if(!this.isEnabled)return void(t.dataTransfer.dropEffect="none");const{clientX:o,clientY:n}=t.domEvent;i.updateDropMarker(t.target,t.targetRanges,o,n,this._blockMode,this._draggedRange),this._draggedRange||(t.dataTransfer.dropEffect="copy"),c.isGecko||("copy"==t.dataTransfer.effectAllowed?t.dataTransfer.dropEffect="copy":["all","copyMove"].includes(t.dataTransfer.effectAllowed)&&(t.dataTransfer.dropEffect="move")),e.stop()}),{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document,o=e.plugins.get(Iy);this.listenTo(t,"clipboardInput",((t,n)=>{if("drop"!=n.method)return;const{clientX:i,clientY:r}=n.domEvent,s=o.getFinalDropRange(n.target,n.targetRanges,i,r,this._blockMode,this._draggedRange);if(!s)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=n.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==Hy(n.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(s,!0))return this._finalizeDragging(!1),void t.stop();n.targetRanges=[e.editing.mapper.toViewRange(s)]}),{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(By);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"==Hy(t.dataTransfer),n=!t.resultRange||!t.resultRange.isCollapsed;this._finalizeDragging(n&&o)}),{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,o=t.document;this.listenTo(o,"mousedown",((n,i)=>{if(c.isAndroid||!i)return;this._clearDraggableAttributesDelayed.cancel();let r=jy(i.target);if(c.isBlink&&!e.isReadOnly&&!r&&!o.selection.isCollapsed){const e=o.selection.getSelectedElement();e&&ww(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",(()=>{c.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}))}_finalizeDragging(e){const t=this.editor,o=t.model;if(t.plugins.get(Iy).removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")){t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop")}this._draggingUid="",this._previewContainer&&(this._previewContainer.remove(),this._previewContainer=void 0),this._draggedRange&&(e&&this.isEnabled&&o.change((e=>{const t=o.createSelection(this._draggedRange);o.deleteContent(t,{doNotAutoparagraph:!0});const n=t.getFirstPosition().parent;n.isEmpty&&!o.schema.checkChild(n,"$text")&&o.schema.checkChild(n,"paragraph")&&e.insertElement("paragraph",n,0)})),this._draggedRange.detach(),this._draggedRange=null)}_prepareDraggedRange(e){const t=this.editor,o=t.model,n=o.document.selection,i=e?jy(e):null;if(i){const e=t.editing.mapper.toModelElement(i);if(this._draggedRange=vc.fromRange(o.createRangeOn(e)),this._blockMode=o.schema.isBlock(e),t.plugins.has("WidgetToolbarRepository")){t.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}return}if(n.isCollapsed&&!n.getFirstPosition().parent.isEmpty)return;const r=Array.from(n.getSelectedBlocks()),s=n.getFirstRange();if(0==r.length)return void(this._draggedRange=vc.fromRange(s));const a=qy(o,r);if(r.length>1)this._draggedRange=vc.fromRange(a),this._blockMode=!0;else if(1==r.length){const e=s.start.isTouching(a.start)&&s.end.isTouching(a.end);this._draggedRange=vc.fromRange(e?a:s),this._blockMode=e}o.change((e=>e.setSelection(this._draggedRange.toRange())))}_updatePreview({dataTransfer:e,domTarget:t,clientX:o}){const n=this.editor.editing.view,i=n.document.selection.editableElement,r=n.domConverter.mapViewToDom(i),a=s.window.getComputedStyle(r);this._previewContainer?this._previewContainer.firstElementChild&&this._previewContainer.removeChild(this._previewContainer.firstElementChild):(this._previewContainer=ve(s.document,"div",{style:"position: fixed; left: -999999px;"}),s.document.body.appendChild(this._previewContainer));const l=new Gn(r);if(r.contains(t))return;const d=parseFloat(a.paddingLeft),u=ve(s.document,"div");u.className="ck ck-content",u.style.width=a.width,u.style.paddingLeft=`${l.left-o+d}px`,c.isiOS&&(u.style.backgroundColor="white"),n.domConverter.setContentOf(u,e.getData("text/html")),e.setDragImage(u,0,0),this._previewContainer.appendChild(u)}}function Hy(e){return c.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function jy(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(ww);if(ww(e))return e;const t=e.findAncestor((e=>ww(e)||e.is("editableElement")));return ww(t)?t:null}function qy(e,t){const o=t[0],n=t[t.length-1],i=o.getCommonAncestor(n),r=e.createPositionBefore(o),s=e.createPositionAfter(n);if(i&&i.is("element")&&!e.schema.isLimit(i)){const t=e.createRangeOn(i),o=r.isTouching(t.start),n=s.isTouching(t.end);if(o&&n)return qy(e,[i])}return e.createRange(r,s)}class $y extends br{static get pluginName(){return"PastePlainText"}static get isOfficialPlugin(){return!0}static get requires(){return[By]}init(){const e=this.editor,t=e.model,o=e.editing.view,n=t.document.selection;o.addObserver(sy),e.plugins.get(By).on("contentInsertion",((e,o)=>{(function(e,t){let o=t.createRangeIn(e);if(1==e.childCount){const n=e.getChild(0);n.is("element")&&t.schema.isBlock(n)&&!t.schema.isObject(n)&&!t.schema.isLimit(n)&&(o=t.createRangeIn(n))}for(const e of o.getItems()){if(!t.schema.isInline(e))return!1;if(Array.from(e.getAttributeKeys()).find((e=>t.schema.getAttributeProperties(e).isFormatting)))return!1}return!0})(o.content,t)&&t.change((e=>{const i=Array.from(n.getAttributes()).filter((([e])=>t.schema.getAttributeProperties(e).isFormatting));n.isCollapsed||t.deleteContent(n,{doNotAutoparagraph:!0}),i.push(...n.getAttributes());const r=e.createRangeIn(o.content);for(const o of r.getItems())for(const n of i)t.schema.checkAttribute(o,n[0])&&e.setAttribute(n[0],n[1],o)}))}))}}class Uy extends br{static get pluginName(){return"Clipboard"}static get isOfficialPlugin(){return!0}static get requires(){return[Dy,By,Ly,$y]}init(){const e=this.editor,t=this.editor.t;e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Copy selected content"),keystroke:"CTRL+C"},{label:t("Paste content"),keystroke:"CTRL+V"},{label:t("Paste content as plain text"),keystroke:"CTRL+SHIFT+V"}]})}}class Wy extends wr{constructor(e){super(e),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this._isEnabledBasedOnSelection=!1,this.listenTo(e.data,"set",((e,t)=>{t[1]={...t[1]};const o=t[1];o.batchType||(o.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(e.data,"set",((e,t)=>{t[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}get createdBatches(){return this._createdBatches}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 n=this.editor.model,i=n.document,r=[],s=e.map((e=>e.getTransformedByOperations(o))),a=s.flat();for(const e of s){const t=e.filter((e=>e.root!=i.graveyard)).filter((e=>!Ky(e,a)));t.length&&(Gy(t),r.push(t[0]))}r.length&&n.change((e=>{e.setSelection(r,{backward:t})}))}_undo(e,t){const o=this.editor.model,n=o.document;this._createdBatches.add(t);const i=e.operations.slice().filter((e=>e.isDocumentOperation));i.reverse();for(const e of i){const i=e.baseVersion+1,r=Array.from(n.history.getOperations(i)),s=ru([e.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(let i of s){const r=i.affectedSelectable;r&&!o.canEditAt(r)&&(i=new Zd(i.baseVersion)),t.addOperation(i),o.applyOperation(i),n.history.setOperationAsUndone(e,i)}}}}function Gy(e){e.sort(((e,t)=>e.start.isBefore(t.start)?-1:1));for(let t=1;tt!==e&&t.containsRange(e,!0)))}class Zy extends Wy{execute(e=null){const t=e?this._stack.findIndex((t=>t.batch==e)):this._stack.length-1,o=this._stack.splice(t,1)[0],n=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(n,(()=>{this._undo(o.batch,n);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,n),this.refresh()}}class Jy extends Wy{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(t,(()=>{const o=e.batch.operations[e.batch.operations.length-1].baseVersion+1,n=this.editor.model.document.history.getOperations(o);this._restoreSelection(e.selection.ranges,e.selection.isBackward,n),this._undo(e.batch,t)})),this.refresh()}}class Yy extends br{constructor(){super(...arguments),this._batchRegistry=new WeakSet}static get pluginName(){return"UndoEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t;this._undoCommand=new Zy(e),this._redoCommand=new Jy(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 n=o.batch,i=this._redoCommand.createdBatches.has(n),r=this._undoCommand.createdBatches.has(n);this._batchRegistry.has(n)||(this._batchRegistry.add(n),n.isUndoable&&(i?this._undoCommand.addBatch(n):r||(this._undoCommand.addBatch(n),this._redoCommand.clearStack())))}),{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"),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Undo"),keystroke:"CTRL+Z"},{label:t("Redo"),keystroke:[["CTRL+Y"],["CTRL+SHIFT+Z"]]}]})}}class Qy extends br{static get pluginName(){return"UndoUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale,o=e.t,n="ltr"==t.uiLanguageDirection?up.undo:up.redo,i="ltr"==t.uiLanguageDirection?up.redo:up.undo;this._addButtonsToFactory("undo",o("Undo"),"CTRL+Z",n),this._addButtonsToFactory("redo",o("Redo"),"CTRL+Y",i)}_addButtonsToFactory(e,t,o,n){const i=this.editor;i.ui.componentFactory.add(e,(()=>{const i=this._createButton(Kp,e,t,o,n);return i.set({tooltip:!0}),i})),i.ui.componentFactory.add("menuBar:"+e,(()=>this._createButton(Em,e,t,o,n)))}_createButton(e,t,o,n,i){const r=this.editor,s=r.locale,a=r.commands.get(t),l=new e(s);return l.set({label:o,icon:i,keystroke:n}),l.bind("isEnabled").to(a,"isEnabled"),this.listenTo(l,"execute",(()=>{r.execute(t),r.editing.view.focus()})),l}}class Xy extends br{static get requires(){return[Yy,Qy]}static get pluginName(){return"Undo"}static get isOfficialPlugin(){return!0}}function eA(e){return e.createContainerElement("figure",{class:"image"},[e.createEmptyElement("img"),e.createSlot("children")])}function tA(e,t){const o=e.plugins.get("ImageUtils"),n=e.plugins.has("ImageInlineEditing")&&e.plugins.has("ImageBlockEditing");return e=>{if(!o.isInlineImageView(e))return null;if(!n)return i(e);return("block"==e.getStyle("display")||e.findAncestor(o.isBlockImageView)?"imageBlock":"imageInline")!==t?null:i(e)};function i(e){const t={name:!0};return e.hasAttribute("src")&&(t.attributes=["src"]),t}}function oA(e,t){const o=or(t.getSelectedBlocks());return!o||e.isObject(o)||o.isEmpty&&"listItem"!=o.name?"imageBlock":"imageInline"}function nA(e){return e&&e.endsWith("px")?parseInt(e):null}function iA(e){const t=nA(e.getStyle("width")),o=nA(e.getStyle("height"));return!(!t||!o)}const rA=/^(image|image-inline)$/;class sA extends br{constructor(){super(...arguments),this._domEmitter=new(On())}static get pluginName(){return"ImageUtils"}static get isOfficialPlugin(){return!0}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,o=null,n={}){const i=this.editor,r=i.model,s=r.document.selection,a=aA(i,t||s,o);e={...Object.fromEntries(s.getAttributes()),...e};for(const t in e)r.schema.checkAttribute(a,t)||delete e[t];return r.change((o=>{const{setImageSizes:i=!0}=n,s=o.createElement(a,e);return r.insertObject(s,t,null,{setSelection:"on",findOptimalPosition:t||"imageInline"==a?void 0:"auto"}),s.parent?(i&&this.setImageNaturalSizeAttributes(s),s):null}))}setImageNaturalSizeAttributes(e){const t=e.getAttribute("src");t&&(e.getAttribute("width")||e.getAttribute("height")||this.editor.model.change((o=>{const n=new s.window.Image;this._domEmitter.listenTo(n,"load",(()=>{e.getAttribute("width")||e.getAttribute("height")||this.editor.model.enqueueChange(o.batch,(t=>{t.setAttribute("width",n.naturalWidth,e),t.setAttribute("height",n.naturalHeight,e)})),this._domEmitter.stopListening(n,"load")})),n.src=t})))}getClosestSelectedImageWidget(e){const t=e.getFirstPosition();if(!t)return null;const o=e.getSelectedElement();if(o&&this.isImageWidget(o))return o;let n=t.parent;for(;n;){if(n.is("element")&&this.isImageWidget(n))return n;n=n.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}getImageWidgetFromImageView(e){return e.findAncestor({classes:rA})}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){const o=aA(e,t,null);if("imageBlock"==o){const o=function(e,t){const o=xw(e,t),n=o.start.parent;if(n.isEmpty&&!n.is("element","$root"))return n.parent;return n}(t,e.model);if(e.model.schema.checkChild(o,"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,o){t.setCustomProperty("image",!0,e);return _w(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${o}`:o}})}isImageWidget(e){return!!e.getCustomProperty("image")&&ww(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:o}of t.createRangeIn(e))if(this.isInlineImageView(o))return o}destroy(){return this._domEmitter.stopListening(),super.destroy()}}function aA(e,t,o){const n=e.model.schema,i=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?o||("inline"===i?"imageInline":"auto"!==i?"imageBlock":t.is("selection")?oA(n,t):n.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}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 lA extends wr{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,o=t.plugins.get("ImageUtils"),n=t.model,i=o.getClosestSelectedImageElement(n.document.selection);n.change((t=>{t.setAttribute("alt",e.newValue,i)}))}}class cA extends br{static get requires(){return[sA]}static get pluginName(){return"ImageTextAlternativeEditing"}static get isOfficialPlugin(){return!0}init(){this.editor.commands.add("imageTextAlternative",new lA(this.editor))}}var dA=i(8429),uA={attributes:{"data-cke":!0}};uA.setAttributes=Xr(),uA.insert=Yr().bind(null,"head"),uA.domAPI=Zr(),uA.insertStyleElement=ts();Gr()(dA.A,uA);dA.A&&dA.A.locals&&dA.A.locals;var hA=i(871),pA={attributes:{"data-cke":!0}};pA.setAttributes=Xr(),pA.insert=Yr().bind(null,"head"),pA.domAPI=Zr(),pA.insertStyleElement=ts();Gr()(hA.A,pA);hA.A&&hA.A.locals&&hA.A.locals;class mA extends zp{constructor(e){super(e);const t=this.locale.t;this.focusTracker=new nr,this.keystrokes=new ar,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(t("Save"),up.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(t("Cancel"),up.cancel,"ck-button-cancel","cancel"),this._focusables=new hp,this._focusCycler=new Xp({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]})}render(){super.render(),this.keystrokes.listenTo(this.element),Vp({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(e,t,o,n){const i=new Kp(this.locale);return i.set({label:e,icon:t,tooltip:!0}),i.extendTemplate({attributes:{class:o}}),n&&i.delegate("execute").to(this,n),i}_createLabeledInputView(){const e=this.locale.t,t=new dg(this.locale,Ef);return t.label=e("Text alternative"),t}}function gA(e){const t=e.editing.view,o=Wg.defaultPositions,n=e.plugins.get("ImageUtils");return{target:t.domConverter.mapViewToDom(n.getClosestSelectedImageWidget(t.document.selection)),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast,o.viewportStickyNorth]}}class fA extends br{static get requires(){return[kk]}static get pluginName(){return"ImageTextAlternativeUI"}static get isOfficialPlugin(){return!0}init(){this._createButton()}destroy(){super.destroy(),this._form&&this._form.destroy()}_createButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("imageTextAlternative",(o=>{const n=e.commands.get("imageTextAlternative"),i=new Kp(o);return i.set({label:t("Change image text alternative"),icon:up.textAlternative,tooltip:!0}),i.bind("isEnabled").to(n,"isEnabled"),i.bind("isOn").to(n,"value",(e=>!!e)),this.listenTo(i,"execute",(()=>{this._showForm()})),i}))}_createForm(){const e=this.editor,t=e.editing.view.document,o=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(Np(mA))(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",(()=>{o.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 o=gA(e);t.updatePosition(o)}}(e):this._hideForm(!0)})),Op({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;this._form||this._createForm();const e=this.editor,t=e.commands.get("imageTextAlternative"),o=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:gA(e)}),o.fieldView.value=o.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e=!1){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&&this._balloon.visibleView===this._form}get _isInBalloon(){return!!this._balloon&&this._balloon.hasView(this._form)}}class bA extends br{static get requires(){return[cA,fA]}static get pluginName(){return"ImageTextAlternative"}static get isOfficialPlugin(){return!0}}function kA(e,t){const o=(t,o,n)=>{if(!n.consumable.consume(o.item,t.name))return;const i=n.writer,r=n.mapper.toViewElement(o.item),s=e.findViewImgElement(r);null===o.attributeNewValue?(i.removeAttribute("srcset",s),i.removeAttribute("sizes",s)):o.attributeNewValue&&(i.setAttribute("srcset",o.attributeNewValue,s),i.setAttribute("sizes","100vw",s))};return e=>{e.on(`attribute:srcset:${t}`,o)}}function wA(e,t,o){const n=(t,o,n)=>{if(!n.consumable.consume(o.item,t.name))return;const i=n.writer,r=n.mapper.toViewElement(o.item),s=e.findViewImgElement(r);i.setAttribute(o.attributeKey,o.attributeNewValue||"",s)};return e=>{e.on(`attribute:${o}:${t}`,n)}}class _A extends Xa{observe(e){this.listenTo(e,"load",((e,t)=>{const o=t.target;this.checkShouldIgnoreEventFromTarget(o)||"IMG"==o.tagName&&this._fireEvents(t)}),{useCapture:!0})}stopObserving(e){this.stopListening(e)}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class yA extends wr{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&T("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&T("image-inline-plugin-required")}refresh(){const e=this.editor.plugins.get("ImageUtils");this.isEnabled=e.isImageAllowed()}execute(e){const t=Si(e.source),o=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(o.getAttributes());t.forEach(((t,r)=>{const s=o.getSelectedElement();if("string"==typeof t&&(t={src:t}),r&&s&&n.isImage(s)){const o=this.editor.model.createPositionAfter(s);n.insertImage({...t,...i},o,e.imageType)}else e.breakBlock?n.insertImage({...t,...i},o.getFirstPosition(),e.imageType):n.insertImage({...t,...i},null,e.imageType)}))}}class AA extends wr{constructor(e){super(e),this.decorate("cleanupImage")}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=this.editor.model.document.selection.getSelectedElement();this.isEnabled=e.isImage(t),this.value=this.isEnabled?t.getAttribute("src"):null}execute(e){const t=this.editor.model.document.selection.getSelectedElement(),o=this.editor.plugins.get("ImageUtils");this.editor.model.change((n=>{n.setAttribute("src",e.source,t),this.cleanupImage(n,t),o.setImageNaturalSizeAttributes(t)}))}cleanupImage(e,t){e.removeAttribute("srcset",t),e.removeAttribute("sizes",t),e.removeAttribute("sources",t),e.removeAttribute("width",t),e.removeAttribute("height",t),e.removeAttribute("alt",t)}}class CA extends br{static get requires(){return[sA]}static get pluginName(){return"ImageEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(_A),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:"srcset"});const o=new yA(e),n=new AA(e);e.commands.add("insertImage",o),e.commands.add("replaceImageSource",n),e.commands.add("imageInsert",o)}}class vA extends br{static get requires(){return[sA]}static get pluginName(){return"ImageSizeAttributes"}static get isOfficialPlugin(){return!0}afterInit(){this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline")}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:["width","height"]}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:["width","height"]})}_registerConverters(e){const t=this.editor,o=t.plugins.get("ImageUtils"),n="imageBlock"===e?"figure":"img";function i(t,n,i,r,s=!1){t.on(`attribute:${n}:${e}`,((t,n,a)=>{if(!a.consumable.consume(n.item,t.name))return;const l=a.writer,c=a.mapper.toViewElement(n.item),d=o.findViewImgElement(c);null!==n.attributeNewValue?l.setAttribute(i,n.attributeNewValue,d):l.removeAttribute(i,d);const u=n.item.getAttribute("width"),h=n.item.getAttribute("height"),p=u&&h;if(p&&s&&l.setAttribute("loading","lazy",d),n.item.hasAttribute("sources"))return;const m=n.item.hasAttribute("resizedWidth");("imageInline"!==e||m||r)&&p&&l.setStyle("aspect-ratio",`${u}/${h}`,d)}))}t.conversion.for("upcast").attributeToAttribute({view:{name:n,styles:{width:/.+/}},model:{key:"width",value:e=>iA(e)?nA(e.getStyle("width")):null}}).attributeToAttribute({view:{name:n,key:"width"},model:"width"}).attributeToAttribute({view:{name:n,styles:{height:/.+/}},model:{key:"height",value:e=>iA(e)?nA(e.getStyle("height")):null}}).attributeToAttribute({view:{name:n,key:"height"},model:"height"}),t.conversion.for("editingDowncast").add((e=>{i(e,"width","width",!0,!0),i(e,"height","height",!0,!0)})),t.conversion.for("dataDowncast").add((e=>{i(e,"width","width",!1),i(e,"height","height",!1)}))}}class xA extends wr{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(e={}){const t=this.editor,o=this.editor.model,n=t.plugins.get("ImageUtils"),i=n.getClosestSelectedImageElement(o.document.selection),r=Object.fromEntries(i.getAttributes());return r.src||r.uploadId?o.change((t=>{const{setImageSizes:s=!0}=e,a=Array.from(o.markers).filter((e=>e.getRange().containsItem(i))),l=n.insertImage(r,o.createSelection(i,"on"),this._modelElementName,{setImageSizes:s});if(!l)return null;const c=t.createRangeOn(l);for(const e of a){const o=e.getRange(),n="$graveyard"!=o.root.rootName?o.getJoined(c,!0):c;t.updateMarker(e,{range:n})}return{oldElement:i,newElement:l}})):null}}var EA=i(1091),DA={attributes:{"data-cke":!0}};DA.setAttributes=Xr(),DA.insert=Yr().bind(null,"head"),DA.domAPI=Zr(),DA.insertStyleElement=ts();Gr()(EA.A,DA);EA.A&&EA.A.locals&&EA.A.locals;class BA extends br{static get requires(){return[sA]}static get pluginName(){return"ImagePlaceholder"}static get isOfficialPlugin(){return!0}afterInit(){this._setupSchema(),this._setupConversion(),this._setupLoadListener()}_setupSchema(){const e=this.editor.model.schema;e.isRegistered("imageBlock")&&e.extend("imageBlock",{allowAttributes:["placeholder"]}),e.isRegistered("imageInline")&&e.extend("imageInline",{allowAttributes:["placeholder"]})}_setupConversion(){const e=this.editor,t=e.conversion,o=e.plugins.get("ImageUtils");t.for("editingDowncast").add((e=>{e.on("attribute:placeholder",((e,t,n)=>{if(!n.consumable.test(t.item,e.name))return;if(!t.item.is("element","imageBlock")&&!t.item.is("element","imageInline"))return;n.consumable.consume(t.item,e.name);const i=n.writer,r=n.mapper.toViewElement(t.item),s=o.findViewImgElement(r);t.attributeNewValue?(i.addClass("image_placeholder",s),i.setStyle("background-image",`url(${t.attributeNewValue})`,s),i.setCustomProperty("editingPipeline:doNotReuseOnce",!0,s)):(i.removeClass("image_placeholder",s),i.removeStyle("background-image",s))}))}))}_setupLoadListener(){const e=this.editor,t=e.model,o=e.editing,n=o.view,i=e.plugins.get("ImageUtils");n.addObserver(_A),this.listenTo(n.document,"imageLoaded",((e,r)=>{const s=n.domConverter.mapDomToView(r.target);if(!s)return;const a=i.getImageWidgetFromImageView(s);if(!a)return;const l=o.mapper.toModelElement(a);l&&l.hasAttribute("placeholder")&&t.enqueueChange({isUndoable:!1},(e=>{e.removeAttribute("placeholder",l)}))}))}}class SA extends br{static get requires(){return[CA,vA,sA,BA,By]}static get pluginName(){return"ImageBlockEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new xA(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,o=e.conversion,n=e.plugins.get("ImageUtils");o.for("dataDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:t})=>eA(t)}),o.for("editingDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:o})=>n.toImageWidget(eA(o),o,t("image widget"))}),o.for("downcast").add(wA(n,"imageBlock","src")).add(wA(n,"imageBlock","alt")).add(kA(n,"imageBlock")),o.for("upcast").elementToElement({view:tA(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",e.hasAttribute("src")?{src:e.getAttribute("src")}:void 0)}).add(function(e){const t=(t,o,n)=>{if(!n.consumable.test(o.viewItem,{name:!0,classes:"image"}))return;const i=e.findViewImgElement(o.viewItem);if(!i||!n.consumable.test(i,{name:!0}))return;n.consumable.consume(o.viewItem,{name:!0,classes:"image"});const r=or(n.convertItem(i,o.modelCursor).modelRange.getItems());r?(n.convertChildren(o.viewItem,r),n.updateConversionResult(r,o)):n.consumable.revert(o.viewItem,{name:!0,classes:"image"})};return e=>{e.on("element:figure",t)}}(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,o=e.editing.view,n=e.plugins.get("ImageUtils"),i=e.plugins.get("ClipboardPipeline");this.listenTo(i,"inputTransformation",((i,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isInlineImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageBlock"===oA(t.schema,l)){const e=new oh(o.document),t=s.map((t=>e.createElement("figure",{class:"image"},t)));r.content=e.createDocumentFragment(t)}})),this.listenTo(i,"contentInsertion",((e,o)=>{"paste"===o.method&&t.change((e=>{const t=e.createRangeIn(o.content);for(const e of t.getItems())e.is("element","imageBlock")&&n.setImageNaturalSizeAttributes(e)}))}))}}var TA=i(1545),IA={attributes:{"data-cke":!0}};IA.setAttributes=Xr(),IA.insert=Yr().bind(null,"head"),IA.domAPI=Zr(),IA.insertStyleElement=ts();Gr()(TA.A,IA);TA.A&&TA.A.locals&&TA.A.locals;class PA extends zp{constructor(e,t=[]){super(e),this.focusTracker=new nr,this.keystrokes=new ar,this._focusables=new hp,this.children=this.createCollection(),this._focusCycler=new Xp({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});for(const e of t)this.children.add(e),this._focusables.add(e),e instanceof Gm&&this._focusables.addMany(e.children);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:-1},children:this.children})}render(){super.render(),Vp({view:this});for(const e of this._focusables)this.focusTracker.add(e.element);this.keystrokes.listenTo(this.element);const e=e=>e.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}}class FA extends br{static get pluginName(){return"ImageInsertUI"}static get isOfficialPlugin(){return!0}static get requires(){return[sA]}constructor(e){super(e),this._integrations=new Map,e.config.define("image.insert.integrations",["upload","assetManager","url"])}init(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("ImageUtils");this.set("isImageSelected",!1),this.listenTo(e.model.document,"change",(()=>{this.isImageSelected=o.isImage(t.getSelectedElement())}));const n=e=>this._createToolbarComponent(e);e.ui.componentFactory.add("insertImage",n),e.ui.componentFactory.add("imageInsert",n),e.ui.componentFactory.add("menuBar:insertImage",(e=>this._createMenuBarComponent(e)))}registerIntegration({name:e,observable:t,buttonViewCreator:o,formViewCreator:n,menuBarButtonViewCreator:i,requiresForm:r=!1,override:s=!1}){this._integrations.has(e)&&!s&&T("image-insert-integration-exists",{name:e}),this._integrations.set(e,{observable:t,buttonViewCreator:o,menuBarButtonViewCreator:i,formViewCreator:n,requiresForm:r})}_createToolbarComponent(e){const t=this.editor,o=e.t,n=this._prepareIntegrations();if(!n.length)return null;let i;const r=n[0];if(1==n.length){if(!r.requiresForm)return r.buttonViewCreator(!0);i=r.buttonViewCreator(!0)}else{const t=r.buttonViewCreator(!1);i=new pf(e,t),i.tooltip=!0,i.bind("label").to(this,"isImageSelected",(e=>o(e?"Replace image":"Insert image")))}const s=this.dropdownView=kf(e,i),a=n.map((({observable:e})=>"function"==typeof e?e():e));return s.bind("isEnabled").toMany(a,"isEnabled",((...e)=>e.some((e=>e)))),s.once("change:isOpen",(()=>{const e=n.flatMap((({formViewCreator:e})=>e(1==n.length))),o=new PA(t.locale,e);s.panelView.children.add(o)})),s}_createMenuBarComponent(e){const t=e.t,o=this._prepareIntegrations();if(!o.length)return null;const n=o.flatMap((({menuBarButtonViewCreator:e})=>e(1==o.length))),i=new Qk(e),r=new Xk(e);i.panelView.children.add(r),i.buttonView.set({icon:up.image,label:t("Image")});for(const t of n){const o=new jb(e,i);o.children.add(t),r.items.add(o),t.delegate("execute").to(i)}return i}_prepareIntegrations(){const e=this.editor.config.get("image.insert.integrations"),t=[];if(!e.length)return T("image-insert-integrations-not-specified"),t;for(const o of e)this._integrations.has(o)?t.push(this._integrations.get(o)):["upload","assetManager","url"].includes(o)||T("image-insert-unknown-integration",{item:o});return t.length||T("image-insert-integrations-not-registered"),t}}var RA=i(8574),MA={attributes:{"data-cke":!0}};MA.setAttributes=Xr(),MA.insert=Yr().bind(null,"head"),MA.domAPI=Zr(),MA.insertStyleElement=ts();Gr()(RA.A,MA);RA.A&&RA.A.locals&&RA.A.locals;class zA extends br{static get requires(){return[CA,vA,sA,BA,By]}static get pluginName(){return"ImageInlineEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.model.schema.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"],disallowIn:["caption"]}),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new xA(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,o=e.conversion,n=e.plugins.get("ImageUtils");o.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),o.for("editingDowncast").elementToStructure({model:"imageInline",view:(e,{writer:o})=>n.toImageWidget(function(e){return e.createContainerElement("span",{class:"image-inline"},e.createEmptyElement("img"))}(o),o,t("image widget"))}),o.for("downcast").add(wA(n,"imageInline","src")).add(wA(n,"imageInline","alt")).add(kA(n,"imageInline")),o.for("upcast").elementToElement({view:tA(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",e.hasAttribute("src")?{src:e.getAttribute("src")}:void 0)})}_setupClipboardIntegration(){const e=this.editor,t=e.model,o=e.editing.view,n=e.plugins.get("ImageUtils"),i=e.plugins.get("ClipboardPipeline");this.listenTo(i,"inputTransformation",((i,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(n.isBlockImageView))return;a=r.targetRanges?e.editing.mapper.toModelRange(r.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageInline"===oA(t.schema,l)){const e=new oh(o.document),t=s.map((t=>1===t.childCount?(Array.from(t.getAttributes()).forEach((o=>e.setAttribute(...o,n.findViewImgElement(t)))),t.getChild(0)):t));r.content=e.createDocumentFragment(t)}})),this.listenTo(i,"contentInsertion",((e,o)=>{"paste"===o.method&&t.change((e=>{const t=e.createRangeIn(o.content);for(const e of t.getItems())e.is("element","imageInline")&&n.setImageNaturalSizeAttributes(e)}))}))}}class OA extends br{static get pluginName(){return"ImageCaptionUtils"}static get isOfficialPlugin(){return!0}static get requires(){return[sA]}getCaptionFromImageModelElement(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}getCaptionFromModelSelection(e){const t=this.editor.plugins.get("ImageUtils"),o=e.getFirstPosition().findAncestor("caption");return o&&t.isBlockImage(o.parent)?o:null}matchImageCaptionViewElement(e){const t=this.editor.plugins.get("ImageUtils");return"figcaption"==e.name&&t.isBlockImageView(e.parent)?{name:!0}:null}}class NA extends wr{refresh(){const e=this.editor,t=e.plugins.get("ImageCaptionUtils"),o=e.plugins.get("ImageUtils");if(!e.plugins.has(SA))return this.isEnabled=!1,void(this.value=!1);const n=e.model.document.selection,i=n.getSelectedElement();if(!i){const e=t.getCaptionFromModelSelection(n);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=o.isImage(i),this.isEnabled?this.value=!!t.getCaptionFromImageModelElement(i):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 o=this.editor.model.document.selection,n=this.editor.plugins.get("ImageCaptionEditing"),i=this.editor.plugins.get("ImageUtils");let r=o.getSelectedElement();const s=n._getSavedCaption(r);i.isInlineImage(r)&&(this.editor.execute("imageTypeBlock"),r=o.getSelectedElement());const a=s||e.createElement("caption");e.append(a,r),t&&e.setSelection(a,"in")}_hideImageCaption(e){const t=this.editor,o=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),i=t.plugins.get("ImageCaptionUtils");let r,s=o.getSelectedElement();s?r=i.getCaptionFromImageModelElement(s):(r=i.getCaptionFromModelSelection(o),s=r.parent),n._saveCaption(s,r),e.setSelection(s,"on"),e.remove(r)}}class VA extends br{static get requires(){return[sA,OA]}static get pluginName(){return"ImageCaptionEditing"}static get isOfficialPlugin(){return!0}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 NA(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const e=this.editor,t=e.editing.view,o=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils"),i=e.t;e.conversion.for("upcast").elementToElement({view:e=>n.matchImageCaptionViewElement(e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>o.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:n})=>{if(!o.isBlockImage(e.parent))return null;const r=n.createEditableElement("figcaption");n.setCustomProperty("imageCaption",!0,r),r.placeholder=i("Enter image caption"),ss({view:t,element:r,keepOnFocus:!0});const s=e.parent.getAttribute("alt");return vw(r,n,{label:s?i("Caption for image: %0",[s]):i("Caption for the image")})}})}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),o=e.plugins.get("ImageCaptionUtils"),n=e.commands.get("imageTypeInline"),i=e.commands.get("imageTypeBlock"),r=e=>{if(!e.return)return;const{oldElement:n,newElement:i}=e.return;if(!n)return;if(t.isBlockImage(n)){const e=o.getCaptionFromImageModelElement(n);if(e)return void this._saveCaption(i,e)}const r=this._getSavedCaption(n);r&&this._saveCaption(i,r)};n&&this.listenTo(n,"execute",r,{priority:"low"}),i&&this.listenTo(i,"execute",r,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Fc.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}_registerCaptionReconversion(){const e=this.editor,t=e.model,o=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils");t.document.on("change:data",(()=>{const i=t.document.differ.getChanges();for(const t of i){if("alt"!==t.attributeKey)continue;const i=t.range.start.nodeAfter;if(o.isBlockImage(i)){const t=n.getCaptionFromImageModelElement(i);if(!t)return;e.editing.reconvertItem(t)}}}))}}class LA extends br{static get requires(){return[OA]}static get pluginName(){return"ImageCaptionUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.editing.view,o=e.plugins.get("ImageCaptionUtils"),n=e.t;e.ui.componentFactory.add("toggleImageCaption",(i=>{const r=e.commands.get("toggleImageCaption"),s=new Kp(i);return s.set({icon:up.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.bind("label").to(r,"value",(e=>n(e?"Toggle caption off":"Toggle caption on"))),this.listenTo(s,"execute",(()=>{e.execute("toggleImageCaption",{focusCaptionOnShow:!0});const n=o.getCaptionFromModelSelection(e.model.document.selection);if(n){const o=e.editing.mapper.toViewElement(n);t.scrollToTheSelection(),t.change((e=>{e.addClass("image__caption_highlighted",o)}))}e.editing.view.focus()})),s}))}}var HA=i(3038),jA={attributes:{"data-cke":!0}};jA.setAttributes=Xr(),jA.insert=Yr().bind(null,"head"),jA.domAPI=Zr(),jA.insertStyleElement=ts();Gr()(HA.A,jA);HA.A&&HA.A.locals&&HA.A.locals;function qA(e){const t=e.map((e=>e.replace("+","\\+")));return new RegExp(`^image\\/(${t.join("|")})$`)}function $A(e){return new Promise(((t,o)=>{const n=e.getAttribute("src");fetch(n).then((e=>e.blob())).then((e=>{const o=UA(e,n),i=o.replace("image/",""),r=new File([e],`image.${i}`,{type:o});t(r)})).catch((e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise(((t,o)=>{const n=s.document.createElement("img");n.addEventListener("load",(()=>{const e=s.document.createElement("canvas");e.width=n.width,e.height=n.height;e.getContext("2d").drawImage(n,0,0),e.toBlob((e=>e?t(e):o()))})),n.addEventListener("error",(()=>o())),n.src=e}))}(e).then((t=>{const o=UA(t,e),n=o.replace("image/","");return new File([t],`image.${n}`,{type:o})}))}(n).then(t).catch(o):o(e)))}))}function UA(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class WA extends br{static get pluginName(){return"ImageUploadUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("uploadImage",(()=>this._createToolbarButton())),e.ui.componentFactory.add("imageUpload",(()=>this._createToolbarButton())),e.ui.componentFactory.add("menuBar:uploadImage",(()=>this._createMenuBarButton("standalone"))),e.plugins.has("ImageInsertUI")&&e.plugins.get("ImageInsertUI").registerIntegration({name:"upload",observable:()=>e.commands.get("uploadImage"),buttonViewCreator:()=>this._createToolbarButton(),formViewCreator:()=>this._createDropdownButton(),menuBarButtonViewCreator:e=>this._createMenuBarButton(e?"insertOnly":"insertNested")})}_createButton(e){const t=this.editor,o=t.locale,n=t.commands.get("uploadImage"),i=t.config.get("image.upload.types"),r=qA(i),s=new e(t.locale),a=o.t;return s.set({acceptedType:i.map((e=>`image/${e}`)).join(","),allowMultipleFiles:!0,label:a("Upload from computer"),icon:up.imageUpload}),s.bind("isEnabled").to(n),s.on("done",((e,o)=>{const n=Array.from(o).filter((e=>r.test(e.type)));n.length&&(t.execute("uploadImage",{file:n}),t.editing.view.focus())})),s}_createToolbarButton(){const e=this.editor.locale.t,t=this.editor.plugins.get("ImageInsertUI"),o=this.editor.commands.get("uploadImage"),n=this._createButton(Lm);return n.tooltip=!0,n.bind("label").to(t,"isImageSelected",o,"isAccessAllowed",((t,o)=>e(o?t?"Replace image from computer":"Upload image from computer":"You have no image upload permissions."))),n}_createDropdownButton(){const e=this.editor.locale.t,t=this.editor.plugins.get("ImageInsertUI"),o=this._createButton(Lm);return o.withText=!0,o.bind("label").to(t,"isImageSelected",(t=>e(t?"Replace from computer":"Upload from computer"))),o.on("execute",(()=>{t.dropdownView.isOpen=!1})),o}_createMenuBarButton(e){const t=this.editor.locale.t,o=this._createButton(tw);switch(o.withText=!0,e){case"standalone":o.label=t("Image from computer");break;case"insertOnly":o.label=t("Image");break;case"insertNested":o.label=t("From computer")}return o}}var GA=i(7504),KA={attributes:{"data-cke":!0}};KA.setAttributes=Xr(),KA.insert=Yr().bind(null,"head"),KA.domAPI=Zr(),KA.insertStyleElement=ts();Gr()(GA.A,KA);GA.A&&GA.A.locals&&GA.A.locals;var ZA=i(1230),JA={attributes:{"data-cke":!0}};JA.setAttributes=Xr(),JA.insert=Yr().bind(null,"head"),JA.domAPI=Zr(),JA.insertStyleElement=ts();Gr()(ZA.A,JA);ZA.A&&ZA.A.locals&&ZA.A.locals;var YA=i(1160),QA={attributes:{"data-cke":!0}};QA.setAttributes=Xr(),QA.insert=Yr().bind(null,"head"),QA.domAPI=Zr(),QA.insertStyleElement=ts();Gr()(YA.A,QA);YA.A&&YA.A.locals&&YA.A.locals;class XA extends br{static get pluginName(){return"ImageUploadProgress"}static get isOfficialPlugin(){return!0}constructor(e){super(e),this.uploadStatusChange=(e,t,o)=>{const n=this.editor,i=t.item,r=i.getAttribute("uploadId");if(!o.consumable.consume(t.item,e.name))return;const s=n.plugins.get("ImageUtils"),a=n.plugins.get(ny),l=r?t.attributeNewValue:null,c=this.placeholder,d=n.editing.mapper.toViewElement(i),u=o.writer;if("reading"==l)return eC(d,u),void tC(s,c,d,u);if("uploading"==l){const e=a.loaders.get(r);return eC(d,u),void(e?(oC(d,u),function(e,t,o,n){const i=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"),i),o.on("change:uploadedPercent",((e,t,o)=>{n.change((e=>{e.setStyle("width",o+"%",i)}))}))}(d,u,e,n.editing.view),function(e,t,o,n){if(n.data){const i=e.findViewImgElement(t);o.setAttribute("src",n.data,i)}}(s,d,u,e)):tC(s,c,d,u))}"complete"==l&&a.loaders.get(r)&&function(e,t,o){const n=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),n),setTimeout((()=>{o.change((e=>e.remove(e.createRangeOn(n))))}),3e3)}(d,u,n.editing.view),function(e,t){iC(e,t,"progressBar")}(d,u),oC(d,u),function(e,t){t.removeClass("ck-appear",e)}(d,u)},this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",this.uploadStatusChange),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",this.uploadStatusChange)}}function eC(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function tC(e,t,o,n){o.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",o);const i=e.findViewImgElement(o);i.getAttribute("src")!==t&&n.setAttribute("src",t,i),nC(o,"placeholder")||n.insert(n.createPositionAfter(i),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function oC(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),iC(e,t,"placeholder")}function nC(e,t){for(const o of e.getChildren())if(o.getCustomProperty(t))return o}function iC(e,t,o){const n=nC(e,o);n&&t.remove(t.createRangeOn(n))}class rC extends wr{constructor(e){super(e),this.set("isAccessAllowed",!0)}refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),o=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(o)}execute(e){const t=Si(e.file),o=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(o.getAttributes());t.forEach(((e,t)=>{const r=o.getSelectedElement();if(t&&r&&n.isImage(r)){const t=this.editor.model.createPositionAfter(r);this._uploadImage(e,i,t)}else this._uploadImage(e,i)}))}_uploadImage(e,t,o){const n=this.editor,i=n.plugins.get(ny).createLoader(e),r=n.plugins.get("ImageUtils");i&&r.insertImage({...t,uploadId:i.id},o)}}class sC extends br{static get requires(){return[ny,uk,By,sA]}static get pluginName(){return"ImageUploadEditing"}static get isOfficialPlugin(){return!0}constructor(e){super(e),this._uploadedImages=new Map,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,o=e.conversion,n=e.plugins.get(ny),i=e.plugins.get("ImageUtils"),r=e.plugins.get("ClipboardPipeline"),s=qA(e.config.get("image.upload.types")),a=new rC(e);e.commands.add("uploadImage",a),e.commands.add("imageUpload",a),o.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}).add((e=>e.on("element:img",((e,t,o)=>{if(!o.consumable.test(t.viewItem,{attributes:["data-ck-upload-id"]}))return;const i=t.viewItem.getAttribute("data-ck-upload-id");if(!i)return;const[r]=Array.from(t.modelRange.getItems({shallow:!0})),s=n.loaders.get(i);r&&(o.writer.setAttribute("uploadId",i,r),o.consumable.consume(t.viewItem,{attributes:["data-ck-upload-id"]}),s&&s.data&&o.writer.setAttribute("uploadStatus",s.status,r))}),{priority:"low"}))),this.listenTo(e.editing.view.document,"clipboardInput",((t,o)=>{if(n=o.dataTransfer,Array.from(n.types).includes("text/html")&&""!==n.getData("text/html"))return;var n;const i=Array.from(o.dataTransfer.files).filter((e=>!!e&&s.test(e.type)));if(!i.length)return;t.stop(),e.model.change((t=>{o.targetRanges&&t.setSelection(o.targetRanges.map((t=>e.editing.mapper.toModelRange(t)))),e.execute("uploadImage",{file:i})}));if(!e.commands.get("uploadImage").isAccessAllowed){const t=e.plugins.get("Notification"),o=e.locale.t;t.showWarning(o("You have no image upload permissions."),{namespace:"image"})}})),this.listenTo(r,"inputTransformation",((t,o)=>{const r=Array.from(e.editing.view.createRangeIn(o.content)).map((e=>e.item)).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))}(i,e)&&!e.getAttribute("uploadProcessed"))).map((e=>({promise:$A(e),imageElement:e})));if(!r.length)return;const s=new oh(e.editing.view.document);for(const e of r){s.setAttribute("uploadProcessed",!0,e.imageElement);const t=n.createLoader(e.promise);t&&(s.setAttribute("src","",e.imageElement),s.setAttribute("uploadId",t.id,e.imageElement))}})),e.editing.view.document.on("dragover",((e,t)=>{t.preventDefault()})),t.on("change",(()=>{const o=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),i=new Set;for(const t of o)if("insert"==t.type&&"$text"!=t.name){const o=t.position.nodeAfter,r="$graveyard"==t.position.root.rootName;for(const t of aC(e,o)){const o=t.getAttribute("uploadId");if(!o)continue;const s=n.loaders.get(o);if(s)if(r){if(!i.has(o)){Array.from(this._uploadImageElements.get(o)).every((e=>"$graveyard"==e.root.rootName))&&s.abort()}}else i.add(o),this._uploadImageElements.has(o)?this._uploadImageElements.get(o).add(t):this._uploadImageElements.set(o,new Set([t])),"idle"==s.status&&this._readAndUpload(s);else!r&&this._uploadedImages.has(o)&&e.model.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","complete",t),this.fire("uploadComplete",{data:this._uploadedImages.get(o),imageElement:t})}))}}})),this.on("uploadComplete",((e,{imageElement:t,data:o})=>{const n=o.urls?o.urls:o;this.editor.model.change((e=>{e.setAttribute("src",n.default,t),this._parseAndSetSrcsetAttributeOnImage(n,t,e),i.setImageNaturalSizeAttributes(t)}))}),{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&(e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this._registerConverters("imageBlock")),this.editor.plugins.has("ImageInlineEditing")&&(e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]}),this._registerConverters("imageInline"))}_readAndUpload(e){const t=this.editor,o=t.model,n=t.locale.t,i=t.plugins.get(ny),r=t.plugins.get(uk),s=t.plugins.get("ImageUtils"),a=this._uploadImageElements;return o.enqueueChange({isUndoable:!1},(t=>{const o=a.get(e.id);for(const e of o)t.setAttribute("uploadStatus","reading",e)})),e.read().then((()=>{const i=e.upload();t.ui&&t.ui.ariaLiveAnnouncer.announce(n("Uploading image"));for(const n of a.get(e.id)){if(c.isSafari){const e=t.editing.mapper.toViewElement(n),o=s.findViewImgElement(e);t.editing.view.once("render",(()=>{if(!o.parent)return;const e=t.editing.view.domConverter.mapViewToDom(o.parent);if(!e)return;const n=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=n}))}o.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","uploading",n)}))}return i})).then((i=>{o.enqueueChange({isUndoable:!1},(o=>{for(const t of a.get(e.id))o.setAttribute("uploadStatus","complete",t),this.fire("uploadComplete",{data:i,imageElement:t});t.ui&&t.ui.ariaLiveAnnouncer.announce(n("Image upload complete")),this._uploadedImages.set(e.id,i)})),l()})).catch((i=>{if(t.ui&&t.ui.ariaLiveAnnouncer.announce(n("Error during image upload")),"error"!==e.status&&"aborted"!==e.status)throw i;"error"==e.status&&i&&r.showWarning(i,{title:n("Upload failed"),namespace:"upload"}),o.enqueueChange({isUndoable:!1},(t=>{for(const o of a.get(e.id))"$graveyard"!==o.root.rootName&&t.remove(o)})),l()}));function l(){o.enqueueChange({isUndoable:!1},(t=>{for(const o of a.get(e.id))t.removeAttribute("uploadId",o),t.removeAttribute("uploadStatus",o);a.delete(e.id)})),i.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,o){let n=0;const i=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(", ");if(""!=i){const e={srcset:i};t.hasAttribute("width")||t.hasAttribute("height")||(e.width=n),o.setAttributes(e,t)}}_registerConverters(e){const{conversion:t,plugins:o}=this.editor,n=o.get(ny),i=o.get(sA);t.for("dataDowncast").add((t=>{t.on(`attribute:uploadId:${e}`,((e,t,o)=>{if(!o.consumable.test(t.item,e.name))return;const r=n.loaders.get(t.attributeNewValue);if(!r||!r.data)return null;const s=o.mapper.toViewElement(t.item),a=i.findViewImgElement(s);a&&(o.consumable.consume(t.item,e.name),o.writer.setAttribute("data-ck-upload-id",r.id,a))}))}))}}function aC(e,t){const o=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter((e=>o.isImage(e.item))).map((e=>e.item))}class lC extends br{static get pluginName(){return"ImageUpload"}static get isOfficialPlugin(){return!0}static get requires(){return[sC,WA,XA]}}const cC=function(e,t){return function(o,n){if(null==o)return o;if(!mo(o))return e(o,n);for(var i=o.length,r=t?i:-1,s=Object(o);(t?r--:++r{t.setAttribute("resizedWidth",e.width,i),t.removeAttribute("resizedHeight",i),n.setImageNaturalSizeAttributes(i)}))}}class pC extends br{static get requires(){return[sA]}static get pluginName(){return"ImageResizeEditing"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:custom",value:"custom",icon:"custom"},{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 hC(e);this._registerConverters("imageBlock"),this._registerConverters("imageInline"),e.commands.add("resizeImage",t),e.commands.add("imageResize",t)}afterInit(){this._registerSchema()}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:["resizedWidth","resizedHeight"]}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:["resizedWidth","resizedHeight"]})}_registerConverters(e){const t=this.editor,o=t.plugins.get("ImageUtils");t.conversion.for("downcast").add((t=>t.on(`attribute:resizedWidth:${e}`,((e,t,o)=>{if(!o.consumable.consume(t.item,e.name))return;const n=o.writer,i=o.mapper.toViewElement(t.item);null!==t.attributeNewValue?(n.setStyle("width",t.attributeNewValue,i),n.addClass("image_resized",i)):(n.removeStyle("width",i),n.removeClass("image_resized",i))})))),t.conversion.for("dataDowncast").attributeToAttribute({model:{name:e,key:"resizedHeight"},view:e=>({key:"style",value:{height:e}})}),t.conversion.for("editingDowncast").add((t=>t.on(`attribute:resizedHeight:${e}`,((t,n,i)=>{if(!i.consumable.consume(n.item,t.name))return;const r=i.writer,s=i.mapper.toViewElement(n.item),a="imageInline"===e?o.findViewImgElement(s):s;null!==n.attributeNewValue?r.setStyle("height",n.attributeNewValue,a):r.removeStyle("height",a)})))),t.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===e?"figure":"img",styles:{width:/.+/}},model:{key:"resizedWidth",value:e=>iA(e)?null:e.getStyle("width")}}),t.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===e?"figure":"img",styles:{height:/.+/}},model:{key:"resizedHeight",value:e=>iA(e)?null:e.getStyle("height")}})}}const mC=(()=>({small:up.objectSizeSmall,medium:up.objectSizeMedium,large:up.objectSizeLarge,custom:up.objectSizeCustom,original:up.objectSizeFull}))();class gC extends br{static get requires(){return[pC]}static get pluginName(){return"ImageResizeButtons"}static get isOfficialPlugin(){return!0}constructor(e){super(e),this._resizeUnit=e.config.get("image.resizeUnit")}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),o=e.commands.get("resizeImage");this.bind("isEnabled").to(o);for(const e of t)this._registerImageResizeButton(e);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:o,value:n,icon:i}=e;t.ui.componentFactory.add(o,(o=>{const r=new Kp(o),s=t.commands.get("resizeImage"),a=this._getOptionLabelValue(e,!0);if(!mC[i])throw new S("imageresizebuttons-missing-icon",t,e);if(r.set({label:a,icon:mC[i],tooltip:a,isToggleable:!0}),r.bind("isEnabled").to(this),t.plugins.has("ImageCustomResizeUI")&&fC(e)){const e=t.plugins.get("ImageCustomResizeUI");this.listenTo(r,"execute",(()=>{e._showForm(this._resizeUnit)}))}else{const e=n?n+this._resizeUnit:null;r.bind("isOn").to(s,"value",bC(e)),this.listenTo(r,"execute",(()=>{t.execute("resizeImage",{width:e})}))}return r}))}_registerImageResizeDropdown(e){const t=this.editor,o=t.t,n=e.find((e=>!e.value)),i=i=>{const r=t.commands.get("resizeImage"),s=kf(i,vg),a=s.buttonView,l=o("Resize image");return a.set({tooltip:l,commandValue:n.value,icon:mC.medium,isToggleable:!0,label:this._getOptionLabelValue(n),withText:!0,class:"ck-resize-image-button",ariaLabel:l,ariaLabelledBy:void 0}),a.bind("label").to(r,"value",(e=>e&&e.width?e.width:this._getOptionLabelValue(n))),s.bind("isEnabled").to(this),yf(s,(()=>this._getResizeDropdownListItemDefinitions(e,r)),{ariaLabel:o("Image resize list"),role:"menu"}),this.listenTo(s,"execute",(e=>{"onClick"in e.source?e.source.onClick():(t.execute(e.source.commandName,{width:e.source.commandValue}),t.editing.view.focus())})),s};t.ui.componentFactory.add("resizeImage",i),t.ui.componentFactory.add("imageResize",i)}_getOptionLabelValue(e,t=!1){const o=this.editor.t;return e.label?e.label:t?fC(e)?o("Custom image size"):e.value?o("Resize image to %0",e.value+this._resizeUnit):o("Resize image to the original size"):fC(e)?o("Custom"):e.value?e.value+this._resizeUnit:o("Original")}_getResizeDropdownListItemDefinitions(e,t){const{editor:o}=this,n=new tr,i=e.map((e=>fC(e)?{...e,valueWithUnits:"custom"}:e.value?{...e,valueWithUnits:`${e.value}${this._resizeUnit}`}:{...e,valueWithUnits:null}));for(const e of i){let r=null;if(o.plugins.has("ImageCustomResizeUI")&&fC(e)){const n=o.plugins.get("ImageCustomResizeUI");r={type:"button",model:new hk({label:this._getOptionLabelValue(e),role:"menuitemradio",withText:!0,icon:null,onClick:()=>{n._showForm(this._resizeUnit)}})};const s=uC(i,"valueWithUnits");r.model.bind("isOn").to(t,"value",kC(s))}else r={type:"button",model:new hk({commandName:"resizeImage",commandValue:e.valueWithUnits,label:this._getOptionLabelValue(e),role:"menuitemradio",withText:!0,icon:null})},r.model.bind("isOn").to(t,"value",bC(e.valueWithUnits));r.model.bind("isEnabled").to(t,"isEnabled"),n.add(r)}return n}}function fC(e){return"custom"===e.value}function bC(e){return t=>null===e&&t===e||null!==t&&t.width===e}function kC(e){return t=>!e.some((e=>bC(e)(t)))}const wC="image_resized";class _C extends br{static get requires(){return[W_,sA]}static get pluginName(){return"ImageResizeHandles"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(e),this._setupResizerCreator()}_setupResizerCreator(){const e=this.editor,t=e.editing.view,o=e.plugins.get("ImageUtils");t.addObserver(_A),this.listenTo(t.document,"imageLoaded",((n,i)=>{if(!i.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 r=e.editing.view.domConverter,s=r.domToView(i.target),a=o.getImageWidgetFromImageView(s);let l=this.editor.plugins.get(W_).getResizerByViewElement(a);if(l)return void l.redraw();const c=e.editing.mapper,d=c.toModelElement(a);l=e.plugins.get(W_).attachTo({unit:e.config.get("image.resizeUnit"),modelElement:d,viewElement:a,editor:e,getHandleHost:e=>e.querySelector("img"),getResizeHost:()=>r.mapViewToDom(c.toViewElement(d)),isCentered:()=>"alignCenter"==d.getAttribute("imageStyle"),onCommit(o){t.change((e=>{e.removeClass(wC,a)})),e.execute("resizeImage",{width:o})}}),l.on("updateSize",(()=>{a.hasClass(wC)||t.change((e=>{e.addClass(wC,a)}));const e="imageInline"===d.name?s:a;e.getStyle("height")&&t.change((t=>{t.removeStyle("height",e)}))})),l.bind("isEnabled").to(this)}))}}function yC(e){if(!e)return null;const[,t,o]=e.trim().match(/([.,\d]+)(%|px)$/)||[],n=Number.parseFloat(t);return Number.isNaN(n)?null:{value:n,unit:o}}function AC(e,t,o){return"px"===o?{value:t.value,unit:"px"}:{value:t.value/e*100,unit:"%"}}function CC(e){const{editing:t}=e,o=e.plugins.get("ImageUtils").getClosestSelectedImageElement(e.model.document.selection);if(!o)return null;const n=t.mapper.toViewElement(o);return{model:o,view:n,dom:t.view.domConverter.mapViewToDom(n)}}var vC=i(1173),xC={attributes:{"data-cke":!0}};xC.setAttributes=Xr(),xC.insert=Yr().bind(null,"head"),xC.domAPI=Zr(),xC.insertStyleElement=ts();Gr()(vC.A,xC);vC.A&&vC.A.locals&&vC.A.locals;class EC extends zp{constructor(e,t,o){super(e);const n=this.locale.t;this.focusTracker=new nr,this.keystrokes=new ar,this.unit=t,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(n("Save"),up.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("Cancel"),up.cancel,"ck-button-cancel","cancel"),this._focusables=new hp,this._validators=o,this._focusCycler=new Xp({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-custom-resize-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]})}render(){super.render(),this.keystrokes.listenTo(this.element),Vp({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(e,t,o,n){const i=new Kp(this.locale);return i.set({label:e,icon:t,tooltip:!0}),i.extendTemplate({attributes:{class:o}}),n&&i.delegate("execute").to(this,n),i}_createLabeledInputView(){const e=this.locale.t,t=new dg(this.locale,Df);return t.label=e("Resize image (in %0)",this.unit),t.fieldView.set({step:.1}),t}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.labeledInput.errorText=t,!1}return!0}resetFormStatus(){this.labeledInput.errorText=null}get rawSize(){const{element:e}=this.labeledInput.fieldView;return e?e.value:null}get parsedSize(){const{rawSize:e}=this;if(null===e)return null;const t=Number.parseFloat(e);return Number.isNaN(t)?null:t}get sizeWithUnits(){const{parsedSize:e,unit:t}=this;return null===e?null:`${e}${t}`}}class DC extends br{static get requires(){return[kk]}static get pluginName(){return"ImageCustomResizeUI"}static get isOfficialPlugin(){return!0}destroy(){super.destroy(),this._form&&this._form.destroy()}_createForm(e){const t=this.editor;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(Np(EC))(t.locale,e,function(e){const t=e.t;return[e=>""===e.rawSize.trim()?t("The value must not be empty."):null===e.parsedSize?t("The value should be a plain number."):void 0]}(t)),this._form.render(),this.listenTo(this._form,"submit",(()=>{this._form.isValid()&&(t.execute("resizeImage",{width:this._form.sizeWithUnits}),this._hideForm(!0))})),this.listenTo(this._form.labeledInput,"change:errorText",(()=>{t.ui.update()})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),Op({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(e){if(this._isVisible)return;this._form||this._createForm(e);const t=this.editor,o=this._form.labeledInput;this._form.disableCssTransitions(),this._form.resetFormStatus(),this._isInBalloon||this._balloon.add({view:this._form,position:gA(t)});const n=function(e,t){const o=CC(e);if(!o)return null;const n=yC(o.model.getAttribute("resizedWidth")||null);return n?n.unit===t?n:AC(Dw(o.dom),{unit:"px",value:new Gn(o.dom).width},t):null}(t,e),i=n?n.value.toFixed(1):"",r=function(e,t){const o=CC(e);if(!o)return null;const n=Dw(o.dom),i=yC(window.getComputedStyle(o.dom).minWidth)||{value:1,unit:"px"};return{unit:t,lower:Math.max(.1,AC(n,i,t).value),upper:"px"===t?n:100}}(t,e);o.fieldView.value=o.fieldView.element.value=i,r&&Object.assign(o.fieldView,{min:r.lower.toFixed(1),max:Math.ceil(r.upper).toFixed(1)}),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e=!1){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&&this._balloon.visibleView===this._form}get _isInBalloon(){return!!this._balloon&&this._balloon.hasView(this._form)}}var BC=i(4214),SC={attributes:{"data-cke":!0}};SC.setAttributes=Xr(),SC.insert=Yr().bind(null,"head"),SC.domAPI=Zr(),SC.insertStyleElement=ts();Gr()(BC.A,SC);BC.A&&BC.A.locals&&BC.A.locals;class TC extends wr{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,o=t.model,n=t.plugins.get("ImageUtils");o.change((t=>{const i=e.value,{setImageSizes:r=!0}=e;let s=n.getClosestSelectedImageElement(o.document.selection);i&&this.shouldConvertImageType(i,s)&&(this.editor.execute(n.isBlockImage(s)?"imageTypeInline":"imageTypeBlock",{setImageSizes:r}),s=n.getClosestSelectedImageElement(o.document.selection)),!i||this._styles.get(i).isDefault?t.removeAttribute("imageStyle",s):t.setAttribute("imageStyle",i,s),r&&n.setImageNaturalSizeAttributes(s)}))}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const IC={get inline(){return{name:"inline",title:"In line",icon:up.objectInline,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:up.objectLeft,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:up.objectBlockLeft,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:up.objectCenter,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:up.objectRight,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:up.objectBlockRight,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:up.objectCenter,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:up.objectRight,modelElements:["imageBlock"],className:"image-style-side"}}},PC=(()=>({full:up.objectFullWidth,left:up.objectBlockLeft,right:up.objectBlockRight,center:up.objectCenter,inlineLeft:up.objectLeft,inlineRight:up.objectRight,inline:up.objectInline}))(),FC=[{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 RC(e){T("image-style-configuration-definition-invalid",e)}const MC={normalizeStyles:function(e){const t=(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?IC[e]?{...IC[e]}:{name:e}:function(e,t){const o={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(o[n]=e[n]);return o}(IC[e.name],e);"string"==typeof e.icon&&(e.icon=PC[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:o}){const{modelElements:n,name:i}=e;if(!(n&&n.length&&i))return RC({style:e}),!1;{const i=[t?"imageBlock":null,o?"imageInline":null];if(!n.some((e=>i.includes(e))))return T("image-style-missing-dependency",{style:e,missingPlugins:n.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)));return t},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")?[...FC]:[]},warnInvalidStyle:RC,DEFAULT_OPTIONS:IC,DEFAULT_ICONS:PC,DEFAULT_DROPDOWN_DEFINITIONS:FC};function zC(e,t){for(const o of t)if(o.name===e)return o}class OC extends br{static get pluginName(){return"ImageStyleEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[sA]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=MC,o=this.editor,n=o.plugins.has("ImageBlockEditing"),i=o.plugins.has("ImageInlineEditing");o.config.define("image.styles",t(n,i)),this.normalizedStyles=e({configuredStyles:o.config.get("image.styles"),isBlockPluginLoaded:n,isInlinePluginLoaded:i}),this._setupConversion(n,i),this._setupPostFixer(),o.commands.add("imageStyle",new TC(o,this.normalizedStyles))}_setupConversion(e,t){const o=this.editor,n=o.model.schema,i=(r=this.normalizedStyles,(e,t,o)=>{if(!o.consumable.consume(t.item,e.name))return;const n=zC(t.attributeNewValue,r),i=zC(t.attributeOldValue,r),s=o.mapper.toViewElement(t.item),a=o.writer;i&&a.removeClass(i.className,s),n&&a.addClass(n.className,s)});var r;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,o,n)=>{if(!o.modelRange)return;const i=o.viewItem,r=or(o.modelRange.getItems());if(r&&n.schema.checkAttribute(r,"imageStyle"))for(const e of t[r.name])n.consumable.consume(i,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,r)}}(this.normalizedStyles);o.editing.downcastDispatcher.on("attribute:imageStyle",i),o.data.downcastDispatcher.on("attribute:imageStyle",i),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),o.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),o.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,o=e.plugins.get(sA),n=new Map(this.normalizedStyles.map((e=>[e.name,e])));t.registerPostFixer((e=>{let i=!1;for(const r of t.differ.getChanges())if("insert"==r.type||"attribute"==r.type&&"imageStyle"==r.attributeKey){let t="insert"==r.type?r.position.nodeAfter:r.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!o.isImage(t))continue;const s=t.getAttribute("imageStyle");if(!s)continue;const a=n.get(s);a&&a.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),i=!0)}return i}))}}var NC=i(7879),VC={attributes:{"data-cke":!0}};VC.setAttributes=Xr(),VC.insert=Yr().bind(null,"head"),VC.domAPI=Zr(),VC.insertStyleElement=ts();Gr()(NC.A,VC);NC.A&&NC.A.locals&&NC.A.locals;class LC extends br{static get requires(){return[OC]}static get pluginName(){return"ImageStyleUI"}static get isOfficialPlugin(){return!0}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")||[],o=HC(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of o)this._createButton(e);const n=HC([...t.filter(W),...MC.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of n)this._createDropdown(e,o)}_createDropdown(e,t){const o=this.editor.ui.componentFactory;o.add(e.name,(n=>{let i;const{defaultItem:r,items:s,title:a}=e,l=s.filter((e=>t.find((({name:t})=>jC(t)===e)))).map((e=>{const t=o.create(e);return e===r&&(i=t),t}));s.length!==l.length&&MC.warnInvalidStyle({dropdown:e});const c=kf(n,pf),d=c.buttonView,u=d.arrowView;return wf(c,l,{enableActiveItemFocusOnDropdownOpen:!0}),d.set({label:qC(a,i.label),class:null,tooltip:!0}),u.unbind("label"),u.set({label:a}),d.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Oi);return t<0?i.icon:l[t].icon})),d.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Oi);return qC(a,t<0?i.label:l[t].label)})),d.bind("isOn").toMany(l,"isOn",((...e)=>e.some(Oi))),d.bind("class").toMany(l,"isOn",((...e)=>e.some(Oi)?"ck-splitbutton_flatten":void 0)),d.on("execute",(()=>{l.some((({isOn:e})=>e))?c.isOpen=!c.isOpen:i.fire("execute")})),c.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(Oi))),this.listenTo(c,"execute",(()=>{this.editor.editing.view.focus()})),c}))}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(jC(t),(o=>{const n=this.editor.commands.get("imageStyle"),i=new Kp(o);return i.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(n,"isEnabled"),i.bind("isOn").to(n,"value",(e=>e===t)),i.on("execute",this._executeCommand.bind(this,t)),i}))}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function HC(e,t){for(const o of e)t[o.title]&&(o.title=t[o.title]);return e}function jC(e){return`imageStyle:${e}`}function qC(e,t){return(e?e+": ":"")+t}function $C(e){return e.map((e=>W(e)?e.name:e))}const UC=Symbol("isWpButtonMacroSymbol");function WC(e){const t=e.getSelectedElement();return!(!t||!function(e){return!!e.getCustomProperty(UC)&&ww(e)}(t))}class GC extends br{static get pluginName(){return"OPChildPagesEditing"}static get buttonName(){return"insertChildPages"}init(){const e=this.editor,t=e.model,o=e.conversion;t.schema.register("op-macro-child-pages",{allowWhere:["$block"],allowAttributes:["page"],isBlock:!0,isLimit:!0}),o.for("upcast").elementToElement({view:{name:"macro",classes:"child_pages"},model:(e,{writer:t})=>{const o=e.getAttribute("data-page")||"",n="true"==e.getAttribute("data-include-parent");return t.createElement("op-macro-child-pages",{page:o,includeParent:n})}}),o.for("editingDowncast").elementToElement({model:"op-macro-child-pages",view:(e,{writer:t})=>this.createMacroViewElement(e,t)}).add((e=>e.on("attribute:page",this.modelAttributeToView.bind(this)))).add((e=>e.on("attribute:includeParent",this.modelAttributeToView.bind(this)))),o.for("dataDowncast").elementToElement({model:"op-macro-child-pages",view:(e,{writer:t})=>t.createContainerElement("macro",{class:"child_pages","data-page":e.getAttribute("page")||"","data-include-parent":e.getAttribute("includeParent")||""})}),e.ui.componentFactory.add(GC.buttonName,(t=>{const o=new Kp(t);return o.set({label:window.I18n.t("js.editor.macro.child_pages.button"),withText:!0}),o.on("execute",(()=>{e.model.change((t=>{const o=t.createElement("op-macro-child-pages",{});e.model.insertContent(o,e.model.document.selection)}))})),o}))}modelAttributeToView(e,t,o){const n=t.item;if(!n.is("element","op-macro-child-pages"))return;o.consumable.consume(t.item,e.name);const i=o.mapper.toViewElement(n);o.writer.remove(o.writer.createRangeIn(i)),this.setPlaceholderContent(o.writer,n,i)}macroLabel(){return window.I18n.t("js.editor.macro.child_pages.text")}pageLabel(e){return e&&e.length>0?e:window.I18n.t("js.editor.macro.child_pages.this_page")}includeParentText(e){return e?` (${window.I18n.t("js.editor.macro.child_pages.include_parent")})`:""}createMacroViewElement(e,t){const o=t.createContainerElement("div");return this.setPlaceholderContent(t,e,o),function(e,t,o){return t.setCustomProperty(UC,!0,e),_w(e,t,{label:o})}(o,t,{label:this.macroLabel()})}setPlaceholderContent(e,t,o){const n=t.getAttribute("page"),i=t.getAttribute("includeParent"),r=this.macroLabel(),s=this.pageLabel(n),a=e.createContainerElement("span",{class:"macro-value"});let l=[e.createText(`${r} `)];e.insert(e.createPositionAt(a,0),e.createText(`${s}`)),l.push(a),l.push(e.createText(this.includeParentText(i))),e.insert(e.createPositionAt(o,0),l)}}class KC extends br{static get requires(){return[kk]}static get pluginName(){return"OPChildPagesToolbar"}init(){const e=this.editor,t=this.editor.model,o=Pw(e);G_(e,"opEditChildPagesMacroButton",(e=>{const n=o.services.macros,i=e.getAttribute("page"),r=e.getAttribute("includeParent"),s=i&&i.length>0?i:"";n.configureChildPages(s,r).then((o=>t.change((t=>{t.setAttribute("page",o.page,e),t.setAttribute("includeParent",o.includeParent,e)}))))}))}afterInit(){Z_(this,this.editor,"OPChildPages",WC)}}class ZC extends wr{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)||!JC(e.schema,o))do{if(o=o.parent,!o)return}while(!JC(e.schema,o));e.change((e=>{e.setSelection(o,"in")}))}}function JC(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const YC=xi("Ctrl+A");class QC extends br{static get pluginName(){return"SelectAllEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t,o=e.editing.view.document;e.commands.add("selectAll",new ZC(e)),this.listenTo(o,"keydown",((t,o)=>{vi(o)===YC&&(e.execute("selectAll"),o.preventDefault())})),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Select all"),keystroke:"CTRL+A"}]})}}class XC extends br{static get pluginName(){return"SelectAllUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",(()=>{const e=this._createButton(Kp);return e.set({tooltip:!0}),e})),e.ui.componentFactory.add("menuBar:selectAll",(()=>this._createButton(Em)))}_createButton(e){const t=this.editor,o=t.locale,n=t.commands.get("selectAll"),i=new e(t.locale),r=o.t;return i.set({label:r("Select all"),icon:'',keystroke:"Ctrl+A"}),i.bind("isEnabled").to(n,"isEnabled"),this.listenTo(i,"execute",(()=>{t.execute("selectAll"),t.editing.view.focus()})),i}}class ev extends br{static get requires(){return[QC,XC]}static get pluginName(){return"SelectAll"}static get isOfficialPlugin(){return!0}}const tv="ckCsrfToken",ov="abcdefghijklmnopqrstuvwxyz0123456789";function nv(){let e=function(e){e=e.toLowerCase();const t=document.cookie.split(";");for(const o of t){const t=o.split("=");if(decodeURIComponent(t[0].trim().toLowerCase())===e)return decodeURIComponent(t[1])}return null}(tv);var t,o;return e&&40==e.length||(e=function(e){let t="";const o=new Uint8Array(e);window.crypto.getRandomValues(o);for(let e=0;e.5?n.toUpperCase():n}return t}(40),t=tv,o=e,document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(o)+";path=/"),e}class iv{constructor(e,t,o){this.loader=e,this.url=t,this.t=o}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.url,!0),e.responseType="json"}_initListeners(e,t,o){const n=this.xhr,i=this.loader,r=(0,this.t)("Cannot upload file:")+` ${o.name}.`;n.addEventListener("error",(()=>t(r))),n.addEventListener("abort",(()=>t())),n.addEventListener("load",(()=>{const o=n.response;if(!o||!o.uploaded)return t(o&&o.error&&o.error.message?o.error.message:r);e({default:o.url})})),n.upload&&n.upload.addEventListener("progress",(e=>{e.lengthComputable&&(i.uploadTotal=e.total,i.uploaded=e.loaded)}))}_sendRequest(e){const t=new FormData;t.append("upload",e),t.append("ckCsrfToken",nv()),this.xhr.send(t)}}function rv(e,t,o,n){let i,r=null;"function"==typeof n?i=n:(r=e.commands.get(n),i=()=>{e.execute(n)}),e.model.document.on("change:data",((s,a)=>{if(r&&!r.isEnabled||!t.isEnabled)return;const l=or(e.model.document.selection.getRanges());if(!l.isCollapsed)return;if(a.isUndo||!a.isLocal)return;const c=Array.from(e.model.document.differ.getChanges()),d=c[0];if(1!=c.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const u=d.position.parent;if(u.is("element","codeBlock"))return;if(u.is("element","listItem")&&"function"!=typeof n&&!["numberedList","bulletedList","todoList"].includes(n))return;if(r&&!0===r.value)return;const h=u.getChild(0),p=e.model.createRangeOn(h);if(!p.containsRange(l)&&!l.end.isEqual(p.end))return;const m=o.exec(h.data.substr(0,l.end.offset));m&&e.model.enqueueChange((t=>{const o=t.createPositionAt(u,0),n=t.createPositionAt(u,m[0].length),r=new vc(o,n);if(!1!==i({match:m})){t.remove(r);const o=e.model.document.selection.getFirstRange(),n=t.createRangeIn(u);!u.isEmpty||n.isEqual(o)||n.containsRange(o,!0)||t.remove(u)}r.detach(),e.model.enqueueChange((()=>{e.plugins.get("Delete").requestUndoOnBackspace()}))}))}))}function sv(e,t,o,n){let i,r;o instanceof RegExp?i=o:r=o,r=r||(e=>{let t;const o=[],n=[];for(;null!==(t=i.exec(e))&&!(t&&t.length<4);){let{index:e,1:i,2:r,3:s}=t;const a=i+r+s;e+=t[0].length-a.length;const l=[e,e+i.length],c=[e+i.length+r.length,e+i.length+r.length+s.length];o.push(l),o.push(c),n.push([e+i.length,e+i.length+r.length])}return{remove:o,format:n}}),e.model.document.on("change:data",((o,i)=>{if(i.isUndo||!i.isLocal||!t.isEnabled)return;const s=e.model,a=s.document.selection;if(!a.isCollapsed)return;const l=Array.from(s.document.differ.getChanges()),c=l[0];if(1!=l.length||"insert"!==c.type||"$text"!=c.name||1!=c.length)return;const d=a.focus,u=d.parent,{text:h,range:p}=function(e,t){let o=e.start;const n=Array.from(e.getItems()).reduce(((e,n)=>!n.is("$text")&&!n.is("$textProxy")||n.getAttribute("code")?(o=t.createPositionAfter(n),""):e+n.data),"");return{text:n,range:t.createRange(o,e.end)}}(s.createRange(s.createPositionAt(u,0),d),s),m=r(h),g=av(p.start,m.format,s),f=av(p.start,m.remove,s);g.length&&f.length&&s.enqueueChange((t=>{if(!1!==n(t,g)){for(const e of f.reverse())t.remove(e);s.enqueueChange((()=>{e.plugins.get("Delete").requestUndoOnBackspace()}))}}))}))}function av(e,t,o){return t.filter((e=>void 0!==e[0]&&void 0!==e[1])).map((t=>o.createRange(e.getShiftedBy(t[0]),e.getShiftedBy(t[1]))))}function lv(e,t){return(o,n)=>{if(!e.commands.get(t).isEnabled)return!1;const i=e.model.schema.getValidRanges(n,t);for(const e of i)o.setAttribute(t,!0,e);o.removeSelectionAttribute(t)}}class cv extends wr{constructor(e,t){super(e),this.attributeKey=t}refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}execute(e={}){const t=this.editor.model,o=t.document.selection,n=void 0===e.forceValue?!this.value:e.forceValue;t.change((e=>{if(o.isCollapsed)n?e.setSelectionAttribute(this.attributeKey,!0):e.removeSelectionAttribute(this.attributeKey);else{const i=t.schema.getValidRanges(o.getRanges(),this.attributeKey);for(const t of i)n?e.setAttribute(this.attributeKey,n,t):e.removeAttribute(this.attributeKey,t)}}))}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,o=e.document.selection;if(o.isCollapsed)return o.hasAttribute(this.attributeKey);for(const e of o.getRanges())for(const o of e.getItems())if(t.checkAttribute(o,this.attributeKey))return o.hasAttribute(this.attributeKey);return!1}}const dv="bold";class uv extends br{static get pluginName(){return"BoldEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=this.editor.t;e.model.schema.extend("$text",{allowAttributes:dv}),e.model.schema.setAttributeProperties(dv,{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:dv,view:"strong",upcastAlso:["b",e=>{const t=e.getStyle("font-weight");return t&&("bold"==t||Number(t)>=600)?{name:!0,styles:["font-weight"]}:null}]}),e.commands.add(dv,new cv(e,dv)),e.keystrokes.set("CTRL+B",dv),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Bold text"),keystroke:"CTRL+B"}]})}}function hv({editor:e,commandName:t,plugin:o,icon:n,label:i,keystroke:r}){return s=>{const a=e.commands.get(t),l=new s(e.locale);return l.set({label:i,icon:n,keystroke:r,isToggleable:!0}),l.bind("isEnabled").to(a,"isEnabled"),l.bind("isOn").to(a,"value"),l instanceof Em?l.set({role:"menuitemcheckbox"}):l.set({tooltip:!0}),o.listenTo(l,"execute",(()=>{e.execute(t),e.editing.view.focus()})),l}}const pv="bold";class mv extends br{static get pluginName(){return"BoldUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t,o=hv({editor:e,commandName:pv,plugin:this,icon:up.bold,label:t("Bold"),keystroke:"CTRL+B"});e.ui.componentFactory.add(pv,(()=>o(Kp))),e.ui.componentFactory.add("menuBar:"+pv,(()=>o(Em)))}}const gv="code";class fv extends br{static get pluginName(){return"CodeEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[n_]}init(){const e=this.editor,t=this.editor.t;e.model.schema.extend("$text",{allowAttributes:gv}),e.model.schema.setAttributeProperties(gv,{isFormatting:!0,copyOnEnter:!1}),e.conversion.attributeToElement({model:gv,view:"code"}),e.commands.add(gv,new cv(e,gv)),e.plugins.get(n_).registerAttribute(gv),p_(e,gv,"code","ck-code_selected"),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Move out of an inline code style"),keystroke:[["arrowleft","arrowleft"],["arrowright","arrowright"]]}]})}}var bv=i(9248),kv={attributes:{"data-cke":!0}};kv.setAttributes=Xr(),kv.insert=Yr().bind(null,"head"),kv.domAPI=Zr(),kv.insertStyleElement=ts();Gr()(bv.A,kv);bv.A&&bv.A.locals&&bv.A.locals;const wv="code";class _v extends br{static get pluginName(){return"CodeUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t,o=hv({editor:e,commandName:wv,plugin:this,icon:'',label:t("Code")});e.ui.componentFactory.add(wv,(()=>o(Kp))),e.ui.componentFactory.add("menuBar:"+wv,(()=>o(Em)))}}const yv="italic";class Av extends br{static get pluginName(){return"ItalicEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=this.editor.t;e.model.schema.extend("$text",{allowAttributes:yv}),e.model.schema.setAttributeProperties(yv,{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:yv,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),e.commands.add(yv,new cv(e,yv)),e.keystrokes.set("CTRL+I",yv),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Italic text"),keystroke:"CTRL+I"}]})}}const Cv="italic";class vv extends br{static get pluginName(){return"ItalicUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t,o=hv({editor:e,commandName:Cv,plugin:this,icon:'',keystroke:"CTRL+I",label:t("Italic")});e.ui.componentFactory.add(Cv,(()=>o(Kp))),e.ui.componentFactory.add("menuBar:"+Cv,(()=>o(Em)))}}const xv="strikethrough";class Ev extends br{static get pluginName(){return"StrikethroughEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=this.editor.t;e.model.schema.extend("$text",{allowAttributes:xv}),e.model.schema.setAttributeProperties(xv,{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:xv,view:"s",upcastAlso:["del","strike",{styles:{"text-decoration":"line-through"}}]}),e.commands.add(xv,new cv(e,xv)),e.keystrokes.set("CTRL+SHIFT+X","strikethrough"),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Strikethrough text"),keystroke:"CTRL+SHIFT+X"}]})}}const Dv="strikethrough";class Bv extends br{static get pluginName(){return"StrikethroughUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t,o=hv({editor:e,commandName:Dv,plugin:this,icon:'',keystroke:"CTRL+SHIFT+X",label:t("Strikethrough")});e.ui.componentFactory.add(Dv,(()=>o(Kp))),e.ui.componentFactory.add("menuBar:"+Dv,(()=>o(Em)))}}class Sv extends wr{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,o=t.schema,n=t.document.selection,i=Array.from(n.getSelectedBlocks()),r=void 0===e.forceValue?!this.value:e.forceValue;t.change((e=>{if(r){const t=i.filter((e=>Tv(e)||Pv(o,e)));this._applyQuote(e,t)}else this._removeQuote(e,i.filter(Tv))}))}_getValue(){const e=or(this.editor.model.document.selection.getSelectedBlocks());return!(!e||!Tv(e))}_checkEnabled(){if(this.value)return!0;const e=this.editor.model.document.selection,t=this.editor.model.schema,o=or(e.getSelectedBlocks());return!!o&&Pv(t,o)}_removeQuote(e,t){Iv(e,t).reverse().forEach((t=>{if(t.start.isAtStart&&t.end.isAtEnd)return void e.unwrap(t.start.parent);if(t.start.isAtStart){const o=e.createPositionBefore(t.start.parent);return void e.move(t,o)}t.end.isAtEnd||e.split(t.end);const o=e.createPositionAfter(t.end.parent);e.move(t,o)}))}_applyQuote(e,t){const o=[];Iv(e,t).reverse().forEach((t=>{let n=Tv(t.start);n||(n=e.createElement("blockQuote"),e.wrap(t,n)),o.push(n)})),o.reverse().reduce(((t,o)=>t.nextSibling==o?(e.merge(e.createPositionAfter(t)),t):o))}}function Tv(e){return"blockQuote"==e.parent.name?e.parent:null}function Iv(e,t){let o,n=0;const i=[];for(;n{const n=e.model.document.differ.getChanges();for(const e of n)if("insert"==e.type){const n=e.position.nodeAfter;if(!n)continue;if(n.is("element","blockQuote")&&n.isEmpty)return o.remove(n),!0;if(n.is("element","blockQuote")&&!t.checkChild(e.position,n))return o.unwrap(n),!0;if(n.is("element")){const e=o.createRangeIn(n);for(const n of e.getItems())if(n.is("element","blockQuote")&&!t.checkChild(o.createPositionBefore(n),n))return o.unwrap(n),!0}}else if("remove"==e.type){const t=e.position.parent;if(t.is("element","blockQuote")&&t.isEmpty)return o.remove(t),!0}return!1}));const o=this.editor.editing.view.document,n=e.model.document.selection,i=e.commands.get("blockQuote");this.listenTo(o,"enter",((t,o)=>{if(!n.isCollapsed||!i.value)return;n.getLastPosition().parent.isEmpty&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),o.preventDefault(),t.stop())}),{context:"blockquote"}),this.listenTo(o,"delete",((t,o)=>{if("backward"!=o.direction||!n.isCollapsed||!i.value)return;const r=n.getLastPosition().parent;r.isEmpty&&!r.previousSibling&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),o.preventDefault(),t.stop())}),{context:"blockquote"})}}var Rv=i(1501),Mv={attributes:{"data-cke":!0}};Mv.setAttributes=Xr(),Mv.insert=Yr().bind(null,"head"),Mv.domAPI=Zr(),Mv.insertStyleElement=ts();Gr()(Rv.A,Mv);Rv.A&&Rv.A.locals&&Rv.A.locals;class zv extends br{static get pluginName(){return"BlockQuoteUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("blockQuote",(()=>{const e=this._createButton(Kp);return e.set({tooltip:!0}),e})),e.ui.componentFactory.add("menuBar:blockQuote",(()=>{const e=this._createButton(Em);return e.set({role:"menuitemcheckbox"}),e}))}_createButton(e){const t=this.editor,o=t.locale,n=t.commands.get("blockQuote"),i=new e(t.locale),r=o.t;return i.set({label:r("Block quote"),icon:up.quote,isToggleable:!0}),i.bind("isEnabled").to(n,"isEnabled"),i.bind("isOn").to(n,"value"),this.listenTo(i,"execute",(()=>{t.execute("blockQuote"),t.editing.view.focus()})),i}}class Ov extends wr{constructor(e){super(e),this._isEnabledBasedOnSelection=!1}refresh(){const e=this.editor.model,t=or(e.document.selection.getSelectedBlocks());this.value=!!t&&t.is("element","paragraph"),this.isEnabled=!!t&&Nv(t,e.schema)}execute(e={}){const t=this.editor.model,o=t.document,n=e.selection||o.selection;t.canEditAt(n)&&t.change((e=>{const o=n.getSelectedBlocks();for(const n of o)!n.is("element","paragraph")&&Nv(n,t.schema)&&e.rename(n,"paragraph")}))}}function Nv(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class Vv extends wr{constructor(e){super(e),this._isEnabledBasedOnSelection=!1}execute(e){const t=this.editor.model,o=e.attributes;let n=e.position;return t.canEditAt(n)?t.change((e=>{if(n=this._findPositionToInsertParagraph(n,e),!n)return null;const i=e.createElement("paragraph");return o&&t.schema.setAllowedAttributes(i,o,e),t.insertContent(i,n),e.setSelection(i,"in"),e.createPositionAt(i,0)})):null}_findPositionToInsertParagraph(e,t){const o=this.editor.model;if(o.schema.checkChild(e,"paragraph"))return e;const n=o.schema.findAllowedParent(e,"paragraph");if(!n)return null;const i=e.parent,r=o.schema.checkChild(i,"$text");return i.isEmpty||r&&e.isAtEnd?o.createPositionAfter(i):!i.isEmpty&&r&&e.isAtStart?o.createPositionBefore(i):t.split(e,n).position}}class Lv extends br{static get pluginName(){return"Paragraph"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new Ov(e)),e.commands.add("insertParagraph",new Vv(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>Lv.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}Lv.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);const Hv=Lv;class jv extends wr{constructor(e,t){super(e),this.modelElements=t}refresh(){const e=or(this.editor.model.document.selection.getSelectedBlocks());this.value=!!e&&this.modelElements.includes(e.name)&&e.name,this.isEnabled=!!e&&this.modelElements.some((t=>qv(e,t,this.editor.model.schema)))}execute(e){const t=this.editor.model,o=t.document,n=e.value;t.change((e=>{const i=Array.from(o.selection.getSelectedBlocks()).filter((e=>qv(e,n,t.schema)));for(const t of i)t.is("element",n)||e.rename(t,n)}))}}function qv(e,t,o){return o.checkChild(e.parent,t)&&!o.isObject(e)}const $v="paragraph";class Uv extends br{static get pluginName(){return"HeadingEditing"}static get isOfficialPlugin(){return!0}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[Hv]}init(){const e=this.editor,t=e.config.get("heading.options"),o=[];for(const n of t)"paragraph"!==n.model&&(e.model.schema.register(n.model,{inheritAllFrom:"$block"}),e.conversion.elementToElement(n),o.push(n.model));this._addDefaultH1Conversion(e),e.commands.add("heading",new jv(e,o))}afterInit(){const e=this.editor,t=e.commands.get("enter"),o=e.config.get("heading.options");t&&this.listenTo(t,"afterExecute",((t,n)=>{const i=e.model.document.selection.getFirstPosition().parent;o.some((e=>i.is("element",e.model)))&&!i.is("element",$v)&&0===i.childCount&&n.writer.rename(i,$v)}))}_addDefaultH1Conversion(e){e.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:D.low+1})}}var Wv=i(6186),Gv={attributes:{"data-cke":!0}};Gv.setAttributes=Xr(),Gv.insert=Yr().bind(null,"head"),Gv.domAPI=Zr(),Gv.insertStyleElement=ts();Gr()(Wv.A,Gv);Wv.A&&Wv.A.locals&&Wv.A.locals;class Kv extends br{static get pluginName(){return"HeadingUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t,o=function(e){const t=e.t,o={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=o[e.title];return t&&t!=e.title&&(e.title=t),e}))}(e),n=t("Choose heading"),i=t("Heading");e.ui.componentFactory.add("heading",(t=>{const r={},s=new tr,a=e.commands.get("heading"),l=e.commands.get("paragraph"),c=[a];for(const e of o){const t={type:"button",model:new hk({label:e.title,class:e.class,role:"menuitemradio",withText:!0})};"paragraph"===e.model?(t.model.bind("isOn").to(l,"value"),t.model.set("commandName","paragraph"),c.push(l)):(t.model.bind("isOn").to(a,"value",(t=>t===e.model)),t.model.set({commandName:"heading",commandValue:e.model})),s.add(t),r[e.model]=e.title}const d=kf(t);return yf(d,s,{ariaLabel:i,role:"menu"}),d.buttonView.set({ariaLabel:i,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:i}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(c,"isEnabled",((...e)=>e.some((e=>e)))),d.buttonView.bind("label").to(a,"value",l,"value",((e,t)=>{const o=t?"paragraph":e;return"boolean"==typeof o?n:r[o]?r[o]:n})),d.buttonView.bind("ariaLabel").to(a,"value",l,"value",((e,t)=>{const o=t?"paragraph":e;return"boolean"==typeof o?i:r[o]?`${r[o]}, ${i}`:i})),this.listenTo(d,"execute",(t=>{const{commandName:o,commandValue:n}=t.source;e.execute(o,n?{value:n}:void 0),e.editing.view.focus()})),d})),e.ui.componentFactory.add("menuBar:heading",(n=>{const i=new Qk(n),r=e.commands.get("heading"),s=e.commands.get("paragraph"),a=[r],l=new Xk(n);i.set({class:"ck-heading-dropdown"}),l.set({ariaLabel:t("Heading"),role:"menu"}),i.buttonView.set({label:t("Heading")}),i.panelView.children.add(l);for(const t of o){const o=new jb(n,i),c=new Em(n);o.children.add(c),l.items.add(o),c.set({isToggleable:!0,label:t.title,role:"menuitemradio",class:t.class}),c.delegate("execute").to(i),c.on("execute",(()=>{const o="paragraph"===t.model?"paragraph":"heading";e.execute(o,{value:t.model}),e.editing.view.focus()})),"paragraph"===t.model?(c.bind("isOn").to(s,"value"),a.push(s)):c.bind("isOn").to(r,"value",(e=>e===t.model))}return i.bind("isEnabled").toMany(a,"isEnabled",((...e)=>e.some((e=>e)))),i}))}}new Set(["paragraph","heading1","heading2","heading3","heading4","heading5","heading6"]);class Zv{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,o)=>{if(!o.consumable.test(t.item,"attribute:linkHref"))return;if(!t.item.is("selection")&&!o.schema.isInline(t.item))return;const n=o.writer,i=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(i.getFirstRange(),r):n.wrap(o.mapper.toViewRange(t.range),r):n.unwrap(o.mapper.toViewRange(t.range),r)}}),{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",((e,t,{writer:o,mapper:n})=>{const i=n.toViewElement(t.item),r=Array.from(i.getChildren()).find((e=>e.is("element","a")));if(r)for(const e of this._definitions){const n=lr(e.attributes);if(e.callback(t.attributeNewValue)){for(const[e,t]of n)"class"===e?o.addClass(t,r):o.setAttribute(e,t,r);e.classes&&o.addClass(e.classes,r);for(const t in e.styles)o.setStyle(t,e.styles[t],r)}else{for(const[e,t]of n)"class"===e?o.removeClass(t,r):o.removeAttribute(e,r);e.classes&&o.removeClass(e.classes,r);for(const t in e.styles)o.removeStyle(t,r)}}}))}}}const Jv=function(e,t,o){var n=e.length;return o=void 0===o?n:o,!t&&o>=n?e:Es(e,t,o)};var Yv=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");const Qv=function(e){return Yv.test(e)};const Xv=function(e){return e.split("")};var ex="\\ud800-\\udfff",tx="["+ex+"]",ox="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",nx="\\ud83c[\\udffb-\\udfff]",ix="[^"+ex+"]",rx="(?:\\ud83c[\\udde6-\\uddff]){2}",sx="[\\ud800-\\udbff][\\udc00-\\udfff]",ax="(?:"+ox+"|"+nx+")"+"?",lx="[\\ufe0e\\ufe0f]?",cx=lx+ax+("(?:\\u200d(?:"+[ix,rx,sx].join("|")+")"+lx+ax+")*"),dx="(?:"+[ix+ox+"?",ox,rx,sx,tx].join("|")+")",ux=RegExp(nx+"(?="+nx+")|"+dx+cx,"g");const hx=function(e){return e.match(ux)||[]};const px=function(e){return Qv(e)?hx(e):Xv(e)};const mx=function(e){return function(t){t=Vr(t);var o=Qv(t)?px(t):void 0,n=o?o[0]:t.charAt(0),i=o?Jv(o,1).join(""):t.slice(1);return n[e]()+i}}("toUpperCase"),gx=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,fx=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,bx=/^((\w+:(\/{2,})?)|(\W))/i,kx=["https?","ftps?","mailto"],wx="Ctrl+K";function _x(e,{writer:t}){const o=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,o),o}function yx(e,t=kx){const o=String(e),n=t.join("|");return function(e,t){const o=e.replace(gx,"");return!!o.match(t)}(o,new RegExp(`${"^(?:(?:):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))".replace("",n)}`,"i"))?o:"#"}function Ax(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function Cx(e,t){const o=(n=e,fx.test(n)?"mailto:":t);var n;const i=!!o&&!vx(e);return e&&i?o+e:e}function vx(e){return bx.test(e)}function xx(e){window.open(e,"_blank","noopener")}function Ex(e){const t=e.plugins.has("BookmarkEditing")?e.plugins.get("BookmarkEditing"):null;return{isScrollableToTarget:function(e){return!!e&&e.startsWith("#")&&!!t&&!!t.getElementForBookmarkId(e.slice(1))},scrollToTarget:function(o){const n=o.slice(1),i=t.getElementForBookmarkId(n);e.model.change((e=>{e.setSelection(i,"on")})),e.editing.view.scrollToTheSelection({alignToTop:!0,forceScroll:!0})}}}class Dx extends wr{constructor(){super(...arguments),this.manualDecorators=new tr,this.automaticDecorators=new Zv}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,o=t.getSelectedElement()||or(t.getSelectedBlocks());Ax(o,e.schema)?(this.value=o.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(o,"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 o=this.editor.model,n=o.document.selection,i=[],r=[];for(const e in t)t[e]?i.push(e):r.push(e);o.change((t=>{if(n.isCollapsed){const s=n.getFirstPosition();if(n.hasAttribute("linkHref")){const a=Bx(n);let l=u_(s,"linkHref",n.getAttribute("linkHref"),o);n.getAttribute("linkHref")===a&&(l=this._updateLinkContent(o,t,l,e)),t.setAttribute("linkHref",e,l),i.forEach((e=>{t.setAttribute(e,!0,l)})),r.forEach((e=>{t.removeAttribute(e,l)})),t.setSelection(t.createPositionAfter(l.end.nodeBefore))}else if(""!==e){const r=lr(n.getAttributes());r.set("linkHref",e),i.forEach((e=>{r.set(e,!0)}));const{end:a}=o.insertContent(t.createText(e,r),s);t.setSelection(a)}["linkHref",...i,...r].forEach((e=>{t.removeSelectionAttribute(e)}))}else{const s=o.schema.getValidRanges(n.getRanges(),"linkHref"),a=[];for(const e of n.getSelectedBlocks())o.schema.checkAttribute(e,"linkHref")&&a.push(t.createRangeOn(e));const l=a.slice();for(const e of s)this._isRangeToUpdate(e,a)&&l.push(e);for(const s of l){let a=s;if(1===l.length){const i=Bx(n);n.getAttribute("linkHref")===i&&(a=this._updateLinkContent(o,t,s,e),t.setSelection(t.createSelection(a)))}t.setAttribute("linkHref",e,a),i.forEach((e=>{t.setAttribute(e,!0,a)})),r.forEach((e=>{t.removeAttribute(e,a)}))}}}))}_getDecoratorStateFromModel(e){const t=this.editor.model,o=t.document.selection,n=o.getSelectedElement();return Ax(n,t.schema)?n.getAttribute(e):o.getAttribute(e)}_isRangeToUpdate(e,t){for(const o of t)if(o.containsRange(e))return!1;return!0}_updateLinkContent(e,t,o,n){const i=t.createText(n,{linkHref:n});return e.insertContent(i,o)}}function Bx(e){if(e.isCollapsed){const t=e.getFirstPosition();return t.textNode&&t.textNode.data}{const t=Array.from(e.getFirstRange().getItems());if(t.length>1)return null;const o=t[0];return o.is("$text")||o.is("$textProxy")?o.data:null}}class Sx extends wr{refresh(){const e=this.editor.model,t=e.document.selection,o=t.getSelectedElement();Ax(o,e.schema)?this.isEnabled=e.schema.checkAttribute(o,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,o=t.document.selection,n=e.commands.get("link");t.change((e=>{const i=o.isCollapsed?[u_(o.getFirstPosition(),"linkHref",o.getAttribute("linkHref"),t)]:t.schema.getValidRanges(o.getRanges(),"linkHref");for(const t of i)if(e.removeAttribute("linkHref",t),n)for(const o of n.manualDecorators)e.removeAttribute(o.id,t)}))}}class Tx extends(X()){constructor({id:e,label:t,attributes:o,classes:n,styles:i,defaultValue:r}){super(),this.id=e,this.set("value",void 0),this.defaultValue=r,this.label=t,this.attributes=o,this.classes=n,this.styles=i}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}var Ix=i(7456),Px={attributes:{"data-cke":!0}};Px.setAttributes=Xr(),Px.insert=Yr().bind(null,"head"),Px.domAPI=Zr(),Px.insertStyleElement=ts();Gr()(Ix.A,Px);Ix.A&&Ix.A.locals&&Ix.A.locals;const Fx="automatic",Rx=/^(https?:)?\/\//;class Mx extends br{static get pluginName(){return"LinkEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[n_,jw,By]}constructor(e){super(e),e.config.define("link",{allowCreatingEmptyLinks:!1,addTargetToExternalLinks:!1})}init(){const e=this.editor,t=this.editor.config.get("link.allowedProtocols");e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:_x}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,o)=>_x(yx(e,t),o)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new Dx(e)),e.commands.add("unlink",new Sx(e));const o=function(e,t){const o={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach((e=>("label"in e&&o[e.label]&&(e.label=o[e.label]),e))),t}(e.t,function(e){const t=[];if(e)for(const[o,n]of Object.entries(e)){const e=Object.assign({},n,{id:`link${mx(o)}`});t.push(e)}return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(o.filter((e=>e.mode===Fx))),this._enableManualDecorators(o.filter((e=>"manual"===e.mode)));e.plugins.get(n_).registerAttribute("linkHref"),p_(e,"linkHref","a","ck-link_selected"),this._enableLinkOpen(),this._enableSelectionAttributesFixer(),this._enableClipboardIntegration()}_enableAutomaticDecorators(e){const t=this.editor,o=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&o.add({id:"linkIsExternal",mode:Fx,callback:e=>!!e&&Rx.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),o.add(e),o.length&&t.conversion.for("downcast").add(o.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,o=t.commands.get("link").manualDecorators;e.forEach((e=>{t.model.schema.extend("$text",{allowAttributes:e.id});const n=new Tx(e);o.add(n),t.conversion.for("downcast").attributeToElement({model:n.id,view:(e,{writer:t,schema:o},{item:i})=>{if((i.is("selection")||o.isInline(i))&&e){const e=t.createAttributeElement("a",n.attributes,{priority:5});n.classes&&t.addClass(n.classes,e);for(const o in n.styles)t.setStyle(o,n.styles[o],e);return t.setCustomProperty("link",!0,e),e}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...n._createPattern()},model:{key:n.id}})}))}_enableLinkOpen(){const e=this.editor,t=e.editing.view.document,o=Ex(e);function n(e){o.isScrollableToTarget(e)?o.scrollToTarget(e):xx(e)}this.listenTo(t,"click",((e,t)=>{if(!(c.isMac?t.domEvent.metaKey:t.domEvent.ctrlKey))return;let o=t.domTarget;if("a"!=o.tagName.toLowerCase()&&(o=o.closest("a")),!o)return;const i=o.getAttribute("href");i&&(e.stop(),t.preventDefault(),n(i))}),{context:"$capture"}),this.listenTo(t,"keydown",((t,o)=>{const i=e.commands.get("link").value;!!i&&o.keyCode===Ai.enter&&o.altKey&&(t.stop(),n(i))}))}_enableSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(t,"change:attribute",((o,{attributeKeys:n})=>{n.includes("linkHref")&&!t.hasAttribute("linkHref")&&e.change((t=>{var o;!function(e,t){e.removeSelectionAttribute("linkHref");for(const o of t)e.removeSelectionAttribute(o)}(t,(o=e.schema,o.getDefinition("$text").allowAttributes.filter((e=>e.startsWith("link")))))}))}))}_enableClipboardIntegration(){const e=this.editor,t=e.model,o=this.editor.config.get("link.defaultProtocol");o&&this.listenTo(e.plugins.get("ClipboardPipeline"),"contentInsertion",((e,n)=>{t.change((e=>{const t=e.createRangeIn(n.content);for(const n of t.getItems())if(n.hasAttribute("linkHref")){const t=Cx(n.getAttribute("linkHref"),o);e.setAttribute("linkHref",t,n)}}))}))}}var zx=i(2350),Ox={attributes:{"data-cke":!0}};Ox.setAttributes=Xr(),Ox.insert=Yr().bind(null,"head"),Ox.domAPI=Zr(),Ox.insertStyleElement=ts();Gr()(zx.A,Ox);zx.A&&zx.A.locals&&zx.A.locals;class Nx extends zp{constructor(e,t,o){super(e),this.focusTracker=new nr,this.keystrokes=new ar,this._focusables=new hp;const n=e.t;this._validators=o,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),up.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("Cancel"),up.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(t),this.children=this._createFormChildren(t.manualDecorators),this._focusCycler=new Xp({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const i=["ck","ck-link-form","ck-responsive-form"];t.manualDecorators.length&&i.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:i,tabindex:"-1"},children:this.children})}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce(((e,t)=>(e[t.name]=t.isOn,e)),{})}render(){super.render(),Vp({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)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.urlInputView.errorText=t,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null}_createUrlInput(){const e=this.locale.t,t=new dg(this.locale,Ef);return t.fieldView.inputMode="url",t.label=e("Link URL"),t}_createButton(e,t,o,n){const i=new Kp(this.locale);return i.set({label:e,icon:t,tooltip:!0}),i.extendTemplate({attributes:{class:o}}),n&&i.delegate("execute").to(this,n),i}_createManualDecoratorSwitches(e){const t=this.createCollection();for(const o of e.manualDecorators){const n=new Vm(this.locale);n.set({name:o.id,label:o.label,withText:!0}),n.bind("isOn").toMany([o,e],"value",((e,t)=>void 0===t&&void 0===e?!!o.defaultValue:!!e)),n.on("execute",(()=>{o.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 zp;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}get url(){const{element:e}=this.urlInputView.fieldView;return e?e.value.trim():null}}var Vx=i(8040),Lx={attributes:{"data-cke":!0}};Lx.setAttributes=Xr(),Lx.insert=Yr().bind(null,"head"),Lx.domAPI=Zr(),Lx.insertStyleElement=ts();Gr()(Vx.A,Lx);Vx.A&&Vx.A.locals&&Vx.A.locals;class Hx extends zp{constructor(e,t={},o){super(e),this.focusTracker=new nr,this.keystrokes=new ar,this._focusables=new hp;const n=e.t;this._options=o,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(n("Unlink"),'',"unlink"),this.editButtonView=this._createButton(n("Edit link"),up.pencil,"edit"),this.set("href",void 0),this._linkConfig=t,this._focusCycler=new Xp({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)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createButton(e,t,o){const n=new Kp(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.delegate("execute").to(this,o),n}_createPreviewButton(){const e=new Kp(this.locale),t=this.bindTemplate,o=this.t;return e.set({withText:!0}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",(e=>e&&yx(e,this._linkConfig.allowedProtocols))),target:"_blank",rel:"noopener noreferrer"},on:{click:t.to((e=>{this._options&&this._options.isScrollableToTarget(this.href)?(e.preventDefault(),this._options.scrollToTarget(this.href)):xx(this.href)}))}}),e.bind("tooltip").to(this,"href",(e=>this._options&&this._options.isScrollableToTarget(e)?o("Scroll to target"):o("Open link in new tab"))),e.bind("label").to(this,"href",(e=>e||o("This link has no URL"))),e.bind("isEnabled").to(this,"href",(e=>!!e)),e.template.tag="a",e}}const jx="link-ui";class qx extends br{constructor(){super(...arguments),this.actionsView=null,this.formView=null}static get requires(){return[kk]}static get pluginName(){return"LinkUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=this.editor.t;e.editing.view.addObserver(Xu),this._balloon=e.plugins.get(kk),this._createToolbarLinkButton(),this._enableBalloonActivators(),e.conversion.for("editingDowncast").markerToHighlight({model:jx,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:jx,view:(e,{writer:t})=>{if(!e.markerRange.isCollapsed)return null;const o=t.createUIElement("span");return t.addClass(["ck-fake-link-selection","ck-fake-link-selection_collapsed"],o),o}}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Create link"),keystroke:wx},{label:t("Move out of a link"),keystroke:[["arrowleft","arrowleft"],["arrowright","arrowright"]]}]})}destroy(){super.destroy(),this.formView&&this.formView.destroy(),this.actionsView&&this.actionsView.destroy()}_createViews(){this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._enableUserBalloonInteractions()}_createActionsView(){const e=this.editor,t=new Hx(e.locale,e.config.get("link"),Ex(e)),o=e.commands.get("link"),n=e.commands.get("unlink");return t.bind("href").to(o,"value"),t.editButtonView.bind("isEnabled").to(o),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(wx,((e,t)=>{this._addFormView(),t()})),t}_createFormView(){const e=this.editor,t=e.commands.get("link"),o=e.config.get("link.defaultProtocol"),n=new(Np(Nx))(e.locale,t,function(e){const t=e.t,o=e.config.get("link.allowCreatingEmptyLinks");return[e=>{if(!o&&!e.url.length)return t("Link URL must not be empty.")}]}(e));return n.urlInputView.fieldView.bind("value").to(t,"value"),n.urlInputView.bind("isEnabled").to(t,"isEnabled"),n.saveButtonView.bind("isEnabled").to(t,"isEnabled"),this.listenTo(n,"submit",(()=>{if(n.isValid()){const{value:t}=n.urlInputView.fieldView.element,i=Cx(t,o);e.execute("link",i,n.getDecoratorSwitchesState()),this._closeFormView()}})),this.listenTo(n.urlInputView,"change:errorText",(()=>{e.ui.update()})),this.listenTo(n,"cancel",(()=>{this._closeFormView()})),n.keystrokes.set("Esc",((e,t)=>{this._closeFormView(),t()})),n}_createToolbarLinkButton(){const e=this.editor;e.ui.componentFactory.add("link",(()=>{const e=this._createButton(Kp);return e.set({tooltip:!0}),e})),e.ui.componentFactory.add("menuBar:link",(()=>{const e=this._createButton(Em);return e.set({role:"menuitemcheckbox"}),e}))}_createButton(e){const t=this.editor,o=t.locale,n=t.commands.get("link"),i=new e(t.locale),r=o.t;return i.set({label:r("Link"),icon:'',keystroke:wx,isToggleable:!0}),i.bind("isEnabled").to(n,"isEnabled"),i.bind("isOn").to(n,"value",(e=>!!e)),this.listenTo(i,"execute",(()=>this._showUI(!0))),i}_enableBalloonActivators(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),e.keystrokes.set(wx,((t,o)=>{o(),e.commands.get("link").isEnabled&&this._showUI(!0)}))}_enableUserBalloonInteractions(){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())})),Op({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this.actionsView||this._createViews(),this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this.formView||this._createViews(),this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this.formView.resetFormStatus(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this.formView.urlInputView.fieldView.value=e.value||"",this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions()}_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.formView.urlInputView.fieldView.reset(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this.formView||this._createViews(),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 o=this._getSelectedLinkElement(),n=r();const i=()=>{const e=this._getSelectedLinkElement(),t=r();o&&!e||!o&&t!==n?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),o=e,n=t};function r(){return t.selection.focus.getAncestors().reverse().find((e=>e.is("element")))}this.listenTo(e.ui,"update",i),this.listenTo(this._balloon,"change:visibleView",i)}get _isFormInPanel(){return!!this.formView&&this._balloon.hasView(this.formView)}get _areActionsInPanel(){return!!this.actionsView&&this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return!!this.actionsView&&this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){const e=this._balloon.visibleView;return!!this.formView&&e==this.formView||this._areActionsVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=this.editor.model,o=e.document;let n;if(t.markers.has(jx)){const t=Array.from(this.editor.editing.mapper.markerNameToElements(jx)),o=e.createRange(e.createPositionBefore(t[0]),e.createPositionAfter(t[t.length-1]));n=e.domConverter.viewRangeToDom(o)}else n=()=>{const t=this._getSelectedLinkElement();return t?e.domConverter.mapViewToDom(t):e.domConverter.viewRangeToDom(o.selection.getFirstRange())};return{target:n}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,o=t.getSelectedElement();if(t.isCollapsed||o&&ww(o))return $x(t.getFirstPosition());{const o=t.getFirstRange().getTrimmed(),n=$x(o.start),i=$x(o.end);return n&&n==i&&e.createRangeIn(n).getTrimmed().isEqual(o)?n:null}}_showFakeVisualSelection(){const e=this.editor.model;e.change((t=>{const o=e.document.selection.getFirstRange();if(e.markers.has(jx))t.updateMarker(jx,{range:o});else if(o.start.isAtEnd){const n=o.start.getLastMatchingPosition((({item:t})=>!e.schema.isContent(t)),{boundaries:o});t.addMarker(jx,{usingOperation:!1,affectsData:!1,range:t.createRange(n,o.end)})}else t.addMarker(jx,{usingOperation:!1,affectsData:!1,range:o})}))}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(jx)&&e.change((e=>{e.removeMarker(jx)}))}}function $x(e){return e.getAncestors().find((e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t}))||null}const Ux=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 Wx extends br{static get requires(){return[Xw,Mx]}static get pluginName(){return"AutoLink"}static get isOfficialPlugin(){return!0}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(),this._enablePasteLinking()}_expandLinkRange(e,t){return t.textNode&&t.textNode.hasAttribute("linkHref")?u_(t,"linkHref",t.textNode.getAttribute("linkHref"),e):null}_selectEntireLinks(e,t){const o=this.editor.model,n=o.document.selection,i=n.getFirstPosition(),r=n.getLastPosition();let s=t.getJoined(this._expandLinkRange(o,i)||t);s&&(s=s.getJoined(this._expandLinkRange(o,r)||t)),s&&(s.start.isBefore(i)||s.end.isAfter(r))&&e.setSelection(s)}_enablePasteLinking(){const e=this.editor,t=e.model,o=t.document.selection,n=e.plugins.get("ClipboardPipeline"),i=e.commands.get("link");n.on("inputTransformation",((e,n)=>{if(!this.isEnabled||!i.isEnabled||o.isCollapsed||"paste"!==n.method)return;if(o.rangeCount>1)return;const r=o.getFirstRange(),s=n.dataTransfer.getData("text/plain");if(!s)return;const a=s.match(Ux);a&&a[2]===s&&(t.change((e=>{this._selectEntireLinks(e,r),i.execute(s)})),e.stop())}),{priority:"high"})}_enableTypingHandling(){const e=this.editor,t=new o_(e.model,(e=>{let t=e;if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(t))return;t=t.slice(0,-1),"!.:,;?".includes(t[t.length-1])&&(t=t.slice(0,-1));const o=Gx(t);return o?{url:o,removedTrailingCharacters:e.length-t.length}:void 0}));t.on("matched:data",((t,o)=>{const{batch:n,range:i,url:r,removedTrailingCharacters:s}=o;if(!n.isTyping)return;const a=i.end.getShiftedBy(-s),l=a.getShiftedBy(-r.length),c=e.model.createRange(l,a);this._applyAutoLink(r,c)})),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,o=e.commands.get("enter");o&&o.on("execute",(()=>{const e=t.document.selection.getFirstPosition();if(!e.parent.previousSibling)return;const o=t.createRangeIn(e.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(o)}))}_enableShiftEnterHandling(){const e=this.editor,t=e.model,o=e.commands.get("shiftEnter");o&&o.on("execute",(()=>{const e=t.document.selection.getFirstPosition(),o=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(o)}))}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:o,range:n}=t_(e,t),i=Gx(o);if(i){const e=t.createRange(n.end.getShiftedBy(-i.length),n.end);this._applyAutoLink(i,e)}}_applyAutoLink(e,t){const o=this.editor.model,n=Cx(e,this.editor.config.get("link.defaultProtocol"));this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,o)&&vx(n)&&!function(e){const t=e.start.nodeAfter;return!!t&&t.hasAttribute("linkHref")}(t)&&this._persistAutoLink(n,t)}_persistAutoLink(e,t){const o=this.editor.model,n=this.editor.plugins.get("Delete");o.enqueueChange((i=>{i.setAttribute("linkHref",e,t),o.enqueueChange((()=>{n.requestUndoOnBackspace()}))}))}}function Gx(e){const t=Ux.exec(e);return t?t[2]:null}var Kx=i(3669),Zx={attributes:{"data-cke":!0}};Zx.setAttributes=Xr(),Zx.insert=Yr().bind(null,"head"),Zx.domAPI=Zr(),Zx.insertStyleElement=ts();Gr()(Kx.A,Zx);Kx.A&&Kx.A.locals&&Kx.A.locals;class Jx{constructor(e,t){this._startElement=e,this._referenceIndent=e.getAttribute("listIndent"),this._isForward="forward"==t.direction,this._includeSelf=!!t.includeSelf,this._sameAttributes=Si(t.sameAttributes||[]),this._sameIndent=!!t.sameIndent,this._lowerIndent=!!t.lowerIndent,this._higherIndent=!!t.higherIndent}static first(e,t){return or(new this(e,t)[Symbol.iterator]())}*[Symbol.iterator](){const e=[];for(const{node:t}of new Yx(this._getStartNode(),this._isForward?"forward":"backward")){const o=t.getAttribute("listIndent");if(othis._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){e.push(t);continue}}else{if(!this._sameIndent){if(this._higherIndent){e.length&&(yield*e,e.length=0);break}continue}if(this._sameAttributes.some((e=>t.getAttribute(e)!==this._startElement.getAttribute(e))))break}e.length&&(yield*e,e.length=0),yield t}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}class Yx{constructor(e,t="forward"){this._previousNodesByIndent=[],this._previous=null,this._previousNodeIndent=null,this._node=e,this._isForward="forward"===t}[Symbol.iterator](){return this}next(){if(!eE(this._node))return{done:!0,value:void 0};const e=this._node.getAttribute("listIndent");let t=null;if(this._previous){const o=this._previousNodeIndent;e>o?this._previousNodesByIndent[o]=this._previous:ee.getAttribute("listItemId")!=t))}function pE(e){return Array.from(e).filter((e=>"$graveyard"!==e.root.rootName)).sort(((e,t)=>e.index-t.index))}function mE(e){const t=e.document.selection.getSelectedElement();return t&&e.schema.isObject(t)&&e.schema.isBlock(t)?t:null}function gE(e,t){return t.checkChild(e.parent,"listItem")&&t.checkChild(e,"$text")&&!t.isObject(e)}function fE(e){return"numbered"==e||"customNumbered"==e}function bE(e,t,o){return oE(t,{direction:"forward"}).pop().index>e.index?cE(e,t,o):[]}class kE extends wr{constructor(e,t){super(e),this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute(){const e=this.editor.model,t=wE(e.document.selection);e.change((e=>{const o=[];hE(t)&&!iE(t[0])?("forward"==this._direction&&o.push(...dE(t,e)),o.push(...lE(t[0],e))):"forward"==this._direction?o.push(...dE(t,e,{expand:!0})):o.push(...function(e,t){const o=sE(e=Si(e)),n=new Set,i=Math.min(...o.map((e=>e.getAttribute("listIndent")))),r=new Map;for(const e of o)r.set(e,Jx.first(e,{lowerIndent:!0}));for(const e of o){if(n.has(e))continue;n.add(e);const o=e.getAttribute("listIndent")-1;if(o<0)uE(e,t);else{if(e.getAttribute("listIndent")==i){const o=bE(e,r.get(e),t);for(const e of o)n.add(e);if(o.length)continue}t.setAttribute("listIndent",o,e)}}return pE(n)}(t,e));for(const t of o){if(!t.hasAttribute("listType"))continue;const o=Jx.first(t,{sameIndent:!0});o&&e.setAttribute("listType",o.getAttribute("listType"),t)}this._fireAfterExecute(o)}))}_fireAfterExecute(e){this.fire("afterExecute",pE(new Set(e)))}_checkEnabled(){let e=wE(this.editor.model.document.selection),t=e[0];if(!t)return!1;if("backward"==this._direction)return!0;if(hE(e)&&!iE(e[0]))return!0;e=sE(e),t=e[0];const o=Jx.first(t,{sameIndent:!0});return!!o&&o.getAttribute("listType")==t.getAttribute("listType")}}function wE(e){const t=Array.from(e.getSelectedBlocks()),o=t.findIndex((e=>!eE(e)));return-1!=o&&(t.length=o),t}class _E extends wr{constructor(e,t,o={}){super(e),this.type=t,this._listWalkerOptions=o.multiLevel?{higherIndent:!0,lowerIndent:!0,sameAttributes:[]}:void 0}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,o=t.document,n=mE(t),i=Array.from(o.selection.getSelectedBlocks()).filter((e=>t.schema.checkAttribute(e,"listType")||gE(e,t.schema))),r=void 0!==e.forceValue?!e.forceValue:this.value;t.change((s=>{if(r){const e=i[i.length-1],t=oE(e,{direction:"forward"}),o=[];t.length>1&&o.push(...lE(t[1],s)),o.push(...uE(i,s)),o.push(...function(e,t){const o=[];let n=Number.POSITIVE_INFINITY;for(const{node:i}of new Yx(e.nextSibling)){const e=i.getAttribute("listIndent");if(0==e)break;e{const{firstElement:r,lastElement:s}=this._getMergeSubjectElements(o,e),a=r.getAttribute("listIndent")||0,l=s.getAttribute("listIndent"),c=s.getAttribute("listItemId");if(a!=l){const e=(d=s,Array.from(new Jx(d,{direction:"forward",higherIndent:!0})));n.push(...dE([s,...e],i,{indentBy:a-l,expand:a{const t=lE(this._getStartBlock(),e);this._fireAfterExecute(t)}))}_fireAfterExecute(e){this.fire("afterExecute",pE(new Set(e)))}_checkEnabled(){const e=this.editor.model.document.selection,t=this._getStartBlock();return e.isCollapsed&&eE(t)&&!iE(t)}_getStartBlock(){const e=this.editor.model.document.selection.getFirstPosition().parent;return"before"==this._direction?e:e.nextSibling}}class CE extends br{static get pluginName(){return"ListUtils"}static get isOfficialPlugin(){return!0}expandListBlocksToCompleteList(e){return aE(e)}isFirstBlockOfListItem(e){return iE(e)}isListItemBlock(e){return eE(e)}expandListBlocksToCompleteItems(e,t={}){return sE(e,t)}isNumberedListType(e){return fE(e)}}function vE(e){return e.is("element","ol")||e.is("element","ul")}function xE(e){return e.is("element","li")}function EE(e,t,o,n=SE(o,t)){return e.createAttributeElement(BE(o),null,{priority:2*t/100-100,id:n})}function DE(e,t,o){return e.createAttributeElement("li",null,{priority:(2*t+1)/100-100,id:o})}function BE(e){return"numbered"==e||"customNumbered"==e?"ol":"ul"}function SE(e,t){return`list-${e}-${t}`}function TE(e,t,o){const n=e.nodeBefore;if(eE(n)){let e=n;for(const{node:i}of new Yx(e,"backward")){if(e=i,o.has(e))return;if(o.add(e),t.has(n))return}t.add(e)}else{const o=e.nodeAfter;eE(o)&&t.add(o)}}function IE(){return(e,t,o)=>{const{writer:n,schema:i}=o;if(!t.modelRange)return;const r=Array.from(t.modelRange.getItems({shallow:!0})).filter((e=>i.checkAttribute(e,"listItemId")));if(!r.length)return;const s=Xx.next(),a=function(e){let t=0,o=e.parent;for(;o;){if(xE(o))t++;else{const e=o.previousSibling;e&&xE(e)&&t++}o=o.parent}return t}(t.viewItem);let l=t.viewItem.parent&&t.viewItem.parent.is("element","ol")?"numbered":"bulleted";const c=r[0].getAttribute("listType");c&&(l=c);const d={listItemId:s,listIndent:a,listType:l};for(const e of r)e.hasAttribute("listItemId")||n.setAttributes(d,e);r.length>1&&r[1].getAttribute("listItemId")!=d.listItemId&&o.keepEmptyElement(r[0])}}function PE(e,t,o,{dataPipeline:n}={}){const i=function(e){return(t,o)=>{const n=[];for(const o of e)t.hasAttribute(o)&&n.push(`attribute:${o}`);return!!n.every((e=>!1!==o.test(t,e)))&&(n.forEach((e=>o.consume(t,e))),!0)}}(e);return(r,s,a)=>{const{writer:l,mapper:c,consumable:d}=a,u=s.item;if(!e.includes(s.attributeKey))return;if(!i(u,d))return;const h=function(e,t,o){const n=o.createRangeOn(e),i=t.toViewRange(n).getTrimmed();return i.end.nodeBefore}(u,c,o);RE(h,l,c),function(e,t){let o=e.parent;for(;o.is("attributeElement")&&["ul","ol","li"].includes(o.name);){const n=o.parent;t.unwrap(t.createRangeOn(e),o),o=n}}(h,l);const p=function(e,t,o,n,{dataPipeline:i}){let r=n.createRangeOn(t);if(!iE(e))return r;for(const s of o){if("itemMarker"!=s.scope)continue;const o=s.createElement(n,e,{dataPipeline:i});if(!o)continue;if(n.setCustomProperty("listItemMarker",!0,o),s.canInjectMarkerIntoElement&&s.canInjectMarkerIntoElement(e)?n.insert(n.createPositionAt(t,0),o):(n.insert(r.start,o),r=n.createRange(n.createPositionBefore(o),n.createPositionAfter(t))),!s.createWrapperElement||!s.canWrapElement)continue;const a=s.createWrapperElement(n,e,{dataPipeline:i});n.setCustomProperty("listItemWrapper",!0,a),s.canWrapElement(e)?r=n.wrap(r,a):(r=n.wrap(n.createRangeOn(o),a),r=n.createRange(r.start,n.createPositionAfter(t)))}return r}(u,h,t,l,{dataPipeline:n});!function(e,t,o,n){if(!e.hasAttribute("listIndent"))return;const i=e.getAttribute("listIndent");let r=e;for(let e=i;e>=0;e--){const i=DE(n,e,r.getAttribute("listItemId")),s=EE(n,e,r.getAttribute("listType"));for(const e of o)"list"!=e.scope&&"item"!=e.scope||!r.hasAttribute(e.attributeName)||e.setAttributeOnDowncast(n,r.getAttribute(e.attributeName),"list"==e.scope?s:i);if(t=n.wrap(t,i),t=n.wrap(t,s),0==e)break;if(r=Jx.first(r,{lowerIndent:!0}),!r)break}}(u,p,t,l)}}function FE(e,{dataPipeline:t}={}){return(o,{writer:n})=>{if(!ME(o,e))return null;if(!t)return n.createContainerElement("span",{class:"ck-list-bogus-paragraph"});const i=n.createContainerElement("p");return n.setCustomProperty("dataPipeline:transparentRendering",!0,i),i}}function RE(e,t,o){for(;e.parent.is("attributeElement")&&e.parent.getCustomProperty("listItemWrapper");)t.unwrap(t.createRangeOn(e),e.parent);const n=[];i(t.createPositionBefore(e).getWalker({direction:"backward"})),i(t.createRangeIn(e).getWalker());for(const e of n)t.remove(e);function i(e){for(const{item:t}of e){if(t.is("element")&&o.toModelElement(t))break;t.is("element")&&t.getCustomProperty("listItemMarker")&&n.push(t)}}}function ME(e,t,o=tE(e)){if(!eE(e))return!1;for(const o of e.getAttributeKeys())if(!o.startsWith("selection:")&&"htmlEmptyBlock"!=o&&!t.includes(o))return!1;return o.length<2}var zE=i(7875),OE={attributes:{"data-cke":!0}};OE.setAttributes=Xr(),OE.insert=Yr().bind(null,"head"),OE.domAPI=Zr(),OE.insertStyleElement=ts();Gr()(zE.A,OE);zE.A&&zE.A.locals&&zE.A.locals;var NE=i(532),VE={attributes:{"data-cke":!0}};VE.setAttributes=Xr(),VE.insert=Yr().bind(null,"head"),VE.domAPI=Zr(),VE.insertStyleElement=ts();Gr()(NE.A,VE);NE.A&&NE.A.locals&&NE.A.locals;const LE=["listType","listIndent","listItemId"];class HE extends br{static get pluginName(){return"ListEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[w_,Xw,CE,By]}constructor(e){super(e),this._downcastStrategies=[],e.config.define("list.multiBlock",!0)}init(){const e=this.editor,t=e.model,o=e.config.get("list.multiBlock");if(e.plugins.has("LegacyListEditing"))throw new S("list-feature-conflict",this,{conflictPlugin:"LegacyListEditing"});t.schema.register("$listItem",{allowAttributes:LE}),o?(t.schema.extend("$container",{allowAttributesOf:"$listItem"}),t.schema.extend("$block",{allowAttributesOf:"$listItem"}),t.schema.extend("$blockObject",{allowAttributesOf:"$listItem"})):t.schema.register("listItem",{inheritAllFrom:"$block",allowAttributesOf:"$listItem"});for(const e of LE)t.schema.setAttributeProperties(e,{copyOnReplace:!0});e.commands.add("numberedList",new _E(e,"numbered")),e.commands.add("bulletedList",new _E(e,"bulleted")),e.commands.add("customNumberedList",new _E(e,"customNumbered",{multiLevel:!0})),e.commands.add("customBulletedList",new _E(e,"customBulleted",{multiLevel:!0})),e.commands.add("indentList",new kE(e,"forward")),e.commands.add("outdentList",new kE(e,"backward")),e.commands.add("splitListItemBefore",new AE(e,"before")),e.commands.add("splitListItemAfter",new AE(e,"after")),o&&(e.commands.add("mergeListItemBackward",new yE(e,"backward")),e.commands.add("mergeListItemForward",new yE(e,"forward"))),this._setupDeleteIntegration(),this._setupEnterIntegration(),this._setupTabIntegration(),this._setupClipboardIntegration(),this._setupAccessibilityIntegration()}afterInit(){const e=this.editor.commands,t=e.get("indent"),o=e.get("outdent");t&&t.registerChildCommand(e.get("indentList"),{priority:"high"}),o&&o.registerChildCommand(e.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(e){this._downcastStrategies.push(e)}getListAttributeNames(){return[...LE,...this._downcastStrategies.map((e=>e.attributeName))]}_setupDeleteIntegration(){const e=this.editor,t=e.commands.get("mergeListItemBackward"),o=e.commands.get("mergeListItemForward");this.listenTo(e.editing.view.document,"delete",((n,i)=>{const r=e.model.document.selection;mE(e.model)||e.model.change((()=>{const s=r.getFirstPosition();if(r.isCollapsed&&"backward"==i.direction){if(!s.isAtStart)return;const o=s.parent;if(!eE(o))return;if(Jx.first(o,{sameAttributes:"listType",sameIndent:!0})||0!==o.getAttribute("listIndent")){if(!t||!t.isEnabled)return;t.execute({shouldMergeOnBlocksContentLevel:jE(e.model,"backward")})}else rE(o)||e.execute("splitListItemAfter"),e.execute("outdentList");i.preventDefault(),n.stop()}else{if(r.isCollapsed&&!r.getLastPosition().isAtEnd)return;if(!o||!o.isEnabled)return;o.execute({shouldMergeOnBlocksContentLevel:jE(e.model,"forward")}),i.preventDefault(),n.stop()}}))}),{context:"li"})}_setupEnterIntegration(){const e=this.editor,t=e.model,o=e.commands,n=o.get("enter");this.listenTo(e.editing.view.document,"enter",((o,n)=>{const i=t.document,r=i.selection.getFirstPosition().parent;if(i.selection.isCollapsed&&eE(r)&&r.isEmpty&&!n.isSoft){const t=iE(r),i=rE(r);t&&i?(e.execute("outdentList"),n.preventDefault(),o.stop()):t&&!i?(e.execute("splitListItemAfter"),n.preventDefault(),o.stop()):i&&(e.execute("splitListItemBefore"),n.preventDefault(),o.stop())}}),{context:"li"}),this.listenTo(n,"afterExecute",(()=>{const t=o.get("splitListItemBefore");if(t.refresh(),!t.isEnabled)return;2===tE(e.model.document.selection.getLastPosition().parent).length&&t.execute()}))}_setupTabIntegration(){const e=this.editor;this.listenTo(e.editing.view.document,"tab",((t,o)=>{const n=o.shiftKey?"outdentList":"indentList";this.editor.commands.get(n).isEnabled&&(e.execute(n),o.stopPropagation(),o.preventDefault(),t.stop())}),{context:"li"})}_setupConversion(){const e=this.editor,t=e.model,o=this.getListAttributeNames(),n=e.config.get("list.multiBlock"),i=n?"paragraph":"listItem";e.conversion.for("upcast").elementToElement({view:"li",model:(e,{writer:t})=>t.createElement(i,{listType:""})}).elementToElement({view:"p",model:(e,{writer:t})=>e.parent&&e.parent.is("element","li")?t.createElement(i,{listType:""}):null,converterPriority:"high"}).add((e=>{e.on("element:li",IE())})),n||e.conversion.for("downcast").elementToElement({model:"listItem",view:"p"}),e.conversion.for("editingDowncast").elementToElement({model:i,view:FE(o),converterPriority:"high"}).add((e=>{var n;e.on("attribute",PE(o,this._downcastStrategies,t)),e.on("remove",(n=t.schema,(e,t,o)=>{const{writer:i,mapper:r}=o,s=e.name.split(":")[1];if(!n.checkAttribute(s,"listItemId"))return;const a=r.toViewPosition(t.position),l=t.position.getShiftedBy(t.length),c=r.toViewPosition(l,{isPhantom:!0}),d=i.createRange(a,c).getTrimmed().end.nodeBefore;d&&RE(d,i,r)}))})),e.conversion.for("dataDowncast").elementToElement({model:i,view:FE(o,{dataPipeline:!0}),converterPriority:"high"}).add((e=>{e.on("attribute",PE(o,this._downcastStrategies,t,{dataPipeline:!0}))}));const r=(s=this._downcastStrategies,a=e.editing.view,(e,t)=>{if(t.modelPosition.offset>0)return;const o=t.modelPosition.parent;if(!eE(o))return;if(!s.some((e=>"itemMarker"==e.scope&&e.canInjectMarkerIntoElement&&e.canInjectMarkerIntoElement(o))))return;const n=t.mapper.toViewElement(o),i=a.createRangeIn(n),r=i.getWalker();let l=i.start;for(const{item:e}of r){if(e.is("element")&&t.mapper.toModelElement(e)||e.is("$textProxy"))break;e.is("element")&&e.getCustomProperty("listItemMarker")&&(l=a.createPositionAfter(e),r.skip((({previousPosition:e})=>!e.isEqual(l))))}t.viewPosition=l});var s,a;e.editing.mapper.on("modelToViewPosition",r),e.data.mapper.on("modelToViewPosition",r),this.listenTo(t.document,"change:data",function(e,t,o,n){return()=>{const n=e.document.differ.getChanges(),s=[],a=new Set,l=new Set,c=new Set;for(const e of n)if("insert"==e.type&&"$text"!=e.name)TE(e.position,a,c),e.attributes.has("listItemId")?l.add(e.position.nodeAfter):TE(e.position.getShiftedBy(e.length),a,c);else if("remove"==e.type&&e.attributes.has("listItemId"))TE(e.position,a,c);else if("attribute"==e.type){const t=e.range.start.nodeAfter;o.includes(e.attributeKey)?(TE(e.range.start,a,c),null===e.attributeNewValue?(TE(e.range.start.getShiftedBy(1),a,c),r(t)&&s.push(t)):l.add(t)):eE(t)&&r(t)&&s.push(t)}for(const e of a.values())s.push(...i(e,l));for(const e of new Set(s))t.reconvertItem(e)};function i(e,t){const n=[],i=new Set,a=[];for(const{node:l,previous:c}of new Yx(e)){if(i.has(l))continue;const e=l.getAttribute("listIndent");c&&eo.includes(e))));const d=oE(l,{direction:"forward"});for(const e of d)i.add(e),(r(e,d)||s(e,a,t))&&n.push(e)}return n}function r(e,i){const r=t.mapper.toViewElement(e);if(!r)return!1;if(n.fire("checkElement",{modelElement:e,viewElement:r}))return!0;if(!e.is("element","paragraph")&&!e.is("element","listItem"))return!1;const s=ME(e,o,i);return!(!s||!r.is("element","p"))||!(s||!r.is("element","span"))}function s(e,o,i){if(i.has(e))return!1;const r=t.mapper.toViewElement(e);let s=o.length-1;for(let e=r.parent;!e.is("editableElement");e=e.parent){const t=xE(e),i=vE(e);if(!i&&!t)continue;const r="checkAttributes:"+(t?"item":"list");if(n.fire(r,{viewElement:e,modelAttributes:o[s]}))break;if(i&&(s--,s<0))return!1}return!0}}(t,e.editing,o,this),{priority:"high"}),this.on("checkAttributes:item",((e,{viewElement:t,modelAttributes:o})=>{t.id!=o.listItemId&&(e.return=!0,e.stop())})),this.on("checkAttributes:list",((e,{viewElement:t,modelAttributes:o})=>{t.name==BE(o.listType)&&t.id==SE(o.listType,o.listIndent)||(e.return=!0,e.stop())}))}_setupModelPostFixing(){const e=this.editor.model,t=this.getListAttributeNames();e.document.registerPostFixer((o=>function(e,t,o,n){const i=e.document.differ.getChanges(),r=new Set,s=new Set,a=n.editor.config.get("list.multiBlock");let l=!1;for(const n of i){if("insert"==n.type&&"$text"!=n.name){const i=n.position.nodeAfter;if(!e.schema.checkAttribute(i,"listItemId"))for(const e of Array.from(i.getAttributeKeys()))o.includes(e)&&(t.removeAttribute(e,i),l=!0);TE(n.position,s,r),n.attributes.has("listItemId")||TE(n.position.getShiftedBy(n.length),s,r);for(const{item:t,previousPosition:o}of e.createRangeIn(i))eE(t)&&TE(o,s,r)}else"remove"==n.type?TE(n.position,s,r):"attribute"==n.type&&o.includes(n.attributeKey)&&(TE(n.range.start,s,r),null===n.attributeNewValue&&TE(n.range.start.getShiftedBy(1),s,r));if(!a&&"attribute"==n.type&&LE.includes(n.attributeKey)){const e=n.range.start.nodeAfter;null===n.attributeNewValue&&e&&e.is("element","listItem")?(t.rename(e,"paragraph"),l=!0):null===n.attributeOldValue&&e&&e.is("element")&&"listItem"!=e.name&&(t.rename(e,"listItem"),l=!0)}}const c=new Set;for(const e of s.values())l=n.fire("postFixer",{listNodes:new Qx(e),listHead:e,writer:t,seenIds:c})||l;return l}(e,o,t,this))),this.on("postFixer",((e,{listNodes:t,writer:o})=>{e.return=function(e,t){let o=0,n=-1,i=null,r=!1;for(const{node:s}of e){const e=s.getAttribute("listIndent");if(e>o){let a;null===i?(i=e-o,a=o):(i>e&&(i=e),a=e-i),a>n+1&&(a=n+1),t.setAttribute("listIndent",a,s),r=!0,n=a}else i=null,o=e+1,n=e}return r}(t,o)||e.return}),{priority:"high"}),this.on("postFixer",((e,{listNodes:t,writer:o,seenIds:n})=>{e.return=function(e,t,o){const n=new Set;let i=!1;for(const{node:r}of e){if(n.has(r))continue;let e=r.getAttribute("listType"),s=r.getAttribute("listItemId");if(t.has(s)&&(s=Xx.next()),t.add(s),r.is("element","listItem"))r.getAttribute("listItemId")!=s&&(o.setAttribute("listItemId",s,r),i=!0);else for(const t of oE(r,{direction:"forward"}))n.add(t),t.getAttribute("listType")!=e&&(s=Xx.next(),e=t.getAttribute("listType")),t.getAttribute("listItemId")!=s&&(o.setAttribute("listItemId",s,t),i=!0)}return i}(t,n,o)||e.return}),{priority:"high"})}_setupClipboardIntegration(){const e=this.editor.model,t=this.editor.plugins.get("ClipboardPipeline");this.listenTo(e,"insertContent",function(e){return(t,[o,n])=>{const i=o.is("documentFragment")?Array.from(o.getChildren()):[o];if(!i.length)return;const r=(n?e.createSelection(n):e.document.selection).getFirstPosition();let s;if(eE(r.parent))s=r.parent;else{if(!eE(r.nodeBefore)||!eE(r.nodeAfter))return;s=r.nodeBefore}e.change((e=>{const t=s.getAttribute("listType"),o=s.getAttribute("listIndent"),n=i[0].getAttribute("listIndent")||0,r=Math.max(o-n,0);for(const o of i){const n=eE(o);s.is("element","listItem")&&o.is("element","paragraph")&&e.rename(o,"listItem"),e.setAttributes({listIndent:(n?o.getAttribute("listIndent"):0)+r,listItemId:n?o.getAttribute("listItemId"):Xx.next(),listType:t},o)}}))}}(e),{priority:"high"}),this.listenTo(t,"outputTransformation",((t,o)=>{e.change((e=>{const t=Array.from(o.content.getChildren()),n=t[t.length-1];if(t.length>1&&n.is("element")&&n.isEmpty){t.slice(0,-1).every(eE)&&e.remove(n)}if("copy"==o.method||"cut"==o.method){const t=Array.from(o.content.getChildren());hE(t)&&uE(t,e)}}))}))}_setupAccessibilityIntegration(){const e=this.editor,t=e.t;e.accessibility.addKeystrokeInfoGroup({id:"list",label:t("Keystrokes that can be used in a list"),keystrokes:[{label:t("Increase list item indent"),keystroke:"Tab"},{label:t("Decrease list item indent"),keystroke:"Shift+Tab"}]})}}function jE(e,t){const o=e.document.selection;if(!o.isCollapsed)return!mE(e);if("forward"===t)return!0;const n=o.getFirstPosition().parent,i=n.previousSibling;return!e.schema.isObject(i)&&(!!i.isEmpty||hE([n,i]))}function qE(e,t,o,n){e.ui.componentFactory.add(t,(()=>{const i=$E(Kp,e,t,o,n);return i.set({tooltip:!0,isToggleable:!0}),i})),e.ui.componentFactory.add(`menuBar:${t}`,(()=>{const i=$E(Em,e,t,o,n);return i.set({role:"menuitemcheckbox",isToggleable:!0}),i}))}function $E(e,t,o,n,i){const r=t.commands.get(o),s=new e(t.locale);return s.set({label:n,icon:i}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.on("execute",(()=>{t.execute(o),t.editing.view.focus()})),s}class UE extends br{static get pluginName(){return"ListUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.t;this.editor.ui.componentFactory.has("numberedList")||qE(this.editor,"numberedList",e("Numbered List"),up.numberedList),this.editor.ui.componentFactory.has("bulletedList")||qE(this.editor,"bulletedList",e("Bulleted List"),up.bulletedList)}}class WE extends br{static get requires(){return[HE,UE]}static get pluginName(){return"List"}static get isOfficialPlugin(){return!0}}const GE={},KE={},ZE={},JE=[{listStyle:"disc",typeAttribute:"disc",listType:"bulleted"},{listStyle:"circle",typeAttribute:"circle",listType:"bulleted"},{listStyle:"square",typeAttribute:"square",listType:"bulleted"},{listStyle:"decimal",typeAttribute:"1",listType:"numbered"},{listStyle:"decimal-leading-zero",typeAttribute:null,listType:"numbered"},{listStyle:"lower-roman",typeAttribute:"i",listType:"numbered"},{listStyle:"upper-roman",typeAttribute:"I",listType:"numbered"},{listStyle:"lower-alpha",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-alpha",typeAttribute:"A",listType:"numbered"},{listStyle:"lower-latin",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-latin",typeAttribute:"A",listType:"numbered"}];for(const{listStyle:e,typeAttribute:t,listType:o}of JE)GE[e]=o,KE[e]=t,t&&(ZE[t]=e);var YE=i(1911),QE={attributes:{"data-cke":!0}};QE.setAttributes=Xr(),QE.insert=Yr().bind(null,"head"),QE.domAPI=Zr(),QE.insertStyleElement=ts();Gr()(YE.A,QE);YE.A&&YE.A.locals&&YE.A.locals;var XE=i(1330),eD={attributes:{"data-cke":!0}};eD.setAttributes=Xr(),eD.insert=Yr().bind(null,"head"),eD.domAPI=Zr(),eD.insertStyleElement=ts();Gr()(XE.A,eD);XE.A&&XE.A.locals&&XE.A.locals;class tD extends wr{constructor(e){super(e),this.on("execute",(()=>{this.refresh()}),{priority:"highest"})}refresh(){const e=this._getSelectedItems();this.value=this._getValue(e),this.isEnabled=!!e.length}execute(e={}){this.editor.model.change((t=>{const o=this._getSelectedItems(),n=void 0===e.forceValue?!this._getValue(o):e.forceValue;for(const e of o)n?t.setAttribute("todoListChecked",!0,e):t.removeAttribute("todoListChecked",e)}))}_getValue(e){return e.every((e=>e.getAttribute("todoListChecked")))}_getSelectedItems(){const e=this.editor.model,t=e.schema,o=e.document.selection.getFirstRange(),n=o.start.parent,i=[];t.checkAttribute(n,"todoListChecked")&&i.push(...tE(n));for(const e of o.getItems({shallow:!0}))t.checkAttribute(e,"todoListChecked")&&!i.includes(e)&&i.push(...tE(e));return i}}class oD extends nl{constructor(){super(...arguments),this.domEventType=["change"]}onDomEvent(e){if(e.target){const t=this.view.domConverter.mapDomToView(e.target);t&&t.is("element","input")&&"checkbox"==t.getAttribute("type")&&t.findAncestor({classes:"todo-list__label"})&&this.fire("todoCheckboxChange",e)}}}const nD=xi("Ctrl+Enter");class iD extends br{static get pluginName(){return"TodoListEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[HE]}init(){const e=this.editor,t=e.model,o=e.editing,n=e.plugins.get(HE),i=e.config.get("list.multiBlock")?"paragraph":"listItem";e.commands.add("todoList",new _E(e,"todo")),e.commands.add("checkTodoList",new tD(e)),o.view.addObserver(oD),t.schema.extend("$listItem",{allowAttributes:"todoListChecked"}),t.schema.addAttributeCheck((e=>{const t=e.last;if(!t.getAttribute("listItemId")||"todo"!=t.getAttribute("listType"))return!1}),"todoListChecked"),e.conversion.for("upcast").add((e=>{e.on("element:input",((e,t,o)=>{const n=t.modelCursor,i=n.parent,r=t.viewItem;if(!o.consumable.test(r,{name:!0}))return;if("checkbox"!=r.getAttribute("type")||!n.isAtStart||!i.hasAttribute("listType"))return;o.consumable.consume(r,{name:!0});const s=o.writer;s.setAttribute("listType","todo",i),t.viewItem.hasAttribute("checked")&&s.setAttribute("todoListChecked",!0,i),t.modelRange=s.createRange(n)})),e.on("element:li",((e,t,o)=>{const{writer:n,schema:i}=o;if(!t.modelRange)return;const r=Array.from(t.modelRange.getItems({shallow:!0})).filter((e=>"todo"===e.getAttribute("listType")&&i.checkAttribute(e,"listItemId"))).reduce(((e,t)=>{const o=t.getAttribute("listItemId");return e.has(o)||e.set(o,tE(t)),e}),new Map);for(const[,e]of r.entries())if(e.some((e=>e.getAttribute("todoListChecked"))))for(const t of e)n.setAttribute("todoListChecked",!0,t)}),{priority:"low"}),e.on("element:label",rD({name:"label",classes:"todo-list__label"})),e.on("element:label",rD({name:"label",classes:["todo-list__label","todo-list__label_without-description"]})),e.on("element:span",rD({name:"span",classes:"todo-list__label__description"})),e.on("element:ul",function(e){const t=new As(e);return(e,o,n)=>{const i=t.match(o.viewItem);if(!i)return;const r=i.match;r.name=!1,n.consumable.consume(o.viewItem,r)}}({name:"ul",classes:"todo-list"}))})),e.conversion.for("downcast").elementToElement({model:i,view:(e,{writer:t})=>{if(sD(e,n.getListAttributeNames()))return t.createContainerElement("span",{class:"todo-list__label__description"})},converterPriority:"highest"}),n.registerDowncastStrategy({scope:"list",attributeName:"listType",setAttributeOnDowncast(e,t,o){"todo"==t?e.addClass("todo-list",o):e.removeClass("todo-list",o)}}),n.registerDowncastStrategy({scope:"itemMarker",attributeName:"todoListChecked",createElement(e,t,{dataPipeline:o}){if("todo"!=t.getAttribute("listType"))return null;const n=e.createUIElement("input",{type:"checkbox",...t.getAttribute("todoListChecked")?{checked:"checked"}:null,...o?{disabled:"disabled"}:{tabindex:"-1"}});if(o)return n;const i=e.createContainerElement("span",{contenteditable:"false"},n);return i.getFillerOffset=()=>null,i},canWrapElement:e=>sD(e,n.getListAttributeNames()),createWrapperElement(e,t,{dataPipeline:o}){const i=["todo-list__label"];return sD(t,n.getListAttributeNames())||i.push("todo-list__label_without-description"),e.createAttributeElement(o?"label":"span",{class:i.join(" ")})}}),n.on("checkElement",((e,{modelElement:t,viewElement:o})=>{const i=sD(t,n.getListAttributeNames());o.hasClass("todo-list__label__description")!=i&&(e.return=!0,e.stop())})),n.on("checkElement",((t,{modelElement:o,viewElement:n})=>{const i="todo"==o.getAttribute("listType")&&iE(o);let r=!1;const s=e.editing.view.createPositionBefore(n).getWalker({direction:"backward"});for(const{item:t}of s){if(t.is("element")&&e.editing.mapper.toModelElement(t))break;t.is("element","input")&&"checkbox"==t.getAttribute("type")&&(r=!0)}r!=i&&(t.return=!0,t.stop())})),n.on("postFixer",((e,{listNodes:t,writer:o})=>{for(const{node:n,previousNodeInList:i}of t){if(!i)continue;if(i.getAttribute("listItemId")!=n.getAttribute("listItemId"))continue;const t=i.hasAttribute("todoListChecked"),r=n.hasAttribute("todoListChecked");r&&!t?(o.removeAttribute("todoListChecked",n),e.return=!0):!r&&t&&(o.setAttribute("todoListChecked",!0,n),e.return=!0)}})),t.document.registerPostFixer((e=>{const o=t.document.differ.getChanges();let n=!1;for(const t of o)if("attribute"==t.type&&"listType"==t.attributeKey){const o=t.range.start.nodeAfter;"todo"==t.attributeOldValue&&o.hasAttribute("todoListChecked")&&(e.removeAttribute("todoListChecked",o),n=!0)}else if("insert"==t.type&&"$text"!=t.name)for(const{item:o}of e.createRangeOn(t.position.nodeAfter))o.is("element")&&"todo"!=o.getAttribute("listType")&&o.hasAttribute("todoListChecked")&&(e.removeAttribute("todoListChecked",o),n=!0);return n})),this.listenTo(o.view.document,"keydown",((t,o)=>{vi(o)===nD&&(e.execute("checkTodoList"),t.stop())}),{priority:"high"}),this.listenTo(o.view.document,"todoCheckboxChange",((e,t)=>{const n=t.target;if(!n||!n.is("element","input"))return;const i=o.view.createPositionAfter(n),r=o.mapper.toModelPosition(i).parent;r&&eE(r)&&"todo"==r.getAttribute("listType")&&this._handleCheckmarkChange(r)})),this.listenTo(o.view.document,"arrowKey",function(e,t){return(o,n)=>{const i=Di(n.keyCode,t.contentLanguageDirection),r=e.schema,s=e.document.selection;if(!s.isCollapsed)return;const a=s.getFirstPosition(),l=a.parent;if("right"==i&&a.isAtEnd){const t=r.getNearestSelectionRange(e.createPositionAfter(l),"forward");if(!t)return;const i=t.start.parent;i&&eE(i)&&"todo"==i.getAttribute("listType")&&(e.change((e=>e.setSelection(t))),n.preventDefault(),n.stopPropagation(),o.stop())}else if("left"==i&&a.isAtStart&&eE(l)&&"todo"==l.getAttribute("listType")){const t=r.getNearestSelectionRange(e.createPositionBefore(l),"backward");if(!t)return;e.change((e=>e.setSelection(t))),n.preventDefault(),n.stopPropagation(),o.stop()}}}(t,e.locale),{context:"$text"}),this.listenTo(o.mapper,"viewToModelPosition",((e,o)=>{const n=o.viewPosition.parent,i=n.is("attributeElement","li")&&0==o.viewPosition.offset,r=aD(n)&&o.viewPosition.offset<=1,s=n.is("element","span")&&"false"==n.getAttribute("contenteditable")&&aD(n.parent);if(!i&&!r&&!s)return;const a=o.modelPosition.nodeAfter;a&&"todo"==a.getAttribute("listType")&&(o.modelPosition=t.createPositionAt(a,0))}),{priority:"low"}),this._initAriaAnnouncements()}_handleCheckmarkChange(e){const t=this.editor,o=t.model,n=Array.from(o.document.selection.getRanges());o.change((o=>{o.setSelection(e,"end"),t.execute("checkTodoList"),o.setSelection(n)}))}_initAriaAnnouncements(){const{model:e,ui:t,t:o}=this.editor;let n=null;t&&e.document.selection.on("change:range",(()=>{const i=e.document.selection.focus.parent,r=lD(n),s=lD(i);r&&!s?t.ariaLiveAnnouncer.announce(o("Leaving a to-do list")):!r&&s&&t.ariaLiveAnnouncer.announce(o("Entering a to-do list")),n=i}))}}function rD(e){const t=new As(e);return(e,o,n)=>{const i=t.match(o.viewItem);i&&n.consumable.consume(o.viewItem,i.match)&&Object.assign(o,n.convertChildren(o.viewItem,o.modelCursor))}}function sD(e,t){return(e.is("element","paragraph")||e.is("element","listItem"))&&"todo"==e.getAttribute("listType")&&iE(e)&&function(e,t){for(const o of e.getAttributeKeys())if(!o.startsWith("selection:")&&!t.includes(o))return!1;return!0}(e,t)}function aD(e){return!!e&&e.is("attributeElement")&&e.hasClass("todo-list__label")}function lD(e){return!!e&&(!(!e.is("element","paragraph")&&!e.is("element","listItem"))&&"todo"==e.getAttribute("listType"))}class cD extends br{static get pluginName(){return"TodoListUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.t;qE(this.editor,"todoList",e("To-do List"),up.todoList)}}var dD=i(5484),uD={attributes:{"data-cke":!0}};uD.setAttributes=Xr(),uD.insert=Yr().bind(null,"head"),uD.domAPI=Zr(),uD.insertStyleElement=ts();Gr()(dD.A,uD);dD.A&&dD.A.locals&&dD.A.locals;class hD extends br{static get requires(){return[iD,cD]}static get pluginName(){return"TodoList"}static get isOfficialPlugin(){return!0}}const pD=Symbol("isOPCodeBlock");function mD(e){return!!e.getCustomProperty(pD)&&ww(e)}function gD(e){const t=e.getSelectedElement();return!(!t||!mD(t))}function fD(e,t,o){const n=t.createContainerElement("pre",{title:window.I18n.t("js.editor.macro.toolbar_help")});return bD(t,e,n),function(e,t,o){return t.setCustomProperty(pD,!0,e),_w(e,t,{label:o})}(n,t,o)}function bD(e,t,o){const n=(t.getAttribute("opCodeblockLanguage")||"language-text").replace(/^language-/,""),i=e.createContainerElement("div",{class:"op-uc-code-block--language"});kD(e,n,i,"text"),e.insert(e.createPositionAt(o,0),i);kD(e,t.getAttribute("opCodeblockContent"),o,"(empty)")}function kD(e,t,o,n){const i=e.createText(t||n);e.insert(e.createPositionAt(o,0),i)}class wD extends nl{constructor(e){super(e),this.domEventType="dblclick"}onDomEvent(e){this.fire(e.type,e)}}class _D extends br{static get pluginName(){return"CodeBlockEditing"}init(){const e=this.editor,t=e.model.schema,o=e.conversion,n=e.editing.view,i=n.document,r=Pw(e);var s,a;t.register("codeblock",{isObject:!0,isBlock:!0,allowContentOf:"$block",allowWhere:["$root","$block"],allowIn:["$root"],allowAttributes:["opCodeblockLanguage","opCodeblockContent"]}),o.for("upcast").add(function(){return t=>{t.on("element:pre",e,{priority:"high"})};function e(e,t,o){if(!o.consumable.test(t.viewItem,{name:!0}))return;const n=Array.from(t.viewItem.getChildren()).find((e=>e.is("element","code")));if(!n||!o.consumable.consume(n,{name:!0}))return;const i=o.writer.createElement("codeblock");o.writer.setAttribute("opCodeblockLanguage",n.getAttribute("class"),i);const r=o.splitToAllowedParent(i,t.modelCursor);if(r){o.writer.insert(i,r.position);const e=n.getChild(0);if(e){o.consumable.consume(e,{name:!0});const t=e.data.replace(/\n$/,"");o.writer.setAttribute("opCodeblockContent",t,i)}t.modelRange=new lc(o.writer.createPositionBefore(i),o.writer.createPositionAfter(i)),t.modelCursor=t.modelRange.end}}}()),o.for("editingDowncast").elementToElement({model:"codeblock",view:(e,{writer:t})=>fD(e,t,"Code block")}).add(function(){return t=>{t.on("attribute:opCodeblockContent",e),t.on("attribute:opCodeblockLanguage",e)};function e(e,t,o){const n=t.item;o.consumable.consume(t.item,e.name);const i=o.mapper.toViewElement(n);o.writer.remove(o.writer.createRangeOn(i.getChild(1))),o.writer.remove(o.writer.createRangeOn(i.getChild(0))),bD(o.writer,n,i)}}()),o.for("dataDowncast").add(function(){return t=>{t.on("insert:codeblock",e,{priority:"high"})};function e(e,t,o){const n=t.item,i=n.getAttribute("opCodeblockLanguage")||"language-text",r=n.getAttribute("opCodeblockContent");o.consumable.consume(n,"insert");const s=o.writer,a=s.createContainerElement("pre"),l=s.createContainerElement("div",{class:"op-uc-code-block--language"}),c=s.createContainerElement("code",{class:i}),d=s.createText(i),u=s.createText(r);s.insert(s.createPositionAt(c,0),u),s.insert(s.createPositionAt(l,0),d),s.insert(s.createPositionAt(a,0),l),s.insert(s.createPositionAt(a,0),c),o.mapper.bindElements(n,c),o.mapper.bindElements(n,a),o.mapper.bindElements(n,l);const h=o.mapper.toViewPosition(t.range.start);s.insert(h,a),e.stop()}}()),this.editor.editing.mapper.on("viewToModelPosition",(s=this.editor.model,a=e=>e.hasClass("op-uc-code-block"),(e,t)=>{const{mapper:o,viewPosition:n}=t,i=o.findMappedViewAncestor(n);if(!a(i))return;const r=o.toModelElement(i);t.modelPosition=s.createPositionAt(r,n.isAtStart?"before":"after")})),n.addObserver(wD),this.listenTo(i,"dblclick",((t,o)=>{let n=o.target,i=o.domEvent;if(i.shiftKey||i.altKey||i.metaKey)return;if(!mD(n)&&(n=n.findAncestor(mD),!n))return;o.preventDefault(),o.stopPropagation();const s=e.editing.mapper.toModelElement(n),a=r.services.macros,l=s.getAttribute("opCodeblockLanguage"),c=s.getAttribute("opCodeblockContent");a.editCodeBlock(c,l).then((t=>e.model.change((e=>{e.setAttribute("opCodeblockLanguage",t.languageClass,s),e.setAttribute("opCodeblockContent",t.content,s)}))))})),e.ui.componentFactory.add("insertCodeBlock",(t=>{const o=new Kp(t);return o.set({label:window.I18n.t("js.editor.macro.code_block.button"),icon:'\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n image/svg+xml\n \n \n \n \n\n',tooltip:!0}),o.on("execute",(()=>{r.services.macros.editCodeBlock().then((t=>e.model.change((o=>{const n=o.createElement("codeblock");o.setAttribute("opCodeblockLanguage",t.languageClass,n),o.setAttribute("opCodeblockContent",t.content,n),e.model.insertContent(n,e.model.document.selection)}))))})),o}))}}class yD extends br{static get requires(){return[kk]}static get pluginName(){return"CodeBlockToolbar"}init(){const e=this.editor,t=this.editor.model,o=Pw(e);G_(e,"opEditCodeBlock",(e=>{const n=o.services.macros,i=e.getAttribute("opCodeblockLanguage"),r=e.getAttribute("opCodeblockContent");n.editCodeBlock(r,i).then((o=>t.change((t=>{t.setAttribute("opCodeblockLanguage",o.languageClass,e),t.setAttribute("opCodeblockContent",o.content,e)}))))}))}afterInit(){Z_(this,this.editor,"OPCodeBlock",gD)}}function AD(e){return e.__currentlyDisabled=e.__currentlyDisabled||[],e.ui.view.toolbar?e.ui.view.toolbar.items._items:[]}function CD(e,t){AD(e).forEach((o=>{let n=o;o instanceof Lm?n=o.buttonView:o!==t&&Object.prototype.hasOwnProperty.call(o,"isEnabled")||(n=null),n&&(n.isEnabled?n.isEnabled=!1:e.__currentlyDisabled.push(n))}))}function vD(e){AD(e).forEach((t=>{let o=t;t instanceof Lm&&(o=t.buttonView),e.__currentlyDisabled.indexOf(o)<0&&(o.isEnabled=!0)})),e.__currentlyDisabled=[]}class xD{constructor(e){this.response=e}get statusCode(){return this.response.status}get redirected(){return this.response.redirected}get ok(){return this.response.ok}get unauthenticated(){return 401===this.statusCode}get unprocessableEntity(){return 422===this.statusCode}get authenticationURL(){return this.response.headers.get("WWW-Authenticate")}get contentType(){return(this.response.headers.get("Content-Type")||"").replace(/;.*$/,"")}get headers(){return this.response.headers}get html(){return this.contentType.match(/^(application|text)\/(html|xhtml\+xml)$/)?this.text:Promise.reject(new Error(`Expected an HTML response but got "${this.contentType}" instead`))}get json(){return this.contentType.match(/^application\/.*json$/)?this.responseJson||(this.responseJson=this.response.json()):Promise.reject(new Error(`Expected a JSON response but got "${this.contentType}" instead`))}get text(){return this.responseText||(this.responseText=this.response.text())}get isTurboStream(){return this.contentType.match(/^text\/vnd\.turbo-stream\.html/)}get isScript(){return this.contentType.match(/\b(?:java|ecma)script\b/)}async renderTurboStream(){if(!this.isTurboStream)return Promise.reject(new Error(`Expected a Turbo Stream response but got "${this.contentType}" instead`));window.Turbo?await window.Turbo.renderStreamMessage(await this.text):console.warn("You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js")}async activeScript(){if(!this.isScript)return Promise.reject(new Error(`Expected a Script response but got "${this.contentType}" instead`));{const e=document.createElement("script"),t=document.querySelector("meta[name=csp-nonce]");if(t){const o=""===t.nonce?t.content:t.nonce;o&&e.setAttribute("nonce",o)}e.innerHTML=await this.text,document.body.appendChild(e)}}}class ED{static register(e){this.interceptor=e}static get(){return this.interceptor}static reset(){this.interceptor=void 0}}function DD(e){const t=document.head.querySelector(`meta[name="${e}"]`);return t&&t.content}class BD{constructor(e,t,o={}){this.method=e,this.options=o,this.originalUrl=t.toString()}async perform(){try{const e=ED.get();e&&await e(this)}catch(e){console.error(e)}const e=window.Turbo?window.Turbo.fetch:window.fetch,t=new xD(await e(this.url,this.fetchOptions));if(t.unauthenticated&&t.authenticationURL)return Promise.reject(window.location.href=t.authenticationURL);t.isScript&&await t.activeScript();return(t.ok||t.unprocessableEntity)&&t.isTurboStream&&await t.renderTurboStream(),t}addHeader(e,t){const o=this.additionalHeaders;o[e]=t,this.options.headers=o}sameHostname(){if(!this.originalUrl.startsWith("http:")&&!this.originalUrl.startsWith("https:"))return!0;try{return new URL(this.originalUrl).hostname===window.location.hostname}catch(e){return!0}}get fetchOptions(){return{method:this.method.toUpperCase(),headers:this.headers,body:this.formattedBody,signal:this.signal,credentials:this.credentials,redirect:this.redirect,keepalive:this.keepalive}}get headers(){const e={"X-Requested-With":"XMLHttpRequest","Content-Type":this.contentType,Accept:this.accept};return this.sameHostname()&&(e["X-CSRF-Token"]=this.csrfToken),function(e){const t={};for(const o in e){const n=e[o];void 0!==n&&(t[o]=n)}return t}(Object.assign(e,this.additionalHeaders))}get csrfToken(){return function(e){const t=document.cookie?document.cookie.split("; "):[],o=`${encodeURIComponent(e)}=`,n=t.find((e=>e.startsWith(o)));if(n){const e=n.split("=").slice(1).join("=");if(e)return decodeURIComponent(e)}}(DD("csrf-param"))||DD("csrf-token")}get contentType(){return this.options.contentType?this.options.contentType:null==this.body||this.body instanceof window.FormData?void 0:this.body instanceof window.File?this.body.type:"application/json"}get accept(){switch(this.responseKind){case"html":return"text/html, application/xhtml+xml";case"turbo-stream":return"text/vnd.turbo-stream.html, text/html, application/xhtml+xml";case"json":return"application/json, application/vnd.api+json";case"script":return"text/javascript, application/javascript";default:return"*/*"}}get body(){return this.options.body}get query(){const e=(this.originalUrl.split("?")[1]||"").split("#")[0],t=new URLSearchParams(e);let o=this.options.query;var n;o instanceof window.FormData?(n=o,o=[...n].reduce(((e,[t,o])=>e.concat("string"==typeof o?[[t,o]]:[])),[])):o=o instanceof window.URLSearchParams?o.entries():Object.entries(o||{}),function(e,t){for(const[o,n]of t)n instanceof window.File||(e.has(o)&&!o.includes("[]")?(e.delete(o),e.set(o,n)):e.append(o,n))}(t,o);const i=t.toString();return i.length>0?`?${i}`:""}get url(){return this.originalUrl.split("?")[0].split("#")[0]+this.query}get responseKind(){return this.options.responseKind||"html"}get signal(){return this.options.signal}get redirect(){return this.options.redirect||"follow"}get credentials(){return this.options.credentials||"same-origin"}get keepalive(){return this.options.keepalive||!1}get additionalHeaders(){return this.options.headers||{}}get formattedBody(){const e="[object String]"===Object.prototype.toString.call(this.body);return"application/json"===this.headers["Content-Type"]&&!e?JSON.stringify(this.body):this.body}}async function SD(e,t){return new BD("get",e,t).perform()}function TD(e,t){const{modelAttribute:o,styleName:n,viewElement:i,defaultValue:r,reduceBoxSides:s=!1,shouldUpcast:a=()=>!0}=t;e.for("upcast").attributeToAttribute({view:{name:i,styles:{[n]:/[\s\S]+/}},model:{key:o,value:e=>{if(!a(e))return;const t=e.getNormalizedStyle(n),o=s?RD(t):t;return r!==o?o:void 0}}})}function ID(e,t,o,n){e.for("upcast").add((e=>e.on("element:"+t,((e,t,i)=>{if(!t.modelRange)return;const r=["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(!r.length)return;const s={styles:r};if(!i.consumable.test(t.viewItem,s))return;const a=[...t.modelRange.getItems({shallow:!0})].pop();i.consumable.consume(t.viewItem,s);const l={style:t.viewItem.getNormalizedStyle("border-style"),color:t.viewItem.getNormalizedStyle("border-color"),width:t.viewItem.getNormalizedStyle("border-width")},c={style:RD(l.style),color:RD(l.color),width:RD(l.width)};c.style!==n.style&&i.writer.setAttribute(o.style,c.style,a),c.color!==n.color&&i.writer.setAttribute(o.color,c.color,a),c.width!==n.width&&i.writer.setAttribute(o.width,c.width,a)}))))}function PD(e,t){const{modelElement:o,modelAttribute:n,styleName:i}=t;e.for("downcast").attributeToAttribute({model:{name:o,key:n},view:e=>({key:"style",value:{[i]:e}})})}function FD(e,t){const{modelAttribute:o,styleName:n}=t;e.for("downcast").add((e=>e.on(`attribute:${o}:table`,((e,t,o)=>{const{item:i,attributeNewValue:r}=t,{mapper:s,writer:a}=o;if(!o.consumable.consume(t.item,e.name))return;const l=[...s.toViewElement(i).getChildren()].find((e=>e.is("element","table")));r?a.setStyle(n,r,l):a.removeStyle(n,l)}))))}function RD(e){if(!e)return;const t=["top","right","bottom","left"];if(!t.every((t=>e[t])))return e;const o=e.top;return t.every((t=>e[t]===o))?o:e}function MD(e,t,o,n,i=1){null!=t&&null!=i&&t>i?n.setAttribute(e,t,o):n.removeAttribute(e,o)}function zD(e,t,o={}){const n=e.createElement("tableCell",o);return e.insertElement("paragraph",n),e.insert(n,t),n}function OD(e,t){const o=t.parent.parent,n=parseInt(o.getAttribute("headingColumns")||"0"),{column:i}=e.getCellLocation(t);return!!n&&i{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){let t,o=0;const n=[],i=[];let r;for(const s of Array.from(e.getChildren())){if("tbody"!==s.name&&"thead"!==s.name&&"tfoot"!==s.name)continue;"thead"!==s.name||r||(r=s);const e=Array.from(s.getChildren()).filter((e=>e.is("element","tr")));let a=null;for(const l of e){const e=Array.from(l.getChildren()).filter((e=>e.is("element","td")||e.is("element","th")));if(r&&s===r||"tbody"===s.name&&e.length>0&&(null===a||e.length===a)&&e.every((e=>e.is("element","th"))))o++,n.push(l);else{i.push(l);const e=jD(l);(!t||eo.convertItem(e,o.writer.createPositionAt(l,"end")))),o.convertChildren(n,o.writer.createPositionAt(l,"end")),l.isEmpty){const e=o.writer.createElement("tableRow");o.writer.insert(e,o.writer.createPositionAt(l,"end")),zD(o.writer,o.writer.createPositionAt(e,"end"))}o.updateConversionResult(l,t)}}))}}function HD(e){return t=>{t.on(`element:${e}`,((e,t,{writer:o})=>{if(!t.modelRange)return;const n=t.modelRange.start.nodeAfter,i=o.createPositionAt(n,0);if(t.viewItem.isEmpty)return void o.insertElement("paragraph",i);const r=Array.from(n.getChildren());if(r.every((e=>e.is("element","$marker")))){const e=o.createElement("paragraph");o.insert(e,o.createPositionAt(n,0));for(const t of r)o.move(o.createRangeOn(t),o.createPositionAt(e,"end"))}}),{priority:"low"})}}function jD(e){let t=0,o=0;const n=Array.from(e.getChildren()).filter((e=>"th"===e.name||"td"===e.name));for(;o1||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 $D(this,e,t,o)}}_shouldSkipSlot(){const e=this._skipRows.has(this._row),t=this._rowthis._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;e0&&!this._jumpedToStartRow}_jumpToNonSpannedRowClosestToStartRow(){const e=this._getRowLength(0);for(let t=this._startRow;!this._jumpedToStartRow;t--)e===this._getRowLength(t)&&(this._row=t,this._rowIndex=t,this._jumpedToStartRow=!0)}_getRowLength(e){return[...this._table.getChild(e).getChildren()].reduce(((e,t)=>e+parseInt(t.getAttribute("colspan")||"1")),0)}}class $D{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 UD(e,t){return(o,{writer:n})=>{const i=o.getAttribute("headingRows")||0,r=n.createContainerElement("table",null,[]),s=n.createContainerElement("figure",{class:"table"},r);i>0&&n.insert(n.createPositionAt(r,"end"),n.createContainerElement("thead",null,n.createSlot((e=>e.is("element","tableRow")&&e.indexe.is("element","tableRow")&&e.index>=i))));for(const{positionOffset:e,filter:o}of t.additionalSlots)n.insert(n.createPositionAt(r,e),n.createSlot(o));return n.insert(n.createPositionAt(r,"after"),n.createSlot((e=>!e.is("element","tableRow")&&!t.additionalSlots.some((({filter:t})=>t(e)))))),t.asWidget?function(e,t){return t.setCustomProperty("table",!0,e),_w(e,t,{hasSelectionHandle:!0})}(s,n):s}}function WD(e={}){return(t,{writer:o})=>{const n=t.parent,i=n.parent,r=i.getChildIndex(n),s=new qD(i,{row:r}),a=i.getAttribute("headingRows")||0,l=i.getAttribute("headingColumns")||0;let c=null;for(const n of s)if(n.cell==t){const t=n.row{if(!t.parent.is("element","tableCell"))return null;if(!KD(t))return null;if(e.asWidget)return o.createContainerElement("span",{class:"ck-table-bogus-paragraph"});{const e=o.createContainerElement("p");return o.setCustomProperty("dataPipeline:transparentRendering",!0,e),e}}}function KD(e){return 1==e.parent.childCount&&!function(e){for(const t of e.getAttributeKeys())if(!t.startsWith("selection:")&&"htmlEmptyBlock"!=t)return!0;return!1}(e)}class ZD extends wr{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,o=t.model,n=t.plugins.get("TableUtils"),i=t.config.get("table.defaultHeadings.rows"),r=t.config.get("table.defaultHeadings.columns");void 0===e.headingRows&&i&&(e.headingRows=i),void 0===e.headingColumns&&r&&(e.headingColumns=r),o.change((t=>{const i=n.createTable(t,e);o.insertObject(i,null,null,{findOptimalPosition:"auto"}),t.setSelection(t.createPositionAt(i.getNodeByPath([0,0,0]),0))}))}}class JD extends wr{constructor(e,t={}){super(e),this.order=t.order||"below"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="above"===this.order,i=o.getSelectionAffectedTableCells(t),r=o.getRowIndexes(i),s=n?r.first:r.last,a=i[0].findAncestor("table");o.insertRows(a,{at:n?s:s+1,copyStructureFromAbove:!n})}}class YD extends wr{constructor(e,t={}){super(e),this.order=t.order||"right"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="left"===this.order,i=o.getSelectionAffectedTableCells(t),r=o.getColumnIndexes(i),s=n?r.first:r.last,a=i[0].findAncestor("table");o.insertColumns(a,{columns:1,at:n?s:s+1})}}class QD extends wr{constructor(e,t={}){super(e),this.direction=t.direction||"horizontally"}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=1===e.length}execute(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection)[0];"horizontally"===this.direction?e.splitCellHorizontally(t,2):e.splitCellVertically(t,2)}}function XD(e,t,o){const{startRow:n,startColumn:i,endRow:r,endColumn:s}=t,a=o.createElement("table"),l=r-n+1;for(let e=0;e0){MD("headingRows",r-o,e,i,0)}const s=parseInt(t.getAttribute("headingColumns")||"0");if(s>0){MD("headingColumns",s-n,e,i,0)}}(a,e,n,i,o),a}function eB(e,t,o=0){const n=[],i=new qD(e,{startRow:o,endRow:t-1});for(const e of i){const{row:o,cellHeight:i}=e;o1&&(a.rowspan=l);const c=parseInt(e.getAttribute("colspan")||"1");c>1&&(a.colspan=c);const d=r+s,u=[...new qD(i,{startRow:r,endRow:d,includeAllSlots:!0})];let h,p=null;for(const t of u){const{row:n,column:i,cell:r}=t;r===e&&void 0===h&&(h=i),void 0!==h&&h===i&&n===d&&(p=zD(o,t.getPositionBefore(),a))}return MD("rowspan",s,e,o),p}function oB(e,t){const o=[],n=new qD(e);for(const e of n){const{column:n,cellWidth:i}=e;n1&&(r.colspan=s);const a=parseInt(e.getAttribute("rowspan")||"1");a>1&&(r.rowspan=a);const l=zD(n,n.createPositionAfter(e),r);return MD("colspan",i,e,n),l}function iB(e,t,o,n,i,r){const s=parseInt(e.getAttribute("colspan")||"1"),a=parseInt(e.getAttribute("rowspan")||"1");if(o+s-1>i){MD("colspan",i-o+1,e,r,1)}if(t+a-1>n){MD("rowspan",n-t+1,e,r,1)}}function rB(e,t){const o=t.getColumns(e),n=new Array(o).fill(0);for(const{column:t}of new qD(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 sB(e,t){const o=[],n=t.getRows(e);for(let t=0;t0){const n=o[o.length-1];return t.removeRows(e,{at:n}),!0}return!1}function aB(e,t){rB(e,t)||sB(e,t)}function lB(e,t){const o=Array.from(new qD(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 cB(e,t){const o=Array.from(new qD(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 dB extends wr{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=e.document,o=this.editor.plugins.get("TableUtils").getTableCellsContainingSelection(t.selection)[0],n=this.value,i=this.direction;e.change((e=>{const t="right"==i||"down"==i,r=t?o:n,s=t?n:o,a=s.parent;!function(e,t,o){uB(e)||(uB(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end")));o.remove(e)}(s,r,e);const l=this.isHorizontal?"colspan":"rowspan",c=parseInt(o.getAttribute(l)||"1"),d=parseInt(n.getAttribute(l)||"1");e.setAttribute(l,c+d,r),e.setSelection(e.createRangeIn(r));const u=this.editor.plugins.get("TableUtils");aB(a.findAncestor("table"),u)}))}_getMergeableCell(){const e=this.editor.model.document,t=this.editor.plugins.get("TableUtils"),o=t.getTableCellsContainingSelection(e.selection)[0];if(!o)return;const n=this.isHorizontal?function(e,t,o){const n=e.parent,i=n.parent,r="right"==t?e.nextSibling:e.previousSibling,s=(i.getAttribute("headingColumns")||0)>0;if(!r)return;const a="right"==t?e:r,l="right"==t?r:e,{column:c}=o.getCellLocation(a),{column:d}=o.getCellLocation(l),u=parseInt(a.getAttribute("colspan")||"1"),h=OD(o,a),p=OD(o,l);if(s&&h!=p)return;return c+u===d?r:void 0}(o,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 null;const s=parseInt(e.getAttribute("rowspan")||"1"),a=i.getAttribute("headingRows")||0,l="down"==t&&r+s===a,c="up"==t&&r===a;if(a&&(l||c))return null;const d=parseInt(e.getAttribute("rowspan")||"1"),u="down"==t?r+d:r,h=[...new qD(i,{endRow:u})],p=h.find((t=>t.cell===e)),m=p.column,g=h.find((({row:e,cellHeight:o,column:n})=>n===m&&("down"==t?e===u:u===e+o)));return g&&g.cell?g.cell:null}(o,this.direction,t);if(!n)return;const i=this.isHorizontal?"rowspan":"colspan",r=parseInt(o.getAttribute(i)||"1");return parseInt(n.getAttribute(i)||"1")===r?n:void 0}}function uB(e){const t=e.getChild(0);return 1==e.childCount&&t.is("element","paragraph")&&t.isEmpty}class hB extends wr{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const n=o.findAncestor("table"),i=e.getRows(n)-1,r=e.getRowIndexes(t),s=0===r.first&&r.last===i;this.isEnabled=!s}else this.isEnabled=!1}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=t.getRowIndexes(o),i=o[0],r=i.findAncestor("table"),s=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),s=0;for(const e of i.getChildren()){if(s>o)return r;r=e,s+=parseInt(e.getAttribute("colspan")||"1")}return r}(r,n.first,s,t.getRows(r));e.setSelection(e.createPositionAt(i,0))}))}}class pB extends wr{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const n=o.findAncestor("table"),i=e.getColumns(n),{first:r,last:s}=e.getColumnIndexes(t);this.isEnabled=s-re.cell===t)).column,last:i.find((e=>e.cell===o)).column},s=function(e,t,o,n){const i=parseInt(o.getAttribute("colspan")||"1");return i>1?o:t.previousSibling||o.nextSibling?o.nextSibling||t.previousSibling:n.first?e.reverse().find((({column:e})=>ee>n.last)).cell}(i,t,o,r);this.editor.model.change((t=>{const o=r.last-r.first+1;e.removeColumns(n,{at:r.first,columns:o}),t.setSelection(t.createPositionAt(s,0))}))}}class mB extends wr{refresh(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection),n=o.length>0;this.isEnabled=n,this.value=n&&o.every((e=>this._isInHeading(e,e.parent.parent)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,n=t.getSelectionAffectedTableCells(o.document.selection),i=n[0].findAncestor("table"),{first:r,last:s}=t.getRowIndexes(n),a=this.value?r:s+1,l=i.getAttribute("headingRows")||0;o.change((e=>{if(a){const t=eB(i,a,a>l?l:0);for(const{cell:o}of t)tB(o,a,e)}MD("headingRows",a,i,e,0)}))}_isInHeading(e,t){const o=parseInt(t.getAttribute("headingRows")||"0");return!!o&&e.parent.index0;this.isEnabled=n,this.value=n&&o.every((e=>OD(t,e)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,n=t.getSelectionAffectedTableCells(o.document.selection),i=n[0].findAncestor("table"),{first:r,last:s}=t.getColumnIndexes(n),a=this.value?r:s+1;o.change((e=>{if(a){const t=oB(i,a);for(const{cell:o,column:n}of t)nB(o,n,a,e)}MD("headingColumns",a,i,e,0)}))}}function fB(e){if(e.is("element","tableColumnGroup"))return e;const t=e.getChildren();return Array.from(t).find((e=>e.is("element","tableColumnGroup")))}function bB(e){const t=fB(e);return t?Array.from(t.getChildren()):[]}class kB extends br{static get pluginName(){return"TableUtils"}static get isOfficialPlugin(){return!0}init(){this.decorate("insertColumns"),this.decorate("insertRows")}getCellLocation(e){const t=e.parent,o=t.parent,n=o.getChildIndex(t),i=new qD(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=t.rows||2,i=t.columns||2;return wB(e,o,0,n,i),t.headingRows&&MD("headingRows",Math.min(t.headingRows,n),o,e,0),t.headingColumns&&MD("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,r=void 0!==t.copyStructureFromAbove,s=t.copyStructureFromAbove?n-1:n,a=this.getRows(e),l=this.getColumns(e);if(n>a)throw new S("tableutils-insertrows-insert-out-of-range",this,{options:t});o.change((t=>{const o=e.getAttribute("headingRows")||0;if(o>n&&MD("headingRows",o+i,e,t,0),!r&&(0===n||n===a))return void wB(t,e,n,i,l);const c=r?Math.max(n,s):n,d=new qD(e,{endRow:c}),u=new Array(l).fill(1);for(const{row:e,column:o,cellHeight:a,cellWidth:l,cell:c}of d){const d=e+a-1,h=e<=s&&s<=d;e0&&zD(t,i,n>1?{colspan:n}:void 0),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");ni-1)throw new S("tableutils-removerows-row-index-out-of-range",this,{table:e,options:t});o.change((t=>{const o={first:r,last:s},{cellsToMove:n,cellsToTrim:i}=function(e,{first:t,last:o}){const n=new Map,i=[];for(const{row:r,column:s,cellHeight:a,cell:l}of new qD(e,{endRow:o})){const e=r+a-1;if(r>=t&&r<=o&&e>o){const e=a-(o-r+1);n.set(s,{cell:l,rowspan:e})}if(r=t){let n;n=e>=o?o-t+1:e-t+1,i.push({cell:l,rowspan:a-n})}}return{cellsToMove:n,cellsToTrim:i}}(e,o);if(n.size){!function(e,t,o,n){const i=new qD(e,{includeAllSlots:!0,row:t}),r=[...i],s=e.getChild(t);let a;for(const{column:e,cell:t,isAnchor:i}of r)if(o.has(e)){const{cell:t,rowspan:i}=o.get(e),r=a?n.createPositionAfter(a):n.createPositionAt(s,0);n.move(n.createRangeOn(t),r),MD("rowspan",i,t,n),a=t}else i&&(a=t)}(e,s+1,n,t)}for(let o=s;o>=r;o--)t.remove(e.getChild(o));for(const{rowspan:e,cell:o}of i)MD("rowspan",e,o,t);!function(e,{first:t,last:o},n){const i=e.getAttribute("headingRows")||0;if(t{!function(e,t,o){const n=e.getAttribute("headingColumns")||0;if(n&&t.first=n;i--){for(const{cell:o,column:n,cellWidth:r}of[...new qD(e)])n<=i&&r>1&&n+r>i?MD("colspan",r-1,o,t):n===i&&t.remove(o);if(o[i]){const e=0===i?o[1]:o[i-1],n=parseFloat(o[i].getAttribute("columnWidth")),r=parseFloat(e.getAttribute("columnWidth"));t.remove(o[i]),t.setAttribute("columnWidth",n+r+"%",e)}}sB(e,this)||rB(e,this)}))}splitCellVertically(e,t=2){const o=this.editor.model,n=e.parent.parent,i=parseInt(e.getAttribute("rowspan")||"1"),r=parseInt(e.getAttribute("colspan")||"1");o.change((o=>{if(r>1){const{newCellsSpan:n,updatedSpan:s}=yB(r,t);MD("colspan",s,e,o);const a={};n>1&&(a.colspan=n),i>1&&(a.rowspan=i);_B(r>t?t-1:r-1,o,o.createPositionAfter(e),a)}if(rt===e)),c=a.filter((({cell:t,cellWidth:o,column:n})=>t!==e&&n===l||nl));for(const{cell:e,cellWidth:t}of c)o.setAttribute("colspan",t+s,e);const d={};i>1&&(d.rowspan=i),_B(s,o,o.createPositionAfter(e),d);const u=n.getAttribute("headingColumns")||0;u>l&&MD("headingColumns",u+s,n,o)}}))}splitCellHorizontally(e,t=2){const o=this.editor.model,n=e.parent,i=n.parent,r=i.getChildIndex(n),s=parseInt(e.getAttribute("rowspan")||"1"),a=parseInt(e.getAttribute("colspan")||"1");o.change((o=>{if(s>1){const n=[...new qD(i,{startRow:r,endRow:r+s-1,includeAllSlots:!0})],{newCellsSpan:l,updatedSpan:c}=yB(s,t);MD("rowspan",c,e,o);const{column:d}=n.find((({cell:t})=>t===e)),u={};l>1&&(u.rowspan=l),a>1&&(u.colspan=a);let h=0;for(const e of n){const{column:t,row:n}=e,i=t===d;h>=l&&i&&(h=0),n>=r+c&&i&&(h||_B(1,o,e.getPositionBefore(),u),h++)}}if(sr){const e=i+n;o.setAttribute("rowspan",e,t)}const c={};a>1&&(c.colspan=a),wB(o,i,r+1,n,1,c);const d=i.getAttribute("headingRows")||0;d>r&&MD("headingRows",d+n,i,o)}}))}getColumns(e){return[...e.getChild(0).getChildren()].filter((e=>e.is("element","tableCell"))).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)}createTableWalker(e,t={}){return new qD(e,t)}getSelectedTableCells(e){const t=[];for(const o of this.sortRanges(e.getRanges())){const e=o.getContainedElement();e&&e.is("element","tableCell")&&t.push(e)}return t}getTableCellsContainingSelection(e){const t=[];for(const o of e.getRanges()){const e=o.start.findAncestor("tableCell");e&&t.push(e)}return t}getSelectionAffectedTableCells(e){const t=this.getSelectedTableCells(e);return t.length?t:this.getTableCellsContainingSelection(e)}getRowIndexes(e){const t=e.map((e=>e.parent.index));return this._getFirstLastIndexesObject(t)}getColumnIndexes(e){const t=e[0].findAncestor("table"),o=[...new qD(t)].filter((t=>e.includes(t.cell))).map((e=>e.column));return this._getFirstLastIndexesObject(o)}isSelectionRectangular(e){if(e.length<2||!this._areCellInTheSameTableSection(e))return!1;const t=new Set,o=new Set;let n=0;for(const i of e){const{row:e,column:r}=this.getCellLocation(i),s=parseInt(i.getAttribute("rowspan"))||1,a=parseInt(i.getAttribute("colspan"))||1;t.add(e),o.add(r),s>1&&t.add(e+s-1),a>1&&o.add(r+a-1),n+=s*a}const i=function(e,t){const o=Array.from(e.values()),n=Array.from(t.values()),i=Math.max(...o),r=Math.min(...o),s=Math.max(...n),a=Math.min(...n);return(i-r+1)*(s-a+1)}(t,o);return i==n}sortRanges(e){return Array.from(e).sort(AB)}_getFirstLastIndexesObject(e){const t=e.sort(((e,t)=>e-t));return{first:t[0],last:t[t.length-1]}}_areCellInTheSameTableSection(e){const t=e[0].findAncestor("table"),o=this.getRowIndexes(e),n=parseInt(t.getAttribute("headingRows"))||0;if(!this._areIndexesInSameSection(o,n))return!1;const i=this.getColumnIndexes(e),r=parseInt(t.getAttribute("headingColumns"))||0;return this._areIndexesInSameSection(i,r)}_areIndexesInSameSection({first:e,last:t},o){return e{const n=t.getSelectedTableCells(e.document.selection),i=n.shift(),{mergeWidth:r,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=EB(e,r,n,"colspan"),i=EB(e,t,i,"rowspan")}const{row:r,column:s}=o.getCellLocation(e),a=n-s,l=i-r;return{mergeWidth:a,mergeHeight:l}}(i,n,t);MD("colspan",r,i,o),MD("rowspan",s,i,o);for(const e of n)vB(e,i,o);aB(i.findAncestor("table"),t),o.setSelection(i,"in")}))}}function vB(e,t,o){xB(e)||(xB(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end"))),o.remove(e)}function xB(e){const t=e.getChild(0);return 1==e.childCount&&t.is("element","paragraph")&&t.isEmpty}function EB(e,t,o,n){const i=parseInt(e.getAttribute(n)||"1");return Math.max(o,t+i)}class DB extends wr{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=t.getRowIndexes(o),i=o[0].findAncestor("table"),r=[];for(let t=n.first;t<=n.last;t++)for(const o of i.getChild(t).getChildren())r.push(e.createRangeOn(o));e.change((e=>{e.setSelection(r)}))}}class BB extends wr{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection),n=o[0],i=o.pop(),r=n.findAncestor("table"),s=e.getCellLocation(n),a=e.getCellLocation(i),l=Math.min(s.column,a.column),c=Math.max(s.column,a.column),d=[];for(const e of new qD(r,{startColumn:l,endColumn:c}))d.push(t.createRangeOn(e.cell));t.change((e=>{e.setSelection(d)}))}}function SB(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=null;"insert"==t.type&&"table"==t.name&&(o=t.position.nodeAfter),"insert"!=t.type&&"remove"!=t.type||"tableRow"!=t.name&&"tableCell"!=t.name||(o=t.position.findAncestor("table")),PB(t)&&(o=t.range.start.findAncestor("table")),o&&!i.has(o)&&(n=TB(o,e)||n,n=IB(o,e)||n,i.add(o))}return n}(t,e)))}function TB(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:s}of new qD(e)){if(s<2)continue;const e=ie){const t=e-i;n.push({cell:r,rowspan:t})}}return n}(e);if(n.length){o=!0;for(const e of n)MD("rowspan",e.rowspan,e.cell,t,1)}return o}function IB(e,t){let o=!1;const n=function(e){const t=new Array(e.childCount).fill(0);for(const{rowIndex:o}of new qD(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;ofunction(e,t){const o=t.document.differ.getChanges();let n=!1;for(const t of o)"insert"==t.type&&"table"==t.name&&(n=RB(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableRow"==t.name&&(n=MB(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableCell"==t.name&&(n=zB(t.position.nodeAfter,e)||n),"remove"!=t.type&&"insert"!=t.type||!OB(t)||(n=zB(t.position.parent,e)||n);return n}(t,e)))}function RB(e,t){let o=!1;for(const n of e.getChildren())n.is("element","tableRow")&&(o=MB(n,t)||o);return o}function MB(e,t){let o=!1;for(const n of e.getChildren())o=zB(n,t)||o;return o}function zB(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 OB(e){return!!e.position.parent.is("element","tableCell")&&("insert"==e.type&&"$text"==e.name||"remove"==e.type)}function NB(e,t){if(!e.is("element","paragraph"))return!1;const o=t.toViewElement(e);return!!o&&KD(e)!==o.is("element","span")}var VB=i(8864),LB={attributes:{"data-cke":!0}};LB.setAttributes=Xr(),LB.insert=Yr().bind(null,"head"),LB.domAPI=Zr(),LB.insertStyleElement=ts();Gr()(VB.A,LB);VB.A&&VB.A.locals&&VB.A.locals;class HB extends br{static get pluginName(){return"TableEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[kB]}constructor(e){super(e),this._additionalSlots=[]}init(){const e=this.editor,t=e.model,o=t.schema,n=e.conversion,i=e.plugins.get(kB);o.register("table",{inheritAllFrom:"$blockObject",allowAttributes:["headingRows","headingColumns"]}),o.register("tableRow",{allowIn:"table",isLimit:!0}),o.register("tableCell",{allowContentOf:"$container",allowIn:"tableRow",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;o.consumable.consume(t.viewItem,{name:!0,classes:"table"});const i=or(o.convertItem(n,t.modelCursor).modelRange.getItems());i?(o.convertChildren(t.viewItem,o.writer.createPositionAt(i,"end")),o.updateConversionResult(i,t)):o.consumable.revert(t.viewItem,{name:!0,classes:"table"})}))})),n.for("upcast").add(LD()),n.for("editingDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:UD(i,{asWidget:!0,additionalSlots:this._additionalSlots})}),n.for("dataDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:UD(i,{additionalSlots:this._additionalSlots})}),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("downcast").elementToElement({model:"tableRow",view:(e,{writer:t})=>e.isEmpty?t.createEmptyElement("tr"):t.createContainerElement("tr")}),n.for("upcast").elementToElement({model:"tableCell",view:"td"}),n.for("upcast").elementToElement({model:"tableCell",view:"th"}),n.for("upcast").add(HD("td")),n.for("upcast").add(HD("th")),n.for("editingDowncast").elementToElement({model:"tableCell",view:WD({asWidget:!0})}),n.for("dataDowncast").elementToElement({model:"tableCell",view:WD()}),n.for("editingDowncast").elementToElement({model:"paragraph",view:GD({asWidget:!0}),converterPriority:"high"}),n.for("dataDowncast").elementToElement({model:"paragraph",view:GD(),converterPriority:"high"}),n.for("downcast").attributeToAttribute({model:"colspan",view:"colspan"}),n.for("upcast").attributeToAttribute({model:{key:"colspan",value:jB("colspan")},view:"colspan"}),n.for("downcast").attributeToAttribute({model:"rowspan",view:"rowspan"}),n.for("upcast").attributeToAttribute({model:{key:"rowspan",value:jB("rowspan")},view:"rowspan"}),e.config.define("table.defaultHeadings.rows",0),e.config.define("table.defaultHeadings.columns",0),e.commands.add("insertTable",new ZD(e)),e.commands.add("insertTableRowAbove",new JD(e,{order:"above"})),e.commands.add("insertTableRowBelow",new JD(e,{order:"below"})),e.commands.add("insertTableColumnLeft",new YD(e,{order:"left"})),e.commands.add("insertTableColumnRight",new YD(e,{order:"right"})),e.commands.add("removeTableRow",new hB(e)),e.commands.add("removeTableColumn",new pB(e)),e.commands.add("splitTableCellVertically",new QD(e,{direction:"vertically"})),e.commands.add("splitTableCellHorizontally",new QD(e,{direction:"horizontally"})),e.commands.add("mergeTableCells",new CB(e)),e.commands.add("mergeTableCellRight",new dB(e,{direction:"right"})),e.commands.add("mergeTableCellLeft",new dB(e,{direction:"left"})),e.commands.add("mergeTableCellDown",new dB(e,{direction:"down"})),e.commands.add("mergeTableCellUp",new dB(e,{direction:"up"})),e.commands.add("setTableColumnHeader",new gB(e)),e.commands.add("setTableRowHeader",new mB(e)),e.commands.add("selectTableRow",new DB(e)),e.commands.add("selectTableColumn",new BB(e)),SB(t),FB(t),this.listenTo(t.document,"change:data",(()=>{!function(e,t){const o=e.document.differ;for(const e of o.getChanges()){let o,n=!1;if("attribute"==e.type){const t=e.range.start.nodeAfter;if(!t||!t.is("element","table"))continue;if("headingRows"!=e.attributeKey&&"headingColumns"!=e.attributeKey)continue;o=t,n="headingRows"==e.attributeKey}else"tableRow"!=e.name&&"tableCell"!=e.name||(o=e.position.findAncestor("table"),n="tableRow"==e.name);if(!o)continue;const i=o.getAttribute("headingRows")||0,r=o.getAttribute("headingColumns")||0,s=new qD(o);for(const e of s){const o=e.rowNB(e,t.mapper)));for(const e of o)t.reconvertItem(e)}}(t,e.editing)}))}registerAdditionalSlot(e){this._additionalSlots.push(e)}}function jB(e){return t=>{const o=parseInt(t.getAttribute(e));return Number.isNaN(o)||o<=0?null:o}}var qB=i(8603),$B={attributes:{"data-cke":!0}};$B.setAttributes=Xr(),$B.insert=Yr().bind(null,"head"),$B.domAPI=Zr(),$B.insertStyleElement=ts();Gr()(qB.A,$B);qB.A&&qB.A.locals&&qB.A.locals;class UB extends zp{constructor(e){super(e);const t=this.bindTemplate;this.items=this._createGridCollection(),this.keystrokes=new ar,this.focusTracker=new nr,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","ck-insert-table-dropdown__label"],"aria-hidden":!0},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.items.get(10*(parseInt(o,10)-1)+(parseInt(n,10)-1)).focus()})),this.focusTracker.on("change:focusedElement",((e,t,o)=>{if(!o)return;const{row:n,column:i}=o.dataset;this.set({rows:parseInt(n),columns:parseInt(i)})})),this.on("change:columns",(()=>this._highlightGridBoxes())),this.on("change:rows",(()=>this._highlightGridBoxes()))}render(){super.render(),Lp({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:10,uiLanguageDirection:this.locale&&this.locale.uiLanguageDirection});for(const e of this.items)this.focusTracker.add(e.element);this.keystrokes.listenTo(this.element)}reset(){this.set({rows:1,columns:1})}focus(){this.items.get(0).focus()}focusLast(){this.items.get(0).focus()}_highlightGridBoxes(){const e=this.rows,t=this.columns;this.items.map(((o,n)=>{const i=Math.floor(n/10){const n=e.commands.get("insertTable"),i=kf(o);let r;return i.bind("isEnabled").to(n),i.buttonView.set({icon:up.table,label:t("Insert table"),tooltip:!0}),i.on("change:isOpen",(()=>{r||(r=new UB(o),i.panelView.children.add(r),r.delegate("execute").to(i),i.on("execute",(()=>{e.execute("insertTable",{rows:r.rows,columns:r.columns}),e.editing.view.focus()})))})),i})),e.ui.componentFactory.add("menuBar:insertTable",(o=>{const n=e.commands.get("insertTable"),i=new Qk(o),r=new UB(o);return r.delegate("execute").to(i),i.on("change:isOpen",((e,t,o)=>{o||r.reset()})),r.on("execute",(()=>{e.execute("insertTable",{rows:r.rows,columns:r.columns}),e.editing.view.focus()})),i.buttonView.set({label:t("Table"),icon:up.table}),i.panelView.children.add(r),i.bind("isEnabled").to(n),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"),'',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"),'',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"),'',n,e)}))}_prepareDropdown(e,t,o,n){const i=this.editor,r=kf(n),s=this._fillDropdownWithListOptions(r,o);return r.buttonView.set({label:e,icon:t,tooltip:!0}),r.bind("isEnabled").toMany(s,"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(r,"execute",(e=>{i.execute(e.source.commandName),e.source instanceof Vm||i.editing.view.focus()})),r}_prepareMergeSplitButtonDropdown(e,t,o,n){const i=this.editor,r=kf(n,pf),s="mergeTableCells",a=i.commands.get(s),l=this._fillDropdownWithListOptions(r,o);return r.buttonView.set({label:e,icon:t,tooltip:!0,isEnabled:!0}),r.bind("isEnabled").toMany([a,...l],"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(r.buttonView,"execute",(()=>{i.execute(s),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 tr;for(const e of t)GB(e,o,n,i);return yf(e,i),n}}function GB(e,t,o,n){if("button"===e.type||"switchbutton"===e.type){const n=e.model=new hk(e.model),{commandName:i,bindIsOn:r}=e.model,s=t.commands.get(i);o.push(s),n.set({commandName:i}),n.bind("isEnabled").to(s),r&&n.bind("isOn").to(s,"value"),n.set({withText:!0})}n.add(e)}var KB=i(2850),ZB={attributes:{"data-cke":!0}};ZB.setAttributes=Xr(),ZB.insert=Yr().bind(null,"head"),ZB.domAPI=Zr(),ZB.insertStyleElement=ts();Gr()(KB.A,ZB);KB.A&&KB.A.locals&&KB.A.locals;class JB extends br{static get pluginName(){return"TableSelection"}static get isOfficialPlugin(){return!0}static get requires(){return[kB,kB]}init(){const e=this.editor,t=e.model,o=e.editing.view;this.listenTo(t,"deleteContent",((e,t)=>this._handleDeleteContent(e,t)),{priority:"high"}),this.listenTo(o.document,"insertText",((e,t)=>this._handleInsertTextEvent(e,t)),{priority:"high"}),this._defineSelectionConverter(),this._enablePluginDisabling()}getSelectedTableCells(){const e=this.editor.plugins.get(kB),t=this.editor.model.document.selection,o=e.getSelectedTableCells(t);return 0==o.length?null:o}getSelectionAsFragment(){const e=this.editor.plugins.get(kB),t=this.getSelectedTableCells();return t?this.editor.model.change((o=>{const n=o.createDocumentFragment(),{first:i,last:r}=e.getColumnIndexes(t),{first:s,last:a}=e.getRowIndexes(t),l=t[0].findAncestor("table");let c=a,d=r;if(e.isSelectionRectangular(t)){const e={firstColumn:i,lastColumn:r,firstRow:s,lastRow:a};c=lB(l,e),d=cB(l,e)}const u=XD(l,{startRow:s,startColumn:i,endRow:c,endColumn:d},o);return o.insert(u,n,0),n})):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=or(this.editor.model.document.selection.getRanges()).getContainedElement();return e&&e.is("element","tableCell")?e: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 s=n.mapper.toViewElement(r[r.length-1]);i.setSelection(s,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=this.editor.plugins.get(kB),n=t[0],i=t[1],r=this.editor.model,s=!i||"backward"==i.direction,a=o.getSelectedTableCells(n);a.length&&(e.stop(),r.change((e=>{const t=a[s?a.length-1:0];r.change((e=>{for(const t of a)r.deleteContent(e.createSelection(t,"in"))}));const o=r.schema.getNearestSelectionRange(e.createPositionAt(t,0));n.is("documentSelection")?e.setSelection(o):n.setTo(o)})))}_handleInsertTextEvent(e,t){const o=this.editor,n=this.getSelectedTableCells();if(!n)return;const i=o.editing.view,r=o.editing.mapper,s=n.map((e=>i.createRangeOn(r.toViewElement(e))));t.selection=i.createSelection(s)}_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),s=Math.max(n.row,i.row),a=Math.min(n.column,i.column),l=Math.max(n.column,i.column),c=new Array(s-r+1).fill(null).map((()=>[])),d={startRow:r,endRow:s,startColumn:a,endColumn:l};for(const{row:t,cell:o}of new qD(e.findAncestor("table"),d))c[t-r].push(o);const u=i.rowe.reverse())),{cells:c.flat(),backward:u||h}}}class YB extends br{static get pluginName(){return"TableClipboard"}static get isOfficialPlugin(){return!0}static get requires(){return[Dy,By,JB,kB]}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,o])=>this._onInsertContent(e,t,o)),{priority:"high"}),this.decorate("_replaceTableSlotCell")}_onCopyCut(e,t){const o=this.editor.editing.view,n=this.editor.plugins.get(JB),i=this.editor.plugins.get(Dy);n.getSelectedTableCells()&&("cut"!=e.name||this.editor.model.canEditAt(this.editor.model.document.selection))&&(t.preventDefault(),e.stop(),this.editor.model.enqueueChange({isUndoable:"cut"===e.name},(()=>{const r=i._copySelectedFragmentWithMarkers(e.name,this.editor.model.document.selection,(()=>n.getSelectionAsFragment()));o.document.fire("clipboardOutput",{dataTransfer:t.dataTransfer,content:this.editor.data.toView(r),method:e.name})})))}_onInsertContent(e,t,o){if(o&&!o.is("documentSelection"))return;const n=this.editor.model,i=this.editor.plugins.get(kB),r=this.editor.plugins.get(Dy),s=this.getTableIfOnlyTableInContent(t,n);if(!s)return;const a=i.getSelectionAffectedTableCells(n.document.selection);a.length?(e.stop(),t.is("documentFragment")?r._pasteMarkersIntoTransformedElement(t.markers,(e=>this._replaceSelectedCells(s,a,e))):this.editor.model.change((e=>{this._replaceSelectedCells(s,a,e)}))):aB(s,i)}_replaceSelectedCells(e,t,o){const n=this.editor.plugins.get(kB),i={width:n.getColumns(e),height:n.getRows(e)},r=function(e,t,o,n){const i=e[0].findAncestor("table"),r=n.getColumnIndexes(e),s=n.getRowIndexes(e),a={firstColumn:r.first,lastColumn:r.last,firstRow:s.first,lastRow:s.last},l=1===e.length;l&&(a.lastRow+=t.height-1,a.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,a.lastRow+1,a.lastColumn+1,n));l||!n.isSelectionRectangular(e)?function(e,t,o){const{firstRow:n,lastRow:i,firstColumn:r,lastColumn:s}=t,a={first:n,last:i},l={first:r,last:s};XB(e,r,a,o),XB(e,s+1,a,o),QB(e,n,l,o),QB(e,i+1,l,o,n)}(i,a,o):(a.lastRow=lB(i,a),a.lastColumn=cB(i,a));return a}(t,i,o,n),s=r.lastRow-r.firstRow+1,a=r.lastColumn-r.firstColumn+1;e=XD(e,{startRow:0,startColumn:0,endRow:Math.min(s,i.height)-1,endColumn:Math.min(a,i.width)-1},o);const l=t[0].findAncestor("table"),c=this._replaceSelectedCellsWithPasted(e,i,l,r,o);if(this.editor.plugins.get("TableSelection").isEnabled){const e=n.sortRanges(c.map((e=>o.createRangeOn(e))));o.setSelection(e)}else o.setSelection(c[0],0);return l}_replaceSelectedCellsWithPasted(e,t,o,n,i){const{width:r,height:s}=t,a=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 qD(e))n[o][t]=i;return n}(e,r,s),l=[...new qD(o,{startRow:n.firstRow,endRow:n.lastRow,startColumn:n.firstColumn,endColumn:n.lastColumn,includeAllSlots:!0})],c=[];let d;for(const e of l){const{row:t,column:o}=e;o===n.firstColumn&&(d=e.getPositionBefore());const l=t-n.firstRow,u=o-n.firstColumn,h=a[l%s][u%r],p=h?i.cloneElement(h):null,m=this._replaceTableSlotCell(e,p,d,i);m&&(iB(m,t,o,n.lastRow,n.lastColumn,i),c.push(m),d=i.createPositionAfter(m))}const u=parseInt(o.getAttribute("headingRows")||"0"),h=parseInt(o.getAttribute("headingColumns")||"0"),p=n.firstRoweS(e,t,o))).map((({cell:e})=>tB(e,t,n)))}function XB(e,t,o,n){if(t<1)return;return oB(e,t).filter((({row:e,cellHeight:t})=>eS(e,t,o))).map((({cell:e,column:o})=>nB(e,o,t,n)))}function eS(e,t,o){const n=e+t-1,{first:i,last:r}=o;return e>=i&&e<=r||e=i}class tS extends br{static get pluginName(){return"TableKeyboard"}static get isOfficialPlugin(){return!0}static get requires(){return[JB,kB]}init(){const e=this.editor,t=e.editing.view.document,o=e.t;this.listenTo(t,"arrowKey",((...e)=>this._onArrowKey(...e)),{context:"table"}),this.listenTo(t,"tab",((...e)=>this._handleTabOnSelectedTable(...e)),{context:"figure"}),this.listenTo(t,"tab",((...e)=>this._handleTab(...e)),{context:["th","td"]}),e.accessibility.addKeystrokeInfoGroup({id:"table",label:o("Keystrokes that can be used in a table cell"),keystrokes:[{label:o("Move the selection to the next cell"),keystroke:"Tab"},{label:o("Move the selection to the previous cell"),keystroke:"Shift+Tab"},{label:o("Insert a new table row (when in the last cell of a table)"),keystroke:"Tab"},{label:o("Navigate through the table"),keystroke:[["arrowup"],["arrowright"],["arrowdown"],["arrowleft"]]}]})}_handleTabOnSelectedTable(e,t){const o=this.editor,n=o.model.document.selection.getSelectedElement();n&&n.is("element","table")&&(t.preventDefault(),t.stopPropagation(),e.stop(),o.model.change((e=>{e.setSelection(e.createRangeIn(n.getChild(0).getChild(0)))})))}_handleTab(e,t){const o=this.editor,n=this.editor.plugins.get(kB),i=this.editor.plugins.get("TableSelection"),r=o.model.document.selection,s=!t.shiftKey;let a=n.getTableCellsContainingSelection(r)[0];if(a||(a=i.getFocusCell()),!a)return;t.preventDefault(),t.stopPropagation(),e.stop();const l=a.parent,c=l.parent,d=c.getChildIndex(l),u=l.getChildIndex(a),h=0===u;if(!s&&h&&0===d)return void o.model.change((e=>{e.setSelection(e.createRangeOn(c))}));const p=u===l.childCount-1,m=d===n.getRows(c)-1;if(s&&m&&p&&(o.execute("insertTableRowBelow"),d===n.getRows(c)-1))return void o.model.change((e=>{e.setSelection(e.createRangeOn(c))}));let g;if(s&&p){const e=c.getChild(d+1);g=e.getChild(0)}else if(!s&&h){const e=c.getChild(d-1);g=e.getChild(e.childCount-1)}else g=l.getChild(u+(s?1:-1));o.model.change((e=>{e.setSelection(e.createRangeIn(g))}))}_onArrowKey(e,t){const o=this.editor,n=Di(t.keyCode,o.locale.contentLanguageDirection);this._handleArrowKeys(n,t.shiftKey)&&(t.preventDefault(),t.stopPropagation(),e.stop())}_handleArrowKeys(e,t){const o=this.editor.plugins.get(kB),n=this.editor.plugins.get("TableSelection"),i=this.editor.model,r=i.document.selection,s=["right","down"].includes(e),a=o.getSelectedTableCells(r);if(a.length){let o;return o=t?n.getFocusCell():s?a[a.length-1]:a[0],this._navigateFromCellInDirection(o,e,t),!0}const l=r.focus.findAncestor("tableCell");if(!l)return!1;if(!r.isCollapsed)if(t){if(r.isBackward==s&&!r.containsEntireContent(l))return!1}else{const e=r.getSelectedElement();if(!e||!i.schema.isObject(e))return!1}return!!this._isSelectionAtCellEdge(r,l,s)&&(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 s=n.createSelection(r);return n.modifySelection(s,{direction:o?"forward":"backward"}),r.isEqual(s.focus)}_navigateFromCellInDirection(e,t,o=!1){const n=this.editor.model,i=e.findAncestor("table"),r=[...new qD(i,{includeAllSlots:!0})],{row:s,column:a}=r[r.length-1],l=r.find((({cell:t})=>t==e));let{row:c,column:d}=l;switch(t){case"left":d--;break;case"up":c--;break;case"right":d+=l.cellWidth;break;case"down":c+=l.cellHeight}if(c<0||c>s||d<0&&c<=0||d>a&&c>=s)return void n.change((e=>{e.setSelection(e.createRangeOn(i))}));d<0?(d=o?0:a,c--):d>a&&(d=o?a:0,c++);const u=r.find((e=>e.row==c&&e.column==d)).cell,h=["right","down"].includes(t),p=this.editor.plugins.get("TableSelection");if(o&&p.isEnabled){const t=p.getAnchorCell()||e;p.setCellSelection(t,u)}else{const e=n.createPositionAt(u,h?0:"end");n.change((t=>{t.setSelection(e)}))}}}class oS extends nl{constructor(){super(...arguments),this.domEventType=["mousemove","mouseleave"]}onDomEvent(e){this.fire(e.type,e)}}class nS extends br{static get pluginName(){return"TableMouse"}static get isOfficialPlugin(){return!0}static get requires(){return[JB,kB]}init(){this.editor.editing.view.addObserver(oS),this._enableShiftClickSelection(),this._enableMouseDragSelection()}_enableShiftClickSelection(){const e=this.editor,t=e.plugins.get(kB);let o=!1;const n=e.plugins.get(JB);this.listenTo(e.editing.view.document,"mousedown",((i,r)=>{const s=e.model.document.selection;if(!this.isEnabled||!n.isEnabled)return;if(!r.domEvent.shiftKey)return;const a=n.getAnchorCell()||t.getTableCellsContainingSelection(s)[0];if(!a)return;const l=this._getModelTableCellFromDomEvent(r);l&&iS(a,l)&&(o=!0,n.setCellSelection(a,l),r.preventDefault())})),this.listenTo(e.editing.view.document,"mouseup",(()=>{o=!1})),this.listenTo(e.editing.view.document,"selectionChange",(e=>{o&&e.stop()}),{priority:"highest"})}_enableMouseDragSelection(){const e=this.editor;let t,o,n=!1,i=!1;const r=e.plugins.get(JB);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,s)=>{if(!s.domEvent.buttons)return;if(!t)return;const a=this._getModelTableCellFromDomEvent(s);a&&iS(t,a)&&(o=a,n||o==t||(n=!0)),n&&(i=!0,r.setCellSelection(t,o),s.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 iS(e,t){return e.parent.parent==t.parent.parent}var rS=i(9969),sS={attributes:{"data-cke":!0}};sS.setAttributes=Xr(),sS.insert=Yr().bind(null,"head"),sS.domAPI=Zr(),sS.insertStyleElement=ts();Gr()(rS.A,sS);rS.A&&rS.A.locals&&rS.A.locals;function aS(e){const t=lS(e);return t||cS(e)}function lS(e){const t=e.getSelectedElement();return t&&dS(t)?t:null}function cS(e){const t=e.getFirstPosition();if(!t)return null;let o=t.parent;for(;o;){if(o.is("element")&&dS(o))return o;o=o.parent}return null}function dS(e){return!!e.getCustomProperty("table")&&ww(e)}var uS=i(4307),hS={attributes:{"data-cke":!0}};hS.setAttributes=Xr(),hS.insert=Yr().bind(null,"head"),hS.domAPI=Zr(),hS.insertStyleElement=ts();Gr()(uS.A,hS);uS.A&&uS.A.locals&&uS.A.locals;class pS extends zp{constructor(e,t){super(e),this.set("value",""),this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isEmpty",!0),this.options=t,this.focusTracker=new nr,this._focusables=new hp,this.dropdownView=this._createDropdownView(),this.inputView=this._createInputTextView(),this.keystrokes=new ar,this._stillTyping=!1,this.focusCycler=new Xp({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-input-color"]},children:[this.dropdownView,this.inputView]}),this.on("change:value",((e,t,o)=>this._setInputValue(o)))}render(){super.render(),[this.inputView,this.dropdownView.buttonView].forEach((e=>{this.focusTracker.add(e.element),this._focusables.add(e)})),this.keystrokes.listenTo(this.element)}focus(e){-1===e?this.focusCycler.focusLast():this.focusCycler.focusFirst()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createDropdownView(){const e=this.locale,t=e.t,o=this.bindTemplate,n=this._createColorSelector(e),i=kf(e),r=new zp;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.label=t("Color picker"),i.buttonView.tooltip=!0,i.panelPosition="rtl"===e.uiLanguageDirection?"se":"sw",i.panelView.children.add(n),i.bind("isEnabled").to(this,"isReadOnly",(e=>!e)),i.on("change:isOpen",((e,t,o)=>{o&&(n.updateSelectedColors(),n.showColorGridsFragment())})),i}_createInputTextView(){const e=this.locale,t=new gg(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}_createColorSelector(e){const t=e.t,o=this.options.defaultColorValue||"",n=t(o?"Restore default":"Remove color"),i=new bb(e,{colors:this.options.colorDefinitions,columns:this.options.columns,removeButtonLabel:n,colorPickerLabel:t("Color picker"),colorPickerViewConfig:!1!==this.options.colorPickerConfig&&{...this.options.colorPickerConfig,hideInput:!0}});i.appendUI(),i.on("execute",((e,t)=>{"colorPickerSaveButton"!==t.source?(this.value=t.value||o,this.fire("input"),"colorPicker"!==t.source&&(this.dropdownView.isOpen=!1)):this.dropdownView.isOpen=!1}));let r=this.value;return i.on("colorPicker:cancel",(()=>{this.value=r,this.fire("input"),this.dropdownView.isOpen=!1})),i.colorGridsFragmentView.colorPickerButtonView.on("execute",(()=>{r=this.value})),i.bind("selectedColor").to(this,"value"),i}_setInputValue(e){if(!this._stillTyping){const t=mS(e),o=this.options.colorDefinitions.find((e=>t===mS(e.color)));this.inputView.value=o?o.label:e||""}}}function mS(e){return e.replace(/([(,])\s+/g,"$1").replace(/^\s+|\s+(?=[),\s]|$)/g,"").replace(/,|\s/g," ")}const gS=e=>""===e;function fS(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 bS(e){return e('The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".')}function kS(e){return e('The value is invalid. Try "10px" or "2em" or simply "2".')}function wS(e){return e=e.trim().toLowerCase(),gS(e)||dh(e)}function _S(e){return e=e.trim(),gS(e)||ES(e)||mh(e)||(t=e,gh.test(t));var t}function yS(e){return e=e.trim(),gS(e)||ES(e)||mh(e)}function AS(e,t){const o=new tr,n=fS(e.t);for(const i in n){const r={type:"button",model:new hk({_borderStyleValue:i,label:n[i],role:"menuitemradio",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 CS(e){const{view:t,icons:o,toolbar:n,labels:i,propertyName:r,nameToValue:s,defaultValue:a}=e;for(const e in i){const l=new Kp(t.locale);l.set({role:"radio",isToggleable:!0,label:i[e],icon:o[e],tooltip:i[e]});const c=s?s(e):e;l.bind("isOn").to(t,r,(e=>{let t=e;return""===e&&a&&(t=a),c===t})),l.on("execute",(()=>{t[r]=c})),n.items.add(l)}}const vS=[{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 xS(e){return(t,o,n)=>{const i=new pS(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,colorPickerConfig:e.colorPickerConfig});var r;return i.inputView.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 ES(e){const t=parseFloat(e);return!Number.isNaN(t)&&e===String(t)}var DS=i(6016),BS={attributes:{"data-cke":!0}};BS.setAttributes=Xr(),BS.insert=Yr().bind(null,"head"),BS.domAPI=Zr(),BS.insertStyleElement=ts();Gr()(DS.A,BS);DS.A&&DS.A.locals&&DS.A.locals;class SS extends zp{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})}}var TS=i(1806),IS={attributes:{"data-cke":!0}};IS.setAttributes=Xr(),IS.insert=Yr().bind(null,"head"),IS.domAPI=Zr(),IS.insertStyleElement=ts();Gr()(TS.A,IS);TS.A&&TS.A.locals&&TS.A.locals;var PS=i(5704),FS={attributes:{"data-cke":!0}};FS.setAttributes=Xr(),FS.insert=Yr().bind(null,"head"),FS.domAPI=Zr(),FS.insertStyleElement=ts();Gr()(PS.A,FS);PS.A&&PS.A.locals&&PS.A.locals;var RS=i(6701),MS={attributes:{"data-cke":!0}};MS.setAttributes=Xr(),MS.insert=Yr().bind(null,"head"),MS.domAPI=Zr(),MS.insertStyleElement=ts();Gr()(RS.A,MS);RS.A&&RS.A.locals&&RS.A.locals;class zS extends zp{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:s,backgroundInput:a}=this._createBackgroundFields(),{widthInput:l,operatorLabel:c,heightInput:d,dimensionsLabel:u}=this._createDimensionFields(),{horizontalAlignmentToolbar:h,verticalAlignmentToolbar:p,alignmentLabel:m}=this._createAlignmentFields();this.focusTracker=new nr,this.keystrokes=new ar,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=a,this.paddingInput=this._createPaddingField(),this.widthInput=l,this.heightInput=d,this.horizontalAlignmentToolbar=h,this.verticalAlignmentToolbar=p;const{saveButtonView:g,cancelButtonView:f}=this._createActionButtons();this.saveButtonView=g,this.cancelButtonView=f,this._focusables=new hp,this._focusCycler=new Xp({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new Qp(e,{label:this.t("Cell properties")})),this.children.add(new SS(e,{labelView:r,children:[r,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new SS(e,{labelView:s,children:[s,a],class:"ck-table-form__background-row"})),this.children.add(new SS(e,{children:[new SS(e,{labelView:u,children:[u,l,c,d],class:"ck-table-form__dimensions-row"}),new SS(e,{children:[this.paddingInput],class:"ck-table-cell-properties-form__padding-row"})]})),this.children.add(new SS(e,{labelView:m,children:[m,h,p],class:"ck-table-cell-properties-form__alignment-row"})),this.children.add(new SS(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(),Vp({view:this}),[this.borderColorInput,this.backgroundInput].forEach((e=>{this._focusCycler.chain(e.fieldView.focusCycler)})),[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)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableCellProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=xS({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color,colorPickerConfig:this.options.colorPickerConfig}),n=this.locale,i=this.t,r=i("Style"),s=new Sm(n);s.text=i("Border");const a=fS(i),l=new dg(n,Bf);l.set({label:r,class:"ck-table-form__border-style"}),l.fieldView.buttonView.set({ariaLabel:r,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:r}),l.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>a[e||"none"])),l.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),l.bind("isEmpty").to(this,"borderStyle",(e=>!e)),yf(l.fieldView,AS(this,t.style),{role:"menu",ariaLabel:r});const c=new dg(n,Ef);c.set({label:i("Width"),class:"ck-table-form__border-width"}),c.fieldView.bind("value").to(this,"borderWidth"),c.bind("isEnabled").to(this,"borderStyle",OS),c.fieldView.on("input",(()=>{this.borderWidth=c.fieldView.element.value}));const d=new dg(n,o);return d.set({label:i("Color"),class:"ck-table-form__border-color"}),d.fieldView.bind("value").to(this,"borderColor"),d.bind("isEnabled").to(this,"borderStyle",OS),d.fieldView.on("input",(()=>{this.borderColor=d.fieldView.value})),this.on("change:borderStyle",((e,o,n,i)=>{OS(n)||(this.borderColor="",this.borderWidth=""),OS(i)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:s,borderStyleDropdown:l,borderColorInput:d,borderWidthInput:c}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new Sm(e);o.text=t("Background");const n=xS({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableCellProperties.backgroundColor,colorPickerConfig:this.options.colorPickerConfig}),i=new dg(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 Sm(e);o.text=t("Dimensions");const n=new dg(e,Ef);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 zp(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const r=new dg(e,Ef);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 dg(e,Ef);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 Sm(e),n={left:up.alignLeft,center:up.alignCenter,right:up.alignRight,justify:up.alignJustify,top:up.alignTop,middle:up.alignMiddle,bottom:up.alignBottom};o.text=t("Table cell text alignment");const i=new af(e),r="rtl"===e.contentLanguageDirection;i.set({isCompact:!0,role:"radiogroup",ariaLabel:t("Horizontal text alignment toolbar")}),CS({view:this,icons:n,toolbar:i,labels:this._horizontalAlignmentLabels,propertyName:"horizontalAlignment",nameToValue:e=>{if(r){if("left"===e)return"right";if("right"===e)return"left"}return e},defaultValue:this.options.defaultTableCellProperties.horizontalAlignment});const s=new af(e);return s.set({isCompact:!0,role:"radiogroup",ariaLabel:t("Vertical text alignment toolbar")}),CS({view:this,icons:n,toolbar:s,labels:this._verticalAlignmentLabels,propertyName:"verticalAlignment",defaultValue:this.options.defaultTableCellProperties.verticalAlignment}),{horizontalAlignmentToolbar:i,verticalAlignmentToolbar:s,alignmentLabel:o}}_createActionButtons(){const e=this.locale,t=this.t,o=new Kp(e),n=new Kp(e),i=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.paddingInput];return o.set({label:t("Save"),icon:up.check,class:"ck-button-save",type:"submit",withText:!0}),o.bind("isEnabled").toMany(i,"errorText",((...e)=>e.every((e=>!e)))),n.set({label:t("Cancel"),icon:up.cancel,class:"ck-button-cancel",withText:!0}),n.delegate("execute").to(this,"cancel"),{saveButtonView:o,cancelButtonView:n}}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 OS(e){return"none"!==e}const NS=(()=>[Wg.defaultPositions.northArrowSouth,Wg.defaultPositions.northArrowSouthWest,Wg.defaultPositions.northArrowSouthEast,Wg.defaultPositions.southArrowNorth,Wg.defaultPositions.southArrowNorthWest,Wg.defaultPositions.southArrowNorthEast,Wg.defaultPositions.viewportStickyNorth])();function VS(e,t){const o=e.plugins.get("ContextualBalloon"),n=e.editing.view.document.selection;let i;"cell"===t?cS(n)&&(i=HS(e)):aS(n)&&(i=LS(e)),i&&o.updatePosition(i)}function LS(e){const t=VD(e.model.document.selection),o=e.editing.mapper.toViewElement(t);return{target:e.editing.view.domConverter.mapViewToDom(o),positions:NS}}function HS(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=jS(e.start),i=o.toViewElement(t);return new Gn(n.mapViewToDom(i))}));return Gn.getBoundingRect(i)}(n.getRanges(),e),positions:NS};const i=jS(n.getFirstPosition()),r=t.toViewElement(i);return{target:o.mapViewToDom(r),positions:NS}}function jS(e){return e.nodeAfter&&e.nodeAfter.is("element","tableCell")?e.nodeAfter:e.findAncestor("tableCell")}function qS(e){if(!e||!W(e))return e;const{top:t,right:o,bottom:n,left:i}=e;return t==o&&o==n&&n==i?t:void 0}function $S(e,t){const o=parseFloat(e);return Number.isNaN(o)||String(o)!==String(e)?e:`${o}${t}`}function US(e,t={}){const o={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}function WS(e,t){return US({borderStyle:"double",borderColor:"hsl(0, 0%, 70%)",borderWidth:"1px",...e},t)}function GS(e,t){return US({borderStyle:"solid",borderColor:"hsl(0, 0%, 75%)",borderWidth:"1px",...e},t)}const KS={borderStyle:"tableCellBorderStyle",borderColor:"tableCellBorderColor",borderWidth:"tableCellBorderWidth",height:"tableCellHeight",width:"tableCellWidth",padding:"tableCellPadding",backgroundColor:"tableCellBackgroundColor",horizontalAlignment:"tableCellHorizontalAlignment",verticalAlignment:"tableCellVerticalAlignment"};class ZS extends br{static get requires(){return[kk]}static get pluginName(){return"TableCellPropertiesUI"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define("table.tableCellProperties",{borderColors:vS,backgroundColors:vS})}init(){const e=this.editor,t=e.t;this._defaultTableCellProperties=GS(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection}),this._balloon=e.plugins.get(kk),this.view=null,this._isReady=!1,e.ui.componentFactory.add("tableCellProperties",(o=>{const n=new Kp(o);n.set({label:t("Cell properties"),icon:'',tooltip:!0}),this.listenTo(n,"execute",(()=>this._showView()));const i=Object.values(KS).map((t=>e.commands.get(t)));return n.bind("isEnabled").toMany(i,"isEnabled",((...e)=>e.some((e=>e)))),n}))}destroy(){super.destroy(),this.view&&this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.config.get("table.tableCellProperties"),o=Zm(t.borderColors),n=Km(e.locale,o),i=Zm(t.backgroundColors),r=Km(e.locale,i),s=!1!==t.colorPicker,a=new zS(e.locale,{borderColors:n,backgroundColors:r,defaultTableCellProperties:this._defaultTableCellProperties,colorPickerConfig:!!s&&(t.colorPicker||{})}),l=e.t;a.render(),this.listenTo(a,"submit",(()=>{this._hideView()})),this.listenTo(a,"cancel",(()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()})),a.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),Op({emitter:a,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const c=bS(l),d=kS(l);return a.on("change:borderStyle",this._getPropertyChangeCallback("tableCellBorderStyle")),a.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:a.borderColorInput,commandName:"tableCellBorderColor",errorText:c,validator:wS})),a.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:a.borderWidthInput,commandName:"tableCellBorderWidth",errorText:d,validator:yS})),a.on("change:padding",this._getValidatedPropertyChangeCallback({viewField:a.paddingInput,commandName:"tableCellPadding",errorText:d,validator:_S})),a.on("change:width",this._getValidatedPropertyChangeCallback({viewField:a.widthInput,commandName:"tableCellWidth",errorText:d,validator:_S})),a.on("change:height",this._getValidatedPropertyChangeCallback({viewField:a.heightInput,commandName:"tableCellHeight",errorText:d,validator:_S})),a.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:a.backgroundInput,commandName:"tableCellBackgroundColor",errorText:c,validator:wS})),a.on("change:horizontalAlignment",this._getPropertyChangeCallback("tableCellHorizontalAlignment")),a.on("change:verticalAlignment",this._getPropertyChangeCallback("tableCellVerticalAlignment")),a}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableCellBorderStyle");Object.entries(KS).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)})),this._isReady=!0}_showView(){const e=this.editor;this.view||(this.view=this._createPropertiesView()),this.listenTo(e.ui,"update",(()=>{this._updateView()})),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:HS(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){const e=this.editor;this.stopListening(e.ui,"update"),this._isReady=!1,this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}_updateView(){const e=this.editor;cS(e.editing.view.document.selection)?this._isViewVisible&&VS(e,"cell"):this._hideView()}get _isViewVisible(){return!!this.view&&this._balloon.visibleView===this.view}get _isViewInBalloon(){return!!this.view&&this._balloon.hasView(this.view)}_getPropertyChangeCallback(e){return(t,o,n)=>{this._isReady&&this.editor.execute(e,{value:n,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i}=e,r=bl((()=>{o.errorText=i}),500);return(e,i,s)=>{r.cancel(),this._isReady&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):r())}}}class JS extends wr{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=this.editor,t=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e.model.document.selection);this.isEnabled=!!t.length,this.value=this._getSingleValue(t)}execute(e={}){const{value:t,batch:o}=e,n=this.editor.model,i=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(n.document.selection),r=this._getValueToSet(t);n.enqueueChange(o,(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 YS extends JS{constructor(e,t){super(e,"tableCellWidth",t)}_getValueToSet(e){if((e=$S(e,"px"))!==this._defaultValue)return e}}class QS extends br{static get pluginName(){return"TableCellWidthEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[HB]}init(){const e=this.editor,t=GS(e.config.get("table.tableCellProperties.defaultProperties"));ND(e.model.schema,e.conversion,{modelAttribute:"tableCellWidth",styleName:"width",defaultValue:t.width}),e.commands.add("tableCellWidth",new YS(e,t.width))}}class XS extends JS{constructor(e,t){super(e,"tableCellPadding",t)}_getAttribute(e){if(!e)return;const t=qS(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){const t=$S(e,"px");if(t!==this._defaultValue)return t}}class eT extends JS{constructor(e,t){super(e,"tableCellHeight",t)}_getValueToSet(e){const t=$S(e,"px");if(t!==this._defaultValue)return t}}class tT extends JS{constructor(e,t){super(e,"tableCellBackgroundColor",t)}}class oT extends JS{constructor(e,t){super(e,"tableCellVerticalAlignment",t)}}class nT extends JS{constructor(e,t){super(e,"tableCellHorizontalAlignment",t)}}class iT extends JS{constructor(e,t){super(e,"tableCellBorderStyle",t)}_getAttribute(e){if(!e)return;const t=qS(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class rT extends JS{constructor(e,t){super(e,"tableCellBorderColor",t)}_getAttribute(e){if(!e)return;const t=qS(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class sT extends JS{constructor(e,t){super(e,"tableCellBorderWidth",t)}_getAttribute(e){if(!e)return;const t=qS(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){const t=$S(e,"px");if(t!==this._defaultValue)return t}}const aT=/^(top|middle|bottom)$/,lT=/^(left|center|right|justify)$/;class cT extends br{static get pluginName(){return"TableCellPropertiesEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[HB,QS]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableCellProperties.defaultProperties",{});const n=GS(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection});e.data.addStyleProcessorRules(Sh),function(e,t,o){const n={width:"tableCellBorderWidth",color:"tableCellBorderColor",style:"tableCellBorderStyle"};e.extend("tableCell",{allowAttributes:Object.values(n)}),ID(t,"td",n,o),ID(t,"th",n,o),PD(t,{modelElement:"tableCell",modelAttribute:n.style,styleName:"border-style"}),PD(t,{modelElement:"tableCell",modelAttribute:n.color,styleName:"border-color"}),PD(t,{modelElement:"tableCell",modelAttribute:n.width,styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableCellBorderStyle",new iT(e,n.borderStyle)),e.commands.add("tableCellBorderColor",new rT(e,n.borderColor)),e.commands.add("tableCellBorderWidth",new sT(e,n.borderWidth)),ND(t,o,{modelAttribute:"tableCellHeight",styleName:"height",defaultValue:n.height}),e.commands.add("tableCellHeight",new eT(e,n.height)),e.data.addStyleProcessorRules(Vh),ND(t,o,{modelAttribute:"tableCellPadding",styleName:"padding",reduceBoxSides:!0,defaultValue:n.padding}),e.commands.add("tableCellPadding",new XS(e,n.padding)),e.data.addStyleProcessorRules(Bh),ND(t,o,{modelAttribute:"tableCellBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableCellBackgroundColor",new tT(e,n.backgroundColor)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellHorizontalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellHorizontalAlignment"},view:e=>({key:"style",value:{"text-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"text-align":lT}},model:{key:"tableCellHorizontalAlignment",value:e=>{const t=e.getStyle("text-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{align:lT}},model:{key:"tableCellHorizontalAlignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.horizontalAlignment),e.commands.add("tableCellHorizontalAlignment",new nT(e,n.horizontalAlignment)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellVerticalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellVerticalAlignment"},view:e=>({key:"style",value:{"vertical-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"vertical-align":aT}},model:{key:"tableCellVerticalAlignment",value:e=>{const t=e.getStyle("vertical-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{valign:aT}},model:{key:"tableCellVerticalAlignment",value:e=>{const t=e.getAttribute("valign");return t===o?null:t}}})}(t,o,n.verticalAlignment),e.commands.add("tableCellVerticalAlignment",new oT(e,n.verticalAlignment))}}class dT extends wr{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=VD(this.editor.model.document.selection);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=VD(o),s=this._getValueToSet(n);t.enqueueChange(i,(e=>{s?e.setAttribute(this.attributeName,s,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 uT extends dT{constructor(e,t){super(e,"tableBackgroundColor",t)}}class hT extends dT{constructor(e,t){super(e,"tableBorderColor",t)}_getValue(e){if(!e)return;const t=qS(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class pT extends dT{constructor(e,t){super(e,"tableBorderStyle",t)}_getValue(e){if(!e)return;const t=qS(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class mT extends dT{constructor(e,t){super(e,"tableBorderWidth",t)}_getValue(e){if(!e)return;const t=qS(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){const t=$S(e,"px");if(t!==this._defaultValue)return t}}class gT extends dT{constructor(e,t){super(e,"tableWidth",t)}_getValueToSet(e){if((e=$S(e,"px"))!==this._defaultValue)return e}}class fT extends dT{constructor(e,t){super(e,"tableHeight",t)}_getValueToSet(e){if((e=$S(e,"px"))!==this._defaultValue)return e}}class bT extends dT{constructor(e,t){super(e,"tableAlignment",t)}}const kT=/^(left|center|right)$/,wT=/^(left|none|right)$/;class _T extends br{static get pluginName(){return"TablePropertiesEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[HB]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableProperties.defaultProperties",{});const n=WS(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0});e.data.addStyleProcessorRules(Sh),function(e,t,o){const n={width:"tableBorderWidth",color:"tableBorderColor",style:"tableBorderStyle"};e.extend("table",{allowAttributes:Object.values(n)}),ID(t,"table",n,o),FD(t,{modelAttribute:n.color,styleName:"border-color"}),FD(t,{modelAttribute:n.style,styleName:"border-style"}),FD(t,{modelAttribute:n.width,styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableBorderColor",new hT(e,n.borderColor)),e.commands.add("tableBorderStyle",new pT(e,n.borderStyle)),e.commands.add("tableBorderWidth",new mT(e,n.borderWidth)),function(e,t,o){e.extend("table",{allowAttributes:["tableAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"table",key:"tableAlignment"},view:e=>({key:"style",value:{float:"center"===e?"none":e}}),converterPriority:"high"}),t.for("upcast").attributeToAttribute({view:{name:/^(table|figure)$/,styles:{float:wT}},model:{key:"tableAlignment",value:e=>{let t=e.getStyle("float");return"none"===t&&(t="center"),t===o?null:t}}}).attributeToAttribute({view:{attributes:{align:kT}},model:{name:"table",key:"tableAlignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.alignment),e.commands.add("tableAlignment",new bT(e,n.alignment)),yT(t,o,{modelAttribute:"tableWidth",styleName:"width",defaultValue:n.width}),e.commands.add("tableWidth",new gT(e,n.width)),yT(t,o,{modelAttribute:"tableHeight",styleName:"height",defaultValue:n.height}),e.commands.add("tableHeight",new fT(e,n.height)),e.data.addStyleProcessorRules(Bh),function(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),TD(t,{viewElement:"table",...o}),FD(t,o)}(t,o,{modelAttribute:"tableBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableBackgroundColor",new uT(e,n.backgroundColor))}}function yT(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),TD(t,{viewElement:/^(table|figure)$/,shouldUpcast:e=>!("table"==e.name&&"figure"==e.parent.name),...o}),PD(t,{modelElement:"table",...o})}var AT=i(4001),CT={attributes:{"data-cke":!0}};CT.setAttributes=Xr(),CT.insert=Yr().bind(null,"head"),CT.domAPI=Zr(),CT.insertStyleElement=ts();Gr()(AT.A,CT);AT.A&&AT.A.locals&&AT.A.locals;class vT extends zp{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:s,backgroundInput:a}=this._createBackgroundFields(),{widthInput:l,operatorLabel:c,heightInput:d,dimensionsLabel:u}=this._createDimensionFields(),{alignmentToolbar:h,alignmentLabel:p}=this._createAlignmentFields();this.focusTracker=new nr,this.keystrokes=new ar,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=a,this.widthInput=l,this.heightInput=d,this.alignmentToolbar=h;const{saveButtonView:m,cancelButtonView:g}=this._createActionButtons();this.saveButtonView=m,this.cancelButtonView=g,this._focusables=new hp,this._focusCycler=new Xp({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new Qp(e,{label:this.t("Table properties")})),this.children.add(new SS(e,{labelView:r,children:[r,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new SS(e,{labelView:s,children:[s,a],class:"ck-table-form__background-row"})),this.children.add(new SS(e,{children:[new SS(e,{labelView:u,children:[u,l,c,d],class:"ck-table-form__dimensions-row"}),new SS(e,{labelView:p,children:[p,h],class:"ck-table-properties-form__alignment-row"})]})),this.children.add(new SS(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(),Vp({view:this}),[this.borderColorInput,this.backgroundInput].forEach((e=>{this._focusCycler.chain(e.fieldView.focusCycler)})),[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)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=xS({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color,colorPickerConfig:this.options.colorPickerConfig}),n=this.locale,i=this.t,r=i("Style"),s=new Sm(n);s.text=i("Border");const a=fS(i),l=new dg(n,Bf);l.set({label:r,class:"ck-table-form__border-style"}),l.fieldView.buttonView.set({ariaLabel:r,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:r}),l.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>a[e||"none"])),l.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),l.bind("isEmpty").to(this,"borderStyle",(e=>!e)),yf(l.fieldView,AS(this,t.style),{role:"menu",ariaLabel:r});const c=new dg(n,Ef);c.set({label:i("Width"),class:"ck-table-form__border-width"}),c.fieldView.bind("value").to(this,"borderWidth"),c.bind("isEnabled").to(this,"borderStyle",xT),c.fieldView.on("input",(()=>{this.borderWidth=c.fieldView.element.value}));const d=new dg(n,o);return d.set({label:i("Color"),class:"ck-table-form__border-color"}),d.fieldView.bind("value").to(this,"borderColor"),d.bind("isEnabled").to(this,"borderStyle",xT),d.fieldView.on("input",(()=>{this.borderColor=d.fieldView.value})),this.on("change:borderStyle",((e,o,n,i)=>{xT(n)||(this.borderColor="",this.borderWidth=""),xT(i)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:s,borderStyleDropdown:l,borderColorInput:d,borderWidthInput:c}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new Sm(e);o.text=t("Background");const n=xS({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableProperties.backgroundColor,colorPickerConfig:this.options.colorPickerConfig}),i=new dg(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 Sm(e);o.text=t("Dimensions");const n=new dg(e,Ef);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 zp(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const r=new dg(e,Ef);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 Sm(e);o.text=t("Alignment");const n=new af(e);return n.set({role:"radiogroup",isCompact:!0,ariaLabel:t("Table alignment toolbar")}),CS({view:this,icons:{left:up.objectLeft,center:up.objectCenter,right:up.objectRight},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 Kp(e),n=new Kp(e),i=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.widthInput,this.heightInput];return o.set({label:t("Save"),icon:up.check,class:"ck-button-save",type:"submit",withText:!0}),o.bind("isEnabled").toMany(i,"errorText",((...e)=>e.every((e=>!e)))),n.set({label:t("Cancel"),icon:up.cancel,class:"ck-button-cancel",withText:!0}),n.delegate("execute").to(this,"cancel"),{saveButtonView:o,cancelButtonView:n}}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 xT(e){return"none"!==e}const ET={borderStyle:"tableBorderStyle",borderColor:"tableBorderColor",borderWidth:"tableBorderWidth",backgroundColor:"tableBackgroundColor",width:"tableWidth",height:"tableHeight",alignment:"tableAlignment"};class DT extends br{static get requires(){return[kk]}static get pluginName(){return"TablePropertiesUI"}static get isOfficialPlugin(){return!0}constructor(e){super(e),this.view=null,e.config.define("table.tableProperties",{borderColors:vS,backgroundColors:vS})}init(){const e=this.editor,t=e.t;this._defaultTableProperties=WS(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0}),this._balloon=e.plugins.get(kk),e.ui.componentFactory.add("tableProperties",(o=>{const n=new Kp(o);n.set({label:t("Table properties"),icon:'',tooltip:!0}),this.listenTo(n,"execute",(()=>this._showView()));const i=Object.values(ET).map((t=>e.commands.get(t)));return n.bind("isEnabled").toMany(i,"isEnabled",((...e)=>e.some((e=>e)))),n}))}destroy(){super.destroy(),this.view&&this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.config.get("table.tableProperties"),o=Zm(t.borderColors),n=Km(e.locale,o),i=Zm(t.backgroundColors),r=Km(e.locale,i),s=!1!==t.colorPicker,a=new vT(e.locale,{borderColors:n,backgroundColors:r,defaultTableProperties:this._defaultTableProperties,colorPickerConfig:!!s&&(t.colorPicker||{})}),l=e.t;a.render(),this.listenTo(a,"submit",(()=>{this._hideView()})),this.listenTo(a,"cancel",(()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()})),a.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),Op({emitter:a,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const c=bS(l),d=kS(l);return a.on("change:borderStyle",this._getPropertyChangeCallback("tableBorderStyle")),a.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:a.borderColorInput,commandName:"tableBorderColor",errorText:c,validator:wS})),a.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:a.borderWidthInput,commandName:"tableBorderWidth",errorText:d,validator:yS})),a.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:a.backgroundInput,commandName:"tableBackgroundColor",errorText:c,validator:wS})),a.on("change:width",this._getValidatedPropertyChangeCallback({viewField:a.widthInput,commandName:"tableWidth",errorText:d,validator:_S})),a.on("change:height",this._getValidatedPropertyChangeCallback({viewField:a.heightInput,commandName:"tableHeight",errorText:d,validator:_S})),a.on("change:alignment",this._getPropertyChangeCallback("tableAlignment")),a}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableBorderStyle");Object.entries(ET).map((([t,o])=>{const n=t,i=this._defaultTableProperties[n]||"";return[n,e.get(o).value||i]})).forEach((([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)})),this._isReady=!0}_showView(){const e=this.editor;this.view||(this.view=this._createPropertiesView()),this.listenTo(e.ui,"update",(()=>{this._updateView()})),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:LS(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){const e=this.editor;this.stopListening(e.ui,"update"),this._isReady=!1,this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}_updateView(){const e=this.editor;aS(e.editing.view.document.selection)?this._isViewVisible&&VS(e,"table"):this._hideView()}get _isViewVisible(){return!!this.view&&this._balloon.visibleView===this.view}get _isViewInBalloon(){return!!this.view&&this._balloon.hasView(this.view)}_getPropertyChangeCallback(e){return(t,o,n)=>{this._isReady&&this.editor.execute(e,{value:n,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i}=e,r=bl((()=>{o.errorText=i}),500);return(e,i,s)=>{r.cancel(),this._isReady&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):r())}}}var BT=i(7406),ST={attributes:{"data-cke":!0}};ST.setAttributes=Xr(),ST.insert=Yr().bind(null,"head"),ST.domAPI=Zr(),ST.insertStyleElement=ts();Gr()(BT.A,ST);BT.A&&BT.A.locals&&BT.A.locals;var TT=i(4204),IT={attributes:{"data-cke":!0}};IT.setAttributes=Xr(),IT.insert=Yr().bind(null,"head"),IT.domAPI=Zr(),IT.insertStyleElement=ts();Gr()(TT.A,IT);TT.A&&TT.A.locals&&TT.A.locals;function PT(e){return void 0!==e&&e.endsWith("px")}function FT(e){return e.toFixed(2).replace(/\.?0+$/,"")+"px"}function RT(e,t,o){if(!e.childCount)return;const n=new oh(e.document),i=function(e,t){const o=t.createRangeIn(e),n=[],i=new Set;for(const e of o.getItems()){if(!e.is("element")||!e.name.match(/^(p|h\d+|li|div)$/))continue;let t=jT(e);if(void 0===t||0!=parseFloat(t)||Array.from(e.getClassNames()).find((e=>e.startsWith("MsoList")))||(t=void 0),e.hasStyle("mso-list")||void 0!==t&&i.has(t)){const o=LT(e);n.push({element:e,id:o.id,order:o.order,indent:o.indent,marginLeft:t}),void 0!==t&&i.add(t)}else i.clear()}return n}(e,n);if(!i.length)return;const r={},s=[];for(const e of i)if(void 0!==e.indent){MT(e)||(s.length=0);const i=`${e.id}:${e.indent}`,a=Math.min(e.indent-1,s.length);if(as.length-1||s[a].listElement.name!=l.type){0==a&&"ol"==l.type&&void 0!==e.id&&r[i]&&(l.startIndex=r[i]);const t=VT(l,n,o);if(PT(e.marginLeft)&&(0==a||PT(s[a-1].marginLeft))){let o=e.marginLeft;a>0&&(o=FT(parseFloat(o)-parseFloat(s[a-1].marginLeft))),n.setStyle("padding-left",o,t)}if(0==s.length){const o=e.element.parent,i=o.getChildIndex(e.element)+1;n.insertChild(i,t,o)}else{const e=s[a-1].listItemElements;n.appendChild(t,e[e.length-1])}s[a]={...e,listElement:t,listItemElements:[]},0==a&&void 0!==e.id&&(r[i]=l.startIndex||1)}}const l="li"==e.element.name?e.element:n.createElement("li");n.appendChild(l,s[a].listElement),s[a].listItemElements.push(l),0==a&&void 0!==e.id&&r[i]++,e.element!=l&&n.appendChild(e.element,l),HT(e.element,n),n.removeStyle("text-indent",e.element),n.removeStyle("margin-left",e.element)}else{const t=s.find((t=>t.marginLeft==e.marginLeft));if(t){const o=t.listItemElements;n.appendChild(e.element,o[o.length-1]),n.removeStyle("margin-left",e.element)}else s.length=0}}function MT(e){const t=e.element.previousSibling;return zT(t||e.element.parent)}function zT(e){return e.is("element","ol")||e.is("element","ul")}function OT(e,t){const o=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),n=/mso-level-number-format:([^;]{0,100});/gi,i=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,r=new RegExp(`@list\\s+l${e.id}:level\\d\\s*{[^{]*mso-level-text:"%\\d\\\\.`,"gi"),s=new RegExp(`@list l${e.id}:level\\d\\s*{[^{]*mso-level-number-format:`,"gi"),a=r.exec(t),l=s.exec(t),c=a&&!l,d=o.exec(t);let u="decimal",h="ol",p=null;if(d&&d[1]){const t=n.exec(d[1]);if(t&&t[1]&&(u=t[1].trim(),h="bullet"!==u&&"image"!==u?"ol":"ul"),"bullet"===u){const t=function(e){if("li"==e.name&&"ul"==e.parent.name&&e.parent.hasAttribute("type"))return e.parent.getAttribute("type");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);if(e)return e.is("$text")?e:e.getChild(0)}return null}(e);if(!t)return null;const o=t._data;if("o"===o)return"circle";if("·"===o)return"disc";if("§"===o)return"square";return null}(e.element);t&&(u=t)}else{const e=i.exec(d[1]);e&&e[1]&&(p=parseInt(e[1]))}c&&(h="ol")}return{type:h,startIndex:p,style:NT(u),isLegalStyleList:c}}function NT(e){if(e.startsWith("arabic-leading-zero"))return"decimal-leading-zero";switch(e){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 VT(e,t,o){const n=t.createElement(e.type);return e.style&&t.setStyle("list-style-type",e.style,n),e.startIndex&&e.startIndex>1&&t.setAttribute("start",e.startIndex,n),e.isLegalStyleList&&o&&t.addClass("legal-list",n),n}function LT(e){const t=e.getStyle("mso-list");if(void 0===t)return{};const o=t.match(/(^|\s{1,100})l(\d+)/i),n=t.match(/\s{0,100}lfo(\d+)/i),i=t.match(/\s{0,100}level(\d+)/i);return o&&n&&i?{id:o[2],order:n[1],indent:parseInt(i[1])}:{indent:1}}function HT(e,t){const o=new As({name:"span",styles:{"mso-list":"Ignore"}}),n=t.createRangeIn(e);for(const e of n)"elementStart"===e.type&&o.match(e.item)&&t.remove(e.item)}function jT(e){const t=e.getStyle("margin-left");return void 0===t||t.endsWith("px")?t:function(e){const t=parseFloat(e);return e.endsWith("pt")?FT(96*t/72):e.endsWith("pc")?FT(12*t*96/72):e.endsWith("in")?FT(96*t):e.endsWith("cm")?FT(96*t/2.54):e.endsWith("mm")?FT(t/10*96/2.54):e}(t)}function qT(e,t){if(!e.childCount)return;const o=new oh(e.document),n=function(e,t){const o=t.createRangeIn(e),n=new As({name:/v:(.+)/}),i=[];for(const e of o){if("elementStart"!=e.type)continue;const t=e.item,o=t.previousSibling,r=o&&o.is("element")?o.name:null,s=["Chart"],a=n.match(t),l=t.getAttribute("o:gfxdata"),c="v:shapetype"===r,d=l&&s.some((e=>t.getAttribute("id").includes(e)));a&&l&&!c&&!d&&i.push(e.item.getAttribute("id"))}return i}(e,o);!function(e,t,o){const n=o.createRangeIn(t),i=new As({name:"img"}),r=[];for(const t of n)if(t.item.is("element")&&i.match(t.item)){const o=t.item,n=o.getAttribute("v:shapes")?o.getAttribute("v:shapes").split(" "):[];n.length&&n.every((t=>e.indexOf(t)>-1))?r.push(o):o.getAttribute("src")||r.push(o)}for(const e of r)o.remove(e)}(n,e,o),function(e,t,o){const n=o.createRangeIn(t),i=[];for(const t of n)if("elementStart"==t.type&&t.item.is("element","v:shape")){const o=t.item.getAttribute("id");if(e.includes(o))continue;r(t.item.parent.getChildren(),o)||i.push(t.item)}for(const e of i){const t={src:s(e)};e.hasAttribute("alt")&&(t.alt=e.getAttribute("alt"));const n=o.createElement("img",t);o.insertChild(e.index+1,n,e.parent)}function r(e,t){for(const o of e)if(o.is("element")){if("img"==o.name&&o.getAttribute("v:shapes")==t)return!0;if(r(o.getChildren(),t))return!0}return!1}function s(e){for(const t of e.getChildren())if(t.is("element")&&t.getAttribute("src"))return t.getAttribute("src")}}(n,e,o),function(e,t){const o=t.createRangeIn(e),n=new As({name:/v:(.+)/}),i=[];for(const e of o)"elementStart"==e.type&&n.match(e.item)&&i.push(e.item);for(const e of i)t.remove(e)}(e,o);const i=function(e,t){const o=t.createRangeIn(e),n=new As({name:"img"}),i=[];for(const e of o)e.item.is("element")&&n.match(e.item)&&e.item.getAttribute("src").startsWith("file://")&&i.push(e.item);return i}(e,o);i.length&&function(e,t,o){if(e.length===t.length)for(let n=0;nString.fromCharCode(parseInt(e,16)))).join(""))}const UT=//i,WT=/xmlns:o="urn:schemas-microsoft-com/i;class GT{constructor(e,t=!1){this.document=e,this.hasMultiLevelListPlugin=t}isActive(e){return UT.test(e)||WT.test(e)}execute(e){const t=new oh(this.document),{body:o,stylesString:n}=e._parsedData;!function(e,t){const o=[];for(const n of t.createRangeIn(e)){const e=n.item;e.is("element","a")&&!e.hasAttribute("href")&&(e.hasAttribute("id")||e.hasAttribute("name"))&&o.push(e)}for(const e of o){const o=e.parent.getChildIndex(e)+1,n=e.getChildren();t.insertChild(o,n,e.parent)}}(o,t),RT(o,n,this.hasMultiLevelListPlugin),qT(o,e.dataTransfer.getData("text/rtf")),function(e){const t=[],o=new oh(e.document);for(const{item:n}of o.createRangeIn(e))if(n.is("element")){for(const e of n.getClassNames())/\bmso/gi.exec(e)&&o.removeClass(e,n);for(const e of n.getStyleNames())/\bmso/gi.exec(e)&&o.removeStyle(e,n);(n.is("element","w:sdt")||n.is("element","w:sdtpr")&&n.isEmpty||n.is("element","o:p")&&n.isEmpty)&&t.push(n)}for(const e of t){const t=e.parent,n=t.getChildIndex(e);o.insertChild(n,e.getChildren(),t),o.remove(e)}}(o),e.content=o}}function KT(e,t,o,{blockElements:n,inlineObjectElements:i}){let r=o.createPositionAt(e,"forward"==t?"after":"before");return r=r.getLastMatchingPosition((({item:e})=>e.is("element")&&!n.includes(e.name)&&!i.includes(e.name)),{direction:t}),"forward"==t?r.nodeAfter:r.nodeBefore}function ZT(e,t){return!!e&&e.is("element")&&t.includes(e.name)}const JT=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class YT{constructor(e){this.document=e}isActive(e){return JT.test(e)}execute(e){const t=new oh(this.document),{body:o}=e._parsedData;!function(e,t){for(const o of e.getChildren())if(o.is("element","b")&&"normal"===o.getStyle("font-weight")){const n=e.getChildIndex(o);t.remove(o),t.insertChild(n,o.getChildren(),e)}}(o,t),function(e,t){for(const o of t.createRangeIn(e)){const e=o.item;if(e.is("element","li")){const o=e.getChild(0);o&&o.is("element","p")&&t.unwrapElement(o)}}}(o,t),function(e,t){const o=new oa(t.document.stylesProcessor),n=new Ua(o,{renderingMode:"data"}),i=n.blockElements,r=n.inlineObjectElements,s=[];for(const o of t.createRangeIn(e)){const e=o.item;if(e.is("element","br")){const o=KT(e,"forward",t,{blockElements:i,inlineObjectElements:r}),n=KT(e,"backward",t,{blockElements:i,inlineObjectElements:r}),a=ZT(o,i);(ZT(n,i)||a)&&s.push(e)}}for(const e of s)e.hasClass("Apple-interchange-newline")?t.remove(e):t.replace(e,t.createElement("p"))}(o,t),e.content=o}}const QT=/(\s+)<\/span>/g,((e,t)=>1===t.length?" ":Array(t.length+1).join("  ").substr(0,t.length)))}function tI(e,t){const o=new DOMParser,n=function(e){return eI(eI(e)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/()[\r\n]+(<\/span>)/g,"$1 $2").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(e){const t="",o="",n=e.indexOf(t);if(n<0)return e;const i=e.indexOf(o,n+t.length);return e.substring(0,n+t.length)+(i>=0?e.substring(i):"")}(e=(e=e.replace(//,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(GF.source+"\\s*$"),/^$/,!1]];const ZF=[["table",function(e,t,o,n){if(t+2>o)return!1;let i=t+1;if(e.sCount[i]=4)return!1;let r=e.bMarks[i]+e.tShift[i];if(r>=e.eMarks[i])return!1;const s=e.src.charCodeAt(r++);if(124!==s&&45!==s&&58!==s)return!1;if(r>=e.eMarks[i])return!1;const a=e.src.charCodeAt(r++);if(124!==a&&45!==a&&58!==a&&!nF(a))return!1;if(45===s&&nF(a))return!1;for(;r=4)return!1;c=HF(l),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop();const u=c.length;if(0===u||u!==d.length)return!1;if(n)return!0;const h=e.parentType;e.parentType="table";const p=e.md.block.ruler.getRules("blockquote"),m=[t,0];e.push("table_open","table",1).map=m,e.push("thead_open","thead",1).map=[t,t+1],e.push("tr_open","tr",1).map=[t,t+1];for(let t=0;t=4)break;if(c=HF(l),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop(),f+=u-c.length,f>65536)break;if(i===t+2){e.push("tbody_open","tbody",1).map=g=[t+2,0]}e.push("tr_open","tr",1).map=[i,i+1];for(let t=0;t=4))break;n++,i=n}e.line=i;const r=e.push("code_block","code",0);return r.content=e.getLines(t,i,4+e.blkIndent,!1)+"\n",r.map=[t,e.line],!0}],["fence",function(e,t,o,n){let i=e.bMarks[t]+e.tShift[t],r=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(i+3>r)return!1;const s=e.src.charCodeAt(i);if(126!==s&&96!==s)return!1;let a=i;i=e.skipChars(i,s);let l=i-a;if(l<3)return!1;const c=e.src.slice(a,i),d=e.src.slice(i,r);if(96===s&&d.indexOf(String.fromCharCode(s))>=0)return!1;if(n)return!0;let u=t,h=!1;for(;(u++,!(u>=o))&&(i=a=e.bMarks[u]+e.tShift[u],r=e.eMarks[u],!(i=4||(i=e.skipChars(i,s),i-a=4)return!1;if(62!==e.src.charCodeAt(i))return!1;if(n)return!0;const a=[],l=[],c=[],d=[],u=e.md.block.ruler.getRules("blockquote"),h=e.parentType;e.parentType="blockquote";let p,m=!1;for(p=t;p=r)break;if(62===e.src.charCodeAt(i++)&&!t){let t,o,n=e.sCount[p]+1;32===e.src.charCodeAt(i)?(i++,n++,o=!1,t=!0):9===e.src.charCodeAt(i)?(t=!0,(e.bsCount[p]+n)%4==3?(i++,n++,o=!1):o=!0):t=!1;let s=n;for(a.push(e.bMarks[p]),e.bMarks[p]=i;i=r,l.push(e.bsCount[p]),e.bsCount[p]=e.sCount[p]+1+(t?1:0),c.push(e.sCount[p]),e.sCount[p]=s-n,d.push(e.tShift[p]),e.tShift[p]=i-e.bMarks[p];continue}if(m)break;let n=!1;for(let t=0,i=u.length;t";const b=[t,0];f.map=b,e.md.block.tokenize(e,t,p),e.push("blockquote_close","blockquote",-1).markup=">",e.lineMax=s,e.parentType=h,b[1]=e.line;for(let o=0;o=4)return!1;let r=e.bMarks[t]+e.tShift[t];const s=e.src.charCodeAt(r++);if(42!==s&&45!==s&&95!==s)return!1;let a=1;for(;r=4)return!1;if(e.listIndent>=0&&e.sCount[l]-e.listIndent>=4&&e.sCount[l]=e.blkIndent&&(p=!0),(h=qF(e,l))>=0){if(d=!0,s=e.bMarks[l]+e.tShift[l],u=Number(e.src.slice(s,h-1)),p&&1!==u)return!1}else{if(!((h=jF(e,l))>=0))return!1;d=!1}if(p&&e.skipSpaces(h)>=e.eMarks[l])return!1;if(n)return!0;const m=e.src.charCodeAt(h-1),g=e.tokens.length;d?(a=e.push("ordered_list_open","ol",1),1!==u&&(a.attrs=[["start",u]])):a=e.push("bullet_list_open","ul",1);const f=[l,0];a.map=f,a.markup=String.fromCharCode(m);let b=!1;const k=e.md.block.ruler.getRules("list"),w=e.parentType;for(e.parentType="list";l=i?1:n-t,p>4&&(p=1);const g=t+p;a=e.push("list_item_open","li",1),a.markup=String.fromCharCode(m);const f=[l,0];a.map=f,d&&(a.info=e.src.slice(s,h-1));const w=e.tight,_=e.tShift[l],y=e.sCount[l],A=e.listIndent;if(e.listIndent=e.blkIndent,e.blkIndent=g,e.tight=!0,e.tShift[l]=u-e.bMarks[l],e.sCount[l]=n,u>=i&&e.isEmpty(l+1)?e.line=Math.min(e.line+2,o):e.md.block.tokenize(e,l,o,!0),e.tight&&!b||(c=!1),b=e.line-l>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=A,e.tShift[l]=_,e.sCount[l]=y,e.tight=w,a=e.push("list_item_close","li",-1),a.markup=String.fromCharCode(m),l=e.line,f[1]=l,l>=o)break;if(e.sCount[l]=4)break;let C=!1;for(let t=0,n=k.length;t=4)return!1;if(91!==e.src.charCodeAt(i))return!1;function a(t){const o=e.lineMax;if(t>=o||e.isEmpty(t))return null;let n=!1;if(e.sCount[t]-e.blkIndent>3&&(n=!0),e.sCount[t]<0&&(n=!0),!n){const n=e.md.block.ruler.getRules("reference"),i=e.parentType;e.parentType="reference";let r=!1;for(let i=0,s=n.length;i=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(i))return!1;let s=e.src.slice(i,r),a=0;for(;a=4)return!1;let s=e.src.charCodeAt(i);if(35!==s||i>=r)return!1;let a=1;for(s=e.src.charCodeAt(++i);35===s&&i6||ii&&nF(e.src.charCodeAt(l-1))&&(r=l),e.line=t+1;const c=e.push("heading_open","h"+String(a),1);c.markup="########".slice(0,a),c.map=[t,e.line];const d=e.push("inline","",0);return d.content=e.src.slice(i,r).trim(),d.map=[t,e.line],d.children=[],e.push("heading_close","h"+String(a),-1).markup="########".slice(0,a),!0},["paragraph","reference","blockquote"]],["lheading",function(e,t,o){const n=e.md.block.ruler.getRules("paragraph");if(e.sCount[t]-e.blkIndent>=4)return!1;const i=e.parentType;e.parentType="paragraph";let r,s=0,a=t+1;for(;a3)continue;if(e.sCount[a]>=e.blkIndent){let t=e.bMarks[a]+e.tShift[a];const o=e.eMarks[a];if(t=o))){s=61===r?1:2;break}}if(e.sCount[a]<0)continue;let t=!1;for(let i=0,r=n.length;i3)continue;if(e.sCount[r]<0)continue;let t=!1;for(let i=0,s=n.length;i=o))&&!(e.sCount[s]=r){e.line=o;break}const t=e.line;let l=!1;for(let r=0;r=e.line)throw new Error("block rule didn't increment state.line");break}if(!l)throw new Error("none of the block rules matched");e.tight=!a,e.isEmpty(e.line-1)&&(a=!0),s=e.line,s0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],i={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(n),this.tokens_meta.push(i),n},QF.prototype.scanDelims=function(e,t){const o=this.posMax,n=this.src.charCodeAt(e),i=e>0?this.src.charCodeAt(e-1):32;let r=e;for(;r?@[]^_`{|}~-".split("").forEach((function(e){oR[e.charCodeAt(0)]=1}));const iR={tokenize:function(e,t){const o=e.pos,n=e.src.charCodeAt(o);if(t)return!1;if(126!==n)return!1;const i=e.scanDelims(e.pos,!0);let r=i.length;const s=String.fromCharCode(n);if(r<2)return!1;let a;r%2&&(a=e.push("text","",0),a.content=s,r--);for(let t=0;t=0;o--){const n=t[o];if(95!==n.marker&&42!==n.marker)continue;if(-1===n.end)continue;const i=t[n.end],r=o>0&&t[o-1].end===n.end+1&&t[o-1].marker===n.marker&&t[o-1].token===n.token-1&&t[n.end+1].token===i.token+1,s=String.fromCharCode(n.marker),a=e.tokens[n.token];a.type=r?"strong_open":"em_open",a.tag=r?"strong":"em",a.nesting=1,a.markup=r?s+s:s,a.content="";const l=e.tokens[i.token];l.type=r?"strong_close":"em_close",l.tag=r?"strong":"em",l.nesting=-1,l.markup=r?s+s:s,l.content="",r&&(e.tokens[t[o-1].token].content="",e.tokens[t[n.end+1].token].content="",o--)}}const sR={tokenize:function(e,t){const o=e.pos,n=e.src.charCodeAt(o);if(t)return!1;if(95!==n&&42!==n)return!1;const i=e.scanDelims(e.pos,42===n);for(let t=0;t\x00-\x20]*)$/;const cR=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,dR=/^&([a-z][a-z0-9]{1,31});/i;function uR(e){const t={},o=e.length;if(!o)return;let n=0,i=-2;const r=[];for(let s=0;sa;l-=r[l]+1){const t=e[l];if(t.marker===o.marker&&(t.open&&t.end<0)){let n=!1;if((t.close||o.open)&&(t.length+o.length)%3==0&&(t.length%3==0&&o.length%3==0||(n=!0)),!n){const n=l>0&&!e[l-1].open?r[l-1]+1:0;r[s]=s-l+n,r[l]=n,o.open=!1,t.end=s,t.close=!1,c=-1,i=-2;break}}}-1!==c&&(t[o.marker][(o.open?3:0)+(o.length||0)%3]=c)}}const hR=[["text",function(e,t){let o=e.pos;for(;o0)return!1;const o=e.pos;if(o+3>e.posMax)return!1;if(58!==e.src.charCodeAt(o))return!1;if(47!==e.src.charCodeAt(o+1))return!1;if(47!==e.src.charCodeAt(o+2))return!1;const n=e.pending.match(tR);if(!n)return!1;const i=n[1],r=e.md.linkify.matchAtStart(e.src.slice(o-i.length));if(!r)return!1;let s=r.url;if(s.length<=i.length)return!1;s=s.replace(/\*+$/,"");const a=e.md.normalizeLink(s);if(!e.md.validateLink(a))return!1;if(!t){e.pending=e.pending.slice(0,-i.length);const t=e.push("link_open","a",1);t.attrs=[["href",a]],t.markup="linkify",t.info="auto";e.push("text","",0).content=e.md.normalizeLinkText(s);const o=e.push("link_close","a",-1);o.markup="linkify",o.info="auto"}return e.pos+=s.length-i.length,!0}],["newline",function(e,t){let o=e.pos;if(10!==e.src.charCodeAt(o))return!1;const n=e.pending.length-1,i=e.posMax;if(!t)if(n>=0&&32===e.pending.charCodeAt(n))if(n>=1&&32===e.pending.charCodeAt(n-1)){let t=n-1;for(;t>=1&&32===e.pending.charCodeAt(t-1);)t--;e.pending=e.pending.slice(0,t),e.push("hardbreak","br",0)}else e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0);else e.push("softbreak","br",0);for(o++;o=n)return!1;let i=e.src.charCodeAt(o);if(10===i){for(t||e.push("hardbreak","br",0),o++;o=55296&&i<=56319&&o+1=56320&&t<=57343&&(r+=e.src[o+1],o++)}const s="\\"+r;if(!t){const t=e.push("text_special","",0);i<256&&0!==oR[i]?t.content=r:t.content=s,t.markup=s,t.info="escape"}return e.pos=o+1,!0}],["backticks",function(e,t){let o=e.pos;if(96!==e.src.charCodeAt(o))return!1;const n=o;o++;const i=e.posMax;for(;o=u)return!1;if(l=m,i=e.md.helpers.parseLinkDestination(e.src,m,e.posMax),i.ok){for(s=e.md.normalizeLink(i.str),e.md.validateLink(s)?m=i.pos:s="",l=m;m=u||41!==e.src.charCodeAt(m))&&(c=!0),m++}if(c){if(void 0===e.env.references)return!1;if(m=0?n=e.src.slice(l,m++):m=p+1):m=p+1,n||(n=e.src.slice(h,p)),r=e.env.references[aF(n)],!r)return e.pos=d,!1;s=r.href,a=r.title}if(!t){e.pos=h,e.posMax=p;const t=[["href",s]];e.push("link_open","a",1).attrs=t,a&&t.push(["title",a]),e.linkLevel++,e.md.inline.tokenize(e),e.linkLevel--,e.push("link_close","a",-1)}return e.pos=m,e.posMax=u,!0}],["image",function(e,t){let o,n,i,r,s,a,l,c,d="";const u=e.pos,h=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;const p=e.pos+2,m=e.md.helpers.parseLinkLabel(e,e.pos+1,!1);if(m<0)return!1;if(r=m+1,r=h)return!1;for(c=r,a=e.md.helpers.parseLinkDestination(e.src,r,e.posMax),a.ok&&(d=e.md.normalizeLink(a.str),e.md.validateLink(d)?r=a.pos:d=""),c=r;r=h||41!==e.src.charCodeAt(r))return e.pos=u,!1;r++}else{if(void 0===e.env.references)return!1;if(r=0?i=e.src.slice(c,r++):r=m+1):r=m+1,i||(i=e.src.slice(p,m)),s=e.env.references[aF(i)],!s)return e.pos=u,!1;d=s.href,l=s.title}if(!t){n=e.src.slice(p,m);const t=[];e.md.inline.parse(n,e.md,e.env,t);const o=e.push("image","img",0),i=[["src",d],["alt",""]];o.attrs=i,o.children=t,o.content=n,l&&i.push(["title",l])}return e.pos=r,e.posMax=h,!0}],["autolink",function(e,t){let o=e.pos;if(60!==e.src.charCodeAt(o))return!1;const n=e.pos,i=e.posMax;for(;;){if(++o>=i)return!1;const t=e.src.charCodeAt(o);if(60===t)return!1;if(62===t)break}const r=e.src.slice(n+1,o);if(lR.test(r)){const o=e.md.normalizeLink(r);if(!e.md.validateLink(o))return!1;if(!t){const t=e.push("link_open","a",1);t.attrs=[["href",o]],t.markup="autolink",t.info="auto";e.push("text","",0).content=e.md.normalizeLinkText(r);const n=e.push("link_close","a",-1);n.markup="autolink",n.info="auto"}return e.pos+=r.length+2,!0}if(aR.test(r)){const o=e.md.normalizeLink("mailto:"+r);if(!e.md.validateLink(o))return!1;if(!t){const t=e.push("link_open","a",1);t.attrs=[["href",o]],t.markup="autolink",t.info="auto";e.push("text","",0).content=e.md.normalizeLinkText(r);const n=e.push("link_close","a",-1);n.markup="autolink",n.info="auto"}return e.pos+=r.length+2,!0}return!1}],["html_inline",function(e,t){if(!e.md.options.html)return!1;const o=e.posMax,n=e.pos;if(60!==e.src.charCodeAt(n)||n+2>=o)return!1;const i=e.src.charCodeAt(n+1);if(33!==i&&63!==i&&47!==i&&!function(e){const t=32|e;return t>=97&&t<=122}(i))return!1;const r=e.src.slice(n).match(WF);if(!r)return!1;if(!t){const t=e.push("html_inline","",0);t.content=r[0],s=t.content,/^\s]/i.test(s)&&e.linkLevel++,function(e){return/^<\/a\s*>/i.test(e)}(t.content)&&e.linkLevel--}var s;return e.pos+=r[0].length,!0}],["entity",function(e,t){const o=e.pos,n=e.posMax;if(38!==e.src.charCodeAt(o))return!1;if(o+1>=n)return!1;if(35===e.src.charCodeAt(o+1)){const n=e.src.slice(o).match(cR);if(n){if(!t){const t="x"===n[1][0].toLowerCase()?parseInt(n[1].slice(1),16):parseInt(n[1],10),o=e.push("text_special","",0);o.content=qP(t)?$P(t):$P(65533),o.markup=n[0],o.info="entity"}return e.pos+=n[0].length,!0}}else{const n=e.src.slice(o).match(dR);if(n){const o=PP(n[0]);if(o!==n[0]){if(!t){const t=e.push("text_special","",0);t.content=o,t.markup=n[0],t.info="entity"}return e.pos+=n[0].length,!0}}}return!1}]],pR=[["balance_pairs",function(e){const t=e.tokens_meta,o=e.tokens_meta.length;uR(e.delimiters);for(let e=0;e0&&n++,"text"===i[t].type&&t+1=e.pos)throw new Error("inline rule didn't increment state.pos");break}}else e.pos=e.posMax;s||e.pos++,r[t]=e.pos},mR.prototype.tokenize=function(e){const t=this.ruler.getRules(""),o=t.length,n=e.posMax,i=e.md.options.maxNesting;for(;e.pos=e.pos)throw new Error("inline rule didn't increment state.pos");break}if(s){if(e.pos>=n)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},mR.prototype.parse=function(e,t,o,n){const i=new this.State(e,t,o,n);this.tokenize(i);const r=this.ruler2.getRules(""),s=r.length;for(let e=0;e=3&&":"===e[t-3]||t>=3&&"/"===e[t-3]?0:n.match(o.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,o){const n=e.slice(t);return o.re.mailto||(o.re.mailto=new RegExp("^"+o.re.src_email_name+"@"+o.re.src_host_strict,"i")),o.re.mailto.test(n)?n.match(o.re.mailto)[0].length:0}}},AR="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function CR(e){const t=e.re=function(e){const t={};e=e||{},t.src_Any=uP.source,t.src_Cc=hP.source,t.src_Z=mP.source,t.src_P=cP.source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");const o="[><|]";return t.src_pseudo_letter="(?:(?![><|]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><|]|"+t.src_ZPCc+")(?!"+(e["---"]?"-(?!--)|":"-|")+"_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|"+o+"|[()[\\]{}.,\"'?!\\-;]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+t.src_ZCc+"|[.]|$)|"+(e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+t.src_ZCc+"|$)|;(?!"+t.src_ZCc+"|$)|\\!+(?!"+t.src_ZCc+"|[!]|$)|\\?(?!"+t.src_ZCc+"|[?]|$))+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><|]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}(e.__opts__),o=e.__tlds__.slice();function n(e){return e.replace("%TLDS%",t.src_tlds)}e.onCompile(),e.__tlds_replaced__||o.push("a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"),o.push(t.src_xn),t.src_tlds=o.join("|"),t.email_fuzzy=RegExp(n(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(n(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(n(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(n(t.tpl_host_fuzzy_test),"i");const i=[];function r(e,t){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+t)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(t){const o=e.__schemas__[t];if(null===o)return;const n={validate:null,link:null};if(e.__compiled__[t]=n,"[object Object]"===bR(o))return!function(e){return"[object RegExp]"===bR(e)}(o.validate)?kR(o.validate)?n.validate=o.validate:r(t,o):n.validate=function(e){return function(t,o){const n=t.slice(o);return e.test(n)?n.match(e)[0].length:0}}(o.validate),void(kR(o.normalize)?n.normalize=o.normalize:o.normalize?r(t,o):n.normalize=function(e,t){t.normalize(e)});!function(e){return"[object String]"===bR(e)}(o)?r(t,o):i.push(t)})),i.forEach((function(t){e.__compiled__[e.__schemas__[t]]&&(e.__compiled__[t].validate=e.__compiled__[e.__schemas__[t]].validate,e.__compiled__[t].normalize=e.__compiled__[e.__schemas__[t]].normalize)})),e.__compiled__[""]={validate:null,normalize:function(e,t){t.normalize(e)}};const s=Object.keys(e.__compiled__).filter((function(t){return t.length>0&&e.__compiled__[t]})).map(wR).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+s+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+s+")","ig"),e.re.schema_at_start=RegExp("^"+e.re.schema_search.source,"i"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(e)}function vR(e,t){const o=e.__index__,n=e.__last_index__,i=e.__text_cache__.slice(o,n);this.schema=e.__schema__.toLowerCase(),this.index=o+t,this.lastIndex=n+t,this.raw=i,this.text=i,this.url=i}function xR(e,t){const o=new vR(e,t);return e.__compiled__[o.schema].normalize(o,e),o}function ER(e,t){if(!(this instanceof ER))return new ER(e,t);var o;t||(o=e,Object.keys(o||{}).reduce((function(e,t){return e||_R.hasOwnProperty(t)}),!1)&&(t=e,e={})),this.__opts__=fR({},_R,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=fR({},yR,e),this.__compiled__={},this.__tlds__=AR,this.__tlds_replaced__=!1,this.re={},CR(this)}ER.prototype.add=function(e,t){return this.__schemas__[e]=t,CR(this),this},ER.prototype.set=function(e){return this.__opts__=fR(this.__opts__,e),this},ER.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;let t,o,n,i,r,s,a,l,c;if(this.re.schema_test.test(e))for(a=this.re.schema_search,a.lastIndex=0;null!==(t=a.exec(e));)if(i=this.testSchemaAt(e,t[2],a.lastIndex),i){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+i;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(l=e.search(this.re.host_fuzzy_test),l>=0&&(this.__index__<0||l=0&&null!==(n=e.match(this.re.email_fuzzy))&&(r=n.index+n[1].length,s=n.index+n[0].length,(this.__index__<0||rthis.__last_index__)&&(this.__schema__="mailto:",this.__index__=r,this.__last_index__=s))),this.__index__>=0},ER.prototype.pretest=function(e){return this.re.pretest.test(e)},ER.prototype.testSchemaAt=function(e,t,o){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,o,this):0},ER.prototype.match=function(e){const t=[];let o=0;this.__index__>=0&&this.__text_cache__===e&&(t.push(xR(this,o)),o=this.__last_index__);let n=o?e.slice(o):e;for(;this.test(n);)t.push(xR(this,o)),n=n.slice(this.__last_index__),o+=this.__last_index__;return t.length?t:null},ER.prototype.matchAtStart=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return null;const t=this.re.schema_at_start.exec(e);if(!t)return null;const o=this.testSchemaAt(e,t[2],t[0].length);return o?(this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+o,xR(this,0)):null},ER.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,t,o){return e!==o[t-1]})).reverse(),CR(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,CR(this),this)},ER.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},ER.prototype.onCompile=function(){};const DR=ER,BR=2147483647,SR=36,TR=/^xn--/,IR=/[^\0-\x7F]/,PR=/[\x2E\u3002\uFF0E\uFF61]/g,FR={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},RR=Math.floor,MR=String.fromCharCode;function zR(e){throw new RangeError(FR[e])}function OR(e,t){const o=e.split("@");let n="";o.length>1&&(n=o[0]+"@",e=o[1]);const i=function(e,t){const o=[];let n=e.length;for(;n--;)o[n]=t(e[n]);return o}((e=e.replace(PR,".")).split("."),t).join(".");return n+i}function NR(e){const t=[];let o=0;const n=e.length;for(;o=55296&&i<=56319&&o>1,e+=RR(e/t);e>455;n+=SR)e=RR(e/35);return RR(n+36*e/(e+38))},HR=function(e){const t=[],o=e.length;let n=0,i=128,r=72,s=e.lastIndexOf("-");s<0&&(s=0);for(let o=0;o=128&&zR("not-basic"),t.push(e.charCodeAt(o));for(let l=s>0?s+1:0;l=o&&zR("invalid-input");const s=(a=e.charCodeAt(l++))>=48&&a<58?a-48+26:a>=65&&a<91?a-65:a>=97&&a<123?a-97:SR;s>=SR&&zR("invalid-input"),s>RR((BR-n)/t)&&zR("overflow"),n+=s*t;const c=i<=r?1:i>=r+26?26:i-r;if(sRR(BR/d)&&zR("overflow"),t*=d}const c=t.length+1;r=LR(n-s,c,0==s),RR(n/c)>BR-i&&zR("overflow"),i+=RR(n/c),n%=c,t.splice(n++,0,i)}var a;return String.fromCodePoint(...t)},jR=function(e){const t=[],o=(e=NR(e)).length;let n=128,i=0,r=72;for(const o of e)o<128&&t.push(MR(o));const s=t.length;let a=s;for(s&&t.push("-");a=n&&tRR((BR-i)/l)&&zR("overflow"),i+=(o-n)*l,n=o;for(const o of e)if(oBR&&zR("overflow"),o===n){let e=i;for(let o=SR;;o+=SR){const n=o<=r?1:o>=r+26?26:o-r;if(eString.fromCodePoint(...e)},decode:HR,encode:jR,toASCII:function(e){return OR(e,(function(e){return IR.test(e)?"xn--"+jR(e):e}))},toUnicode:function(e){return OR(e,(function(e){return TR.test(e)?HR(e.slice(4).toLowerCase()):e}))}},$R=qR,UR={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}},zero:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","fragments_join"]}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","fragments_join"]}}}},WR=/^(vbscript|javascript|file|data):/,GR=/^data:image\/(gif|png|jpeg|webp);/;function KR(e){const t=e.trim().toLowerCase();return!WR.test(t)||GR.test(t)}const ZR=["http:","https:","mailto:"];function JR(e){const t=lP(e,!0);if(t.hostname&&(!t.protocol||ZR.indexOf(t.protocol)>=0))try{t.hostname=$R.toASCII(t.hostname)}catch(e){}return KI(ZI(t))}function YR(e){const t=lP(e,!0);if(t.hostname&&(!t.protocol||ZR.indexOf(t.protocol)>=0))try{t.hostname=$R.toUnicode(t.hostname)}catch(e){}return UI(ZI(t),UI.defaultChars+"%")}function QR(e,t){if(!(this instanceof QR))return new QR(e,t);t||NP(e)||(t=e||{},e="default"),this.inline=new gR,this.block=new YF,this.core=new OF,this.renderer=new mF,this.linkify=new DR,this.validateLink=KR,this.normalizeLink=JR,this.normalizeLinkText=YR,this.utils=o,this.helpers=HP({},n),this.options={},this.configure(e),t&&this.set(t)}QR.prototype.set=function(e){return HP(this.options,e),this},QR.prototype.configure=function(e){const t=this;if(NP(e)){const t=e;if(!(e=UR[t]))throw new Error('Wrong `markdown-it` preset "'+t+'", check name')}if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach((function(o){e.components[o].rules&&t[o].ruler.enableOnly(e.components[o].rules),e.components[o].rules2&&t[o].ruler2.enableOnly(e.components[o].rules2)})),this},QR.prototype.enable=function(e,t){let o=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){o=o.concat(this[t].ruler.enable(e,!0))}),this),o=o.concat(this.inline.ruler2.enable(e,!0));const n=e.filter((function(e){return o.indexOf(e)<0}));if(n.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},QR.prototype.disable=function(e,t){let o=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){o=o.concat(this[t].ruler.disable(e,!0))}),this),o=o.concat(this.inline.ruler2.disable(e,!0));const n=e.filter((function(e){return o.indexOf(e)<0}));if(n.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},QR.prototype.use=function(e){const t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},QR.prototype.parse=function(e,t){if("string"!=typeof e)throw new Error("Input data should be a String");const o=new this.core.State(e,this,t);return this.core.process(o),o.tokens},QR.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},QR.prototype.parseInline=function(e,t){const o=new this.core.State(e,this,t);return o.inlineMode=!0,this.core.process(o),o.tokens},QR.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)};const XR=QR;var eM=i(9428),tM=i.n(eM);class oM{constructor(e){this._htmlDP=new Sd(e),this._domConverter=new Ua(e)}toView(e){const t=XR({html:!0,breaks:!0,langPrefix:"language-"});let o=t.use(tM(),{label:!0});const n=o.renderer.rules.code_block;t.renderer.rules.code_block=function(e,t,o,i,r){return e[t].content=e[t].content.replace(/\n$/,""),n(e,t,o,i,r)};const i=o.render(e),r=this._htmlDP._toDom(i);!function(e){let t,o=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(;t=o.nextNode();)t.previousElementSibling&&t.previousElementSibling.classList.contains("task-list-item-checkbox")&&(t.textContent=t.textContent.replace(/^\s+/,""))}(r),function(e){let t,o=document.createNodeIterator(e,NodeFilter.SHOW_ELEMENT,{acceptNode:function(e){if("BR"===e.tagName&&!e.parentElement)return NodeFilter.FILTER_ACCEPT}}),n=[];for(;t=o.nextNode();)n.push(t);for(const t of n){const o=document.createElement("p");e.insertBefore(o,t),jI(t)?o.appendChild(t):t.remove()}}(r),function(e){const t=document.createNodeIterator(e,NodeFilter.SHOW_ELEMENT,{acceptNode:function(e){if("P"===e.tagName&&e.parentElement&&"TD"===e.parentElement.tagName&&1===e.childNodes.length&&"BR"===e.childNodes[0].nodeName)return NodeFilter.FILTER_ACCEPT}});let o;for(;o=t.nextNode();)o.childNodes[0].remove()}(r),function(e){const t=document.createNodeIterator(e,NodeFilter.SHOW_ELEMENT,{acceptNode:function(e){if("BR"===e.tagName&&e.parentElement&&"LI"===e.parentElement.tagName)return NodeFilter.FILTER_ACCEPT}});let o,n=[];for(;o=t.nextNode();)n.push(o);for(const e of n)e.parentElement.insertBefore(document.createElement("p"),e),e.remove()}(r),r.querySelectorAll("input.task-list-item-checkbox").forEach((e=>{const t=e.closest("li.task-list-item");t&&e.parentElement!==t&&(e.parentElement&&e.parentElement.removeChild(e),t.insertBefore(e,t.firstChild))}));return this._domConverter.domToView(r)}toData(e){const t=this._domConverter.viewToDom(e,document);!function(e,t,o){t=t.map((e=>e.toUpperCase())),o=o.map((e=>e.toUpperCase()));let n,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(;n=i.nextNode();)n.parentElement&&t.indexOf(n.parentElement.nodeName)>=0&&(n.nodeValue=n.nodeValue.replace(/^[\u00a0]+/g," ").replace(/[\u00a0]+$/g," ")),LI(n,o)||(n.nodeValue=_.escape(n.nodeValue))}(t,["strong","em"],["pre","code","table"]),function(e){let t,o=document.createNodeIterator(e,NodeFilter.SHOW_ELEMENT,(function(e){return"a"===e.nodeName.toLowerCase()?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}));for(;t=o.nextNode();)t.setAttribute("href",t.href)}(t),function(e){let t,o=document.createNodeIterator(e,NodeFilter.SHOW_ELEMENT,{acceptNode:function(e){if("P"===e.tagName&&0===e.childNodes.length&&(!e.parentElement||"LI"===e.parentElement.tagName))return NodeFilter.FILTER_ACCEPT}});for(;t=o.nextNode();)t.appendChild(document.createElement("br"))}(t);const o=new VI({headingStyle:"atx",codeBlockStyle:"fenced",blankReplacement:function(e,t){if("CODE"===t.tagName){const e=(t.getAttribute("class")||"").replace("language-",""),o=t.textContent||"";return"```"+e+"\n"+(o.length?o:"\n")+"```\n"}return"PRE"===t.tagName?e:t.isBlock?"\n\n":""}});return o.use([nI]),o.addRule("taskListItems",{filter:function(e){const t="checkbox"===e.type,o=e.parentNode&&"LI"===e.parentNode.nodeName,n=e.parentNode&&e.parentNode.parentNode&&"LI"===e.parentNode.parentNode.nodeName;return t&&(o||n)},replacement:function(e,t){return(t.checked?"[x]":"[ ]")+" "}}),o.addRule("orderedListItems",{filter:function(e){return"LI"===e.nodeName&&!!e.closest("ol")},replacement:function(e,t,o){e=e.replace(/^\n+/,"").replace(/\n+$/,"\n");var n=t.parentNode,i=o.bulletListMarker+" ";if("OL"===n.nodeName){var r=n.getAttribute("start"),s=Array.prototype.indexOf.call(n.children,t);i=(r?Number(r)+s:s+1)+". "}var a=i.length,l=" ".repeat(a);return i+(e=e.replace(/\n/gm,"\n"+l))+(t.nextSibling&&!/\n$/.test(e)?"\n":"")}}),o.addRule("imageFigure",{filter:"img",replacement:function(e,t){const o=t.parentElement;return o&&o.classList.contains("op-uc-figure--content")?o.parentElement.outerHTML:t.outerHTML}}),o.addRule("figcaption",{filter:"figcaption",replacement:function(e,t){return""}}),o.addRule("markdownTables",{filter:function(e){return"TABLE"===e.nodeName&&(!e.parentElement||"FIGURE"!==e.parentElement.nodeName)},replacement:function(e,t){return t.outerHTML}}),o.addRule("htmlTables",{filter:function(e){const t=e.getElementsByTagName("table");return"FIGURE"===e.nodeName&&t.length},replacement:function(e,t){return t.querySelectorAll("td br[data-cke-filler]").forEach((e=>{e.nextElementSibling&&e.removeAttribute("data-cke-filler")})),t.outerHTML}}),o.addRule("strikethrough",{filter:["del","s","strike"],replacement:function(e){return"~~"+e+"~~"}}),o.addRule("openProjectMacros",{filter:["macro"],replacement:(e,t)=>{t.innerHTML="";return t.outerHTML.replace("","\n")}}),o.addRule("mentions",{filter:e=>"MENTION"===e.nodeName&&e.classList.contains("mention"),replacement:(e,t)=>t.outerHTML}),o.addRule("emptyParagraphs",{filter:e=>"P"===e.nodeName&&(0===e.childNodes.length||1===e.childNodes.length&&"BR"===e.childNodes[0].nodeName),replacement:(e,t)=>t.parentElement||t.nextSibling||t.previousSibling?1===t.childNodes.length&&jI(t.childNodes[0])?HI+"\n\n":"
      \n\n":""}),o.addRule("openProjectPageBreak",{filter:e=>"DIV"===e.nodeName&&e.classList.contains("page-break"),replacement:(e,t)=>HI}),o.turndown(t).replace(/\u00A0/," ").replace("###turndown-ignore###\n","")}}const nM='\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n image/svg+xml\n \n \n \n \n \n\n';const iM={"(":")","[":"]","{":"}"};class rM extends wr{constructor(e){super(e),this._isEnabledBasedOnSelection=!1}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=e.schema.checkAttributeInSelection(t.selection,"mention")}execute(e){const t=this.editor.model,o=t.document.selection,n="string"==typeof e.mention?{id:e.mention}:e.mention,i=n.id,r=e.range||o.getFirstRange();if(!t.canEditAt(r))return;const s=e.text||i,a=aM({_text:s,id:i},n);if(!i.startsWith(e.marker))throw new S("mentioncommand-incorrect-id",this);t.change((e=>{const n=lr(o.getAttributes()),i=new Map(n.entries());i.set("mention",a);const l=t.insertContent(e.createText(s,i),r),c=l.start.nodeBefore,d=l.end.nodeAfter,u=d&&d.is("$text")&&d.data.startsWith(" ");let h=!1;if(c&&d&&c.is("$text")&&d.is("$text")){const e=c.data.slice(-1),t=e in iM,o=t&&d.data.startsWith(iM[e]);h=t&&o}h||u||t.insertContent(e.createText(" ",n),r.start.getShiftedBy(s.length))}))}}class sM extends br{static get pluginName(){return"MentionEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model,o=t.document;t.schema.extend("$text",{allowAttributes:"mention"}),e.conversion.for("upcast").elementToAttribute({view:{name:"span",attributes:"data-mention",classes:"mention"},model:{key:"mention",value:e=>lM(e)}}),e.conversion.for("downcast").attributeToElement({model:"mention",view:dM}),e.conversion.for("downcast").add(cM),o.registerPostFixer((e=>function(e,t,o){const n=t.differ.getChanges();let i=!1;for(const t of n){if("attribute"==t.type)continue;const n=t.position;if("$text"==t.name){const t=n.textNode&&n.textNode.nextSibling;i=hM(n.textNode,e)||i,i=hM(t,e)||i,i=hM(n.nodeBefore,e)||i,i=hM(n.nodeAfter,e)||i}if("$text"!=t.name&&"insert"==t.type){const t=n.nodeAfter;for(const o of e.createRangeIn(t).getItems())i=hM(o,e)||i}if("insert"==t.type&&o.isInline(t.name)){const t=n.nodeAfter&&n.nodeAfter.nextSibling;i=hM(n.nodeBefore,e)||i,i=hM(t,e)||i}}return i}(e,o,t.schema))),o.registerPostFixer((e=>function(e,t){const o=t.differ.getChanges();let n=!1;for(const t of o)if("attribute"===t.type&&"mention"!=t.attributeKey){const o=t.range.start.nodeBefore,i=t.range.end.nodeAfter;for(const r of[o,i])uM(r)&&r.getAttribute(t.attributeKey)!=t.attributeNewValue&&(e.setAttribute(t.attributeKey,t.attributeNewValue,r),n=!0)}return n}(e,o))),o.registerPostFixer((e=>function(e,t){const o=t.selection,n=o.focus;if(o.isCollapsed&&o.hasAttribute("mention")&&function(e){const t=e.isAtStart;return e.nodeBefore&&e.nodeBefore.is("$text")||t}(n))return e.removeSelectionAttribute("mention"),!0;return!1}(e,o))),e.commands.add("mention",new rM(e))}}function aM(e,t){return Object.assign({uid:E()},e,t||{})}function lM(e,t){const o=e.getAttribute("data-mention"),n=e.getChild(0);if(!n)return;return aM({id:o,_text:n.data},t)}function cM(e){e.on("attribute:mention",((e,t,o)=>{const n=t.attributeNewValue;if(!t.item.is("$textProxy")||!n)return;const i=t.range.start;(i.textNode||i.nodeAfter).data!=n._text&&o.consumable.consume(t.item,e.name)}),{priority:"highest"})}function dM(e,{writer:t}){if(!e)return;const o={class:"mention","data-mention":e.id},n={id:e.uid,priority:20};return t.createAttributeElement("span",o,n)}function uM(e){if(!e||!e.is("$text")&&!e.is("$textProxy")||!e.hasAttribute("mention"))return!1;return e.data!=e.getAttribute("mention")._text}function hM(e,t){return!!uM(e)&&(t.removeAttribute("mention",e),!0)}var pM=i(7216),mM={attributes:{"data-cke":!0}};mM.setAttributes=Xr(),mM.insert=Yr().bind(null,"head"),mM.domAPI=Zr(),mM.insertStyleElement=ts();Gr()(pM.A,mM);pM.A&&pM.A.locals&&pM.A.locals;class gM extends Mg{constructor(e){super(e),this.extendTemplate({attributes:{class:["ck-mentions"],tabindex:"-1"}})}selectFirst(){this.select(0)}selectNext(){const e=this.selected,t=this.items.getIndex(e);this.select(t+1)}selectPrevious(){const e=this.selected,t=this.items.getIndex(e);this.select(t-1)}select(e){let t=0;e>0&&e{o?(this.domElement.classList.add("ck-on"),this.domElement.classList.remove("ck-off")):(this.domElement.classList.add("ck-off"),this.domElement.classList.remove("ck-on"))})),this.listenTo(this.domElement,"click",(()=>{this.fire("execute")}))}render(){super.render(),this.element=this.domElement}focus(){this.domElement.focus()}}class bM extends Tg{highlight(){this.children.first.isOn=!0}removeHighlight(){this.children.first.isOn=!1}}const kM=[Ai.arrowup,Ai.arrowdown,Ai.esc],wM=[Ai.enter,Ai.tab];class _M extends br{static get pluginName(){return"MentionUI"}static get isOfficialPlugin(){return!0}static get requires(){return[kk]}constructor(e){super(e),this._items=new tr,this._mentionsView=this._createMentionView(),this._mentionsConfigurations=new Map,this._requestFeedDebounced=bl(this._requestFeed,100),e.config.define("mention",{feeds:[]})}init(){const e=this.editor,t=e.config.get("mention.commitKeys")||wM,o=kM.concat(t);this._balloon=e.plugins.get(kk),e.editing.view.document.on("keydown",((e,n)=>{var i;i=n.keyCode,o.includes(i)&&this._isUIVisible&&(n.preventDefault(),e.stop(),n.keyCode==Ai.arrowdown&&this._mentionsView.selectNext(),n.keyCode==Ai.arrowup&&this._mentionsView.selectPrevious(),t.includes(n.keyCode)&&this._mentionsView.executeSelected(),n.keyCode==Ai.esc&&this._hideUIAndRemoveMarker())}),{priority:"highest"}),Op({emitter:this._mentionsView,activator:()=>this._isUIVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideUIAndRemoveMarker()});const n=e.config.get("mention.feeds");for(const e of n){const{feed:t,marker:o,dropdownLimit:n}=e;if(!xM(o))throw new S("mentionconfig-incorrect-marker",null,{marker:o});const i={marker:o,feedCallback:"function"==typeof t?t.bind(this.editor):vM(t),itemRenderer:e.itemRenderer,dropdownLimit:n};this._mentionsConfigurations.set(o,i)}this._setupTextWatcher(n),this.listenTo(e,"change:isReadOnly",(()=>{this._hideUIAndRemoveMarker()})),this.on("requestFeed:response",((e,t)=>this._handleFeedResponse(t))),this.on("requestFeed:error",(()=>this._hideUIAndRemoveMarker()))}destroy(){super.destroy(),this._mentionsView.destroy()}get _isUIVisible(){return this._balloon.visibleView===this._mentionsView}_createMentionView(){const e=this.editor.locale,t=new gM(e);return t.items.bindTo(this._items).using((o=>{const{item:n,marker:i}=o,{dropdownLimit:r}=this._mentionsConfigurations.get(i),s=r||this.editor.config.get("mention.dropdownLimit")||10;if(t.items.length>=s)return null;const a=new bM(e),l=this._renderItem(n,i);return l.delegate("execute").to(a),a.children.add(l),a.item=n,a.marker=i,a.on("execute",(()=>{t.fire("execute",{item:n,marker:i})})),a})),t.on("execute",((e,t)=>{const o=this.editor,n=o.model,i=t.item,r=t.marker,s=o.model.markers.get("mention"),a=n.createPositionAt(n.document.selection.focus),l=n.createPositionAt(s.getStart()),c=n.createRange(l,a);this._hideUIAndRemoveMarker(),o.execute("mention",{mention:i,text:i.text,marker:r,range:c}),o.editing.view.focus()})),t}_getItemRenderer(e){const{itemRenderer:t}=this._mentionsConfigurations.get(e);return t}_requestFeed(e,t){this._lastRequested=t;const{feedCallback:o}=this._mentionsConfigurations.get(e),n=o(t);n instanceof Promise?n.then((o=>{this._lastRequested==t?this.fire("requestFeed:response",{feed:o,marker:e,feedText:t}):this.fire("requestFeed:discarded",{feed:o,marker:e,feedText:t})})).catch((t=>{this.fire("requestFeed:error",{error:t}),T("mention-feed-callback-error",{marker:e})})):this.fire("requestFeed:response",{feed:n,marker:e,feedText:t})}_setupTextWatcher(e){const t=this.editor,o=e.map((e=>({...e,pattern:CM(e.marker,e.minimumCharacters||0)}))),n=new o_(t.model,function(e){const t=t=>{const o=AM(e,t);if(!o)return!1;let n=0;0!==o.position&&(n=o.position-1);const i=t.substring(n);return o.pattern.test(i)};return t}(o));n.on("matched",((e,n)=>{const i=AM(o,n.text),r=t.model.document.selection.focus,s=t.model.createPositionAt(r.parent,i.position);if(function(e){const t=e.textNode&&e.textNode.hasAttribute("mention"),o=e.nodeBefore;return t||o&&o.is("$text")&&o.hasAttribute("mention")}(r)||function(e){const t=e.nodeAfter;return t&&t.is("$text")&&t.hasAttribute("mention")}(s))return void this._hideUIAndRemoveMarker();const a=function(e,t){let o=0;0!==e.position&&(o=e.position-1);const n=CM(e.marker,0),i=t.substring(o);return i.match(n)[2]}(i,n.text),l=i.marker.length+a.length,c=r.getShiftedBy(-l),d=r.getShiftedBy(-a.length),u=t.model.createRange(c,d);if(EM(t)){const e=t.model.markers.get("mention");t.model.change((t=>{t.updateMarker(e,{range:u})}))}else t.model.change((e=>{e.addMarker("mention",{range:u,usingOperation:!1,affectsData:!1})}));this._requestFeedDebounced(i.marker,a)})),n.on("unmatched",(()=>{this._hideUIAndRemoveMarker()}));const i=t.commands.get("mention");return n.bind("isEnabled").to(i),n}_handleFeedResponse(e){const{feed:t,marker:o}=e;if(!EM(this.editor))return;this._items.clear();for(const e of t){const t="object"!=typeof e?{id:e,text:e}:e;this._items.add({item:t,marker:o})}const n=this.editor.model.markers.get("mention");this._items.length?this._showOrUpdateUI(n):this._hideUIAndRemoveMarker()}_showOrUpdateUI(e){this._isUIVisible?this._balloon.updatePosition(this._getBalloonPanelPositionData(e,this._mentionsView.position)):this._balloon.add({view:this._mentionsView,position:this._getBalloonPanelPositionData(e,this._mentionsView.position),singleViewMode:!0}),this._mentionsView.position=this._balloon.view.position,this._mentionsView.selectFirst()}_hideUIAndRemoveMarker(){this._balloon.hasView(this._mentionsView)&&this._balloon.remove(this._mentionsView),EM(this.editor)&&this.editor.model.change((e=>e.removeMarker("mention"))),this._mentionsView.position=void 0}_renderItem(e,t){const o=this.editor;let n,i=e.id;const r=this._getItemRenderer(t);if(r){const t=r(e);"string"!=typeof t?n=new fM(o.locale,t):i=t}if(!n){const e=new Kp(o.locale);e.label=i,e.withText=!0,n=e}return n}_getBalloonPanelPositionData(e,t){const o=this.editor,n=o.editing,i=n.view.domConverter,r=n.mapper;return{target:()=>{let t=e.getRange();"$graveyard"==t.start.root.rootName&&(t=o.model.document.selection.getFirstRange());const n=r.toViewRange(t);return Gn.getDomRangeRects(i.viewRangeToDom(n)).pop()},limiter:()=>{const e=this.editor.editing.view,t=e.document.selection.editableElement;return t?e.domConverter.mapViewToDom(t.root):null},positions:yM(t,o.locale.uiLanguageDirection)}}}function yM(e,t){const o={caret_se:e=>({top:e.bottom+3,left:e.right,name:"caret_se",config:{withArrow:!1}}),caret_ne:(e,t)=>({top:e.top-t.height-3,left:e.right,name:"caret_ne",config:{withArrow:!1}}),caret_sw:(e,t)=>({top:e.bottom+3,left:e.right-t.width,name:"caret_sw",config:{withArrow:!1}}),caret_nw:(e,t)=>({top:e.top-t.height-3,left:e.right-t.width,name:"caret_nw",config:{withArrow:!1}})};return Object.prototype.hasOwnProperty.call(o,e)?[o[e]]:"rtl"!==t?[o.caret_se,o.caret_sw,o.caret_ne,o.caret_nw]:[o.caret_sw,o.caret_se,o.caret_nw,o.caret_ne]}function AM(e,t){let o;for(const n of e){const e=t.lastIndexOf(n.marker);e>0&&!t.substring(e-1).match(n.pattern)||(!o||e>=o.position)&&(o={marker:n.marker,position:e,minimumCharacters:n.minimumCharacters,pattern:n.pattern})}return o}function CM(e,t){const o=0==t?"*":`{${t},}`,n=c.features.isRegExpUnicodePropertySupported?"\\p{Ps}\\p{Pi}\"'":"\\(\\[{\"'";e=e.replace(/[.*+?^${}()\-|[\]\\]/g,"\\$&");return new RegExp(`(?:^|[ ${n}])(${e})([^#@]${o})$`,"u")}function vM(e){return t=>e.filter((e=>("string"==typeof e?e:String(e.id)).toLowerCase().includes(t.toLowerCase())))}function xM(e){return!!e}function EM(e){return e.model.markers.has("mention")}var DM=i(1478),BM={attributes:{"data-cke":!0}};BM.setAttributes=Xr(),BM.insert=Yr().bind(null,"head"),BM.domAPI=Zr(),BM.insertStyleElement=ts();Gr()(DM.A,BM);DM.A&&DM.A.locals&&DM.A.locals;class SM extends wr{refresh(){const e=this.editor.model,t=e.schema,o=e.document.selection;this.isEnabled=function(e,t,o){const n=function(e,t){const o=xw(e,t),n=o.start.parent;if(n.isEmpty&&!n.is("element","$root"))return n.parent;return n}(e,o);return t.checkChild(n,"pageBreak")}(o,t,e)}execute(){const e=this.editor.model;e.change((t=>{const o=t.createElement("pageBreak");e.insertObject(o,null,null,{setSelection:"after"})}))}}var TM=i(5079),IM={attributes:{"data-cke":!0}};IM.setAttributes=Xr(),IM.insert=Yr().bind(null,"head"),IM.domAPI=Zr(),IM.insertStyleElement=ts();Gr()(TM.A,IM);TM.A&&TM.A.locals&&TM.A.locals;class PM extends br{static get pluginName(){return"PageBreakEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model.schema,o=e.t,n=e.conversion;t.register("pageBreak",{inheritAllFrom:"$blockObject"}),n.for("dataDowncast").elementToStructure({model:"pageBreak",view:(e,{writer:t})=>t.createContainerElement("div",{class:"page-break",style:"page-break-after: always"},t.createContainerElement("span",{style:"display: none"}))}),n.for("editingDowncast").elementToStructure({model:"pageBreak",view:(e,{writer:t})=>{const n=o("Page break"),i=t.createContainerElement("div"),r=t.createRawElement("span",{class:"page-break__label"},(function(e){e.innerText=o("Page break")}));return t.addClass("page-break",i),t.insert(t.createPositionAt(i,0),r),function(e,t,o){return t.setCustomProperty("pageBreak",!0,e),_w(e,t,{label:o})}(i,t,n)}}),n.for("upcast").elementToElement({view:e=>{const t="always"==e.getStyle("page-break-before"),o="always"==e.getStyle("page-break-after");if(!t&&!o)return null;if(1==e.childCount){const t=e.getChild(0);if(!t.is("element","span")||"none"!=t.getStyle("display"))return null}else if(e.childCount>1)return null;return{name:!0}},model:"pageBreak",converterPriority:"high"}),e.commands.add("pageBreak",new SM(e))}}class FM extends br{static get pluginName(){return"PageBreakUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("pageBreak",(()=>{const e=this._createButton(Kp);return e.set({tooltip:!0}),e})),e.ui.componentFactory.add("menuBar:pageBreak",(()=>this._createButton(Em)))}_createButton(e){const t=this.editor,o=t.locale,n=t.commands.get("pageBreak"),i=new e(t.locale),r=o.t;return i.set({label:r("Page break"),icon:''}),i.bind("isEnabled").to(n,"isEnabled"),this.listenTo(i,"execute",(()=>{t.execute("pageBreak"),t.editing.view.focus()})),i}}class RM extends br{static get pluginName(){return"Autosave"}static get isOfficialPlugin(){return!0}static get requires(){return[dp]}constructor(e){super(e),this._action=null;const t=e.config.get("autosave")||{},o=t.waitingTime||1e3;this.set("state","synchronized"),this._debouncedSave=bl(this._save.bind(this),o),this._lastDocumentVersion=e.model.document.version,this._savePromise=null,this._domEmitter=new(On()),this._config=t,this._pendingActions=e.plugins.get(dp),this._makeImmediateSave=!1}init(){const e=this.editor,t=e.model.document;this.listenTo(e,"ready",(()=>{this.listenTo(t,"change:data",((e,t)=>{this._saveCallbacks.length&&t.isLocal&&("synchronized"===this.state&&(this.state="waiting",this._setPendingAction()),"waiting"===this.state&&this._debouncedSave())}))})),this.listenTo(e,"destroy",(()=>this._flush()),{priority:"highest"}),this._domEmitter.listenTo(window,"beforeunload",((e,t)=>{this._pendingActions.hasAny&&(t.returnValue=this._pendingActions.first.message)}))}destroy(){this._domEmitter.stopListening(),super.destroy()}save(){return this._debouncedSave.cancel(),this._save()}_flush(){this._debouncedSave.flush()}_save(){return this._savePromise?(this._makeImmediateSave=this.editor.model.document.version>this._lastDocumentVersion,this._savePromise):(this._setPendingAction(),this.state="saving",this._lastDocumentVersion=this.editor.model.document.version,this._savePromise=Promise.resolve().then((()=>Promise.all(this._saveCallbacks.map((e=>e(this.editor)))))).finally((()=>{this._savePromise=null})).then((()=>{if(this._makeImmediateSave)return this._makeImmediateSave=!1,this._save();this.editor.model.document.version>this._lastDocumentVersion?(this.state="waiting",this._debouncedSave()):(this.state="synchronized",this._pendingActions.remove(this._action),this._action=null)})).catch((e=>{throw this.state="error",this.state="saving",this._debouncedSave(),e})),this._savePromise)}_setPendingAction(){const e=this.editor.t;this._action||(this._action=this._pendingActions.add(e("Saving changes")))}get _saveCallbacks(){const e=[];return this.adapter&&this.adapter.save&&e.push(this.adapter.save),this._config.save&&e.push(this._config.save),e}}var MM=i(2992);function zM(e){return e.trim().split(/\s+/).length}function OM(e){const t=e.length;let o=5381;for(let n=0;n>>0}function NM(e){const t=localStorage.getItem(e);if(!t)return null;try{return JSON.parse(MM.decompress(t))}catch(e){return console.error("Failed to load CKEditor revisions from localStorage: "+e.toString()),null}}class VM extends br{init(){const e=this.editor,t=Mw(e);e.ui.componentFactory.add("opContentRevisions",(o=>{const n=kf(o),i=new tr;return yf(n,i,{role:"menu",ariaLabel:t.t("js.editor.revisions")}),n.buttonView.set({label:t.t("js.editor.revisions"),icon:'\n\n\n',tooltip:!0}),this.listenTo(n.buttonView,"execute",(async()=>{i.clear(),function(e,t){const o=e.config.get(HM),n=NM(o),i=Mw(e),r=Fw(e,"timezone");if(!n?.items||n.items.count<=0){const e={type:"button",model:{label:i.t("js.editor.no_revisions"),withText:!0}};return void t.add(e)}const s=e.getData(),a=OM(s);for(let e=n.items.length;e>0;){e--;const o=n.items[e],s=r.formattedRelativeDateTime(o.timestamp),l=i.t("js.units.word",{count:zM(o.content)}),c=`${o.hash===a?`${i.t("js.label_current")} - `:""}${s} (${l})`,d={type:"button",model:{timestamp:o.timestamp,label:c,withText:!0}};t.add(d)}}(e,i)})),n.on("execute",(t=>{const{timestamp:o}=t.source;o&&e.execute("opContentRevisionApply",o)})),n}))}}class LM extends wr{async execute(e){const t=this.editor,o=t.config.get(HM),n=await NM(o);if(!n)return void console.error(`Trying to load revision ${e} but no record present.`);const i=n.items.find((t=>t.timestamp===e));i&&(t.setData(i.content),setTimeout((()=>{t.editing.view.focus()})))}}const HM="opContentRevisionKey",jM="op_ckeditor_rev";const qM=[Bw,class extends br{static get requires(){return[zw,M_,Y_]}static get pluginName(){return"OPMacroEmbeddedTable"}static get buttonName(){return zw.buttonName}},class extends br{static get requires(){return[ey,M_,ty]}static get pluginName(){return"OPMacroWpButton"}static get buttonName(){return ey.buttonName}},class extends br{static get requires(){return[GC,M_,KC]}static get pluginName(){return"OPChildPages"}static get buttonName(){return GC.buttonName}}],$M=[class extends br{static get requires(){return[ny,lC]}static get pluginName(){return"OpUploadPlugin"}init(){this.editor.plugins.get("FileRepository").createUploadAdapter=e=>{const t=Iw(this.editor);return new ry(e,t,this.editor)}}},class extends br{static get pluginName(){return"OPAttachmentListener"}init(){this.editor.model.on("op:attachment-removed",((e,t)=>{this.removeDeletedImage(t)}))}removeDeletedImage(e){let t=this.editor.model.document.getRoot();for(const o of Array.from(t.getChildren()))if("image"===o.name&&e.indexOf(o.getAttribute("src"))>-1){const e=new bc(o,"on");this.editor.model.deleteContent(e)}}}],UM=[class extends br{static get requires(){return[Mm,Uy,w_,ev,C_,e_,Xy]}static get pluginName(){return"Essentials"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[ny]}static get pluginName(){return"CKFinderUploadAdapter"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.config.get("ckfinder.uploadUrl");e&&(this.editor.plugins.get(ny).createUploadAdapter=t=>new iv(t,e,this.editor.t))}},class extends br{static get requires(){return[Xw]}static get pluginName(){return"Autoformat"}static get isOfficialPlugin(){return!0}afterInit(){const e=this.editor,t=this.editor.t;this._addListAutoformats(),this._addBasicStylesAutoformats(),this._addHeadingAutoformats(),this._addBlockQuoteAutoformats(),this._addCodeBlockAutoformats(),this._addHorizontalLineAutoformats(),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Revert autoformatting action"),keystroke:"Backspace"}]})}_addListAutoformats(){const e=this.editor.commands;e.get("bulletedList")&&rv(this.editor,this,/^[*-]\s$/,"bulletedList"),e.get("numberedList")&&rv(this.editor,this,/^1[.|)]\s$/,"numberedList"),e.get("todoList")&&rv(this.editor,this,/^\[\s?\]\s$/,"todoList"),e.get("checkTodoList")&&rv(this.editor,this,/^\[\s?x\s?\]\s$/,(()=>{this.editor.execute("todoList"),this.editor.execute("checkTodoList")}))}_addBasicStylesAutoformats(){const e=this.editor.commands;if(e.get("bold")){const e=lv(this.editor,"bold");sv(this.editor,this,/(?:^|\s)(\*\*)([^*]+)(\*\*)$/g,e),sv(this.editor,this,/(?:^|\s)(__)([^_]+)(__)$/g,e)}if(e.get("italic")){const e=lv(this.editor,"italic");sv(this.editor,this,/(?:^|\s)(\*)([^*_]+)(\*)$/g,e),sv(this.editor,this,/(?:^|\s)(_)([^_]+)(_)$/g,e)}if(e.get("code")){const e=lv(this.editor,"code");sv(this.editor,this,/(`)([^`]+)(`)$/g,e)}if(e.get("strikethrough")){const e=lv(this.editor,"strikethrough");sv(this.editor,this,/(~~)([^~]+)(~~)$/g,e)}}_addHeadingAutoformats(){const e=this.editor.commands.get("heading");e&&e.modelElements.filter((e=>e.match(/^heading[1-6]$/))).forEach((t=>{const o=t[7],n=new RegExp(`^(#{${o}})\\s$`);rv(this.editor,this,n,(()=>{if(!e.isEnabled||e.value===t)return!1;this.editor.execute("heading",{value:t})}))}))}_addBlockQuoteAutoformats(){this.editor.commands.get("blockQuote")&&rv(this.editor,this,/^>\s$/,"blockQuote")}_addCodeBlockAutoformats(){const e=this.editor,t=e.model.document.selection;e.commands.get("codeBlock")&&rv(e,this,/^```$/,(()=>{if(t.getFirstPosition().parent.is("element","listItem"))return!1;this.editor.execute("codeBlock",{usePreviousLanguageChoice:!0})}))}_addHorizontalLineAutoformats(){this.editor.commands.get("horizontalLine")&&rv(this.editor,this,/^---$/,"horizontalLine")}},RM,class extends br{static get requires(){return[uv,mv]}static get pluginName(){return"Bold"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[fv,_v]}static get pluginName(){return"Code"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[Av,vv]}static get pluginName(){return"Italic"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[Ev,Bv]}static get pluginName(){return"Strikethrough"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[Fv,zv]}static get pluginName(){return"BlockQuote"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[Uv,Kv]}static get pluginName(){return"Heading"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[SA,M_,bA,FA]}static get pluginName(){return"ImageBlock"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[zA,M_,bA,FA]}static get pluginName(){return"ImageInline"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[VA,LA]}static get pluginName(){return"ImageCaption"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[OC,LC]}static get pluginName(){return"ImageStyle"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[pC,_C,DC,gC]}static get pluginName(){return"ImageResize"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[O_,sA]}static get pluginName(){return"ImageToolbar"}static get isOfficialPlugin(){return!0}afterInit(){const e=this.editor,t=e.t,o=e.plugins.get(O_),n=e.plugins.get("ImageUtils");o.register("image",{ariaLabel:t("Image toolbar"),items:$C(e.config.get("image.toolbar")||[]),getRelatedElement:e=>n.getClosestSelectedImageWidget(e)})}},class extends br{static get pluginName(){return"OpImageAttachmentLookup"}init(){const e=this.editor,t=e.conversion,o=Iw(e);t.for("editingDowncast").add(function(e){return e=>{e.on("attribute:src:imageBlock",t,{priority:"highest"}),e.on("attribute:src:imageInline",t,{priority:"highest"})};function t(t,o,n){let i=o.attributeNewValue;if(!i||!e.lookupDownloadLocationByName)return;const r=e.lookupDownloadLocationByName(i);o.attributeNewValue=r||i}}(o)),t.for("dataDowncast").add(function(e){return e=>{e.on("attribute:src:imageBlock",t,{priority:"highest"}),e.on("attribute:src:imageInline",t,{priority:"highest"})};function t(t,o,n){let i=o.attributeNewValue;if(!i||!e.lookupDownloadLocationByName)return;const r=e.lookupDownloadLocationByName(i);o.attributeNewValue=r||i;const s=n.writer,a=n.mapper.toViewElement(o.item);let l;l="imageInline"===o.item.name?a:a.getChild(0),r&&s.setAttribute("data-original-src",i,l)}}(o));const n=e.plugins.get("ImageUtils");n.decorate("setImageNaturalSizeAttributes"),n.on("setImageNaturalSizeAttributes",((e,[t])=>{console.log("model image element:",{element:t}),e.stop()}),{priority:"highest"})}},class extends br{static get requires(){return[Mx,qx,Wx]}static get pluginName(){return"Link"}static get isOfficialPlugin(){return!0}},WE,hD,class extends br{static get requires(){return[PM,FM,M_]}static get pluginName(){return"PageBreak"}static get isOfficialPlugin(){return!0}},Hv,e_,class extends br{toMentionAttribute(e,t){return lM(e,t)}static get pluginName(){return"Mention"}static get isOfficialPlugin(){return!0}static get requires(){return[sM,_M]}},function(e){const t=Pw(e),o=e.editing.view,n=o.document;o.addObserver(Xu),e.listenTo(n,"click",((e,t)=>{if("A"===t.domTarget.nodeName&&t.domTarget.classList.contains("mention")){const e=document.createElement("a");e.target="_blank",e.href=t.domTarget.attributes.href.value,e.click()}})),e.conversion.for("upcast").elementToAttribute({view:{name:"mention",key:"data-mention",classes:"mention"},model:{key:"mention",value:o=>{const n=o.getAttribute("data-id"),i=o.getAttribute("data-type"),r=o.getAttribute("data-text"),s=function(e,o){const n=t.services.apiV3Service[`${o}s`].segment,i=window.OpenProject.urlRoot;return`${i}/${n}/${e}`}(n,i);return e.plugins.get("Mention").toMentionAttribute(o,{idNumber:n,link:s,text:r,type:i})}},converterPriority:"high"}),e.conversion.for("upcast").elementToAttribute({view:{name:"span",key:"data-mention",classes:"mention"},model:{key:"mention",value:e=>{const t=[...e.getChildren()][0],o=t&&t.data;if(o){const e=`[Invalid mention: ${o}]`;t._data=e}}},converterPriority:"high"}),e.conversion.for("editingDowncast").attributeToElement({model:"mention",converterPriority:"high",view:(e,{writer:t})=>{if(!e)return;if("emoji"===e.type)return t.createAttributeElement("span");return t.createAttributeElement("a",{class:"mention",href:e.link,"data-mention":e.text,title:e.text})}}),e.conversion.for("dataDowncast").attributeToElement({model:"mention",converterPriority:"high",view:(e,{writer:t})=>{if(!e)return;if("emoji"===e.type)return t.createAttributeElement("span");return t.createAttributeElement("mention",{class:"mention","data-id":e.idNumber,"data-type":e.type,"data-text":e.text})}})},class extends br{static get pluginName(){return"PasteFromOffice"}static get isOfficialPlugin(){return!0}static get requires(){return[By]}init(){const e=this.editor,t=e.plugins.get("ClipboardPipeline"),o=e.editing.view.document,n=[],i=this.editor.plugins.has("MultiLevelList");n.push(new GT(o,i)),n.push(new YT(o)),n.push(new XT(o)),t.on("inputTransformation",((t,i)=>{if(i._isTransformedWithPasteFromOffice)return;if(e.model.document.selection.getFirstPosition().parent.is("element","codeBlock"))return;const r=i.dataTransfer.getData("text/html"),s=n.find((e=>e.isActive(r)));s&&(i._parsedData||(i._parsedData=tI(r,o.stylesProcessor)),s.execute(i),i._isTransformedWithPasteFromOffice=!0)}),{priority:"high"})}},class extends br{static get pluginName(){return"OPHelpLinkPlugin"}init(){const e=this.editor,t=e.config.get("openProject.helpURL");e.ui.componentFactory.add("openProjectShowFormattingHelp",(e=>{const o=new Kp(e);return o.set({label:window.I18n.t("js.inplace.link_formatting_help"),icon:'',tooltip:!0}),o.on("execute",(()=>{window.open(t,"_blank")})),o}))}},class extends br{static get pluginName(){return"OPPreview"}init(){const e=this.editor;let t=!1,o=null;e.ui.componentFactory.add("preview",(n=>{const i=new Kp(n);i.set({label:this.label,icon:'\n',tooltip:!0});let r=function(t){const n=e.ui.getEditableElement(),r=n?.parentElement;if(!r?.parentElement)return void console.error("Cannot show preview: invalid editor structure");const s=document.createElement("div");s.className="ck-editor__preview op-uc-container";Array.from(r.parentElement.children).filter((e=>e!==r&&e.classList.contains("ck-editor__preview"))).forEach((e=>e.remove()));const a=Fw(e,"ckEditorPreview");o=a.render(s,t),r.style.display="none",r.parentElement.insertBefore(s,r.nextSibling),CD(e,i)},s=function(){let o=function(e){return _.get(e.config,"_config.openProject.context.previewContext")}(e);(async function(e,t){return new BD("post",e,t).perform()})(Rw(e).api.v3.previewMarkup(o),{contentType:"text/plain; charset=UTF-8",responseKind:"html",body:e.getData()}).then((e=>e.html)).then(r).catch((o=>{console.error("Error fetching preview:",o),t=!1,vD(e)}))};return i.on("execute",(()=>{t?(t=!1,function(){const t=e.ui.getEditableElement(),n=t?.parentElement;if(!n?.parentElement)return void console.error("Cannot disable preview: invalid editor structure");o&&o(),Array.from(n.parentElement.children).filter((e=>e!==n&&e.classList.contains("ck-editor__preview"))).forEach((e=>e.remove())),n.style.display="",vD(e)}()):(t=!0,s())})),i}))}get label(){return window.I18n.t("js.editor.preview")}},class extends br{static get pluginName(){return"OPSourceCode"}init(){const e=this.editor;let t=!1,o={source:window.I18n.t("js.editor.mode.manual"),wysiwyg:window.I18n.t("js.editor.mode.wysiwyg")};e.ui.componentFactory.add("opShowSource",(n=>{const i=new Kp(n);i.set({label:o.source,class:"",icon:nM,tooltip:!0});return i.on("execute",(()=>{t?(t=!1,function(){const t=e.ui.getEditableElement(),n=t?.parentElement;if(!n?.parentElement)return void console.error("Cannot hide source: invalid editor structure");e.fire("op:source-code-disabled"),Array.from(n.parentElement.children).filter((e=>e!==n&&e.classList.contains("ck-editor__source"))).forEach((e=>e.remove())),n.style.display="",vD(e),i.set({label:o.source,class:"",icon:nM,tooltip:!0})}()):(t=!0,function(){const t=e.ui.getEditableElement(),n=t?.parentElement;if(!n?.parentElement)return void console.error("Cannot show source: invalid editor structure");const r=document.createElement("div");r.className="ck-editor__source",Array.from(n.parentElement.children).filter((e=>e!==n&&e.classList.contains("ck-editor__source"))).forEach((e=>e.remove())),n.style.display="none",n.parentElement.insertBefore(r,n.nextSibling),CD(e,i),e.fire("op:source-code-enabled"),i.set({label:o.wysiwyg,class:"-source-enabled",icon:'\n\n \n \n \n image/svg+xml\n \n \n \n \n \n \n \n \n\n',tooltip:!0})}())})),i}))}},class extends br{static get requires(){return[RM,VM]}static get pluginName(){return"OpContentRevisions"}constructor(e){super(e);const t=this.getStorageKey(e);e.config.define(HM,t)}init(){const e=this.editor;e.commands.add("opContentRevisionApply",new LM(e)),e.once("ready",(()=>{const t=Date.now();e.plugins.get("Autosave")._domEmitter.stopListening(window,"beforeunload"),Object.keys(localStorage).forEach((e=>{if(e.startsWith(jM)){const o=NM(e);o?.updatedAt&&t-o.updatedAt>=288e5&&localStorage.removeItem(e)}}))}))}getStorageKey(e){const t=e.config.get("storageKey");return t||this.createLocalStorageKey(e)}createLocalStorageKey(e){const t=Iw(e),o=function(e){return _.get(e.config,"_config.openProject.context.field")}(e);let n="";return n=t?.href?t.href:location.pathname,o&&(n+=`_${o}`),`${jM}_${n}`}},class extends br{static get pluginName(){return"CodeBlock"}static get requires(){return[_D,yD]}},function(e){e.data.processor=new oM(e.editing.view.document)},class extends br{static get requires(){return[HB,WB,JB,nS,tS,YB,M_]}static get pluginName(){return"Table"}static get isOfficialPlugin(){return!0}},class extends br{static get requires(){return[O_]}static get pluginName(){return"TableToolbar"}static get isOfficialPlugin(){return!0}afterInit(){const e=this.editor,t=e.t,o=e.plugins.get(O_),n=e.config.get("table.contentToolbar"),i=e.config.get("table.tableToolbar");n&&o.register("tableContent",{ariaLabel:t("Table toolbar"),items:n,getRelatedElement:cS}),i&&o.register("table",{ariaLabel:t("Table toolbar"),items:i,getRelatedElement:lS})}},class extends br{static get pluginName(){return"TableProperties"}static get isOfficialPlugin(){return!0}static get requires(){return[_T,DT]}},class extends br{static get pluginName(){return"TableCellProperties"}static get isOfficialPlugin(){return!0}static get requires(){return[cT,ZS]}},class extends br{init(){const e=this.editor,t=(e.config.get("removePlugins")||[]).map((e=>e.pluginName)),o=window.I18n.t("js.editor.macro.dropdown.chose_macro");!0!==e.config.get("openProject.disableAllMacros")&&e.ui.componentFactory.add("macroList",(n=>{const i=[];for(const o of qM){if(-1!==t.indexOf(o.pluginName))continue;const n=e.ui.componentFactory.create(o.buttonName);i.push(n)}const r=kf(n);return wf(r,i,{isVertical:!0,class:"op-macro-list-button"}),r.buttonView.set({isOn:!1,withText:!0,tooltip:o,label:window.I18n.t("js.editor.macro.dropdown.macros")}),r}))}},class extends br{get config(){const e="op-uc-";return{preFix:e,editorClasses:[`${e}container`,`${e}container_editing`],elementsWithCustomClassesMap:{paragraph:`${e}p`,heading1:`${e}h1`,heading2:`${e}h2`,heading3:`${e}h3`,heading4:`${e}h4`,heading5:`${e}h5`,heading6:`${e}h6`,blockQuote:`${e}blockquote`,figure:`${e}figure`,table:`${e}table`,thead:`${e}table--head`,tr:`${e}table--row`,td:`${e}table--cell`,th:[`${e}table--cell`,`${e}table--cell_head`],tableCell:`${e}table--cell`,tableRow:`${e}table--row`,ol:`${e}list`,ul:`${e}list`,list:`${e}list`,todo:`${e}list ${e}list_task-list`,listItem:`${e}list--item`,li:`${e}list--item`,imageInline:`${e}image ${e}image_inline`,imageBlock:`${e}image`,img:`${e}image`,codeblock:`${e}code-block`,caption:`${e}figure--description`,"op-macro-embedded-table":[`${e}placeholder`,`${e}embedded-table`],"op-macro-wp-button":[`${e}placeholder`,`${e}wp-button`],"op-macro-child-pages":[`${e}placeholder`,`${e}child-pages`],"op-macro-toc":[`${e}placeholder`,`${e}toc`],content:`${e}figure--content`},attributesWithCustomClassesMap:{code:`${e}code`,linkHref:`${e}link`,alignment:`${e}figure_align-`,tableAlignment:`${e}figure_align-`,todo:`${e}list_task-list`,numbered:`${e}list`,bulleted:`${e}list`,listType:null,headingColumns:null,width:null,uploadStatus:null},alignmentValuesMap:{left:"start",right:"end",center:"center",default:"center"}}}init(){this._addCustomCSSClassesToTheEditorContainer(this.editor),this._addCustomCSSClassesToElements(this.config),this._addCustomCSSClassesToAttributes(this.config)}_addCustomCSSClassesToTheEditorContainer(e){e.sourceElement.classList.add(...this.config.editorClasses)}_addCustomCSSClassesToElements(e){this.editor.model.schema.extend("table",{allowAttributes:["figureClasses"]}),this.editor.conversion.for("upcast").add((t=>t.on("element:table",this._manageTableUpcast(e))),{priority:"high"}),this.editor.conversion.for("downcast").add((t=>t.on("insert",this._manageElementsInsertion(e),{priority:"low"})))}_addCustomCSSClassesToAttributes(e){this.editor.conversion.for("downcast").add((t=>t.on("attribute",this._manageAttributesInsertion(e),{priority:"low"})))}_manageTableUpcast(e){return(t,o,n)=>{const i=n.writer,r=o.viewItem,s=o.modelRange,a=s&&s.start.nodeAfter;if(!a)return;let l=a.getAttribute("figureClasses")||[],c=r.parent.getClassNames&&r.parent.getClassNames();const d=c?[...c].filter((e=>!!e)):[];l=[...l,...d];const u=d.filter((t=>t.startsWith(e.attributesWithCustomClassesMap.alignment)))[0],h=u&&u.replace(e.attributesWithCustomClassesMap.alignment,"")||e.alignmentValuesMap.default,p=Object.keys(e.alignmentValuesMap).find((t=>e.alignmentValuesMap[t]===h));if(!u){const t=`${e.attributesWithCustomClassesMap.alignment}${h}`;l=[...l,t]}i.setAttribute("figureClasses",l,a),"center"===p?i.setAttribute("alignment",null,a):i.setAttribute("alignment",p,a)}}_manageElementsInsertion(e){return(t,o,n)=>{const i=Object.keys(e.elementsWithCustomClassesMap),r=n.writer,s=o.item.name,a=o.item,l=n.mapper.toViewElement(a);let c=[l];const d=["imageBlock","table","tableCell","tableRow","listItem"].includes(s);if(i.includes(s)&&l){if(d)if("listItem"===s)c=this._manageListItems(r,a,l,c,e);else{const t=l,o=Array.from(r.createRangeIn(l).getItems());if("imageBlock"===s){const n=o.find((e=>e.is("element","img")));this._wrapInFigureContentContainer(n,t,e,r),c=[...c,n]}else if("table"===s||"tableRow"===s){const n=o.filter((e=>i.includes(e.name)));if(c=[...c,...n],"table"===s){if(!a.getAttribute("tableAlignment")){const o=`${e.attributesWithCustomClassesMap.alignment}${e.alignmentValuesMap.default}`;r.addClass(o,t)}}}}c.forEach((t=>{const o=d?t.name:s,n=e.elementsWithCustomClassesMap[o];r.addClass(n,t)}))}}}_manageAttributesInsertion(e){return(t,o,n)=>{const i=Object.keys(e.attributesWithCustomClassesMap),r=o.attributeKey,s=n.writer,a=o.item,l=n.mapper.toViewElement(a);if(i.includes(r))if("linkHref"===r||"code"===r){const t="linkHref"===r?"a":r,i="linkHref"===r?5:10,l=s.document.selection,c=s.createAttributeElement(t,{class:e.attributesWithCustomClassesMap[r]},{priority:i});a.is("selection")?s.wrap(l.getFirstRange(),c):s.wrap(n.mapper.toViewRange(o.range),c)}else if("tableAlignment"===r){const t=l,n=e.alignmentValuesMap[o.attributeNewValue||e.alignmentValuesMap.default];Object.values(e.alignmentValuesMap).map((t=>`${e.attributesWithCustomClassesMap[r]}${t}`)).filter((e=>t.hasClass(e))).forEach((e=>s.removeClass(e,t))),t.hasStyle("float")&&s.removeStyle("float",t),s.addClass(`${e.attributesWithCustomClassesMap[r]}${n}`,t)}else if("listType"===r){this._manageListItems(s,a,l,[l],e).forEach((t=>{const o=t.name,n=e.elementsWithCustomClassesMap[o];s.addClass(n,t)}))}else if("headingColumns"===r){const t=o.attributeNewValue,n=Array.from(s.createRangeIn(l).getItems()).filter((t=>Object.keys(e.elementsWithCustomClassesMap).includes(t.name)));t?n.forEach((t=>{const o=t.name,n=e.elementsWithCustomClassesMap[o];s.addClass(n,t)})):n.filter((t=>t.hasClass(e.elementsWithCustomClassesMap.th[1]))).forEach((t=>{const o=t.nextSibling;o&&"th"!==o.name&&s.removeClass(e.elementsWithCustomClassesMap.th[1],t)}))}else if("width"===r)l.hasClass("image_resized")&&s.removeClass("image_resized",l);else if("uploadStatus"===r&&"complete"===o.attributeNewValue){let e=Array.from(s.createRangeIn(l).getItems()).find((e=>e.hasClass("ck-upload-placeholder-loader")));e&&s.remove(s.createRangeOn(e))}}}_manageListItems(e,t,o,n,i){const r=o.findAncestor("li"),s=o.findAncestor(/^(ul|ol)$/);if(!s)return n;const a=t.getAttribute("listType"),l=i.attributesWithCustomClassesMap[a];if("todo"===a)e.addClass(l,s);else{const t=i.attributesWithCustomClassesMap.todo;s.hasClass(t)&&e.removeClass(t,s)}return[...n,s,r]}_wrapInFigureContentContainer(e,t,o,n){const i=n.createContainerElement("div",{class:o.elementsWithCustomClassesMap.content});n.insert(n.createPositionAt(i,0),e),n.insert(n.createPositionAt(t,0),i)}}].concat(qM,$M);function WM(e){return function(t){const o=window.OpenProject.urlRoot+"/work_packages/auto_complete.json";let n=window.OpenProject.urlRoot+"/work_packages/";return this.config.get("disabledMentions").includes("work_package")?[]:new Promise(((i,r)=>{SD(o,{responseKind:"json",query:{q:t,scope:"all"}}).then((e=>e.json)).then((t=>{i(t.map((t=>{const o=`${e}${t.id}`;return{id:o,idNumber:t.id,type:"work_package",text:o,name:t.to_s,link:n+t.id}})))})).catch((e=>{console.error("Error fetching work package mentions:",e),r(e)}))}))}}function GM(e){const t=document.createElement("span");return"user"!==e.type&&"work_package"!==e.type||(t.setAttribute("data-hover-card-trigger-target","trigger"),t.setAttribute("data-hover-card-url",`${e.link}/hover_card`)),t.classList.add("mention-list-item"),t.textContent=e.name,t}const KM=JSON.parse('[{"id":":grinning_face:","symbol":"😀","group":"people","keywords":["face","grin","grinning face"]},{"id":":beaming_face_with_smiling_eyes:","symbol":"😁","group":"people","keywords":["beaming face with smiling eyes","eye","face","grin","smile"]},{"id":":face_with_tears_of_joy:","symbol":"😂","group":"people","keywords":["face","face with tears of joy","joy","laugh","tear"]},{"id":":rolling_on_the_floor_laughing:","symbol":"🤣","group":"people","keywords":["face","floor","laugh","rolling","rolling on the floor laughing"]},{"id":":grinning_face_with_big_eyes:","symbol":"😃","group":"people","keywords":["face","grinning face with big eyes","mouth","open","smile"]},{"id":":grinning_face_with_smiling_eyes:","symbol":"😄","group":"people","keywords":["eye","face","grinning face with smiling eyes","mouth","open","smile"]},{"id":":grinning_face_with_sweat:","symbol":"😅","group":"people","keywords":["cold","face","grinning face with sweat","open","smile","sweat"]},{"id":":grinning_squinting_face:","symbol":"😆","group":"people","keywords":["face","grinning squinting face","laugh","mouth","satisfied","smile"]},{"id":":winking_face:","symbol":"😉","group":"people","keywords":["face","wink","winking face"]},{"id":":smiling_face_with_smiling_eyes:","symbol":"😊","group":"people","keywords":["blush","eye","face","smile","smiling face with smiling eyes"]},{"id":":face_savoring_food:","symbol":"😋","group":"people","keywords":["delicious","face","face savoring food","savouring","smile","yum"]},{"id":":smiling_face_with_sunglasses:","symbol":"😎","group":"people","keywords":["bright","cool","face","smiling face with sunglasses","sun","sunglasses"]},{"id":":smiling_face_with_heart-eyes:","symbol":"😍","group":"people","keywords":["eye","face","love","smile","smiling face with heart-eyes"]},{"id":":face_blowing_a_kiss:","symbol":"😘","group":"people","keywords":["face","face blowing a kiss","kiss"]},{"id":":kissing_face:","symbol":"😗","group":"people","keywords":["face","kiss","kissing face"]},{"id":":kissing_face_with_smiling_eyes:","symbol":"😙","group":"people","keywords":["eye","face","kiss","kissing face with smiling eyes","smile"]},{"id":":kissing_face_with_closed_eyes:","symbol":"😚","group":"people","keywords":["closed","eye","face","kiss","kissing face with closed eyes"]},{"id":":smiling_face:","symbol":"☺","group":"people","keywords":["face","outlined","relaxed","smile","smiling face"]},{"id":":slightly_smiling_face:","symbol":"🙂","group":"people","keywords":["face","slightly smiling face","smile"]},{"id":":hugging_face:","symbol":"🤗","group":"people","keywords":["face","hug","hugging"]},{"id":":star-struck:","symbol":"🤩","group":"people","keywords":["eyes","face","grinning","star","star-struck",""]},{"id":":thinking_face:","symbol":"🤔","group":"people","keywords":["face","thinking"]},{"id":":face_with_raised_eyebrow:","symbol":"🤨","group":"people","keywords":["distrust","face with raised eyebrow","skeptic",""]},{"id":":neutral_face:","symbol":"😐","group":"people","keywords":["deadpan","face","neutral"]},{"id":":expressionless_face:","symbol":"😑","group":"people","keywords":["expressionless","face","inexpressive","unexpressive"]},{"id":":face_without_mouth:","symbol":"😶","group":"people","keywords":["face","face without mouth","mouth","quiet","silent"]},{"id":":face_with_rolling_eyes:","symbol":"🙄","group":"people","keywords":["eyes","face","face with rolling eyes","rolling"]},{"id":":smirking_face:","symbol":"😏","group":"people","keywords":["face","smirk","smirking face"]},{"id":":persevering_face:","symbol":"😣","group":"people","keywords":["face","persevere","persevering face"]},{"id":":sad_but_relieved_face:","symbol":"😥","group":"people","keywords":["disappointed","face","relieved","sad but relieved face","whew"]},{"id":":face_with_open_mouth:","symbol":"😮","group":"people","keywords":["face","face with open mouth","mouth","open","sympathy"]},{"id":":zipper-mouth_face:","symbol":"🤐","group":"people","keywords":["face","mouth","zipper","zipper-mouth face"]},{"id":":hushed_face:","symbol":"😯","group":"people","keywords":["face","hushed","stunned","surprised"]},{"id":":sleepy_face:","symbol":"😪","group":"people","keywords":["face","sleep","sleepy face"]},{"id":":tired_face:","symbol":"😫","group":"people","keywords":["face","tired"]},{"id":":sleeping_face:","symbol":"😴","group":"people","keywords":["face","sleep","sleeping face","zzz"]},{"id":":relieved_face:","symbol":"😌","group":"people","keywords":["face","relieved"]},{"id":":face_with_tongue:","symbol":"😛","group":"people","keywords":["face","face with tongue","tongue"]},{"id":":winking_face_with_tongue:","symbol":"😜","group":"people","keywords":["eye","face","joke","tongue","wink","winking face with tongue"]},{"id":":squinting_face_with_tongue:","symbol":"😝","group":"people","keywords":["eye","face","horrible","squinting face with tongue","taste","tongue"]},{"id":":drooling_face:","symbol":"🤤","group":"people","keywords":["drooling","face"]},{"id":":unamused_face:","symbol":"😒","group":"people","keywords":["face","unamused","unhappy"]},{"id":":downcast_face_with_sweat:","symbol":"😓","group":"people","keywords":["cold","downcast face with sweat","face","sweat"]},{"id":":pensive_face:","symbol":"😔","group":"people","keywords":["dejected","face","pensive"]},{"id":":confused_face:","symbol":"😕","group":"people","keywords":["confused","face"]},{"id":":upside-down_face:","symbol":"🙃","group":"people","keywords":["face","upside-down"]},{"id":":money-mouth_face:","symbol":"🤑","group":"people","keywords":["face","money","money-mouth face","mouth"]},{"id":":astonished_face:","symbol":"😲","group":"people","keywords":["astonished","face","shocked","totally"]},{"id":":frowning_face:","symbol":"☹","group":"people","keywords":["face","frown","frowning face"]},{"id":":slightly_frowning_face:","symbol":"🙁","group":"people","keywords":["face","frown","slightly frowning face"]},{"id":":confounded_face:","symbol":"😖","group":"people","keywords":["confounded","face"]},{"id":":disappointed_face:","symbol":"😞","group":"people","keywords":["disappointed","face"]},{"id":":worried_face:","symbol":"😟","group":"people","keywords":["face","worried"]},{"id":":face_with_steam_from_nose:","symbol":"😤","group":"people","keywords":["face","face with steam from nose","triumph","won"]},{"id":":crying_face:","symbol":"😢","group":"people","keywords":["cry","crying face","face","sad","tear"]},{"id":":loudly_crying_face:","symbol":"😭","group":"people","keywords":["cry","face","loudly crying face","sad","sob","tear"]},{"id":":frowning_face_with_open_mouth:","symbol":"😦","group":"people","keywords":["face","frown","frowning face with open mouth","mouth","open"]},{"id":":anguished_face:","symbol":"😧","group":"people","keywords":["anguished","face"]},{"id":":fearful_face:","symbol":"😨","group":"people","keywords":["face","fear","fearful","scared"]},{"id":":weary_face:","symbol":"😩","group":"people","keywords":["face","tired","weary"]},{"id":":exploding_head:","symbol":"🤯","group":"people","keywords":["exploding head","shocked"]},{"id":":grimacing_face:","symbol":"😬","group":"people","keywords":["face","grimace","grimacing face"]},{"id":":anxious_face_with_sweat:","symbol":"😰","group":"people","keywords":["anxious face with sweat","blue","cold","face","rushed","sweat"]},{"id":":face_screaming_in_fear:","symbol":"😱","group":"people","keywords":["face","face screaming in fear","fear","munch","scared","scream"]},{"id":":flushed_face:","symbol":"😳","group":"people","keywords":["dazed","face","flushed"]},{"id":":zany_face:","symbol":"🤪","group":"people","keywords":["eye","goofy","large","small","zany face"]},{"id":":dizzy_face:","symbol":"😵","group":"people","keywords":["dizzy","face"]},{"id":":pouting_face:","symbol":"😡","group":"people","keywords":["angry","face","mad","pouting","rage","red"]},{"id":":angry_face:","symbol":"😠","group":"people","keywords":["angry","face","mad"]},{"id":":face_with_symbols_on_mouth:","symbol":"🤬","group":"people","keywords":["face with symbols on mouth","swearing",""]},{"id":":face_with_medical_mask:","symbol":"😷","group":"people","keywords":["cold","doctor","face","face with medical mask","mask","sick"]},{"id":":face_with_thermometer:","symbol":"🤒","group":"people","keywords":["face","face with thermometer","ill","sick","thermometer"]},{"id":":face_with_head-bandage:","symbol":"🤕","group":"people","keywords":["bandage","face","face with head-bandage","hurt","injury"]},{"id":":nauseated_face:","symbol":"🤢","group":"people","keywords":["face","nauseated","vomit"]},{"id":":face_vomiting:","symbol":"🤮","group":"people","keywords":["face vomiting","sick","vomit"]},{"id":":sneezing_face:","symbol":"🤧","group":"people","keywords":["face","gesundheit","sneeze","sneezing face"]},{"id":":smiling_face_with_halo:","symbol":"😇","group":"people","keywords":["angel","face","fantasy","halo","innocent","smiling face with halo"]},{"id":":cowboy_hat_face:","symbol":"🤠","group":"people","keywords":["cowboy","cowgirl","face","hat"]},{"id":":lying_face:","symbol":"🤥","group":"people","keywords":["face","lie","lying face","pinocchio"]},{"id":":shushing_face:","symbol":"🤫","group":"people","keywords":["quiet","shush","shushing face"]},{"id":":face_with_hand_over_mouth:","symbol":"🤭","group":"people","keywords":["face with hand over mouth","whoops",""]},{"id":":face_with_monocle:","symbol":"🧐","group":"people","keywords":["face with monocle","stuffy",""]},{"id":":nerd_face:","symbol":"🤓","group":"people","keywords":["face","geek","nerd"]},{"id":":smiling_face_with_horns:","symbol":"😈","group":"people","keywords":["face","fairy tale","fantasy","horns","smile","smiling face with horns"]},{"id":":angry_face_with_horns:","symbol":"👿","group":"people","keywords":["angry face with horns","demon","devil","face","fantasy","imp"]},{"id":":clown_face:","symbol":"🤡","group":"people","keywords":["clown","face"]},{"id":":ogre:","symbol":"👹","group":"people","keywords":["creature","face","fairy tale","fantasy","monster","ogre",""]},{"id":":goblin:","symbol":"👺","group":"people","keywords":["creature","face","fairy tale","fantasy","goblin","monster"]},{"id":":skull:","symbol":"💀","group":"people","keywords":["death","face","fairy tale","monster","skull"]},{"id":":skull_and_crossbones:","symbol":"☠","group":"people","keywords":["crossbones","death","face","monster","skull","skull and crossbones"]},{"id":":ghost:","symbol":"👻","group":"people","keywords":["creature","face","fairy tale","fantasy","ghost","monster"]},{"id":":alien:","symbol":"👽","group":"people","keywords":["alien","creature","extraterrestrial","face","fantasy","ufo"]},{"id":":alien_monster:","symbol":"👾","group":"people","keywords":["alien","creature","extraterrestrial","face","monster","ufo"]},{"id":":robot_face:","symbol":"🤖","group":"people","keywords":["face","monster","robot"]},{"id":":pile_of_poo:","symbol":"💩","group":"people","keywords":["dung","face","monster","pile of poo","poo","poop"]},{"id":":grinning_cat_face:","symbol":"😺","group":"people","keywords":["cat","face","grinning cat face","mouth","open","smile"]},{"id":":grinning_cat_face_with_smiling_eyes:","symbol":"😸","group":"people","keywords":["cat","eye","face","grin","grinning cat face with smiling eyes","smile"]},{"id":":cat_face_with_tears_of_joy:","symbol":"😹","group":"people","keywords":["cat","cat face with tears of joy","face","joy","tear"]},{"id":":smiling_cat_face_with_heart-eyes:","symbol":"😻","group":"people","keywords":["cat","eye","face","love","smile","smiling cat face with heart-eyes"]},{"id":":cat_face_with_wry_smile:","symbol":"😼","group":"people","keywords":["cat","cat face with wry smile","face","ironic","smile","wry"]},{"id":":kissing_cat_face:","symbol":"😽","group":"people","keywords":["cat","eye","face","kiss","kissing cat face"]},{"id":":weary_cat_face:","symbol":"🙀","group":"people","keywords":["cat","face","oh","surprised","weary"]},{"id":":crying_cat_face:","symbol":"😿","group":"people","keywords":["cat","cry","crying cat face","face","sad","tear"]},{"id":":pouting_cat_face:","symbol":"😾","group":"people","keywords":["cat","face","pouting"]},{"id":":see-no-evil_monkey:","symbol":"🙈","group":"people","keywords":["evil","face","forbidden","monkey","see","see-no-evil monkey"]},{"id":":hear-no-evil_monkey:","symbol":"🙉","group":"people","keywords":["evil","face","forbidden","hear","hear-no-evil monkey","monkey"]},{"id":":speak-no-evil_monkey:","symbol":"🙊","group":"people","keywords":["evil","face","forbidden","monkey","speak","speak-no-evil monkey"]},{"id":":baby:","symbol":"👶","group":"people","keywords":["baby","young"]},{"id":":child:","symbol":"🧒","group":"people","keywords":["child","gender-neutral","unspecified gender","young"]},{"id":":boy:","symbol":"👦","group":"people","keywords":["boy","young"]},{"id":":girl:","symbol":"👧","group":"people","keywords":["girl","Virgo","young","zodiac"]},{"id":":person:","symbol":"🧑","group":"people","keywords":["adult","gender-neutral","person","unspecified gender"]},{"id":":person_blond_hair:","symbol":"👱","group":"people","keywords":["blond","blond-haired person","person: blond hair"]},{"id":":man:","symbol":"👨","group":"people","keywords":["adult","man"]},{"id":":man_blond_hair:","symbol":"👱‍♂️","group":"people","keywords":["blond","blond-haired man","man","man: blond hair"]},{"id":":man_beard:","symbol":"🧔","group":"people","keywords":["beard","man: beard","person",""]},{"id":":woman:","symbol":"👩","group":"people","keywords":["adult","woman"]},{"id":":woman_blond_hair:","symbol":"👱‍♀️","group":"people","keywords":["blond-haired woman","blonde","woman","woman: blond hair"]},{"id":":older_person:","symbol":"🧓","group":"people","keywords":["adult","gender-neutral","old","older person","unspecified gender"]},{"id":":old_man:","symbol":"👴","group":"people","keywords":["adult","man","old"]},{"id":":old_woman:","symbol":"👵","group":"people","keywords":["adult","old","woman"]},{"id":":man_health_worker:","symbol":"👨‍⚕️","group":"people","keywords":["doctor","healthcare","man","man health worker","nurse","therapist"]},{"id":":woman_health_worker:","symbol":"👩‍⚕️","group":"people","keywords":["doctor","healthcare","nurse","therapist","woman","woman health worker"]},{"id":":man_student:","symbol":"👨‍🎓","group":"people","keywords":["graduate","man","student"]},{"id":":woman_student:","symbol":"👩‍🎓","group":"people","keywords":["graduate","student","woman"]},{"id":":man_teacher:","symbol":"👨‍🏫","group":"people","keywords":["instructor","man","professor","teacher"]},{"id":":woman_teacher:","symbol":"👩‍🏫","group":"people","keywords":["instructor","professor","teacher","woman"]},{"id":":man_judge:","symbol":"👨‍⚖️","group":"people","keywords":["justice","man","man judge","scales"]},{"id":":woman_judge:","symbol":"👩‍⚖️","group":"people","keywords":["judge","scales","woman"]},{"id":":man_farmer:","symbol":"👨‍🌾","group":"people","keywords":["farmer","gardener","man","rancher"]},{"id":":woman_farmer:","symbol":"👩‍🌾","group":"people","keywords":["farmer","gardener","rancher","woman"]},{"id":":man_cook:","symbol":"👨‍🍳","group":"people","keywords":["chef","cook","man"]},{"id":":woman_cook:","symbol":"👩‍🍳","group":"people","keywords":["chef","cook","woman"]},{"id":":man_mechanic:","symbol":"👨‍🔧","group":"people","keywords":["electrician","man","mechanic","plumber","tradesperson"]},{"id":":woman_mechanic:","symbol":"👩‍🔧","group":"people","keywords":["electrician","mechanic","plumber","tradesperson","woman"]},{"id":":man_factory_worker:","symbol":"👨‍🏭","group":"people","keywords":["assembly","factory","industrial","man","worker"]},{"id":":woman_factory_worker:","symbol":"👩‍🏭","group":"people","keywords":["assembly","factory","industrial","woman","worker"]},{"id":":man_office_worker:","symbol":"👨‍💼","group":"people","keywords":["architect","business","man","man office worker","manager","white-collar"]},{"id":":woman_office_worker:","symbol":"👩‍💼","group":"people","keywords":["architect","business","manager","white-collar","woman","woman office worker"]},{"id":":man_scientist:","symbol":"👨‍🔬","group":"people","keywords":["biologist","chemist","engineer","man","physicist","scientist"]},{"id":":woman_scientist:","symbol":"👩‍🔬","group":"people","keywords":["biologist","chemist","engineer","physicist","scientist","woman"]},{"id":":man_technologist:","symbol":"👨‍💻","group":"people","keywords":["coder","developer","inventor","man","software","technologist"]},{"id":":woman_technologist:","symbol":"👩‍💻","group":"people","keywords":["coder","developer","inventor","software","technologist","woman"]},{"id":":man_singer:","symbol":"👨‍🎤","group":"people","keywords":["actor","entertainer","man","rock","singer","star"]},{"id":":woman_singer:","symbol":"👩‍🎤","group":"people","keywords":["actor","entertainer","rock","singer","star","woman"]},{"id":":man_artist:","symbol":"👨‍🎨","group":"people","keywords":["artist","man","palette"]},{"id":":woman_artist:","symbol":"👩‍🎨","group":"people","keywords":["artist","palette","woman"]},{"id":":man_pilot:","symbol":"👨‍✈️","group":"people","keywords":["man","pilot","plane"]},{"id":":woman_pilot:","symbol":"👩‍✈️","group":"people","keywords":["pilot","plane","woman"]},{"id":":man_astronaut:","symbol":"👨‍🚀","group":"people","keywords":["astronaut","man","rocket"]},{"id":":woman_astronaut:","symbol":"👩‍🚀","group":"people","keywords":["astronaut","rocket","woman"]},{"id":":man_firefighter:","symbol":"👨‍🚒","group":"people","keywords":["firefighter","firetruck","man"]},{"id":":woman_firefighter:","symbol":"👩‍🚒","group":"people","keywords":["firefighter","firetruck","woman"]},{"id":":police_officer:","symbol":"👮","group":"people","keywords":["cop","officer","police"]},{"id":":man_police_officer:","symbol":"👮‍♂️","group":"people","keywords":["cop","man","officer","police"]},{"id":":woman_police_officer:","symbol":"👮‍♀️","group":"people","keywords":["cop","officer","police","woman"]},{"id":":detective:","symbol":"🕵","group":"people","keywords":["detective","sleuth","spy"]},{"id":":man_detective:","symbol":"🕵️‍♂️","group":"people","keywords":["detective","man","sleuth","spy"]},{"id":":woman_detective:","symbol":"🕵️‍♀️","group":"people","keywords":["detective","sleuth","spy","woman"]},{"id":":guard:","symbol":"💂","group":"people","keywords":["guard"]},{"id":":man_guard:","symbol":"💂‍♂️","group":"people","keywords":["guard","man"]},{"id":":woman_guard:","symbol":"💂‍♀️","group":"people","keywords":["guard","woman"]},{"id":":construction_worker:","symbol":"👷","group":"people","keywords":["construction","hat","worker"]},{"id":":man_construction_worker:","symbol":"👷‍♂️","group":"people","keywords":["construction","man","worker"]},{"id":":woman_construction_worker:","symbol":"👷‍♀️","group":"people","keywords":["construction","woman","worker"]},{"id":":prince:","symbol":"🤴","group":"people","keywords":["prince"]},{"id":":princess:","symbol":"👸","group":"people","keywords":["fairy tale","fantasy","princess"]},{"id":":person_wearing_turban:","symbol":"👳","group":"people","keywords":["person wearing turban","turban"]},{"id":":man_wearing_turban:","symbol":"👳‍♂️","group":"people","keywords":["man","man wearing turban","turban"]},{"id":":woman_wearing_turban:","symbol":"👳‍♀️","group":"people","keywords":["turban","woman","woman wearing turban"]},{"id":":man_with_chinese_cap:","symbol":"👲","group":"people","keywords":["gua pi mao","hat","man","man with Chinese cap"]},{"id":":woman_with_headscarf:","symbol":"🧕","group":"people","keywords":["headscarf","hijab","mantilla","tichel","woman with headscarf",""]},{"id":":man_in_tuxedo:","symbol":"🤵","group":"people","keywords":["groom","man","man in tuxedo","tuxedo"]},{"id":":bride_with_veil:","symbol":"👰","group":"people","keywords":["bride","bride with veil","veil","wedding"]},{"id":":pregnant_woman:","symbol":"🤰","group":"people","keywords":["pregnant","woman"]},{"id":":breast-feeding:","symbol":"🤱","group":"people","keywords":["baby","breast","breast-feeding","nursing"]},{"id":":baby_angel:","symbol":"👼","group":"people","keywords":["angel","baby","face","fairy tale","fantasy"]},{"id":":santa_claus:","symbol":"🎅","group":"people","keywords":["celebration","Christmas","claus","father","santa","Santa Claus"]},{"id":":mrs._claus:","symbol":"🤶","group":"people","keywords":["celebration","Christmas","claus","mother","Mrs.","Mrs. Claus"]},{"id":":mage:","symbol":"🧙","group":"people","keywords":["mage","sorcerer","sorceress","witch","wizard"]},{"id":":man_mage:","symbol":"🧙‍♂️","group":"people","keywords":["man mage","sorcerer","wizard"]},{"id":":woman_mage:","symbol":"🧙‍♀️","group":"people","keywords":["sorceress","witch","woman mage"]},{"id":":fairy:","symbol":"🧚","group":"people","keywords":["fairy","Oberon","Puck","Titania"]},{"id":":man_fairy:","symbol":"🧚‍♂️","group":"people","keywords":["man fairy","Oberon","Puck"]},{"id":":woman_fairy:","symbol":"🧚‍♀️","group":"people","keywords":["Titania","woman fairy"]},{"id":":vampire:","symbol":"🧛","group":"people","keywords":["Dracula","undead","vampire"]},{"id":":man_vampire:","symbol":"🧛‍♂️","group":"people","keywords":["Dracula","man vampire","undead"]},{"id":":woman_vampire:","symbol":"🧛‍♀️","group":"people","keywords":["undead","woman vampire"]},{"id":":merperson:","symbol":"🧜","group":"people","keywords":["mermaid","merman","merperson","merwoman"]},{"id":":merman:","symbol":"🧜‍♂️","group":"people","keywords":["merman","Triton"]},{"id":":mermaid:","symbol":"🧜‍♀️","group":"people","keywords":["mermaid","merwoman"]},{"id":":elf:","symbol":"🧝","group":"people","keywords":["elf","magical",""]},{"id":":man_elf:","symbol":"🧝‍♂️","group":"people","keywords":["magical","man elf"]},{"id":":woman_elf:","symbol":"🧝‍♀️","group":"people","keywords":["magical","woman elf"]},{"id":":genie:","symbol":"🧞","group":"people","keywords":["djinn","genie",""]},{"id":":man_genie:","symbol":"🧞‍♂️","group":"people","keywords":["djinn","man genie"]},{"id":":woman_genie:","symbol":"🧞‍♀️","group":"people","keywords":["djinn","woman genie"]},{"id":":zombie:","symbol":"🧟","group":"people","keywords":["undead","walking dead","zombie",""]},{"id":":man_zombie:","symbol":"🧟‍♂️","group":"people","keywords":["man zombie","undead","walking dead"]},{"id":":woman_zombie:","symbol":"🧟‍♀️","group":"people","keywords":["undead","walking dead","woman zombie"]},{"id":":person_frowning:","symbol":"🙍","group":"people","keywords":["frown","gesture","person frowning"]},{"id":":man_frowning:","symbol":"🙍‍♂️","group":"people","keywords":["frowning","gesture","man"]},{"id":":woman_frowning:","symbol":"🙍‍♀️","group":"people","keywords":["frowning","gesture","woman"]},{"id":":person_pouting:","symbol":"🙎","group":"people","keywords":["gesture","person pouting","pouting"]},{"id":":man_pouting:","symbol":"🙎‍♂️","group":"people","keywords":["gesture","man","pouting"]},{"id":":woman_pouting:","symbol":"🙎‍♀️","group":"people","keywords":["gesture","pouting","woman"]},{"id":":person_gesturing_no:","symbol":"🙅","group":"people","keywords":["forbidden","gesture","hand","person gesturing NO","prohibited"]},{"id":":man_gesturing_no:","symbol":"🙅‍♂️","group":"people","keywords":["forbidden","gesture","hand","man","man gesturing NO","prohibited"]},{"id":":woman_gesturing_no:","symbol":"🙅‍♀️","group":"people","keywords":["forbidden","gesture","hand","prohibited","woman","woman gesturing NO"]},{"id":":person_gesturing_ok:","symbol":"🙆","group":"people","keywords":["gesture","hand","OK","person gesturing OK"]},{"id":":man_gesturing_ok:","symbol":"🙆‍♂️","group":"people","keywords":["gesture","hand","man","man gesturing OK","OK"]},{"id":":woman_gesturing_ok:","symbol":"🙆‍♀️","group":"people","keywords":["gesture","hand","OK","woman","woman gesturing OK"]},{"id":":person_tipping_hand:","symbol":"💁","group":"people","keywords":["hand","help","information","person tipping hand","sassy","tipping"]},{"id":":man_tipping_hand:","symbol":"💁‍♂️","group":"people","keywords":["man","man tipping hand","sassy","tipping hand"]},{"id":":woman_tipping_hand:","symbol":"💁‍♀️","group":"people","keywords":["sassy","tipping hand","woman","woman tipping hand"]},{"id":":person_raising_hand:","symbol":"🙋","group":"people","keywords":["gesture","hand","happy","person raising hand","raised"]},{"id":":man_raising_hand:","symbol":"🙋‍♂️","group":"people","keywords":["gesture","man","man raising hand","raising hand"]},{"id":":woman_raising_hand:","symbol":"🙋‍♀️","group":"people","keywords":["gesture","raising hand","woman","woman raising hand"]},{"id":":person_bowing:","symbol":"🙇","group":"people","keywords":["apology","bow","gesture","person bowing","sorry"]},{"id":":man_bowing:","symbol":"🙇‍♂️","group":"people","keywords":["apology","bowing","favor","gesture","man","sorry"]},{"id":":woman_bowing:","symbol":"🙇‍♀️","group":"people","keywords":["apology","bowing","favor","gesture","sorry","woman"]},{"id":":person_facepalming:","symbol":"🤦","group":"people","keywords":["disbelief","exasperation","face","palm","person facepalming"]},{"id":":man_facepalming:","symbol":"🤦‍♂️","group":"people","keywords":["disbelief","exasperation","facepalm","man","man facepalming"]},{"id":":woman_facepalming:","symbol":"🤦‍♀️","group":"people","keywords":["disbelief","exasperation","facepalm","woman","woman facepalming"]},{"id":":person_shrugging:","symbol":"🤷","group":"people","keywords":["doubt","ignorance","indifference","person shrugging","shrug"]},{"id":":man_shrugging:","symbol":"🤷‍♂️","group":"people","keywords":["doubt","ignorance","indifference","man","man shrugging","shrug"]},{"id":":woman_shrugging:","symbol":"🤷‍♀️","group":"people","keywords":["doubt","ignorance","indifference","shrug","woman","woman shrugging"]},{"id":":person_getting_massage:","symbol":"💆","group":"people","keywords":["face","massage","person getting massage","salon"]},{"id":":man_getting_massage:","symbol":"💆‍♂️","group":"people","keywords":["face","man","man getting massage","massage"]},{"id":":woman_getting_massage:","symbol":"💆‍♀️","group":"people","keywords":["face","massage","woman","woman getting massage"]},{"id":":person_getting_haircut:","symbol":"💇","group":"people","keywords":["barber","beauty","haircut","parlor","person getting haircut"]},{"id":":man_getting_haircut:","symbol":"💇‍♂️","group":"people","keywords":["haircut","man","man getting haircut"]},{"id":":woman_getting_haircut:","symbol":"💇‍♀️","group":"people","keywords":["haircut","woman","woman getting haircut"]},{"id":":person_walking:","symbol":"🚶","group":"people","keywords":["hike","person walking","walk","walking"]},{"id":":man_walking:","symbol":"🚶‍♂️","group":"people","keywords":["hike","man","man walking","walk"]},{"id":":woman_walking:","symbol":"🚶‍♀️","group":"people","keywords":["hike","walk","woman","woman walking"]},{"id":":person_running:","symbol":"🏃","group":"people","keywords":["marathon","person running","running"]},{"id":":man_running:","symbol":"🏃‍♂️","group":"people","keywords":["man","marathon","racing","running"]},{"id":":woman_running:","symbol":"🏃‍♀️","group":"people","keywords":["marathon","racing","running","woman"]},{"id":":woman_dancing:","symbol":"💃","group":"people","keywords":["dancing","woman"]},{"id":":man_dancing:","symbol":"🕺","group":"people","keywords":["dance","man","man dancing"]},{"id":":people_with_bunny_ears:","symbol":"👯","group":"people","keywords":["bunny ear","dancer","partying","people with bunny ears"]},{"id":":men_with_bunny_ears:","symbol":"👯‍♂️","group":"people","keywords":["bunny ear","dancer","men","men with bunny ears","partying"]},{"id":":women_with_bunny_ears:","symbol":"👯‍♀️","group":"people","keywords":["bunny ear","dancer","partying","women","women with bunny ears"]},{"id":":person_in_steamy_room:","symbol":"🧖","group":"people","keywords":["person in steamy room","sauna","steam room",""]},{"id":":man_in_steamy_room:","symbol":"🧖‍♂️","group":"people","keywords":["man in steamy room","sauna","steam room"]},{"id":":woman_in_steamy_room:","symbol":"🧖‍♀️","group":"people","keywords":["sauna","steam room","woman in steamy room"]},{"id":":person_climbing:","symbol":"🧗","group":"people","keywords":["climber","person climbing"]},{"id":":man_climbing:","symbol":"🧗‍♂️","group":"people","keywords":["climber","man climbing"]},{"id":":woman_climbing:","symbol":"🧗‍♀️","group":"people","keywords":["climber","woman climbing"]},{"id":":person_in_lotus_position:","symbol":"🧘","group":"people","keywords":["meditation","person in lotus position","yoga",""]},{"id":":man_in_lotus_position:","symbol":"🧘‍♂️","group":"people","keywords":["man in lotus position","meditation","yoga"]},{"id":":woman_in_lotus_position:","symbol":"🧘‍♀️","group":"people","keywords":["meditation","woman in lotus position","yoga"]},{"id":":person_taking_bath:","symbol":"🛀","group":"people","keywords":["bath","bathtub","person taking bath"]},{"id":":person_in_bed:","symbol":"🛌","group":"people","keywords":["hotel","person in bed","sleep"]},{"id":":man_in_suit_levitating:","symbol":"🕴","group":"people","keywords":["business","man","man in suit levitating","suit"]},{"id":":speaking_head:","symbol":"🗣","group":"people","keywords":["face","head","silhouette","speak","speaking"]},{"id":":bust_in_silhouette:","symbol":"👤","group":"people","keywords":["bust","bust in silhouette","silhouette"]},{"id":":busts_in_silhouette:","symbol":"👥","group":"people","keywords":["bust","busts in silhouette","silhouette"]},{"id":":person_fencing:","symbol":"🤺","group":"people","keywords":["fencer","fencing","person fencing","sword"]},{"id":":horse_racing:","symbol":"🏇","group":"people","keywords":["horse","jockey","racehorse","racing"]},{"id":":skier:","symbol":"⛷","group":"people","keywords":["ski","skier","snow"]},{"id":":snowboarder:","symbol":"🏂","group":"people","keywords":["ski","snow","snowboard","snowboarder"]},{"id":":person_golfing:","symbol":"🏌","group":"people","keywords":["ball","golf","person golfing"]},{"id":":man_golfing:","symbol":"🏌️‍♂️","group":"people","keywords":["golf","man","man golfing"]},{"id":":woman_golfing:","symbol":"🏌️‍♀️","group":"people","keywords":["golf","woman","woman golfing"]},{"id":":person_surfing:","symbol":"🏄","group":"people","keywords":["person surfing","surfing"]},{"id":":man_surfing:","symbol":"🏄‍♂️","group":"people","keywords":["man","surfing"]},{"id":":woman_surfing:","symbol":"🏄‍♀️","group":"people","keywords":["surfing","woman"]},{"id":":person_rowing_boat:","symbol":"🚣","group":"people","keywords":["boat","person rowing boat","rowboat"]},{"id":":man_rowing_boat:","symbol":"🚣‍♂️","group":"people","keywords":["boat","man","man rowing boat","rowboat"]},{"id":":woman_rowing_boat:","symbol":"🚣‍♀️","group":"people","keywords":["boat","rowboat","woman","woman rowing boat"]},{"id":":person_swimming:","symbol":"🏊","group":"people","keywords":["person swimming","swim"]},{"id":":man_swimming:","symbol":"🏊‍♂️","group":"people","keywords":["man","man swimming","swim"]},{"id":":woman_swimming:","symbol":"🏊‍♀️","group":"people","keywords":["swim","woman","woman swimming"]},{"id":":person_bouncing_ball:","symbol":"⛹","group":"people","keywords":["ball","person bouncing ball"]},{"id":":man_bouncing_ball:","symbol":"⛹️‍♂️","group":"people","keywords":["ball","man","man bouncing ball"]},{"id":":woman_bouncing_ball:","symbol":"⛹️‍♀️","group":"people","keywords":["ball","woman","woman bouncing ball"]},{"id":":person_lifting_weights:","symbol":"🏋","group":"people","keywords":["lifter","person lifting weights","weight"]},{"id":":man_lifting_weights:","symbol":"🏋️‍♂️","group":"people","keywords":["man","man lifting weights","weight lifter"]},{"id":":woman_lifting_weights:","symbol":"🏋️‍♀️","group":"people","keywords":["weight lifter","woman","woman lifting weights"]},{"id":":person_biking:","symbol":"🚴","group":"people","keywords":["bicycle","biking","cyclist","person biking"]},{"id":":man_biking:","symbol":"🚴‍♂️","group":"people","keywords":["bicycle","biking","cyclist","man"]},{"id":":woman_biking:","symbol":"🚴‍♀️","group":"people","keywords":["bicycle","biking","cyclist","woman"]},{"id":":person_mountain_biking:","symbol":"🚵","group":"people","keywords":["bicycle","bicyclist","bike","cyclist","mountain","person mountain biking"]},{"id":":man_mountain_biking:","symbol":"🚵‍♂️","group":"people","keywords":["bicycle","bike","cyclist","man","man mountain biking","mountain"]},{"id":":woman_mountain_biking:","symbol":"🚵‍♀️","group":"people","keywords":["bicycle","bike","biking","cyclist","mountain","woman"]},{"id":":racing_car:","symbol":"🏎","group":"people","keywords":["car","racing"]},{"id":":motorcycle:","symbol":"🏍","group":"people","keywords":["motorcycle","racing"]},{"id":":person_cartwheeling:","symbol":"🤸","group":"people","keywords":["cartwheel","gymnastics","person cartwheeling"]},{"id":":man_cartwheeling:","symbol":"🤸‍♂️","group":"people","keywords":["cartwheel","gymnastics","man","man cartwheeling"]},{"id":":woman_cartwheeling:","symbol":"🤸‍♀️","group":"people","keywords":["cartwheel","gymnastics","woman","woman cartwheeling"]},{"id":":people_wrestling:","symbol":"🤼","group":"people","keywords":["people wrestling","wrestle","wrestler"]},{"id":":men_wrestling:","symbol":"🤼‍♂️","group":"people","keywords":["men","men wrestling","wrestle"]},{"id":":women_wrestling:","symbol":"🤼‍♀️","group":"people","keywords":["women","women wrestling","wrestle"]},{"id":":person_playing_water_polo:","symbol":"🤽","group":"people","keywords":["person playing water polo","polo","water"]},{"id":":man_playing_water_polo:","symbol":"🤽‍♂️","group":"people","keywords":["man","man playing water polo","water polo"]},{"id":":woman_playing_water_polo:","symbol":"🤽‍♀️","group":"people","keywords":["water polo","woman","woman playing water polo"]},{"id":":person_playing_handball:","symbol":"🤾","group":"people","keywords":["ball","handball","person playing handball"]},{"id":":man_playing_handball:","symbol":"🤾‍♂️","group":"people","keywords":["handball","man","man playing handball"]},{"id":":woman_playing_handball:","symbol":"🤾‍♀️","group":"people","keywords":["handball","woman","woman playing handball"]},{"id":":person_juggling:","symbol":"🤹","group":"people","keywords":["balance","juggle","multitask","person juggling","skill"]},{"id":":man_juggling:","symbol":"🤹‍♂️","group":"people","keywords":["juggling","man","multitask"]},{"id":":woman_juggling:","symbol":"🤹‍♀️","group":"people","keywords":["juggling","multitask","woman"]},{"id":":man_and_woman_holding_hands:","symbol":"👫","group":"people","keywords":["couple","hand","hold","man","man and woman holding hands","woman"]},{"id":":two_men_holding_hands:","symbol":"👬","group":"people","keywords":["couple","Gemini","man","twins","two men holding hands","zodiac"]},{"id":":two_women_holding_hands:","symbol":"👭","group":"people","keywords":["couple","hand","two women holding hands","woman"]},{"id":":kiss:","symbol":"💏","group":"people","keywords":["couple","kiss"]},{"id":":kiss_woman_man:","symbol":"👩‍❤️‍💋‍👨","group":"people","keywords":["couple","kiss","man","woman"]},{"id":":kiss_man_man:","symbol":"👨‍❤️‍💋‍👨","group":"people","keywords":["couple","kiss","man"]},{"id":":kiss_woman_woman:","symbol":"👩‍❤️‍💋‍👩","group":"people","keywords":["couple","kiss","woman"]},{"id":":couple_with_heart:","symbol":"💑","group":"people","keywords":["couple","couple with heart","love"]},{"id":":couple_with_heart_woman_man:","symbol":"👩‍❤️‍👨","group":"people","keywords":["couple","couple with heart","love","man","woman"]},{"id":":couple_with_heart_man_man:","symbol":"👨‍❤️‍👨","group":"people","keywords":["couple","couple with heart","love","man"]},{"id":":couple_with_heart_woman_woman:","symbol":"👩‍❤️‍👩","group":"people","keywords":["couple","couple with heart","love","woman"]},{"id":":family:","symbol":"👪","group":"people","keywords":["family"]},{"id":":family_man_woman_boy:","symbol":"👨‍👩‍👦","group":"people","keywords":["boy","family","man","woman"]},{"id":":family_man_woman_girl:","symbol":"👨‍👩‍👧","group":"people","keywords":["family","girl","man","woman"]},{"id":":family_man_woman_girl_boy:","symbol":"👨‍👩‍👧‍👦","group":"people","keywords":["boy","family","girl","man","woman"]},{"id":":family_man_woman_boy_boy:","symbol":"👨‍👩‍👦‍👦","group":"people","keywords":["boy","family","man","woman"]},{"id":":family_man_woman_girl_girl:","symbol":"👨‍👩‍👧‍👧","group":"people","keywords":["family","girl","man","woman"]},{"id":":family_man_man_boy:","symbol":"👨‍👨‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_man_girl:","symbol":"👨‍👨‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_man_man_girl_boy:","symbol":"👨‍👨‍👧‍👦","group":"people","keywords":["boy","family","girl","man"]},{"id":":family_man_man_boy_boy:","symbol":"👨‍👨‍👦‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_man_girl_girl:","symbol":"👨‍👨‍👧‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_woman_woman_boy:","symbol":"👩‍👩‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_woman_girl:","symbol":"👩‍👩‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":family_woman_woman_girl_boy:","symbol":"👩‍👩‍👧‍👦","group":"people","keywords":["boy","family","girl","woman"]},{"id":":family_woman_woman_boy_boy:","symbol":"👩‍👩‍👦‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_woman_girl_girl:","symbol":"👩‍👩‍👧‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":family_man_boy:","symbol":"👨‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_boy_boy:","symbol":"👨‍👦‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_girl:","symbol":"👨‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_man_girl_boy:","symbol":"👨‍👧‍👦","group":"people","keywords":["boy","family","girl","man"]},{"id":":family_man_girl_girl:","symbol":"👨‍👧‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_woman_boy:","symbol":"👩‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_boy_boy:","symbol":"👩‍👦‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_girl:","symbol":"👩‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":family_woman_girl_boy:","symbol":"👩‍👧‍👦","group":"people","keywords":["boy","family","girl","woman"]},{"id":":family_woman_girl_girl:","symbol":"👩‍👧‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":selfie:","symbol":"🤳","group":"people","keywords":["camera","phone","selfie"]},{"id":":flexed_biceps:","symbol":"💪","group":"people","keywords":["biceps","comic","flex","flexed biceps","muscle"]},{"id":":backhand_index_pointing_left:","symbol":"👈","group":"people","keywords":["backhand","backhand index pointing left","finger","hand","index","point"]},{"id":":backhand_index_pointing_right:","symbol":"👉","group":"people","keywords":["backhand","backhand index pointing right","finger","hand","index","point"]},{"id":":index_pointing_up:","symbol":"☝","group":"people","keywords":["finger","hand","index","index pointing up","point","up"]},{"id":":backhand_index_pointing_up:","symbol":"👆","group":"people","keywords":["backhand","backhand index pointing up","finger","hand","point","up"]},{"id":":middle_finger:","symbol":"🖕","group":"people","keywords":["finger","hand","middle finger"]},{"id":":backhand_index_pointing_down:","symbol":"👇","group":"people","keywords":["backhand","backhand index pointing down","down","finger","hand","point"]},{"id":":victory_hand:","symbol":"✌","group":"people","keywords":["hand","v","victory"]},{"id":":crossed_fingers:","symbol":"🤞","group":"people","keywords":["cross","crossed fingers","finger","hand","luck"]},{"id":":vulcan_salute:","symbol":"🖖","group":"people","keywords":["finger","hand","spock","vulcan","vulcan salute"]},{"id":":sign_of_the_horns:","symbol":"🤘","group":"people","keywords":["finger","hand","horns","rock-on","sign of the horns"]},{"id":":call_me_hand:","symbol":"🤙","group":"people","keywords":["call","call me hand","hand"]},{"id":":hand_with_fingers_splayed:","symbol":"🖐","group":"people","keywords":["finger","hand","hand with fingers splayed","splayed"]},{"id":":raised_hand:","symbol":"✋","group":"people","keywords":["hand","raised hand"]},{"id":":ok_hand:","symbol":"👌","group":"people","keywords":["hand","OK"]},{"id":":thumbs_up:","symbol":"👍","group":"people","keywords":["+1","hand","thumb","thumbs up","up"]},{"id":":thumbs_down:","symbol":"👎","group":"people","keywords":["-1","down","hand","thumb","thumbs down"]},{"id":":raised_fist:","symbol":"✊","group":"people","keywords":["clenched","fist","hand","punch","raised fist"]},{"id":":oncoming_fist:","symbol":"👊","group":"people","keywords":["clenched","fist","hand","oncoming fist","punch"]},{"id":":left-facing_fist:","symbol":"🤛","group":"people","keywords":["fist","left-facing fist","leftwards"]},{"id":":right-facing_fist:","symbol":"🤜","group":"people","keywords":["fist","right-facing fist","rightwards"]},{"id":":raised_back_of_hand:","symbol":"🤚","group":"people","keywords":["backhand","raised","raised back of hand"]},{"id":":waving_hand:","symbol":"👋","group":"people","keywords":["hand","wave","waving"]},{"id":":love-you_gesture:","symbol":"🤟","group":"people","keywords":["hand","ILY","love-you gesture"]},{"id":":writing_hand:","symbol":"✍","group":"people","keywords":["hand","write","writing hand"]},{"id":":clapping_hands:","symbol":"👏","group":"people","keywords":["clap","clapping hands","hand"]},{"id":":open_hands:","symbol":"👐","group":"people","keywords":["hand","open","open hands"]},{"id":":raising_hands:","symbol":"🙌","group":"people","keywords":["celebration","gesture","hand","hooray","raised","raising hands"]},{"id":":palms_up_together:","symbol":"🤲","group":"people","keywords":["palms up together","prayer",""]},{"id":":folded_hands:","symbol":"🙏","group":"people","keywords":["ask","folded hands","hand","please","pray","thanks"]},{"id":":handshake:","symbol":"🤝","group":"people","keywords":["agreement","hand","handshake","meeting","shake"]},{"id":":nail_polish:","symbol":"💅","group":"people","keywords":["care","cosmetics","manicure","nail","polish"]},{"id":":ear:","symbol":"👂","group":"people","keywords":["body","ear"]},{"id":":nose:","symbol":"👃","group":"people","keywords":["body","nose"]},{"id":":footprints:","symbol":"👣","group":"people","keywords":["clothing","footprint","footprints","print"]},{"id":":eyes:","symbol":"👀","group":"people","keywords":["eye","eyes","face"]},{"id":":eye:","symbol":"👁","group":"people","keywords":["body","eye"]},{"id":":eye_in_speech_bubble:","symbol":"👁️‍🗨️","group":"people","keywords":["eye","eye in speech bubble","speech bubble","witness"]},{"id":":brain:","symbol":"🧠","group":"people","keywords":["brain","intelligent"]},{"id":":tongue:","symbol":"👅","group":"people","keywords":["body","tongue"]},{"id":":mouth:","symbol":"👄","group":"people","keywords":["lips","mouth"]},{"id":":kiss_mark:","symbol":"💋","group":"people","keywords":["kiss","kiss mark","lips"]},{"id":":heart_with_arrow:","symbol":"💘","group":"people","keywords":["arrow","cupid","heart with arrow"]},{"id":":heart_with_ribbon:","symbol":"💝","group":"people","keywords":["heart with ribbon","ribbon","valentine"]},{"id":":sparkling_heart:","symbol":"💖","group":"people","keywords":["excited","sparkle","sparkling heart"]},{"id":":growing_heart:","symbol":"💗","group":"people","keywords":["excited","growing","growing heart","nervous","pulse"]},{"id":":beating_heart:","symbol":"💓","group":"people","keywords":["beating","beating heart","heartbeat","pulsating"]},{"id":":revolving_hearts:","symbol":"💞","group":"people","keywords":["revolving","revolving hearts"]},{"id":":two_hearts:","symbol":"💕","group":"people","keywords":["love","two hearts"]},{"id":":love_letter:","symbol":"💌","group":"people","keywords":["heart","letter","love","mail"]},{"id":":heavy_heart_exclamation:","symbol":"❣","group":"people","keywords":["exclamation","heavy heart exclamation","mark","punctuation"]},{"id":":broken_heart:","symbol":"💔","group":"people","keywords":["break","broken","broken heart"]},{"id":":red_heart:","symbol":"❤","group":"people","keywords":["heart","red heart"]},{"id":":orange_heart:","symbol":"🧡","group":"people","keywords":["orange","orange heart"]},{"id":":yellow_heart:","symbol":"💛","group":"people","keywords":["yellow","yellow heart"]},{"id":":green_heart:","symbol":"💚","group":"people","keywords":["green","green heart"]},{"id":":blue_heart:","symbol":"💙","group":"people","keywords":["blue","blue heart"]},{"id":":purple_heart:","symbol":"💜","group":"people","keywords":["purple","purple heart"]},{"id":":black_heart:","symbol":"🖤","group":"people","keywords":["black","black heart","evil","wicked"]},{"id":":heart_decoration:","symbol":"💟","group":"people","keywords":["heart","heart decoration"]},{"id":":zzz:","symbol":"💤","group":"people","keywords":["comic","sleep","zzz"]},{"id":":anger_symbol:","symbol":"💢","group":"people","keywords":["anger symbol","angry","comic","mad"]},{"id":":bomb:","symbol":"💣","group":"people","keywords":["bomb","comic"]},{"id":":collision:","symbol":"💥","group":"people","keywords":["boom","collision","comic"]},{"id":":sweat_droplets:","symbol":"💦","group":"people","keywords":["comic","splashing","sweat","sweat droplets"]},{"id":":dashing_away:","symbol":"💨","group":"people","keywords":["comic","dash","dashing away","running"]},{"id":":dizzy:","symbol":"💫","group":"people","keywords":["comic","dizzy","star"]},{"id":":speech_balloon:","symbol":"💬","group":"people","keywords":["balloon","bubble","comic","dialog","speech"]},{"id":":left_speech_bubble:","symbol":"🗨","group":"people","keywords":["dialog","left speech bubble","speech"]},{"id":":right_anger_bubble:","symbol":"🗯","group":"people","keywords":["angry","balloon","bubble","mad","right anger bubble"]},{"id":":thought_balloon:","symbol":"💭","group":"people","keywords":["balloon","bubble","comic","thought"]},{"id":":hole:","symbol":"🕳","group":"people","keywords":["hole"]},{"id":":glasses:","symbol":"👓","group":"people","keywords":["clothing","eye","eyeglasses","eyewear","glasses"]},{"id":":sunglasses:","symbol":"🕶","group":"people","keywords":["dark","eye","eyewear","glasses","sunglasses"]},{"id":":necktie:","symbol":"👔","group":"people","keywords":["clothing","necktie","tie"]},{"id":":t-shirt:","symbol":"👕","group":"people","keywords":["clothing","shirt","t-shirt","tshirt"]},{"id":":jeans:","symbol":"👖","group":"people","keywords":["clothing","jeans","pants","trousers"]},{"id":":scarf:","symbol":"🧣","group":"people","keywords":["neck","scarf"]},{"id":":gloves:","symbol":"🧤","group":"people","keywords":["gloves","hand"]},{"id":":coat:","symbol":"🧥","group":"people","keywords":["coat","jacket"]},{"id":":socks:","symbol":"🧦","group":"people","keywords":["socks","stocking"]},{"id":":dress:","symbol":"👗","group":"people","keywords":["clothing","dress"]},{"id":":kimono:","symbol":"👘","group":"people","keywords":["clothing","kimono"]},{"id":":bikini:","symbol":"👙","group":"people","keywords":["bikini","clothing","swim"]},{"id":":woman’s_clothes:","symbol":"👚","group":"people","keywords":["clothing","woman","woman’s clothes"]},{"id":":purse:","symbol":"👛","group":"people","keywords":["clothing","coin","purse"]},{"id":":handbag:","symbol":"👜","group":"people","keywords":["bag","clothing","handbag","purse"]},{"id":":clutch_bag:","symbol":"👝","group":"people","keywords":["bag","clothing","clutch bag","pouch"]},{"id":":shopping_bags:","symbol":"🛍","group":"people","keywords":["bag","hotel","shopping","shopping bags"]},{"id":":backpack:","symbol":"🎒","group":"people","keywords":["backpack","bag","rucksack","satchel","school"]},{"id":":man’s_shoe:","symbol":"👞","group":"people","keywords":["clothing","man","man’s shoe","shoe"]},{"id":":running_shoe:","symbol":"👟","group":"people","keywords":["athletic","clothing","running shoe","shoe","sneaker"]},{"id":":high-heeled_shoe:","symbol":"👠","group":"people","keywords":["clothing","heel","high-heeled shoe","shoe","woman"]},{"id":":woman’s_sandal:","symbol":"👡","group":"people","keywords":["clothing","sandal","shoe","woman","woman’s sandal"]},{"id":":woman’s_boot:","symbol":"👢","group":"people","keywords":["boot","clothing","shoe","woman","woman’s boot"]},{"id":":crown:","symbol":"👑","group":"people","keywords":["clothing","crown","king","queen"]},{"id":":woman’s_hat:","symbol":"👒","group":"people","keywords":["clothing","hat","woman","woman’s hat"]},{"id":":top_hat:","symbol":"🎩","group":"people","keywords":["clothing","hat","top","tophat"]},{"id":":graduation_cap:","symbol":"🎓","group":"people","keywords":["cap","celebration","clothing","graduation","hat"]},{"id":":billed_cap:","symbol":"🧢","group":"people","keywords":["baseball cap","billed cap"]},{"id":":rescue_worker’s_helmet:","symbol":"⛑","group":"people","keywords":["aid","cross","face","hat","helmet","rescue worker’s helmet"]},{"id":":prayer_beads:","symbol":"📿","group":"people","keywords":["beads","clothing","necklace","prayer","religion"]},{"id":":lipstick:","symbol":"💄","group":"people","keywords":["cosmetics","lipstick","makeup"]},{"id":":ring:","symbol":"💍","group":"people","keywords":["diamond","ring"]},{"id":":gem_stone:","symbol":"💎","group":"people","keywords":["diamond","gem","gem stone","jewel"]},{"id":":monkey_face:","symbol":"🐵","group":"nature","keywords":["face","monkey"]},{"id":":monkey:","symbol":"🐒","group":"nature","keywords":["monkey"]},{"id":":gorilla:","symbol":"🦍","group":"nature","keywords":["gorilla"]},{"id":":dog_face:","symbol":"🐶","group":"nature","keywords":["dog","face","pet"]},{"id":":dog:","symbol":"🐕","group":"nature","keywords":["dog","pet"]},{"id":":poodle:","symbol":"🐩","group":"nature","keywords":["dog","poodle"]},{"id":":wolf_face:","symbol":"🐺","group":"nature","keywords":["face","wolf"]},{"id":":fox_face:","symbol":"🦊","group":"nature","keywords":["face","fox"]},{"id":":cat_face:","symbol":"🐱","group":"nature","keywords":["cat","face","pet"]},{"id":":cat:","symbol":"🐈","group":"nature","keywords":["cat","pet"]},{"id":":lion_face:","symbol":"🦁","group":"nature","keywords":["face","Leo","lion","zodiac"]},{"id":":tiger_face:","symbol":"🐯","group":"nature","keywords":["face","tiger"]},{"id":":tiger:","symbol":"🐅","group":"nature","keywords":["tiger"]},{"id":":leopard:","symbol":"🐆","group":"nature","keywords":["leopard"]},{"id":":horse_face:","symbol":"🐴","group":"nature","keywords":["face","horse"]},{"id":":horse:","symbol":"🐎","group":"nature","keywords":["equestrian","horse","racehorse","racing"]},{"id":":unicorn_face:","symbol":"🦄","group":"nature","keywords":["face","unicorn"]},{"id":":zebra:","symbol":"🦓","group":"nature","keywords":["stripe","zebra"]},{"id":":deer:","symbol":"🦌","group":"nature","keywords":["deer"]},{"id":":cow_face:","symbol":"🐮","group":"nature","keywords":["cow","face"]},{"id":":ox:","symbol":"🐂","group":"nature","keywords":["bull","ox","Taurus","zodiac"]},{"id":":water_buffalo:","symbol":"🐃","group":"nature","keywords":["buffalo","water"]},{"id":":cow:","symbol":"🐄","group":"nature","keywords":["cow"]},{"id":":pig_face:","symbol":"🐷","group":"nature","keywords":["face","pig"]},{"id":":pig:","symbol":"🐖","group":"nature","keywords":["pig","sow"]},{"id":":boar:","symbol":"🐗","group":"nature","keywords":["boar","pig"]},{"id":":pig_nose:","symbol":"🐽","group":"nature","keywords":["face","nose","pig"]},{"id":":ram:","symbol":"🐏","group":"nature","keywords":["Aries","male","ram","sheep","zodiac"]},{"id":":ewe:","symbol":"🐑","group":"nature","keywords":["ewe","female","sheep"]},{"id":":goat:","symbol":"🐐","group":"nature","keywords":["Capricorn","goat","zodiac"]},{"id":":camel:","symbol":"🐪","group":"nature","keywords":["camel","dromedary","hump"]},{"id":":two-hump_camel:","symbol":"🐫","group":"nature","keywords":["bactrian","camel","hump","two-hump camel"]},{"id":":giraffe:","symbol":"🦒","group":"nature","keywords":["giraffe","spots"]},{"id":":elephant:","symbol":"🐘","group":"nature","keywords":["elephant"]},{"id":":rhinoceros:","symbol":"🦏","group":"nature","keywords":["rhinoceros"]},{"id":":mouse_face:","symbol":"🐭","group":"nature","keywords":["face","mouse"]},{"id":":mouse:","symbol":"🐁","group":"nature","keywords":["mouse"]},{"id":":rat:","symbol":"🐀","group":"nature","keywords":["rat"]},{"id":":hamster_face:","symbol":"🐹","group":"nature","keywords":["face","hamster","pet"]},{"id":":rabbit_face:","symbol":"🐰","group":"nature","keywords":["bunny","face","pet","rabbit"]},{"id":":rabbit:","symbol":"🐇","group":"nature","keywords":["bunny","pet","rabbit"]},{"id":":chipmunk:","symbol":"🐿","group":"nature","keywords":["chipmunk","squirrel"]},{"id":":hedgehog:","symbol":"🦔","group":"nature","keywords":["hedgehog","spiny"]},{"id":":bat:","symbol":"🦇","group":"nature","keywords":["bat","vampire"]},{"id":":bear_face:","symbol":"🐻","group":"nature","keywords":["bear","face"]},{"id":":koala:","symbol":"🐨","group":"nature","keywords":["bear","koala"]},{"id":":panda_face:","symbol":"🐼","group":"nature","keywords":["face","panda"]},{"id":":paw_prints:","symbol":"🐾","group":"nature","keywords":["feet","paw","paw prints","print"]},{"id":":turkey:","symbol":"🦃","group":"nature","keywords":["bird","turkey"]},{"id":":chicken:","symbol":"🐔","group":"nature","keywords":["bird","chicken"]},{"id":":rooster:","symbol":"🐓","group":"nature","keywords":["bird","rooster"]},{"id":":hatching_chick:","symbol":"🐣","group":"nature","keywords":["baby","bird","chick","hatching"]},{"id":":baby_chick:","symbol":"🐤","group":"nature","keywords":["baby","bird","chick"]},{"id":":front-facing_baby_chick:","symbol":"🐥","group":"nature","keywords":["baby","bird","chick","front-facing baby chick"]},{"id":":bird:","symbol":"🐦","group":"nature","keywords":["bird"]},{"id":":penguin:","symbol":"🐧","group":"nature","keywords":["bird","penguin"]},{"id":":dove:","symbol":"🕊","group":"nature","keywords":["bird","dove","fly","peace"]},{"id":":eagle:","symbol":"🦅","group":"nature","keywords":["bird","eagle"]},{"id":":duck:","symbol":"🦆","group":"nature","keywords":["bird","duck"]},{"id":":owl:","symbol":"🦉","group":"nature","keywords":["bird","owl","wise"]},{"id":":frog_face:","symbol":"🐸","group":"nature","keywords":["face","frog"]},{"id":":crocodile:","symbol":"🐊","group":"nature","keywords":["crocodile"]},{"id":":turtle:","symbol":"🐢","group":"nature","keywords":["terrapin","tortoise","turtle"]},{"id":":lizard:","symbol":"🦎","group":"nature","keywords":["lizard","reptile"]},{"id":":snake:","symbol":"🐍","group":"nature","keywords":["bearer","Ophiuchus","serpent","snake","zodiac"]},{"id":":dragon_face:","symbol":"🐲","group":"nature","keywords":["dragon","face","fairy tale"]},{"id":":dragon:","symbol":"🐉","group":"nature","keywords":["dragon","fairy tale"]},{"id":":sauropod:","symbol":"🦕","group":"nature","keywords":["brachiosaurus","brontosaurus","diplodocus","sauropod"]},{"id":":t-rex:","symbol":"🦖","group":"nature","keywords":["T-Rex","Tyrannosaurus Rex"]},{"id":":spouting_whale:","symbol":"🐳","group":"nature","keywords":["face","spouting","whale"]},{"id":":whale:","symbol":"🐋","group":"nature","keywords":["whale"]},{"id":":dolphin:","symbol":"🐬","group":"nature","keywords":["dolphin","flipper"]},{"id":":fish:","symbol":"🐟","group":"nature","keywords":["fish","Pisces","zodiac"]},{"id":":tropical_fish:","symbol":"🐠","group":"nature","keywords":["fish","tropical"]},{"id":":blowfish:","symbol":"🐡","group":"nature","keywords":["blowfish","fish"]},{"id":":shark:","symbol":"🦈","group":"nature","keywords":["fish","shark"]},{"id":":octopus:","symbol":"🐙","group":"nature","keywords":["octopus"]},{"id":":spiral_shell:","symbol":"🐚","group":"nature","keywords":["shell","spiral"]},{"id":":crab:","symbol":"🦀","group":"nature","keywords":["Cancer","crab","zodiac"]},{"id":":shrimp:","symbol":"🦐","group":"nature","keywords":["food","shellfish","shrimp","small"]},{"id":":squid:","symbol":"🦑","group":"nature","keywords":["food","molusc","squid"]},{"id":":snail:","symbol":"🐌","group":"nature","keywords":["snail"]},{"id":":butterfly:","symbol":"🦋","group":"nature","keywords":["butterfly","insect","pretty"]},{"id":":bug:","symbol":"🐛","group":"nature","keywords":["bug","insect"]},{"id":":ant:","symbol":"🐜","group":"nature","keywords":["ant","insect"]},{"id":":honeybee:","symbol":"🐝","group":"nature","keywords":["bee","honeybee","insect"]},{"id":":lady_beetle:","symbol":"🐞","group":"nature","keywords":["beetle","insect","lady beetle","ladybird","ladybug"]},{"id":":cricket:","symbol":"🦗","group":"nature","keywords":["cricket","grasshopper",""]},{"id":":spider:","symbol":"🕷","group":"nature","keywords":["insect","spider"]},{"id":":spider_web:","symbol":"🕸","group":"nature","keywords":["spider","web"]},{"id":":scorpion:","symbol":"🦂","group":"nature","keywords":["scorpio","Scorpio","scorpion","zodiac"]},{"id":":bouquet:","symbol":"💐","group":"nature","keywords":["bouquet","flower"]},{"id":":cherry_blossom:","symbol":"🌸","group":"nature","keywords":["blossom","cherry","flower"]},{"id":":white_flower:","symbol":"💮","group":"nature","keywords":["flower","white flower"]},{"id":":rosette:","symbol":"🏵","group":"nature","keywords":["plant","rosette"]},{"id":":rose:","symbol":"🌹","group":"nature","keywords":["flower","rose"]},{"id":":wilted_flower:","symbol":"🥀","group":"nature","keywords":["flower","wilted"]},{"id":":hibiscus:","symbol":"🌺","group":"nature","keywords":["flower","hibiscus"]},{"id":":sunflower:","symbol":"🌻","group":"nature","keywords":["flower","sun","sunflower"]},{"id":":blossom:","symbol":"🌼","group":"nature","keywords":["blossom","flower"]},{"id":":tulip:","symbol":"🌷","group":"nature","keywords":["flower","tulip"]},{"id":":seedling:","symbol":"🌱","group":"nature","keywords":["seedling","young"]},{"id":":evergreen_tree:","symbol":"🌲","group":"nature","keywords":["evergreen tree","tree"]},{"id":":deciduous_tree:","symbol":"🌳","group":"nature","keywords":["deciduous","shedding","tree"]},{"id":":palm_tree:","symbol":"🌴","group":"nature","keywords":["palm","tree"]},{"id":":cactus:","symbol":"🌵","group":"nature","keywords":["cactus","plant"]},{"id":":sheaf_of_rice:","symbol":"🌾","group":"nature","keywords":["ear","grain","rice","sheaf of rice"]},{"id":":herb:","symbol":"🌿","group":"nature","keywords":["herb","leaf"]},{"id":":shamrock:","symbol":"☘","group":"nature","keywords":["plant","shamrock"]},{"id":":four_leaf_clover:","symbol":"🍀","group":"nature","keywords":["4","clover","four","four-leaf clover","leaf"]},{"id":":maple_leaf:","symbol":"🍁","group":"nature","keywords":["falling","leaf","maple"]},{"id":":fallen_leaf:","symbol":"🍂","group":"nature","keywords":["fallen leaf","falling","leaf"]},{"id":":leaf_fluttering_in_wind:","symbol":"🍃","group":"nature","keywords":["blow","flutter","leaf","leaf fluttering in wind","wind"]},{"id":":grapes:","symbol":"🍇","group":"food","keywords":["fruit","grape","grapes"]},{"id":":melon:","symbol":"🍈","group":"food","keywords":["fruit","melon"]},{"id":":watermelon:","symbol":"🍉","group":"food","keywords":["fruit","watermelon"]},{"id":":tangerine:","symbol":"🍊","group":"food","keywords":["fruit","orange","tangerine"]},{"id":":lemon:","symbol":"🍋","group":"food","keywords":["citrus","fruit","lemon"]},{"id":":banana:","symbol":"🍌","group":"food","keywords":["banana","fruit"]},{"id":":pineapple:","symbol":"🍍","group":"food","keywords":["fruit","pineapple"]},{"id":":red_apple:","symbol":"🍎","group":"food","keywords":["apple","fruit","red"]},{"id":":green_apple:","symbol":"🍏","group":"food","keywords":["apple","fruit","green"]},{"id":":pear:","symbol":"🍐","group":"food","keywords":["fruit","pear"]},{"id":":peach:","symbol":"🍑","group":"food","keywords":["fruit","peach"]},{"id":":cherries:","symbol":"🍒","group":"food","keywords":["berries","cherries","cherry","fruit","red"]},{"id":":strawberry:","symbol":"🍓","group":"food","keywords":["berry","fruit","strawberry"]},{"id":":kiwi_fruit:","symbol":"🥝","group":"food","keywords":["food","fruit","kiwi"]},{"id":":tomato:","symbol":"🍅","group":"food","keywords":["fruit","tomato","vegetable"]},{"id":":coconut:","symbol":"🥥","group":"food","keywords":["coconut","palm","piña colada"]},{"id":":avocado:","symbol":"🥑","group":"food","keywords":["avocado","food","fruit"]},{"id":":eggplant:","symbol":"🍆","group":"food","keywords":["aubergine","eggplant","vegetable"]},{"id":":potato:","symbol":"🥔","group":"food","keywords":["food","potato","vegetable"]},{"id":":carrot:","symbol":"🥕","group":"food","keywords":["carrot","food","vegetable"]},{"id":":ear_of_corn:","symbol":"🌽","group":"food","keywords":["corn","ear","ear of corn","maize","maze"]},{"id":":hot_pepper:","symbol":"🌶","group":"food","keywords":["hot","pepper"]},{"id":":cucumber:","symbol":"🥒","group":"food","keywords":["cucumber","food","pickle","vegetable"]},{"id":":broccoli:","symbol":"🥦","group":"food","keywords":["broccoli","wild cabbage"]},{"id":":mushroom:","symbol":"🍄","group":"food","keywords":["mushroom","toadstool"]},{"id":":peanuts:","symbol":"🥜","group":"food","keywords":["food","nut","peanut","peanuts","vegetable"]},{"id":":chestnut:","symbol":"🌰","group":"food","keywords":["chestnut","plant"]},{"id":":bread:","symbol":"🍞","group":"food","keywords":["bread","loaf"]},{"id":":croissant:","symbol":"🥐","group":"food","keywords":["bread","crescent roll","croissant","food","french"]},{"id":":baguette_bread:","symbol":"🥖","group":"food","keywords":["baguette","bread","food","french"]},{"id":":pretzel:","symbol":"🥨","group":"food","keywords":["pretzel","twisted",""]},{"id":":pancakes:","symbol":"🥞","group":"food","keywords":["crêpe","food","hotcake","pancake","pancakes"]},{"id":":cheese_wedge:","symbol":"🧀","group":"food","keywords":["cheese","cheese wedge"]},{"id":":meat_on_bone:","symbol":"🍖","group":"food","keywords":["bone","meat","meat on bone"]},{"id":":poultry_leg:","symbol":"🍗","group":"food","keywords":["bone","chicken","drumstick","leg","poultry"]},{"id":":cut_of_meat:","symbol":"🥩","group":"food","keywords":["chop","cut of meat","lambchop","porkchop","steak"]},{"id":":bacon:","symbol":"🥓","group":"food","keywords":["bacon","food","meat"]},{"id":":hamburger:","symbol":"🍔","group":"food","keywords":["burger","hamburger"]},{"id":":french_fries:","symbol":"🍟","group":"food","keywords":["french","fries"]},{"id":":pizza:","symbol":"🍕","group":"food","keywords":["cheese","pizza","slice"]},{"id":":hot_dog:","symbol":"🌭","group":"food","keywords":["frankfurter","hot dog","hotdog","sausage"]},{"id":":sandwich:","symbol":"🥪","group":"food","keywords":["bread","sandwich"]},{"id":":taco:","symbol":"🌮","group":"food","keywords":["mexican","taco"]},{"id":":burrito:","symbol":"🌯","group":"food","keywords":["burrito","mexican","wrap"]},{"id":":stuffed_flatbread:","symbol":"🥙","group":"food","keywords":["falafel","flatbread","food","gyro","kebab","stuffed"]},{"id":":egg:","symbol":"🥚","group":"food","keywords":["egg","food"]},{"id":":cooking:","symbol":"🍳","group":"food","keywords":["cooking","egg","frying","pan"]},{"id":":shallow_pan_of_food:","symbol":"🥘","group":"food","keywords":["casserole","food","paella","pan","shallow","shallow pan of food"]},{"id":":pot_of_food:","symbol":"🍲","group":"food","keywords":["pot","pot of food","stew"]},{"id":":bowl_with_spoon:","symbol":"🥣","group":"food","keywords":["bowl with spoon","breakfast","cereal","congee",""]},{"id":":green_salad:","symbol":"🥗","group":"food","keywords":["food","green","salad"]},{"id":":popcorn:","symbol":"🍿","group":"food","keywords":["popcorn"]},{"id":":canned_food:","symbol":"🥫","group":"food","keywords":["can","canned food"]},{"id":":bento_box:","symbol":"🍱","group":"food","keywords":["bento","box"]},{"id":":rice_cracker:","symbol":"🍘","group":"food","keywords":["cracker","rice"]},{"id":":rice_ball:","symbol":"🍙","group":"food","keywords":["ball","Japanese","rice"]},{"id":":cooked_rice:","symbol":"🍚","group":"food","keywords":["cooked","rice"]},{"id":":curry_rice:","symbol":"🍛","group":"food","keywords":["curry","rice"]},{"id":":steaming_bowl:","symbol":"🍜","group":"food","keywords":["bowl","noodle","ramen","steaming"]},{"id":":spaghetti:","symbol":"🍝","group":"food","keywords":["pasta","spaghetti"]},{"id":":roasted_sweet_potato:","symbol":"🍠","group":"food","keywords":["potato","roasted","sweet"]},{"id":":oden:","symbol":"🍢","group":"food","keywords":["kebab","oden","seafood","skewer","stick"]},{"id":":sushi:","symbol":"🍣","group":"food","keywords":["sushi"]},{"id":":fried_shrimp:","symbol":"🍤","group":"food","keywords":["fried","prawn","shrimp","tempura"]},{"id":":fish_cake_with_swirl:","symbol":"🍥","group":"food","keywords":["cake","fish","fish cake with swirl","pastry","swirl"]},{"id":":dango:","symbol":"🍡","group":"food","keywords":["dango","dessert","Japanese","skewer","stick","sweet"]},{"id":":dumpling:","symbol":"🥟","group":"food","keywords":["dumpling","empanada","gyōza","jiaozi","pierogi","potsticker"]},{"id":":fortune_cookie:","symbol":"🥠","group":"food","keywords":["fortune cookie","prophecy"]},{"id":":takeout_box:","symbol":"🥡","group":"food","keywords":["oyster pail","takeout box"]},{"id":":soft_ice_cream:","symbol":"🍦","group":"food","keywords":["cream","dessert","ice","icecream","soft","sweet"]},{"id":":shaved_ice:","symbol":"🍧","group":"food","keywords":["dessert","ice","shaved","sweet"]},{"id":":ice_cream:","symbol":"🍨","group":"food","keywords":["cream","dessert","ice","sweet"]},{"id":":doughnut:","symbol":"🍩","group":"food","keywords":["dessert","donut","doughnut","sweet"]},{"id":":cookie:","symbol":"🍪","group":"food","keywords":["cookie","dessert","sweet"]},{"id":":birthday_cake:","symbol":"🎂","group":"food","keywords":["birthday","cake","celebration","dessert","pastry","sweet"]},{"id":":shortcake:","symbol":"🍰","group":"food","keywords":["cake","dessert","pastry","shortcake","slice","sweet"]},{"id":":pie:","symbol":"🥧","group":"food","keywords":["filling","pastry","pie",""]},{"id":":chocolate_bar:","symbol":"🍫","group":"food","keywords":["bar","chocolate","dessert","sweet"]},{"id":":candy:","symbol":"🍬","group":"food","keywords":["candy","dessert","sweet"]},{"id":":lollipop:","symbol":"🍭","group":"food","keywords":["candy","dessert","lollipop","sweet"]},{"id":":custard:","symbol":"🍮","group":"food","keywords":["custard","dessert","pudding","sweet"]},{"id":":honey_pot:","symbol":"🍯","group":"food","keywords":["honey","honeypot","pot","sweet"]},{"id":":baby_bottle:","symbol":"🍼","group":"food","keywords":["baby","bottle","drink","milk"]},{"id":":glass_of_milk:","symbol":"🥛","group":"food","keywords":["drink","glass","glass of milk","milk"]},{"id":":hot_beverage:","symbol":"☕","group":"food","keywords":["beverage","coffee","drink","hot","steaming","tea"]},{"id":":teacup_without_handle:","symbol":"🍵","group":"food","keywords":["beverage","cup","drink","tea","teacup","teacup without handle"]},{"id":":sake:","symbol":"🍶","group":"food","keywords":["bar","beverage","bottle","cup","drink","sake"]},{"id":":bottle_with_popping_cork:","symbol":"🍾","group":"food","keywords":["bar","bottle","bottle with popping cork","cork","drink","popping"]},{"id":":wine_glass:","symbol":"🍷","group":"food","keywords":["bar","beverage","drink","glass","wine"]},{"id":":cocktail_glass:","symbol":"🍸","group":"food","keywords":["bar","cocktail","drink","glass"]},{"id":":tropical_drink:","symbol":"🍹","group":"food","keywords":["bar","drink","tropical"]},{"id":":beer_mug:","symbol":"🍺","group":"food","keywords":["bar","beer","drink","mug"]},{"id":":clinking_beer_mugs:","symbol":"🍻","group":"food","keywords":["bar","beer","clink","clinking beer mugs","drink","mug"]},{"id":":clinking_glasses:","symbol":"🥂","group":"food","keywords":["celebrate","clink","clinking glasses","drink","glass"]},{"id":":tumbler_glass:","symbol":"🥃","group":"food","keywords":["glass","liquor","shot","tumbler","whisky"]},{"id":":cup_with_straw:","symbol":"🥤","group":"food","keywords":["cup with straw","juice","soda",""]},{"id":":chopsticks:","symbol":"🥢","group":"food","keywords":["chopsticks","hashi",""]},{"id":":fork_and_knife_with_plate:","symbol":"🍽","group":"food","keywords":["cooking","fork","fork and knife with plate","knife","plate"]},{"id":":fork_and_knife:","symbol":"🍴","group":"food","keywords":["cooking","cutlery","fork","fork and knife","knife"]},{"id":":spoon:","symbol":"🥄","group":"food","keywords":["spoon","tableware"]},{"id":":kitchen_knife:","symbol":"🔪","group":"food","keywords":["cooking","hocho","kitchen knife","knife","tool","weapon"]},{"id":":amphora:","symbol":"🏺","group":"food","keywords":["amphora","Aquarius","cooking","drink","jug","zodiac"]},{"id":":globe_showing_europe-africa:","symbol":"🌍","group":"travel","keywords":["Africa","earth","Europe","globe","globe showing Europe-Africa","world"]},{"id":":globe_showing_americas:","symbol":"🌎","group":"travel","keywords":["Americas","earth","globe","globe showing Americas","world"]},{"id":":globe_showing_asia-australia:","symbol":"🌏","group":"travel","keywords":["Asia","Australia","earth","globe","globe showing Asia-Australia","world"]},{"id":":globe_with_meridians:","symbol":"🌐","group":"travel","keywords":["earth","globe","globe with meridians","meridians","world"]},{"id":":world_map:","symbol":"🗺","group":"travel","keywords":["map","world"]},{"id":":map_of_japan:","symbol":"🗾","group":"travel","keywords":["Japan","map","map of Japan"]},{"id":":snow-capped_mountain:","symbol":"🏔","group":"travel","keywords":["cold","mountain","snow","snow-capped mountain"]},{"id":":mountain:","symbol":"⛰","group":"travel","keywords":["mountain"]},{"id":":volcano:","symbol":"🌋","group":"travel","keywords":["eruption","mountain","volcano"]},{"id":":mount_fuji:","symbol":"🗻","group":"travel","keywords":["fuji","mount fuji","mountain"]},{"id":":camping:","symbol":"🏕","group":"travel","keywords":["camping"]},{"id":":beach_with_umbrella:","symbol":"🏖","group":"travel","keywords":["beach","beach with umbrella","umbrella"]},{"id":":desert:","symbol":"🏜","group":"travel","keywords":["desert"]},{"id":":desert_island:","symbol":"🏝","group":"travel","keywords":["desert","island"]},{"id":":national_park:","symbol":"🏞","group":"travel","keywords":["national park","park"]},{"id":":stadium:","symbol":"🏟","group":"travel","keywords":["stadium"]},{"id":":classical_building:","symbol":"🏛","group":"travel","keywords":["classical","classical building"]},{"id":":building_construction:","symbol":"🏗","group":"travel","keywords":["building construction","construction"]},{"id":":houses:","symbol":"🏘","group":"travel","keywords":["houses"]},{"id":":derelict_house:","symbol":"🏚","group":"travel","keywords":["derelict","house"]},{"id":":house:","symbol":"🏠","group":"travel","keywords":["home","house"]},{"id":":house_with_garden:","symbol":"🏡","group":"travel","keywords":["garden","home","house","house with garden"]},{"id":":office_building:","symbol":"🏢","group":"travel","keywords":["building","office building"]},{"id":":japanese_post_office:","symbol":"🏣","group":"travel","keywords":["Japanese","Japanese post office","post"]},{"id":":post_office:","symbol":"🏤","group":"travel","keywords":["European","post","post office"]},{"id":":hospital:","symbol":"🏥","group":"travel","keywords":["doctor","hospital","medicine"]},{"id":":bank:","symbol":"🏦","group":"travel","keywords":["bank","building"]},{"id":":hotel:","symbol":"🏨","group":"travel","keywords":["building","hotel"]},{"id":":love_hotel:","symbol":"🏩","group":"travel","keywords":["hotel","love"]},{"id":":convenience_store:","symbol":"🏪","group":"travel","keywords":["convenience","store"]},{"id":":school:","symbol":"🏫","group":"travel","keywords":["building","school"]},{"id":":department_store:","symbol":"🏬","group":"travel","keywords":["department","store"]},{"id":":factory:","symbol":"🏭","group":"travel","keywords":["building","factory"]},{"id":":japanese_castle:","symbol":"🏯","group":"travel","keywords":["castle","Japanese"]},{"id":":castle:","symbol":"🏰","group":"travel","keywords":["castle","European"]},{"id":":wedding:","symbol":"💒","group":"travel","keywords":["chapel","romance","wedding"]},{"id":":tokyo_tower:","symbol":"🗼","group":"travel","keywords":["Tokyo","tower"]},{"id":":statue_of_liberty:","symbol":"🗽","group":"travel","keywords":["liberty","statue","Statue of Liberty"]},{"id":":church:","symbol":"⛪","group":"travel","keywords":["Christian","church","cross","religion"]},{"id":":mosque:","symbol":"🕌","group":"travel","keywords":["islam","mosque","Muslim","religion"]},{"id":":synagogue:","symbol":"🕍","group":"travel","keywords":["Jew","Jewish","religion","synagogue","temple"]},{"id":":shinto_shrine:","symbol":"⛩","group":"travel","keywords":["religion","shinto","shrine"]},{"id":":kaaba:","symbol":"🕋","group":"travel","keywords":["islam","kaaba","Muslim","religion"]},{"id":":fountain:","symbol":"⛲","group":"travel","keywords":["fountain"]},{"id":":tent:","symbol":"⛺","group":"travel","keywords":["camping","tent"]},{"id":":foggy:","symbol":"🌁","group":"travel","keywords":["fog","foggy"]},{"id":":night_with_stars:","symbol":"🌃","group":"travel","keywords":["night","night with stars","star"]},{"id":":cityscape:","symbol":"🏙","group":"travel","keywords":["city","cityscape"]},{"id":":sunrise_over_mountains:","symbol":"🌄","group":"travel","keywords":["morning","mountain","sun","sunrise","sunrise over mountains"]},{"id":":sunrise:","symbol":"🌅","group":"travel","keywords":["morning","sun","sunrise"]},{"id":":cityscape_at_dusk:","symbol":"🌆","group":"travel","keywords":["city","cityscape at dusk","dusk","evening","landscape","sunset"]},{"id":":sunset:","symbol":"🌇","group":"travel","keywords":["dusk","sun","sunset"]},{"id":":bridge_at_night:","symbol":"🌉","group":"travel","keywords":["bridge","bridge at night","night"]},{"id":":hot_springs:","symbol":"♨","group":"travel","keywords":["hot","hotsprings","springs","steaming"]},{"id":":milky_way:","symbol":"🌌","group":"travel","keywords":["milky way","space"]},{"id":":carousel_horse:","symbol":"🎠","group":"travel","keywords":["carousel","horse"]},{"id":":ferris_wheel:","symbol":"🎡","group":"travel","keywords":["amusement park","ferris","wheel"]},{"id":":roller_coaster:","symbol":"🎢","group":"travel","keywords":["amusement park","coaster","roller"]},{"id":":barber_pole:","symbol":"💈","group":"travel","keywords":["barber","haircut","pole"]},{"id":":circus_tent:","symbol":"🎪","group":"travel","keywords":["circus","tent"]},{"id":":locomotive:","symbol":"🚂","group":"travel","keywords":["engine","locomotive","railway","steam","train"]},{"id":":railway_car:","symbol":"🚃","group":"travel","keywords":["car","electric","railway","train","tram","trolleybus"]},{"id":":high-speed_train:","symbol":"🚄","group":"travel","keywords":["high-speed train","railway","shinkansen","speed","train"]},{"id":":bullet_train:","symbol":"🚅","group":"travel","keywords":["bullet","railway","shinkansen","speed","train"]},{"id":":train:","symbol":"🚆","group":"travel","keywords":["railway","train"]},{"id":":metro:","symbol":"🚇","group":"travel","keywords":["metro","subway"]},{"id":":light_rail:","symbol":"🚈","group":"travel","keywords":["light rail","railway"]},{"id":":station:","symbol":"🚉","group":"travel","keywords":["railway","station","train"]},{"id":":tram:","symbol":"🚊","group":"travel","keywords":["tram","trolleybus"]},{"id":":monorail:","symbol":"🚝","group":"travel","keywords":["monorail","vehicle"]},{"id":":mountain_railway:","symbol":"🚞","group":"travel","keywords":["car","mountain","railway"]},{"id":":tram_car:","symbol":"🚋","group":"travel","keywords":["car","tram","trolleybus"]},{"id":":bus:","symbol":"🚌","group":"travel","keywords":["bus","vehicle"]},{"id":":oncoming_bus:","symbol":"🚍","group":"travel","keywords":["bus","oncoming"]},{"id":":trolleybus:","symbol":"🚎","group":"travel","keywords":["bus","tram","trolley","trolleybus"]},{"id":":minibus:","symbol":"🚐","group":"travel","keywords":["bus","minibus"]},{"id":":ambulance:","symbol":"🚑","group":"travel","keywords":["ambulance","vehicle"]},{"id":":fire_engine:","symbol":"🚒","group":"travel","keywords":["engine","fire","truck"]},{"id":":police_car:","symbol":"🚓","group":"travel","keywords":["car","patrol","police"]},{"id":":oncoming_police_car:","symbol":"🚔","group":"travel","keywords":["car","oncoming","police"]},{"id":":taxi:","symbol":"🚕","group":"travel","keywords":["taxi","vehicle"]},{"id":":oncoming_taxi:","symbol":"🚖","group":"travel","keywords":["oncoming","taxi"]},{"id":":automobile:","symbol":"🚗","group":"travel","keywords":["automobile","car"]},{"id":":oncoming_automobile:","symbol":"🚘","group":"travel","keywords":["automobile","car","oncoming"]},{"id":":sport_utility_vehicle:","symbol":"🚙","group":"travel","keywords":["recreational","sport utility","sport utility vehicle"]},{"id":":delivery_truck:","symbol":"🚚","group":"travel","keywords":["delivery","truck"]},{"id":":articulated_lorry:","symbol":"🚛","group":"travel","keywords":["articulated lorry","lorry","semi","truck"]},{"id":":tractor:","symbol":"🚜","group":"travel","keywords":["tractor","vehicle"]},{"id":":bicycle:","symbol":"🚲","group":"travel","keywords":["bicycle","bike"]},{"id":":kick_scooter:","symbol":"🛴","group":"travel","keywords":["kick","scooter"]},{"id":":motor_scooter:","symbol":"🛵","group":"travel","keywords":["motor","scooter"]},{"id":":bus_stop:","symbol":"🚏","group":"travel","keywords":["bus","busstop","stop"]},{"id":":motorway:","symbol":"🛣","group":"travel","keywords":["highway","motorway","road"]},{"id":":railway_track:","symbol":"🛤","group":"travel","keywords":["railway","railway track","train"]},{"id":":oil_drum:","symbol":"🛢","group":"travel","keywords":["drum","oil"]},{"id":":fuel_pump:","symbol":"⛽","group":"travel","keywords":["diesel","fuel","fuelpump","gas","pump","station"]},{"id":":police_car_light:","symbol":"🚨","group":"travel","keywords":["beacon","car","light","police","revolving"]},{"id":":horizontal_traffic_light:","symbol":"🚥","group":"travel","keywords":["horizontal traffic light","light","signal","traffic"]},{"id":":vertical_traffic_light:","symbol":"🚦","group":"travel","keywords":["light","signal","traffic","vertical traffic light"]},{"id":":stop_sign:","symbol":"🛑","group":"travel","keywords":["octagonal","sign","stop"]},{"id":":construction:","symbol":"🚧","group":"travel","keywords":["barrier","construction"]},{"id":":anchor:","symbol":"⚓","group":"travel","keywords":["anchor","ship","tool"]},{"id":":sailboat:","symbol":"⛵","group":"travel","keywords":["boat","resort","sailboat","sea","yacht"]},{"id":":canoe:","symbol":"🛶","group":"travel","keywords":["boat","canoe"]},{"id":":speedboat:","symbol":"🚤","group":"travel","keywords":["boat","speedboat"]},{"id":":passenger_ship:","symbol":"🛳","group":"travel","keywords":["passenger","ship"]},{"id":":ferry:","symbol":"⛴","group":"travel","keywords":["boat","ferry","passenger"]},{"id":":motor_boat:","symbol":"🛥","group":"travel","keywords":["boat","motor boat","motorboat"]},{"id":":ship:","symbol":"🚢","group":"travel","keywords":["boat","passenger","ship"]},{"id":":airplane:","symbol":"✈","group":"travel","keywords":["aeroplane","airplane"]},{"id":":small_airplane:","symbol":"🛩","group":"travel","keywords":["aeroplane","airplane","small airplane"]},{"id":":airplane_departure:","symbol":"🛫","group":"travel","keywords":["aeroplane","airplane","check-in","departure","departures"]},{"id":":airplane_arrival:","symbol":"🛬","group":"travel","keywords":["aeroplane","airplane","airplane arrival","arrivals","arriving","landing"]},{"id":":seat:","symbol":"💺","group":"travel","keywords":["chair","seat"]},{"id":":helicopter:","symbol":"🚁","group":"travel","keywords":["helicopter","vehicle"]},{"id":":suspension_railway:","symbol":"🚟","group":"travel","keywords":["railway","suspension"]},{"id":":mountain_cableway:","symbol":"🚠","group":"travel","keywords":["cable","gondola","mountain","mountain cableway"]},{"id":":aerial_tramway:","symbol":"🚡","group":"travel","keywords":["aerial","cable","car","gondola","tramway"]},{"id":":satellite:","symbol":"🛰","group":"travel","keywords":["satellite","space"]},{"id":":rocket:","symbol":"🚀","group":"travel","keywords":["rocket","space"]},{"id":":flying_saucer:","symbol":"🛸","group":"travel","keywords":["flying saucer","UFO"]},{"id":":bellhop_bell:","symbol":"🛎","group":"travel","keywords":["bell","bellhop","hotel"]},{"id":":hourglass_done:","symbol":"⌛","group":"travel","keywords":["hourglass done","sand","timer"]},{"id":":hourglass_not_done:","symbol":"⏳","group":"travel","keywords":["hourglass","hourglass not done","sand","timer"]},{"id":":watch:","symbol":"⌚","group":"travel","keywords":["clock","watch"]},{"id":":alarm_clock:","symbol":"⏰","group":"travel","keywords":["alarm","clock"]},{"id":":stopwatch:","symbol":"⏱","group":"travel","keywords":["clock","stopwatch"]},{"id":":timer_clock:","symbol":"⏲","group":"travel","keywords":["clock","timer"]},{"id":":mantelpiece_clock:","symbol":"🕰","group":"travel","keywords":["clock","mantelpiece clock"]},{"id":":twelve_o’clock:","symbol":"🕛","group":"travel","keywords":["00","12","12:00","clock","o’clock","twelve"]},{"id":":twelve-thirty:","symbol":"🕧","group":"travel","keywords":["12","12:30","clock","thirty","twelve","twelve-thirty"]},{"id":":one_o’clock:","symbol":"🕐","group":"travel","keywords":["00","1","1:00","clock","o’clock","one"]},{"id":":one-thirty:","symbol":"🕜","group":"travel","keywords":["1","1:30","clock","one","one-thirty","thirty"]},{"id":":two_o’clock:","symbol":"🕑","group":"travel","keywords":["00","2","2:00","clock","o’clock","two"]},{"id":":two-thirty:","symbol":"🕝","group":"travel","keywords":["2","2:30","clock","thirty","two","two-thirty"]},{"id":":three_o’clock:","symbol":"🕒","group":"travel","keywords":["00","3","3:00","clock","o’clock","three"]},{"id":":three-thirty:","symbol":"🕞","group":"travel","keywords":["3","3:30","clock","thirty","three","three-thirty"]},{"id":":four_o’clock:","symbol":"🕓","group":"travel","keywords":["00","4","4:00","clock","four","o’clock"]},{"id":":four-thirty:","symbol":"🕟","group":"travel","keywords":["4","4:30","clock","four","four-thirty","thirty"]},{"id":":five_o’clock:","symbol":"🕔","group":"travel","keywords":["00","5","5:00","clock","five","o’clock"]},{"id":":five-thirty:","symbol":"🕠","group":"travel","keywords":["5","5:30","clock","five","five-thirty","thirty"]},{"id":":six_o’clock:","symbol":"🕕","group":"travel","keywords":["00","6","6:00","clock","o’clock","six"]},{"id":":six-thirty:","symbol":"🕡","group":"travel","keywords":["6","6:30","clock","six","six-thirty","thirty"]},{"id":":seven_o’clock:","symbol":"🕖","group":"travel","keywords":["00","7","7:00","clock","o’clock","seven"]},{"id":":seven-thirty:","symbol":"🕢","group":"travel","keywords":["7","7:30","clock","seven","seven-thirty","thirty"]},{"id":":eight_o’clock:","symbol":"🕗","group":"travel","keywords":["00","8","8:00","clock","eight","o’clock"]},{"id":":eight-thirty:","symbol":"🕣","group":"travel","keywords":["8","8:30","clock","eight","eight-thirty","thirty"]},{"id":":nine_o’clock:","symbol":"🕘","group":"travel","keywords":["00","9","9:00","clock","nine","o’clock"]},{"id":":nine-thirty:","symbol":"🕤","group":"travel","keywords":["9","9:30","clock","nine","nine-thirty","thirty"]},{"id":":ten_o’clock:","symbol":"🕙","group":"travel","keywords":["00","10","10:00","clock","o’clock","ten"]},{"id":":ten-thirty:","symbol":"🕥","group":"travel","keywords":["10","10:30","clock","ten","ten-thirty","thirty"]},{"id":":eleven_o’clock:","symbol":"🕚","group":"travel","keywords":["00","11","11:00","clock","eleven","o’clock"]},{"id":":eleven-thirty:","symbol":"🕦","group":"travel","keywords":["11","11:30","clock","eleven","eleven-thirty","thirty"]},{"id":":new_moon:","symbol":"🌑","group":"travel","keywords":["dark","moon","new moon"]},{"id":":waxing_crescent_moon:","symbol":"🌒","group":"travel","keywords":["crescent","moon","waxing"]},{"id":":first_quarter_moon:","symbol":"🌓","group":"travel","keywords":["first quarter moon","moon","quarter"]},{"id":":waxing_gibbous_moon:","symbol":"🌔","group":"travel","keywords":["gibbous","moon","waxing"]},{"id":":full_moon:","symbol":"🌕","group":"travel","keywords":["full","moon"]},{"id":":waning_gibbous_moon:","symbol":"🌖","group":"travel","keywords":["gibbous","moon","waning"]},{"id":":last_quarter_moon:","symbol":"🌗","group":"travel","keywords":["last quarter moon","moon","quarter"]},{"id":":waning_crescent_moon:","symbol":"🌘","group":"travel","keywords":["crescent","moon","waning"]},{"id":":crescent_moon:","symbol":"🌙","group":"travel","keywords":["crescent","moon"]},{"id":":new_moon_face:","symbol":"🌚","group":"travel","keywords":["face","moon","new moon face"]},{"id":":first_quarter_moon_face:","symbol":"🌛","group":"travel","keywords":["face","first quarter moon face","moon","quarter"]},{"id":":last_quarter_moon_face:","symbol":"🌜","group":"travel","keywords":["face","last quarter moon face","moon","quarter"]},{"id":":thermometer:","symbol":"🌡","group":"travel","keywords":["thermometer","weather"]},{"id":":sun:","symbol":"☀","group":"travel","keywords":["bright","rays","sun","sunny"]},{"id":":full_moon_face:","symbol":"🌝","group":"travel","keywords":["bright","face","full","moon"]},{"id":":sun_with_face:","symbol":"🌞","group":"travel","keywords":["bright","face","sun","sun with face"]},{"id":":star:","symbol":"⭐","group":"travel","keywords":["star"]},{"id":":glowing_star:","symbol":"🌟","group":"travel","keywords":["glittery","glow","glowing star","shining","sparkle","star"]},{"id":":shooting_star:","symbol":"🌠","group":"travel","keywords":["falling","shooting","star"]},{"id":":cloud:","symbol":"☁️","group":"travel","keywords":["cloud","weather"]},{"id":":sun_behind_cloud:","symbol":"⛅","group":"travel","keywords":["cloud","sun","sun behind cloud"]},{"id":":cloud_with_lightning_and_rain:","symbol":"⛈️","group":"travel","keywords":["cloud","cloud with lightning and rain","rain","thunder"]},{"id":":sun_behind_small_cloud:","symbol":"🌤","group":"travel","keywords":["cloud","sun","sun behind small cloud"]},{"id":":sun_behind_large_cloud:","symbol":"🌥","group":"travel","keywords":["cloud","sun","sun behind large cloud"]},{"id":":sun_behind_rain_cloud:","symbol":"🌦","group":"travel","keywords":["cloud","rain","sun","sun behind rain cloud"]},{"id":":cloud_with_rain:","symbol":"🌧","group":"travel","keywords":["cloud","cloud with rain","rain"]},{"id":":cloud_with_snow:","symbol":"🌨","group":"travel","keywords":["cloud","cloud with snow","cold","snow"]},{"id":":cloud_with_lightning:","symbol":"🌩","group":"travel","keywords":["cloud","cloud with lightning","lightning"]},{"id":":tornado:","symbol":"🌪","group":"travel","keywords":["cloud","tornado","whirlwind"]},{"id":":fog:","symbol":"🌫","group":"travel","keywords":["cloud","fog"]},{"id":":wind_face:","symbol":"🌬","group":"travel","keywords":["blow","cloud","face","wind"]},{"id":":cyclone:","symbol":"🌀","group":"travel","keywords":["cyclone","dizzy","hurricane","twister","typhoon"]},{"id":":rainbow:","symbol":"🌈","group":"travel","keywords":["rain","rainbow"]},{"id":":closed_umbrella:","symbol":"🌂","group":"travel","keywords":["closed umbrella","clothing","rain","umbrella"]},{"id":":umbrella:","symbol":"☂","group":"travel","keywords":["clothing","rain","umbrella"]},{"id":":umbrella_with_rain_drops:","symbol":"☔","group":"travel","keywords":["clothing","drop","rain","umbrella","umbrella with rain drops"]},{"id":":umbrella_on_ground:","symbol":"⛱","group":"travel","keywords":["rain","sun","umbrella","umbrella on ground"]},{"id":":high_voltage:","symbol":"⚡","group":"travel","keywords":["danger","electric","high voltage","lightning","voltage","zap"]},{"id":":snowflake:","symbol":"❄","group":"travel","keywords":["cold","snow","snowflake"]},{"id":":snowman:","symbol":"☃","group":"travel","keywords":["cold","snow","snowman"]},{"id":":snowman_without_snow:","symbol":"⛄","group":"travel","keywords":["cold","snow","snowman","snowman without snow"]},{"id":":comet:","symbol":"☄","group":"travel","keywords":["comet","space"]},{"id":":fire:","symbol":"🔥","group":"travel","keywords":["fire","flame","tool"]},{"id":":droplet:","symbol":"💧","group":"travel","keywords":["cold","comic","drop","droplet","sweat"]},{"id":":water_wave:","symbol":"🌊","group":"travel","keywords":["ocean","water","wave"]},{"id":":jack-o-lantern:","symbol":"🎃","group":"activities","keywords":["celebration","halloween","jack","jack-o-lantern","lantern"]},{"id":":christmas_tree:","symbol":"🎄","group":"activities","keywords":["celebration","Christmas","tree"]},{"id":":fireworks:","symbol":"🎆","group":"activities","keywords":["celebration","fireworks"]},{"id":":sparkler:","symbol":"🎇","group":"activities","keywords":["celebration","fireworks","sparkle","sparkler"]},{"id":":sparkles:","symbol":"✨","group":"activities","keywords":["sparkle","sparkles","star"]},{"id":":balloon:","symbol":"🎈","group":"activities","keywords":["balloon","celebration"]},{"id":":party_popper:","symbol":"🎉","group":"activities","keywords":["celebration","party","popper","tada"]},{"id":":confetti_ball:","symbol":"🎊","group":"activities","keywords":["ball","celebration","confetti"]},{"id":":tanabata_tree:","symbol":"🎋","group":"activities","keywords":["banner","celebration","Japanese","tanabata tree","tree"]},{"id":":pine_decoration:","symbol":"🎍","group":"activities","keywords":["bamboo","celebration","Japanese","pine","pine decoration"]},{"id":":japanese_dolls:","symbol":"🎎","group":"activities","keywords":["celebration","doll","festival","Japanese","Japanese dolls"]},{"id":":carp_streamer:","symbol":"🎏","group":"activities","keywords":["carp","celebration","streamer"]},{"id":":wind_chime:","symbol":"🎐","group":"activities","keywords":["bell","celebration","chime","wind"]},{"id":":moon_viewing_ceremony:","symbol":"🎑","group":"activities","keywords":["celebration","ceremony","moon","moon viewing ceremony"]},{"id":":ribbon:","symbol":"🎀","group":"activities","keywords":["celebration","ribbon"]},{"id":":wrapped_gift:","symbol":"🎁","group":"activities","keywords":["box","celebration","gift","present","wrapped"]},{"id":":reminder_ribbon:","symbol":"🎗","group":"activities","keywords":["celebration","reminder","ribbon"]},{"id":":admission_tickets:","symbol":"🎟","group":"activities","keywords":["admission","admission tickets","ticket"]},{"id":":ticket:","symbol":"🎫","group":"activities","keywords":["admission","ticket"]},{"id":":military_medal:","symbol":"🎖","group":"activities","keywords":["celebration","medal","military"]},{"id":":trophy:","symbol":"🏆","group":"activities","keywords":["prize","trophy"]},{"id":":sports_medal:","symbol":"🏅","group":"activities","keywords":["medal","sports medal"]},{"id":":1st_place_medal:","symbol":"🥇","group":"activities","keywords":["1st place medal","first","gold","medal"]},{"id":":2nd_place_medal:","symbol":"🥈","group":"activities","keywords":["2nd place medal","medal","second","silver"]},{"id":":3rd_place_medal:","symbol":"🥉","group":"activities","keywords":["3rd place medal","bronze","medal","third"]},{"id":":soccer_ball:","symbol":"⚽","group":"activities","keywords":["ball","football","soccer"]},{"id":":baseball:","symbol":"⚾","group":"activities","keywords":["ball","baseball"]},{"id":":basketball:","symbol":"🏀","group":"activities","keywords":["ball","basketball","hoop"]},{"id":":volleyball:","symbol":"🏐","group":"activities","keywords":["ball","game","volleyball"]},{"id":":american_football:","symbol":"🏈","group":"activities","keywords":["american","ball","football"]},{"id":":rugby_football:","symbol":"🏉","group":"activities","keywords":["ball","football","rugby"]},{"id":":tennis:","symbol":"🎾","group":"activities","keywords":["ball","racquet","tennis"]},{"id":":bowling:","symbol":"🎳","group":"activities","keywords":["ball","bowling","game"]},{"id":":cricket_game:","symbol":"🏏","group":"activities","keywords":["ball","bat","cricket game","game"]},{"id":":field_hockey:","symbol":"🏑","group":"activities","keywords":["ball","field","game","hockey","stick"]},{"id":":ice_hockey:","symbol":"🏒","group":"activities","keywords":["game","hockey","ice","puck","stick"]},{"id":":ping_pong:","symbol":"🏓","group":"activities","keywords":["ball","bat","game","paddle","ping pong","table tennis"]},{"id":":badminton:","symbol":"🏸","group":"activities","keywords":["badminton","birdie","game","racquet","shuttlecock"]},{"id":":boxing_glove:","symbol":"🥊","group":"activities","keywords":["boxing","glove"]},{"id":":martial_arts_uniform:","symbol":"🥋","group":"activities","keywords":["judo","karate","martial arts","martial arts uniform","taekwondo","uniform"]},{"id":":goal_net:","symbol":"🥅","group":"activities","keywords":["goal","net"]},{"id":":flag_in_hole:","symbol":"⛳","group":"activities","keywords":["flag in hole","golf","hole"]},{"id":":ice_skate:","symbol":"⛸","group":"activities","keywords":["ice","skate"]},{"id":":fishing_pole:","symbol":"🎣","group":"activities","keywords":["fish","fishing pole","pole"]},{"id":":running_shirt:","symbol":"🎽","group":"activities","keywords":["athletics","running","sash","shirt"]},{"id":":skis:","symbol":"🎿","group":"activities","keywords":["ski","skis","snow"]},{"id":":sled:","symbol":"🛷","group":"activities","keywords":["sled","sledge","sleigh",""]},{"id":":curling_stone:","symbol":"🥌","group":"activities","keywords":["curling stone","game","rock"]},{"id":":direct_hit:","symbol":"🎯","group":"activities","keywords":["bullseye","dart","direct hit","game","hit","target"]},{"id":":pool_8_ball:","symbol":"🎱","group":"activities","keywords":["8","ball","billiard","eight","game","pool 8 ball"]},{"id":":crystal_ball:","symbol":"🔮","group":"activities","keywords":["ball","crystal","fairy tale","fantasy","fortune","tool"]},{"id":":video_game:","symbol":"🎮","group":"activities","keywords":["controller","game","video game"]},{"id":":joystick:","symbol":"🕹","group":"activities","keywords":["game","joystick","video game"]},{"id":":slot_machine:","symbol":"🎰","group":"activities","keywords":["game","slot","slot machine"]},{"id":":game_die:","symbol":"🎲","group":"activities","keywords":["dice","die","game"]},{"id":":spade_suit:","symbol":"♠","group":"activities","keywords":["card","game","spade suit"]},{"id":":heart_suit:","symbol":"♥","group":"activities","keywords":["card","game","heart suit"]},{"id":":diamond_suit:","symbol":"♦","group":"activities","keywords":["card","diamond suit","game"]},{"id":":club_suit:","symbol":"♣","group":"activities","keywords":["card","club suit","game"]},{"id":":joker:","symbol":"🃏","group":"activities","keywords":["card","game","joker","wildcard"]},{"id":":mahjong_red_dragon:","symbol":"🀄","group":"activities","keywords":["game","mahjong","mahjong red dragon","red"]},{"id":":flower_playing_cards:","symbol":"🎴","group":"activities","keywords":["card","flower","flower playing cards","game","Japanese","playing"]},{"id":":performing_arts:","symbol":"🎭","group":"activities","keywords":["art","mask","performing","performing arts","theater","theatre"]},{"id":":framed_picture:","symbol":"🖼","group":"activities","keywords":["art","frame","framed picture","museum","painting","picture"]},{"id":":artist_palette:","symbol":"🎨","group":"activities","keywords":["art","artist palette","museum","painting","palette"]},{"id":":muted_speaker:","symbol":"🔇","group":"objects","keywords":["mute","muted speaker","quiet","silent","speaker"]},{"id":":speaker_low_volume:","symbol":"🔈","group":"objects","keywords":["soft","speaker low volume"]},{"id":":speaker_medium_volume:","symbol":"🔉","group":"objects","keywords":["medium","speaker medium volume"]},{"id":":speaker_high_volume:","symbol":"🔊","group":"objects","keywords":["loud","speaker high volume"]},{"id":":loudspeaker:","symbol":"📢","group":"objects","keywords":["loud","loudspeaker","public address"]},{"id":":megaphone:","symbol":"📣","group":"objects","keywords":["cheering","megaphone"]},{"id":":postal_horn:","symbol":"📯","group":"objects","keywords":["horn","post","postal"]},{"id":":bell:","symbol":"🔔","group":"objects","keywords":["bell"]},{"id":":bell_with_slash:","symbol":"🔕","group":"objects","keywords":["bell","bell with slash","forbidden","mute","quiet","silent"]},{"id":":musical_score:","symbol":"🎼","group":"objects","keywords":["music","musical score","score"]},{"id":":musical_note:","symbol":"🎵","group":"objects","keywords":["music","musical note","note"]},{"id":":musical_notes:","symbol":"🎶","group":"objects","keywords":["music","musical notes","note","notes"]},{"id":":studio_microphone:","symbol":"🎙","group":"objects","keywords":["mic","microphone","music","studio"]},{"id":":level_slider:","symbol":"🎚","group":"objects","keywords":["level","music","slider"]},{"id":":control_knobs:","symbol":"🎛","group":"objects","keywords":["control","knobs","music"]},{"id":":microphone:","symbol":"🎤","group":"objects","keywords":["karaoke","mic","microphone"]},{"id":":headphone:","symbol":"🎧","group":"objects","keywords":["earbud","headphone"]},{"id":":radio:","symbol":"📻","group":"objects","keywords":["radio","video"]},{"id":":saxophone:","symbol":"🎷","group":"objects","keywords":["instrument","music","sax","saxophone"]},{"id":":guitar:","symbol":"🎸","group":"objects","keywords":["guitar","instrument","music"]},{"id":":musical_keyboard:","symbol":"🎹","group":"objects","keywords":["instrument","keyboard","music","musical keyboard","piano"]},{"id":":trumpet:","symbol":"🎺","group":"objects","keywords":["instrument","music","trumpet"]},{"id":":violin:","symbol":"🎻","group":"objects","keywords":["instrument","music","violin"]},{"id":":drum:","symbol":"🥁","group":"objects","keywords":["drum","drumsticks","music"]},{"id":":mobile_phone:","symbol":"📱","group":"objects","keywords":["cell","mobile","phone","telephone"]},{"id":":mobile_phone_with_arrow:","symbol":"📲","group":"objects","keywords":["arrow","cell","mobile","mobile phone with arrow","phone","receive"]},{"id":":telephone:","symbol":"☎","group":"objects","keywords":["phone","telephone"]},{"id":":telephone_receiver:","symbol":"📞","group":"objects","keywords":["phone","receiver","telephone"]},{"id":":pager:","symbol":"📟","group":"objects","keywords":["pager"]},{"id":":fax_machine:","symbol":"📠","group":"objects","keywords":["fax","fax machine"]},{"id":":battery:","symbol":"🔋","group":"objects","keywords":["battery"]},{"id":":electric_plug:","symbol":"🔌","group":"objects","keywords":["electric","electricity","plug"]},{"id":":laptop_computer:","symbol":"💻","group":"objects","keywords":["computer","laptop computer","pc","personal"]},{"id":":desktop_computer:","symbol":"🖥","group":"objects","keywords":["computer","desktop"]},{"id":":printer:","symbol":"🖨","group":"objects","keywords":["computer","printer"]},{"id":":keyboard:","symbol":"⌨","group":"objects","keywords":["computer","keyboard"]},{"id":":computer_mouse:","symbol":"🖱","group":"objects","keywords":["computer","computer mouse"]},{"id":":trackball:","symbol":"🖲","group":"objects","keywords":["computer","trackball"]},{"id":":computer_disk:","symbol":"💽","group":"objects","keywords":["computer","disk","minidisk","optical"]},{"id":":floppy_disk:","symbol":"💾","group":"objects","keywords":["computer","disk","floppy"]},{"id":":optical_disk:","symbol":"💿","group":"objects","keywords":["cd","computer","disk","optical"]},{"id":":dvd:","symbol":"📀","group":"objects","keywords":["blu-ray","computer","disk","dvd","optical"]},{"id":":movie_camera:","symbol":"🎥","group":"objects","keywords":["camera","cinema","movie"]},{"id":":film_frames:","symbol":"🎞","group":"objects","keywords":["cinema","film","frames","movie"]},{"id":":film_projector:","symbol":"📽","group":"objects","keywords":["cinema","film","movie","projector","video"]},{"id":":clapper_board:","symbol":"🎬","group":"objects","keywords":["clapper","clapper board","movie"]},{"id":":television:","symbol":"📺","group":"objects","keywords":["television","tv","video"]},{"id":":camera:","symbol":"📷","group":"objects","keywords":["camera","video"]},{"id":":camera_with_flash:","symbol":"📸","group":"objects","keywords":["camera","camera with flash","flash","video"]},{"id":":video_camera:","symbol":"📹","group":"objects","keywords":["camera","video"]},{"id":":videocassette:","symbol":"📼","group":"objects","keywords":["tape","vhs","video","videocassette"]},{"id":":magnifying_glass_tilted_left:","symbol":"🔍","group":"objects","keywords":["glass","magnifying","magnifying glass tilted left","search","tool"]},{"id":":magnifying_glass_tilted_right:","symbol":"🔎","group":"objects","keywords":["glass","magnifying","magnifying glass tilted right","search","tool"]},{"id":":candle:","symbol":"🕯","group":"objects","keywords":["candle","light"]},{"id":":light_bulb:","symbol":"💡","group":"objects","keywords":["bulb","comic","electric","idea","light"]},{"id":":flashlight:","symbol":"🔦","group":"objects","keywords":["electric","flashlight","light","tool","torch"]},{"id":":red_paper_lantern:","symbol":"🏮","group":"objects","keywords":["bar","lantern","light","red","red paper lantern"]},{"id":":notebook_with_decorative_cover:","symbol":"📔","group":"objects","keywords":["book","cover","decorated","notebook","notebook with decorative cover"]},{"id":":closed_book:","symbol":"📕","group":"objects","keywords":["book","closed"]},{"id":":open_book:","symbol":"📖","group":"objects","keywords":["book","open"]},{"id":":green_book:","symbol":"📗","group":"objects","keywords":["book","green"]},{"id":":blue_book:","symbol":"📘","group":"objects","keywords":["blue","book"]},{"id":":orange_book:","symbol":"📙","group":"objects","keywords":["book","orange"]},{"id":":books:","symbol":"📚","group":"objects","keywords":["book","books"]},{"id":":notebook:","symbol":"📓","group":"objects","keywords":["notebook"]},{"id":":ledger:","symbol":"📒","group":"objects","keywords":["ledger","notebook"]},{"id":":page_with_curl:","symbol":"📃","group":"objects","keywords":["curl","document","page","page with curl"]},{"id":":scroll:","symbol":"📜","group":"objects","keywords":["paper","scroll"]},{"id":":page_facing_up:","symbol":"📄","group":"objects","keywords":["document","page","page facing up"]},{"id":":newspaper:","symbol":"📰","group":"objects","keywords":["news","newspaper","paper"]},{"id":":rolled-up_newspaper:","symbol":"🗞","group":"objects","keywords":["news","newspaper","paper","rolled","rolled-up newspaper"]},{"id":":bookmark_tabs:","symbol":"📑","group":"objects","keywords":["bookmark","mark","marker","tabs"]},{"id":":bookmark:","symbol":"🔖","group":"objects","keywords":["bookmark","mark"]},{"id":":label:","symbol":"🏷","group":"objects","keywords":["label"]},{"id":":money_bag:","symbol":"💰","group":"objects","keywords":["bag","dollar","money","moneybag"]},{"id":":yen_banknote:","symbol":"💴","group":"objects","keywords":["banknote","bill","currency","money","note","yen"]},{"id":":dollar_banknote:","symbol":"💵","group":"objects","keywords":["banknote","bill","currency","dollar","money","note"]},{"id":":euro_banknote:","symbol":"💶","group":"objects","keywords":["banknote","bill","currency","euro","money","note"]},{"id":":pound_banknote:","symbol":"💷","group":"objects","keywords":["banknote","bill","currency","money","note","pound"]},{"id":":money_with_wings:","symbol":"💸","group":"objects","keywords":["banknote","bill","fly","money","money with wings","wings"]},{"id":":credit_card:","symbol":"💳","group":"objects","keywords":["card","credit","money"]},{"id":":chart_increasing_with_yen:","symbol":"💹","group":"objects","keywords":["chart","chart increasing with yen","graph","growth","money","yen"]},{"id":":currency_exchange:","symbol":"💱","group":"objects","keywords":["bank","currency","exchange","money"]},{"id":":heavy_dollar_sign:","symbol":"💲","group":"objects","keywords":["currency","dollar","heavy dollar sign","money"]},{"id":":envelope:","symbol":"✉","group":"objects","keywords":["email","envelope","letter"]},{"id":":e-mail:","symbol":"📧","group":"objects","keywords":["e-mail","email","letter","mail"]},{"id":":incoming_envelope:","symbol":"📨","group":"objects","keywords":["e-mail","email","envelope","incoming","letter","receive"]},{"id":":envelope_with_arrow:","symbol":"📩","group":"objects","keywords":["arrow","e-mail","email","envelope","envelope with arrow","outgoing"]},{"id":":outbox_tray:","symbol":"📤","group":"objects","keywords":["box","letter","mail","outbox","sent","tray"]},{"id":":inbox_tray:","symbol":"📥","group":"objects","keywords":["box","inbox","letter","mail","receive","tray"]},{"id":":package:","symbol":"📦","group":"objects","keywords":["box","package","parcel"]},{"id":":closed_mailbox_with_raised_flag:","symbol":"📫","group":"objects","keywords":["closed","closed mailbox with raised flag","mail","mailbox","postbox"]},{"id":":closed_mailbox_with_lowered_flag:","symbol":"📪","group":"objects","keywords":["closed","closed mailbox with lowered flag","lowered","mail","mailbox","postbox"]},{"id":":open_mailbox_with_raised_flag:","symbol":"📬","group":"objects","keywords":["mail","mailbox","open","open mailbox with raised flag","postbox"]},{"id":":open_mailbox_with_lowered_flag:","symbol":"📭","group":"objects","keywords":["lowered","mail","mailbox","open","open mailbox with lowered flag","postbox"]},{"id":":postbox:","symbol":"📮","group":"objects","keywords":["mail","mailbox","postbox"]},{"id":":ballot_box_with_ballot:","symbol":"🗳","group":"objects","keywords":["ballot","ballot box with ballot","box"]},{"id":":pencil:","symbol":"✏","group":"objects","keywords":["pencil"]},{"id":":black_nib:","symbol":"✒","group":"objects","keywords":["black nib","nib","pen"]},{"id":":fountain_pen:","symbol":"🖋","group":"objects","keywords":["fountain","pen"]},{"id":":pen:","symbol":"🖊","group":"objects","keywords":["ballpoint","pen"]},{"id":":paintbrush:","symbol":"🖌","group":"objects","keywords":["paintbrush","painting"]},{"id":":crayon:","symbol":"🖍","group":"objects","keywords":["crayon"]},{"id":":memo:","symbol":"📝","group":"objects","keywords":["memo","pencil"]},{"id":":briefcase:","symbol":"💼","group":"objects","keywords":["briefcase"]},{"id":":file_folder:","symbol":"📁","group":"objects","keywords":["file","folder"]},{"id":":open_file_folder:","symbol":"📂","group":"objects","keywords":["file","folder","open"]},{"id":":card_index_dividers:","symbol":"🗂","group":"objects","keywords":["card","dividers","index"]},{"id":":calendar:","symbol":"📅","group":"objects","keywords":["calendar","date"]},{"id":":tear-off_calendar:","symbol":"📆","group":"objects","keywords":["calendar","tear-off calendar"]},{"id":":spiral_notepad:","symbol":"🗒","group":"objects","keywords":["note","pad","spiral","spiral notepad"]},{"id":":spiral_calendar:","symbol":"🗓","group":"objects","keywords":["calendar","pad","spiral"]},{"id":":card_index:","symbol":"📇","group":"objects","keywords":["card","index","rolodex"]},{"id":":chart_increasing:","symbol":"📈","group":"objects","keywords":["chart","chart increasing","graph","growth","trend","upward"]},{"id":":chart_decreasing:","symbol":"📉","group":"objects","keywords":["chart","chart decreasing","down","graph","trend"]},{"id":":bar_chart:","symbol":"📊","group":"objects","keywords":["bar","chart","graph"]},{"id":":clipboard:","symbol":"📋","group":"objects","keywords":["clipboard"]},{"id":":pushpin:","symbol":"📌","group":"objects","keywords":["pin","pushpin"]},{"id":":round_pushpin:","symbol":"📍","group":"objects","keywords":["pin","pushpin","round pushpin"]},{"id":":paperclip:","symbol":"📎","group":"objects","keywords":["paperclip"]},{"id":":linked_paperclips:","symbol":"🖇","group":"objects","keywords":["link","linked paperclips","paperclip"]},{"id":":straight_ruler:","symbol":"📏","group":"objects","keywords":["ruler","straight edge","straight ruler"]},{"id":":triangular_ruler:","symbol":"📐","group":"objects","keywords":["ruler","set","triangle","triangular ruler"]},{"id":":scissors:","symbol":"✂","group":"objects","keywords":["cutting","scissors","tool"]},{"id":":card_file_box:","symbol":"🗃","group":"objects","keywords":["box","card","file"]},{"id":":file_cabinet:","symbol":"🗄","group":"objects","keywords":["cabinet","file","filing"]},{"id":":wastebasket:","symbol":"🗑","group":"objects","keywords":["wastebasket"]},{"id":":locked:","symbol":"🔒","group":"objects","keywords":["closed","locked"]},{"id":":unlocked:","symbol":"🔓","group":"objects","keywords":["lock","open","unlock","unlocked"]},{"id":":locked_with_pen:","symbol":"🔏","group":"objects","keywords":["ink","lock","locked with pen","nib","pen","privacy"]},{"id":":locked_with_key:","symbol":"🔐","group":"objects","keywords":["closed","key","lock","locked with key","secure"]},{"id":":key:","symbol":"🔑","group":"objects","keywords":["key","lock","password"]},{"id":":old_key:","symbol":"🗝","group":"objects","keywords":["clue","key","lock","old"]},{"id":":hammer:","symbol":"🔨","group":"objects","keywords":["hammer","tool"]},{"id":":pick:","symbol":"⛏","group":"objects","keywords":["mining","pick","tool"]},{"id":":hammer_and_pick:","symbol":"⚒","group":"objects","keywords":["hammer","hammer and pick","pick","tool"]},{"id":":hammer_and_wrench:","symbol":"🛠","group":"objects","keywords":["hammer","hammer and wrench","spanner","tool","wrench"]},{"id":":dagger:","symbol":"🗡","group":"objects","keywords":["dagger","knife","weapon"]},{"id":":crossed_swords:","symbol":"⚔","group":"objects","keywords":["crossed","swords","weapon"]},{"id":":pistol:","symbol":"🔫","group":"objects","keywords":["gun","handgun","pistol","revolver","tool","weapon"]},{"id":":bow_and_arrow:","symbol":"🏹","group":"objects","keywords":["archer","arrow","bow","bow and arrow","Sagittarius","zodiac"]},{"id":":shield:","symbol":"🛡","group":"objects","keywords":["shield","weapon"]},{"id":":wrench:","symbol":"🔧","group":"objects","keywords":["spanner","tool","wrench"]},{"id":":nut_and_bolt:","symbol":"🔩","group":"objects","keywords":["bolt","nut","nut and bolt","tool"]},{"id":":gear:","symbol":"⚙","group":"objects","keywords":["cog","cogwheel","gear","tool"]},{"id":":clamp:","symbol":"🗜","group":"objects","keywords":["clamp","compress","tool","vice"]},{"id":":balance_scale:","symbol":"⚖","group":"objects","keywords":["balance","justice","Libra","scale","zodiac"]},{"id":":link:","symbol":"🔗","group":"objects","keywords":["link"]},{"id":":chains:","symbol":"⛓","group":"objects","keywords":["chain","chains"]},{"id":":alembic:","symbol":"⚗","group":"objects","keywords":["alembic","chemistry","tool"]},{"id":":microscope:","symbol":"🔬","group":"objects","keywords":["microscope","science","tool"]},{"id":":telescope:","symbol":"🔭","group":"objects","keywords":["science","telescope","tool"]},{"id":":satellite_antenna:","symbol":"📡","group":"objects","keywords":["antenna","dish","satellite"]},{"id":":syringe:","symbol":"💉","group":"objects","keywords":["medicine","needle","shot","sick","syringe"]},{"id":":pill:","symbol":"💊","group":"objects","keywords":["doctor","medicine","pill","sick"]},{"id":":door:","symbol":"🚪","group":"objects","keywords":["door"]},{"id":":bed:","symbol":"🛏","group":"objects","keywords":["bed","hotel","sleep"]},{"id":":couch_and_lamp:","symbol":"🛋","group":"objects","keywords":["couch","couch and lamp","hotel","lamp"]},{"id":":toilet:","symbol":"🚽","group":"objects","keywords":["toilet"]},{"id":":shower:","symbol":"🚿","group":"objects","keywords":["shower","water"]},{"id":":bathtub:","symbol":"🛁","group":"objects","keywords":["bath","bathtub"]},{"id":":shopping_cart:","symbol":"🛒","group":"objects","keywords":["cart","shopping","trolley"]},{"id":":cigarette:","symbol":"🚬","group":"objects","keywords":["cigarette","smoking"]},{"id":":coffin:","symbol":"⚰","group":"objects","keywords":["coffin","death"]},{"id":":funeral_urn:","symbol":"⚱","group":"objects","keywords":["ashes","death","funeral","urn"]},{"id":":moai:","symbol":"🗿","group":"objects","keywords":["face","moai","moyai","statue"]},{"id":":atm_sign:","symbol":"🏧","group":"symbols","keywords":["atm","ATM sign","automated","bank","teller"]},{"id":":litter_in_bin_sign:","symbol":"🚮","group":"symbols","keywords":["litter","litter bin","litter in bin sign"]},{"id":":potable_water:","symbol":"🚰","group":"symbols","keywords":["drinking","potable","water"]},{"id":":wheelchair_symbol:","symbol":"♿","group":"symbols","keywords":["access","wheelchair symbol"]},{"id":":men’s_room:","symbol":"🚹","group":"symbols","keywords":["lavatory","man","men’s room","restroom","wc"]},{"id":":women’s_room:","symbol":"🚺","group":"symbols","keywords":["lavatory","restroom","wc","woman","women’s room"]},{"id":":restroom:","symbol":"🚻","group":"symbols","keywords":["lavatory","restroom","WC"]},{"id":":baby_symbol:","symbol":"🚼","group":"symbols","keywords":["baby","baby symbol","changing"]},{"id":":water_closet:","symbol":"🚾","group":"symbols","keywords":["closet","lavatory","restroom","water","wc"]},{"id":":passport_control:","symbol":"🛂","group":"symbols","keywords":["control","passport"]},{"id":":customs:","symbol":"🛃","group":"symbols","keywords":["customs"]},{"id":":baggage_claim:","symbol":"🛄","group":"symbols","keywords":["baggage","claim"]},{"id":":left_luggage:","symbol":"🛅","group":"symbols","keywords":["baggage","left luggage","locker","luggage"]},{"id":":warning:","symbol":"⚠","group":"symbols","keywords":["warning"]},{"id":":children_crossing:","symbol":"🚸","group":"symbols","keywords":["child","children crossing","crossing","pedestrian","traffic"]},{"id":":no_entry:","symbol":"⛔","group":"symbols","keywords":["entry","forbidden","no","not","prohibited","traffic"]},{"id":":prohibited:","symbol":"🚫","group":"symbols","keywords":["entry","forbidden","no","not","prohibited"]},{"id":":no_bicycles:","symbol":"🚳","group":"symbols","keywords":["bicycle","bike","forbidden","no","no bicycles","prohibited"]},{"id":":no_smoking:","symbol":"🚭","group":"symbols","keywords":["forbidden","no","not","prohibited","smoking"]},{"id":":no_littering:","symbol":"🚯","group":"symbols","keywords":["forbidden","litter","no","no littering","not","prohibited"]},{"id":":non-potable_water:","symbol":"🚱","group":"symbols","keywords":["non-drinking","non-potable","water"]},{"id":":no_pedestrians:","symbol":"🚷","group":"symbols","keywords":["forbidden","no","no pedestrians","not","pedestrian","prohibited"]},{"id":":no_mobile_phones:","symbol":"📵","group":"symbols","keywords":["cell","forbidden","mobile","no","no mobile phones","phone"]},{"id":":no_one_under_eighteen:","symbol":"🔞","group":"symbols","keywords":["18","age restriction","eighteen","no one under eighteen","prohibited","underage"]},{"id":":radioactive:","symbol":"☢","group":"symbols","keywords":["radioactive","sign"]},{"id":":biohazard:","symbol":"☣","group":"symbols","keywords":["biohazard","sign"]},{"id":":up_arrow:","symbol":"⬆","group":"symbols","keywords":["arrow","cardinal","direction","north","up arrow"]},{"id":":up-right_arrow:","symbol":"↗","group":"symbols","keywords":["arrow","direction","intercardinal","northeast","up-right arrow"]},{"id":":right_arrow:","symbol":"➡","group":"symbols","keywords":["arrow","cardinal","direction","east","right arrow"]},{"id":":down-right_arrow:","symbol":"↘","group":"symbols","keywords":["arrow","direction","down-right arrow","intercardinal","southeast"]},{"id":":down_arrow:","symbol":"⬇","group":"symbols","keywords":["arrow","cardinal","direction","down","south"]},{"id":":down-left_arrow:","symbol":"↙","group":"symbols","keywords":["arrow","direction","down-left arrow","intercardinal","southwest"]},{"id":":left_arrow:","symbol":"⬅","group":"symbols","keywords":["arrow","cardinal","direction","left arrow","west"]},{"id":":up-left_arrow:","symbol":"↖","group":"symbols","keywords":["arrow","direction","intercardinal","northwest","up-left arrow"]},{"id":":up-down_arrow:","symbol":"↕","group":"symbols","keywords":["arrow","up-down arrow"]},{"id":":left-right_arrow:","symbol":"↔","group":"symbols","keywords":["arrow","left-right arrow"]},{"id":":right_arrow_curving_left:","symbol":"↩","group":"symbols","keywords":["arrow","right arrow curving left"]},{"id":":left_arrow_curving_right:","symbol":"↪","group":"symbols","keywords":["arrow","left arrow curving right"]},{"id":":right_arrow_curving_up:","symbol":"⤴","group":"symbols","keywords":["arrow","right arrow curving up"]},{"id":":right_arrow_curving_down:","symbol":"⤵","group":"symbols","keywords":["arrow","down","right arrow curving down"]},{"id":":clockwise_vertical_arrows:","symbol":"🔃","group":"symbols","keywords":["arrow","clockwise","clockwise vertical arrows","reload"]},{"id":":counterclockwise_arrows_button:","symbol":"🔄","group":"symbols","keywords":["anticlockwise","arrow","counterclockwise","counterclockwise arrows button","withershins"]},{"id":":back_arrow:","symbol":"🔙","group":"symbols","keywords":["arrow","back","BACK arrow"]},{"id":":end_arrow:","symbol":"🔚","group":"symbols","keywords":["arrow","end","END arrow"]},{"id":":on!_arrow:","symbol":"🔛","group":"symbols","keywords":["arrow","mark","on","ON! arrow"]},{"id":":soon_arrow:","symbol":"🔜","group":"symbols","keywords":["arrow","soon","SOON arrow"]},{"id":":top_arrow:","symbol":"🔝","group":"symbols","keywords":["arrow","top","TOP arrow","up"]},{"id":":place_of_worship:","symbol":"🛐","group":"symbols","keywords":["place of worship","religion","worship"]},{"id":":atom_symbol:","symbol":"⚛","group":"symbols","keywords":["atheist","atom","atom symbol"]},{"id":":om:","symbol":"🕉","group":"symbols","keywords":["Hindu","om","religion"]},{"id":":star_of_david:","symbol":"✡","group":"symbols","keywords":["David","Jew","Jewish","religion","star","star of David"]},{"id":":wheel_of_dharma:","symbol":"☸","group":"symbols","keywords":["Buddhist","dharma","religion","wheel","wheel of dharma"]},{"id":":yin_yang:","symbol":"☯","group":"symbols","keywords":["religion","tao","taoist","yang","yin"]},{"id":":latin_cross:","symbol":"✝","group":"symbols","keywords":["Christian","cross","latin cross","religion"]},{"id":":orthodox_cross:","symbol":"☦","group":"symbols","keywords":["Christian","cross","orthodox cross","religion"]},{"id":":star_and_crescent:","symbol":"☪","group":"symbols","keywords":["islam","Muslim","religion","star and crescent"]},{"id":":peace_symbol:","symbol":"☮","group":"symbols","keywords":["peace","peace symbol"]},{"id":":menorah:","symbol":"🕎","group":"symbols","keywords":["candelabrum","candlestick","menorah","religion"]},{"id":":dotted_six-pointed_star:","symbol":"🔯","group":"symbols","keywords":["dotted six-pointed star","fortune","star"]},{"id":":aries:","symbol":"♈","group":"symbols","keywords":["Aries","ram","zodiac"]},{"id":":taurus:","symbol":"♉","group":"symbols","keywords":["bull","ox","Taurus","zodiac"]},{"id":":gemini:","symbol":"♊","group":"symbols","keywords":["Gemini","twins","zodiac"]},{"id":":cancer:","symbol":"♋","group":"symbols","keywords":["Cancer","crab","zodiac"]},{"id":":leo:","symbol":"♌","group":"symbols","keywords":["Leo","lion","zodiac"]},{"id":":virgo:","symbol":"♍","group":"symbols","keywords":["Virgo","zodiac"]},{"id":":libra:","symbol":"♎","group":"symbols","keywords":["balance","justice","Libra","scales","zodiac"]},{"id":":scorpio:","symbol":"♏","group":"symbols","keywords":["Scorpio","scorpion","scorpius","zodiac"]},{"id":":sagittarius:","symbol":"♐","group":"symbols","keywords":["archer","Sagittarius","zodiac"]},{"id":":capricorn:","symbol":"♑","group":"symbols","keywords":["Capricorn","goat","zodiac"]},{"id":":aquarius:","symbol":"♒","group":"symbols","keywords":["Aquarius","bearer","water","zodiac"]},{"id":":pisces:","symbol":"♓","group":"symbols","keywords":["fish","Pisces","zodiac"]},{"id":":ophiuchus:","symbol":"⛎","group":"symbols","keywords":["bearer","Ophiuchus","serpent","snake","zodiac"]},{"id":":shuffle_tracks_button:","symbol":"🔀","group":"symbols","keywords":["arrow","crossed","shuffle tracks button"]},{"id":":repeat_button:","symbol":"🔁","group":"symbols","keywords":["arrow","clockwise","repeat","repeat button"]},{"id":":repeat_single_button:","symbol":"🔂","group":"symbols","keywords":["arrow","clockwise","once","repeat single button"]},{"id":":play_button:","symbol":"▶","group":"symbols","keywords":["arrow","play","play button","right","triangle"]},{"id":":fast-forward_button:","symbol":"⏩","group":"symbols","keywords":["arrow","double","fast","fast-forward button","forward"]},{"id":":next_track_button:","symbol":"⏭","group":"symbols","keywords":["arrow","next scene","next track","next track button","triangle"]},{"id":":play_or_pause_button:","symbol":"⏯","group":"symbols","keywords":["arrow","pause","play","play or pause button","right","triangle"]},{"id":":reverse_button:","symbol":"◀","group":"symbols","keywords":["arrow","left","reverse","reverse button","triangle"]},{"id":":fast_reverse_button:","symbol":"⏪","group":"symbols","keywords":["arrow","double","fast reverse button","rewind"]},{"id":":last_track_button:","symbol":"⏮","group":"symbols","keywords":["arrow","last track button","previous scene","previous track","triangle"]},{"id":":upwards_button:","symbol":"🔼","group":"symbols","keywords":["arrow","button","red","upwards button"]},{"id":":fast_up_button:","symbol":"⏫","group":"symbols","keywords":["arrow","double","fast up button"]},{"id":":downwards_button:","symbol":"🔽","group":"symbols","keywords":["arrow","button","down","downwards button","red"]},{"id":":fast_down_button:","symbol":"⏬","group":"symbols","keywords":["arrow","double","down","fast down button"]},{"id":":pause_button:","symbol":"⏸","group":"symbols","keywords":["bar","double","pause","pause button","vertical"]},{"id":":stop_button:","symbol":"⏹","group":"symbols","keywords":["square","stop","stop button"]},{"id":":record_button:","symbol":"⏺","group":"symbols","keywords":["circle","record","record button"]},{"id":":eject_button:","symbol":"⏏","group":"symbols","keywords":["eject","eject button"]},{"id":":cinema:","symbol":"🎦","group":"symbols","keywords":["camera","cinema","film","movie"]},{"id":":dim_button:","symbol":"🔅","group":"symbols","keywords":["brightness","dim","dim button","low"]},{"id":":bright_button:","symbol":"🔆","group":"symbols","keywords":["bright","bright button","brightness"]},{"id":":antenna_bars:","symbol":"📶","group":"symbols","keywords":["antenna","antenna bars","bar","cell","mobile","phone"]},{"id":":vibration_mode:","symbol":"📳","group":"symbols","keywords":["cell","mobile","mode","phone","telephone","vibration"]},{"id":":mobile_phone_off:","symbol":"📴","group":"symbols","keywords":["cell","mobile","off","phone","telephone"]},{"id":":female_sign:","symbol":"♀","group":"symbols","keywords":["female sign","woman"]},{"id":":male_sign:","symbol":"♂","group":"symbols","keywords":["male sign","man"]},{"id":":medical_symbol:","symbol":"⚕","group":"symbols","keywords":["aesculapius","medical symbol","medicine","staff"]},{"id":":recycling_symbol:","symbol":"♻","group":"symbols","keywords":["recycle","recycling symbol"]},{"id":":fleur-de-lis:","symbol":"⚜","group":"symbols","keywords":["fleur-de-lis"]},{"id":":trident_emblem:","symbol":"🔱","group":"symbols","keywords":["anchor","emblem","ship","tool","trident"]},{"id":":name_badge:","symbol":"📛","group":"symbols","keywords":["badge","name"]},{"id":":japanese_symbol_for_beginner:","symbol":"🔰","group":"symbols","keywords":["beginner","chevron","Japanese","Japanese symbol for beginner","leaf"]},{"id":":heavy_large_circle:","symbol":"⭕","group":"symbols","keywords":["circle","heavy large circle","o"]},{"id":":white_heavy_check_mark:","symbol":"✅","group":"symbols","keywords":["check","mark","white heavy check mark"]},{"id":":ballot_box_with_check:","symbol":"☑","group":"symbols","keywords":["ballot","ballot box with check","box","check"]},{"id":":heavy_check_mark:","symbol":"✔","group":"symbols","keywords":["check","heavy check mark","mark"]},{"id":":heavy_multiplication_x:","symbol":"✖","group":"symbols","keywords":["cancel","heavy multiplication x","multiplication","multiply","x"]},{"id":":cross_mark:","symbol":"❌","group":"symbols","keywords":["cancel","cross mark","mark","multiplication","multiply","x"]},{"id":":cross_mark_button:","symbol":"❎","group":"symbols","keywords":["cross mark button","mark","square"]},{"id":":heavy_plus_sign:","symbol":"➕","group":"symbols","keywords":["heavy plus sign","math","plus"]},{"id":":heavy_minus_sign:","symbol":"➖","group":"symbols","keywords":["heavy minus sign","math","minus"]},{"id":":heavy_division_sign:","symbol":"➗","group":"symbols","keywords":["division","heavy division sign","math"]},{"id":":curly_loop:","symbol":"➰","group":"symbols","keywords":["curl","curly loop","loop"]},{"id":":double_curly_loop:","symbol":"➿","group":"symbols","keywords":["curl","double","double curly loop","loop"]},{"id":":part_alternation_mark:","symbol":"〽","group":"symbols","keywords":["mark","part","part alternation mark"]},{"id":":eight-spoked_asterisk:","symbol":"✳","group":"symbols","keywords":["asterisk","eight-spoked asterisk"]},{"id":":eight-pointed_star:","symbol":"✴","group":"symbols","keywords":["eight-pointed star","star"]},{"id":":sparkle:","symbol":"❇","group":"symbols","keywords":["sparkle"]},{"id":":double_exclamation_mark:","symbol":"‼","group":"symbols","keywords":["bangbang","double exclamation mark","exclamation","mark","punctuation"]},{"id":":exclamation_question_mark:","symbol":"⁉","group":"symbols","keywords":["exclamation","interrobang","mark","punctuation","question"]},{"id":":question_mark:","symbol":"❓","group":"symbols","keywords":["mark","punctuation","question"]},{"id":":white_question_mark:","symbol":"❔","group":"symbols","keywords":["mark","outlined","punctuation","question","white question mark"]},{"id":":white_exclamation_mark:","symbol":"❕","group":"symbols","keywords":["exclamation","mark","outlined","punctuation","white exclamation mark"]},{"id":":exclamation_mark:","symbol":"❗","group":"symbols","keywords":["exclamation","mark","punctuation"]},{"id":":wavy_dash:","symbol":"〰","group":"symbols","keywords":["dash","punctuation","wavy"]},{"id":":copyright:","symbol":"©","group":"symbols","keywords":["copyright"]},{"id":":registered:","symbol":"®","group":"symbols","keywords":["registered"]},{"id":":trade_mark:","symbol":"™","group":"symbols","keywords":["mark","tm","trade mark","trademark"]},{"id":":keycap_#:","symbol":"#️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_*:","symbol":"*️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_0:","symbol":"0️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_1:","symbol":"1️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_2:","symbol":"2️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_3:","symbol":"3️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_4:","symbol":"4️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_5:","symbol":"5️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_6:","symbol":"6️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_7:","symbol":"7️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_8:","symbol":"8️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_9:","symbol":"9️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_10:","symbol":"🔟","group":"symbols","keywords":["keycap"]},{"id":":hundred_points:","symbol":"💯","group":"symbols","keywords":["100","full","hundred","hundred points","score"]},{"id":":input_latin_uppercase:","symbol":"🔠","group":"symbols","keywords":["ABCD","input","latin","letters","uppercase"]},{"id":":input_latin_lowercase:","symbol":"🔡","group":"symbols","keywords":["abcd","input","latin","letters","lowercase"]},{"id":":input_numbers:","symbol":"🔢","group":"symbols","keywords":["1234","input","numbers"]},{"id":":input_symbols:","symbol":"🔣","group":"symbols","keywords":["〒♪&%","input","input symbols"]},{"id":":input_latin_letters:","symbol":"🔤","group":"symbols","keywords":["abc","alphabet","input","latin","letters"]},{"id":":a_button_(blood_type):","symbol":"🅰","group":"symbols","keywords":["a","A button (blood type)","blood type"]},{"id":":ab_button_(blood_type):","symbol":"🆎","group":"symbols","keywords":["ab","AB button (blood type)","blood type"]},{"id":":b_button_(blood_type):","symbol":"🅱","group":"symbols","keywords":["b","B button (blood type)","blood type"]},{"id":":cl_button:","symbol":"🆑","group":"symbols","keywords":["cl","CL button"]},{"id":":cool_button:","symbol":"🆒","group":"symbols","keywords":["cool","COOL button"]},{"id":":free_button:","symbol":"🆓","group":"symbols","keywords":["free","FREE button"]},{"id":":information:","symbol":"ℹ","group":"symbols","keywords":["i","information"]},{"id":":id_button:","symbol":"🆔","group":"symbols","keywords":["id","ID button","identity"]},{"id":":circled_m:","symbol":"Ⓜ","group":"symbols","keywords":["circle","circled M","m"]},{"id":":new_button:","symbol":"🆕","group":"symbols","keywords":["new","NEW button"]},{"id":":ng_button:","symbol":"🆖","group":"symbols","keywords":["ng","NG button"]},{"id":":o_button_(blood_type):","symbol":"🅾","group":"symbols","keywords":["blood type","o","O button (blood type)"]},{"id":":ok_button:","symbol":"🆗","group":"symbols","keywords":["OK","OK button"]},{"id":":p_button:","symbol":"🅿","group":"symbols","keywords":["P button","parking"]},{"id":":sos_button:","symbol":"🆘","group":"symbols","keywords":["help","sos","SOS button"]},{"id":":up!_button:","symbol":"🆙","group":"symbols","keywords":["mark","up","UP! button"]},{"id":":vs_button:","symbol":"🆚","group":"symbols","keywords":["versus","vs","VS button"]},{"id":":japanese_“here”_button:","symbol":"🈁","group":"symbols","keywords":["“here”","Japanese","Japanese “here” button","katakana","ココ"]},{"id":":japanese_“service_charge”_button:","symbol":"🈂","group":"symbols","keywords":["“service charge”","Japanese","Japanese “service charge” button","katakana","サ"]},{"id":":japanese_“monthly_amount”_button:","symbol":"🈷","group":"symbols","keywords":["“monthly amount”","ideograph","Japanese","Japanese “monthly amount” button","月"]},{"id":":japanese_“not_free_of_charge”_button:","symbol":"🈶","group":"symbols","keywords":["“not free of charge”","ideograph","Japanese","Japanese “not free of charge” button","有"]},{"id":":japanese_“reserved”_button:","symbol":"🈯","group":"symbols","keywords":["“reserved”","ideograph","Japanese","Japanese “reserved” button","指"]},{"id":":japanese_“bargain”_button:","symbol":"🉐","group":"symbols","keywords":["“bargain”","ideograph","Japanese","Japanese “bargain” button","得"]},{"id":":japanese_“discount”_button:","symbol":"🈹","group":"symbols","keywords":["“discount”","ideograph","Japanese","Japanese “discount” button","割"]},{"id":":japanese_“free_of_charge”_button:","symbol":"🈚","group":"symbols","keywords":["“free of charge”","ideograph","Japanese","Japanese “free of charge” button","無"]},{"id":":japanese_“prohibited”_button:","symbol":"🈲","group":"symbols","keywords":["“prohibited”","ideograph","Japanese","Japanese “prohibited” button","禁"]},{"id":":japanese_“acceptable”_button:","symbol":"🉑","group":"symbols","keywords":["“acceptable”","ideograph","Japanese","Japanese “acceptable” button","可"]},{"id":":japanese_“application”_button:","symbol":"🈸","group":"symbols","keywords":["“application”","ideograph","Japanese","Japanese “application” button","申"]},{"id":":japanese_“passing_grade”_button:","symbol":"🈴","group":"symbols","keywords":["“passing grade”","ideograph","Japanese","Japanese “passing grade” button","合"]},{"id":":japanese_“vacancy”_button:","symbol":"🈳","group":"symbols","keywords":["“vacancy”","ideograph","Japanese","Japanese “vacancy” button","空"]},{"id":":japanese_“congratulations”_button:","symbol":"㊗","group":"symbols","keywords":["“congratulations”","ideograph","Japanese","Japanese “congratulations” button","祝"]},{"id":":japanese_“secret”_button:","symbol":"㊙","group":"symbols","keywords":["“secret”","ideograph","Japanese","Japanese “secret” button","秘"]},{"id":":japanese_“open_for_business”_button:","symbol":"🈺","group":"symbols","keywords":["“open for business”","ideograph","Japanese","Japanese “open for business” button","営"]},{"id":":japanese_“no_vacancy”_button:","symbol":"🈵","group":"symbols","keywords":["“no vacancy”","ideograph","Japanese","Japanese “no vacancy” button","満"]},{"id":":red_circle:","symbol":"🔴","group":"symbols","keywords":["circle","geometric","red"]},{"id":":blue_circle:","symbol":"🔵","group":"symbols","keywords":["blue","circle","geometric"]},{"id":":white_circle:","symbol":"⚪","group":"symbols","keywords":["circle","geometric","white circle"]},{"id":":black_circle:","symbol":"⚫","group":"symbols","keywords":["black circle","circle","geometric"]},{"id":":white_large_square:","symbol":"⬜","group":"symbols","keywords":["geometric","square","white large square"]},{"id":":black_large_square:","symbol":"⬛","group":"symbols","keywords":["black large square","geometric","square"]},{"id":":black_medium_square:","symbol":"◼","group":"symbols","keywords":["black medium square","geometric","square"]},{"id":":white_medium_square:","symbol":"◻","group":"symbols","keywords":["geometric","square","white medium square"]},{"id":":white_medium-small_square:","symbol":"◽","group":"symbols","keywords":["geometric","square","white medium-small square"]},{"id":":black_medium-small_square:","symbol":"◾","group":"symbols","keywords":["black medium-small square","geometric","square"]},{"id":":white_small_square:","symbol":"▫","group":"symbols","keywords":["geometric","square","white small square"]},{"id":":black_small_square:","symbol":"▪","group":"symbols","keywords":["black small square","geometric","square"]},{"id":":large_orange_diamond:","symbol":"🔶","group":"symbols","keywords":["diamond","geometric","large orange diamond","orange"]},{"id":":large_blue_diamond:","symbol":"🔷","group":"symbols","keywords":["blue","diamond","geometric","large blue diamond"]},{"id":":small_orange_diamond:","symbol":"🔸","group":"symbols","keywords":["diamond","geometric","orange","small orange diamond"]},{"id":":small_blue_diamond:","symbol":"🔹","group":"symbols","keywords":["blue","diamond","geometric","small blue diamond"]},{"id":":red_triangle_pointed_up:","symbol":"🔺","group":"symbols","keywords":["geometric","red","red triangle pointed up"]},{"id":":red_triangle_pointed_down:","symbol":"🔻","group":"symbols","keywords":["down","geometric","red","red triangle pointed down"]},{"id":":diamond_with_a_dot:","symbol":"💠","group":"symbols","keywords":["comic","diamond","diamond with a dot","geometric","inside"]},{"id":":radio_button:","symbol":"🔘","group":"symbols","keywords":["button","geometric","radio"]},{"id":":black_square_button:","symbol":"🔲","group":"symbols","keywords":["black square button","button","geometric","square"]},{"id":":white_square_button:","symbol":"🔳","group":"symbols","keywords":["button","geometric","outlined","square","white square button"]},{"id":":chequered_flag:","symbol":"🏁","group":"flags","keywords":["checkered","chequered","chequered flag","racing"]},{"id":":triangular_flag:","symbol":"🚩","group":"flags","keywords":["post","triangular flag"]},{"id":":crossed_flags:","symbol":"🎌","group":"flags","keywords":["celebration","cross","crossed","crossed flags","Japanese"]},{"id":":black_flag:","symbol":"🏴","group":"flags","keywords":["black flag","waving"]},{"id":":white_flag:","symbol":"🏳","group":"flags","keywords":["waving","white flag"]},{"id":":rainbow_flag:","symbol":"🏳️‍🌈","group":"flags","keywords":["rainbow","rainbow flag"]},{"id":":flag_ascension_island:","symbol":"🇦🇨","group":"flags","keywords":["flag"]},{"id":":flag_andorra:","symbol":"🇦🇩","group":"flags","keywords":["flag"]},{"id":":flag_united_arab_emirates:","symbol":"🇦🇪","group":"flags","keywords":["flag"]},{"id":":flag_afghanistan:","symbol":"🇦🇫","group":"flags","keywords":["flag"]},{"id":":flag_antigua_&_barbuda:","symbol":"🇦🇬","group":"flags","keywords":["flag"]},{"id":":flag_anguilla:","symbol":"🇦🇮","group":"flags","keywords":["flag"]},{"id":":flag_albania:","symbol":"🇦🇱","group":"flags","keywords":["flag"]},{"id":":flag_armenia:","symbol":"🇦🇲","group":"flags","keywords":["flag"]},{"id":":flag_angola:","symbol":"🇦🇴","group":"flags","keywords":["flag"]},{"id":":flag_antarctica:","symbol":"🇦🇶","group":"flags","keywords":["flag"]},{"id":":flag_argentina:","symbol":"🇦🇷","group":"flags","keywords":["flag"]},{"id":":flag_american_samoa:","symbol":"🇦🇸","group":"flags","keywords":["flag"]},{"id":":flag_austria:","symbol":"🇦🇹","group":"flags","keywords":["flag"]},{"id":":flag_australia:","symbol":"🇦🇺","group":"flags","keywords":["flag"]},{"id":":flag_aruba:","symbol":"🇦🇼","group":"flags","keywords":["flag"]},{"id":":flag_åland_islands:","symbol":"🇦🇽","group":"flags","keywords":["flag"]},{"id":":flag_azerbaijan:","symbol":"🇦🇿","group":"flags","keywords":["flag"]},{"id":":flag_bosnia_&_herzegovina:","symbol":"🇧🇦","group":"flags","keywords":["flag"]},{"id":":flag_barbados:","symbol":"🇧🇧","group":"flags","keywords":["flag"]},{"id":":flag_bangladesh:","symbol":"🇧🇩","group":"flags","keywords":["flag"]},{"id":":flag_belgium:","symbol":"🇧🇪","group":"flags","keywords":["flag"]},{"id":":flag_burkina_faso:","symbol":"🇧🇫","group":"flags","keywords":["flag"]},{"id":":flag_bulgaria:","symbol":"🇧🇬","group":"flags","keywords":["flag"]},{"id":":flag_bahrain:","symbol":"🇧🇭","group":"flags","keywords":["flag"]},{"id":":flag_burundi:","symbol":"🇧🇮","group":"flags","keywords":["flag"]},{"id":":flag_benin:","symbol":"🇧🇯","group":"flags","keywords":["flag"]},{"id":":flag_st._barthélemy:","symbol":"🇧🇱","group":"flags","keywords":["flag"]},{"id":":flag_bermuda:","symbol":"🇧🇲","group":"flags","keywords":["flag"]},{"id":":flag_brunei:","symbol":"🇧🇳","group":"flags","keywords":["flag"]},{"id":":flag_bolivia:","symbol":"🇧🇴","group":"flags","keywords":["flag"]},{"id":":flag_caribbean_netherlands:","symbol":"🇧🇶","group":"flags","keywords":["flag"]},{"id":":flag_brazil:","symbol":"🇧🇷","group":"flags","keywords":["flag"]},{"id":":flag_bahamas:","symbol":"🇧🇸","group":"flags","keywords":["flag"]},{"id":":flag_bhutan:","symbol":"🇧🇹","group":"flags","keywords":["flag"]},{"id":":flag_bouvet_island:","symbol":"🇧🇻","group":"flags","keywords":["flag"]},{"id":":flag_botswana:","symbol":"🇧🇼","group":"flags","keywords":["flag"]},{"id":":flag_belarus:","symbol":"🇧🇾","group":"flags","keywords":["flag"]},{"id":":flag_belize:","symbol":"🇧🇿","group":"flags","keywords":["flag"]},{"id":":flag_canada:","symbol":"🇨🇦","group":"flags","keywords":["flag"]},{"id":":flag_cocos_(keeling)_islands:","symbol":"🇨🇨","group":"flags","keywords":["flag"]},{"id":":flag_congo_-_kinshasa:","symbol":"🇨🇩","group":"flags","keywords":["flag"]},{"id":":flag_central_african_republic:","symbol":"🇨🇫","group":"flags","keywords":["flag"]},{"id":":flag_congo_-_brazzaville:","symbol":"🇨🇬","group":"flags","keywords":["flag"]},{"id":":flag_switzerland:","symbol":"🇨🇭","group":"flags","keywords":["flag"]},{"id":":flag_côte_d’ivoire:","symbol":"🇨🇮","group":"flags","keywords":["flag"]},{"id":":flag_cook_islands:","symbol":"🇨🇰","group":"flags","keywords":["flag"]},{"id":":flag_chile:","symbol":"🇨🇱","group":"flags","keywords":["flag"]},{"id":":flag_cameroon:","symbol":"🇨🇲","group":"flags","keywords":["flag"]},{"id":":flag_china:","symbol":"🇨🇳","group":"flags","keywords":["flag"]},{"id":":flag_colombia:","symbol":"🇨🇴","group":"flags","keywords":["flag"]},{"id":":flag_clipperton_island:","symbol":"🇨🇵","group":"flags","keywords":["flag"]},{"id":":flag_costa_rica:","symbol":"🇨🇷","group":"flags","keywords":["flag"]},{"id":":flag_cuba:","symbol":"🇨🇺","group":"flags","keywords":["flag"]},{"id":":flag_cape_verde:","symbol":"🇨🇻","group":"flags","keywords":["flag"]},{"id":":flag_curaçao:","symbol":"🇨🇼","group":"flags","keywords":["flag"]},{"id":":flag_christmas_island:","symbol":"🇨🇽","group":"flags","keywords":["flag"]},{"id":":flag_cyprus:","symbol":"🇨🇾","group":"flags","keywords":["flag"]},{"id":":flag_czechia:","symbol":"🇨🇿","group":"flags","keywords":["flag"]},{"id":":flag_germany:","symbol":"🇩🇪","group":"flags","keywords":["flag"]},{"id":":flag_diego_garcia:","symbol":"🇩🇬","group":"flags","keywords":["flag"]},{"id":":flag_djibouti:","symbol":"🇩🇯","group":"flags","keywords":["flag"]},{"id":":flag_denmark:","symbol":"🇩🇰","group":"flags","keywords":["flag"]},{"id":":flag_dominica:","symbol":"🇩🇲","group":"flags","keywords":["flag"]},{"id":":flag_dominican_republic:","symbol":"🇩🇴","group":"flags","keywords":["flag"]},{"id":":flag_algeria:","symbol":"🇩🇿","group":"flags","keywords":["flag"]},{"id":":flag_ceuta_&_melilla:","symbol":"🇪🇦","group":"flags","keywords":["flag"]},{"id":":flag_ecuador:","symbol":"🇪🇨","group":"flags","keywords":["flag"]},{"id":":flag_estonia:","symbol":"🇪🇪","group":"flags","keywords":["flag"]},{"id":":flag_egypt:","symbol":"🇪🇬","group":"flags","keywords":["flag"]},{"id":":flag_western_sahara:","symbol":"🇪🇭","group":"flags","keywords":["flag"]},{"id":":flag_eritrea:","symbol":"🇪🇷","group":"flags","keywords":["flag"]},{"id":":flag_spain:","symbol":"🇪🇸","group":"flags","keywords":["flag"]},{"id":":flag_ethiopia:","symbol":"🇪🇹","group":"flags","keywords":["flag"]},{"id":":flag_european_union:","symbol":"🇪🇺","group":"flags","keywords":["flag"]},{"id":":flag_finland:","symbol":"🇫🇮","group":"flags","keywords":["flag"]},{"id":":flag_fiji:","symbol":"🇫🇯","group":"flags","keywords":["flag"]},{"id":":flag_falkland_islands:","symbol":"🇫🇰","group":"flags","keywords":["flag"]},{"id":":flag_micronesia:","symbol":"🇫🇲","group":"flags","keywords":["flag"]},{"id":":flag_faroe_islands:","symbol":"🇫🇴","group":"flags","keywords":["flag"]},{"id":":flag_france:","symbol":"🇫🇷","group":"flags","keywords":["flag"]},{"id":":flag_gabon:","symbol":"🇬🇦","group":"flags","keywords":["flag"]},{"id":":flag_united_kingdom:","symbol":"🇬🇧","group":"flags","keywords":["flag"]},{"id":":flag_grenada:","symbol":"🇬🇩","group":"flags","keywords":["flag"]},{"id":":flag_georgia:","symbol":"🇬🇪","group":"flags","keywords":["flag"]},{"id":":flag_french_guiana:","symbol":"🇬🇫","group":"flags","keywords":["flag"]},{"id":":flag_guernsey:","symbol":"🇬🇬","group":"flags","keywords":["flag"]},{"id":":flag_ghana:","symbol":"🇬🇭","group":"flags","keywords":["flag"]},{"id":":flag_gibraltar:","symbol":"🇬🇮","group":"flags","keywords":["flag"]},{"id":":flag_greenland:","symbol":"🇬🇱","group":"flags","keywords":["flag"]},{"id":":flag_gambia:","symbol":"🇬🇲","group":"flags","keywords":["flag"]},{"id":":flag_guinea:","symbol":"🇬🇳","group":"flags","keywords":["flag"]},{"id":":flag_guadeloupe:","symbol":"🇬🇵","group":"flags","keywords":["flag"]},{"id":":flag_equatorial_guinea:","symbol":"🇬🇶","group":"flags","keywords":["flag"]},{"id":":flag_greece:","symbol":"🇬🇷","group":"flags","keywords":["flag"]},{"id":":flag_south_georgia_&_south_sandwich_islands:","symbol":"🇬🇸","group":"flags","keywords":["flag"]},{"id":":flag_guatemala:","symbol":"🇬🇹","group":"flags","keywords":["flag"]},{"id":":flag_guam:","symbol":"🇬🇺","group":"flags","keywords":["flag"]},{"id":":flag_guinea-bissau:","symbol":"🇬🇼","group":"flags","keywords":["flag"]},{"id":":flag_guyana:","symbol":"🇬🇾","group":"flags","keywords":["flag"]},{"id":":flag_hong_kong_sar_china:","symbol":"🇭🇰","group":"flags","keywords":["flag"]},{"id":":flag_heard_&_mcdonald_islands:","symbol":"🇭🇲","group":"flags","keywords":["flag"]},{"id":":flag_honduras:","symbol":"🇭🇳","group":"flags","keywords":["flag"]},{"id":":flag_croatia:","symbol":"🇭🇷","group":"flags","keywords":["flag"]},{"id":":flag_haiti:","symbol":"🇭🇹","group":"flags","keywords":["flag"]},{"id":":flag_hungary:","symbol":"🇭🇺","group":"flags","keywords":["flag"]},{"id":":flag_canary_islands:","symbol":"🇮🇨","group":"flags","keywords":["flag"]},{"id":":flag_indonesia:","symbol":"🇮🇩","group":"flags","keywords":["flag"]},{"id":":flag_ireland:","symbol":"🇮🇪","group":"flags","keywords":["flag"]},{"id":":flag_israel:","symbol":"🇮🇱","group":"flags","keywords":["flag"]},{"id":":flag_isle_of_man:","symbol":"🇮🇲","group":"flags","keywords":["flag"]},{"id":":flag_india:","symbol":"🇮🇳","group":"flags","keywords":["flag"]},{"id":":flag_british_indian_ocean_territory:","symbol":"🇮🇴","group":"flags","keywords":["flag"]},{"id":":flag_iraq:","symbol":"🇮🇶","group":"flags","keywords":["flag"]},{"id":":flag_iran:","symbol":"🇮🇷","group":"flags","keywords":["flag"]},{"id":":flag_iceland:","symbol":"🇮🇸","group":"flags","keywords":["flag"]},{"id":":flag_italy:","symbol":"🇮🇹","group":"flags","keywords":["flag"]},{"id":":flag_jersey:","symbol":"🇯🇪","group":"flags","keywords":["flag"]},{"id":":flag_jamaica:","symbol":"🇯🇲","group":"flags","keywords":["flag"]},{"id":":flag_jordan:","symbol":"🇯🇴","group":"flags","keywords":["flag"]},{"id":":flag_japan:","symbol":"🇯🇵","group":"flags","keywords":["flag"]},{"id":":flag_kenya:","symbol":"🇰🇪","group":"flags","keywords":["flag"]},{"id":":flag_kyrgyzstan:","symbol":"🇰🇬","group":"flags","keywords":["flag"]},{"id":":flag_cambodia:","symbol":"🇰🇭","group":"flags","keywords":["flag"]},{"id":":flag_kiribati:","symbol":"🇰🇮","group":"flags","keywords":["flag"]},{"id":":flag_comoros:","symbol":"🇰🇲","group":"flags","keywords":["flag"]},{"id":":flag_st._kitts_&_nevis:","symbol":"🇰🇳","group":"flags","keywords":["flag"]},{"id":":flag_north_korea:","symbol":"🇰🇵","group":"flags","keywords":["flag"]},{"id":":flag_south_korea:","symbol":"🇰🇷","group":"flags","keywords":["flag"]},{"id":":flag_kuwait:","symbol":"🇰🇼","group":"flags","keywords":["flag"]},{"id":":flag_cayman_islands:","symbol":"🇰🇾","group":"flags","keywords":["flag"]},{"id":":flag_kazakhstan:","symbol":"🇰🇿","group":"flags","keywords":["flag"]},{"id":":flag_laos:","symbol":"🇱🇦","group":"flags","keywords":["flag"]},{"id":":flag_lebanon:","symbol":"🇱🇧","group":"flags","keywords":["flag"]},{"id":":flag_st._lucia:","symbol":"🇱🇨","group":"flags","keywords":["flag"]},{"id":":flag_liechtenstein:","symbol":"🇱🇮","group":"flags","keywords":["flag"]},{"id":":flag_sri_lanka:","symbol":"🇱🇰","group":"flags","keywords":["flag"]},{"id":":flag_liberia:","symbol":"🇱🇷","group":"flags","keywords":["flag"]},{"id":":flag_lesotho:","symbol":"🇱🇸","group":"flags","keywords":["flag"]},{"id":":flag_lithuania:","symbol":"🇱🇹","group":"flags","keywords":["flag"]},{"id":":flag_luxembourg:","symbol":"🇱🇺","group":"flags","keywords":["flag"]},{"id":":flag_latvia:","symbol":"🇱🇻","group":"flags","keywords":["flag"]},{"id":":flag_libya:","symbol":"🇱🇾","group":"flags","keywords":["flag"]},{"id":":flag_morocco:","symbol":"🇲🇦","group":"flags","keywords":["flag"]},{"id":":flag_monaco:","symbol":"🇲🇨","group":"flags","keywords":["flag"]},{"id":":flag_moldova:","symbol":"🇲🇩","group":"flags","keywords":["flag"]},{"id":":flag_montenegro:","symbol":"🇲🇪","group":"flags","keywords":["flag"]},{"id":":flag_st._martin:","symbol":"🇲🇫","group":"flags","keywords":["flag"]},{"id":":flag_madagascar:","symbol":"🇲🇬","group":"flags","keywords":["flag"]},{"id":":flag_marshall_islands:","symbol":"🇲🇭","group":"flags","keywords":["flag"]},{"id":":flag_macedonia:","symbol":"🇲🇰","group":"flags","keywords":["flag"]},{"id":":flag_mali:","symbol":"🇲🇱","group":"flags","keywords":["flag"]},{"id":":flag_myanmar_(burma):","symbol":"🇲🇲","group":"flags","keywords":["flag"]},{"id":":flag_mongolia:","symbol":"🇲🇳","group":"flags","keywords":["flag"]},{"id":":flag_macau_sar_china:","symbol":"🇲🇴","group":"flags","keywords":["flag"]},{"id":":flag_northern_mariana_islands:","symbol":"🇲🇵","group":"flags","keywords":["flag"]},{"id":":flag_martinique:","symbol":"🇲🇶","group":"flags","keywords":["flag"]},{"id":":flag_mauritania:","symbol":"🇲🇷","group":"flags","keywords":["flag"]},{"id":":flag_montserrat:","symbol":"🇲🇸","group":"flags","keywords":["flag"]},{"id":":flag_malta:","symbol":"🇲🇹","group":"flags","keywords":["flag"]},{"id":":flag_mauritius:","symbol":"🇲🇺","group":"flags","keywords":["flag"]},{"id":":flag_maldives:","symbol":"🇲🇻","group":"flags","keywords":["flag"]},{"id":":flag_malawi:","symbol":"🇲🇼","group":"flags","keywords":["flag"]},{"id":":flag_mexico:","symbol":"🇲🇽","group":"flags","keywords":["flag"]},{"id":":flag_malaysia:","symbol":"🇲🇾","group":"flags","keywords":["flag"]},{"id":":flag_mozambique:","symbol":"🇲🇿","group":"flags","keywords":["flag"]},{"id":":flag_namibia:","symbol":"🇳🇦","group":"flags","keywords":["flag"]},{"id":":flag_new_caledonia:","symbol":"🇳🇨","group":"flags","keywords":["flag"]},{"id":":flag_niger:","symbol":"🇳🇪","group":"flags","keywords":["flag"]},{"id":":flag_norfolk_island:","symbol":"🇳🇫","group":"flags","keywords":["flag"]},{"id":":flag_nigeria:","symbol":"🇳🇬","group":"flags","keywords":["flag"]},{"id":":flag_nicaragua:","symbol":"🇳🇮","group":"flags","keywords":["flag"]},{"id":":flag_netherlands:","symbol":"🇳🇱","group":"flags","keywords":["flag"]},{"id":":flag_norway:","symbol":"🇳🇴","group":"flags","keywords":["flag"]},{"id":":flag_nepal:","symbol":"🇳🇵","group":"flags","keywords":["flag"]},{"id":":flag_nauru:","symbol":"🇳🇷","group":"flags","keywords":["flag"]},{"id":":flag_niue:","symbol":"🇳🇺","group":"flags","keywords":["flag"]},{"id":":flag_new_zealand:","symbol":"🇳🇿","group":"flags","keywords":["flag"]},{"id":":flag_oman:","symbol":"🇴🇲","group":"flags","keywords":["flag"]},{"id":":flag_panama:","symbol":"🇵🇦","group":"flags","keywords":["flag"]},{"id":":flag_peru:","symbol":"🇵🇪","group":"flags","keywords":["flag"]},{"id":":flag_french_polynesia:","symbol":"🇵🇫","group":"flags","keywords":["flag"]},{"id":":flag_papua_new_guinea:","symbol":"🇵🇬","group":"flags","keywords":["flag"]},{"id":":flag_philippines:","symbol":"🇵🇭","group":"flags","keywords":["flag"]},{"id":":flag_pakistan:","symbol":"🇵🇰","group":"flags","keywords":["flag"]},{"id":":flag_poland:","symbol":"🇵🇱","group":"flags","keywords":["flag"]},{"id":":flag_st._pierre_&_miquelon:","symbol":"🇵🇲","group":"flags","keywords":["flag"]},{"id":":flag_pitcairn_islands:","symbol":"🇵🇳","group":"flags","keywords":["flag"]},{"id":":flag_puerto_rico:","symbol":"🇵🇷","group":"flags","keywords":["flag"]},{"id":":flag_palestinian_territories:","symbol":"🇵🇸","group":"flags","keywords":["flag"]},{"id":":flag_portugal:","symbol":"🇵🇹","group":"flags","keywords":["flag"]},{"id":":flag_palau:","symbol":"🇵🇼","group":"flags","keywords":["flag"]},{"id":":flag_paraguay:","symbol":"🇵🇾","group":"flags","keywords":["flag"]},{"id":":flag_qatar:","symbol":"🇶🇦","group":"flags","keywords":["flag"]},{"id":":flag_réunion:","symbol":"🇷🇪","group":"flags","keywords":["flag"]},{"id":":flag_romania:","symbol":"🇷🇴","group":"flags","keywords":["flag"]},{"id":":flag_serbia:","symbol":"🇷🇸","group":"flags","keywords":["flag"]},{"id":":flag_russia:","symbol":"🇷🇺","group":"flags","keywords":["flag"]},{"id":":flag_rwanda:","symbol":"🇷🇼","group":"flags","keywords":["flag"]},{"id":":flag_saudi_arabia:","symbol":"🇸🇦","group":"flags","keywords":["flag"]},{"id":":flag_solomon_islands:","symbol":"🇸🇧","group":"flags","keywords":["flag"]},{"id":":flag_seychelles:","symbol":"🇸🇨","group":"flags","keywords":["flag"]},{"id":":flag_sudan:","symbol":"🇸🇩","group":"flags","keywords":["flag"]},{"id":":flag_sweden:","symbol":"🇸🇪","group":"flags","keywords":["flag"]},{"id":":flag_singapore:","symbol":"🇸🇬","group":"flags","keywords":["flag"]},{"id":":flag_st._helena:","symbol":"🇸🇭","group":"flags","keywords":["flag"]},{"id":":flag_slovenia:","symbol":"🇸🇮","group":"flags","keywords":["flag"]},{"id":":flag_svalbard_&_jan_mayen:","symbol":"🇸🇯","group":"flags","keywords":["flag"]},{"id":":flag_slovakia:","symbol":"🇸🇰","group":"flags","keywords":["flag"]},{"id":":flag_sierra_leone:","symbol":"🇸🇱","group":"flags","keywords":["flag"]},{"id":":flag_san_marino:","symbol":"🇸🇲","group":"flags","keywords":["flag"]},{"id":":flag_senegal:","symbol":"🇸🇳","group":"flags","keywords":["flag"]},{"id":":flag_somalia:","symbol":"🇸🇴","group":"flags","keywords":["flag"]},{"id":":flag_suriname:","symbol":"🇸🇷","group":"flags","keywords":["flag"]},{"id":":flag_south_sudan:","symbol":"🇸🇸","group":"flags","keywords":["flag"]},{"id":":flag_são_tomé_&_príncipe:","symbol":"🇸🇹","group":"flags","keywords":["flag"]},{"id":":flag_el_salvador:","symbol":"🇸🇻","group":"flags","keywords":["flag"]},{"id":":flag_sint_maarten:","symbol":"🇸🇽","group":"flags","keywords":["flag"]},{"id":":flag_syria:","symbol":"🇸🇾","group":"flags","keywords":["flag"]},{"id":":flag_swaziland:","symbol":"🇸🇿","group":"flags","keywords":["flag"]},{"id":":flag_tristan_da_cunha:","symbol":"🇹🇦","group":"flags","keywords":["flag"]},{"id":":flag_turks_&_caicos_islands:","symbol":"🇹🇨","group":"flags","keywords":["flag"]},{"id":":flag_chad:","symbol":"🇹🇩","group":"flags","keywords":["flag"]},{"id":":flag_french_southern_territories:","symbol":"🇹🇫","group":"flags","keywords":["flag"]},{"id":":flag_togo:","symbol":"🇹🇬","group":"flags","keywords":["flag"]},{"id":":flag_thailand:","symbol":"🇹🇭","group":"flags","keywords":["flag"]},{"id":":flag_tajikistan:","symbol":"🇹🇯","group":"flags","keywords":["flag"]},{"id":":flag_tokelau:","symbol":"🇹🇰","group":"flags","keywords":["flag"]},{"id":":flag_timor-leste:","symbol":"🇹🇱","group":"flags","keywords":["flag"]},{"id":":flag_turkmenistan:","symbol":"🇹🇲","group":"flags","keywords":["flag"]},{"id":":flag_tunisia:","symbol":"🇹🇳","group":"flags","keywords":["flag"]},{"id":":flag_tonga:","symbol":"🇹🇴","group":"flags","keywords":["flag"]},{"id":":flag_turkey:","symbol":"🇹🇷","group":"flags","keywords":["flag"]},{"id":":flag_trinidad_&_tobago:","symbol":"🇹🇹","group":"flags","keywords":["flag"]},{"id":":flag_tuvalu:","symbol":"🇹🇻","group":"flags","keywords":["flag"]},{"id":":flag_taiwan:","symbol":"🇹🇼","group":"flags","keywords":["flag"]},{"id":":flag_tanzania:","symbol":"🇹🇿","group":"flags","keywords":["flag"]},{"id":":flag_ukraine:","symbol":"🇺🇦","group":"flags","keywords":["flag"]},{"id":":flag_uganda:","symbol":"🇺🇬","group":"flags","keywords":["flag"]},{"id":":flag_u.s._outlying_islands:","symbol":"🇺🇲","group":"flags","keywords":["flag"]},{"id":":flag_united_nations:","symbol":"🇺🇳","group":"flags","keywords":["flag"]},{"id":":flag_united_states:","symbol":"🇺🇸","group":"flags","keywords":["flag"]},{"id":":flag_uruguay:","symbol":"🇺🇾","group":"flags","keywords":["flag"]},{"id":":flag_uzbekistan:","symbol":"🇺🇿","group":"flags","keywords":["flag"]},{"id":":flag_vatican_city:","symbol":"🇻🇦","group":"flags","keywords":["flag"]},{"id":":flag_st._vincent_&_grenadines:","symbol":"🇻🇨","group":"flags","keywords":["flag"]},{"id":":flag_venezuela:","symbol":"🇻🇪","group":"flags","keywords":["flag"]},{"id":":flag_british_virgin_islands:","symbol":"🇻🇬","group":"flags","keywords":["flag"]},{"id":":flag_u.s._virgin_islands:","symbol":"🇻🇮","group":"flags","keywords":["flag"]},{"id":":flag_vietnam:","symbol":"🇻🇳","group":"flags","keywords":["flag"]},{"id":":flag_vanuatu:","symbol":"🇻🇺","group":"flags","keywords":["flag"]},{"id":":flag_wallis_&_futuna:","symbol":"🇼🇫","group":"flags","keywords":["flag"]},{"id":":flag_samoa:","symbol":"🇼🇸","group":"flags","keywords":["flag"]},{"id":":flag_kosovo:","symbol":"🇽🇰","group":"flags","keywords":["flag"]},{"id":":flag_yemen:","symbol":"🇾🇪","group":"flags","keywords":["flag"]},{"id":":flag_mayotte:","symbol":"🇾🇹","group":"flags","keywords":["flag"]},{"id":":flag_south_africa:","symbol":"🇿🇦","group":"flags","keywords":["flag"]},{"id":":flag_zambia:","symbol":"🇿🇲","group":"flags","keywords":["flag"]},{"id":":flag_zimbabwe:","symbol":"🇿🇼","group":"flags","keywords":["flag"]},{"id":":flag_england:","symbol":"🏴󠁧󠁢󠁥󠁮󠁧󠁿","group":"flags","keywords":["flag"]},{"id":":flag_scotland:","symbol":"🏴󠁧󠁢󠁳󠁣󠁴󠁿","group":"flags","keywords":["flag"]},{"id":":flag_wales:","symbol":"🏴󠁧󠁢󠁷󠁬󠁳󠁿","group":"flags","keywords":["flag"]}]');const ZM={autosave:{waitingTime:5e3,save:e=>async function(e){const t=Date.now(),o=e.config.get(HM),n=await e.getData();n||console.warn("Trying to save snapshot but data is not defined.");const i={timestamp:t,hash:OM(n),content:n},r=NM(o),s=r?.items||[];s.find((e=>i.hash===e.hash))||s.push(i);try{const e=MM.compress(JSON.stringify({items:s,updatedAt:t}));localStorage.setItem(o,e)}catch(t){Fw(e,"notifications").addError("Failed to save CKEditor data to localStorage: "+t.toString())}return!0}(e)},heading:{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"}]},toolbar:{},OPMacroEmbeddedTable:{toolbar:["opEditEmbeddedTableQuery"]},OPMacroWpButton:{toolbar:["opEditWpMacroButton"]},OPWikiIncludePage:{toolbar:["opEditWikiIncludeMacroButton"]},OPCodeBlock:{toolbar:["opEditCodeBlock"]},OPChildPages:{toolbar:["opEditChildPagesMacroButton"]},image:{insert:{type:"inline"},resizeUnit:"px",resizeOptions:[{name:"imageResize:original",value:null,icon:"original"},{name:"imageResize:50",value:"50",icon:"medium"},{name:"imageResize:75",value:"75",icon:"large"}],toolbar:["toggleImageCaption","imageTextAlternative","|","imageStyle:inline","imageStyle:block","|","imageResize:original"]},table:{contentToolbar:["tableColumn","tableRow","mergeTableCells","tableProperties","tableCellProperties"]},mention:{feeds:[{marker:"@",feed:function(e){const t=this;let o=Iw(t);if(o&&"Activity::Comment"===o._type){const e=o.$embedded.workPackage;e&&(o=e)}if(!o||"WorkPackage"!==o._type)return[];if(t.config.get("disabledMentions").includes("user"))return[];const n=Rw(t).api.v3.principals(o,e),i=Pw(t),r=window.OpenProject.urlRoot;return new Promise(((e,t)=>{SD(n,{responseKind:"json",query:{select:"elements/_type,elements/id,elements/name"}}).then((e=>e.json)).then((t=>{e(_.uniqBy(t._embedded.elements,(e=>e.id)).map((e=>{const t=e._type.toLowerCase(),o=`@${e.name}`,n=`@${e.id}`,s=e.id,a=i.services.apiV3Service[`${t}s`].segment;return{type:t,id:n,text:o,link:`${r}/${a}/${s}`,idNumber:s,name:e.name}})))})).catch((e=>{console.error("Error fetching user mentions:",e),t(e)}))}))},itemRenderer:GM,minimumCharacters:0},{marker:"###",feed:WM("###"),itemRenderer:GM,minimumCharacters:1},{marker:"##",feed:WM("##"),itemRenderer:GM,minimumCharacters:1},{marker:"#",feed:WM("#"),itemRenderer:GM,minimumCharacters:1},{marker:":",feed:function(e){return new Promise(((t,o)=>{const n=KM.filter((t=>function(e,t,o){if(t.includes(e))return!0;if(0!==o.length)for(let t=0;t({id:e.id,name:e.id.replace(/:/g,""),text:e.symbol,type:"emoji"})));t(n)}))},itemRenderer:function(e){const t=document.createElement("span");return t.classList.add("mention-list-item"),t.textContent=`${e.text} ${e.name}`,t},minimumCharacters:1}]},language:"en",licenseKey:"GPL"};function JM(e){return(t,o)=>{const n=o.openProject.context;o.removePlugins=o.removePlugins||[];const i=n.resource;if(i&&i.canAddAttachments||o.removePlugins.push(...$M.map((e=>e.pluginName))),!1===n.macros&&(o.openProject.disableAllMacros=!0,o.removePlugins.push(...qM.map((e=>e.pluginName)))),Array.isArray(n.macros)){const e=qM.filter((e=>-1===n.macros.indexOf(e.pluginName)));o.removePlugins.push(...e)}o.disabledMentions=[];const r=n.disabledMentions;return Array.isArray(r)&&(o.disabledMentions=r),e.create(t,o).then((e=>e))}}class YM extends lw{}class QM extends lw{}window.OPConstrainedEditor=YM,window.OPClassicEditor=QM,window.OPEditorWatchdog=Uh,QM.createCustomized=JM(QM),QM.builtinPlugins=UM,QM.defaultConfig=Object.assign({},ZM),QM.defaultConfig.toolbar={items:["heading","|","bold","italic","strikethrough","code","insertCodeBlock","link","bulletedList","numberedList","todoList","imageUpload","blockQuote","|","insertTable","macroList","|","opContentRevisions","undo","redo","openProjectShowFormattingHelp","|","pageBreak","|","preview","opShowSource"]},YM.createCustomized=JM(YM),YM.builtinPlugins=UM,YM.defaultConfig=Object.assign({},ZM),YM.defaultConfig.toolbar={items:["bold","italic","strikethrough","code","insertCodeBlock","link","bulletedList","numberedList","todoList","imageUpload","blockQuote","|","opContentRevisions","undo","redo","openProjectShowFormattingHelp","preview","opShowSource"]}})(),r=r.default})())); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.OPEditor=t():e.OPEditor=t()}(self,(()=>(()=>{var e={428:e=>{var t=!0,o=!1,i=!1;function n(e,t,o){var i=e.attrIndex(t),n=[t,o];i<0?e.attrPush(n):e.attrs[i]=n}function s(e,t){for(var o=e[t].level-1,i=t-1;i>=0;i--)if(e[i].level===o)return i;return-1}function r(e,t){return"inline"===e[t].type&&function(e){return"paragraph_open"===e.type}(e[t-1])&&function(e){return"list_item_open"===e.type}(e[t-2])&&function(e){return 0===e.content.indexOf("[ ] ")||0===e.content.indexOf("[x] ")||0===e.content.indexOf("[X] ")}(e[t])}function a(e,n){if(e.children.unshift(function(e,o){var i=new o("html_inline","",0),n=t?' disabled="" ':"";0===e.content.indexOf("[ ] ")?i.content='':0!==e.content.indexOf("[x] ")&&0!==e.content.indexOf("[X] ")||(i.content='');return i}(e,n)),e.children[1].content=e.children[1].content.slice(3),e.content=e.content.slice(3),o)if(i){e.children.pop();var s="task-item-"+Math.ceil(1e7*Math.random()-1e3);e.children[0].content=e.children[0].content.slice(0,-1)+' id="'+s+'">',e.children.push(function(e,t,o){var i=new o("html_inline","",0);return i.content='",i.attrs=[{for:t}],i}(e.content,s,n))}else e.children.unshift(function(e){var t=new e("html_inline","",0);return t.content="",t}(n))}e.exports=function(e,l){l&&(t=!l.enabled,o=!!l.label,i=!!l.labelAfter),e.core.ruler.after("inline","github-task-lists",(function(e){for(var o=e.tokens,i=2;i{var i,n=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",i={};function n(e,t){if(!i[e]){i[e]={};for(var o=0;o>>8,o[2*i+1]=r%256}return o},decompressFromUint8Array:function(t){if(null==t)return s.decompress(t);for(var o=new Array(t.length/2),i=0,n=o.length;i>=1}else{for(n=1,i=0;i>=1}0==--u&&(u=Math.pow(2,m),m++),delete a[d]}else for(n=r[d],i=0;i>=1;0==--u&&(u=Math.pow(2,m),m++),r[c]=h++,d=String(l)}if(""!==d){if(Object.prototype.hasOwnProperty.call(a,d)){if(d.charCodeAt(0)<256){for(i=0;i>=1}else{for(n=1,i=0;i>=1}0==--u&&(u=Math.pow(2,m),m++),delete a[d]}else for(n=r[d],i=0;i>=1;0==--u&&(u=Math.pow(2,m),m++)}for(n=2,i=0;i>=1;for(;;){if(p<<=1,f==t-1){g.push(o(p));break}f++}return g.join("")},decompress:function(e){return null==e?"":""==e?null:s._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,o,i){var n,s,r,a,l,c,d,u=[],h=4,m=4,g=3,p="",f=[],b={val:i(0),position:o,index:1};for(n=0;n<3;n+=1)u[n]=n;for(r=0,l=Math.pow(2,2),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=i(b.index++)),r|=(a>0?1:0)*c,c<<=1;switch(r){case 0:for(r=0,l=Math.pow(2,8),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=i(b.index++)),r|=(a>0?1:0)*c,c<<=1;d=e(r);break;case 1:for(r=0,l=Math.pow(2,16),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=i(b.index++)),r|=(a>0?1:0)*c,c<<=1;d=e(r);break;case 2:return""}for(u[3]=d,s=d,f.push(d);;){if(b.index>t)return"";for(r=0,l=Math.pow(2,g),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=i(b.index++)),r|=(a>0?1:0)*c,c<<=1;switch(d=r){case 0:for(r=0,l=Math.pow(2,8),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=i(b.index++)),r|=(a>0?1:0)*c,c<<=1;u[m++]=e(r),d=m-1,h--;break;case 1:for(r=0,l=Math.pow(2,16),c=1;c!=l;)a=b.val&b.position,b.position>>=1,0==b.position&&(b.position=o,b.val=i(b.index++)),r|=(a>0?1:0)*c,c<<=1;u[m++]=e(r),d=m-1,h--;break;case 2:return f.join("")}if(0==h&&(h=Math.pow(2,g),g++),u[d])p=u[d];else{if(d!==m)return null;p=s+s.charAt(0)}f.push(p),u[m++]=s+p.charAt(0),s=p,0==--h&&(h=Math.pow(2,g),g++)}}};return s}();void 0===(i=function(){return n}.call(t,o,t,e))||(e.exports=i)}},t={};function o(i){var n=t[i];if(void 0!==n)return n.exports;var s=t[i]={exports:{}};return e[i](s,s.exports,o),s.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var i in t)o.o(t,i)&&!o.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{"use strict";var e={};o.r(e),o.d(e,{decode:()=>qx,encode:()=>Wx,format:()=>Ux,parse:()=>sE});var t={};o.r(t),o.d(t,{Any:()=>lE,Cc:()=>cE,Cf:()=>dE,P:()=>rE,S:()=>aE,Z:()=>uE});var i={};o.r(i),o.d(i,{arrayReplaceAt:()=>LE,assign:()=>BE,escapeHtml:()=>QE,escapeRE:()=>XE,fromCodePoint:()=>jE,has:()=>NE,isMdAsciiPunct:()=>iT,isPunctChar:()=>oT,isSpace:()=>eT,isString:()=>FE,isValidEntityCode:()=>zE,isWhiteSpace:()=>tT,lib:()=>sT,normalizeReference:()=>nT,unescapeAll:()=>UE,unescapeMd:()=>WE});var n={};function s(e){return null!==e&&("object"==typeof e||"function"==typeof e)}function r(e){return"string"==typeof e||e instanceof String}function a(e){if("object"!=typeof e)return!1;if(null==e)return!1;if(null===Object.getPrototypeOf(e))return!0;if("[object Object]"!==Object.prototype.toString.call(e)){const t=e[Symbol.toStringTag];if(null==t)return!1;return!!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable&&e.toString()===`[object ${t}]`}let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function l(e){return Object.getOwnPropertySymbols(e).filter((t=>Object.prototype.propertyIsEnumerable.call(e,t)))}function c(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}o.r(n),o.d(n,{parseLinkDestination:()=>aT,parseLinkLabel:()=>rT,parseLinkTitle:()=>lT});const d="[object RegExp]",u="[object String]",h="[object Number]",m="[object Boolean]",g="[object Arguments]",p="[object Symbol]",f="[object Date]",b="[object Map]",w="[object Set]",y="[object Array]",k="[object ArrayBuffer]",v="[object Object]",C="[object DataView]",A="[object Uint8Array]",x="[object Uint8ClampedArray]",E="[object Uint16Array]",T="[object Uint32Array]",P="[object Int8Array]",S="[object Int16Array]",I="[object Int32Array]",R="[object Float32Array]",O="[object Float64Array]";function V(e){return null==e||"object"!=typeof e&&"function"!=typeof e}function D(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function F(e,t,o,i=new Map,n=void 0){const s=n?.(e,t,o,i);if(void 0!==s)return s;if(V(e))return e;if(i.has(e))return i.get(e);if(Array.isArray(e)){const t=new Array(e.length);i.set(e,t);for(let s=0;s{const r=t?.(o,i,n,s);if(void 0!==r)return r;if("object"==typeof e){if(c(e)===v&&"function"!=typeof e.constructor){const t={};return s.set(e,t),M(t,e,n,s),t}switch(Object.prototype.toString.call(e)){case h:case u:case m:{const t=new e.constructor(e?.valueOf());return M(t,e),t}case g:{const t={};return M(t,e),t.length=e.length,t[Symbol.iterator]=e[Symbol.iterator],t}default:return}}}))}function B(e){return"object"==typeof e&&null!==e}function L(e){return B(e)&&1===e.nodeType&&!a(e)}function z(e){return"function"==typeof e}function j(e){return N(e)}function q(e){return"__proto__"===e}function $(e){return null!==e&&"object"==typeof e&&"[object Arguments]"===c(e)}function H(e){return null!=e&&"function"!=typeof e&&function(e){return Number.isSafeInteger(e)&&e>=0}(e.length)}function W(e){return D(e)}function U(e,t,o,i){if(V(e)&&(e=Object(e)),null==t||"object"!=typeof t)return e;if(i.has(t))return function(e){if(V(e))return e;if(Array.isArray(e)||D(e)||e instanceof ArrayBuffer||"undefined"!=typeof SharedArrayBuffer&&e instanceof SharedArrayBuffer)return e.slice(0);const t=Object.getPrototypeOf(e);if(null==t)return Object.assign(Object.create(t),e);const o=t.constructor;if(e instanceof Date||e instanceof Map||e instanceof Set)return new o(e);if(e instanceof RegExp){const t=new o(e);return t.lastIndex=e.lastIndex,t}if(e instanceof DataView)return new o(e.buffer.slice(0));if(e instanceof Error){let t;return t=e instanceof AggregateError?new o(e.errors,e.message,{cause:e.cause}):new o(e.message,{cause:e.cause}),t.stack=e.stack,Object.assign(t,e),t}if("undefined"!=typeof File&&e instanceof File)return new o([e],e.name,{type:e.type,lastModified:e.lastModified});if("object"==typeof e){const o=Object.create(t);return Object.assign(o,e)}return e}(i.get(t));if(i.set(t,e),Array.isArray(t)){t=t.slice();for(let e=0;e-1}function ee(e){return e.indexOf("windows")>-1}function te(e){return!!e.match(/gecko\/\d+/)}function oe(e){return e.indexOf(" applewebkit/")>-1&&-1===e.indexOf("chrome")}function ie(e){return!!e.match(/iphone|ipad/i)||X(e)&&navigator.maxTouchPoints>0}function ne(e){return e.indexOf("android")>-1}function se(e){return e.indexOf("chrome/")>-1&&e.indexOf("edge/")<0}function re(){let e=!1;try{e=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch{}return e}function ae(e,t,o,i){o=o||function(e,t){return e===t};const n=Array.isArray(e)?e:Array.prototype.slice.call(e),s=Array.isArray(t)?t:Array.prototype.slice.call(t),r=function(e,t,o){const i=le(e,t,o);if(-1===i)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const n=ce(e,i),s=ce(t,i),r=le(n,s,o),a=e.length-r,l=t.length-r;return{firstIndex:i,lastIndexOld:a,lastIndexNew:l}}(n,s,o),a=i?function(e,t){const{firstIndex:o,lastIndexOld:i,lastIndexNew:n}=e;if(-1===o)return Array(t).fill("equal");let s=[];o>0&&(s=s.concat(Array(o).fill("equal")));n-o>0&&(s=s.concat(Array(n-o).fill("insert")));i-o>0&&(s=s.concat(Array(i-o).fill("delete")));n0&&o.push({index:i,type:"insert",values:e.slice(i,s)});n-i>0&&o.push({index:i+(s-i),type:"delete",howMany:n-i});return o}(s,r);return a}function le(e,t,o){for(let i=0;i200||n>200||i+n>300)return de.fastDiff(e,t,o,!0);let s,r;if(nc?-1:1;d[i+h]&&(d[i]=d[i+h].slice(0)),d[i]||(d[i]=[]),d[i].push(n>c?s:r);let m=Math.max(n,c),g=m-i;for(;gc;m--)u[m]=h(m);u[c]=h(c),g++}while(u[c]!==l);return d[c].slice(1)}de.fastDiff=ae;class ue{source;name;path;stop;off;return;constructor(e,t){this.source=e,this.name=t,this.path=[],this.stop=function e(){e.called=!0},this.off=function e(){e.called=!0}}}const he=new Array(256).fill("").map(((e,t)=>("0"+t.toString(16)).slice(-2)));function me(){const[e,t,o,i]=crypto.getRandomValues(new Uint32Array(4));return"e"+he[255&e]+he[e>>8&255]+he[e>>16&255]+he[e>>24&255]+he[255&t]+he[t>>8&255]+he[t>>16&255]+he[t>>24&255]+he[255&o]+he[o>>8&255]+he[o>>16&255]+he[o>>24&255]+he[255&i]+he[i>>8&255]+he[i>>16&255]+he[i>>24&255]}const ge={get(e="normal"){return"number"!=typeof e?this[e]||this.normal:e},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5};function pe(e,t){const o=ge.get(t.priority);let i=0,n=e.length;for(;i>1;ge.get(e[t].priority){if("object"==typeof t&&null!==t){if(i.has(t))return`[object ${t.constructor.name}]`;i.add(t)}return t},s=t?` ${JSON.stringify(t,n)}`:"",r=we(e),a=o?`\nOriginal error: ${o.name}: ${o.message}`:"";return e+s+r+a}(e,o,i)),this.name="CKEditorError",this.context=t,this.data=o,i&&(this.stack=i.stack)}is(e){return"CKEditorError"===e}static rethrowUnexpectedError(e,t){if(e.is&&e.is("CKEditorError"))throw e;throw new fe("unexpected-error",t,void 0,e)}}function be(e,t){console.warn(...ye(e,t))}function we(e){return`\nRead more: https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html#error-${e}`}function ye(e,t){const o=we(e);return t?[e,t,o]:[e,o]}const _e=new Date(2026,2,31);if(globalThis.CKEDITOR_VERSION)throw new fe("ckeditor-duplicated-modules",null);globalThis.CKEDITOR_VERSION="48.0.0";const ke=Symbol("listeningTo"),ve=Symbol("emitterId"),Ce=Symbol("delegations"),Ae=xe(Object);function xe(e){if(!e)return Ae;return class extends e{on(e,t,o){this.listenTo(this,e,t,o)}once(e,t,o){let i=!1;this.listenTo(this,e,((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 n,s;this[ke]||(this[ke]={});const r=this[ke];Te(e)||Ee(e);const a=Te(e);(n=r[a])||(n=r[a]={emitter:e,callbacks:{}}),(s=n.callbacks[t])||(s=n.callbacks[t]=[]),s.push(o),function(e,t,o,i,n){t._addEventListener?t._addEventListener(o,i,n):e._addEventListener.call(t,o,i,n)}(this,e,t,o,i)}stopListening(e,t,o){const i=this[ke];let n=e&&Te(e);const s=i&&n?i[n]:void 0,r=s&&t?s.callbacks[t]:void 0;if(!(!i||e&&!s||t&&!r))if(o){Re(this,e,t,o);-1!==r.indexOf(o)&&(1===r.length?delete s.callbacks[t]:Re(this,e,t,o))}else if(r){for(;o=r.pop();)Re(this,e,t,o);delete s.callbacks[t]}else if(s){for(t in s.callbacks)this.stopListening(e,t);delete i[n]}else{for(n in i)this.stopListening(i[n].emitter);delete this[ke]}}fire(e,...t){try{const o=e instanceof ue?e:new ue(this,e),i=o.name;let n=function(e,t){if(!e._events)return null;let o=t;do{const t=e._events[o];if(t&&t.callbacks&&t.callbacks.length)return t.callbacks;const i=o.lastIndexOf(":");o=i>-1?o.substring(0,i):""}while(o);return null}(this,i);if(o.path.push(this),n){n=n.slice();for(let e=0;e{this[Ce]||(this[Ce]=new Map),e.forEach((e=>{const i=this[Ce].get(e);i?i.set(t,o):this[Ce].set(e,new Map([[t,o]]))}))}}}stopDelegating(e,t){if(this[Ce])if(e)if(t){const o=this[Ce].get(e);o&&o.delete(t)}else this[Ce].delete(e);else this[Ce].clear()}_addEventListener(e,t,o){!function(e,t){const o=Pe(e);if(o[t])return;let i=t,n=null;const s=[];for(;""!==i&&!o[i];)o[i]={callbacks:[],childEvents:[]},s.push(o[i]),n&&o[i].childEvents.push(n),n=i,i=i.substr(0,i.lastIndexOf(":"));if(""!==i){for(const e of s)e.callbacks=o[i].callbacks.slice();o[i].childEvents.push(n)}}(this,e);const i=Se(this,e),n={callback:t,priority:ge.get(o.priority)};for(const e of i)pe(e,n)}_removeEventListener(e,t){const o=Se(this,e);for(const e of o)for(let o=0;o{this.set(t,e[t])}),this);Le(this);const o=this[Oe];if(e in this&&!o.has(e))throw new fe("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 n=this.fire(`set:${e}`,e,t,i);void 0===n&&(n=t),i===n&&o.has(e)||(o.set(e,n),this.fire(`change:${e}`,e,n,i))}}),this[e]=t}bind(...e){if(!e.length||!qe(e))throw new fe("observable-bind-wrong-properties",this);if(new Set(e).size!==e.length)throw new fe("observable-bind-duplicate-properties",this);Le(this);const t=this[De];e.forEach((e=>{if(t.has(e))throw new fe("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:ze,toMany:je,_observable:this,_bindProperties:e,_to:[],_bindings:o}}unbind(...e){if(!this[Oe])return;const t=this[De],o=this[Ve];if(e.length){if(!qe(e))throw new fe("observable-unbind-wrong-properties",this);e.forEach((e=>{const i=t.get(e);i&&(i.to.forEach((([e,t])=>{const n=o.get(e),s=n[t];s.delete(i),s.size||delete n[t],Object.keys(n).length||(o.delete(e),this.stopListening(e,"change"))})),t.delete(e))}))}else o.forEach(((e,t)=>{this.stopListening(t,"change")})),o.clear(),t.clear()}decorate(e){Le(this);const t=this[e];if(!t)throw new fe("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][Me]=t,this[Fe]||(this[Fe]=[]),this[Fe].push(e)}stopListening(e,t,o){if(!e&&this[Fe]){for(const e of this[Fe])this[e]=this[e][Me];delete this[Fe]}super.stopListening(e,t,o)}[Oe];[Fe];[De];[Ve]}}function Le(e){e[Oe]||(Object.defineProperty(e,Oe,{value:new Map}),Object.defineProperty(e,Ve,{value:new Map}),Object.defineProperty(e,De,{value:new Map}))}function ze(...e){const t=function(...e){if(!e.length)throw new fe("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 fe("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 fe("observable-bind-to-no-callback",this);if(i>1&&t.callback)throw new fe("observable-bind-to-extra-callback",this);var n;t.to.forEach((e=>{if(e.properties.length&&e.properties.length!==i)throw new fe("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),n=this._observable,this._to.forEach((e=>{const t=n[Ve];let o;t.get(e.observable)||n.listenTo(e.observable,"change",((i,s)=>{o=t.get(e.observable)[s],o&&o.forEach((e=>{$e(n,e.property)}))}))})),function(e){let t;e._bindings.forEach(((o,i)=>{e._to.forEach((n=>{t=n.properties[o.callback?0:e._bindProperties.indexOf(i)],o.to.push([n.observable,t]),function(e,t,o,i){const n=e[Ve],s=n.get(o),r=s||{};r[i]||(r[i]=new Set);r[i].add(t),s||n.set(o,r)}(e._observable,o,n.observable,t)}))}))}(this),this._bindProperties.forEach((e=>{$e(this._observable,e)}))}function je(e,t,o){if(this._bindings.size>1)throw new fe("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 qe(e){return e.every((e=>"string"==typeof e))}function $e(e,t){const o=e[De].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)}function He(e){let t=0;for(const o of e)t++;return t}function We(e,t){const o=Math.min(e.length,t.length);for(let i=0;i{this._setToTarget(e,i,t[i],o)}))}}function Je(e){return N(e,Ze)}function Ze(e){return L(e)||"function"==typeof e?e:void 0}function Qe(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}function Ye(e){const t=Object.prototype.toString.apply(e);return"[object Window]"==t||"[object global]"==t}const Xe=et(xe());function et(e){if(!e)return Xe;return class extends e{listenTo(e,t,o,i={}){if(Qe(e)||Ye(e)||e instanceof J.window.EventTarget){const n={capture:!!i.useCapture,passive:!!i.usePassive},s=this._getProxyEmitter(e,n)||new tt(e,n);this.listenTo(s,t,o,i)}else super.listenTo(e,t,o,i)}stopListening(e,t,o){if(Qe(e)||Ye(e)||e instanceof J.window.EventTarget){const i=this._getAllProxyEmitters(e);for(const e of i)this.stopListening(e,t,o)}else super.stopListening(e,t,o)}_getProxyEmitter(e,t){return function(e,t){const o=e[ke];return o&&o[t]?o[t].emitter:null}(this,ot(e,t))}_getAllProxyEmitters(e){return[{capture:!1,passive:!1},{capture:!1,passive:!0},{capture:!0,passive:!1},{capture:!0,passive:!0}].map((t=>this._getProxyEmitter(e,t))).filter((e=>!!e))}}}class tt extends(xe()){_domNode;_options;constructor(e,t){super(),Ee(this,ot(e,t)),this._domNode=e,this._options=t}_domListeners;attach(e){if(this._domListeners&&this._domListeners[e])return;const t=this._createDomListener(e);this._domNode.addEventListener(e,t,this._options),this._domListeners||(this._domListeners={}),this._domListeners[e]=t}detach(e){let t;!this._domListeners[e]||(t=this._events[e])&&t.callbacks.length||this._domListeners[e].removeListener()}_addEventListener(e,t,o){this.attach(e),xe().prototype._addEventListener.call(this,e,t,o)}_removeEventListener(e,t){xe().prototype._removeEventListener.call(this,e,t),this.detach(e)}_createDomListener(e){const t=t=>{this.fire(e,t)};return t.removeListener=()=>{this._domNode.removeEventListener(e,t,this._options),delete this._domListeners[e]},t}}function ot(e,t){let o=function(e){return e["data-ck-expando"]||(e["data-ck-expando"]=me())}(e);for(const e of Object.keys(t).sort())t[e]&&(o+="-"+e);return o}function it(e){const t=[];let o=e;for(;o&&o.nodeType!=Node.DOCUMENT_NODE;)t.unshift(o),o=o.parentNode;return t}function nt(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)}}function st(e){if(!e.target)return null;const t=e.target.ownerDocument,o=e.clientX,i=e.clientY;let n=null;return t.caretRangeFromPoint&&t.caretRangeFromPoint(o,i)?n=t.caretRangeFromPoint(o,i):e.rangeParent&&(n=t.createRange(),n.setStart(e.rangeParent,e.rangeOffset),n.collapse(!0)),n}function rt(e){return e&&e.parentNode?e.offsetParent===J.document.body?null:e.offsetParent:null}function at(e){return"[object Text]"==Object.prototype.toString.call(e)}function lt(e){return"[object Range]"==Object.prototype.toString.apply(e)}const ct=["top","right","bottom","left","width","height"],dt=new Set(["relative","absolute","fixed","sticky"]);class ut{top;right;bottom;left;width;height;_source;constructor(e){const t=lt(e);if(Object.defineProperty(this,"_source",{value:e._source||e,writable:!0,enumerable:!1}),gt(e)||t)if(t){const t=ut.getDomRangeRects(e);ht(this,ut.getBoundingRect(t))}else ht(this,e.getBoundingClientRect());else if(Ye(e)){const{innerWidth:t,innerHeight:o}=e;ht(this,{top:0,right:t,bottom:o,left:0,width:t,height:o})}else ht(this,e)}clone(){return new ut(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),width:0,height:0};if(t.width=t.right-t.left,t.height=t.bottom-t.top,t.width<0||t.height<0)return null;{const e=new ut(t);return e._source=this._source,e}}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(mt(e))return t;let o,i=e,n=e.parentNode||e.commonAncestorContainer;for(;n&&!mt(n);){const e="visible"===((s=n)instanceof HTMLElement?s.ownerDocument.defaultView.getComputedStyle(s).overflow:"visible");if(ft(i)&&(o=i),e||o&&"absolute"===pt(o)&&!ft(n)){i=n,n=n.parentNode;continue}const r=new ut(n),a=t.getIntersection(r);if(!a)return null;a.getArea(){const o=new ut(t);return o._source=e,o}))}static getBoundingRect(e){const t={left:Number.POSITIVE_INFINITY,top:Number.POSITIVE_INFINITY,right:Number.NEGATIVE_INFINITY,bottom:Number.NEGATIVE_INFINITY,width:0,height:0};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 ut(t))}}function ht(e,t){for(const o of ct)e[o]=t[o]}function mt(e){return!!gt(e)&&e===e.ownerDocument.body}function gt(e){return null!==e&&"object"==typeof e&&1===e.nodeType&&"function"==typeof e.getBoundingClientRect}function pt(e){return e.ownerDocument.defaultView.getComputedStyle(e).position}function ft(e){return e instanceof HTMLElement&&dt.has(pt(e))}class bt{_element;_callback;static _observerInstance=null;static _elementCallbacks=null;constructor(e,t){bt._observerInstance||bt._createObserver(),this._element=e,this._callback=t,bt._addElementCallback(e,t),bt._observerInstance.observe(e)}get element(){return this._element}destroy(){bt._deleteElementCallback(this._element,this._callback)}static _addElementCallback(e,t){bt._elementCallbacks||(bt._elementCallbacks=new Map);let o=bt._elementCallbacks.get(e);o||(o=new Set,bt._elementCallbacks.set(e,o)),o.add(t)}static _deleteElementCallback(e,t){const o=bt._getElementCallbacks(e);o&&(o.delete(t),o.size||(bt._elementCallbacks.delete(e),bt._observerInstance.unobserve(e))),bt._elementCallbacks&&!bt._elementCallbacks.size&&(bt._observerInstance=null,bt._elementCallbacks=null)}static _getElementCallbacks(e){return bt._elementCallbacks?bt._elementCallbacks.get(e):null}static _createObserver(){bt._observerInstance=new J.window.ResizeObserver((e=>{for(const t of e){const e=bt._getElementCallbacks(t.target);if(e)for(const o of e)o(t)}}))}}function wt(e,t){e instanceof HTMLTextAreaElement&&(e.value=t),e.innerHTML=t}function yt(e){return t=>t+e}function _t(e){let t=0;for(;e.previousSibling;)e=e.previousSibling,t++;return t}function kt(e,t,o){e.insertBefore(o,e.childNodes[t]||null)}function vt(e){return e&&e.nodeType===Node.COMMENT_NODE}function Ct(e){return!!e&&(at(e)?Ct(e.parentElement):!!e.getClientRects&&!!e.getClientRects().length)}function At({element:e,target:t,positions:o,limiter:i,fitInViewport:n,viewportOffsetConfig:s}){z(t)&&(t=t()),z(i)&&(i=i());const r=rt(e),a=Et(s),l=new ut(e),c=xt(t,a);let d;if(!c||!a.getIntersection(c))return null;const u={targetRect:c,elementRect:l,positionedElementAncestor:r,viewportRect:a};if(i||n){if(i){const e=xt(i,a);e&&(u.limiterRect=e)}d=function(e,t){const{elementRect:o}=t,i=o.getArea(),n=e.map((e=>new Tt(e,t))).filter((e=>!!e.name));let s=0,r=null;for(const e of n){const{limiterIntersectionArea:t,viewportIntersectionArea:o}=e;if(t===i)return e;const n=o**2+t**2;n>s&&(s=n,r=e)}return r}(o,u)}else d=new Tt(o[0],u);return d}function xt(e,t){const o=new ut(e).getVisible();return o?o.getIntersection(t):null}function Et(e){e=Object.assign({top:0,bottom:0,left:0,right:0},e);const t=new ut(J.window);return t.top+=e.top,t.height-=e.top,t.bottom-=e.bottom,t.height-=e.bottom,t.left+=e.left,t.right-=e.right,t.width-=e.left+e.right,t}class Tt{name;config;_positioningFunctionCoordinates;_options;_cachedRect;_cachedAbsoluteRect;constructor(e,t){const o=e(t.targetRect,t.elementRect,t.viewportRect,t.limiterRect);if(!o)return;const{left:i,top:n,name:s,config:r}=o;this.name=s,this.config=r,this._positioningFunctionCoordinates={left:i,top:n},this._options=t}get left(){return this._absoluteRect.left}get top(){return this._absoluteRect.top}get limiterIntersectionArea(){const e=this._options.limiterRect;return e?e.getIntersectionArea(this._rect):0}get viewportIntersectionArea(){return this._options.viewportRect.getIntersectionArea(this._rect)}get _rect(){return this._cachedRect||(this._cachedRect=this._options.elementRect.clone().moveTo(this._positioningFunctionCoordinates.left,this._positioningFunctionCoordinates.top)),this._cachedRect}get _absoluteRect(){return this._cachedAbsoluteRect||(this._cachedAbsoluteRect=this._rect.toAbsoluteRect()),this._cachedAbsoluteRect}}function Pt(e){const t=e.parentNode;t&&t.removeChild(e)}function St(){const e=J.window.visualViewport;if(!e||!Y.isiOS&&!Y.isSafari)return{left:0,top:0};return{left:Math.max(Math.round(e.offsetLeft),0),top:Math.max(Math.round(e.offsetTop),0)}}function It({window:e,rect:t,alignToTop:o,forceScroll:i,viewportOffset:n}){const s=t.clone().moveBy(0,n.bottom),r=t.clone().moveBy(0,-n.top),a=new ut(e).excludeScrollbarsAndBorders(),l=o&&i,c=[r,s].every((e=>a.contains(e)));let{scrollX:d,scrollY:u}=e;const h=d,m=u;l?u-=a.top-t.top+n.top:c||(Vt(r,a)?u-=a.top-t.top+n.top:Ot(s,a)&&(u+=o?t.top-a.top-n.top:t.bottom-a.bottom+n.bottom)),c||(Dt(t,a)?d-=a.left-t.left+n.left:Ft(t,a)&&(d+=t.right-a.right+n.right)),d==h&&u===m||e.scrollTo(d,u)}function Rt({parent:e,getRect:t,alignToTop:o,forceScroll:i,ancestorOffset:n=0,limiterElement:s}){const r=Mt(e),a=o&&i;let l,c,d;const u=s||r.document.body;for(;e!=u;)c=t(),l=new ut(e).excludeScrollbarsAndBorders(),d=l.contains(c),a?e.scrollTop-=l.top-c.top+n:d||(Vt(c,l)?e.scrollTop-=l.top-c.top+n:Ot(c,l)&&(e.scrollTop+=o?c.top-l.top-n:c.bottom-l.bottom+n)),d||(Dt(c,l)?e.scrollLeft-=l.left-c.left+n:Ft(c,l)&&(e.scrollLeft+=c.right-l.right+n)),e=e.parentNode}function Ot(e,t){return e.bottom>t.bottom}function Vt(e,t){return e.topt.right}function Mt(e){return lt(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function Nt(e){if(lt(e)){let t=e.commonAncestorContainer;return at(t)&&(t=t.parentNode),t}return e.parentNode}function Bt(e,t){const o=Mt(e),i=new ut(e);if(o===t)return i;{let e=o;for(;e!=t;){const t=e.frameElement,o=new ut(t).excludeScrollbarsAndBorders();i.moveBy(o.left,o.top),e=e.parent}}return i}const Lt={ctrl:"⌃",cmd:"⌘",alt:"⌥",shift:"⇧"},zt={ctrl:"Ctrl+",alt:"Alt+",shift:"Shift+"},jt={37:"←",38:"↑",39:"→",40:"↓",9:"⇥",33:"Page Up",34:"Page Down"},qt=Gt(),$t=Object.fromEntries(Object.entries(qt).map((([e,t])=>{let o;return o=t in jt?jt[t]:e.charAt(0).toUpperCase()+e.slice(1),[t,o]})));function Ht(e){let t;if("string"==typeof e){if(t=qt[e.toLowerCase()],!t)throw new fe("keyboard-unknown-key",null,{key:e})}else t=e.keyCode+(e.altKey?qt.alt:0)+(e.ctrlKey?qt.ctrl:0)+(e.shiftKey?qt.shift:0)+(e.metaKey?qt.cmd:0);return t}function Wt(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 Ht(e.slice(0,-1));const t=Ht(e);return(Y.isMac||Y.isiOS)&&t==qt.ctrl?qt.cmd:t}(e):e)).reduce(((e,t)=>t+e),0)}function Ut(e,t){let o=Wt(e);const i=t?"Mac"===t:Y.isMac||Y.isiOS;return Object.entries(i?Lt:zt).reduce(((e,[t,i])=>(o&qt[t]&&(o&=~qt[t],e+=i),e)),"")+(o?$t[o]:"")}function Kt(e,t){const o="ltr"===t;switch(e){case qt.arrowleft:return o?"left":"right";case qt.arrowright:return o?"right":"left";case qt.arrowup:return"up";case qt.arrowdown:return"down"}}function Gt(){const e={pageup:33,pagedown:34,end:35,home:36,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++){e[String.fromCharCode(t).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;return Object.assign(e,{"'":222,",":108,"-":109,".":110,"/":111,";":186,"=":187,"[":219,"\\":220,"]":221,"`":223}),e}const Jt=["ar","ara","dv","div","fa","per","fas","he","heb","ku","kur","ug","uig","ur","urd"];function Zt(e){return Jt.includes(e)?"rtl":"ltr"}function Qt(e){return Array.isArray(e)?e:[e]}function Yt(e,t,o=1,i){if("number"!=typeof o)throw new fe("translation-service-quantity-not-a-number",null,{quantity:o});const n=i||J.window.CKEDITOR_TRANSLATIONS,s=function(e){return Object.keys(e).length}(n);1===s&&(e=Object.keys(n)[0]);const r=t.id||t.string;if(0===s||!function(e,t,o){return!!o[e]&&!!o[e].dictionary[t]}(e,r,n))return 1!==o?t.plural:t.string;const a=n[e].dictionary,l=n[e].getPluralForm||(e=>1===e?0:1),c=a[r];if("string"==typeof c)return c;return c[Number(l(o))]}J.window.CKEDITOR_TRANSLATIONS||(J.window.CKEDITOR_TRANSLATIONS={});class Xt{uiLanguage;uiLanguageDirection;contentLanguage;contentLanguageDirection;t;translations;constructor({uiLanguage:e="en",contentLanguage:t,translations:o}={}){this.uiLanguage=e,this.contentLanguage=t||this.uiLanguage,this.uiLanguageDirection=Zt(this.uiLanguage),this.contentLanguageDirection=Zt(this.contentLanguage),this.translations=function(e){return Array.isArray(e)?e.reduce(((e,t)=>G(e,t))):e}(o),this.t=(e,t)=>this._t(e,t)}_t(e,t=[]){t=Qt(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)=>othis._items.length||t<0)throw new fe("collection-add-item-invalid-index",this);let o=0;for(const i of e){const e=this._getItemIdBeforeAdding(i),n=t+o;this._items.splice(n,0,i),this._itemMap.set(e,i),this.fire("add",i,n),o++}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 fe("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 t&&this._itemMap.has(t)}}getIndex(e){let t;return t="string"==typeof e?this._itemMap.get(e):e,t?this._items.indexOf(t):-1}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)}forEach(e,t){this._items.forEach(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 fe("collection-bind-to-rebind",this);return this._bindToCollection=e,{as:e=>{this._setUpBindToBinding((t=>new e(t)))},using:e=>{"function"==typeof e?this._setUpBindToBinding(e):this._setUpBindToBinding((t=>t[e]))}}}_setUpBindToBinding(e){const t=this._bindToCollection,o=(o,i,n)=>{const s=t._bindToCollection==this,r=t._bindToInternalToExternalMap.get(i);if(s&&r)this._bindToExternalToInternalMap.set(i,r),this._bindToInternalToExternalMap.set(r,i);else{const o=e(i);if(!o)return void this._skippedIndexesFromExternal.push(n);let s=n;for(const e of this._skippedIndexesFromExternal)n>e&&s--;for(const e of t._skippedIndexesFromExternal)s>=e&&s++;this._bindToExternalToInternalMap.set(i,o),this._bindToInternalToExternalMap.set(o,i),this.add(o,s);for(let e=0;e{const i=this._bindToExternalToInternalMap.get(t);i&&this.remove(i),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce(((e,t)=>(ot&&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 fe("collection-add-invalid-id",this);if(this.get(o))throw new fe("collection-add-item-already-exists",this)}else e[t]=o=me();return o}_remove(e){let t,o,i,n=!1;const s=this._idProperty;if("string"==typeof e?(o=e,i=this._itemMap.get(o),n=!i,i&&(t=this._items.indexOf(i))):"number"==typeof e?(t=e,i=this._items[t],n=!i,i&&(o=i[s])):(i=e,o=i[s],t=this._items.indexOf(i),n=-1==t||!this._itemMap.get(o)),n)throw new fe("collection-remove-404",this);this._items.splice(t,1),this._itemMap.delete(o);const r=this._bindToInternalToExternalMap.get(i);return this._bindToInternalToExternalMap.delete(i),this._bindToExternalToInternalMap.delete(r),this.fire("remove",i,t),[i,t]}[Symbol.iterator](){return this._items[Symbol.iterator]()}}function to(e){const t=e.next();return t.done?null:t.value}class oo extends(et(Be())){_elements=new Set;_externalViews=new Set;_blurTimeout=null;constructor(){super(),this.set("isFocused",!1),this.set("focusedElement",null)}get elements(){return Array.from(this._elements.values())}get externalViews(){return Array.from(this._externalViews.values())}add(e){if(no(e))this._addElement(e);else if(io(e))this._addView(e);else{if(!e.element)throw new fe("focustracker-add-view-missing-element",{focusTracker:this,view:e});this._addElement(e.element)}}remove(e){no(e)?this._removeElement(e):io(e)?this._removeView(e):this._removeElement(e.element)}_addElement(e){if(this._elements.has(e))throw new fe("focustracker-add-element-already-exist",this);this.listenTo(e,"focus",(()=>{const t=this.externalViews.find((t=>function(e,t){if(so(e,t))return!0;return!!t.focusTracker.externalViews.find((t=>so(e,t)))}(e,t)));t?this._focus(t.element):this._focus(e)}),{useCapture:!0}),this.listenTo(e,"blur",(()=>{this._blur()}),{useCapture:!0}),this._elements.add(e)}_removeElement(e){this._elements.has(e)&&(this.stopListening(e),this._elements.delete(e)),e===this.focusedElement&&this._blur()}_addView(e){e.element&&this._addElement(e.element),this.listenTo(e.focusTracker,"change:focusedElement",(()=>{e.focusTracker.focusedElement?e.element&&this._focus(e.element):this._blur()})),this._externalViews.add(e)}_removeView(e){e.element&&this._removeElement(e.element),this.stopListening(e.focusTracker),this._externalViews.delete(e)}destroy(){this.stopListening(),this._elements.clear(),this._externalViews.clear(),this.isFocused=!1,this.focusedElement=null}_focus(e){this._clearBlurTimeout(),this.focusedElement=e,this.isFocused=!0}_blur(){if(this.elements.find((e=>e.contains(document.activeElement))))return;this.externalViews.find((e=>e.focusTracker.isFocused&&!e.focusTracker._blurTimeout))||(this._clearBlurTimeout(),this._blurTimeout=setTimeout((()=>{this.focusedElement=null,this.isFocused=!1}),0))}_clearBlurTimeout(){clearTimeout(this._blurTimeout),this._blurTimeout=null}}function io(e){return"focusTracker"in e&&e.focusTracker instanceof oo}function no(e){return L(e)}function so(e,t){return!!t.element&&t.element.contains(document.activeElement)&&e.contains(t.element)}class ro{_listener;constructor(){this._listener=new(et())}listenTo(e){this._listener.listenTo(e,"keydown",((e,t)=>{this._listener.fire("_keydown:"+Ht(t),t)}))}set(e,t,o={}){const i=Wt(e),n=o.priority;this._listener.listenTo(this._listener,"_keydown:"+i,((e,i)=>{o.filter&&!o.filter(i)||(t(i,(()=>{i.preventDefault(),i.stopPropagation(),e.stop()})),e.return=!0)}),{priority:n})}press(e){return!!this._listener.fire("_keydown:"+Ht(e),e)}stopListening(e){this._listener.stopListening(e)}destroy(){this.stopListening()}}function ao(e){return Ue(e)?new Map(e):function(e){const t=new Map;for(const o in e)t.set(o,e[o]);return t}(e)}function lo(e,t,o){const i=e.length,n=t.length;for(let t=i-1;t>=o;t--)e[t+n]=e[t];for(let i=0;ie(...n)),t)}return i.cancel=()=>{clearTimeout(o)},i}function uo(e){try{if(!e.startsWith("ey"))return null;const t=atob(e.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(t)}catch{return null}}function ho(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 mo(e,t){return!!(o=e.charAt(t))&&1==o.length&&/[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(o);var o}const go=fo();function po(e,t){const o=String(e).matchAll(go);return Array.from(o).some((e=>e.indexe.source)).join("|")+")";return new RegExp(`${e}|${t}(?:‍${t})*`,"ug")}function bo(e){if(!e)return null;const t=function(e){const t=e.split(".");if(3!=t.length)return null;return t[1]}(e);return t?uo(t):null}function wo(e){switch(typeof e){case"number":case"symbol":return!1;case"string":return e.includes(".")||e.includes("[")||e.includes("]")}}function yo(e){return"string"==typeof e||"symbol"==typeof e?e:Object.is(e?.valueOf?.(),-0)?"-0":String(e)}function _o(e){if(null==e)return"";if("string"==typeof e)return e;if(Array.isArray(e))return e.map(_o).join(",");const t=String(e);return"0"===t&&Object.is(Number(e),-0)?"-0":t}function ko(e){if(Array.isArray(e))return e.map(yo);if("symbol"==typeof e)return[e];const t=[],o=(e=_o(e)).length;if(0===o)return t;let i=0,n="",s="",r=!1;for(46===e.charCodeAt(0)&&(t.push(""),i++);i{const i=e[t];Object.hasOwn(e,t)&&Co(i,o)&&(void 0!==o||t in e)||(e[t]=o)},xo=/^(?:0|[1-9]\d*)$/;function Eo(e,t=Number.MAX_SAFE_INTEGER){switch(typeof e){case"number":return Number.isInteger(e)&&e>=0&&eo),(()=>{}))}function Oo(e){const t=e?.constructor;return e===("function"==typeof t?t.prototype:Object.prototype)}function Vo(e){if(!e)return 0===e?e:0;if((e=function(e){return To(e)?NaN:Number(e)}(e))===1/0||e===-1/0){return(e<0?-1:1)*Number.MAX_VALUE}return e==e?e:0}function Do(e,t){if((e=function(e){const t=Vo(e),o=t%1;return o?t-o:t}(e))<1||!Number.isSafeInteger(e))return[];const o=new Array(e);for(let i=0;i`${e}`)),o=new Set(t);i=e,"undefined"!=typeof Buffer&&Buffer.isBuffer(i)&&(o.add("offset"),o.add("parent"));var i;W(e)&&(o.add("buffer"),o.add("byteLength"),o.add("byteOffset"));const n=Mo(e).filter((e=>!o.has(e)));if(Array.isArray(e))return[...t,...n];return[...t.filter((t=>Object.hasOwn(e,t))),...n]}(e):Oo(e)?function(e){const t=Mo(e);return t.filter((e=>"constructor"!==e))}(e):Mo(e);default:return Mo(Object(e))}}function Mo(e){const t=[];for(const o in e)t.push(o);return t}function No(e,...t){for(let o=0;o{null!==s&&(e.apply(n,s),n=void 0,s=null)};let c=null;const d=()=>{null!=c&&clearTimeout(c),c=setTimeout((()=>{c=null,a&&l(),u()}),t)},u=()=>{null!==c&&(clearTimeout(c),c=null),n=void 0,s=null},h=function(...e){if(o?.aborted)return;n=this,s=e;const t=null==c;d(),r&&t&&l()};return h.schedule=d,h.cancel=u,h.flush=()=>{l()},o?.addEventListener("abort",u,{once:!0}),h}function zo(e,t=0,o={}){"object"!=typeof o&&(o={});const{leading:i=!1,trailing:n=!0,maxWait:s}=o,r=Array(2);let a;i&&(r[0]="leading"),n&&(r[1]="trailing");let l=null;const c=Lo((function(...t){a=e.apply(this,t),l=null}),t,{edges:r}),d=function(...t){return null!=s&&(null===l&&(l=Date.now()),Date.now()-l>=s)?(a=e.apply(this,t),l=Date.now(),c.cancel(),c.schedule(),a):(c.apply(this,t),a)};return d.cancel=c.cancel,d.flush=()=>(c.flush(),a),d}function jo(e,t){if(!Number.isInteger(e)||e<0)throw new Error("n must be a non-negative integer.");let o=0;return(...i)=>{if(++o>=e)return t(...i)}}function qo(e){if(!e||"object"!=typeof e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t))&&"[object Object]"===Object.prototype.toString.call(e)}function $o(e,t,o){return Ho(e,t,void 0,void 0,void 0,void 0,o)}function Ho(e,t,o,i,n,s,r){const a=r(e,t,o,i,n,s);if(void 0!==a)return a;if(typeof e==typeof t)switch(typeof e){case"bigint":case"string":case"boolean":case"symbol":case"undefined":case"function":return e===t;case"number":return e===t||Object.is(e,t);case"object":return Wo(e,t,s,r)}return Wo(e,t,s,r)}function Wo(e,t,o,i){if(Object.is(e,t))return!0;let n=c(e),s=c(t);if(n===g&&(n=v),s===g&&(s=v),n!==s)return!1;switch(n){case u:return e.toString()===t.toString();case h:return Co(e.valueOf(),t.valueOf());case m:case f:case p:return Object.is(e.valueOf(),t.valueOf());case d:return e.source===t.source&&e.flags===t.flags;case"[object Function]":return e===t}const r=(o=o??new Map).get(e),a=o.get(t);if(null!=r&&null!=a)return r===t;o.set(e,t),o.set(t,e);try{switch(n){case b:if(e.size!==t.size)return!1;for(const[n,s]of e.entries())if(!t.has(n)||!Ho(s,t.get(n),n,e,t,o,i))return!1;return!0;case w:{if(e.size!==t.size)return!1;const n=Array.from(e.values()),s=Array.from(t.values());for(let r=0;rHo(a,n,void 0,e,t,o,i)));if(-1===l)return!1;s.splice(l,1)}return!0}case y:case A:case x:case E:case T:case"[object BigUint64Array]":case P:case S:case I:case"[object BigInt64Array]":case R:case O:if("undefined"!=typeof Buffer&&Buffer.isBuffer(e)!==Buffer.isBuffer(t))return!1;if(e.length!==t.length)return!1;for(let n=0;n{}),$o(e,t,((...i)=>{const n=o(...i);return void 0!==n?Boolean(n):e instanceof Map&&t instanceof Map||e instanceof Set&&t instanceof Set?Uo(Array.from(e),Array.from(t),jo(2,o)):void 0}))}function Ko(e,t){return $o(e,t,K)}function Go(e){if(V(e))return e;const t=c(e);if(!function(e){switch(c(e)){case g:case y:case k:case C:case m:case f:case R:case O:case P:case S:case I:case b:case h:case v:case d:case w:case u:case p:case A:case x:case E:case T:return!0;default:return!1}}(e))return{};if(o=e,Array.isArray(o)){const t=Array.from(e);return e.length>0&&"string"==typeof e[0]&&Object.hasOwn(e,"index")&&(t.index=e.index,t.input=e.input),t}var o;if(W(e)){const t=e;return new(0,t.constructor)(t.buffer,t.byteOffset,t.length)}if(t===k)return new ArrayBuffer(e.byteLength);if(t===C){const t=e,o=t.buffer,i=t.byteOffset,n=t.byteLength,s=new ArrayBuffer(n),r=new Uint8Array(o,i,n);return new Uint8Array(s).set(r),new DataView(s)}if(t===m||t===h||t===u){const o=new(0,e.constructor)(e.valueOf());return t===u?function(e,t){const o=t.valueOf().length;for(const i in t)Object.hasOwn(t,i)&&(Number.isNaN(Number(i))||Number(i)>=o)&&(e[i]=t[i])}(o,e):Jo(o,e),o}if(t===f)return new Date(Number(e));if(t===d){const t=e,o=new RegExp(t.source,t.flags);return o.lastIndex=t.lastIndex,o}if(t===p)return Object(Symbol.prototype.valueOf.call(e));if(t===b){const t=e,o=new Map;return t.forEach(((e,t)=>{o.set(t,e)})),o}if(t===w){const t=e,o=new Set;return t.forEach((e=>{o.add(e)})),o}if(t===g){const t=e,o={};return Jo(o,t),o.length=t.length,o[Symbol.iterator]=t[Symbol.iterator],o}const i={};return function(e,t){const o=Object.getPrototypeOf(t);if(null!==o){"function"==typeof t.constructor&&Object.setPrototypeOf(e,o)}}(i,e),Jo(i,e),function(e,t){const o=Object.getOwnPropertySymbols(t);for(let i=0;iei([[t,r]],e)))}Zo.has(s)||(Zo.set(s,new Map),s.registerPostFixer((e=>ei(Zo.get(s),e))),s.on("change:isComposing",(()=>{e.change((e=>ei(Zo.get(s),e)))}),{priority:"high"})),t.is("editableElement")&&t.on("change:placeholder",((e,t,o)=>r(o))),t.placeholder?r(t.placeholder):o&&r(o),o&&function(){Qo||be("enableViewPlaceholder-deprecated-text-option");Qo=!0}()}function Xo(e,t){return!!t.hasClass("ck-placeholder")&&(e.removeClass("ck-placeholder",t),!0)}function ei(e,t){const o=[];let i=!1;for(const[n,s]of e)s.isDirectHost&&(o.push(n),ti(t,n,s)&&(i=!0));for(const[n,s]of e){if(s.isDirectHost)continue;const e=oi(n);e!==s.hostElement&&s.hostElement&&(t.removeAttribute("data-placeholder",s.hostElement),Xo(t,s.hostElement),s.hostElement=null,i=!0),e&&(o.includes(e)||(s.hostElement=e,ti(t,n,s)&&(i=!0)))}return i}function ti(e,t,o){const{text:i,isDirectHost:n,hostElement:s}=o;let r=!1;s.getAttribute("data-placeholder")!==i&&(e.setAttribute("data-placeholder",i,s),r=!0);return(n||1==t.childCount)&&function(e,t){if(!e.isAttached())return!1;if(function(e){for(const t of e.getChildren())if(!t.is("uiElement"))return!0;return!1}(e))return!1;const o=e.document,i=o.selection.anchor;return!(o.isComposing&&i&&i.parent===e||!t&&o.isFocused&&(!i||i.parent===e))}(s,o.keepOnFocus)?function(e,t){return!t.hasClass("ck-placeholder")&&(e.addClass("ck-placeholder",t),!0)}(e,s)&&(r=!0):Xo(e,s)&&(r=!0),r}function oi(e){if(e.childCount){const t=e.getChild(0);if(t.is("element")&&!t.is("uiElement")&&!t.is("attributeElement"))return t}return null}class ii{is(){throw new Error("is() method is abstract")}}class ni extends(xe(ii)){document;parent;constructor(e){super(),this.document=e,this.parent=null}get index(){let e;if(!this.parent)return null;if(-1==(e=this.parent.getChildIndex(this)))throw new fe("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={}){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 n=0;for(;o[n]==i[n]&&o[n];)n++;return 0===n?null:o[n-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),o=e.getPath(),i=We(t,o);switch(i){case"prefix":return!0;case"extension":return!1;default:return t[i]e.data.length)throw new fe("view-textproxy-wrong-offsetintext",this);if(o<0||t+o>e.data.length)throw new fe("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}getAncestors(e={}){const t=[];let o=e.includeSelf?this.textNode:this.parent;for(;null!==o;)t[e.parentFirst?"push":"unshift"](o),o=o.parent;return t}}ri.prototype.is=function(e){return"$textProxy"===e||"view:$textProxy"===e||"textProxy"===e||"view:textProxy"===e};class ai{_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 li(e),this._consumables.set(e,o)),o.add(t?ci(t):e._getConsumables()))}test(e,t){const o=this._consumables.get(e);return void 0===o?null:e.is("$text")||e.is("documentFragment")?o:o.test(ci(t))}consume(e,t){if(e.is("$text")||e.is("documentFragment"))return!!this.test(e,t)&&(this._consumables.set(e,!1),!0);const o=this._consumables.get(e);return void 0!==o&&o.consume(ci(t))}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(ci(t)))}static createFrom(e,t){if(t||(t=new ai),e.is("$text"))t.add(e);else if(e.is("element")||e.is("documentFragment")){t.add(e);for(const o of e.getChildren())ai.createFrom(o,t)}return t}}class li{element;_canConsumeName=null;_attributes=new Map;constructor(e){this.element=e}add(e){e.name&&(this._canConsumeName=!0);for(const[t,o]of e.attributes)if(o){let e=this._attributes.get(t);e&&"boolean"!=typeof e||(e=new Map,this._attributes.set(t,e)),e.set(o,!0)}else{if("style"==t||"class"==t)throw new fe("viewconsumable-invalid-attribute",this);this._attributes.set(t,!0)}}test(e){if(e.name&&!this._canConsumeName)return this._canConsumeName;for(const[t,o]of e.attributes){const e=this._attributes.get(t);if(void 0===e)return null;if(!1===e)return!1;if(!0!==e)if(o){const t=e.get(o);if(void 0===t)return null;if(!t)return!1}else for(const t of e.values())if(!t)return!1}return!0}consume(e){if(!this.test(e))return!1;e.name&&(this._canConsumeName=!1);for(const[t,o]of e.attributes){const e=this._attributes.get(t);if("boolean"==typeof e)for(const[e]of this.element._getConsumables(t,o).attributes)this._attributes.set(e,!1);else if(o)for(const[,i]of this.element._getConsumables(t,o).attributes)e.set(i,!1);else for(const t of e.keys())e.set(t,!1)}return!0}revert(e){e.name&&(this._canConsumeName=!0);for(const[t,o]of e.attributes){const e=this._attributes.get(t);if(!1!==e){if(void 0!==e&&!0!==e)if(o){!1===e.get(o)&&e.set(o,!0)}else for(const t of e.keys())e.set(t,!0)}else this._attributes.set(t,!0)}}}function ci(e){const t=[];return"attributes"in e&&e.attributes&&di(t,e.attributes),"classes"in e&&e.classes&&di(t,e.classes,"class"),"styles"in e&&e.styles&&di(t,e.styles,"style"),{name:e.name||!1,attributes:t}}function di(e,t,o){if("string"!=typeof t)for(const i of t)Array.isArray(i)?e.push(i):e.push(o?[o,i]:[i]);else e.push(o?[o,t]:[t])}class ui{_patterns=[];constructor(...e){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=this._isElementMatching(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=this._isElementMatching(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}_isElementMatching(e,t){if("function"==typeof t){const o=t(e);return o&&"object"==typeof o?ci(o):o}const o={};if(t.name&&(o.name=function(e,t){if(e instanceof RegExp)return!!t.match(e);return e===t}(t.name,e.name),!o.name))return null;const i=[];return t.attributes&&!function(e,t,o){let i;"object"!=typeof e||e instanceof RegExp||Array.isArray(e)?i=["class","style"]:(void 0!==e.style&&be("matcher-pattern-deprecated-attributes-style-key",e),void 0!==e.class&&be("matcher-pattern-deprecated-attributes-class-key",e));return t._collectAttributesMatch(mi(e),o,i)}(t.attributes,e,i)||t.classes&&!function(e,t,o){return t._collectAttributesMatch(mi(e,"class"),o)}(t.classes,e,i)||t.styles&&!function(e,t,o){return t._collectAttributesMatch(mi(e,"style"),o)}(t.styles,e,i)?null:(i.length&&(o.attributes=i),o)}}function hi(e,t){return!0===e||e===t||e instanceof RegExp&&!!String(t).match(e)}function mi(e,t){if(Array.isArray(e))return e.map((e=>"object"!=typeof e||e instanceof RegExp?t?[t,e,!0]:[e,!0]:(void 0!==e.key&&void 0!==e.value||be("matcher-pattern-missing-key-or-value",e),t?[t,e.key,e.value]:[e.key,e.value])));if("object"!=typeof e||e instanceof RegExp)return[t?[t,e,!0]:[e,!0]];const o=[];for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&o.push(t?[t,i,e[i]]:[i,e[i]]);return o}class gi{_styles;_cachedStyleNames=null;_cachedExpandedStyleNames=null;_styleProcessor;constructor(e){this._styles={},this._styleProcessor=e}get isEmpty(){return!Object.entries(this._styles).length}get size(){return this.isEmpty?0:this.getStyleNames().length}setTo(e){this.clear();const t=function(e){let t=null,o=0,i=0,n=null;const s=new Map;if(""===e)return s;";"!=e.charAt(e.length-1)&&(e+=";");for(let r=0;rt===e));return Array.isArray(t)}set(e,t){if(this._cachedStyleNames=null,this._cachedExpandedStyleNames=null,s(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={};for(const o of Qt(e)){const e=fi(o),i=vo(this._styles,e);if(i)bi(t,e,i);else{const e=this.getAsString(o);void 0!==e&&this._styleProcessor.toNormalizedForm(o,e,t)}}Object.keys(t).length&&(wi(this._styles,t),this._cachedStyleNames=null,this._cachedExpandedStyleNames=null)}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]&&!s(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){return this.isEmpty?[]:e?(this._cachedExpandedStyleNames||=this._styleProcessor.getStyleNames(this._styles),this._cachedExpandedStyleNames):(this._cachedStyleNames||=this.getStylesEntries().map((([e])=>e)),this._cachedStyleNames)}keys(){return this.getStyleNames()}clear(){this._styles={},this._cachedStyleNames=null,this._cachedExpandedStyleNames=null}isSimilar(e){if(this.size!==e.size)return!1;for(const t of this.getStyleNames())if(!e.has(t)||e.getAsString(t)!==this.getAsString(t))return!1;return!0}getStylesEntries(){const e=[],t=Object.keys(this._styles);for(const o of t)e.push(...this._styleProcessor.getReducedForm(o,this._styles));return e}_clone(){const e=new this.constructor(this._styleProcessor);return e.set(this.getNormalized()),e}_getTokensMatch(e,t){const o=[];for(const i of this.getStyleNames(!0))if(hi(e,i)){if(!0===t){o.push(i);continue}hi(t,this.getAsString(i))&&o.push(i)}return o.length?o:void 0}_getConsumables(e){const t=[];if(e){t.push(e);for(const o of this._styleProcessor.getRelatedStyles(e))t.push(o)}else for(const e of this.getStyleNames()){for(const o of this._styleProcessor.getRelatedStyles(e))t.push(o);t.push(e)}return t}_canMergeFrom(e){for(const t of e.getStyleNames())if(this.has(t)&&this.getAsString(t)!==e.getAsString(t))return!1;return!0}_mergeFrom(e){for(const t of e.getStyleNames())this.has(t)||this.set(t,e.getAsString(t))}_isMatching(e){for(const t of e.getStyleNames())if(!this.has(t)||this.getAsString(t)!==e.getAsString(t))return!1;return!0}}class pi{_normalizers;_extractors;_reducers;_consumables;constructor(){this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(e,t,o){if(s(t))bi(o,fi(e),t);else if(this._normalizers.has(e)){const i=this._normalizers.get(e),{path:n,value:s}=i(t);bi(o,n,s)}else bi(o,e,t)}getNormalized(e,t){if(!e)return G({},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 vo(t,o);const i=o(e,t);if(i)return i}return vo(t,fi(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=new Set;for(const o of this._consumables.keys()){const i=this.getNormalized(o,e);i&&("object"!=typeof i||Object.keys(i).length)&&t.add(o)}for(const o of Object.keys(e))t.add(o);return Array.from(t)}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 fi(e){return e.replace("-",".")}function bi(e,t,o){let i=o;s(o)&&!Array.isArray(o)&&(i=G({},vo(e,t),o)),Ro(e,t,i)}function wi(e,t){for(const o of Object.keys(t))null===e[o]||Array.isArray(e[o])||"object"!=typeof e[o]||"object"!=typeof t[o]?delete e[o]:(wi(e[o],t[o]),Object.keys(e[o]).length||delete e[o])}class yi{_set=new Set;get isEmpty(){return 0==this._set.size}get size(){return this._set.size}has(e){return this._set.has(e)}keys(){return Array.from(this._set.keys())}setTo(e){this.clear();for(const t of e.split(/\s+/))t&&this._set.add(t);return this}set(e){for(const t of Qt(e))t&&this._set.add(t)}remove(e){for(const t of Qt(e))this._set.delete(t)}clear(){this._set.clear()}toString(){return Array.from(this._set).join(" ")}isSimilar(e){if(this.size!==e.size)return!1;for(const t of this.keys())if(!e.has(t))return!1;return!0}_clone(){const e=new this.constructor;return e._set=new Set(this._set),e}_getTokensMatch(e){const t=[];if(!0===e){for(const e of this._set.keys())t.push(e);return t}if("string"==typeof e){for(const o of e.split(/\s+/)){if(!this._set.has(o))return;t.push(o)}return t}for(const o of this._set.keys())o.match(e)&&t.push(o);return t.length?t:void 0}_getConsumables(e){return e?[e]:this.keys()}_canMergeFrom(){return!0}_mergeFrom(e){for(const t of e._set.keys())this._set.has(t)||this._set.add(t)}_isMatching(e){for(const t of e._set.keys())if(!this._set.has(t))return!1;return!0}}class _i extends ni{name;_unsafeAttributesToRender=[];_attrs;_children;_customProperties=new Map;get _classes(){return this._attrs.get("class")}get _styles(){return this._attrs.get("style")}constructor(e,t,o,i){super(e),this.name=t,this._attrs=this._parseAttributes(o),this._children=[],i&&this._insertChild(0,i)}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes&&(yield"class"),this._styles&&(yield"style");for(const e of this._attrs.keys())"class"!=e&&"style"!=e&&(yield e)}*getAttributes(){for(const[e,t]of this._attrs.entries())yield[e,String(t)]}getAttribute(e){return this._attrs.has(e)?String(this._attrs.get(e)):void 0}hasAttribute(e,t){return!!this._attrs.has(e)&&(void 0===t||(vi(this.name,e)||ki(this.name,e)?this._attrs.get(e).has(t):this._attrs.get(e)===t))}isSimilar(e){if(!(e instanceof _i))return!1;if(this===e)return!0;if(this.name!=e.name)return!1;if(this._attrs.size!==e._attrs.size)return!1;for(const[t,o]of this._attrs){const i=e._attrs.get(t);if(void 0===i)return!1;if("string"==typeof o||"string"==typeof i){if(i!==o)return!1}else if(!o.isSimilar(i))return!1}return!0}hasClass(...e){for(const t of e)if(!this._classes||!this._classes.has(t))return!1;return!0}getClassNames(){const e=this._classes?this._classes.keys():[],t=e[Symbol.iterator]();return Object.assign(e,{next:t.next.bind(t)})}getStyle(e){return this._styles&&this._styles.getAsString(e)}getNormalizedStyle(e){return this._styles&&this._styles.getNormalized(e)}getStyleNames(e){return this._styles?this._styles.getStyleNames(e):[]}hasStyle(...e){for(const t of e)if(!this._styles||!this._styles.has(t))return!1;return!0}findAncestor(...e){const t=new ui(...e);let o=this.parent;for(;o&&!o.is("documentFragment");){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=this._classes?this._classes.keys().sort().join(","):"",t=this._styles&&String(this._styles),o=Array.from(this._attrs).filter((([e])=>"style"!=e&&"class"!=e)).map((e=>`${e[0]}="${e[1]}"`)).sort().join(" ");return this.name+(""==e?"":` class="${e}"`)+(t?` style="${t}"`:"")+(""==o?"":` ${o}`)}shouldRenderUnsafeAttribute(e){return this._unsafeAttributesToRender.includes(e)}toJSON(){const e=super.toJSON();if(e.name=this.name,e.type="Element",this._attrs.size&&(e.attributes=Object.fromEntries(this.getAttributes())),this._children.length>0){e.children=[];for(const t of this._children)e.children.push(t.toJSON())}return e}_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._customProperties=new Map(this._customProperties),o.getFillerOffset=this.getFillerOffset,o._unsafeAttributesToRender=this._unsafeAttributesToRender,o}_appendChild(e){return this._insertChild(this.childCount,e)}_insertChild(e,t){this._fireChange("children",this,{index:e});let o=0;const i=function(e,t){if("string"==typeof t)return[new si(e,t)];Ue(t)||(t=[t]);const o=[];for(const i of t)"string"==typeof i?o.push(new si(e,i)):i instanceof ri?o.push(new si(e,i.data)):o.push(i);return o}(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,{index:e});for(let o=e;ot&&e.selection.editableElement==this)),this.listenTo(e.selection,"change",(()=>{this.isFocused=e.isFocused&&e.selection.editableElement==this}))}destroy(){this.stopListening()}toJSON(){const e=super.toJSON();return e.type="EditableElement",e.isReadOnly=this.isReadOnly,e.isFocused=this.isFocused,e}}xi.prototype.is=function(e,t){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};const Ei=Symbol("rootName");class Ti extends xi{constructor(e,t){super(e,t),this.rootName="main"}get rootName(){return this.getCustomProperty(Ei)}set rootName(e){this._setCustomProperty(Ei,e)}toJSON(){return this.rootName}set _name(e){this.name=e}}Ti.prototype.is=function(e,t){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};class Pi{direction;boundaries;singleCharacters;shallow;ignoreElementEnd;_position;_boundaryStartParent;_boundaryEndParent;constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new fe("view-tree-walker-no-start-position",null);if(e.direction&&"forward"!=e.direction&&"backward"!=e.direction)throw new fe("view-tree-walker-unknown-direction",e.startPosition,{direction:e.direction});this.boundaries=e.boundaries||null,e.startPosition?this._position=Si._createAt(e.startPosition):this._position=Si._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}get position(){return this._position}skip(e){let t,o;do{o=this.position,t=this.next()}while(!t.done&&e(t.value));t.done||(this._position=o)}jumpTo(e){this._boundaryStartParent&&e.isBefore(this.boundaries.start)?e=this.boundaries.start:this._boundaryEndParent&&e.isAfter(this.boundaries.end)&&(e=this.boundaries.end),this._position=e.clone()}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,value:void 0};if(o===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0,value:void 0};let i;if(o&&o.is("view:$text")){if(e.isAtEnd)return this._position=Si._createAfter(o),this._next();i=o.data[e.offset]}else i=o.getChild(e.offset);if("string"==typeof i){let i;if(this.singleCharacters)i=1;else{i=(o===this._boundaryEndParent?this.boundaries.end.offset:o.data.length)-e.offset}const n=new ri(o,e.offset,i);return e.offset+=i,this._position=e,this._formatReturnValue("text",n,t,e,i)}if(i&&i.is("view:element")){if(this.shallow){if(this.boundaries&&this.boundaries.end.isBefore(e))return{done:!0,value:void 0};e.offset++}else e=new Si(i,0);return this._position=e,this._formatReturnValue("elementStart",i,t,e,1)}if(i&&i.is("view:$text")){if(this.singleCharacters)return e=new Si(i,0),this._position=e,this._next();let o,n=i.data.length;return i==this._boundaryEndParent?(n=this.boundaries.end.offset,o=new ri(i,0,n),e=Si._createAfter(o)):(o=new ri(i,0,i.data.length),e.offset++),this._position=e,this._formatReturnValue("text",o,t,e,n)}return e=Si._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,value:void 0};if(o==this._boundaryStartParent&&e.offset==this.boundaries.start.offset)return{done:!0,value:void 0};let i;if(o.is("view:$text")){if(e.isAtStart)return this._position=Si._createBefore(o),this._previous();i=o.data[e.offset-1]}else i=o.getChild(e.offset-1);if("string"==typeof i){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 n=new ri(o,e.offset,i);return this._position=e,this._formatReturnValue("text",n,t,e,i)}if(i&&i.is("view:element"))return this.shallow?(e.offset--,this._position=e,this._formatReturnValue("elementStart",i,t,e,1)):(e=new Si(i,i.childCount),this._position=e,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",i,t,e));if(i&&i.is("view:$text")){if(this.singleCharacters)return e=new Si(i,i.data.length),this._position=e,this._previous();let o,n=i.data.length;if(i==this._boundaryStartParent){const t=this.boundaries.start.offset;o=new ri(i,t,i.data.length-t),n=o.data.length,e=Si._createBefore(o)}else o=new ri(i,0,i.data.length),e.offset--;return this._position=e,this._formatReturnValue("text",o,t,e,n)}return e=Si._createBefore(o),this._position=e,this._formatReturnValue("elementStart",o,t,e,1)}_formatReturnValue(e,t,o,i,n){return t.is("view:$textProxy")&&(t.offsetInText+t.data.length==t.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?o=Si._createAfter(t.textNode):(i=Si._createAfter(t.textNode),this._position=i)),0===t.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?o=Si._createBefore(t.textNode):(i=Si._createBefore(t.textNode),this._position=i))),{done:!1,value:{type:e,item:t,previousPosition:o,nextPosition:i,length:n}}}}class Si extends ii{parent;offset;constructor(e,t){super(),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 xi);){if(!e.parent)return null;e=e.parent}return e}getShiftedBy(e){const t=Si._createAt(this),o=t.offset+e;return t.offset=o<0?0:o,t}getLastMatchingPosition(e,t={}){t.startPosition=this;const o=new Pi(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]}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=We(t,o);switch(i){case"prefix":return"before";case"extension":return"after";default:return t[i]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(Si._createBefore(e),t)}}function Ri(e){return!(!e.item.is("attributeElement")&&!e.item.is("uiElement"))}Ii.prototype.is=function(e){return"range"===e||"view:range"===e};class Oi extends(xe(ii)){_ranges;_lastRangeBackward;_isFake;_fakeSelectionLabel;constructor(...e){super(),this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",e.length&&this.setTo(...e)}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=He(this.getRanges());if(t!=He(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){let[t,o,i]=e;if("object"==typeof o&&(i=o,o=void 0),null===t)this._setRanges([]),this._setFakeOptions(i);else if(t instanceof Oi||t instanceof Vi)this._setRanges(t.getRanges(),t.isBackward),this._setFakeOptions({fake:t.isFake,label:t.fakeSelectionLabel});else if(t instanceof Ii)this._setRanges([t],i&&i.backward),this._setFakeOptions(i);else if(t instanceof Si)this._setRanges([new Ii(t)]),this._setFakeOptions(i);else if(t instanceof ni){const e=!!i&&!!i.backward;let n;if(void 0===o)throw new fe("view-selection-setto-required-second-parameter",this);n="in"==o?Ii._createIn(t):"on"==o?Ii._createOn(t):new Ii(Si._createAt(t,o)),this._setRanges([n],e),this._setFakeOptions(i)}else{if(!Ue(t))throw new fe("view-selection-setto-not-selectable",this);this._setRanges(t,i&&i.backward),this._setFakeOptions(i)}this.fire("change")}setFocus(e,t){if(null===this.anchor)throw new fe("view-selection-setfocus-no-ranges",this);const o=Si._createAt(e,t);if("same"==o.compareWith(this.focus))return;const i=this.anchor;this._ranges.pop(),"before"==o.compareWith(i)?this._addRange(new Ii(o,i),!0):this._addRange(new Ii(i,o)),this.fire("change")}toJSON(){const e={ranges:Array.from(this.getRanges()).map((e=>e.toJSON()))};return this.isBackward&&(e.isBackward=!0),this.isFake&&(e.isFake=!0),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 Ii))throw new fe("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 fe("view-selection-range-intersects",this,{addedRange:e,intersectingRange:t});this._ranges.push(new Ii(e.start,e.end))}}Oi.prototype.is=function(e){return"selection"===e||"view:selection"===e};class Vi extends(xe(ii)){_selection;constructor(...e){super(),this._selection=new Oi,this._selection.delegate("change").to(this),e.length&&this._selection.setTo(...e)}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)}toJSON(){return this._selection.toJSON()}_setTo(...e){this._selection.setTo(...e)}_setFocus(e,t){this._selection.setFocus(e,t)}}Vi.prototype.is=function(e){return"selection"===e||"documentSelection"==e||"view:selection"==e||"view:documentSelection"==e};class Di extends ue{startRange;_eventPhase;_currentTarget;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}}const Fi=Symbol("bubblingEmitter"),Mi=Symbol("bubblingCallbacks"),Ni=Symbol("bubblingContexts");function Bi(e){return class extends e{fire(e,...t){try{const o=e instanceof ue?e:new ue(this,e),i=ji(this),n=$i(this);if(Li(o,"capturing",this),zi(i,"$capture",o,...t))return o.return;const s=o.startRange||this.selection.getFirstRange(),r=s?s.getContainedElement():null,a=!!r&&function(e,t){for(const o of e)if(o(t))return!0;return!1}(n,r);let l=r||function(e){if(!e)return null;const t=e.start.parent,o=e.end.parent,i=t.getPath(),n=o.getPath();return i.length>n.length?t:o}(s);if(Li(o,"atTarget",l),!a){if(zi(i,"$text",o,...t))return o.return;Li(o,"bubbling",l)}for(;l;){if(l.is("element")&&zi(i,l,o,...t))return o.return;l=l.parent,Li(o,"bubbling",l)}return Li(o,"bubbling",this),zi(i,"$document",o,...t),o.return}catch(e){fe.rethrowUnexpectedError(e,this)}}_addEventListener(e,t,o){const i=Qt(o.context||"$document"),n=ji(this),s=qi(this);for(const e of i)"function"==typeof e&&$i(this).add(e);const r=function(e,t,o){return function(i,n){const{currentTarget:s,eventArgs:r}=n;if("string"!=typeof s){if(s.is("rootElement")&&t.includes("$root"))o.call(e,i,...r);else if(t.includes(s.name))o.call(e,i,...r);else for(const n of t)if("function"==typeof n&&n(s))return void o.call(e,i,...r)}else t.includes(s)&&o.call(e,i,...r)}}(this,i,t);s.set(t,r),this.listenTo(n,e,r,o)}_removeEventListener(e,t){const o=ji(this),i=qi(this),n=i.get(t);n&&(i.delete(t),this.stopListening(o,e,n))}}}function Li(e,t,o){e instanceof Di&&(e._eventPhase=t,e._currentTarget=o)}function zi(e,t,o,...i){return e.fire(o,{currentTarget:t,eventArgs:i}),!!o.stop.called}function ji(e){return e[Fi]||(e[Fi]=new(xe())),e[Fi]}function qi(e){return e[Mi]||(e[Mi]=new Map),e[Mi]}function $i(e){return e[Ni]||(e[Ni]=new Set),e[Ni]}class Hi extends(Bi(Be())){selection;roots;stylesProcessor;_postFixers=new Set;constructor(e){super(),this.selection=new Vi,this.roots=new eo({idProperty:"rootName"}),this.stylesProcessor=e,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1)}getRoot(e="main"){return this.roots.get(e)}registerPostFixer(e){this._postFixers.add(e)}destroy(){this.roots.forEach((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)}}class Wi extends _i{static DEFAULT_PRIORITY=10;_priority=10;_id=null;_clonesGroup=null;constructor(e,t,o,i){super(e,t,o,i),this.getFillerOffset=Ui}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new fe("attribute-element-get-elements-with-same-id-no-id",this);return new Set(this._clonesGroup)}isSimilar(e){return null!==this.id||null!==e.id?this.id===e.id:super.isSimilar(e)&&this.priority==e.priority}toJSON(){const e=super.toJSON();return e.type="AttributeElement",e}_clone(e=!1){const t=super._clone(e);return t._priority=this._priority,t._id=this._id,t}_canMergeAttributesFrom(e){return null===this.id&&null===e.id&&this.priority===e.priority&&super._canMergeAttributesFrom(e)}_canSubtractAttributesOf(e){return null===this.id&&null===e.id&&this.priority===e.priority&&super._canSubtractAttributesOf(e)}}function Ui(){if(Ki(this))return null;let e=this.parent;for(;e&&e.is("attributeElement");){if(Ki(e)>1)return null;e=e.parent}return!e||Ki(e)>1?null:this.childCount}function Ki(e){return Array.from(e.getChildren()).filter((e=>!e.is("uiElement"))).length}Wi.prototype.is=function(e,t){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};class Gi extends _i{constructor(e,t,o,i){super(e,t,o,i),this.getFillerOffset=Ji}toJSON(){const e=super.toJSON();return e.type="EmptyElement",e}_insertChild(e,t){if(t&&(t instanceof ni||Array.from(t).length>0))throw new fe("view-emptyelement-cannot-add",[this,t]);return 0}}function Ji(){return null}Gi.prototype.is=function(e,t){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};class Zi extends _i{constructor(e,t,o,i){super(e,t,o,i),this.getFillerOffset=Yi}_insertChild(e,t){if(t&&(t instanceof ni||Array.from(t).length>0))throw new fe("view-uielement-cannot-add",[this,t]);return 0}render(e,t){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}toJSON(){const e=super.toJSON();return e.type="UIElement",e}}function Qi(e){e.document.on("arrowKey",((t,o)=>function(e,t,o){if(t.keyCode==qt.arrowright){const e=t.domTarget.ownerDocument.defaultView.getSelection(),i=1==e.rangeCount&&e.getRangeAt(0).collapsed;if(i||t.shiftKey){const t=e.focusNode,n=e.focusOffset,s=o.domPositionToView(t,n);if(null===s)return;let r=!1;const a=s.getLastMatchingPosition((e=>(e.item.is("uiElement")&&(r=!0),!(!e.item.is("uiElement")&&!e.item.is("attributeElement")))));if(r){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 Yi(){return null}Zi.prototype.is=function(e,t){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};class Xi extends _i{constructor(e,t,o,i){super(e,t,o,i),this.getFillerOffset=en}toJSON(){const e=super.toJSON();return e.type="RawElement",e}_insertChild(e,t){if(t&&(t instanceof ni||Array.from(t).length>0))throw new fe("view-rawelement-cannot-add",[this,t]);return 0}render(e,t){}}function en(){return null}Xi.prototype.is=function(e,t){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};class tn extends(xe(ii)){document;_children=[];_customProperties=new Map;constructor(e,t){super(),this.document=e,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}get name(){}get getFillerOffset(){}getCustomProperty(e){return this._customProperties.get(e)}*getCustomProperties(){yield*this._customProperties.entries()}toJSON(){const e=[];for(const t of this._children)e.push(t.toJSON());return 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,{index:e});let o=0;const i=function(e,t){if("string"==typeof t)return[new si(e,t)];Ue(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new si(e,t):t instanceof ri?new si(e,t.data):t))}(this.document,t);for(const t of i)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,{index:e});for(let o=e;o{const o=e[e.length-1],i=!t.is("uiElement");return o&&o.breakAttributes==i?o.nodes.push(t):e.push({breakAttributes:i,nodes:[t]}),e}),[]);let i=null,n=e;for(const{nodes:e,breakAttributes:t}of o){const o=this._insertNodes(n,e,t);i||(i=o.start),n=o.end}return i?new Ii(i,n):new Ii(e)}remove(e){const t=e instanceof Ii?e:Ii._createOn(e);if(hn(t,this.document),t.isCollapsed)return new tn(this.document);const{start:o,end:i}=this._breakAttributesRange(t,!0),n=o.parent,s=i.offset-o.offset,r=n._removeChildren(o.offset,s);for(const e of r)this._removeFromClonedElementsGroup(e);const a=this.mergeAttributes(o);return t.start=a,t.end=a.clone(),new tn(this.document,r)}clear(e,t){hn(e,this.document);const o=e.getWalker({direction:"backward",ignoreElementEnd:!0});for(const i of o){const o=i.item;let n;if(o.is("element")&&t.isSimilar(o))n=Ii._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&&(n=Ii._createIn(e))}n&&(n.end.isAfter(e.end)&&(n.end=e.end),n.start.isBefore(e.start)&&(n.start=e.start),this.remove(n))}}move(e,t){let o;if(t.isAfter(e.end)){const i=(t=this._breakAttributes(t,!0)).parent,n=i.childCount;e=this._breakAttributesRange(e,!0),o=this.remove(e),t.offset+=i.childCount-n}else o=this.remove(e);return this.insert(t,o)}wrap(e,t){if(!(t instanceof Wi))throw new fe("view-writer-wrap-invalid-attribute",this.document);if(hn(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 n=this.document.selection;return n.isCollapsed&&n.getFirstPosition().isEqual(e.start)&&this.setSelection(i),new Ii(i)}return this._wrapRange(e,t);var o}unwrap(e,t){if(!(t instanceof Wi))throw new fe("view-writer-unwrap-invalid-attribute",this.document);if(hn(e,this.document),e.isCollapsed)return e;const{start:o,end:i}=this._breakAttributesRange(e,!0),n=o.parent,s=this._unwrapChildren(n,o.offset,i.offset,t),r=this.mergeAttributes(s.start);r.isEqual(s.start)||s.end.offset--;const a=this.mergeAttributes(s.end);return new Ii(r,a)}rename(e,t){const o=new Ci(this.document,e,t.getAttributes());return this.insert(Si._createAfter(t),o),this.move(Ii._createIn(t),Si._createAt(o,0)),this.remove(Ii._createOn(t)),o}clearClonedElementsGroup(e){this._cloneGroups.delete(e)}createPositionAt(e,t){return Si._createAt(e,t)}createPositionAfter(e){return Si._createAfter(e)}createPositionBefore(e){return Si._createBefore(e)}createRange(e,t){return new Ii(e,t)}createRangeOn(e){return Ii._createOn(e)}createRangeIn(e){return Ii._createIn(e)}createSelection(...e){return new Oi(...e)}createSlot(e="children"){if(!this._slotFactory)throw new fe("view-writer-invalid-create-slot-context",this.document);return this._slotFactory(this,e)}_registerSlotFactory(e){this._slotFactory=e}_clearSlotFactory(){this._slotFactory=null}_insertNodes(e,t,o){let i,n;if(i=o?nn(e):e.parent.is("$text")?e.parent.parent:e.parent,!i)throw new fe("view-writer-invalid-position-container",this.document);n=o?this._breakAttributes(e,!0):e.parent.is("$text")?an(e):e;const s=i._insertChild(n.offset,t);for(const e of t)this._addToClonedElementsGroup(e);const r=n.getShiftedBy(s),a=this.mergeAttributes(n);a.isEqual(n)||r.offset--;const l=this.mergeAttributes(r);return new Ii(a,l)}_wrapChildren(e,t,o,i){let n=t;const s=[];for(;n!1,e.parent._insertChild(e.offset,o);const i=new Ii(e,e.getShiftedBy(1));this.wrap(i,t);const n=new Si(o.parent,o.index);o._remove();const s=n.nodeBefore,r=n.nodeAfter;return s&&s.is("view:$text")&&r&&r.is("view:$text")?ln(s,r):rn(n)}_breakAttributesRange(e,t=!1){const o=e.start,i=e.end;if(hn(e,this.document),e.isCollapsed){const o=this._breakAttributes(e.start,t);return new Ii(o,o)}const n=this._breakAttributes(i,t),s=n.parent.childCount,r=this._breakAttributes(o,t);return n.offset+=n.parent.childCount-s,new Ii(r,n)}_breakAttributes(e,t=!1){const o=e.offset,i=e.parent;if(e.parent.is("emptyElement"))throw new fe("view-writer-cannot-break-empty-element",this.document);if(e.parent.is("uiElement"))throw new fe("view-writer-cannot-break-ui-element",this.document);if(e.parent.is("rawElement"))throw new fe("view-writer-cannot-break-raw-element",this.document);if(!t&&i.is("$text")&&un(i.parent))return e.clone();if(un(i))return e.clone();if(i.is("$text"))return this._breakAttributes(an(e),t);if(o==i.childCount){const e=new Si(i.parent,i.index+1);return this._breakAttributes(e,t)}if(0===o){const e=new Si(i.parent,i.index);return this._breakAttributes(e,t)}{const e=i.index+1,n=i._clone();i.parent._insertChild(e,n),this._addToClonedElementsGroup(n);const s=i.childCount-o,r=i._removeChildren(o,s);n._appendChild(r);const a=new Si(i.parent,e);return this._breakAttributes(a,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 nn(e){let t=e.parent;for(;!un(t);){if(!t)return;t=t.parent}return t}function sn(e,t){return e.priorityt.priority)&&e.getIdentity()o instanceof e)))throw new fe("view-writer-insert-invalid-node-type",t);o.is("$text")||dn(o.getChildren(),t)}}function un(e){return e&&(e.is("containerElement")||e.is("documentFragment"))}function hn(e,t){const o=nn(e.start),i=nn(e.end);if(!o||!i||o!==i)throw new fe("view-writer-invalid-range-container",t)}const mn=e=>e.createTextNode(" "),gn=e=>{const t=e.createElement("span");return t.dataset.ckeFiller="true",t.innerText=" ",t},pn=e=>{const t=e.createElement("br");return t.dataset.ckeFiller="true",t},fn="⁠".repeat(7);function bn(e){return"string"==typeof e?e.substr(0,7)===fn:at(e)&&e.data.substr(0,7)===fn}function wn(e){return 7==e.data.length&&bn(e)}function yn(e){const t="string"==typeof e?e:e.data;return bn(e)?t.slice(7):t}function _n(e,t){if(t.keyCode==qt.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;bn(t)&&o<=7&&e.collapse(t,0)}}}class kn extends(Be()){domDocuments=new Set;domConverter;markedAttributes=new Set;markedChildren=new Set;markedTexts=new Set;selection;_inlineFiller=null;_fakeSelectionContainer=null;constructor(e,t){super(),this.domConverter=e,this.selection=t,this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1),Y.isBlink&&!Y.isAndroid&&this.on("change:isSelecting",(()=>{this.isSelecting||this.render()}))}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 fe("view-renderer-unknown-type",this);this.markedChildren.add(t)}}}render(){if(this.isComposing&&!Y.isAndroid)return;let e=null;const t=!(Y.isBlink&&!Y.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),e&&e.parent.is("$text")&&(e=Si._createBefore(e.parent)));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;bn(t.parent)?this._inlineFiller=t.parent:this._inlineFiller=vn(o,t.parent,t.offset)}else this._inlineFiller=null;this._updateFocus(),this._updateSelection(),this.domConverter._clearTemporaryCustomProperties(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(e){const t=this.domConverter.mapViewToDom(e);if(!t)return;const o=Array.from(t.childNodes),i=Array.from(this.domConverter.viewChildrenToDom(e,{withChildren:!1})),n=this._diffNodeLists(o,i),s=this._findUpdateActions(n,o,i,Cn);if(-1!==s.indexOf("update")){const t={equal:0,insert:0,delete:0};for(const n of s)if("update"===n){const n=t.equal+t.insert,s=t.equal+t.delete,r=e.getChild(n);!r||r.is("uiElement")||r.is("rawElement")||this._updateElementMappings(r,o[s]),Pt(i[n]),t.equal++}else t[n]++}}_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")?Si._createBefore(e.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&&at(t.parent)&&bn(t.parent))}_removeInlineFiller(){const e=this._inlineFiller;if(!bn(e))throw new fe("view-renderer-filler-was-lost",this);wn(e)?e.remove():e.data=e.data.substr(7),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;const i=e.nodeBefore,n=e.nodeAfter;return!(i instanceof si||n instanceof si)&&(!!(o!==t.getFillerOffset()||i&&i.is("element","br"))&&(!Y.isAndroid||!i&&!n))}_updateText(e,t){const o=this.domConverter.findCorrespondingDomText(e);let i=this.domConverter.viewToDom(e).data;const n=t.inlineFillerPosition;n&&n.parent==e.parent&&n.offset==e.index&&(i=fn+i),this._updateTextNode(o,i)}_updateAttrs(e){const t=this.domConverter.mapViewToDom(e);if(t){for(const o of Array.from(t.attributes)){const i=o.name;e.hasAttribute(i)||this.domConverter.removeDomElementAttribute(t,i)}for(const o of e.getAttributeKeys())this.domConverter.setDomElementAttribute(t,o,e.getAttribute(o),e)}}_updateChildren(e,t){const o=this.domConverter.mapViewToDom(e);if(!o)return;if(Y.isAndroid){let e=null;for(const t of Array.from(o.childNodes)){if(e&&at(e)&&at(t)){o.normalize();break}e=t}}const i=t.inlineFillerPosition,n=o.childNodes,s=Array.from(this.domConverter.viewChildrenToDom(e,{bind:!0}));i&&i.parent===e&&vn(o.ownerDocument,s,i.offset);const r=this._diffNodeLists(n,s),a=this._findUpdateActions(r,n,s,An);let l=0;const c=new Set;for(const e of a)"delete"===e?(c.add(n[l]),Pt(n[l])):"equal"!==e&&"update"!==e||l++;l=0;for(const e of a)"insert"===e?(kt(o,l,s[l]),l++):"update"===e?(this._updateTextNode(n[l],s[l].data),l++):"equal"===e&&(this._markDescendantTextToSync(this.domConverter.domToView(s[l])),l++);for(const e of c)e.parentNode||this.domConverter.unbindDomElement(e)}_diffNodeLists(e,t){return de(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),t,xn.bind(null,this.domConverter))}_findUpdateActions(e,t,o,i){if(-1===e.indexOf("insert")||-1===e.indexOf("delete"))return e;let n=[],s=[],r=[];const a={equal:0,insert:0,delete:0};for(const l of e)"insert"===l?r.push(o[a.equal+a.insert]):"delete"===l?s.push(t[a.equal+a.delete]):(n=n.concat(de(s,r,i).map((e=>"equal"===e?"update":e))),n.push("equal"),s=[],r=[]),a[l]++;return n.concat(de(s,r,i).map((e=>"equal"===e?"update":e)))}_updateTextNode(e,t){const o=e.data;o!=t&&(Y.isAndroid&&this.isComposing&&o.replace(/\u00A0/g," ")==t.replace(/\u00A0/g," ")||this._updateTextNodeInternal(e,t))}_updateTextNodeInternal(e,t){const o=ae(e.data,t);for(const t of o)"insert"===t.type?e.insertData(t.index,t.values.join("")):e.deleteData(t.index,t.howMany)}_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(Y.isBlink&&!Y.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._fakeSelectionContainer&&this._fakeSelectionContainer.isConnected?(this._removeFakeSelection(),this._updateDomSelection(e)):this.isComposing&&Y.isAndroid||this._updateDomSelection(e):!this.selection.isFake&&this._fakeSelectionContainer&&this._fakeSelectionContainer.isConnected&&this._removeFakeSelection()}_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(),n=t.createRange();i.removeAllRanges(),n.selectNodeContents(o),i.addRange(n)}_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.setBaseAndExtent(o.parent,o.offset,i.parent,i.offset),Y.isGecko&&function(e,t){let o=e.parent,i=e.offset;at(o)&&wn(o)&&(i=_t(o)+1,o=o.parentNode);if(o.nodeType!=Node.ELEMENT_NODE||i!=o.childNodes.length-1)return;const n=o.childNodes[i];n&&"BR"==n.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){const t=e.getSelection();if(t.rangeCount){const o=e.activeElement,i=this.domConverter.mapDomToView(o);o&&i&&t.removeAllRanges()}}}_removeFakeSelection(){const e=this._fakeSelectionContainer;e&&e.remove()}_updateFocus(){if(this.isFocused){const e=this.selection.editableElement;e&&this.domConverter.focus(e)}}}function vn(e,t,o){const i=t instanceof Array?t:t.childNodes,n=i[o];if(at(n))return n.data=fn+n.data,n;{const n=e.createTextNode(fn);return Array.isArray(t)?i.splice(o,0,n):kt(t,o,n),n}}function Cn(e,t){return Qe(e)&&Qe(t)&&!at(e)&&!at(t)&&!vt(e)&&!vt(t)&&e.tagName.toLowerCase()===t.tagName.toLowerCase()}function An(e,t){return Qe(e)&&Qe(t)&&at(e)&&at(t)}function xn(e,t,o){return t===o||(at(t)&&at(o)?t.data===o.data:!(!e.isBlockFiller(t)||!e.isBlockFiller(o)))}const En=pn(J.document),Tn=mn(J.document),Pn=gn(J.document),Sn="data-ck-unsafe-attribute-",In="data-ck-unsafe-element";class Rn{document;renderingMode;blockFillerMode;preElements;blockElements;inlineObjectElements;unsafeElements;_domDocument;_domToViewMapping=new WeakMap;_viewToDomMapping=new WeakMap;_fakeSelectionMapping=new WeakMap;_rawContentElementMatcher=new ui;_inlineObjectElementMatcher=new ui;_elementsWithTemporaryCustomProperties=new Set;constructor(e,{blockFillerMode:t,renderingMode:o="editing"}={}){this.document=e,this.renderingMode=o,this.blockFillerMode=t||("editing"===o?"br":"nbsp"),this.preElements=["pre","textarea"],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.unsafeElements=["script","style"],this._domDocument="editing"===this.renderingMode?J.document:J.document.implementation.createHTMLDocument("")}get domDocument(){return this._domDocument}bindFakeSelection(e,t){this._fakeSelectionMapping.set(e,new Oi(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.children)this.unbindDomElement(t)}}bindDocumentFragments(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}shouldRenderAttribute(e,t,o){return"data"===this.renderingMode||!(e=e.toLowerCase()).startsWith("on")&&("srcdoc"!==e&&("img"===o&&("src"===e||"srcset"===e)||("source"===o&&"srcset"===e||!t.replace(/\s+/g,"").match(/^(javascript:|data:(image\/svg|text\/x?html))/i))))}setContentOf(e,t){if("data"===this.renderingMode)return void(e.innerHTML=t);const o=(new DOMParser).parseFromString(t,"text/html"),i=o.createDocumentFragment(),n=o.body.childNodes;for(;n.length>0;)i.appendChild(n[0]);const s=o.createTreeWalker(i,NodeFilter.SHOW_ELEMENT),r=[];let a;for(;a=s.nextNode();)r.push(a);for(const e of r){for(const t of e.getAttributeNames())this.setDomElementAttribute(e,t,e.getAttribute(t));const t=e.tagName.toLowerCase();this._shouldRenameElement(t)&&(Bn(t),e.replaceWith(this._createReplacementDomElement(t,e)))}for(;e.firstChild;)e.firstChild.remove();e.append(i)}viewToDom(e,t={}){if(e.is("$text")){const t=this._processDataFromViewText(e);return this._domDocument.createTextNode(t)}{const o=e;if(this.mapViewToDom(o)){if(!o.getCustomProperty("editingPipeline:doNotReuseOnce"))return this.mapViewToDom(o);this._elementsWithTemporaryCustomProperties.add(o)}let i;if(o.is("documentFragment"))i=this._domDocument.createDocumentFragment(),t.bind&&this.bindDocumentFragments(i,o);else{if(o.is("uiElement"))return i="$comment"===o.name?this._domDocument.createComment(o.getCustomProperty("$rawContent")):o.render(this._domDocument,this),t.bind&&this.bindElements(i,o),i;this._shouldRenameElement(o.name)?(Bn(o.name),i=this._createReplacementDomElement(o.name)):i=o.hasAttribute("xmlns")?this._domDocument.createElementNS(o.getAttribute("xmlns"),o.name):this._domDocument.createElement(o.name),o.is("rawElement")&&o.render(i,this),t.bind&&this.bindElements(i,o);for(const e of o.getAttributeKeys())this.setDomElementAttribute(i,e,o.getAttribute(e),o)}if(!1!==t.withChildren)for(const e of this.viewChildrenToDom(o,t))i instanceof HTMLTemplateElement?i.content.appendChild(e):i.appendChild(e);return i}}setDomElementAttribute(e,t,o,i){const n=this.shouldRenderAttribute(t,o,e.tagName.toLowerCase())||i&&i.shouldRenderUnsafeAttribute(t);n||be("domconverter-unsafe-attribute-detected",{domElement:e,key:t,value:o}),function(e){try{J.document.createAttribute(e)}catch{return!1}return!0}(t)?(e.hasAttribute(t)&&!n?e.removeAttribute(t):e.hasAttribute(Sn+t)&&n&&e.removeAttribute(Sn+t),e.setAttribute(n?t:Sn+t,o)):be("domconverter-invalid-attribute-detected",{domElement:e,key:t,value:o})}removeDomElementAttribute(e,t){t!=In&&(e.removeAttribute(t),e.removeAttribute(Sn+t))}*viewChildrenToDom(e,t={}){const o=e.getFillerOffset&&e.getFillerOffset();let i=0;for(const n of e.getChildren()){o===i&&(yield this._getBlockFiller());const e=n.is("element")&&!!n.getCustomProperty("dataPipeline:transparentRendering")&&!to(n.getAttributes());if(e&&"data"==this.renderingMode)if(n.is("rawElement")){const e=this._domDocument.createElement(n.name);n.render(e,this),yield*[...e.childNodes]}else yield*this.viewChildrenToDom(n,t);else e&&be("domconverter-transparent-rendering-unsupported-in-editing-pipeline",{viewElement:n}),yield this.viewToDom(n,t);i++}o===i&&(yield this._getBlockFiller())}viewRangeToDom(e){const t=this.viewPositionToDom(e.start),o=this.viewPositionToDom(e.end),i=this._domDocument.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 bn(o)&&(i+=7),o.data&&i>o.data.length&&(i=o.data.length),{parent:o,offset:i}}{let o,i,n;if(0===e.offset){if(o=this.mapViewToDom(t),!o)return null;n=o.childNodes[0]}else{const t=e.nodeBefore;if(i=t.is("$text")?this.findCorrespondingDomText(t):this.mapViewToDom(t),!i)return null;o=i.parentNode,n=i.nextSibling}if(at(n)&&bn(n))return{parent:n,offset:7};return{parent:o,offset:i?_t(i)+1:0}}}domToView(e,t={}){const o=[],i=this._domToView(e,t,o),n=i.next().value;return n?(i.next(),this._processDomInlineNodes(null,o,t),"br"==this.blockFillerMode&&Mn(n)||n.is("$text")&&0==n.data.length?null:n):null}*domChildrenToView(e,t={},o=[]){let i=[];i=e instanceof HTMLTemplateElement?[...e.content.childNodes]:[...e.childNodes];for(let n=0;n{const{scrollLeft:t,scrollTop:o}=e;n.push([t,o])})),t.focus({preventScroll:!0}),On(t,(e=>{const[t,o]=n.shift();e.scrollLeft=t,e.scrollTop=o})),J.window.scrollTo(o,i)}_clearDomSelection(){const e=this.mapViewToDom(this.document.selection.editableElement);if(!e)return;const t=e.ownerDocument.defaultView.getSelection(),o=this.domSelectionToView(t);o&&o.rangeCount>0&&t.removeAllRanges()}isElement(e){return e&&e.nodeType==Node.ELEMENT_NODE}isDocumentFragment(e){return e&&e.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isBlockFiller(e){return"br"==this.blockFillerMode?e.isEqualNode(En):!!Nn(e,this.blockElements)||(e.isEqualNode(Pn)||function(e,t){const o=e.isEqualNode(Tn);return o&&Vn(e,t)&&1===e.parentNode.childNodes.length}(e,this.blockElements))}isDomSelectionBackward(e){if(e.isCollapsed)return!1;const t=this._domDocument.createRange();try{t.setStart(e.anchorNode,e.anchorOffset),t.setEnd(e.focusNode,e.focusOffset)}catch{return!1}const o=t.collapsed;return t.detach(),o}getHostViewElement(e){const t=it(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)}registerInlineObjectMatcher(e){this._inlineObjectElementMatcher.add(e)}_clearTemporaryCustomProperties(){for(const e of this._elementsWithTemporaryCustomProperties)e._removeCustomProperty("editingPipeline:doNotReuseOnce");this._elementsWithTemporaryCustomProperties.clear()}_getBlockFiller(){switch(this.blockFillerMode){case"nbsp":return mn(this._domDocument);case"markedNbsp":return gn(this._domDocument);case"br":return pn(this._domDocument)}}_isDomSelectionPositionCorrect(e,t){if(at(e)&&bn(e)&&t<7)return!1;if(this.isElement(e)&&bn(e.childNodes[t]))return!1;const o=this.mapDomToView(e);return!o||!o.is("uiElement")&&!o.is("rawElement")}*_domToView(e,t,o){if("br"!=this.blockFillerMode&&Nn(e,this.blockElements))return null;const i=this.getHostViewElement(e);if(i)return i;if(vt(e)&&t.skipComments)return null;if(at(e)){if(wn(e))return null;{const t=e.data;if(""===t)return null;const i=new si(this.document,t);return o.push(i),i}}{let i=this.mapDomToView(e);if(i)return this._isInlineObjectElement(i)&&o.push(i),i;if(this.isDocumentFragment(e))i=new tn(this.document),t.bind&&this.bindDocumentFragments(e,i);else{i=this._createViewElement(e,t),t.bind&&this.bindElements(e,i);const n=e.attributes;if(n)for(let e=n.length,t=0;t0?t[e-1]:null,l=e+1e.is("element")&&t.includes(e.name)))}(e,this.preElements))return!0;for(const t of e.getAncestors({parentFirst:!0}))if(t.is("element")&&t.hasStyle("white-space")&&"inherit"!==t.getStyle("white-space"))return["pre","pre-wrap","break-spaces"].includes(t.getStyle("white-space"));return!1}_getTouchingInlineViewNode(e,t){const o=new Pi({startPosition:t?Si._createAfter(e):Si._createBefore(e),direction:t?"forward":"backward"});for(const{item:e}of o){if(e.is("$textProxy"))return e;if(!e.is("element")||!e.getCustomProperty("dataPipeline:transparentRendering")){if(e.is("element","br"))return null;if(this._isInlineObjectElement(e))return e;if(e.is("containerElement")||this._isBlockViewElement(e))return null}}return null}_isBlockDomElement(e){return this.isElement(e)&&this.blockElements.includes(e.tagName.toLowerCase())}_isBlockViewElement(e){return e.is("element")&&this.blockElements.includes(e.name)}_isInlineObjectElement(e){return!!e.is("element")&&("br"==e.name||this.inlineObjectElements.includes(e.name)||!!this._inlineObjectElementMatcher.match(e))}_createViewElement(e,t){if(vt(e))return new Zi(this.document,"$comment");const o=t.keepOriginalCase?e.tagName:e.tagName.toLowerCase();return new _i(this.document,o)}_isViewElementWithRawContent(e,t){return!1!==t.withChildren&&e.is("element")&&!!this._rawContentElementMatcher.match(e)}_shouldRenameElement(e){const t=e.toLowerCase();return"editing"===this.renderingMode&&this.unsafeElements.includes(t)}_createReplacementDomElement(e,t){const o=this._domDocument.createElement("span");if(o.setAttribute(In,e),t){for(;t.firstChild;)o.appendChild(t.firstChild);for(const e of t.getAttributeNames())o.setAttribute(e,t.getAttribute(e))}return o}}function On(e,t){let o=e;for(;o;)t(o),o=o.parentElement}function Vn(e,t){const o=e.parentNode;return!!o&&!!o.tagName&&t.includes(o.tagName.toLowerCase())}function Dn(e,t,o){return" "==t&&e&&e.is("element")&&1==e.childCount&&o.includes(e.name)}function Fn(e,t){return" "==t&&e&&e.is("element","span")&&1==e.childCount&&e.hasAttribute("data-cke-filler")}function Mn(e){return e.is("element","br")&&e.hasAttribute("data-cke-filler")}function Nn(e,t){return"BR"===e.tagName&&Vn(e,t)&&1===e.parentNode.childNodes.length}function Bn(e){"script"===e&&be("domconverter-unsafe-script-element-detected"),"style"===e&&be("domconverter-unsafe-style-element-detected")}class Ln extends(et()){view;document;_isEnabled=!1;constructor(e){super(),this.view=e,this.document=e.document}get isEnabled(){return this._isEnabled}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] *")}}class zn{view;document;domEvent;domTarget;constructor(e,t,o){this.view=e,this.document=e.document,this.domEvent=t,this.domTarget=t.target,No(this,o)}get target(){return this.view.domConverter.mapDomToView(this.domTarget)}preventDefault(){this.domEvent.preventDefault()}stopPropagation(){this.domEvent.stopPropagation()}}class jn extends Ln{useCapture=!1;usePassive=!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,usePassive:this.usePassive})}))}stopObserving(e){this.stopListening(e)}fire(e,t,o){this.isEnabled&&this.document.fire(e,new zn(this.view,t,o))}}class qn extends jn{domEventType=["keydown","keyup"];onDomEvent(e){const t={keyCode:e.keyCode,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,get keystroke(){return Ht(this)}};this.fire(e.type,e,t)}}class $n extends Ln{_fireSelectionChangeDoneDebounced;constructor(e){super(e),this._fireSelectionChangeDoneDebounced=zo((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"})}stopObserving(){}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(e){const t=this.document.selection,o=new Oi(t.getRanges(),{backward:t.isBackward,fake:!1});e!=qt.arrowleft&&e!=qt.arrowup||o.setTo(o.getFirstPosition()),e!=qt.arrowright&&e!=qt.arrowdown||o.setTo(o.getLastPosition());const i={oldSelection:t,newSelection:o,domSelection:null};this.document.fire("selectionChange",i),this._fireSelectionChangeDoneDebounced(i)}}class Hn extends Ln{domConverter;_config;_domElements;_mutationObserver;constructor(e){super(e),this._config={childList:!0,characterData:!0,subtree:!0},this.domConverter=e.domConverter,this._domElements=new Set,this._mutationObserver=new window.MutationObserver(this._onMutations.bind(this))}flush(){this._onMutations(this._mutationObserver.takeRecords())}observe(e){this._domElements.add(e),this.isEnabled&&this._mutationObserver.observe(e,this._config)}stopObserving(e){if(this._domElements.delete(e),this.isEnabled){this._mutationObserver.disconnect();for(const e of this._domElements)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 Set,i=new Set;for(const o of e){const e=t.mapDomToView(o.target);e&&(e.is("uiElement")||e.is("rawElement")||"childList"!==o.type||this._isBogusBrMutation(o)||i.add(e))}for(const n of e){const e=t.mapDomToView(n.target);if((!e||!e.is("uiElement")&&!e.is("rawElement"))&&"characterData"===n.type){const e=t.findCorrespondingViewText(n.target);e&&!i.has(e.parent)?o.add(e):!e&&bn(n.target)&&i.add(t.mapDomToView(n.target.parentNode))}}const n=[];for(const e of o)n.push({type:"text",node:e});for(const e of i){const o=t.mapViewToDom(e);Uo(Array.from(e.getChildren()),Array.from(t.domChildrenToView(o,{withChildren:!1})),Wn)||n.push({type:"children",node:e})}n.length&&this.document.fire("mutations",{mutations:n})}_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")}}function Wn(e,t){if(!Array.isArray(e))return e===t||!(!e.is("$text")||!t.is("$text"))&&e.data===t.data}class Un extends jn{_renderTimeoutId=null;_isFocusChanging=!1;domEventType=["focus","blur"];constructor(e){super(e),this.useCapture=!0;const t=this.document;t.on("focus",(()=>this._handleFocus())),t.on("blur",((e,t)=>this._handleBlur(t))),t.on("beforeinput",(()=>{t.isFocused||this._handleFocus()}),{priority:"highest"})}flush(){this._isFocusChanging&&(this._isFocusChanging=!1,this.document.isFocused=!0)}onDomEvent(e){this.fire(e.type,e)}destroy(){this._clearTimeout(),super.destroy()}_handleFocus(){this._clearTimeout(),this._isFocusChanging=!0,this._renderTimeoutId=setTimeout((()=>{this._renderTimeoutId=null,this.flush(),this.view.change((()=>{}))}),50)}_handleBlur(e){const t=this.document.selection.editableElement;null!==t&&t!==e.target||(this.document.isFocused=!1,this._isFocusChanging=!1,this.view.change((()=>{})))}_clearTimeout(){this._renderTimeoutId&&(clearTimeout(this._renderTimeoutId),this._renderTimeoutId=null)}}class Kn extends Ln{mutationObserver;focusObserver;selection;domConverter;_documents=new WeakSet;_fireSelectionChangeDoneDebounced;_clearInfiniteLoopInterval;_documentIsSelectingInactivityTimeoutDebounced;_loopbackCounter=0;_pendingSelectionChange=new Set;constructor(e){super(e),this.mutationObserver=e.getObserver(Hn),this.focusObserver=e.getObserver(Un),this.selection=this.document.selection,this.domConverter=e.domConverter,this._fireSelectionChangeDoneDebounced=zo((e=>{this.document.fire("selectionChangeDone",e)}),200),this._clearInfiniteLoopInterval=setInterval((()=>this._clearInfiniteLoop()),1e3),this._documentIsSelectingInactivityTimeoutDebounced=zo((()=>this.document.isSelecting=!1),5e3),this.view.document.on("change:isFocused",((e,t,o)=>{if(o&&this._pendingSelectionChange.size){for(const e of Array.from(this._pendingSelectionChange))this._handleSelectionChange(e);this._pendingSelectionChange.clear()}}))}observe(e){const t=e.ownerDocument,o=()=>{this.document.isSelecting&&(this._handleSelectionChange(t),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",useCapture:!0}),this.listenTo(e,"keyup",o,{priority:"highest",useCapture:!0}),this._documents.has(t)||(this.listenTo(t,"mouseup",o,{priority:"highest",useCapture:!0}),this.listenTo(t,"selectionchange",(()=>{this.document.isComposing&&!Y.isAndroid||(this._handleSelectionChange(t),this._documentIsSelectingInactivityTimeoutDebounced())})),this.listenTo(this.view.document,"compositionstart",(()=>{this._handleSelectionChange(t)}),{priority:"lowest"}),this._documents.add(t))}stopObserving(e){this.stopListening(e)}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel(),this._documentIsSelectingInactivityTimeoutDebounced.cancel()}_reportInfiniteLoop(){}_handleSelectionChange(e){if(!this.isEnabled)return;const t=e.defaultView.getSelection();if(this.checkShouldIgnoreEventFromTarget(t.anchorNode))return;this.mutationObserver.flush();const o=this.domConverter.domSelectionToView(t);if(0!=o.rangeCount)if(this.view.hasDomSelection=!0,this.focusObserver.flush(),this.view.document.isFocused||this.view.document.isReadOnly){if(this._pendingSelectionChange.delete(e),!this.selection.isEqual(o)||!this.domConverter.isDomSelectionCorrect(t))if(++this._loopbackCounter>60)this._reportInfiniteLoop();else if(function(e){return Array.from(e.getRanges()).flatMap((e=>[e.start.root,e.end.root])).every((e=>e&&e.is("rootElement")))}(o))if(this.selection.isSimilar(o))this.view.forceRender();else{const e={oldSelection:this.selection,newSelection:o,domSelection:t};this.document.fire("selectionChange",e),this._fireSelectionChangeDoneDebounced(e)}else this.view.forceRender()}else this._pendingSelectionChange.add(e);else this.view.hasDomSelection=!1}_clearInfiniteLoop(){this._loopbackCounter=0}}class Gn extends jn{domEventType=["compositionstart","compositionupdate","compositionend"];constructor(e){super(e);const t=this.document;t.on("compositionstart",(()=>{t.isComposing=!0})),t.on("compositionend",(()=>{t.isComposing=!1}))}onDomEvent(e){this.fire(e.type,e,{data:e.data})}}class Jn{_files;_native;constructor(e,t={}){this._files=t.cacheFiles?Zn(e):null,this._native=e}get files(){return this._files||(this._files=Zn(this._native)),this._files}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}setDragImage(e,t,o){this._native.setDragImage(e,t,o)}get isCanceled(){return"none"==this._native.dropEffect||!!this._native.mozUserCancelled}}function Zn(e){const t=Array.from(e.files||[]),o=Array.from(e.items||[]);return t.length?t:o.filter((e=>"file"===e.kind)).map((e=>e.getAsFile()))}class Qn extends jn{domEventType="beforeinput";onDomEvent(e){const t=e.getTargetRanges(),o=this.view,i=o.document;let n=null,s=null,r=[];if(e.dataTransfer&&(n=new Jn(e.dataTransfer)),null!==e.data?s=e.data:n&&(s=n.getData("text/plain")),i.selection.isFake)r=Array.from(i.selection.getRanges()),e.preventDefault();else if(t.length)r=t.map((t=>{let i=o.domConverter.domPositionToView(t.startContainer,t.startOffset);const n=o.domConverter.domPositionToView(t.endContainer,t.endOffset);if(i&&bn(t.startContainer)&&t.startOffset<7){e.preventDefault();let o=7-t.startOffset;i=i.getLastMatchingPosition((e=>!(!e.item.is("attributeElement")&&!e.item.is("uiElement"))||!(!e.item.is("$textProxy")||!o--)),{direction:"backward",singleCharacters:!0})}return function(e,t){for(;e.parentNode;){if(at(e)){if(t!=e.data.length)return!1}else if(t!=e.childNodes.length)return!1;if((t=_t(e)+1)<(e=e.parentNode).childNodes.length&&bn(e.childNodes[t]))return!0}return!1}(t.endContainer,t.endOffset)&&e.preventDefault(),i?o.createRange(i,n):n?o.createRange(n):void 0})).filter((e=>!!e));else if(Y.isAndroid){const t=e.target.ownerDocument.defaultView.getSelection();r=Array.from(o.domConverter.domSelectionToView(t).getRanges())}if(Y.isAndroid&&"insertCompositionText"==e.inputType&&s&&s.endsWith("\n"))this.fire(e.type,e,{inputType:"insertParagraph",targetRanges:[o.createRange(r[0].end)]});else if(["insertText","insertReplacementText"].includes(e.inputType)&&s&&s.includes("\n")){const t=s.split(/\n{1,2}/g);let o=r;e.preventDefault();for(let s=0;s{if(this.isEnabled&&((o=t.keyCode)==qt.arrowright||o==qt.arrowleft||o==qt.arrowup||o==qt.arrowdown)){const o=new Di(this.document,"arrowKey",this.document.selection.getFirstRange());this.document.fire(o,t),o.stop.called&&e.stop()}var o}))}observe(){}stopObserving(){}}class Xn extends Ln{constructor(e){super(e);const t=this.document;t.on("keydown",((e,o)=>{if(!this.isEnabled||o.keyCode!=qt.tab||o.ctrlKey)return;const i=new Di(t,"tab",t.selection.getFirstRange());t.fire(i,o),i.stop.called&&e.stop()}))}observe(){}stopObserving(){}}class es extends(Be()){document;domConverter;domRoots=new Map;_renderer;_initialDomRootAttributes=new WeakMap;_observers=new Map;_writer;_ongoingChange=!1;_postFixersInProgress=!1;_renderingDisabled=!1;_hasChangedSinceTheLastRendering=!1;constructor(e){super(),this.document=new Hi(e),this.domConverter=new Rn(this.document),this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new kn(this.domConverter,this.document.selection),this._renderer.bind("isFocused","isSelecting","isComposing").to(this.document,"isFocused","isSelecting","isComposing"),this._writer=new on(this.document),this.addObserver(Hn),this.addObserver(Un),this.addObserver(Kn),this.addObserver(qn),this.addObserver($n),this.addObserver(Gn),this.addObserver(Yn),this.addObserver(Qn),this.addObserver(Xn),this.document.on("arrowKey",_n,{priority:"low"}),Qi(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})),Y.isiOS&&this.listenTo(this.document,"blur",((e,t)=>{this.domConverter.mapDomToView(t.domEvent.relatedTarget)||this.domConverter._clearDomSelection()})),this.listenTo(this.document,"mutations",((e,{mutations:t})=>{t.forEach((e=>this._renderer.markToSync(e.type,e.node)))}),{priority:"low"}),this.listenTo(this.document,"mutations",(()=>{this.forceRender()}),{priority:"lowest"})}attachDomRoot(e,t="main"){const o=this.document.getRoot(t);o._name=e.tagName.toLowerCase();const i={};for(const{name:t,value:n}of Array.from(e.attributes))i[t]=n,"class"===t?this._writer.addClass(n.split(" "),o):o.hasAttribute(t)||this._writer.setAttribute(t,n,o);this._initialDomRootAttributes.set(e,i);const n=()=>{this._writer.setAttribute("contenteditable",(!o.isReadOnly).toString(),o),o.isReadOnly?this._writer.addClass("ck-read-only",o):this._writer.removeClass("ck-read-only",o)};n(),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(n))),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);for(const e of this._observers.values())e.stopObserving(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({alignToTop:e,forceScroll:t,viewportOffset:o=20,ancestorOffset:i=20}={}){const n=this.document.selection.getFirstRange();if(!n)return;const s=j({alignToTop:e,forceScroll:t,viewportOffset:o,ancestorOffset:i});"number"==typeof o&&(o={top:o,bottom:o,left:o,right:o});const r={target:this.domConverter.viewRangeToDom(n),viewportOffset:o,ancestorOffset:i,alignToTop:e,forceScroll:t};this.fire("scrollToTheSelection",r,s),function({target:e,viewportOffset:t=0,ancestorOffset:o=0,alignToTop:i,forceScroll:n}){const s=Mt(e);let r=s,a=null;for(t=function(e){return"number"==typeof e?{top:e,bottom:e,left:e,right:e}:e}(t);r;){let l;l=Nt(r==s?e:a),Rt({parent:l,getRect:()=>Bt(e,r),alignToTop:i,ancestorOffset:o,forceScroll:n});let c=Bt(e,r);const d=Bt(l,r);if(c.height>d.height){const e=c.getIntersection(d);e&&(c=e)}if(It({window:r,rect:c,viewportOffset:t,alignToTop:i,forceScroll:n}),r.parent!=r){if(a=r.frameElement,r=r.parent,!a)return}else r=null}}(r)}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 fe("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){fe.rethrowUnexpectedError(e,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.getObserver(Un).flush(),this.change((()=>{}))}destroy(){for(const e of this._observers.values())e.destroy();this.document.destroy(),this.stopListening()}createPositionAt(e,t){return Si._createAt(e,t)}createPositionAfter(e){return Si._createAfter(e)}createPositionBefore(e){return Si._createBefore(e)}createRange(e,t){return new Ii(e,t)}createRangeOn(e){return Ii._createOn(e)}createRangeIn(e){return Ii._createIn(e)}createSelection(...e){return new Oi(...e)}_disableRendering(e){this._renderingDisabled=e,0==e&&this.change((()=>{}))}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}class ts{is(){throw new Error("is() method is abstract")}}class os extends ts{textNode;data;offsetInText;constructor(e,t,o){if(super(),this.textNode=e,t<0||t>e.offsetSize)throw new fe("model-textproxy-wrong-offsetintext",this);if(o<0||t+o>e.offsetSize)throw new fe("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}getPath(){const e=this.textNode.getPath();return e.length>0&&(e[e.length-1]+=this.offsetInText),e}getAncestors(e={}){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()}}os.prototype.is=function(e){return"$textProxy"===e||"model:$textProxy"===e||"textProxy"===e||"model:textProxy"===e};class is{direction;boundaries;singleCharacters;shallow;ignoreElementEnd;_position;_boundaryStartParent;_boundaryEndParent;_visitedParent;constructor(e){if(!e||!e.boundaries&&!e.startPosition)throw new fe("model-tree-walker-no-start-position",null);const t=e.direction||"forward";if("forward"!=t&&"backward"!=t)throw new fe("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=ss._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}get position(){return this._position}skip(e){let t,o,i,n;do{i=this.position,n=this._visitedParent,({done:t,value:o}=this.next())}while(!t&&e(o));t||(this._position=i,this._visitedParent=n)}jumpTo(e){this._boundaryStartParent&&e.isBefore(this.boundaries.start)?e=this.boundaries.start:this._boundaryEndParent&&e.isAfter(this.boundaries.end)&&(e=this.boundaries.end),this._position=e.clone(),this._visitedParent=e.parent}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,value:void 0};if(o===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0,value:void 0};const i=rs(t,o),n=i||as(t,o,i);if(n&&n.is("model:element")){if(this.shallow){if(this.boundaries&&this.boundaries.end.isBefore(t))return{done:!0,value:void 0};t.offset++}else t.path.push(0),this._visitedParent=n;return this._position=t,ns("elementStart",n,e,t,1)}if(n&&n.is("model:$text")){let i;if(this.singleCharacters)i=1;else{let e=n.endOffset;this._boundaryEndParent==o&&this.boundaries.end.offsete&&(e=this.boundaries.start.offset),i=t.offset-e}const n=t.offset-s.startOffset,r=new os(s,n-i,i);return t.offset-=i,this._position=t,ns("text",r,e,t,i)}return t.path.pop(),this._position=t,this._visitedParent=o.parent,ns("elementStart",o,e,t,1)}}function ns(e,t,o,i,n){return{done:!1,value:{type:e,item:t,previousPosition:o,nextPosition:i,length:n}}}class ss extends ts{root;path;stickiness;constructor(e,t,o="toNone"){if(super(),!e.is("element")&&!e.is("documentFragment"))throw new fe("model-position-root-invalid",e);if(!Array.isArray(t)||0===t.length)throw new fe("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;t1)return!1;if(1===t)return cs(e,this,o);if(-1===t)return cs(this,e,o)}return this.path.length===e.path.length||(this.path.length>e.path.length?ds(this.path,t):ds(e.path,t))}hasSameParentAs(e){if(this.root!==e.root)return!1;return"same"==We(this.getParentPath(),e.getParentPath())}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=ss._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)?ss._createAt(e.deletionPosition):this._getTransformedByMove(e.deletionPosition,e.graveyardPosition,1),o}_getTransformedByDeletion(e,t){const o=ss._createAt(this);if(this.root!=e.root)return o;if("same"==We(e.getParentPath(),this.getParentPath())){if(e.offsetthis.offset)return null;o.offset-=t}}else if("prefix"==We(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=ss._createAt(this);if(this.root!=e.root)return o;if("same"==We(e.getParentPath(),this.getParentPath()))(e.offset=t;){if(e.path[i]+n!==o.maxOffset)return!1;n=1,i--,o=o.parent}return!0}(e,o+1))}function ds(e,t){for(;tt+1;){const t=i.maxOffset-o.offset;0!==t&&e.push(new us(o,o.getShiftedBy(t))),o.path=o.path.slice(0,-1),o.offset++,i=i.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 us(o,o.getShiftedBy(i))),o.offset=t,o.path.push(0)}return e}getWalker(e={}){return e.boundaries=this,new is(e)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new is(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new is(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 us(this.start,this.end)]}getTransformedByOperations(e){const t=[new us(this.start,this.end)];for(const o of e)for(let e=0;e0?new this(o,i):new this(i,o)}static _createIn(e){return new this(ss._createAt(e,0),ss._createAt(e,e.maxOffset))}static _createOn(e){return this._createFromPositionAndShift(ss._createBefore(e),e.offsetSize)}static _createFromRanges(e){if(0===e.length)throw new fe("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),i=new this(t.start,t.end);for(let t=o-1;t>=0&&e[t].end.isEqual(i.start);t--)i.start=ss._createAt(e[t].start);for(let t=o+1;t{if(t.viewPosition)return;const o=this._modelToViewMapping.get(t.modelPosition.parent);if(!o)throw new fe("mapping-model-position-view-parent-not-found",this,{modelPosition:t.modelPosition});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),i=this._viewToModelMapping.get(o),n=this._toModelOffset(t.viewPosition.parent,t.viewPosition.offset,o);t.modelPosition=ss._createAt(i,n)}),{priority:"low"})}bindElements(e,t){this._modelToViewMapping.set(e,t),this._viewToModelMapping.set(t,e)}unbindViewElement(e,t={}){const o=this.toModelElement(e);if(this._elementToMarkerNames.has(e))for(const t of this._elementToMarkerNames.get(e))this._unboundMarkerNames.add(t);if(t.defer)this._deferredBindingRemovals.set(e,e.root);else{this._viewToModelMapping.delete(e)&&this._cache.stopTracking(e),this._modelToViewMapping.get(o)==e&&this._modelToViewMapping.delete(o)}}unbindModelElement(e){const t=this.toViewElement(e);if(this._modelToViewMapping.delete(e),this._viewToModelMapping.get(t)==e){this._viewToModelMapping.delete(t)&&this._cache.stopTracking(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}flushDeferredBindings(){for(const[e,t]of this._deferredBindingRemovals)e.root==t&&this.unbindViewElement(e);this._deferredBindingRemovals=new Map}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set,this._deferredBindingRemovals=new Map}toModelElement(e){return this._viewToModelMapping.get(e)}toViewElement(e){return this._modelToViewMapping.get(e)}toModelRange(e){return new us(this.toModelPosition(e.start),this.toModelPosition(e.end))}toViewRange(e){return new Ii(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={}){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;o0;){const e=t.pop(),i=e.name&&this._viewToModelLengthCallbacks.size>0&&this._viewToModelLengthCallbacks.get(e.name);if(i)o+=i(e);else if(this._viewToModelMapping.has(e))o+=1;else if(e.is("$text"))o+=e.data.length;else{if(e.is("uiElement"))continue;for(const o of e.getChildren())t.push(o)}}return o}findPositionIn(e,t){if(0===t)return this._moveViewPositionToTextNode(new Si(e,0));if(0==this._viewToModelLengthCallbacks.size&&this._viewToModelMapping.has(e)){const o=this._cache.getClosest(e,t);return this._findPositionStartingFrom(o.viewPosition,o.modelOffset,t,e,!0)}return this._findPositionStartingFrom(new Si(e,0),0,t,e,!1)}_findPositionStartingFrom(e,t,o,i,n){let s,r=e.parent,a=e.offset;if(r.is("$text"))return new Si(r,o-t);let l=t,c=0;for(;l{this._clearCacheInsideParent(t,o.index)};_invalidateOnTextChangeCallback=(e,t)=>{this._clearCacheAfter(t)};save(e,t,o,i){const n=this._cachedMapping.get(o),s=n.cacheMap.get(i);if(s){const o=e.getChild(t-1),i=s.viewPosition.nodeBefore?this._nodeToCacheListIndex.get(s.viewPosition.nodeBefore):0;return void this._nodeToCacheListIndex.set(o,i)}const r={viewPosition:new Si(e,t),modelOffset:i};n.maxModelOffset=i>n.maxModelOffset?i:n.maxModelOffset,n.cacheMap.set(i,r);let a=n.cacheList.length-1;for(;a>=0&&n.cacheList[a].modelOffset>i;)a--;if(n.cacheList.splice(a+1,0,r),t>0){const o=e.getChild(t-1);this._nodeToCacheListIndex.set(o,a+1)}}getClosest(e,t){const o=this._cachedMapping.get(e);let i;if(o)if(t>o.maxModelOffset)i=o.cacheList[o.cacheList.length-1];else{const e=o.cacheMap.get(t);i=e||this._findInCacheList(o.cacheList,t)}else i=this.startTracking(e);return{modelOffset:i.modelOffset,viewPosition:i.viewPosition.clone()}}startTracking(e){const t={viewPosition:new Si(e,0),modelOffset:0},o={maxModelOffset:0,cacheList:[t],cacheMap:new Map([[0,t]])};return this._cachedMapping.set(e,o),e.on("change:children",this._invalidateOnChildrenChangeCallback),e.on("change:text",this._invalidateOnTextChangeCallback),t}stopTracking(e){e.off("change:children",this._invalidateOnChildrenChangeCallback),e.off("change:text",this._invalidateOnTextChangeCallback),this._cachedMapping.delete(e)}_clearCacheInsideParent(e,t){if(0==t)this._cachedMapping.has(e)?this._clearCacheAll(e):this._clearCacheInsideParent(e.parent,e.index);else{const o=e.getChild(t-1);this._clearCacheAfter(o)}}_clearCacheAll(e){const t=this._cachedMapping.get(e);t.maxModelOffset>0&&(t.maxModelOffset=0,t.cacheList.length=1,t.cacheMap.clear(),t.cacheMap.set(0,t.cacheList[0]))}_clearCacheAfter(e){const t=this._nodeToCacheListIndex.get(e);if(void 0===t){const t=e.parent;return void(this._cachedMapping.has(t)||this._clearCacheInsideParent(t.parent,t.index))}let o=e.parent;for(;!this._cachedMapping.has(o);)o=o.parent;this._clearCacheFromCacheIndex(o,t)}_clearCacheFromCacheIndex(e,t){0===t&&(t=1);const o=this._cachedMapping.get(e),i=o.cacheList[t-1];if(!i)return;o.maxModelOffset=i.modelOffset;const n=o.cacheList.splice(t);for(const e of n){o.cacheMap.delete(e.modelOffset);const t=e.viewPosition.nodeBefore;this._nodeToCacheListIndex.delete(t)}}_findInCacheList(e,t){let o=0,i=e.length-1,n=i-o>>1,s=e[n];for(;o>1),s=e[n];return s.modelOffset<=t?s:e[n-1]}}class gs{_consumable=new Map;_textProxyRegistry=new Map;add(e,t){t=ps(t),e instanceof os&&(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=ps(t),e instanceof os&&(e=this._getSymbolForTextProxy(e)),!!this.test(e,t)&&(this._consumable.get(e).set(t,!1),!0)}test(e,t){t=ps(t),e instanceof os&&(e=this._getSymbolForTextProxy(e));const o=this._consumable.get(e);if(void 0===o)return null;const i=o.get(t);return void 0===i?null:i}revert(e,t){t=ps(t),e instanceof os&&(e=this._getSymbolForTextProxy(e));const o=this.test(e,t);return!1===o?(this._consumable.get(e).set(t,!0),!0):!0!==o&&null}verifyAllConsumed(e){const t=[];for(const[o,i]of this._consumable)for(const[n,s]of i){const i=n.split(":")[0];s&&e==i&&t.push({event:n,item:o.name||o.description})}if(t.length)throw new fe("conversion-model-consumable-not-consumed",null,{items:t})}_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)),t}_addSymbolForTextProxy(e){const t=e.startOffset,o=e.endOffset,i=e.parent,n=Symbol("$textProxy:"+e.data);let s,r;return s=this._textProxyRegistry.get(t),s||(s=new Map,this._textProxyRegistry.set(t,s)),r=s.get(o),r||(r=new Map,s.set(o,r)),r.set(i,n),n}}function ps(e){const t=e.split(":");return"insert"==t[0]?t[0]:"addMarker"==t[0]||"removeMarker"==t[0]?e:t.length>1?t[0]+":"+t[1]:t[0]}class fs extends(xe()){_conversionApi;_firedEventsMap;constructor(e){super(),this._conversionApi={dispatcher:this,...e},this._firedEventsMap=new WeakMap}convertChanges(e,t,o){const i=e.getRefreshedItems(),n=this._createConversionApi(o,i);for(const t of e.getMarkersToRemove())this._convertMarkerRemove(t.name,t.range,n);const s=this._reduceChanges(e.getChanges(),i);for(const e of s)"insert"===e.type?this._convertInsert(us._createFromPositionAndShift(e.position,e.length),n):"reinsert"===e.type?this._convertReinsert(us._createFromPositionAndShift(e.position,e.length),n):"remove"===e.type?this._convertRemove(e.position,e.length,e.name,n):this._convertAttribute(e.range,e.attributeKey,e.attributeOldValue,e.attributeNewValue,n);n.mapper.flushDeferredBindings();for(const e of n.mapper.flushUnboundMarkerNames()){const o=t.get(e).getRange();this._convertMarkerRemove(e,o,n),this._convertMarkerAdd(e,o,n)}for(const t of e.getMarkersToAdd())this._convertMarkerAdd(t.name,t.range,n);n.consumable.verifyAllConsumed("insert")}convert(e,t,o,i={}){const n=this._createConversionApi(o,void 0,i);this._convertInsert(e,n);for(const[e,o]of t)this._convertMarkerAdd(e,o,n);n.consumable.verifyAllConsumed("insert")}convertSelection(e,t,o){const i=this._createConversionApi(o);this.fire("cleanSelection",{selection:e},i);const n=e.getFirstPosition().root;if(!i.mapper.toViewElement(n))return;const s=Array.from(t.getMarkersAtPosition(e.getFirstPosition()));if(this._addConsumablesForSelection(i.consumable,e,s),this.fire("selection",{selection:e},i),e.isCollapsed){for(const t of s)if(i.consumable.test(e,"addMarker:"+t.name)){const o=t.getRange();if(!bs(e.getFirstPosition(),t,i.mapper))continue;const n={item:e,markerName:t.name,markerRange:o};this.fire(`addMarker:${t.name}`,n,i)}for(const t of e.getAttributeKeys())if(i.consumable.test(e,"attribute:"+t)){const o={item:e,range:e.getFirstRange(),attributeKey:t,attributeOldValue:null,attributeNewValue:e.getAttribute(t)};this.fire(`attribute:${t}:$text`,o,i)}}}_convertInsert(e,t,o={}){o.doNotAddConsumables||this._addConsumablesForInsert(t.consumable,e);for(const o of e.getWalker({shallow:!0}))this._testAndFire("insert",ws(o),t)}_convertRemove(e,t,o,i){this.fire(`remove:${o}`,{position:e,length:t},i)}_convertAttribute(e,t,o,i,n){this._addConsumablesForRange(n.consumable,e,`attribute:${t}`);for(const s of e){const e={item:s.item,range:us._createFromPositionAndShift(s.previousPosition,s.length),attributeKey:t,attributeOldValue:o,attributeNewValue:i};this._testAndFire(`attribute:${t}`,e,n)}}_convertReinsert(e,t){const o=Array.from(e.getWalker({shallow:!0}));this._addConsumablesForInsert(t.consumable,o);for(const e of o.map(ws))this.fire(`remove:${e.item.is("element")?e.item.name:"$text"}`,{position:e.range.start,length:e.item.offsetSize,reconversion:!0},t),this._testAndFire("insert",{...e,reconversion:!0},t)}_convertMarkerAdd(e,t,o){if("$graveyard"==t.root.rootName)return;const i=`addMarker:${e}`;if(o.consumable.add(t,i),this.fire(i,{markerName:e,markerRange:t},o),o.consumable.consume(t,i)){this._addConsumablesForRange(o.consumable,t,i);for(const n of t.getItems()){if(!o.consumable.test(n,i))continue;const s={item:n,range:us._createOn(n),markerName:e,markerRange:t};this.fire(i,s,o)}}}_convertMarkerRemove(e,t,o){"$graveyard"!=t.root.rootName&&this.fire(`removeMarker:${e}`,{markerName:e,markerRange:t},o)}_reduceChanges(e,t){const o={changes:e,refreshedItems:t};return this.fire("reduceChanges",o),o.changes}_addConsumablesForInsert(e,t){for(const o of t){const t=o.item;if(null===e.test(t,"insert")){e.add(t,"insert");for(const o of t.getAttributeKeys())e.add(t,"attribute:"+o)}}return e}_addConsumablesForRange(e,t,o){for(const i of t.getItems())e.add(i,o);return e}_addConsumablesForSelection(e,t,o){e.add(t,"selection");for(const i of o)e.add(t,"addMarker:"+i.name);for(const o of t.getAttributeKeys())e.add(t,"attribute:"+o);return e}_testAndFire(e,t,o){const i=function(e,t){const o=t.item.is("element")?t.item.name:"$text";return`${e}:${o}`}(e,t),n=t.item.is("$textProxy")?o.consumable._getSymbolForTextProxy(t.item):t.item,s=this._firedEventsMap.get(o),r=s.get(n);if(r){if(r.has(i))return;r.add(i)}else s.set(n,new Set([i]));this.fire(i,t,o)}_testAndFireAddAttributes(e,t){const o={item:e,range:us._createOn(e)};for(const e of o.item.getAttributeKeys())o.attributeKey=e,o.attributeOldValue=null,o.attributeNewValue=o.item.getAttribute(e),this._testAndFire(`attribute:${e}`,o,t)}_createConversionApi(e,t=new Set,o={}){const i={...this._conversionApi,consumable:new gs,writer:e,options:o,convertItem:e=>this._convertInsert(us._createOn(e),i),convertChildren:e=>this._convertInsert(us._createIn(e),i,{doNotAddConsumables:!0}),convertAttributes:e=>this._testAndFireAddAttributes(e,i),canReuseView:e=>!t.has(i.mapper.toModelElement(e))};return this._firedEventsMap.set(i,new Map),i}}function bs(e,t,o){const i=t.getRange(),n=Array.from(e.getAncestors());n.shift(),n.reverse();return!n.some((e=>{if(i.containsItem(e)){return!!o.toViewElement(e).getCustomProperty("addHighlight")}}))}function ws(e){return{item:e.item,range:us._createFromPositionAndShift(e.previousPosition,e.length)}}class ys extends ts{parent=null;_attrs;_index=null;_startOffset=null;constructor(e){super(),this._attrs=ao(e)}get document(){return null}get index(){return this._index}get startOffset(){return this._startOffset}get offsetSize(){return 1}get endOffset(){return null===this.startOffset?null:this.startOffset+this.offsetSize}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 null!==this.parent&&this.root.isAttached()}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.startOffset),t=t.parent;return e}getAncestors(e={}){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 n=0;for(;o[n]==i[n]&&o[n];)n++;return 0===n?null:o[n-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),o=e.getPath(),i=We(t,o);switch(i){case"prefix":return!0;case"extension":return!1;default:return t[i](e[t[0]]=t[1],e)),{})),e}_clone(e){return new this.constructor(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(e,t){this._attrs.set(e,t)}_setAttributesTo(e){this._attrs=ao(e)}_removeAttribute(e){return this._attrs.delete(e)}_clearAttributes(){this._attrs.clear()}}ys.prototype.is=function(e){return"node"===e||"model:node"===e};class _s extends(xe(ts)){_lastRangeBackward=!1;_attrs=new Map;_ranges=[];constructor(...e){super(),e.length&&this.setTo(...e)}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 us(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 us(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 us(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){let[t,o,i]=e;if("object"==typeof o&&(i=o,o=void 0),null===t)this._setRanges([]);else if(t instanceof _s)this._setRanges(t.getRanges(),t.isBackward);else if(t&&"function"==typeof t.getRanges)this._setRanges(t.getRanges(),t.isBackward);else if(t instanceof us)this._setRanges([t],!!i&&!!i.backward);else if(t instanceof ss)this._setRanges([new us(t)]);else if(t instanceof ys){const e=!!i&&!!i.backward;let n;if("in"==o)n=us._createIn(t);else if("on"==o)n=us._createOn(t);else{if(void 0===o)throw new fe("model-selection-setto-required-second-parameter",[this,t]);n=new us(ss._createAt(t,o))}this._setRanges([n],e)}else{if(!Ue(t))throw new fe("model-selection-setto-not-selectable",[this,t]);this._setRanges(t,i&&!!i.backward)}}_setRanges(e,t=!1){const o=Array.from(e),i=o.some((t=>{if(!(t instanceof us))throw new fe("model-selection-set-ranges-not-range",[this,e]);return this._ranges.every((e=>!e.isEqual(t)))}));(o.length!==this._ranges.length||i)&&(this._replaceAllRanges(o),this._lastRangeBackward=!!t,this.fire("change:range",{directChange:!0}))}setFocus(e,t){if(null===this.anchor)throw new fe("model-selection-setfocus-no-ranges",[this,e]);const o=ss._createAt(e,t);if("same"==o.compareWith(this.focus))return;const i=this.anchor;this._ranges.length&&this._popRange(),"before"==o.compareWith(i)?(this._pushRange(new us(o,i)),this._lastRangeBackward=!0):(this._pushRange(new us(i,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()}*getSelectedBlocks(){const e=new WeakSet;for(const t of this.getRanges()){const o=Cs(t.start,e);xs(o,t)&&(yield o);const i=t.getWalker();for(const o of i){const n=o.item;"elementEnd"==o.type&&vs(n,e,t)?yield n:"elementStart"==o.type&&n.is("model:element")&&n.root.document.model.schema.isBlock(n)&&i.jumpTo(ss._createAt(n,"end"))}const n=Cs(t.end,e);Es(n,t)&&(yield n)}}containsEntireContent(e=this.anchor.root){const t=ss._createAt(e,0),o=ss._createAt(e,"end");return t.isTouching(this.getFirstPosition())&&o.isTouching(this.getLastPosition())}toJSON(){const e={ranges:Array.from(this.getRanges()).map((e=>e.toJSON()))},t=Object.fromEntries(this.getAttributes());return Object.keys(t).length&&(e.attributes=t),this.isBackward&&(e.isBackward=!0),e}_pushRange(e){this._checkRange(e),this._ranges.push(new us(e.start,e.end))}_checkRange(e){for(let t=0;t0;)this._popRange()}_popRange(){this._ranges.pop()}}function ks(e,t){return!t.has(e)&&(t.add(e),e.root.document.model.schema.isBlock(e)&&!!e.parent)}function vs(e,t,o){return ks(e,t)&&As(e,o)}function Cs(e,t){const o=e.parent.root.document.model.schema,i=e.parent.getAncestors({parentFirst:!0,includeSelf:!0});let n=!1;const s=i.find((e=>!n&&(n=o.isLimit(e),!n&&ks(e,t))));return i.forEach((e=>t.add(e))),s}function As(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(us._createOn(o),!0)}function xs(e,t){return!!e&&(!(!t.isCollapsed&&!e.isEmpty)||!t.start.isTouching(ss._createAt(e,e.maxOffset))&&As(e,t))}function Es(e,t){return!!e&&(!(!t.isCollapsed&&!e.isEmpty)||!t.end.isTouching(ss._createAt(e,0))&&As(e,t))}_s.prototype.is=function(e){return"selection"===e||"model:selection"===e};class Ts extends(xe(us)){constructor(e,t){super(e,t),Ps.call(this)}detach(){this.stopListening()}toRange(){return new us(this.start,this.end)}static fromRange(e){return new Ts(e.start,e.end)}}function Ps(){this.listenTo(this.root.document.model,"applyOperation",((e,t)=>{const o=t[0];o.isDocumentOperation&&Ss.call(this,o)}),{priority:"low"})}function Ss(e){const t=this.getTransformedByOperation(e),o=us._createFromRanges(t),i=!o.isEqual(this),n=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 s=null;if(i){"$graveyard"==o.root.rootName&&(s="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:s})}else n&&this.fire("change:content",this.toRange(),{deletionPosition:s})}Ts.prototype.is=function(e){return"liveRange"===e||"model:liveRange"===e||"range"==e||"model:range"===e};class Is extends ys{_data;constructor(e,t){super(t),this._data=e||""}get offsetSize(){return this.data.length}get data(){return this._data}toJSON(){const e=super.toJSON();return e.data=this.data,e}_clone(){return new Is(this.data,this.getAttributes())}static fromJSON(e){return new Is(e.data,e.attributes)}}Is.prototype.is=function(e){return"$text"===e||"model:$text"===e||"text"===e||"model:text"===e||"node"===e||"model:node"===e};const Rs="selection:";class Os extends(xe(ts)){_selection;constructor(e){super(),this._selection=new Vs(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)}toJSON(){return this._selection.toJSON()}_setFocus(e,t){this._selection.setFocus(e,t)}_setTo(...e){this._selection.setTo(...e)}_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 Rs+e}static _isStoreAttributeKey(e){return e.startsWith(Rs)}}Os.prototype.is=function(e){return"selection"===e||"model:selection"==e||"documentSelection"==e||"model:documentSelection"==e};class Vs extends _s{markers=new eo({idProperty:"name"});_model;_document;_attributePriority=new Map;_selectionRestorePosition=null;_hasChangedRange=!1;_overriddenGravityRegister=new Set;_observedMarkers=new Set;constructor(e){super(),this._model=e.model,this._document=e,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",(()=>{this._validateSelectionRanges(this.getRanges())})),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(Rs)));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;ee.toJSON()))),e}_validateSelectionRanges(e){for(const t of e)if(!this._document._validateSelectionRange(t))throw new fe("document-selection-wrong-position",this,{range:t})}_prepareRange(e){if(this._checkRange(e),e.root==this._document.graveyard)return;const t=Ts.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 n=Array.from(this.markers),s=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&&!s?(this.markers.add(e),i=!0):!o&&s&&(this.markers.remove(e),i=!0)}else s&&(this.markers.remove(e),i=!0);i&&this.fire("change:marker",{oldMarkers:n,directChange:!1})}_updateAttributes(e){const t=ao(this._getSurroundingAttributes()),o=ao(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(Rs)){const o=t.substr(10);yield[o,e.getAttribute(t)]}}_getSurroundingAttributes(){const e=this.getFirstPosition(),t=this._model.schema;if("$graveyard"==e.root.rootName)return null;let o=null;if(this.isCollapsed){const i=e.textNode?e.textNode:e.nodeBefore,n=e.textNode?e.textNode:e.nodeAfter;if(this.isGravityOverridden||(o=Ds(i,t)),o||(o=Ds(n,t)),!this.isGravityOverridden&&!o){let e=i;for(;e&&!o;)e=e.previousSibling,o=Ds(e,t)}if(!o){let e=n;for(;e&&!o;)e=e.nextSibling,o=Ds(e,t)}o||(o=this.getStoredAttributes())}else{const e=this.getFirstRange();for(const i of e){if(i.item.is("element")&&t.isObject(i.item)){o=Ds(i.item,t);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 Ds(e,t){if(!e)return null;if(e instanceof os||e instanceof Is)return e.getAttributes();if(!t.isInline(e))return null;if(!t.isObject(e))return[];const o=[];for(const[i,n]of e.getAttributes())t.checkAttribute("$text",i)&&!1!==t.getAttributeProperties(i).copyFromObject&&o.push([i,n]);return o}class Fs{_nodes=[];_offsetToNode=[];constructor(e){e&&this._insertNodes(0,e)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._offsetToNode.length}getNode(e){return this._nodes[e]||null}getNodeAtOffset(e){return this._offsetToNode[e]||null}getNodeIndex(e){return e.index}getNodeStartOffset(e){return e.startOffset}indexToOffset(e){if(e==this._nodes.length)return this.maxOffset;const t=this._nodes[e];if(!t)throw new fe("model-nodelist-index-out-of-bounds",this);return this.getNodeStartOffset(t)}offsetToIndex(e){if(e==this._offsetToNode.length)return this._nodes.length;const t=this._offsetToNode[e];if(!t)throw new fe("model-nodelist-offset-out-of-bounds",this,{offset:e,nodeList:this});return this.getNodeIndex(t)}_insertNodes(e,t){const o=[];for(const e of t){if(!(e instanceof ys))throw new fe("model-nodelist-insertnodes-not-node",this);o.push(e)}let i=this.indexToOffset(e);lo(this._nodes,o,e),lo(this._offsetToNode,function(e){const t=[];let o=0;for(const i of e)for(let e=0;enull!==e.index)),this._offsetToNode=this._offsetToNode.filter((e=>null!==e.index));let t=0;for(let e=0;ee.toJSON()))}}class Ms extends ys{name;_children=new Fs;constructor(e,t,o){super(t),this.name=e,o&&this._insertChild(0,o)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}getChild(e){return this._children.getNode(e)}getChildAtOffset(e){return this._children.getNodeAtOffset(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.getChildAtOffset(o);return t}findAncestor(e,t={}){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?function(e){const t=[];for(const o of e)t.push(o._clone(!0));return t}(this._children):void 0;return new Ms(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 Is(e)];Ue(e)||(e=[e]);const t=[];for(const o of e)"string"==typeof o?t.push(new Is(o)):o instanceof os?t.push(new Is(o.data,o.getAttributes())):t.push(o);return t}(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}_removeChildrenArray(e){this._children._removeNodesArray(e);for(const t of e)t.parent=null}static fromJSON(e){let t;if(e.children){t=[];for(const o of e.children)o.name?t.push(Ms.fromJSON(o)):t.push(Is.fromJSON(o))}return new Ms(e.name,e.attributes,t)}}Ms.prototype.is=function(e,t){return t?t===this.name&&("element"===e||"model:element"===e):"element"===e||"model:element"===e||"node"===e||"model:node"===e};class Ns{_dispatchers;constructor(e){this._dispatchers=e}add(e){for(const t of this._dispatchers)e(t);return this}}class Bs extends Ns{elementToElement(e){return this.add(function(e){const t=Us(e.model),o=Ks(e.view,"container");t.attributes.length&&(t.children=!0);return i=>{i.on(`insert:${t.name}`,js(o,Ys(t)),{priority:e.converterPriority||"normal"}),(t.children||t.attributes.length)&&i.on("reduceChanges",Qs(t),{priority:"low"})}}(e))}elementToStructure(e){return this.add(function(e){const t=Us(e.model),o=Ks(e.view,"container");return t.children=!0,i=>{if(i._conversionApi.schema.checkChild(t.name,"$text"))throw new fe("conversion-element-to-structure-disallowed-text",i,{elementName:t.name});var n,s;i.on(`insert:${t.name}`,(n=o,s=Ys(t),(e,t,o)=>{if(!s(t.item,o.consumable,{preflight:!0}))return;const i=new Map;o.writer._registerSlotFactory(function(e,t,o){return(i,n)=>{const s=i.createContainerElement("$slot");let r=null;if("children"===n)r=Array.from(e.getChildren());else{if("function"!=typeof n)throw new fe("conversion-slot-mode-unknown",o.dispatcher,{modeOrFilter:n});r=Array.from(e.getChildren()).filter((e=>n(e)))}return t.set(s,r),s}}(t.item,i,o));const r=n(t.item,o,t);if(o.writer._clearSlotFactory(),!r)return;!function(e,t,o){const i=Array.from(t.values()).flat(),n=new Set(i);if(n.size!=i.length)throw new fe("conversion-slot-filter-overlap",o.dispatcher,{element:e});if(n.size!=e.childCount)throw new fe("conversion-slot-filter-incomplete",o.dispatcher,{element:e})}(t.item,i,o),s(t.item,o.consumable);const a=t.reconversion&&Hs(t.item,o)||o.mapper.toViewPosition(t.range.start);o.mapper.bindElements(t.item,r),o.writer.insert(a,r),o.convertAttributes(t.item),function(e,t,o,i){o.mapper.on("modelToViewPosition",r,{priority:"highest"});let n=null,s=null;for([n,s]of t)Xs(e,s,o,i),o.writer.setCustomProperty("$structureSlotParent",!0,n.parent),o.writer.move(o.writer.createRangeIn(n),o.writer.createPositionBefore(n)),o.writer.remove(n);function r(e,t){const o=t.modelPosition.nodeAfter,i=s.indexOf(o);i<0||(t.viewPosition=t.mapper.findPositionIn(n,i))}o.mapper.off("modelToViewPosition",r)}(r,i,o,{reconversion:t.reconversion})}),{priority:e.converterPriority||"normal"}),i.on("reduceChanges",Qs(t),{priority:"low"})}}(e))}attributeToElement(e){return this.add(function(e){e=j(e);let t=e.model;"string"==typeof t&&(t={key:t});let o=`attribute:${t.key}`;t.name&&(o+=":"+t.name);if(t.values)for(const o of t.values)e.view[o]=Ks(e.view[o],"attribute");else e.view=Ks(e.view,"attribute");const i=Gs(e);return t=>{t.on(o,zs(i),{priority:e.converterPriority||"normal"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=j(e);let t=e.model;"string"==typeof t&&(t={key:t});let o=`attribute:${t.key}`;t.name&&(o+=":"+t.name);if(t.values)for(const o of t.values)e.view[o]=Js(e.view[o]);else e.view=Js(e.view);const i=Gs(e);return t=>{var n;t.on(o,(n=i,(e,t,o)=>{if(!o.consumable.test(t.item,e.name))return;const i=n(t.attributeOldValue,o,t),s=n(t.attributeNewValue,o,t);if(!i&&!s)return;o.consumable.consume(t.item,e.name);const r=o.mapper.toViewElement(t.item),a=o.writer;if(!r)throw new fe("conversion-attribute-to-attribute-on-text",o.dispatcher,t);if(null!==t.attributeOldValue&&i){let e=i.value;"style"==i.key&&(e="string"==typeof i.value?new gi(a.document.stylesProcessor).setTo(i.value).getStylesEntries().map((([e])=>e)):Object.keys(i.value)),a.removeAttribute(i.key,e,r)}if(null!==t.attributeNewValue&&s){let e=s.value;"style"==s.key&&"string"==typeof s.value&&(e=Object.fromEntries(new gi(a.document.stylesProcessor).setTo(s.value).getStylesEntries())),a.setAttribute(s.key,e,!1,r)}}),{priority:e.converterPriority||"normal"})}}(e))}markerToElement(e){return this.add(function(e){const t=Ks(e.view,"ui");return o=>{o.on(`addMarker:${e.model}`,qs(t),{priority:e.converterPriority||"normal"}),o.on(`removeMarker:${e.model}`,((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||t.item instanceof Os||t.item.is("$textProxy")))return;const n=Zs(o,t,i);if(!n)return;if(!i.consumable.consume(t.item,e.name))return;const s=i.writer,r=Ls(s,n),a=s.document.selection;if(t.item instanceof _s||t.item instanceof Os)s.wrap(a.getFirstRange(),r);else{const e=i.mapper.toViewRange(t.range),o=s.wrap(e,r);for(const e of o.getItems())if(e.is("attributeElement")&&e.isSimilar(r)){i.mapper.bindElementToMarker(e,t.markerName);break}}}),{priority:e.converterPriority||"normal"}),t.on(`addMarker:${e.model}`,function(e){return(t,o,i)=>{if(!o.item)return;if(!(o.item instanceof Ms))return;const n=Zs(e,o,i);if(!n)return;if(!i.consumable.test(o.item,t.name))return;const s=i.mapper.toViewElement(o.item);if(s&&s.getCustomProperty("addHighlight")){i.consumable.consume(o.item,t.name);for(const e of us._createIn(o.item))i.consumable.consume(e.item,t.name);s.getCustomProperty("addHighlight")(s,n,i.writer),i.mapper.bindElementToMarker(s,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 n=Zs(e,o,i);if(!n)return;const s=Ls(i.writer,n),r=i.mapper.markerNameToElements(o.markerName);if(r){for(const e of r)if(i.mapper.unbindElementFromMarkerName(e,o.markerName),e.is("attributeElement"))i.writer.unwrap(i.writer.createRangeOn(e),s);else{e.getCustomProperty("removeHighlight")(e,n.id,i.writer)}i.writer.clearClonedElementsGroup(o.markerName),t.stop()}}}(e.view),{priority:e.converterPriority||"normal"})}}(e))}markerToData(e){return this.add(function(e){e=j(e);const t=e.model;let o=e.view;o||(o=o=>({group:t,name:o.substr(e.model.length+1)}));return i=>{var n;i.on(`addMarker:${t}`,(n=o,(e,t,o)=>{const i=n(t.markerName,o);if(!i)return;const s=t.markerRange;o.consumable.consume(s,e.name)&&(Ws(s,!1,o,t,i),Ws(s,!0,o,t,i),e.stop())}),{priority:e.converterPriority||"normal"}),i.on(`removeMarker:${t}`,function(e){return(t,o,i)=>{const n=e(o.markerName,i);if(!n)return;const s=i.mapper.markerNameToElements(o.markerName);if(s){for(const e of s)i.mapper.unbindElementFromMarkerName(e,o.markerName),e.is("containerElement")?(r(`data-${n.group}-start-before`,e),r(`data-${n.group}-start-after`,e),r(`data-${n.group}-end-before`,e),r(`data-${n.group}-end-after`,e)):i.writer.clear(i.writer.createRangeOn(e),e);i.writer.clearClonedElementsGroup(o.markerName),t.stop()}function r(e,t){if(t.hasAttribute(e)){const o=new Set(t.getAttribute(e).split(","));o.delete(n.name),0==o.size?i.writer.removeAttribute(e,t):i.writer.setAttribute(e,Array.from(o).join(","),t)}}}}(o),{priority:e.converterPriority||"normal"})}}(e))}}function Ls(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 zs(e){return(t,o,i)=>{if(!i.consumable.test(o.item,t.name))return;const n=e(o.attributeOldValue,i,o),s=e(o.attributeNewValue,i,o);if(!n&&!s)return;i.consumable.consume(o.item,t.name);const r=i.writer,a=r.document.selection;if(o.item instanceof _s||o.item instanceof Os)r.wrap(a.getFirstRange(),s);else{let e=i.mapper.toViewRange(o.range);null!==o.attributeOldValue&&n&&(e=r.unwrap(e,n)),null!==o.attributeNewValue&&s&&r.wrap(e,s)}}}function js(e,t=tr){return(o,i,n)=>{if(!t(i.item,n.consumable,{preflight:!0}))return;const s=e(i.item,n,i);if(!s)return;t(i.item,n.consumable);const r=i.reconversion&&Hs(i.item,n)||n.mapper.toViewPosition(i.range.start);n.mapper.bindElements(i.item,s),n.writer.insert(r,s),n.convertAttributes(i.item),Xs(s,i.item.getChildren(),n,{reconversion:i.reconversion})}}function qs(e){return(t,o,i)=>{o.isOpening=!0;const n=e(o,i);o.isOpening=!1;const s=e(o,i);if(!n||!s)return;const r=o.markerRange;if(r.isCollapsed&&!i.consumable.consume(r,t.name))return;for(const e of r)if(!i.consumable.consume(e.item,t.name))return;const a=i.mapper,l=i.writer;l.insert(a.toViewPosition(r.start),n),i.mapper.bindElementToMarker(n,o.markerName),r.isCollapsed||(l.insert(a.toViewPosition(r.end),s),i.mapper.bindElementToMarker(s,o.markerName)),t.stop()}}function $s(e,t){const o=t.writer.remove(e);for(const e of t.writer.createRangeIn(o).getItems())t.mapper.unbindViewElement(e,{defer:!0});return e.start}function Hs(e,t){const o=t.mapper.toViewElement(e);return o&&$s(t.writer.createRangeOn(o),t)}function Ws(e,t,o,i,n){const s=t?e.start:e.end,r=s.nodeAfter&&s.nodeAfter.is("element")?s.nodeAfter:null,a=s.nodeBefore&&s.nodeBefore.is("element")?s.nodeBefore:null;if(r||a){let e,s;t&&r||!t&&!a?(e=r,s=!0):(e=a,s=!1);const l=o.mapper.toViewElement(e);if(l)return void function(e,t,o,i,n,s){const r=`data-${s.group}-${t?"start":"end"}-${o?"before":"after"}`,a=e.hasAttribute(r)?e.getAttribute(r).split(","):[];a.unshift(s.name),i.writer.setAttribute(r,a.join(","),e),i.mapper.bindElementToMarker(e,n.markerName)}(l,t,s,o,i,n)}!function(e,t,o,i,n){const s=`${n.group}-${t?"start":"end"}`,r=n.name?{name:n.name}:null,a=o.writer.createUIElement(s,r);o.writer.insert(e,a),o.mapper.bindElementToMarker(a,i.markerName)}(o.mapper.toViewPosition(s),t,o,i,n)}function Us(e){return"string"==typeof e&&(e={name:e}),{name:e.name,attributes:e.attributes?Qt(e.attributes):[],children:!!e.children}}function Ks(e,t){return"function"==typeof e?e:(o,i)=>function(e,t,o){"string"==typeof e&&(e={name:e});let i;const n=t.writer,s=Object.assign({},e.attributes);if("container"==o)i=n.createContainerElement(e.name,s);else if("attribute"==o){const t={priority:e.priority||Wi.DEFAULT_PRIORITY};i=n.createAttributeElement(e.name,s,t)}else i=n.createUIElement(e.name,s);if(e.styles){const t=Object.keys(e.styles);for(const o of t)n.setStyle(o,e.styles[o],i)}if(e.classes){const t=e.classes;if("string"==typeof t)n.addClass(t,i);else for(const e of t)n.addClass(e,i)}return i}(e,i,t)}function Gs(e){return e.model.values?(t,o,i)=>{const n=e.view[t];return n?n(t,o,i):null}:e.view}function Js(e){return"string"==typeof e?t=>({key:e,value:t}):"object"==typeof e?e.value?()=>e:t=>({key:e.key,value:t}):e}function Zs(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}function Qs(e){const t=function(e){return(t,o)=>{if(!t.is("element",e.name))return!1;if("attribute"==o.type){if(e.attributes.includes(o.attributeKey))return!0}else if(e.children)return!0;return!1}}(e);return(e,o)=>{const i=[];o.reconvertedElements||(o.reconvertedElements=new Set);for(const e of o.changes){const n="attribute"==e.type?e.range.start.nodeAfter:e.position.parent;if(n&&t(n,e)&&"reinsert"!=e.type){if("insert"==e.type&&"rename"==e.action&&o.refreshedItems.add(e.position.nodeAfter),!o.reconvertedElements.has(n)){o.reconvertedElements.add(n);const e=ss._createBefore(n);let t=i.length;for(let o=i.length-1;o>=0;o--){const n=i[o],s=("attribute"==n.type?n.range.start:n.position).compareWith(e);if("before"==s||"remove"==n.type&&"same"==s)break;t=o}i.splice(t,0,{type:"reinsert",name:n.name,position:e,length:1})}}else i.push(e)}o.changes=i}}function Ys(e){return(t,o,i={})=>{const n=["insert"];for(const o of e.attributes)t.hasAttribute(o)&&n.push(`attribute:${o}`);return!!n.every((e=>o.test(t,e)))&&(i.preflight||n.forEach((e=>o.consume(t,e))),!0)}}function Xs(e,t,o,i){for(const n of t)er(e.root,n,o,i)||o.convertItem(n)}function er(e,t,o,i){const{writer:n,mapper:s}=o;if(!i.reconversion)return!1;const r=s.toViewElement(t);return!(!r||r.root==e)&&(!!o.canReuseView(r)&&(n.move(n.createRangeOn(r),s.toViewPosition(ss._createBefore(t))),!0))}function tr(e,t,{preflight:o}={}){return o?t.test(e,"insert"):t.consume(e,"insert")}function or(e){const{schema:t,document:o}=e.model;for(const i of o.getRoots())if(i.isEmpty&&!t.checkChild(i,"$text")&&t.checkChild(i,"paragraph"))return e.insertElement("paragraph",i),!0;return!1}function ir(e,t,o){const i=o.createContext(e);return!!o.checkChild(i,"paragraph")&&!!o.checkChild(i.push("paragraph"),t)}function nr(e,t){const o=t.createElement("paragraph");return t.insert(o,e),t.createPositionAt(o,0)}class sr extends Ns{elementToElement(e){return this.add(rr(e))}elementToAttribute(e){return this.add(function(e){e=j(e),cr(e);const t=dr(e,!1),o=ar(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=j(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,o=void 0===e.view.value?/[\s\S]*/:e.view.value;let i;if("class"==t||"style"==t){const e="class"==t?"classes":"styles";i={[e]:o}}else i={attributes:{[t]:o}};e.view.name&&(i.name=e.view.name);return e.view=i,t}(e));cr(e,t);const o=dr(e,!0);return t=>{t.on("element",o,{priority:e.converterPriority||"low"})}}(e))}elementToMarker(e){return this.add(function(e){const t=function(e){return(t,o)=>{const i="string"==typeof e?e:e(t,o);return o.writer.createElement("$marker",{"data-name":i})}}(e.model);return rr({...e,model:t})}(e))}dataToMarker(e){return this.add(function(e){e=j(e),e.model||(e.model=t=>t?e.view+":"+t:e.view);const t={view:e.view,model:e.model},o=lr(ur(t,"start")),i=lr(ur(t,"end"));return n=>{n.on(`element:${e.view}-start`,o,{priority:e.converterPriority||"normal"}),n.on(`element:${e.view}-end`,i,{priority:e.converterPriority||"normal"});const s=ge.low,r=ge.highest,a=ge.get(e.converterPriority)/r;n.on("element",function(e){return(t,o,i)=>{const n=`data-${e.view}`;function s(t,n){for(const s of n){const n=e.model(s,i),r=i.writer.createElement("$marker",{"data-name":n});i.writer.insert(r,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:n+"-end-after"})||i.consumable.test(o.viewItem,{attributes:n+"-start-after"})||i.consumable.test(o.viewItem,{attributes:n+"-end-before"})||i.consumable.test(o.viewItem,{attributes:n+"-start-before"}))&&(o.modelRange||Object.assign(o,i.convertChildren(o.viewItem,o.modelCursor)),i.consumable.consume(o.viewItem,{attributes:n+"-end-after"})&&s(o.modelRange.end,o.viewItem.getAttribute(n+"-end-after").split(",")),i.consumable.consume(o.viewItem,{attributes:n+"-start-after"})&&s(o.modelRange.end,o.viewItem.getAttribute(n+"-start-after").split(",")),i.consumable.consume(o.viewItem,{attributes:n+"-end-before"})&&s(o.modelRange.start,o.viewItem.getAttribute(n+"-end-before").split(",")),i.consumable.consume(o.viewItem,{attributes:n+"-start-before"})&&s(o.modelRange.start,o.viewItem.getAttribute(n+"-start-before").split(",")))}}(t),{priority:s+a})}}(e))}}function rr(e){const t=lr(e=j(e)),o=ar(e.view),i=o?`element:${o}`:"element";return o=>{o.on(i,t,{priority:e.converterPriority||"normal"})}}function ar(e){return"string"==typeof e?e:"object"==typeof e&&"string"==typeof e.name?e.name:null}function lr(e){const t=new ui(e.view);return(o,i,n)=>{const s=t.match(i.viewItem);if(!s)return;const r=s.match;if(r.name=!0,!n.consumable.test(i.viewItem,r))return;const a=function(e,t,o){return e instanceof Function?e(t,o):o.writer.createElement(e)}(e.model,i.viewItem,n);a&&n.safeInsert(a,i.modelCursor)&&(n.consumable.consume(i.viewItem,r),n.convertChildren(i.viewItem,a),n.updateConversionResult(a,i))}}function cr(e,t=null){const o=null===t||(e=>e.getAttribute(t)),i="object"!=typeof e.model?e.model:e.model.key,n="object"!=typeof e.model||void 0===e.model.value?o:e.model.value;e.model={key:i,value:n}}function dr(e,t){const o=new ui(e.view);return(i,n,s)=>{if(!n.modelRange&&t)return;const r=o.match(n.viewItem);if(!r)return;if(!function(e,t){const o="function"==typeof e?e(t):e;if("object"==typeof o&&!ar(o))return!1;return!o.classes&&!o.attributes&&!o.styles}(e.view,n.viewItem)?delete r.match.name:r.match.name=!0,!s.consumable.test(n.viewItem,r.match))return;const a=e.model.key,l="function"==typeof e.model.value?e.model.value(n.viewItem,s,n):e.model.value;if(null==l)return;n.modelRange||Object.assign(n,s.convertChildren(n.viewItem,n.modelCursor));const c=function(e,t,o,i){let n=!1;for(const s of Array.from(e.getItems({shallow:o})))i.schema.checkAttribute(s,t.key)&&(n=!0,s.hasAttribute(t.key)||i.writer.setAttribute(t.key,t.value,s));return n}(n.modelRange,{key:a,value:l},t,s);c&&(s.consumable.test(n.viewItem,{name:!0})&&(r.match.name=!0),s.consumable.consume(n.viewItem,r.match))}}function ur(e,t){return{view:`${e.view}-${t}`,model:(t,o)=>{const i=t.getAttribute("name"),n=e.model(i,o);return o.writer.createElement("$marker",{"data-name":n})}}}class hr extends(Be()){model;view;mapper;downcastDispatcher;constructor(e,t){super(),this.model=e,this.view=new es(t),this.mapper=new hs,this.downcastDispatcher=new fs({mapper:this.mapper,schema:e.schema});const o=this.model.document,i=o.selection,n=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,n,e),this.downcastDispatcher.convertSelection(i,n,e)}))}),{priority:"low"}),this.listenTo(this.view.document,"selectionChange",function(e,t){return(o,i)=>{const n=i.newSelection,s=[];for(const e of n.getRanges())s.push(t.toModelRange(e));const r=e.createSelection(s,{backward:n.isBackward});r.isEqual(e.document.selection)||e.change((e=>{e.setSelection(r)}))}}(this.model,this.mapper)),this.downcastDispatcher.on("insert:$text",((e,t,o)=>{if(!o.consumable.consume(t.item,e.name))return;const i=o.writer,n=o.mapper.toViewPosition(t.range.start),s=i.createText(t.item.data);i.insert(n,s)}),{priority:"lowest"}),this.downcastDispatcher.on("insert",((e,t,o)=>{o.convertAttributes(t.item),t.reconversion||!t.item.is("element")||t.item.isEmpty||o.convertChildren(t.item)}),{priority:"lowest"}),this.downcastDispatcher.on("remove",((e,t,o)=>{if(t.reconversion)return;const i=o.mapper.toViewPosition(t.position),n=t.position.getShiftedBy(t.length),s=o.mapper.toViewPosition(n,{isPhantom:!0});$s(o.writer.createRange(i,s).getTrimmed(),o)}),{priority:"low"}),this.downcastDispatcher.on("cleanSelection",((e,t,o)=>{const i=o.writer,n=i.document.selection;for(const e of n.getRanges())e.isCollapsed&&e.end.parent.isAttached()&&o.writer.mergeAttributes(e.start);i.setSelection(null)})),this.downcastDispatcher.on("selection",((e,t,o)=>{const i=t.selection;if(i.isCollapsed)return;if(!o.consumable.consume(i,"selection"))return;const n=[];for(const e of i.getRanges())n.push(o.mapper.toViewRange(e));o.writer.setSelection(n,{backward:i.isBackward})}),{priority:"low"}),this.downcastDispatcher.on("selection",((e,t,o)=>{const i=t.selection;if(!i.isCollapsed)return;if(!o.consumable.consume(i,"selection"))return;const n=o.writer,s=i.getFirstPosition(),r=o.mapper.toViewPosition(s),a=n.breakAttributes(r);n.setSelection(a)}),{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using((e=>{if("$graveyard"==e.rootName)return null;const t=new Ti(this.view.document,e.name);return t.rootName=e.rootName,this.mapper.bindElements(e,t),t}))}destroy(){this.view.destroy(),this.stopListening()}reconvertMarker(e){const t="string"==typeof e?e:e.name,o=this.model.markers.get(t);if(!o)throw new fe("editingcontroller-reconvertmarker-marker-not-exist",this,{markerName:t});this.model.change((()=>{this.model.markers._refresh(o)}))}reconvertItem(e){this.model.change((()=>{this.model.document.differ._refreshItem(e)}))}}class mr extends(Be()){_sourceDefinitions={};_attributeProperties=Object.create(null);_customChildChecks=new Map;_customAttributeChecks=new Map;_genericCheckSymbol=Symbol("$generic");_compiledDefinitions;constructor(){super(),this.decorate("checkChild"),this.decorate("checkAttribute"),this.on("checkAttribute",((e,t)=>{t[0]=new gr(t[0])}),{priority:"highest"}),this.on("checkChild",((e,t)=>{t[0]=new gr(t[0]),t[1]=this.getDefinition(t[1])}),{priority:"highest"})}register(e,t){if(this._sourceDefinitions[e])throw new fe("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 fe("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:"is"in e&&(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(e,t)}checkAttribute(e,t){const o=this.getDefinition(e.last);if(!o)return!1;const i=this._evaluateAttributeChecks(e,t);return void 0!==i?i:o.allowAttributes.includes(t)}checkMerge(e,t){if(e instanceof ss){const t=e.nodeBefore,o=e.nodeAfter;if(!(t instanceof Ms))throw new fe("schema-check-merge-no-element-before",this);if(!(o instanceof Ms))throw new fe("schema-check-merge-no-element-after",this);return this.checkMerge(t,o)}if(this.isLimit(e)||this.isLimit(t))return!1;for(const o of t.getChildren())if(!this.checkChild(e,o))return!1;return!0}addChildCheck(e,t){const o=void 0!==t?t:this._genericCheckSymbol,i=this._customChildChecks.get(o)||[];i.push(e),this._customChildChecks.set(o,i)}addAttributeCheck(e,t){const o=void 0!==t?t:this._genericCheckSymbol,i=this._customAttributeChecks.get(o)||[];i.push(e),this._customAttributeChecks.set(o,i)}setAttributeProperties(e,t){this._attributeProperties[e]=Object.assign(this.getAttributeProperties(e),t)}getAttributeProperties(e){return this._attributeProperties[e]||Object.create(null)}getLimitElement(e){let t;if(e instanceof ss)t=e.parent;else{t=(e instanceof us?[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 Is("",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,o={}){e=function*(e){for(const t of e)yield*t.getMinimalFlatRanges()}(e);for(const i of e)yield*this._getValidRangesForRange(i,t,o)}getNearestSelectionRange(e,t="both"){if("$graveyard"==e.root.rootName)return null;if(this.checkChild(e,"$text"))return new us(e);let o,i;const n=e.getAncestors().reverse().find((e=>this.isLimit(e)))||e.root;"both"!=t&&"backward"!=t||(o=new is({boundaries:us._createIn(n),startPosition:e,direction:"backward"})),"both"!=t&&"forward"!=t||(i=new is({boundaries:us._createIn(n),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 us._createOn(i.item);if(this.checkChild(i.nextPosition,"$text"))return new us(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}setAllowedAttributes(e,t,o){const i=o.model;for(const[n,s]of Object.entries(t))i.schema.checkAttribute(e,n)&&o.setAttribute(n,s,e)}removeDisallowedAttributes(e,t){for(const o of e)if(o.is("$text"))Tr(this,o,t);else{const e=us._createIn(o).getPositions();for(const o of e){Tr(this,o.nodeBefore||o.parent,t)}}}getAttributesWithProperty(e,t,o){const i={};for(const[n,s]of e.getAttributes()){const e=this.getAttributeProperties(n);void 0!==e[t]&&(void 0!==o&&o!==e[t]||(i[n]=s))}return i}createContext(e){return new gr(e)}_clearCache(){this._compiledDefinitions=null}_compile(){const e={},t=this._sourceDefinitions,o=Object.keys(t);for(const i of o)e[i]=pr(t[i],i);const i=Object.values(e);for(const t of i)fr(e,t),br(e,t),wr(e,t),yr(e,t);for(const t of i)_r(e,t);for(const t of i)kr(e,t);for(const t of i)vr(e,t);for(const t of i)Cr(e,t);for(const t of i)Ar(e,t);this._compiledDefinitions=function(e){const t={};for(const o of Object.values(e))t[o.name]={name:o.name,isBlock:!!o.isBlock,isContent:!!o.isContent,isInline:!!o.isInline,isLimit:!!o.isLimit,isObject:!!o.isObject,isSelectable:!!o.isSelectable,allowIn:Array.from(o.allowIn).filter((t=>!!e[t])),allowChildren:Array.from(o.allowChildren).filter((t=>!!e[t])),allowAttributes:Array.from(o.allowAttributes)};return t}(e)}_checkContextMatch(e,t){const o=e.last;let i=this._evaluateChildChecks(e,t);if(i=void 0!==i?i:t.allowIn.includes(o.name),!i)return!1;const n=this.getDefinition(o),s=e.trimLast();return!!n&&(0==s.length||this._checkContextMatch(s,n))}_evaluateChildChecks(e,t){const o=this._customChildChecks.get(this._genericCheckSymbol)||[],i=this._customChildChecks.get(t.name)||[];for(const n of[...o,...i]){const o=n(e,t);if(void 0!==o)return o}}_evaluateAttributeChecks(e,t){const o=this._customAttributeChecks.get(this._genericCheckSymbol)||[],i=this._customAttributeChecks.get(t)||[];for(const n of[...o,...i]){const o=n(e,t);if(void 0!==o)return o}}*_getValidRangesForRange(e,t,o){let i=e.start,n=e.start;for(const s of e.getItems({shallow:!0})){if(s.is("element"))if(o.includeEmptyRanges&&s.isEmpty){const e=this.createContext(s);this.checkChild(e,"$text")&&this.checkAttribute(e.push("$text"),t)&&(yield us._createIn(s))}else yield*this._getValidRangesForRange(us._createIn(s),t,o);this.checkAttribute(s,t)||(i.isEqual(n)||(yield new us(i,n)),i=ss._createAfter(s)),n=ss._createAfter(s)}i.isEqual(n)||(yield new us(i,n))}findOptimalInsertionRange(e,t){const o=e.getSelectedElement();if(o&&this.isObject(o)&&!this.isInline(o))return"before"==t||"after"==t?new us(ss._createAt(o,t)):us._createOn(o);const i=to(e.getSelectedBlocks());if(!i)return new us(e.focus);if(i.isEmpty)return new us(ss._createAt(i,0));const n=ss._createAfter(i);return e.focus.isTouching(n)?new us(n):new us(ss._createBefore(i))}}class gr{_items;constructor(e){if(e instanceof gr)return e;let t;t="string"==typeof e?[e]:Array.isArray(e)?e:e.getAncestors({includeSelf:!0}),this._items=t.map(Er)}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 gr([e]);return t._items=[...this._items,...t._items],t}trimLast(){const e=new gr([]);return e._items=this._items.slice(0,-1),e}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 pr(e,t){const o={name:t,allowIn:new Set,allowChildren:new Set,disallowIn:new Set,disallowChildren:new Set,allowContentOf:new Set,allowWhere:new Set,allowAttributes:new Set,disallowAttributes:new Set,allowAttributesOf:new Set,inheritTypesFrom:new Set};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),xr(e,o,"allowIn"),xr(e,o,"allowChildren"),xr(e,o,"disallowIn"),xr(e,o,"disallowChildren"),xr(e,o,"allowContentOf"),xr(e,o,"allowWhere"),xr(e,o,"allowAttributes"),xr(e,o,"disallowAttributes"),xr(e,o,"allowAttributesOf"),xr(e,o,"inheritTypesFrom"),function(e,t){for(const o of e){const e=o.inheritAllFrom;e&&(t.allowContentOf.add(e),t.allowWhere.add(e),t.allowAttributesOf.add(e),t.inheritTypesFrom.add(e))}}(e,o),o}function fr(e,t){for(const o of t.allowIn){const i=e[o];i?i.allowChildren.add(t.name):t.allowIn.delete(o)}}function br(e,t){for(const o of t.allowChildren){const i=e[o];i?i.allowIn.add(t.name):t.allowChildren.delete(o)}}function wr(e,t){for(const o of t.disallowIn){const i=e[o];i?i.disallowChildren.add(t.name):t.disallowIn.delete(o)}}function yr(e,t){for(const o of t.disallowChildren){const i=e[o];i?i.disallowIn.add(t.name):t.disallowChildren.delete(o)}}function _r(e,t){for(const e of t.disallowChildren)t.allowChildren.delete(e);for(const e of t.disallowIn)t.allowIn.delete(e);for(const e of t.disallowAttributes)t.allowAttributes.delete(e)}function kr(e,t){for(const o of t.allowContentOf){const i=e[o];i&&(i.disallowChildren.forEach((o=>{t.allowChildren.has(o)||(t.disallowChildren.add(o),e[o].disallowIn.add(t.name))})),i.allowChildren.forEach((o=>{t.disallowChildren.has(o)||(t.allowChildren.add(o),e[o].allowIn.add(t.name))})))}}function vr(e,t){for(const o of t.allowWhere){const i=e[o];i&&(i.disallowIn.forEach((o=>{t.allowIn.has(o)||(t.disallowIn.add(o),e[o].disallowChildren.add(t.name))})),i.allowIn.forEach((o=>{t.disallowIn.has(o)||(t.allowIn.add(o),e[o].allowChildren.add(t.name))})))}}function Cr(e,t){for(const o of t.allowAttributesOf){const i=e[o];if(!i)return;i.allowAttributes.forEach((e=>{t.disallowAttributes.has(e)||t.allowAttributes.add(e)}))}}function Ar(e,t){for(const o of t.inheritTypesFrom){const i=e[o];if(i){const e=Object.keys(i).filter((e=>e.startsWith("is")));for(const o of e)o in t||(t[o]=i[o])}}}function xr(e,t,o){for(const i of e){let e=i[o];"string"==typeof e&&(e=[e]),Array.isArray(e)&&e.forEach((e=>t[o].add(e)))}}function Er(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 Tr(e,t,o){for(const i of t.getAttributeKeys())e.checkAttribute(t,i)||o.removeAttribute(i,t)}class Pr extends(xe()){conversionApi;_splitParts=new Map;_cursorParents=new Map;_modelCursor=null;_emptyElementsToKeep=new Set;constructor(e){super(),this.conversionApi={...e,consumable:null,writer:null,store:null,convertItem:(e,t)=>this._convertItem(e,t),convertChildren:(e,t)=>this._convertChildren(e,t),safeInsert:(e,t)=>this._safeInsert(e,t),updateConversionResult:(e,t)=>this._updateConversionResult(e,t),splitToAllowedParent:(e,t)=>this._splitToAllowedParent(e,t),getSplitParts:e=>this._getSplitParts(e),keepEmptyElement:e=>this._keepEmptyElement(e)}}convert(e,t,o=["$root"]){this.fire("viewCleanup",e),this._modelCursor=function(e,t){let o;for(const i of new gr(e)){const e={};for(const t of i.getAttributeKeys())e[t]=i.getAttribute(t);const n=t.createElement(i.name,e);o&&t.insert(n,o),o=ss._createAt(n,0)}return o}(o,t),this.conversionApi.writer=t,this.conversionApi.consumable=ai.createFrom(e),this.conversionApi.store={};const{modelRange:i}=this._convertItem(e,this._modelCursor),n=t.createDocumentFragment();if(i){this._removeEmptyElements();const e=this._modelCursor.parent,o=e._removeChildren(0,e.childCount);n._insertChild(0,o),n.markers=function(e,t){const o=new Set,i=new Map,n=us._createIn(e).getItems();for(const e of n)e.is("element","$marker")&&o.add(e);for(const e of o){const o=e.getAttribute("data-name"),n=t.createPositionBefore(e);i.has(o)?i.get(o).end=n.clone():i.set(o,new us(n.clone())),t.remove(e)}return i}(n,t)}return this._modelCursor=null,this._splitParts.clear(),this._cursorParents.clear(),this._emptyElementsToKeep.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,n}_convertItem(e,t){const o={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 us))throw new fe("view-conversion-dispatcher-incorrect-result",this);return{modelRange:o.modelRange,modelCursor:o.modelCursor}}_convertChildren(e,t){let o=t.is("position")?t:ss._createAt(t,0);const i=new us(o);for(const t of Array.from(e.getChildren())){const e=this._convertItem(t,o);e.modelRange instanceof us&&(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 n=this._cursorParents.get(e);t.modelCursor=n?i.createPositionAt(n,0):t.modelRange.end}_splitToAllowedParent(e,t){const{schema:o,writer:i}=this.conversionApi;let n=o.findAllowedParent(t,e);if(n){if(n===t.parent)return{position:t};this._modelCursor.parent.getAncestors().includes(n)&&(n=null)}if(!n)return ir(t,e,o)?{position:nr(t,i)}:null;const s=this.conversionApi.writer.split(t,n),r=[];for(const e of s.range.getWalker())if("elementEnd"==e.type)r.push(e.item);else{const t=r.pop(),o=e.item;this._registerSplitPair(t,o)}const a=s.range.end.parent;return this._cursorParents.set(e,a),{position:s.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}_keepEmptyElement(e){this._emptyElementsToKeep.add(e)}_removeEmptyElements(){const e=new Map;for(const t of this._splitParts.keys())if(t.isEmpty&&!this._emptyElementsToKeep.has(t)){const o=e.get(t.parent)||[];o.push(t),this._splitParts.delete(t),e.set(t.parent,o)}for(const[t,o]of e)t._removeChildrenArray(o);e.size&&this._removeEmptyElements()}}class Sr{getHtml(e){const t=J.document.implementation.createHTMLDocument("").createElement("div");return t.appendChild(e),t.innerHTML}}class Ir{domParser;domConverter;htmlWriter;skipComments=!0;constructor(e){this.domParser=new DOMParser,this.domConverter=new Rn(e,{renderingMode:"data"}),this.htmlWriter=new Sr}toData(e){const t=this.domConverter.viewToDom(e);return this.htmlWriter.getHtml(t)}toView(e){const t=this._toDom(e);return this.domConverter.domToView(t,{skipComments:this.skipComments})}registerRawContentMatcher(e){this.domConverter.registerRawContentMatcher(e)}useFillerType(e){this.domConverter.blockFillerMode="marked"==e?"markedNbsp":"nbsp"}_toDom(e){/<(?:html|body|head|meta)(?:\s[^>]*)?>/i.test(e.trim().slice(0,1e4))||(e=`${e}`);const t=this.domParser.parseFromString(e,"text/html"),o=t.createDocumentFragment(),i=t.body.childNodes;for(;i.length>0;)o.appendChild(i[0]);return o}}class Rr extends(xe()){model;mapper;downcastDispatcher;upcastDispatcher;viewDocument;stylesProcessor;htmlProcessor;processor;_viewWriter;constructor(e,t){super(),this.model=e,this.mapper=new hs,this.downcastDispatcher=new fs({mapper:this.mapper,schema:e.schema}),this.downcastDispatcher.on("insert:$text",((e,t,o)=>{if(!o.consumable.consume(t.item,e.name))return;const i=o.writer,n=o.mapper.toViewPosition(t.range.start),s=i.createText(t.item.data);i.insert(n,s)}),{priority:"lowest"}),this.downcastDispatcher.on("insert",((e,t,o)=>{o.convertAttributes(t.item),t.reconversion||!t.item.is("element")||t.item.isEmpty||o.convertChildren(t.item)}),{priority:"lowest"}),this.upcastDispatcher=new Pr({schema:e.schema}),this.viewDocument=new Hi(t),this.stylesProcessor=t,this.htmlProcessor=new Ir(this.viewDocument),this.processor=this.htmlProcessor,this._viewWriter=new on(this.viewDocument),this.upcastDispatcher.on("text",((e,t,{schema:o,consumable:i,writer:n})=>{let s=t.modelCursor;if(!i.test(t.viewItem))return;if(!o.checkChild(s,"$text")){if(!ir(s,"$text",o))return;if(0==t.viewItem.data.trim().length)return;s=nr(s,n)}i.consume(t.viewItem);const r=n.createText(t.viewItem.data);n.insert(r,s),t.modelRange=n.createRange(s,s.getShiftedBy(r.offsetSize)),t.modelCursor=t.modelRange.end}),{priority:"lowest"}),this.upcastDispatcher.on("element",((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}}),{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",((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}}),{priority:"lowest"}),Be().prototype.decorate.call(this,"init"),Be().prototype.decorate.call(this,"set"),Be().prototype.decorate.call(this,"get"),Be().prototype.decorate.call(this,"toView"),Be().prototype.decorate.call(this,"toModel"),this.on("init",(()=>{this.fire("ready")}),{priority:"lowest"}),this.on("ready",(()=>{this.model.enqueueChange({isUndoable:!1},or)}),{priority:"lowest"})}get(e={}){const{rootName:t="main",trim:o="empty"}=e;if(!this._checkIfRootsExists([t]))throw new fe("datacontroller-get-non-existent-root",this);const i=this.model.document.getRoot(t);return i.isAttached()||be("datacontroller-get-detached-root",this),"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 n=us._createIn(e),s=new tn(o);this.mapper.bindElements(e,s);const r=e.is("documentFragment")?e.markers:function(e){const t=[],o=e.root.document;if(!o)return new Map;const i=us._createIn(e);for(const e of o.model.markers){const o=e.getRange(),n=o.isCollapsed,s=o.start.isEqual(i.start)||o.end.isEqual(i.end);if(n&&s)t.push([e.name,o]);else{const n=i.getIntersection(o);n&&t.push([e.name,n])}}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)}}})),new Map(t)}(e);return this.downcastDispatcher.convert(n,r,i,t),s}init(e){if(this.model.document.version)throw new fe("datacontroller-init-document-not-empty",this);let t={};if("string"==typeof e?t.main=e:t=e,!this._checkIfRootsExists(Object.keys(t)))throw new fe("datacontroller-init-non-existent-root",this);return this.model.enqueueChange({isUndoable:!1},(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 fe("datacontroller-set-non-existent-root",this);this.model.enqueueChange(t.batchType||{},(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.getRoot(t))return!1;return!0}}class Or{_helpers=new Map;_downcast;_upcast;constructor(e,t){this._downcast=Qt(e),this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=Qt(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 fe("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:e,dispatchers:[t],isDowncast:o})}for(e){if(!this._helpers.has(e))throw new fe("conversion-for-unknown-group",this);return this._helpers.get(e)}elementToElement(e){this.for("downcast").elementToElement(e);for(const{model:t,view:o}of Vr(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 Vr(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 Vr(e))this.for("upcast").attributeToAttribute({view:o,model:t})}_createConversionHelpers({name:e,dispatchers:t,isDowncast:o}){if(this._helpers.has(e))throw new fe("conversion-group-exists",this);const i=o?new Bs(t):new sr(t);this._helpers.set(e,i)}}function*Vr(e){if(e.model.values)for(const t of e.model.values){const o={key:e.model.key,value:t},i=e.view[t],n=e.upcastAlso?e.upcastAlso[t]:void 0;yield*Dr(o,i,n)}else yield*Dr(e.model,e.view,e.upcastAlso)}function*Dr(e,t,o){if(yield{model:e,view:t},o)for(const t of Qt(o))yield{model:e,view:t}}class Fr{baseVersion;isDocumentOperation;batch;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,t){return new this(e.baseVersion)}}function Mr(e,t){const o=Lr(t),i=o.reduce(((e,t)=>e+t.offsetSize),0),n=e.parent;jr(e);const s=e.index;return n._insertChild(s,o),zr(n,s+o.length),zr(n,s),new us(e,e.getShiftedBy(i))}function Nr(e){if(!e.isFlat)throw new fe("operation-utils-remove-range-not-flat",this);const t=e.start.parent;jr(e.start),jr(e.end);const o=t._removeChildren(e.start.index,e.end.index-e.start.index);return zr(t,e.start.index),o}function Br(e,t){if(!e.isFlat)throw new fe("operation-utils-move-range-not-flat",this);const o=Nr(e);return Mr(t=t._getTransformedByDeletion(e.start,e.end.offset-e.start.offset),o)}function Lr(e){const t=[];!function e(o){if("string"==typeof o)t.push(new Is(o));else if(o instanceof os)t.push(new Is(o.data,o.getAttributes()));else if(o instanceof ys)t.push(o);else if(Ue(o))for(const t of o)e(t)}(e);for(let e=1;ee.maxOffset)throw new fe("move-operation-nodes-do-not-exist",this);if(e===t&&o=o&&this.targetPosition.path[e]e._clone(!0)))),t=new Hr(this.position,e,this.baseVersion);return t.shouldReceiveAttributes=this.shouldReceiveAttributes,t}getReversed(){const e=this.position.root.document.graveyard,t=new ss(e,[0]);return new $r(this.position,this.nodes.maxOffset,t,this.baseVersion+1)}_validate(){const e=this.position.parent;if(!e||e.maxOffsete._clone(!0)))),Mr(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(Ms.fromJSON(t)):o.push(Is.fromJSON(t));const i=new Hr(ss.fromJSON(e.position,t),o,e.baseVersion);return i.shouldReceiveAttributes=e.shouldReceiveAttributes,i}}class Wr extends Fr{splitPosition;howMany;insertionPosition;graveyardPosition;constructor(e,t,o,i,n){super(n),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 ss(this.insertionPosition.root,e)}get movedRange(){const e=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new us(this.splitPosition,e)}get affectedSelectable(){const e=[us._createFromPositionAndShift(this.splitPosition,0),us._createFromPositionAndShift(this.insertionPosition,0)];return this.graveyardPosition&&e.push(us._createFromPositionAndShift(this.graveyardPosition,0)),e}clone(){return new Wr(this.splitPosition,this.howMany,this.insertionPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.splitPosition.root.document.graveyard,t=new ss(e,[0]);return new Ur(this.moveTargetPosition,this.howMany,this.splitPosition,t,this.baseVersion+1)}_validate(){const e=this.splitPosition.parent,t=this.splitPosition.offset;if(!e||e.maxOffset1&&e.sourcePosition.isEqual(t.deletionPosition)?this._setRelation(e,t,"firstToMoveMerged"):e.howMany>1&&e.sourcePosition.getShiftedBy(e.howMany-1).isEqual(t.deletionPosition)&&this._setRelation(e,t,"lastToMoveMerged"):t instanceof $r&&(e.targetPosition.isEqual(t.sourcePosition)||e.targetPosition.isBefore(t.sourcePosition)?this._setRelation(e,t,"insertBefore"):this._setRelation(e,t,"insertAfter"));else if(e instanceof Wr){if(t instanceof Ur)e.splitPosition.isBefore(t.sourcePosition)&&this._setRelation(e,t,"splitBefore");else if(t instanceof $r)if(e.splitPosition.isEqual(t.sourcePosition)||e.splitPosition.isBefore(t.sourcePosition))this._setRelation(e,t,"splitBefore");else{const o=us._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&o.containsPosition(e.splitPosition)){const i=o.end.offset-e.splitPosition.offset,n=e.splitPosition.offset-o.start.offset;this._setRelation(e,t,{howMany:i,offset:n})}}}else if(e instanceof Ur)t instanceof Ur?(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")):t instanceof Wr?e.sourcePosition.isEqual(t.splitPosition)&&this._setRelation(e,t,"splitAtSource"):t instanceof $r&&t.howMany>0&&(e.sourcePosition.isEqual(t.sourcePosition.getShiftedBy(t.howMany))&&this._setRelation(e,t,"mergeSourceAffected"),e.targetPosition.isEqual(t.sourcePosition)&&this._setRelation(e,t,"mergeTargetWasBefore"));else if(e instanceof Kr){const o=e.newRange;if(!o)return;if(t instanceof Ur){const i=o.start.isEqual(t.targetPosition),n=o.start.isEqual(t.deletionPosition),s=o.end.isEqual(t.deletionPosition),r=o.end.isEqual(t.sourcePosition);(i||n||s||r)&&this._setRelation(e,t,{wasInLeftElement:i,wasStartBeforeMergedElement:n,wasEndBeforeMergedElement:s,wasInRightElement:r})}}}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 n=this.originalOperations.get(e),s=this._relations.get(n);return s&&s.get(i)||null}_setRelation(e,t,o){const i=this.originalOperations.get(e),n=this.originalOperations.get(t);let s=this._relations.get(i);s||(s=new Map,this._relations.set(i,s)),s.set(n,o)}}function aa(e,t){for(const o of e)o.baseVersion=t++}function la(e,t){for(let o=0;o{if(e.key===t.key&&e.range.start.hasSameParentAs(t.range.start)){const i=e.range.getDifference(t.range).map((t=>new Gr(t,e.key,e.oldValue,e.newValue,0))),n=e.range.getIntersection(t.range);return n&&o.aIsStrong&&i.push(new Gr(n,t.key,t.newValue,e.newValue,0)),0==i.length?[new Jr(0)]:i}return[e]})),oa(Gr,Hr,((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 Gr(t,e.key,e.oldValue,e.newValue,e.baseVersion)));if(t.shouldReceiveAttributes){const i=da(t,e.key,e.oldValue);i&&o.unshift(i)}return o}return e.range=e.range._getTransformedByInsertion(t.position,t.howMany,!1)[0],[e]})),oa(Gr,Ur,((e,t)=>{const o=[];e.range.start.hasSameParentAs(t.deletionPosition)&&(e.range.containsPosition(t.deletionPosition)||e.range.start.isEqual(t.deletionPosition))&&o.push(us._createFromPositionAndShift(t.graveyardPosition,1));const i=e.range._getTransformedByMergeOperation(t);return i.isCollapsed||o.push(i),o.map((t=>new Gr(t,e.key,e.oldValue,e.newValue,e.baseVersion)))})),oa(Gr,$r,((e,t)=>{const o=function(e,t){const o=us._createFromPositionAndShift(t.sourcePosition,t.howMany);let i=null,n=[];o.containsRange(e,!0)?i=e:e.start.hasSameParentAs(o.start)?(n=e.getDifference(o),i=e.getIntersection(o)):n=[e];const s=[];for(let e of n){e=e._getTransformedByDeletion(t.sourcePosition,t.howMany);const o=t.getMovedRangeStart(),i=e.start.hasSameParentAs(o),n=e._getTransformedByInsertion(o,t.howMany,i);s.push(...n)}i&&s.push(i._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany,!1)[0]);return s}(e.range,t);return o.map((t=>new Gr(t,e.key,e.oldValue,e.newValue,e.baseVersion)))})),oa(Gr,Wr,((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 us(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]})),oa(Hr,Gr,((e,t)=>{const o=[e];if(e.shouldReceiveAttributes&&e.position.hasSameParentAs(t.range.start)&&t.range.containsPosition(e.position)){const i=da(e,t.key,t.newValue);i&&o.push(i)}return o})),oa(Hr,Hr,((e,t,o)=>(e.position.isEqual(t.position)&&o.aIsStrong||(e.position=e.position._getTransformedByInsertOperation(t)),[e]))),oa(Hr,$r,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),oa(Hr,Wr,((e,t)=>(e.position=e.position._getTransformedBySplitOperation(t),[e]))),oa(Hr,Ur,((e,t)=>(e.position=e.position._getTransformedByMergeOperation(t),[e]))),oa(Kr,Hr,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByInsertOperation(t)[0]),e.newRange&&(e.newRange=e.newRange._getTransformedByInsertOperation(t)[0]),[e]))),oa(Kr,Kr,((e,t,o)=>{if(e.name==t.name){if(!o.aIsStrong)return[new Jr(0)];e.oldRange=t.newRange?t.newRange.clone():null}return[e]})),oa(Kr,Ur,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByMergeOperation(t)),e.newRange&&(e.newRange=e.newRange._getTransformedByMergeOperation(t)),[e]))),oa(Kr,$r,((e,t)=>{const o=[e];if(e.oldRange&&(e.oldRange=us._createFromRanges(e.oldRange._getTransformedByMoveOperation(t))),e.newRange){const i=e.newRange._getTransformedByMoveOperation(t);e.newRange=i[0];for(let t=1;t{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=ss._createAt(t.insertionPosition):o.abRelation.wasInLeftElement?e.newRange.start=ss._createAt(e.newRange.start):e.newRange.start=ss._createAt(t.moveTargetPosition):e.newRange.start=i.start,e.newRange.end.isEqual(t.splitPosition)?e.newRange.end.isEqual(t.splitPosition)&&o.abRelation.wasEndBeforeMergedElement?e.newRange.end=ss._createAt(t.insertionPosition):o.abRelation.wasInRightElement?e.newRange.end=ss._createAt(t.moveTargetPosition):e.newRange.end=ss._createAt(e.newRange.end):e.newRange.end=i.end,[e]}e.newRange=e.newRange._getTransformedBySplitOperation(t)}return[e]})),oa(Ur,Hr,((e,t)=>(e.sourcePosition.hasSameParentAs(t.position)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByInsertOperation(t),e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t),[e]))),oa(Ur,Ur,((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 ss(t.graveyardPosition.root,o),e.howMany=0,[e]}return[new Jr(0)]}if(e.sourcePosition.isEqual(t.sourcePosition)&&!e.targetPosition.isEqual(t.targetPosition)&&!o.bWasUndone&&"splitAtSource"!=o.abRelation){const i="$graveyard"==e.targetPosition.root.rootName,n="$graveyard"==t.targetPosition.root.rootName;if(n&&!i||!(i&&!n)&&o.aIsStrong){const o=t.targetPosition._getTransformedByMergeOperation(t),i=e.targetPosition._getTransformedByMergeOperation(t);return[new $r(o,e.howMany,i,0)]}return[new Jr(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]})),oa(Ur,$r,((e,t,o)=>{const i=us._createFromPositionAndShift(t.sourcePosition,t.howMany);return"remove"==t.type&&!o.bWasUndone&&e.deletionPosition.hasSameParentAs(t.sourcePosition)&&i.containsPosition(e.sourcePosition)?[new Jr(0)]:(t.sourcePosition.getShiftedBy(t.howMany).isEqual(e.sourcePosition)?e.sourcePosition.stickiness="toNone":t.targetPosition.isEqual(e.sourcePosition)&&"mergeSourceAffected"==o.abRelation?e.sourcePosition.stickiness="toNext":t.sourcePosition.isEqual(e.targetPosition)?(e.targetPosition.stickiness="toNone",e.howMany-=t.howMany):t.targetPosition.isEqual(e.targetPosition)&&"mergeTargetWasBefore"==o.abRelation?(e.targetPosition.stickiness="toPrevious",e.howMany+=t.howMany):(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.sourcePosition.stickiness="toPrevious",e.targetPosition.stickiness="toNext",e.graveyardPosition.isEqual(t.targetPosition)||(e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)),[e])})),oa(Ur,Wr,((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)){if(t.graveyardPosition&&e.deletionPosition.isEqual(t.graveyardPosition)||"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]})),oa($r,Hr,((e,t)=>{const o=us._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]})),oa($r,$r,((e,t,o)=>{const i=us._createFromPositionAndShift(e.sourcePosition,e.howMany),n=us._createFromPositionAndShift(t.sourcePosition,t.howMany);let s,r=o.aIsStrong,a=!o.aIsStrong;if("insertBefore"==o.abRelation||"insertAfter"==o.baRelation?a=!0:"insertAfter"!=o.abRelation&&"insertBefore"!=o.baRelation||(a=!1),s=e.targetPosition.isEqual(t.targetPosition)&&a?e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany):e.targetPosition._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),ua(e,t)&&ua(t,e))return[t.getReversed()];if(i.containsPosition(t.targetPosition)&&i.containsRange(n,!0))return i.start=i.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),i.end=i.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),ha([i],s);if(n.containsPosition(e.targetPosition)&&n.containsRange(i,!0))return i.start=i.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),i.end=i.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),ha([i],s);const l=We(e.sourcePosition.getParentPath(),t.sourcePosition.getParentPath());if("prefix"==l||"extension"==l)return i.start=i.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),i.end=i.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),ha([i],s);"remove"!=e.type||"remove"==t.type||o.aWasUndone||o.forceWeakRemove?"remove"==e.type||"remove"!=t.type||o.bWasUndone||o.forceWeakRemove||(r=!1):r=!0;const c=[],d=i.getDifference(n);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"==We(e.start.getParentPath(),t.getMovedRangeStart().getParentPath()),i=e._getTransformedByInsertion(t.getMovedRangeStart(),t.howMany,o);c.push(...i)}const u=i.getIntersection(n);return null!==u&&r&&(u.start=u.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),u.end=u.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),0===c.length?c.push(u):1==c.length?n.start.isBefore(i.start)||n.start.isEqual(i.start)?c.unshift(u):c.push(u):c.splice(1,0,u)),0===c.length?[new Jr(e.baseVersion)]:ha(c,s)})),oa($r,Wr,((e,t,o)=>{let i=e.targetPosition.clone();if(e.targetPosition.isEqual(t.insertionPosition)&&t.graveyardPosition&&"moveTargetAfter"!=o.abRelation||(i=e.targetPosition._getTransformedBySplitOperation(t)),e.sourcePosition.isEqual(t.insertionPosition)&&"firstToMoveMerged"==o.abRelation)return e.howMany++,e.targetPosition=i,[e];const n=us._createFromPositionAndShift(e.sourcePosition,e.howMany);if(n.end.isEqual(t.insertionPosition))return t.graveyardPosition&&"lastToMoveMerged"!=o.abRelation||e.howMany++,e.targetPosition=i,[e];if(n.start.hasSameParentAs(t.splitPosition)&&n.containsPosition(t.splitPosition)){let e=new us(t.splitPosition,n.end);e=e._getTransformedBySplitOperation(t);return ha([new us(n.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 s=[n._getTransformedBySplitOperation(t)];if(t.graveyardPosition){const i=n.start.isEqual(t.graveyardPosition)||n.containsPosition(t.graveyardPosition);e.howMany>1&&i&&!o.aWasUndone&&s.push(us._createFromPositionAndShift(t.insertionPosition,1))}return ha(s,i)})),oa($r,Ur,((e,t,o)=>{const i=us._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 Jr(0)]}else if(!o.aWasUndone){const o=[];let i=t.graveyardPosition.clone(),n=t.targetPosition._getTransformedByMergeOperation(t);const s=e.targetPosition.getTransformedByOperation(t);e.howMany>1&&(o.push(new $r(e.sourcePosition,e.howMany-1,s,0)),i=i._getTransformedByMove(e.sourcePosition,s,e.howMany-1),n=n._getTransformedByMove(e.sourcePosition,s,e.howMany-1));const r=t.deletionPosition._getCombined(e.sourcePosition,s),a=new $r(i,1,r,0),l=a.getMovedRangeStart().path.slice();l.push(0);const c=new ss(a.targetPosition.root,l);n=n._getTransformedByMove(i,r,1);const d=new $r(n,t.howMany,c,0);return o.push(a),o.push(d),o}const n=us._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByMergeOperation(t);return e.sourcePosition=n.start,e.howMany=n.end.offset-n.start.offset,e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]})),oa(Zr,Hr,((e,t)=>(e.position=e.position._getTransformedByInsertOperation(t),[e]))),oa(Zr,Ur,((e,t)=>e.position.isEqual(t.deletionPosition)?(e.position=t.graveyardPosition.clone(),e.position.stickiness="toNext",[e]):(e.position=e.position._getTransformedByMergeOperation(t),[e]))),oa(Zr,$r,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),oa(Zr,Zr,((e,t,o)=>{if(e.position.isEqual(t.position)){if(!o.aIsStrong)return[new Jr(0)];e.oldName=t.newName}return[e]})),oa(Zr,Wr,((e,t)=>{if("same"==We(e.position.path,t.splitPosition.getParentPath())&&!t.graveyardPosition){const t=new Zr(e.position.getShiftedBy(1),e.oldName,e.newName,0);return[e,t]}return e.position=e.position._getTransformedBySplitOperation(t),[e]})),oa(Qr,Qr,((e,t,o)=>{if(e.root===t.root&&e.key===t.key){if(!o.aIsStrong)return[new Jr(0)];e.oldValue=t.newValue}return[e]})),oa(Yr,Yr,((e,t)=>e.rootName===t.rootName&&e.isAdd===t.isAdd?[new Jr(0)]:[e])),oa(Wr,Hr,((e,t)=>(e.splitPosition.hasSameParentAs(t.position)&&e.splitPosition.offset{if(!e.graveyardPosition&&!o.bWasUndone&&e.splitPosition.hasSameParentAs(t.sourcePosition)){const o=t.graveyardPosition.path.slice();o.push(0);const i=new ss(t.graveyardPosition.root,o),n=Wr.getInsertionPosition(new ss(t.graveyardPosition.root,o)),s=new Wr(i,0,n,null,0);return e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=Wr.getInsertionPosition(e.splitPosition),e.graveyardPosition=s.insertionPosition.clone(),e.graveyardPosition.stickiness="toNext",[s,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=Wr.getInsertionPosition(e.splitPosition),e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]})),oa(Wr,$r,((e,t,o)=>{const i=us._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.graveyardPosition){const n=i.start.isEqual(e.graveyardPosition)||i.containsPosition(e.graveyardPosition);if(!o.bWasUndone&&n){const o=e.splitPosition._getTransformedByMoveOperation(t),i=e.graveyardPosition._getTransformedByMoveOperation(t),n=i.path.slice();n.push(0);const s=new ss(i.root,n);return[new $r(o,e.howMany,s,0)]}e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)}const n=e.splitPosition.isEqual(t.targetPosition);if(n&&("insertAtSource"==o.baRelation||"splitBefore"==o.abRelation))return e.howMany+=t.howMany,e.splitPosition=e.splitPosition._getTransformedByDeletion(t.sourcePosition,t.howMany),e.insertionPosition=Wr.getInsertionPosition(e.splitPosition),[e];if(n&&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{if(e.splitPosition.isEqual(t.splitPosition)){if(!e.graveyardPosition&&!t.graveyardPosition)return[new Jr(0)];if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition))return[new Jr(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,n="$graveyard"==t.splitPosition.root.rootName;if(n&&!i||!(i&&!n)&&o.aIsStrong){const o=[];return t.howMany&&o.push(new $r(t.moveTargetPosition,t.howMany,t.splitPosition,0)),e.howMany&&o.push(new $r(e.splitPosition,e.howMany,e.moveTargetPosition,0)),o}return[new Jr(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 ss(t.insertionPosition.root,o);return[e,new $r(e.insertionPosition,1,i,0)]}return e.splitPosition.hasSameParentAs(t.splitPosition)&&e.splitPosition.offset{const o=t[0];o.isDocumentOperation&&pa.call(this,o)}),{priority:"low"})}function pa(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)}}ma.prototype.is=function(e){return"livePosition"===e||"model:livePosition"===e||"position"==e||"model:position"===e};class fa{operations;isUndoable;isLocal;isUndo;isTyping;constructor(e={}){"string"==typeof e&&(e="transparent"===e?{isUndoable:!1}:{},be("batch-constructor-deprecated-string-type"));const{isUndoable:t=!0,isLocal:o=!0,isUndo:i=!1,isTyping:n=!1}=e;this.operations=[],this.isUndoable=t,this.isLocal=o,this.isUndo=i,this.isTyping=n}get baseVersion(){for(const e of this.operations)if(null!==e.baseVersion)return e.baseVersion;return null}addOperation(e){return e.isDocumentOperation&&(e.batch=this,this.operations.push(e)),e}}class ba{static _statesPriority=[void 0,"refresh","rename","move"];_markerCollection;_changesInElement=new Map;_elementsSnapshots=new Map;_elementChildrenSnapshots=new Map;_elementState=new Map;_changedMarkers=new Map;_changedRoots=new Map;_changeCount=0;_cachedChanges=null;_cachedChangesWithGraveyard=null;_refreshedItems=new Set;constructor(e){this._markerCollection=e}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size&&0==this._changedRoots.size}bufferOperation(e){const t=e;switch(t.type){case"insert":if(this._isInInsertedElement(t.position.parent))return;this._markInsert(t.position.parent,t.position.offset,t.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":for(const e of t.range.getItems({shallow:!0}))this._isInInsertedElement(e.parent)||this._markAttribute(e);break;case"remove":case"move":case"reinsert":{if(t.sourcePosition.isEqual(t.targetPosition)||t.sourcePosition.getShiftedBy(t.howMany).isEqual(t.targetPosition))return;const e=this._isInInsertedElement(t.sourcePosition.parent),o=this._isInInsertedElement(t.targetPosition.parent);e||this._markRemove(t.sourcePosition.parent,t.sourcePosition.offset,t.howMany),o||this._markInsert(t.targetPosition.parent,t.getMovedRangeStart().offset,t.howMany);const i=us._createFromPositionAndShift(t.sourcePosition,t.howMany);for(const e of i.getItems({shallow:!0}))this._setElementState(e,"move");break}case"rename":{if(this._isInInsertedElement(t.position.parent))return;this._markRemove(t.position.parent,t.position.offset,1),this._markInsert(t.position.parent,t.position.offset,1);const e=us._createFromPositionAndShift(t.position,1);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getData();this.bufferMarkerChange(t.name,e,e)}this._setElementState(t.position.nodeAfter,"rename");break}case"split":{const e=t.splitPosition.parent;if(!this._isInInsertedElement(e)){this._markRemove(e,t.splitPosition.offset,t.howMany);const o=us._createFromPositionAndShift(t.splitPosition,t.howMany);for(const e of o.getItems({shallow:!0}))this._setElementState(e,"move")}this._isInInsertedElement(t.insertionPosition.parent)||this._markInsert(t.insertionPosition.parent,t.insertionPosition.offset,1),t.graveyardPosition&&(this._markRemove(t.graveyardPosition.parent,t.graveyardPosition.offset,1),this._setElementState(t.graveyardPosition.nodeAfter,"move"));break}case"merge":{const e=t.sourcePosition.parent;this._isInInsertedElement(e.parent)||this._markRemove(e.parent,e.startOffset,1);const o=t.graveyardPosition.parent;this._markInsert(o,t.graveyardPosition.offset,1),this._setElementState(e,"move");const i=t.targetPosition.parent;if(!this._isInInsertedElement(i)){this._markInsert(i,t.targetPosition.offset,e.maxOffset);const o=us._createFromPositionAndShift(t.sourcePosition,t.howMany);for(const e of o.getItems({shallow:!0}))this._setElementState(e,"move")}break}case"detachRoot":case"addRoot":{const e=t.affectedSelectable;if(!e._isLoaded)return;if(e.isAttached()==t.isAdd)return;this._bufferRootStateChange(t.rootName,t.isAdd);break}case"addRootAttribute":case"removeRootAttribute":case"changeRootAttribute":{if(!t.root._isLoaded)return;const e=t.root.rootName;this._bufferRootAttributeChange(e,t.key,t.oldValue,t.newValue);break}}this._cachedChanges=null}bufferMarkerChange(e,t,o){t.range&&t.range.root.is("rootElement")&&!t.range.root._isLoaded&&(t.range=null),o.range&&o.range.root.is("rootElement")&&!o.range.root._isLoaded&&(o.range=null);let i=this._changedMarkers.get(e);i?i.newMarkerData=o:(i={newMarkerData:o,oldMarkerData:t},this._changedMarkers.set(e,i)),null==i.oldMarkerData.range&&null==o.range&&this._changedMarkers.delete(e)}getMarkersToRemove(){const e=[];for(const[t,o]of this._changedMarkers)null!=o.oldMarkerData.range&&e.push({name:t,range:o.oldMarkerData.range});return e}getMarkersToAdd(){const e=[];for(const[t,o]of this._changedMarkers)null!=o.newMarkerData.range&&e.push({name:t,range:o.newMarkerData.range});return e}getChangedMarkers(){return Array.from(this._changedMarkers).map((([e,t])=>({name:e,data:{oldRange:t.oldMarkerData.range,newRange:t.newMarkerData.range}})))}hasDataChanges(){if(this.getChanges().length)return!0;if(this._changedRoots.size>0)return!0;for(const{newMarkerData:e,oldMarkerData:t}of this._changedMarkers.values()){if(e.affectsData!==t.affectsData)return!0;if(e.affectsData){const o=e.range&&!t.range,i=!e.range&&t.range,n=e.range&&t.range&&!e.range.isEqual(t.range);if(o||i||n)return!0}}return!1}getChanges(e={}){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.offsete.position.root!=t.position.root?e.position.root.rootNamee));for(const e of t)delete e.changeCount,"attribute"==e.type&&(delete e.position,delete e.length);return this._changeCount=0,this._cachedChangesWithGraveyard=t,this._cachedChanges=t.filter(ka),e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice()}getChangedRoots(){return Array.from(this._changedRoots.values()).map((e=>{const t={...e};return void 0!==t.state&&delete t.attributes,t}))}getRefreshedItems(){return new Set(this._refreshedItems)}reset(){this._changesInElement.clear(),this._elementChildrenSnapshots.clear(),this._elementsSnapshots.clear(),this._elementState.clear(),this._changedMarkers.clear(),this._changedRoots.clear(),this._refreshedItems.clear(),this._cachedChanges=null}_refreshItem(e){if(this._isInInsertedElement(e.parent))return;this._markRemove(e.parent,e.startOffset,e.offsetSize),this._markInsert(e.parent,e.startOffset,e.offsetSize),this._refreshedItems.add(e),this._setElementState(e,"refresh");const t=us._createOn(e);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getData();this.bufferMarkerChange(e.name,t,t)}this._cachedChanges=null}_bufferRootLoad(e){if(e.isAttached()){this._bufferRootStateChange(e.rootName,!0),this._markInsert(e,0,e.maxOffset);for(const t of e.getAttributeKeys())this._bufferRootAttributeChange(e.rootName,t,null,e.getAttribute(t));for(const t of this._markerCollection)if(t.getRange().root==e){const e=t.getData();this.bufferMarkerChange(t.name,{...e,range:null},e)}}}_bufferRootStateChange(e,t){if(!this._changedRoots.has(e))return void this._changedRoots.set(e,{name:e,state:t?"attached":"detached"});const o=this._changedRoots.get(e);void 0!==o.state?(delete o.state,void 0===o.attributes&&this._changedRoots.delete(e)):o.state=t?"attached":"detached"}_bufferRootAttributeChange(e,t,o,i){const n=this._changedRoots.get(e)||{name:e},s=n.attributes||{};if(s[t]){const e=s[t];i===e.oldValue?delete s[t]:e.newValue=i}else s[t]={oldValue:o,newValue:i};0===Object.entries(s).length?(delete n.attributes,void 0===n.state&&this._changedRoots.delete(e)):(n.attributes=s,this._changedRoots.set(e,n))}_markInsert(e,t,o){if(e.root.is("rootElement")&&!e.root._isLoaded)return;const i={type:"insert",offset:t,howMany:o,count:this._changeCount++};this._markChange(e,i)}_markRemove(e,t,o){if(e.root.is("rootElement")&&!e.root._isLoaded)return;const i={type:"remove",offset:t,howMany:o,count:this._changeCount++};this._markChange(e,i),this._removeAllNestedChanges(e,t,o)}_markAttribute(e){if(e.root.is("rootElement")&&!e.root._isLoaded)return;const t={type:"attribute",offset:e.startOffset,howMany:e.offsetSize,count:this._changeCount++};this._markChange(e.parent,t)}_markChange(e,t){this._makeSnapshots(e);const o=this._getChangesForElement(e);this._handleChange(t,o),o.push(t);for(let e=0;eo&&this._elementState.set(e,t)}_getDiffActionForNode(e,t){if(!e.is("element"))return t;if(!this._elementsSnapshots.has(e))return t;const o=this._elementState.get(e);return o&&"move"!=o?o:t}_getChangesForElement(e){let t;return this._changesInElement.has(e)?t=this._changesInElement.get(e):(t=[],this._changesInElement.set(e,t)),t}_makeSnapshots(e){if(this._elementChildrenSnapshots.has(e))return;const t=ya(e.getChildren());this._elementChildrenSnapshots.set(e,t);for(const e of t)this._elementsSnapshots.set(e.node,e)}_handleChange(e,t){e.nodesToHandle=e.howMany;for(const o of t){const i=e.offset+e.howMany,n=o.offset+o.howMany;if("insert"==e.type&&("insert"==o.type&&(e.offset<=o.offset?o.offset+=e.howMany:e.offseto.offset){if(i>n){const e={type:"attribute",offset:n,howMany:i-n,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.offsetn?(e.nodesToHandle=i-n,e.offset=n):e.nodesToHandle=0);if("remove"==o.type&&e.offseto.offset){const n={type:"attribute",offset:o.offset,howMany:i-o.offset,count:this._changeCount++};this._handleChange(n,t),t.push(n),e.nodesToHandle=o.offset-e.offset,e.howMany=e.nodesToHandle}"attribute"==o.type&&(e.offset>=o.offset&&i<=n?(e.nodesToHandle=0,e.howMany=0,e.offset=0):e.offset<=o.offset&&i>=n&&(o.howMany=0))}}e.howMany=e.nodesToHandle,delete e.nodesToHandle}_getInsertDiff(e,t,o,i,n){const s={type:"insert",position:ss._createAt(e,t),name:i.name,attributes:new Map(i.attributes),length:1,changeCount:this._changeCount++,action:o};return"insert"!=o&&n&&(s.before={name:n.name,attributes:new Map(n.attributes)}),s}_getRemoveDiff(e,t,o,i){return{type:"remove",action:o,position:ss._createAt(e,t),name:i.name,attributes:new Map(i.attributes),length:1,changeCount:this._changeCount++}}_getAttributesDiff(e,t,o){const i=[];o=new Map(o);for(const[n,s]of t){const t=o.has(n)?o.get(n):null;t!==s&&i.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:n,attributeOldValue:s,attributeNewValue:t,changeCount:this._changeCount++}),o.delete(n)}for(const[t,n]of o)i.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:t,attributeOldValue:null,attributeNewValue:n,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&&ii){for(let t=0;t1500)for(let t=0;tthis._version+1&&this._gaps.set(this._version,e),this._version=e}get lastOperation(){return this._operations[this._operations.length-1]}addOperation(e){if(e.baseVersion!==this.version)throw new fe("model-document-history-addoperation-incorrect-version",this,{operation:e,historyVersion:this.version});this._operations.push(e),this._version++,this._baseVersionToOperationIndex.set(e.baseVersion,this._operations.length-1)}getOperations(e,t=this.version){if(!this._operations.length)return[];const o=this._operations[0];void 0===e&&(e=o.baseVersion);let i=t-1;for(const[t,o]of this._gaps)e>t&&et&&ithis.lastOperation.baseVersion)return[];let n=this._baseVersionToOperationIndex.get(e);void 0===n&&(n=0);let s=this._baseVersionToOperationIndex.get(i);return void 0===s&&(s=this._operations.length-1),this._operations.slice(n,s+1)}getOperation(e){const t=this._baseVersionToOperationIndex.get(e);if(void 0!==t)return this._operations[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)}reset(){this._version=0,this._undoPairs=new Map,this._operations=[],this._undoneOperations=new Set,this._gaps=new Map,this._baseVersionToOperationIndex=new Map}}class Ca extends Ms{rootName;_document;_isAttached=!0;_isLoaded=!0;constructor(e,t,o="main"){super(t),this._document=e,this.rootName=o}get document(){return this._document}isAttached(){return this._isAttached}toJSON(){return this.rootName}}Ca.prototype.is=function(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};const Aa="$graveyard";class xa extends(xe()){model;history;selection;roots;differ;isReadOnly;_postFixers;_hasSelectionChangedFromTheLastChangeBlock;constructor(e){super(),this.model=e,this.history=new va,this.selection=new Os(this),this.roots=new eo({idProperty:"rootName"}),this.differ=new ba(e.markers),this.isReadOnly=!1,this._postFixers=new Set,this._hasSelectionChangedFromTheLastChangeBlock=!1,this.createRoot("$root",Aa),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.history.addOperation(o)}),{priority:"low"}),this.listenTo(this.selection,"change",(()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0})),this.listenTo(e.markers,"update",((e,t,o,i,n)=>{const s={...t.getData(),range:i};this.differ.bufferMarkerChange(t.name,n,s),null===o&&t.on("change",((e,o)=>{const i=t.getData();this.differ.bufferMarkerChange(t.name,{...i,range:o},i)}))})),this.registerPostFixer((e=>{let t=!1;for(const o of this.roots)o.isAttached()||o.isEmpty||(e.remove(e.createRangeIn(o)),t=!0);for(const o of this.model.markers)o.getRange().root.isAttached()||(e.removeMarker(o),t=!0);return t}))}get version(){return this.history.version}set version(e){this.history.version=e}get graveyard(){return this.getRoot(Aa)}createRoot(e="$root",t="main"){if(this.roots.get(t))throw new fe("model-document-createroot-name-exists",this,{name:t});const o=new Ca(this,e,t);return this.roots.add(o),o}destroy(){this.selection.destroy(),this.stopListening()}getRoot(e="main"){return this.roots.get(e)}getRootNames(e=!1){return this.getRoots(e).map((e=>e.rootName))}getRoots(e=!1){return this.roots.filter((t=>t!=this.graveyard&&(e||t.isAttached())&&t._isLoaded))}registerPostFixer(e){this._postFixers.add(e)}toJSON(){const e=Go(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(){const e=this.getRoots();return e.length?e[0]: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 e.start.isValid()&&e.end.isValid()&&Ea(e.start)&&Ea(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 Ea(e){const t=e.textNode;if(t){const o=t.data,i=e.offset-t.startOffset;return!ho(o,i)&&!mo(o,i)}return!0}class Ta extends(xe()){_markers=new Map;[Symbol.iterator](){return this._markers.values()}has(e){const t=e instanceof Pa?e.name:e;return this._markers.has(t)}get(e){return this._markers.get(e)||null}_set(e,t,o=!1,i=!1){const n=e instanceof Pa?e.name:e;if(n.includes(","))throw new fe("markercollection-incorrect-marker-name",this);const s=this._markers.get(n);if(s){const e=s.getData(),r=s.getRange();let a=!1;return r.isEqual(t)||(s._attachLiveRange(Ts.fromRange(t)),a=!0),o!=s.managedUsingOperations&&(s._managedUsingOperations=o,a=!0),"boolean"==typeof i&&i!=s.affectsData&&(s._affectsData=i,a=!0),a&&this.fire(`update:${n}`,s,r,t,e),s}const r=Ts.fromRange(t),a=new Pa(n,r,o,i);return this._markers.set(n,a),this.fire(`update:${n}`,a,null,t,{...a.getData(),range:null}),a}_remove(e){const t=e instanceof Pa?e.name:e,o=this._markers.get(t);return!!o&&(this._markers.delete(t),this.fire(`update:${t}`,o,o.getRange(),null,o.getData()),this._destroyMarker(o),!0)}_refresh(e){const t=e instanceof Pa?e.name:e,o=this._markers.get(t);if(!o)throw new fe("markercollection-refresh-marker-not-exists",this);const i=o.getRange();this.fire(`update:${t}`,o,i,i,o.getData())}*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()}}class Pa extends(xe(ts)){name;_managedUsingOperations;_affectsData;_liveRange;constructor(e,t,o,i){super(),this.name=e,this._liveRange=this._attachLiveRange(t),this._managedUsingOperations=o,this._affectsData=i}get managedUsingOperations(){if(!this._liveRange)throw new fe("marker-destroyed",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new fe("marker-destroyed",this);return this._affectsData}getData(){return{range:this.getRange(),affectsData:this.affectsData,managedUsingOperations:this.managedUsingOperations}}getStart(){if(!this._liveRange)throw new fe("marker-destroyed",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new fe("marker-destroyed",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new fe("marker-destroyed",this);return this._liveRange.toRange()}toJSON(){return{name:this.name,range:this._liveRange?.toJSON(),usingOperations:this._managedUsingOperations,affectsData:this._affectsData}}_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}}Pa.prototype.is=function(e){return"marker"===e||"model:marker"===e};class Sa extends Fr{sourcePosition;howMany;constructor(e,t){super(null),this.sourcePosition=e.clone(),this.howMany=t}get type(){return"detach"}get affectedSelectable(){return null}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e}_validate(){if(this.sourcePosition.root.document)throw new fe("detach-operation-on-document-node",this)}_execute(){Nr(us._createFromPositionAndShift(this.sourcePosition,this.howMany))}static get className(){return"DetachOperation"}}class Ia extends ts{markers=new Map;_children=new Fs;constructor(e){super(),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 nextSibling(){return null}get previousSibling(){return null}get root(){return this}get parent(){return null}get document(){return null}isAttached(){return!1}getAncestors(){return[]}getChild(e){return this._children.getNode(e)}getChildAtOffset(e){return this._children.getNodeAtOffset(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.getChildAtOffset(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(Ms.fromJSON(o)):t.push(Is.fromJSON(o));return new Ia(t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const o=function(e){if("string"==typeof e)return[new Is(e)];Ue(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new Is(e):e instanceof os?new Is(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}_removeChildrenArray(e){this._children._removeNodesArray(e);for(const t of e)t.parent=null}}Ia.prototype.is=function(e){return"documentFragment"===e||"model:documentFragment"===e};class Ra{model;batch;constructor(e,t){this.model=e,this.batch=t}createText(e,t){return new Is(e,t)}createElement(e,t){return new Ms(e,t)}createDocumentFragment(){return new Ia}cloneElement(e,t=!0){return e._clone(t)}insert(e,t,o=0){if(this._assertWriterUsedCorrectly(),e instanceof Is&&""==e.data)return;const i=ss._createAt(t,o);if(e.parent){if(Ma(e.root,i.root))return void this.move(us._createOn(e),i);if(e.root.document)throw new fe("model-writer-insert-forbidden-move",this);this.remove(e)}const n=i.root.document?i.root.document.version:null,s=e instanceof Ia?e._removeChildren(0,e.childCount):e,r=new Hr(i,s,n);if(e instanceof Is&&(r.shouldReceiveAttributes=!0),this.batch.addOperation(r),this.model.applyOperation(r),e instanceof Ia)for(const[t,o]of e.markers){const e=ss._createAt(o.root,0),n={range:new us(o.start._getCombined(e,i),o.end._getCombined(e,i)),usingOperation:!0,affectsData:!0};this.model.markers.has(t)?this.updateMarker(t,n):this.addMarker(t,n)}}insertText(e,t,o,i){t instanceof Ia||t instanceof Ms||t instanceof ss?this.insert(this.createText(e),t,o):this.insert(this.createText(e,t),o,i)}insertElement(e,t,o,i){t instanceof Ia||t instanceof Ms||t instanceof ss?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 Ia||t instanceof Ms?this.insert(this.createText(e),t,"end"):this.insert(this.createText(e,t),o,"end")}appendElement(e,t,o){t instanceof Ia||t instanceof Ms?this.insert(this.createElement(e),t,"end"):this.insert(this.createElement(e,t),o,"end")}setAttribute(e,t,o){if(this._assertWriterUsedCorrectly(),o instanceof us){const i=o.getMinimalFlatRanges();for(const o of i)Oa(this,e,t,o)}else Va(this,e,t,o)}setAttributes(e,t){for(const[o,i]of ao(e))this.setAttribute(o,i,t)}removeAttribute(e,t){if(this._assertWriterUsedCorrectly(),t instanceof us){const o=t.getMinimalFlatRanges();for(const t of o)Oa(this,e,null,t)}else Va(this,e,null,t)}clearAttributes(e){this._assertWriterUsedCorrectly();const t=e=>{for(const t of e.getAttributeKeys())this.removeAttribute(t,e)};if(e instanceof us)for(const o of e.getItems())t(o);else t(e)}move(e,t,o){if(this._assertWriterUsedCorrectly(),!(e instanceof us))throw new fe("writer-move-invalid-range",this);if(!e.isFlat)throw new fe("writer-move-range-not-flat",this);const i=ss._createAt(t,o);if(i.isEqual(e.start))return;if(this._addOperationForAffectedMarkers("move",e),!Ma(e.root,i.root))throw new fe("writer-move-different-document",this);const n=e.root.document?e.root.document.version:null,s=new $r(e.start,e.end.offset-e.start.offset,i,n);this.batch.addOperation(s),this.model.applyOperation(s)}remove(e){this._assertWriterUsedCorrectly();const t=(e instanceof us?e:us._createOn(e)).getMinimalFlatRanges().reverse();for(const e of t)this._addOperationForAffectedMarkers("move",e),Fa(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 Ms))throw new fe("writer-merge-no-element-before",this);if(!(o instanceof Ms))throw new fe("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){return this.model.createSelection(...e)}_mergeDetached(e){const t=e.nodeBefore,o=e.nodeAfter;this.move(us._createIn(o),ss._createAt(t,"end")),this.remove(o)}_merge(e){const t=ss._createAt(e.nodeBefore,"end"),o=ss._createAt(e.nodeAfter,0),i=e.root.document.graveyard,n=new ss(i,[0]),s=e.root.document.version,r=new Ur(o,e.nodeAfter.maxOffset,t,n,s);this.batch.addOperation(r),this.model.applyOperation(r)}rename(e,t){if(this._assertWriterUsedCorrectly(),!(e instanceof Ms))throw new fe("writer-rename-not-element-instance",this);const o=e.root.document?e.root.document.version:null,i=new Zr(ss._createBefore(e),e.name,t,o);this.batch.addOperation(i),this.model.applyOperation(i)}split(e,t){this._assertWriterUsedCorrectly();let o,i,n=e.parent;if(!n.parent)throw new fe("writer-split-element-no-parent",this);if(t||(t=n.parent),!e.parent.getAncestors({includeSelf:!0}).includes(t))throw new fe("writer-split-invalid-limit-element",this);do{const t=n.root.document?n.root.document.version:null,s=n.maxOffset-e.offset,r=Wr.getInsertionPosition(e),a=new Wr(e,s,r,null,t);this.batch.addOperation(a),this.model.applyOperation(a),o||i||(o=n,i=e.parent.nextSibling),n=(e=this.createPositionAfter(e.parent)).parent}while(n!==t);return{position:e,range:new us(ss._createAt(o,"end"),ss._createAt(i,0))}}wrap(e,t){if(this._assertWriterUsedCorrectly(),!e.isFlat)throw new fe("writer-wrap-range-not-flat",this);const o=t instanceof Ms?t:new Ms(t);if(o.childCount>0)throw new fe("writer-wrap-element-not-empty",this);if(null!==o.parent)throw new fe("writer-wrap-element-attached",this);this.insert(o,e.start);const i=new us(e.start.getShiftedBy(1),e.end.getShiftedBy(1));this.move(i,ss._createAt(o,0))}unwrap(e){if(this._assertWriterUsedCorrectly(),null===e.parent)throw new fe("writer-unwrap-element-no-parent",this);this.move(us._createIn(e),this.createPositionAfter(e)),this.remove(e)}addMarker(e,t){if(this._assertWriterUsedCorrectly(),!t||"boolean"!=typeof t.usingOperation)throw new fe("writer-addmarker-no-usingoperation",this);const o=t.usingOperation,i=t.range,n=void 0!==t.affectsData&&t.affectsData;if(this.model.markers.has(e))throw new fe("writer-addmarker-marker-exists",this);if(!i)throw new fe("writer-addmarker-no-range",this);return o?(Da(this,e,null,i,n),this.model.markers.get(e)):this.model.markers._set(e,i,o,n)}updateMarker(e,t){this._assertWriterUsedCorrectly();const o="string"==typeof e?e:e.name,i=this.model.markers.get(o);if(!i)throw new fe("writer-updatemarker-marker-not-exists",this);if(!t)return be("writer-updatemarker-reconvert-using-editingcontroller",{markerName:o}),void this.model.markers._refresh(i);const n="boolean"==typeof t.usingOperation,s="boolean"==typeof t.affectsData,r=s?t.affectsData:i.affectsData;if(!n&&!t.range&&!s)throw new fe("writer-updatemarker-wrong-options",this);const a=i.getRange(),l=t.range?t.range:a;n&&t.usingOperation!==i.managedUsingOperations?t.usingOperation?Da(this,o,null,l,r):(Da(this,o,a,null,r),this.model.markers._set(o,l,void 0,r)):i.managedUsingOperations?Da(this,o,a,l,r):this.model.markers._set(o,l,void 0,r)}removeMarker(e){this._assertWriterUsedCorrectly();const t="string"==typeof e?e:e.name;if(!this.model.markers.has(t))throw new fe("writer-removemarker-no-marker",this);const o=this.model.markers.get(t);if(!o.managedUsingOperations)return void this.model.markers._remove(t);Da(this,t,o.getRange(),null,o.affectsData)}addRoot(e,t="$root"){this._assertWriterUsedCorrectly();const o=this.model.document.getRoot(e);if(o&&o.isAttached())throw new fe("writer-addroot-root-exists",this);const i=this.model.document,n=new Yr(e,t,!0,i,i.version);return this.batch.addOperation(n),this.model.applyOperation(n),this.model.document.getRoot(e)}detachRoot(e){this._assertWriterUsedCorrectly();const t="string"==typeof e?this.model.document.getRoot(e):e;if(!t||!t.isAttached())throw new fe("writer-detachroot-no-root",this);for(const e of this.model.markers)e.getRange().root===t&&this.removeMarker(e);for(const e of t.getAttributeKeys())this.removeAttribute(e,t);this.remove(this.createRangeIn(t));const o=this.model.document,i=new Yr(t.rootName,t.name,!1,o,o.version);this.batch.addOperation(i),this.model.applyOperation(i)}setSelection(...e){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(...e)}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 ao(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=Os._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=Os._getStoreAttributeKey(e);this.removeAttribute(o,t.anchor.parent)}t._removeAttribute(e)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new fe("writer-incorrect-use",this)}_addOperationForAffectedMarkers(e,t){for(const o of this.model.markers){if(!o.managedUsingOperations)continue;const i=o.getRange();let n=!1;if("move"===e){const e=t;n=e.containsPosition(i.start)||e.start.isEqual(i.start)||e.containsPosition(i.end)||e.end.isEqual(i.end)}else{const e=t,o=e.nodeBefore,s=e.nodeAfter,r=i.start.parent==o&&i.start.isAtEnd,a=i.end.parent==s&&0==i.end.offset,l=i.end.nodeAfter==s,c=i.start.nodeAfter==s;n=r||a||l||c}n&&this.updateMarker(o.name,{range:i})}}}function Oa(e,t,o,i){const n=e.model,s=n.document;let r,a,l,c=i.start;for(const e of i.getWalker({shallow:!0}))l=e.item.getAttribute(t),r&&a!=l&&(a!=o&&d(),c=r),r=e.nextPosition,a=l;function d(){const i=new us(c,r),l=i.root.document?s.version:null,d=new Gr(i,t,a,o,l);e.batch.addOperation(d),n.applyOperation(d)}r instanceof ss&&r!=c&&a!=o&&d()}function Va(e,t,o,i){const n=e.model,s=n.document,r=i.getAttribute(t);let a,l;if(r!=o){if(i.root===i){const e=i.document?s.version:null;l=new Qr(i,t,r,o,e)}else{a=new us(ss._createBefore(i),e.createPositionAfter(i));const n=a.root.document?s.version:null;l=new Gr(a,t,r,o,n)}e.batch.addOperation(l),n.applyOperation(l)}}function Da(e,t,o,i,n){const s=e.model,r=s.document,a=new Kr(t,o,i,s.markers,!!n,r.version);e.batch.addOperation(a),s.applyOperation(a)}function Fa(e,t,o,i){let n;if(e.root.document){const o=i.document,s=new ss(o.graveyard,[0]);n=new $r(e,t,s,o.version)}else n=new Sa(e,t);o.addOperation(n),i.applyOperation(n)}function Ma(e,t){return e===t||e instanceof Ca&&t instanceof Ca}function Na(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.selection,i=t.schema,n=[];let s=!1;for(const e of o.getRanges()){const t=Ba(e,i);t&&!t.isEqual(e)?(n.push(t),s=!0):n.push(e)}s&&e.setSelection(function(e){const t=[...e],o=new Set;let i=1;for(;i!o.has(t)))}(n),{backward:o.isBackward});return!1}(t,e)))}function Ba(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?us._createOn(e):null}if(!i.isCollapsed)return i;const n=i.start;if(o.isEqual(n))return null;return new us(n)}(e,t):function(e,t){const{start:o,end:i}=e,n=t.checkChild(o,"$text"),s=t.checkChild(i,"$text"),r=t.getLimitElement(o),a=t.getLimitElement(i);if(r===a){if(n&&s)return null;if(function(e,t,o){const i=e.nodeAfter&&!o.isLimit(e.nodeAfter)||o.checkChild(e,"$text"),n=t.nodeBefore&&!o.isLimit(t.nodeBefore)||o.checkChild(t,"$text");return i||n}(o,i,t)){const e=o.nodeAfter&&t.isSelectable(o.nodeAfter)?null:t.getNearestSelectionRange(o,"forward"),n=i.nodeBefore&&t.isSelectable(i.nodeBefore)?null:t.getNearestSelectionRange(i,"backward"),s=e?e.start:o,r=n?n.end:i;return new us(s,r)}}const l=r&&!r.is("rootElement"),c=a&&!a.is("rootElement");if(l||c){const e=o.nodeAfter&&i.nodeBefore&&o.nodeAfter.parent===i.nodeBefore.parent,n=l&&(!e||!za(o.nodeAfter,t)),s=c&&(!e||!za(i.nodeBefore,t));let d=o,u=i;return n&&(d=ss._createBefore(La(r,t))),s&&(u=ss._createAfter(La(a,t))),new us(d,u)}return null}(e,t)}function La(e,t){let o=e,i=o;for(;t.isLimit(i)&&i.parent;)o=i,i=i.parent;return o}function za(e,t){return e&&t.isSelectable(e)}function ja(e,t,o={}){if(t.isCollapsed)return;const i=t.getFirstRange();if("$graveyard"==i.root.rootName)return;const n=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")}(n,t))return void function(e,t){const o=e.model.schema.getLimitElement(t);e.remove(e.createRangeIn(o)),Wa(e,e.createPositionAt(o,0),t)}(e,t);const s={};if(!o.doNotAutoparagraph){const e=t.getSelectedElement();e&&Object.assign(s,n.getAttributesWithProperty(e,"copyOnReplace",!0))}let r,a;o.doNotFixSelection?(r=ma.fromPosition(i.start,"toPrevious"),a=ma.fromPosition(i.end,"toNext")):[r,a]=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 n=o.getLastPosition(),s=t.createRange(n,i);t.hasContent(s,{ignoreMarkers:!0})||(i=n)}}return[ma.fromPosition(o,"toPrevious"),ma.fromPosition(i,"toNext")]}(i),r.isTouching(a)||e.remove(e.createRange(r,a)),o.leaveUnmerged||(!function(e,t,o){const i=e.model;if(!Ha(e.model.schema,t,o))return;const[n,s]=function(e,t){const o=e.getAncestors(),i=t.getAncestors();let n=0;for(;o[n]&&o[n]==i[n];)n++;return[o[n],i[n]]}(t,o);if(!n||!s)return;!i.hasContent(n,{ignoreMarkers:!0})&&i.hasContent(s,{ignoreMarkers:!0})?$a(e,t,o,n.parent):qa(e,t,o,n.parent)}(e,r,a),n.removeDisallowedAttributes(r.parent.getChildren(),e)),Ua(e,t,r),!o.doNotAutoparagraph&&function(e,t){const o=e.checkChild(t,"$text"),i=e.checkChild(t,"paragraph");return!o&&i}(n,r)&&Wa(e,r,t,s),r.detach(),a.detach()}))}function qa(e,t,o,i){const n=t.parent,s=o.parent;if(n!=i&&s!=i){for(t=e.createPositionAfter(n),(o=e.createPositionBefore(s)).isEqual(t)||e.insert(s,t),e.merge(t);o.parent.isEmpty;){const t=o.parent;o=e.createPositionBefore(t),e.remove(t)}Ha(e.model.schema,t,o)&&qa(e,t,o,i)}}function $a(e,t,o,i){const n=t.parent,s=o.parent;if(n!=i&&s!=i){for(t=e.createPositionAfter(n),(o=e.createPositionBefore(s)).isEqual(t)||e.insert(n,o);t.parent.isEmpty;){const o=t.parent;t=e.createPositionBefore(o),e.remove(o)}o=e.createPositionBefore(s),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)}(e,o),Ha(e.model.schema,t,o)&&$a(e,t,o,i)}}function Ha(e,t,o){const i=t.parent,n=o.parent;return i!=n&&(!e.isLimit(i)&&!e.isLimit(n)&&function(e,t,o){const i=new us(e,t);for(const e of i.getWalker())if(o.isLimit(e.item))return!1;return!0}(t,o,e))}function Wa(e,t,o,i={}){const n=e.createElement("paragraph");e.model.schema.setAllowedAttributes(n,i,e),e.insert(n,t),Ua(e,o,e.createPositionAt(n,0))}function Ua(e,t,o){t instanceof Os?e.setSelection(o):t.setTo(o)}function Ka(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)}}))}class Ga{model;writer;position;canMergeWith;schema;_documentFragment;_documentFragmentPosition;_firstNode=null;_lastNode=null;_lastAutoParagraph=null;_filterAttributesAndChildrenOf=[];_affectedStart=null;_affectedEnd=null;_nodeToSelect=null;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)}handleNodes(e){for(const t of Array.from(e))t.offsetSize>0&&this._handleNode(t);this._insertPartialFragment(),this._lastAutoParagraph&&this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph),this._mergeOnRight(),this.schema.removeDisallowedAttributes(this._filterAttributesAndChildrenOf,this.writer),!1!==this.model._config?.get("experimentalFlags.modelInsertContentDeepSchemaVerification")&&this._removeDisallowedChildren(this._filterAttributesAndChildrenOf),this._filterAttributesAndChildrenOf=[]}_removeDisallowedChildren(e){const t=Array.from(e);for(const e of t){if(!e.is("element"))continue;const o=[],i=[],n=this.writer.createRangeIn(e).getWalker({ignoreElementEnd:!0});for(const{item:e}of n){const s=e.parent;this.schema.checkChild(s,e)||(e.is("element")&&!this.schema.isObject(e)?(i.push(e),t.push(s)):o.push(e),n.jumpTo(this.writer.createPositionAfter(e)))}for(const e of i)this.writer.unwrap(e);for(const e of o)this.writer.remove(e)}}_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 fe("insertcontent-invalid-insertion-position",this);this.position=o,this._setAffectedBoundaries(this.position)}}getSelectionRange(){return this._nodeToSelect?us._createOn(this._nodeToSelect):this.model.schema.getNearestSelectionRange(this.position)}getAffectedRange(){return this._affectedStart?new us(this._affectedStart,this._affectedEnd):null}destroy(){this._affectedStart&&this._affectedStart.detach(),this._affectedEnd&&this._affectedEnd.detach()}_handleNode(e){this._checkAndSplitToAllowedPosition(e)?(e=this._appendToFragment(e),this._firstNode||(this._firstNode=e),this._lastNode=e):this.schema.isObject(e)||this._handleDisallowedNode(e)}_insertPartialFragment(){if(this._documentFragment.isEmpty)return;const e=ma.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()}_handleDisallowedNode(e){e.is("element")&&this.handleNodes(e.getChildren())}_appendToFragment(e){if(!this.schema.checkChild(this.position,e))throw new fe("insertcontent-wrong-position",this,{node:e,position:this.position});return this.writer.insert(e,this._documentFragmentPosition),this._documentFragmentPosition=this._documentFragmentPosition.getShiftedBy(e.offsetSize),e.parent||(e=this._documentFragmentPosition.nodeBefore),this.schema.isObject(e)&&!this.schema.checkChild(this.position,"$text")?this._nodeToSelect=e:this._nodeToSelect=null,this._filterAttributesAndChildrenOf.push(e),e}_setAffectedBoundaries(e){this._affectedStart||(this._affectedStart=ma.fromPosition(e,"toPrevious")),this._affectedEnd&&!this._affectedEnd.isBefore(e)||(this._affectedEnd&&this._affectedEnd.detach(),this._affectedEnd=ma.fromPosition(e,"toNext"))}_mergeOnLeft(){const e=this._firstNode;if(!(e instanceof Ms))return;if(!this._canMergeLeft(e))return;const t=ma._createBefore(e);t.stickiness="toNext";const o=ma.fromPosition(this.position,"toNext");this._affectedStart.isEqual(t)&&(this._affectedStart.detach(),this._affectedStart=ma._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=ma._createAt(t.nodeBefore,"end","toNext")),this.position=o.toPosition(),o.detach(),this._filterAttributesAndChildrenOf.push(this.position.parent),t.detach()}_mergeOnRight(){const e=this._lastNode;if(!(e instanceof Ms))return;if(!this._canMergeRight(e))return;const t=ma._createAfter(e);if(t.stickiness="toNext",!this.position.isEqual(t))throw new fe("insertcontent-invalid-insertion-position",this);this.position=ss._createAt(t.nodeBefore,"end");const o=ma.fromPosition(this.position,"toPrevious");this._affectedEnd.isEqual(t)&&(this._affectedEnd.detach(),this._affectedEnd=ma._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=ma._createAt(t.nodeBefore,0,"toPrevious")),this.position=o.toPosition(),o.detach(),this._filterAttributesAndChildrenOf.push(this.position.parent),t.detach()}_canMergeLeft(e){const t=e.previousSibling;return t instanceof Ms&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(t,e)}_canMergeRight(e){const t=e.nextSibling;return t instanceof Ms&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(e,t)}_insertAutoParagraph(){this._insertPartialFragment();const e=this.writer.createElement("paragraph");this.writer.insert(e,this.position),this._setAffectedBoundaries(this.position),this._lastAutoParagraph=e,this.position=this.writer.createPositionAt(e,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 this.schema.checkChild(this.position.parent,e)||this._insertAutoParagraph(),!0}_getAllowedIn(e,t){const o=this.schema.createContext(e);return this.schema.checkChild(o,t)||this.schema.checkChild(o,"paragraph")&&this.schema.checkChild(o.push("paragraph"),t)?e:this.schema.isLimit(e)?null:this._getAllowedIn(e.parent,t)}}function Ja(e,t,o,i={}){if(!e.schema.isObject(t))throw new fe("insertobject-element-not-an-object",e,{object:t});const n=o||e.document.selection;let s=n;i.findOptimalPosition&&e.schema.isBlock(t)&&(s=e.createSelection(e.schema.findOptimalInsertionRange(n,i.findOptimalPosition)));const r=to(n.getSelectedBlocks()),a={};return r&&Object.assign(a,e.schema.getAttributesWithProperty(r,"copyOnReplace",!0)),e.change((o=>{s.isCollapsed||e.deleteContent(s,{doNotAutoparagraph:!0});let n=t;const r=s.anchor.parent,l=e.schema.createContext(r);!e.schema.checkChild(l,t)&&e.schema.checkChild(l,"paragraph")&&e.schema.checkChild(l.push("paragraph"),t)&&(n=o.createElement("paragraph"),o.insert(t,n)),e.schema.setAllowedAttributes(n,a,o);const c=e.insertContent(n,s);return c.isCollapsed||i.setSelection&&function(e,t,o,i){const n=e.model;if("on"==o)return void e.setSelection(t,"on");if("after"!=o)throw new fe("insertobject-invalid-place-parameter-value",n);let s=t.nextSibling;if(n.schema.isInline(t))return void e.setSelection(t,"after");const r=s&&n.schema.checkChild(s,"$text");!r&&n.schema.checkChild(t.parent,"paragraph")&&(s=e.createElement("paragraph"),n.schema.setAllowedAttributes(s,i,e),n.insertContent(s,e.createPositionAfter(t)));s&&e.setSelection(s,0)}(o,t,i.setSelection,a),c}))}function Za(e,t){const{isForward:o,walker:i,unit:n,schema:s,treatEmojiAsSingleUnit:r}=e,{type:a,item:l,nextPosition:c}=t;if("text"==a)return"word"===e.unit?function(e,t){let o=e.position.textNode;o||(o=t?e.position.nodeAfter:e.position.nodeBefore);for(;o&&o.is("$text");){const i=e.position.offset-o.startOffset;if(Xa(o,i,t))o=t?e.position.nodeAfter:e.position.nodeBefore;else{if(Ya(o.data,i,t))break;e.next()}}return e.position}(i,o):function(e,t,o){const i=e.position.textNode;if(i){const n=i.data;let s=e.position.offset-i.startOffset;for(;ho(n,s)||"character"==t&&mo(n,s)||o&&po(n,s);)e.next(),s=e.position.offset-i.startOffset}return e.position}(i,n,r);if(a==(o?"elementStart":"elementEnd")){if(s.isSelectable(l))return ss._createAt(l,o?"after":"before");if(s.checkChild(c,"$text"))return c}else{if(s.isLimit(l))return void i.skip((()=>!0));if(s.checkChild(c,"$text"))return c}}function Qa(e,t){const o=e.root,i=ss._createAt(o,t?"end":0);return t?new us(e,i):new us(i,e)}function Ya(e,t,o){const i=t+(o?0:-1);return' ,.?!:;"-()'.includes(e.charAt(i))}function Xa(e,t,o){return t===(o?e.offsetSize:0)}class el extends(Be()){markers;document;schema;_config;_pendingChanges;_currentWriter;constructor(e){super(),this.markers=new Ta,this.document=new xa(this),this.schema=new mr,this._config=e,this._pendingChanges=[],this._currentWriter=null,["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("$container",{allowIn:["$root","$container"]}),this.schema.register("$block",{allowIn:["$root","$container"],isBlock:!0}),this.schema.register("$blockObject",{allowWhere:"$block",isBlock:!0,isObject:!0}),this.schema.register("$inlineObject",{allowWhere:"$text",allowAttributesOf:"$text",isInline:!0,isObject:!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((()=>!0),"$marker"),Na(this),this.document.registerPostFixer(or),this.on("insertContent",((e,[t,o])=>{e.return=function(e,t,o){return e.change((i=>{const n=o||e.document.selection;n.isCollapsed||e.deleteContent(n,{doNotAutoparagraph:!0});const s=new Ga(e,i,n.anchor),r=[];let a;if(t.is("documentFragment")){if(t.markers.size){const e=[];for(const[o,i]of t.markers){const{start:t,end:n}=i,s=t.isEqual(n);e.push({position:t,name:o,isCollapsed:s},{position:n,name:o,isCollapsed:s})}e.sort((({position:e},{position:t})=>e.isBefore(t)?1:-1));for(const{position:o,name:n,isCollapsed:s}of e){let e=null,a=null;const l=o.parent===t&&o.isAtStart,c=o.parent===t&&o.isAtEnd;l||c?s&&(a=l?"start":"end"):(e=i.createElement("$marker"),i.insert(e,o)),r.push({name:n,element:e,collapsed:a})}}a=t.getChildren()}else a=[t];s.handleNodes(a);let l=s.getSelectionRange();if(t.is("documentFragment")&&r.length){const e=l?Ts.fromRange(l):null,t={};for(let e=r.length-1;e>=0;e--){const{name:o,element:n,collapsed:a}=r[e],l=!t[o];if(l&&(t[o]=[]),n){const e=i.createPositionAt(n,"before");t[o].push(e),i.remove(n)}else{const e=s.getAffectedRange();if(!e){a&&t[o].push(s.position);continue}a?t[o].push(e[a]):t[o].push(l?e.start:e.end)}}for(const[e,[o,n]]of Object.entries(t))o&&n&&o.root===n.root&&o.root.document&&!i.model.markers.has(e)&&i.addMarker(e,{usingOperation:!0,affectsData:!0,range:new us(o,n)});e&&(l=e.toRange(),e.detach())}l&&(n instanceof Os?i.setSelection(l):n.setTo(l));const c=s.getAffectedRange()||e.createRange(n.anchor);return s.destroy(),c}))}(this,t,o)})),this.on("insertObject",((e,[t,o,i])=>{e.return=Ja(this,t,o,i)})),this.on("canEditAt",(e=>{const t=!this.document.isReadOnly;e.return=t,t||e.stop()}))}change(e){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new fa,callback:e}),this._runPendingChanges()[0]):e(this._currentWriter)}catch(e){fe.rethrowUnexpectedError(e,this)}}enqueueChange(e,t){try{e?"function"==typeof e?(t=e,e=new fa):e instanceof fa||(e=new fa(e)):e=new fa,this._pendingChanges.push({batch:e,callback:t}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(e){fe.rethrowUnexpectedError(e,this)}}applyOperation(e){e._execute()}insertContent(e,t,o,...i){const n=tl(t,o);return this.fire("insertContent",[e,n,o,...i])}insertObject(e,t,o,i,...n){const s=tl(t,o);return this.fire("insertObject",[e,s,i,i,...n])}deleteContent(e,t){ja(this,e,t)}modifySelection(e,t){!function(e,t,o={}){const i=e.schema,n="backward"!=o.direction,s=o.unit?o.unit:"character",r=!!o.treatEmojiAsSingleUnit,a=t.focus,l=new is({boundaries:Qa(a,n),singleCharacters:!0,direction:n?"forward":"backward"}),c={walker:l,schema:i,isForward:n,unit:s,treatEmojiAsSingleUnit:r};let d;for(;d=l.next();){if(d.done)return;const o=Za(c,d.value);if(o)return void(t instanceof Os?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 n=i.start.root,s=i.start.getCommonPath(i.end),r=n.getNodeByPath(s);let a;a=i.start.parent==i.end.parent?i:e.createRange(e.createPositionAt(r,i.start.path[s.length]),e.createPositionAt(r,i.end.path[s.length]+1));const l=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),l)[0],n=e.createRange(e.createPositionAt(o,0),t.start);Ka(e.createRange(t.end,e.createPositionAt(o,"end")),e),Ka(n,e)}return o}))}(this,e)}hasContent(e,t={}){let o;o=e.is("selection")?Array.from(e.getRanges()):e.is("range")?[e]:[us._createIn(e)];for(const e of o)if(this._rangeHasContent(e,t))return!0;return!1}_rangeHasContent(e,t){if(e.isCollapsed)return!1;const{ignoreWhitespaces:o=!1,ignoreMarkers:i=!1}=t;if(!i)for(const t of this.markers.getMarkersIntersectingRange(e))if(t.affectsData)return!0;for(const t of e.getItems())if(this.schema.isContent(t)){if(!t.is("$textProxy"))return!0;if(!o)return!0;if(-1!==t.data.search(/\S/))return!0}return!1}canEditAt(e){const t=tl(e);return this.fire("canEditAt",[t])}createPositionFromPath(e,t,o){return new ss(e,t,o)}createPositionAt(e,t){return ss._createAt(e,t)}createPositionAfter(e){return ss._createAfter(e)}createPositionBefore(e){return ss._createBefore(e)}createRange(e,t){return new us(e,t)}createRangeIn(e){return us._createIn(e)}createRangeOn(e){return us._createOn(e)}createSelection(...e){return new _s(...e)}createBatch(e){return new fa(e)}createOperationFromJSON(e){return ea.fromJSON(e,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const e=[];this.fire("_beforeChanges");try{for(;this._pendingChanges.length;){const t=this._pendingChanges[0].batch;this._currentWriter=new Ra(this,t);const o=this._pendingChanges[0].callback(this._currentWriter);e.push(o),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}}finally{this._pendingChanges.length=0,this._currentWriter=null,this.fire("_afterChanges")}return e}}function tl(e,t){if(e)return e instanceof _s||e instanceof Os?e:e instanceof ys?t||0===t?new _s(e,t):e.is("rootElement")?new _s(e,"in"):new _s(e,"on"):new _s(e)}class ol extends jn{domEventType="click";onDomEvent(e){this.fire(e.type,e)}}class il extends jn{domEventType=["mousedown","mouseup","mouseover","mouseout"];onDomEvent(e){this.fire(e.type,e)}}class nl extends jn{domEventType=["touchstart","touchend","touchmove"];onDomEvent(e){this.fire(e.type,e)}}class sl extends jn{domEventType=["pointerdown","pointerup","pointermove"];onDomEvent(e){this.fire(e.type,e)}}class rl{document;constructor(e){this.document=e}createDocumentFragment(e){return new tn(this.document,e)}createElement(e,t,o){return new _i(this.document,e,t,o)}createText(e){return new si(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 _i(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){a(e)&&void 0===o?t._setStyle(e):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 Si._createAt(e,t)}createPositionAfter(e){return Si._createAfter(e)}createPositionBefore(e){return Si._createBefore(e)}createRange(e,t){return new Ii(e,t)}createRangeOn(e){return Ii._createOn(e)}createRangeIn(e){return Ii._createIn(e)}createSelection(...e){return new Oi(...e)}}const al=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ll=/^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i,cl=/^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,dl=/^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i,ul=/^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,hl=/\w+\((?:[^()]|\([^()]*\))*\)|\S+/gi,ml=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 gl(e){return e.startsWith("#")?al.test(e):e.startsWith("rgb")?ll.test(e)||cl.test(e):e.startsWith("hsl")?dl.test(e)||ul.test(e):ml.has(e.toLowerCase())}const pl=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"];function fl(e){return pl.includes(e)}const bl=/^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;function wl(e){return bl.test(e)}const yl=/^[+-]?[0-9]*([.][0-9]+)?%$/;function _l(e){return yl.test(e)}const kl=["auto","cover","contain"];const vl=["repeat-x","repeat-y","repeat","space","round","no-repeat"];const Cl=["center","top","bottom","left","right"];function Al(e){return Cl.includes(e)}const xl=["fixed","scroll","local"];function El(e){return xl.includes(e)}const Tl=["border-box","padding-box","content-box"];function Pl(e){return Tl.includes(e)}const Sl=["border-box","padding-box","content-box","text"];function Il(e){return Sl.includes(e)}function Rl(e=""){if(""===e)return{top:void 0,right:void 0,bottom:void 0,left:void 0};const t=Fl(e),o=t[0],i=t[2]||o,n=t[1]||o;return{top:o,bottom:i,right:n,left:t[3]||n}}function Ol(e){return t=>{const{top:o,right:i,bottom:n,left:s}=t,r=[];return[o,i,s,n].every((e=>!!e))?r.push([e,Vl(t)]):(o&&r.push([e+"-top",o]),i&&r.push([e+"-right",i]),n&&r.push([e+"-bottom",n]),s&&r.push([e+"-left",s])),r}}function Vl({top:e,right:t,bottom:o,left:i}){const n=[];return i!==t?n.push(e,t,o,i):o!==e?n.push(e,t,o):t!==e?n.push(e,t):n.push(e),n.join(" ")}function Dl(e){return t=>({path:e,value:Rl(t)})}function Fl(e){const t=e.trim().slice(0,1500).matchAll(hl);return Array.from(t).map((e=>e[0]))}const Ml={image:"none",repeat:"repeat",position:"0% 0%",size:"auto",origin:"padding-box",clip:"border-box",attachment:"scroll"},Nl=["linear-gradient","repeating-linear-gradient","radial-gradient","repeating-radial-gradient","conic-gradient","repeating-conic-gradient","url"];function Bl(e){e.setNormalizer("background-color",(e=>({path:"background.color",value:e})));for(const t in Ml)e.setNormalizer(`background-${t}`,Ll(`background.${t}`)),e.setReducer(`background-${t}`,zl(`background-${t}`));e.setNormalizer("background",(e=>{const t=function(e){return $l(e).map(jl).filter((e=>null!==e))}(e);t.length||t.push({...ql(),color:e});const o=function(e){const t={image:[],position:[],size:[],repeat:[],attachment:[],origin:[],clip:[]};for(const o of e)t.position.push(o.position.join(" ")),t.size.push(o.size.join(" ")),t.repeat.push(o.repeat.join(" ")),t.image.push(o.image),t.attachment.push(o.attachment),t.origin.push(o.origin),t.clip.push(o.clip);return e.at(-1)?.color&&(t.color=e.at(-1).color),t}(t);return{path:"background",value:o}})),e.setReducer("background",(e=>{const t=e,o=Object.keys(Ml).every((e=>{const o=t[e];return void 0!==o&&(!Array.isArray(o)||o.length>0)}));return o?function(e){const t=[],o=function(e){const t=function(e){let t=0;for(const o of Object.values(e))Array.isArray(o)&&o.length>t&&(t=o.length);return t}(e),o=Array.from({length:t},((t,o)=>{const i=ql();return e.image?.[o]&&(i.image=e.image[o]),e.position?.[o]&&(i.position=e.position[o].split(" ")),e.size?.[o]&&(i.size=e.size[o].split(" ")),e.repeat?.[o]&&(i.repeat=e.repeat[o].split(" ")),e.attachment?.[o]&&(i.attachment=e.attachment[o]),e.origin?.[o]&&(i.origin=e.origin[o]),e.clip?.[o]&&(i.clip=e.clip[o]),i}));return e.color&&(o.at(-1).color=e.color),o}(e).map((e=>function(e){const t=[];e.image&&e.image!==Ml.image&&t.push(e.image);const o=e.position.join(" "),i=!o||o===Ml.position;i||t.push(o);const n=e.size.join(" ");n&&n!==Ml.size&&(i&&t.push("0% 0%"),t.push("/",n));const s=e.repeat.join(" ");s&&s!==Ml.repeat&&t.push(s),e.attachment&&e.attachment!==Ml.attachment&&t.push(e.attachment);const r=e.origin===Ml.origin,a=e.clip===Ml.clip;return r&&a||(t.push(e.origin),e.clip!==e.origin&&t.push(e.clip)),e.color&&t.push(e.color),t.join(" ")}(e).trim())).filter(Boolean).join(", ");return o&&t.push(["background",o]),t}(t):function(e){const t=[];for(const o in Ml){const i=e[o];Array.isArray(i)&&t.push([`background-${o}`,i.join(", ")])}return void 0!==e.color&&t.push(["background-color",e.color]),t}(t)})),e.setStyleRelation("background",["background-color","background-image","background-repeat","background-position","background-size","background-attachment","background-origin","background-clip"])}function Ll(e){return t=>({path:e,value:$l(t)})}function zl(e){return t=>{const o=t.join(", ");return[[e,o]]}}function jl(e){const t={},{value:o,image:i}=function(e){for(const t of Nl){const o=t+"(",i=e.indexOf(o);if(i<0)continue;let n=t,s=0;for(let o=i+t.length;o"constructor"!==e)).length:0===t.length}return!0}(t)?null:{...ql(),...t}}function ql(){return{attachment:Ml.attachment,image:Ml.image,origin:Ml.origin,clip:Ml.clip,position:Ml.position.split(" "),repeat:Ml.repeat.split(" "),size:Ml.size.split(" ")}}function $l(e){const t=[];let o="",i=0;for(const n of e){if("("===n)i++;else if(")"===n)i--;else if(","===n&&0===i){t.push(o.trim()),o="";continue}o+=n}return o.trim()&&t.push(o.trim()),t}function Hl(e){e.setNormalizer("border",(e=>{const{color:t,style:o,width:i}=Ql(e);return{path:"border",value:{color:Rl(t),style:Rl(o),width:Rl(i)}}})),e.setNormalizer("border-top",Wl("top")),e.setNormalizer("border-right",Wl("right")),e.setNormalizer("border-bottom",Wl("bottom")),e.setNormalizer("border-left",Wl("left")),e.setNormalizer("border-color",Ul("color")),e.setNormalizer("border-width",Ul("width")),e.setNormalizer("border-style",Ul("style")),e.setNormalizer("border-top-color",Gl("color","top")),e.setNormalizer("border-top-style",Gl("style","top")),e.setNormalizer("border-top-width",Gl("width","top")),e.setNormalizer("border-right-color",Gl("color","right")),e.setNormalizer("border-right-style",Gl("style","right")),e.setNormalizer("border-right-width",Gl("width","right")),e.setNormalizer("border-bottom-color",Gl("color","bottom")),e.setNormalizer("border-bottom-style",Gl("style","bottom")),e.setNormalizer("border-bottom-width",Gl("width","bottom")),e.setNormalizer("border-left-color",Gl("color","left")),e.setNormalizer("border-left-style",Gl("style","left")),e.setNormalizer("border-left-width",Gl("width","left")),e.setExtractor("border-top",Jl("top")),e.setExtractor("border-right",Jl("right")),e.setExtractor("border-bottom",Jl("bottom")),e.setExtractor("border-left",Jl("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",Ol("border-color")),e.setReducer("border-style",Ol("border-style")),e.setReducer("border-width",Ol("border-width")),e.setReducer("border-top",Yl("top")),e.setReducer("border-right",Yl("right")),e.setReducer("border-bottom",Yl("bottom")),e.setReducer("border-left",Yl("left")),e.setReducer("border",function(){return t=>{const o=Zl(t,"top"),i=Zl(t,"right"),n=Zl(t,"bottom"),s=Zl(t,"left"),r=[o,i,n,s],a={width:e(r,"width"),style:e(r,"style"),color:e(r,"color")},l=Xl(a,"all");if(l.length)return l;const c=Object.entries(a).reduce(((e,[t,o])=>(o&&(e.push([`border-${t}`,o]),r.forEach((e=>delete e[t]))),e)),[]);return[...c,...Xl(o,"top"),...Xl(i,"right"),...Xl(n,"bottom"),...Xl(s,"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 Wl(e){return t=>{const{color:o,style:i,width:n}=Ql(t),s={};return void 0!==o&&(s.color={[e]:o}),void 0!==i&&(s.style={[e]:i}),void 0!==n&&(s.width={[e]:n}),{path:"border",value:s}}}function Ul(e){return t=>({path:"border",value:Kl(t,e)})}function Kl(e,t){return{[t]:Rl(e)}}function Gl(e,t){return o=>({path:"border",value:{[e]:{[t]:o}}})}function Jl(e){return(t,o)=>{if(o.border)return Zl(o.border,e)}}function Zl(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 Ql(e){const t={},o=Fl(e);for(const e of o)wl(e)||/thin|medium|thick/.test(e)?t.width=e:fl(e)?t.style=e:t.color=e;return t}function Yl(e){return t=>Xl(t,e)}function Xl(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 ec(e){e.setNormalizer("margin",Dl("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",Ol("margin")),e.setStyleRelation("margin",["margin-top","margin-right","margin-bottom","margin-left"])}function tc(e){e.setNormalizer("padding",Dl("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",Ol("padding")),e.setStyleRelation("padding",["padding-top","padding-right","padding-bottom","padding-left"])}Symbol("_treeDump");function oc(e,t=0,o={}){const{leading:i=!0,trailing:n=!0}=o;return zo(e,t,{leading:i,maxWait:t,trailing:n})}class ic{crashes=[];state="initializing";_crashNumberLimit;_now=Date.now;_minimumNonErrorTimePeriod;_boundErrorHandler;_listeners;constructor(e){if(this.crashes=[],this._crashNumberLimit="number"==typeof e.crashNumberLimit?e.crashNumberLimit:3,this._minimumNonErrorTimePeriod="number"==typeof e.minimumNonErrorTimePeriod?e.minimumNonErrorTimePeriod:5e3,this._boundErrorHandler=e=>{const t="error"in e?e.error:e.reason;t instanceof Error&&this._handleError(t,e)},this._listeners={},!this._restart)throw new Error("The Watchdog class was split into the abstract `Watchdog` class and the `EditorWatchdog` class. Please, use `EditorWatchdog` if you have used the `Watchdog` class previously.")}destroy(){this._stopErrorHandling(),this._listeners={}}on(e,t){this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t)}off(e,t){this._listeners[e]=this._listeners[e].filter((e=>e!==t))}_fire(e,...t){const o=this._listeners[e]||[];for(const e of o)e.apply(this,[null,...t])}_startErrorHandling(){window.addEventListener("error",this._boundErrorHandler),window.addEventListener("unhandledrejection",this._boundErrorHandler)}_stopErrorHandling(){window.removeEventListener("error",this._boundErrorHandler),window.removeEventListener("unhandledrejection",this._boundErrorHandler)}_handleError(e,t){if(this._shouldReactToError(e)){this.crashes.push({message:e.message,stack:e.stack,filename:t instanceof ErrorEvent?t.filename:void 0,lineno:t instanceof ErrorEvent?t.lineno:void 0,colno:t instanceof ErrorEvent?t.colno:void 0,date:this._now()});const o=this._shouldRestart();this.state="crashed",this._fire("stateChange"),this._fire("error",{error:e,causesRestart:o}),o?this._restart():(this.state="crashedPermanently",this._fire("stateChange"))}}_shouldReactToError(e){return e.is&&e.is("CKEditorError")&&void 0!==e.context&&null!==e.context&&"ready"===this.state&&this._isErrorComingFromThisItem(e)}_shouldRestart(){if(this.crashes.length<=this._crashNumberLimit)return!0;return(this.crashes[this.crashes.length-1].date-this.crashes[this.crashes.length-1-this._crashNumberLimit].date)/this._crashNumberLimit>this._minimumNonErrorTimePeriod}}function nc(e,t=new Set){const o=[e],i=new Set;let n=0;for(;o.length>n;){const e=o[n++];if(!i.has(e)&&sc(e)&&!t.has(e))if(i.add(e),Symbol.iterator in e)try{for(const t of e)o.push(t)}catch{}else for(const t in e)"defaultValue"!==t&&o.push(e[t])}return i}function sc(e){const t=Object.prototype.toString.call(e),o=typeof e;return!("number"===o||"boolean"===o||"string"===o||"symbol"===o||"function"===o||"[object Date]"===t||"[object RegExp]"===t||"[object Module]"===t||null==e||e._watchdogExcluded||e instanceof EventTarget||e instanceof Event)}function rc(e,t,o=new Set){if(e===t&&("object"==typeof(i=e)&&null!==i))return!0;var i;const n=nc(e,o),s=nc(t,o);for(const e of n)if(s.has(e))return!0;return!1}function ac(e,t,o){const i=t.root,n=t.roots||Object.create(null);o&&!n[o]&&(n[o]=i||Object.create(null));const s=function(e){return!!e&&"object"==typeof e&&!Array.isArray(e)&&(t=e,!L(t));var t}(e),r=function(e,t,o){return t||!o?e.initialData||Object.create(null):{[o]:e.initialData}}(t,s,o),a=Array.from(new Set([...s?Object.keys(e):[],...Object.keys(n),...Object.keys(r)]));for(const e of a){const o=n[e]||Object.create(null);o.initialData="",o.placeholder??=lc(t,"placeholder",e),o.label??=lc(t,"label",e),n[e]=o}t.roots=n}function lc(e,t,o){const i=e[t];if(i)return"string"==typeof i?i:i[o]}class cc extends ic{_editor=null;_lifecyclePromise=null;_throttledSave;_data;_lastDocumentVersion;_elementOrData;_editorAttachTo=null;_isSingleRootEditor=!0;_isUsingConfigBasedCreator=!1;_editables={};_config;_excludedProps;constructor(e,t={}){super(t),this._throttledSave=oc(this._save.bind(this),"number"==typeof t.saveInterval?t.saveInterval:5e3),e&&(this._creator=(t,o)=>void 0===o?e.create(t):e.create(t,o)),this._destructor=e=>e.destroy()}get editor(){return this._editor}get _item(){return this._editor}setCreator(e){this._creator=e}setDestructor(e){this._destructor=e}_restart(){return Promise.resolve().then((()=>(this.state="initializing",this._fire("stateChange"),this._destroy()))).catch((e=>{console.error("An error happened during the editor destroying.",e)})).then((()=>{this._isUsingConfigBasedCreator?ac(this._isSingleRootEditor?"":{},this._config,!!this._isSingleRootEditor&&"main"):ac(this._isSingleRootEditor?this._editorAttachTo||"":this._editables,this._config,!!this._isSingleRootEditor&&"main");const e={...this._config,extraPlugins:this._config.extraPlugins||[],_watchdogInitialData:this._data};e.extraPlugins.push(dc);const t={};for(const[o,i]of Object.entries(this._data.roots)){const n=e.roots[o]||Object.create(null);n.initialData="",i.isLoaded?n.lazyLoad=!1:delete n.modelAttributes,t[o]=n}if(e.roots=t,delete e.initialData,delete e.root,this._isUsingConfigBasedCreator)return this.create(e,e.context);const o=this._isSingleRootEditor?this._editorAttachTo||"":this._editables;return this.create(o,e,e.context)})).then((()=>{this._fire("restart")}))}create(e=(this._isUsingConfigBasedCreator?this._config:this._elementOrData),t=(this._isUsingConfigBasedCreator?void 0:this._config),o){const i=this._detectConfigBasedCreator(e,t),n=i?void 0:e,s=i?e:t,r=i?t:o;return this._lifecyclePromise=Promise.resolve(this._lifecyclePromise).then((()=>{if(super._startErrorHandling(),this._isUsingConfigBasedCreator=i,this._elementOrData=n,this._config=this._cloneEditorConfiguration(s||{}),this._config.context=r,i){this._editorAttachTo=null;const e=this._config.roots?Object.keys(this._config.roots).length:0,t=this._config.initialData,o=t&&"object"==typeof t;this._isSingleRootEditor=!o&&e<=1}else this._editorAttachTo=uc(n)?n:null,this._isSingleRootEditor=uc(n)||"string"==typeof n;return i?this._creator(this._config):this._creator(n,this._config)})).then((e=>{this._editor=e,e.model.document.on("change:data",this._throttledSave),this._lastDocumentVersion=e.model.document.version,this._data=this._getData(),this._editorAttachTo||(this._editables=this._getEditables()),this.state="ready",this._fire("stateChange")})).finally((()=>{this._lifecyclePromise=null})),this._lifecyclePromise}destroy(){return this._lifecyclePromise=Promise.resolve(this._lifecyclePromise).then((()=>(this.state="destroyed",this._fire("stateChange"),super.destroy(),this._destroy()))).finally((()=>{this._lifecyclePromise=null})),this._lifecyclePromise}_destroy(){return Promise.resolve().then((()=>{this._stopErrorHandling(),this._throttledSave.cancel();const e=this._editor;return this._editor=null,e.model.document.off("change:data",this._throttledSave),this._destructor(e)}))}_save(){const e=this._editor.model.document.version;try{this._data=this._getData(),this._editorAttachTo||(this._editables=this._getEditables()),this._lastDocumentVersion=e}catch(e){console.error(e,"An error happened during restoring editor data. Editor will be restored from the previously saved data.")}}_setExcludedProperties(e){this._excludedProps=e}_getData(){const e=this._editor,t=e.model.document.roots.filter((e=>e.isAttached()&&"$graveyard"!=e.rootName)),{plugins:o}=e,i=o.has("CommentsRepository")&&o.get("CommentsRepository"),n=o.has("TrackChanges")&&o.get("TrackChanges"),s={roots:{},markers:{},commentThreads:JSON.stringify([]),suggestions:JSON.stringify([])};t.forEach((e=>{s.roots[e.rootName]={content:JSON.stringify(Array.from(e.getChildren())),attributes:JSON.stringify(Array.from(e.getAttributes())),isLoaded:e._isLoaded}}));for(const t of e.model.markers)t._affectsData&&(s.markers[t.name]={rangeJSON:t.getRange().toJSON(),usingOperation:t._managedUsingOperations,affectsData:t._affectsData});return i&&(s.commentThreads=JSON.stringify(i.getCommentThreads({toJSON:!0,skipNotAttached:!0}))),n&&(s.suggestions=JSON.stringify(n.getSuggestions({toJSON:!0,skipNotAttached:!0}))),s}_getEditables(){const e={};for(const t of this.editor.model.document.getRootNames()){const o=this.editor.ui.getEditableElement(t);o&&(e[t]=o)}return e}_isErrorComingFromThisItem(e){return rc(this._editor,e.context,this._excludedProps)}_detectConfigBasedCreator(e,t){if("string"==typeof e||uc(e))return!1;if(t&&"object"==typeof t&&!("destroy"in t)&&Object.keys(t).length>0)return!1;if(e&&"object"==typeof e){const t=Object.values(e);if(t.length>0&&t.every((e=>"string"==typeof e||uc(e))))return!1}return!0}_cloneEditorConfiguration(e){return N(e,((e,t)=>uc(e)||"context"===t?e:void 0))}}class dc{editor;_data;constructor(e){this.editor=e,this._data=e.config.get("_watchdogInitialData")}init(){this.editor.data.on("init",(e=>{e.stop(),this.editor.model.enqueueChange({isUndoable:!1},(e=>{this._restoreCollaborationData(),this._restoreEditorData(e)})),this.editor.data.fire("ready")}),{priority:999})}_createNode(e,t){if("name"in t){const o=e.createElement(t.name,t.attributes);if(t.children)for(const i of t.children)o._appendChild(this._createNode(e,i));return o}return e.createText(t.data,t.attributes)}_restoreEditorData(e){const t=this.editor;Object.entries(this._data.roots).forEach((([o,{content:i,attributes:n}])=>{const s=JSON.parse(i),r=JSON.parse(n),a=t.model.document.getRoot(o);for(const[t,o]of r)e.setAttribute(t,o,a);for(const t of s){const o=this._createNode(e,t);e.insert(o,a,"end")}})),Object.entries(this._data.markers).forEach((([o,i])=>{const{document:n}=t.model,{rangeJSON:{start:s,end:r},...a}=i,l=n.getRoot(s.root),c=e.createPositionFromPath(l,s.path,s.stickiness),d=e.createPositionFromPath(l,r.path,r.stickiness),u=e.createRange(c,d);e.addMarker(o,{range:u,...a})}))}_restoreCollaborationData(){const e=JSON.parse(this._data.commentThreads),t=JSON.parse(this._data.suggestions);if(this.editor.plugins.has("CommentsRepository")){const t=this.editor.plugins.get("CommentsRepository");for(const e of t.getCommentThreads())t._removeCommentThread({threadId:e.id});e.forEach((e=>{const t=this.editor.config.get("collaboration.channelId");this.editor.plugins.get("CommentsRepository").addCommentThread({channelId:t,...e})}))}if(this.editor.plugins.has("TrackChangesEditing")){const e=this.editor.plugins.get("TrackChangesEditing");for(const t of e.getSuggestions())e._removeSuggestion(t);t.forEach((t=>{e.addSuggestionData(t)}))}}}function uc(e){return L(e)}const hc=Symbol("MainQueueId");class mc extends ic{_watchdogs=new Map;_watchdogConfig;_context=null;_contextProps=new Set;_actionQueues=new gc;_contextConfig;_item;constructor(e,t={}){super(t),this._watchdogConfig=t,this._creator=t=>e.create(t),this._destructor=e=>e.destroy(),this._actionQueues.onEmpty((()=>{"initializing"===this.state&&(this.state="ready",this._fire("stateChange"))}))}setCreator(e){this._creator=e}setDestructor(e){this._destructor=e}get context(){return this._context}create(e={}){return this._actionQueues.enqueue(hc,(()=>(this._contextConfig=e,this._create())))}getItem(e){return this._getWatchdog(e)._item}getItemState(e){return this._getWatchdog(e).state}add(e){const t=pc(e);return Promise.all(t.map((e=>this._actionQueues.enqueue(e.id,(()=>{if("destroyed"===this.state)throw new Error("Cannot add items to destroyed watchdog.");if(!this._context)throw new Error("Context was not created yet. You should call the `ContextWatchdog#create()` method first.");let t;if(this._watchdogs.has(e.id))throw new Error(`Item with the given id is already added: '${e.id}'.`);if("editor"===e.type)return t=new cc(null,this._watchdogConfig),t.setCreator(e.creator),t._setExcludedProperties(this._contextProps),e.destructor&&t.setDestructor(e.destructor),this._watchdogs.set(e.id,t),t.on("error",((o,{error:i,causesRestart:n})=>{this._fire("itemError",{itemId:e.id,error:i}),n&&this._actionQueues.enqueue(e.id,(()=>new Promise((o=>{const i=()=>{t.off("restart",i),this._fire("itemRestart",{itemId:e.id}),o()};t.on("restart",i)}))))})),void 0!==e.sourceElementOrData?t.create(e.sourceElementOrData,e.config,this._context):t.create(e.config,this._context);throw new Error(`Not supported item type: '${e.type}'.`)})))))}remove(e){const t=pc(e);return Promise.all(t.map((e=>this._actionQueues.enqueue(e,(()=>{const t=this._getWatchdog(e);return this._watchdogs.delete(e),t.destroy()})))))}destroy(){return this._actionQueues.enqueue(hc,(()=>(this.state="destroyed",this._fire("stateChange"),super.destroy(),this._destroy())))}_restart(){return this._actionQueues.enqueue(hc,(()=>(this.state="initializing",this._fire("stateChange"),this._destroy().catch((e=>{console.error("An error happened during destroying the context or items.",e)})).then((()=>this._create())).then((()=>this._fire("restart"))))))}_create(){return Promise.resolve().then((()=>(this._startErrorHandling(),this._creator(this._contextConfig)))).then((e=>(this._context=e,this._contextProps=nc(this._context),Promise.all(Array.from(this._watchdogs.values()).map((e=>(e._setExcludedProperties(this._contextProps),e._isUsingConfigBasedCreator?e.create(void 0,this._context):e.create(void 0,void 0,this._context))))))))}_destroy(){return Promise.resolve().then((()=>{this._stopErrorHandling();const e=this._context;return this._context=null,this._contextProps=new Set,Promise.all(Array.from(this._watchdogs.values()).map((e=>e.destroy()))).then((()=>this._destructor(e)))}))}_getWatchdog(e){const t=this._watchdogs.get(e);if(!t)throw new Error(`Item with the given id was not registered: ${e}.`);return t}_isErrorComingFromThisItem(e){for(const t of this._watchdogs.values())if(t._isErrorComingFromThisItem(e))return!1;return rc(this._context,e.context)}}class gc{_onEmptyCallbacks=[];_queues=new Map;_activeActions=0;onEmpty(e){this._onEmptyCallbacks.push(e)}enqueue(e,t){const o=e===hc;this._activeActions++,this._queues.get(e)||this._queues.set(e,Promise.resolve());const i=(o?Promise.all(this._queues.values()):Promise.all([this._queues.get(hc),this._queues.get(e)])).then(t),n=i.catch((()=>{}));return this._queues.set(e,n),i.finally((()=>{this._activeActions--,this._queues.get(e)===n&&0===this._activeActions&&this._onEmptyCallbacks.forEach((e=>e()))}))}}function pc(e){return Array.isArray(e)?e:[e]}class fc extends(Be()){editor;_disableStack=new Set;constructor(e){super(),this.editor=e,this.set("isEnabled",!0)}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",bc,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",bc),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}static get isOfficialPlugin(){return!1}static get isPremiumPlugin(){return!1}}function bc(e){e.return=!1,e.stop()}class wc extends(Be()){editor;_isEnabledBasedOnSelection;_affectsData;_disableStack;static get _throwErrorWhenUsedAsAPlugin(){return!0}constructor(e){super(),this.editor=e,this.set("value",void 0),this.set("isEnabled",!1),this._affectsData=!0,this._isEnabledBasedOnSelection=!0,this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",(()=>{this.refresh()})),this.listenTo(e,"change:isReadOnly",(()=>{this.refresh()})),this.on("set:isEnabled",(t=>{if(!this.affectsData)return;const o=e.model.document.selection,i=!("$graveyard"==o.getFirstPosition().root.rootName)&&e.model.canEditAt(o);(e.isReadOnly||this._isEnabledBasedOnSelection&&!i)&&(t.return=!1,t.stop())}),{priority:"highest"}),this.on("execute",(e=>{this.isEnabled||e.stop()}),{priority:"high"})}get affectsData(){return this._affectsData}set affectsData(e){this._affectsData=e}refresh(){this.isEnabled=!0}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",yc,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",yc),this.refresh())}execute(...e){}destroy(){this.stopListening()}}function yc(e){e.return=!1,e.stop()}class _c{_commands;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 fe("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()}}class kc extends(xe()){_context;_plugins=new Map;_availablePlugins;_contextPlugins;constructor(e,t=[],o=[]){super(),this._context=e,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 fe("plugincollection-plugin-not-loaded",this._context,{plugin:t})}return t}has(e){return this._plugins.has(e)}async init(e,t=[],o=[]){const i=this,n=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 s=[...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=>!c(e,t))))];!function(e,t){for(const o of t){if("function"!=typeof o)throw new fe("plugincollection-replace-plugin-invalid-type",null,{pluginItem:o});const t=o.pluginName;if(!t)throw new fe("plugincollection-replace-plugin-missing-name",null,{pluginItem:o});if(o.requires&&o.requires.length)throw new fe("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:t});const n=i._availablePlugins.get(t);if(!n)throw new fe("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:t});const s=e.indexOf(n);if(-1===s){if(i._contextPlugins.has(n))return;throw new fe("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:t})}if(n.requires&&n.requires.length)throw new fe("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:t});e.splice(s,1,o),i._availablePlugins.set(t,o)}}(s,o);const r=function(e){return e.map((e=>{let t=i._contextPlugins.get(e);return t=t||new e(n),i._add(e,t),t}))}(s);return await h(r,"init"),await h(r,"afterInit"),r;function a(e){return"function"==typeof e}function l(e){return a(e)&&!!e.isContextPlugin}function c(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){if("function"!=typeof e)return;if(e._throwErrorWhenUsedAsAPlugin)throw new fe("plugincollection-plugin-invalid-constructor",n,{name:e.name})}(e),function(e,t){if(a(e))return;if(t)throw new fe("plugincollection-soft-required",n,{missingPlugin:e,requiredBy:d(t)});throw new fe("plugincollection-plugin-not-found",n,{plugin:e})}(e,o),function(e,t){if(!l(t))return;if(l(e))return;throw new fe("plugincollection-context-required",n,{plugin:d(e),requiredBy:d(t)})}(e,o),function(e,o){if(!o)return;if(!c(e,t))return;throw new fe("plugincollection-required",n,{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 fe("plugincollection-plugin-name-conflict",null,{pluginName:o,plugin1:this._plugins.get(o).constructor,plugin2:e});this._plugins.set(o,t)}}}class vc{config;plugins;locale;t;editors;static defaultConfig;static builtinPlugins;_contextOwner=null;constructor(e){const{translations:t,...o}=e||{};this.config=new Ge(o,this.constructor.defaultConfig);const i=this.constructor.builtinPlugins;this.config.define("plugins",i),this.plugins=new kc(this,i);const n=this.config.get("language")||{};this.locale=new Xt({uiLanguage:"string"==typeof n?n:n.ui,contentLanguage:this.config.get("language.content"),translations:t}),this.t=this.locale.t,this.editors=new eo}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 fe("context-initplugins-constructor-only",null,{Plugin:o});if(!0!==o.isContextPlugin)throw new fe("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 fe("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)))}))}static get _throwErrorWhenUsedAsAPlugin(){return!0}}class Cc extends(Be()){context;constructor(e){super(),this.context=e}destroy(){this.stopListening()}static get isContextPlugin(){return!0}static get isOfficialPlugin(){return!1}static get isPremiumPlugin(){return!1}}class Ac extends ro{editor;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)}}const xc="contentEditing",Ec="common";class Tc{keystrokeInfos=new Map;_editor;constructor(e){this._editor=e;const t=e.config.get("menuBar.isVisible"),o=e.locale.t;this.addKeystrokeInfoCategory({id:xc,label:o("Content editing keystrokes"),description:o("These keyboard shortcuts allow for quick access to content editing features.")});const i=[{label:o("Close contextual balloons, dropdowns, and dialogs"),keystroke:"Esc"},{label:o("Open the accessibility help dialog"),keystroke:"Alt+0"},{label:o("Move focus between form fields (inputs, buttons, etc.)"),keystroke:[["Tab"],["Shift+Tab"]]},{label:o("Move focus to the toolbar, navigate between toolbars"),keystroke:"Alt+F10",mayRequireFn:!0},{label:o("Navigate through the toolbar or menu bar"),keystroke:[["arrowup"],["arrowright"],["arrowdown"],["arrowleft"]]},{label:o("Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content."),keystroke:[["Enter"],["Space"]]}];t&&i.push({label:o("Move focus to the menu bar, navigate between menu bars"),keystroke:"Alt+F9",mayRequireFn:!0}),this.addKeystrokeInfoCategory({id:"navigation",label:o("User interface and content navigation keystrokes"),description:o("Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface."),groups:[{id:"common",keystrokes:i}]})}addKeystrokeInfoCategory({id:e,label:t,description:o,groups:i}){this.keystrokeInfos.set(e,{id:e,label:t,description:o,groups:new Map}),this.addKeystrokeInfoGroup({categoryId:e,id:Ec}),i&&i.forEach((t=>{this.addKeystrokeInfoGroup({categoryId:e,...t})}))}addKeystrokeInfoGroup({categoryId:e=xc,id:t,label:o,keystrokes:i}){const n=this.keystrokeInfos.get(e);if(!n)throw new fe("accessibility-unknown-keystroke-info-category",this._editor,{groupId:t,categoryId:e});n.groups.set(t,{id:t,label:o,keystrokes:i||[]})}addKeystrokeInfos({categoryId:e=xc,groupId:t=Ec,keystrokes:o}){if(!this.keystrokeInfos.has(e))throw new fe("accessibility-unknown-keystroke-info-category",this._editor,{categoryId:e,keystrokes:o});const i=this.keystrokeInfos.get(e);if(!i.groups.has(t))throw new fe("accessibility-unknown-keystroke-info-group",this._editor,{groupId:t,categoryId:e,keystrokes:o});i.groups.get(t).keystrokes.push(...o)}}function Pc(e){return Object.getPrototypeOf(e).constructor.editorName}function Sc(e){if(!e)return;const t=Array.isArray(e)?{items:e}:e,o=function e(t){return t.flatMap((t=>"string"==typeof t?[t]:e(t.items)))}(t.items||[]);return{isMultiline:o.includes("-"),shouldNotGroupWhenFull:!!t.shouldNotGroupWhenFull,items:(i=o,i.filter((e=>"|"!==e&&"-"!==e)))};var i}function Ic(){let e="unknown",t="unknown";return Y.isMac?e="mac":Y.isWindows?e="windows":Y.isiOS?e="ios":Y.isAndroid&&(e="android"),Y.isGecko?t="gecko":Y.isBlink?t="blink":Y.isSafari&&(t="safari"),{os:e,browser:t}}function Rc(){return localStorage.getItem("__ckeditor-session-id")||localStorage.setItem("__ckeditor-session-id",me()),localStorage.getItem("__ckeditor-session-id")}function Oc(){return J.window.CKEDITOR_PAGE_SESSION_ID=J.window.CKEDITOR_PAGE_SESSION_ID||me(),J.window.CKEDITOR_PAGE_SESSION_ID}class Vc extends(Be()){static get editorName(){return"Editor"}accessibility;commands;config;conversion;data;editing;locale;model;plugins;keystrokes;t;static defaultConfig;static builtinPlugins;_context;_readOnlyLocks;static get _throwErrorWhenUsedAsAPlugin(){return!0}constructor(e={}){if(super(),"object"!=typeof e||Array.isArray(e))throw new fe("editor-config-invalid-type");if("sanitizeHtml"in e)throw new fe("editor-config-sanitizehtml-not-supported");const t=this.constructor,{translations:o,...i}=t.defaultConfig||{},{translations:n=o,...s}=e,r=e.language||i.language;this._context=e.context||new vc({language:r,translations:n}),this._context._addEditor(this,!e.context);const a=Array.from(t.builtinPlugins||[]);this.config=new Ge(s,i),this.config.define("plugins",a),this.config.define(this._context._getEditorConfig()),function(e){let t=e.get("licenseKey");!t&&window.CKEDITOR_GLOBAL_LICENSE_KEY&&(t=window.CKEDITOR_GLOBAL_LICENSE_KEY,e.set("licenseKey",t));if(!t)throw new fe("license-key-missing")}(this.config),this.plugins=new kc(this,a,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this._readOnlyLocks=new Set,this.commands=new _c,this.set("state","initializing"),this.once("ready",(()=>this.state="ready"),{priority:"high"}),this.once("destroy",(()=>this.state="destroyed"),{priority:"high"}),this.model=new el(this.config),this.on("change:isReadOnly",(()=>{this.model.document.isReadOnly=this.isReadOnly}));const l=new pi;this.data=new Rr(this.model,l),this.editing=new hr(this.model,l),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new Or([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 Ac(this),this.keystrokes.listenTo(this.editing.view.document),this.accessibility=new Tc(this),function(e){const t=e.config.get("licenseKey"),o=window[Symbol.for("cke distribution")]||"sh";function i(t,o){e.enableReadOnlyMode(Symbol("invalidLicense")),e._showLicenseError(t,o)}if("GPL"==t)return void("cloud"==o&&i("distributionChannel"));const n=bo(t);if(!n)return void i("invalid");if(!function(e){return["exp","jti","vc"].every((t=>t in e))}(n))return void i("invalid");if(n.distributionChannel&&!Qt(n.distributionChannel).includes(o))return void i("distributionChannel");if(function(e){const t=Array.isArray(e)?e:[e],o=function(){const e=[];for(let t=0;t<256;t++){let o=t;for(let e=0;e<8;e++)1&o?o=3988292384^o>>>1:o>>>=1;e[t]=o}return e}();let i=-1;const n=t.map((e=>Array.isArray(e)?e.join(""):String(e))).join("");for(let e=0;e>>8^o[255&(i^n.charCodeAt(e))];return i=~i>>>0,i.toString(16).padStart(8,"0")}(function(e){return Object.getOwnPropertyNames(e).sort().filter((t=>"vc"!=t&&null!=e[t])).map((t=>e[t]))}(n))!=n.vc.toLowerCase())return void i("invalid");if(new Date(1e3*n.exp)<_e)return void i("expired");const s=n.licensedHosts;if(s&&s.length>0&&!function(e){const{hostname:t}=new URL(window.location.href);if(e.includes(t))return!0;const o=t.split(".");return e.filter((e=>e.includes("*"))).map((e=>e.split("."))).filter((e=>e.length<=o.length)).map((e=>Array(o.length-e.length).fill("*"===e[0]?"*":"").concat(e))).some((e=>o.every(((t,o)=>e[o]===t||"*"===e[o]))))}(s))return void i("domainLimit");if(["evaluation","trial"].includes(n.licenseType)&&1e3*n.exp{i("evaluationLimit")}),6e5);e.on("destroy",(()=>{clearTimeout(t)}))}n.usageEndpoint&&e.once("ready",(()=>{const o={requestId:me(),requestTime:Math.round(Date.now()/1e3),license:t,editor:Dc(e)};e._sendUsageRequest(n.usageEndpoint,o).then((e=>{const{status:t,message:o}=e;o&&console.warn(o),"ok"!=t&&i("usageLimit")}),(()=>{var e,t;e="license-key-validation-endpoint-not-reachable",t={url:n.usageEndpoint},console.error(...ye(e,t))}))}),{priority:"high"})}(this)}get isReadOnly(){return this._readOnlyLocks.size>0}set isReadOnly(e){throw new fe("editor-isreadonly-has-no-setter")}enableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new fe("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)||(this._readOnlyLocks.add(e),1===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!0,!1))}disableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new fe("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)&&(this._readOnlyLocks.delete(e),0===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!1,!0))}setData(e){this.data.set(e)}getData(e){return this.data.get(e)}initPlugins(){const e=this.config,t=e.get("plugins"),o=e.get("removePlugins")||[],i=e.get("extraPlugins")||[],n=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(i),o,n).then((e=>(function(e){const t=e.config.get("licenseKey");if("GPL"===t)return;const o=bo(t);if(!o)return;const i=[...e.plugins].map((([e])=>e)).find((e=>{return!!e.pluginName&&(!!e.licenseFeatureCode&&(t=o,i=e.licenseFeatureCode,(t.removeFeatures||[]).includes(i)));var t,i}));i&&(e.enableReadOnlyMode(Symbol("invalidLicense")),e._showLicenseError("pluginNotAllowed",i.pluginName))}(this),e)))}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,...t){try{return this.commands.execute(e,...t)}catch(e){fe.rethrowUnexpectedError(e,this)}}focus(){this.editing.view.focus()}static create(...e){throw new Error("This is an abstract method.")}static Context=vc;static EditorWatchdog=cc;static ContextWatchdog=mc;_showLicenseError(e,t){setTimeout((()=>{if("invalid"==e)throw new fe("invalid-license-key");if("expired"==e)throw new fe("license-key-expired");if("domainLimit"==e)throw new fe("license-key-domain-limit");if("pluginNotAllowed"==e){const e=t.replace(/(Editing|UI)$/,""),o=this.plugins.has(e);throw new fe("license-key-plugin-not-allowed",null,{pluginName:o?e:t})}if("featureNotAllowed"==e)throw new fe("license-key-feature-not-allowed",null,{featureName:t});if("evaluationLimit"==e)throw new fe("license-key-evaluation-limit");if("trialLimit"==e)throw new fe("license-key-trial-limit");if("developmentLimit"==e)throw new fe("license-key-development-limit");if("usageLimit"==e)throw new fe("license-key-usage-limit");if("distributionChannel"==e)throw new fe("license-key-invalid-distribution-channel")}),0),this._showLicenseError=()=>{}}async _sendUsageRequest(e,t){const o=new Headers({"Content-Type":"application/json"}),i=await fetch(new URL(e),{method:"POST",headers:o,body:JSON.stringify(t)});if(!i.ok)throw new Error(`HTTP Response: ${i.status}`);return i.json()}}function Dc(e){const t=function(e){return{sessionId:Rc(),pageSessionId:Oc(),hostname:window.location.hostname,version:globalThis.CKEDITOR_VERSION,type:Pc(e),plugins:(t=e.plugins,Array.from(t).filter((([e])=>!!e.pluginName)).map((([e])=>{const{pluginName:t,isContextPlugin:o,isOfficialPlugin:i,isPremiumPlugin:n}=e;return{isContext:!!o,isOfficial:!!i,isPremium:!!n,name:t}}))),distribution:{channel:window[Symbol.for("cke distribution")]||"sh"},env:Ic(),integration:Object.create(null),menuBar:{isVisible:!!e.config.get("menuBar.isVisible")},language:{ui:e.locale.uiLanguage,content:e.locale.contentLanguage},toolbar:{main:Sc(e.config.get("toolbar")),block:Sc(e.config.get("blockToolbar")),balloon:Sc(e.config.get("balloonToolbar"))}};var t}(e);return e.fire("collectUsageData",{setUsageData:function(e,o){if(void 0!==vo(t,e))throw new fe("editor-usage-data-path-already-set",{path:e});Ro(t,e,o)}}),t}function Fc(e){return class extends e{sourceElement;updateSourceElement(e){if(!this.sourceElement)throw new fe("editor-missing-sourceelement",this);const t=this.config.get("updateSourceElementOnDestroy"),o=this.sourceElement instanceof HTMLTextAreaElement;if(!t&&!o)return void wt(this.sourceElement,"");const i="string"==typeof e?e:this.data.get();wt(this.sourceElement,i)}}}function Mc(e,t,o="main",i=!1){const n=t.get("root"),s=t.get("roots")||Object.create(null);if(n){if(!o)throw new fe("editor-create-multi-root-with-main",null);if(o in s)throw new fe("editor-create-roots-with-main",null)}o&&!s[o]&&(s[o]=n||Object.create(null));const r=function(e){return!!e&&"object"==typeof e&&!Array.isArray(e)&&!Bc(e)}(e),a=function(e,t,o){return t||!o?e.get("initialData")||Object.create(null):{[o]:e.get("initialData")}}(t,r,o),l=Array.from(new Set([...r?Object.keys(e):[],...Object.keys(s),...Object.keys(a)]));for(const o of l){const n=s[o]||Object.create(null),l=r?e[o]:e;if(!i&&Bc(l)){if(n.element)throw new fe("editor-create-root-element-overspecified",null);n.element=l}if(i&&Bc(n.element)&&be("editor-create-root-element-not-supported"),void 0===n.initialData)if(void 0===a[o])n.initialData=Bc(d=l||n.element||i&&t.get("attachTo")||"")?(c=d)instanceof HTMLTextAreaElement?c.value:c.innerHTML:d;else{if(l&&!Bc(l))throw new fe("editor-create-initial-data-overspecified",null);n.initialData=a[o]}else{if(l&&!Bc(l))throw new fe("editor-create-root-initial-data-overspecified",null);if(void 0!==a[o])throw new fe("editor-create-legacy-initial-data-overspecified",null)}n.placeholder??=Nc(t,"placeholder",o),n.label??=Nc(t,"label",o),s[o]=n}var c,d;if(i&&Bc(e)){if(t.get("attachTo"))throw new fe("editor-create-attachto-overspecified",null);t.set("attachTo",e)}if(!i&&t.get("attachTo"))throw new fe("editor-create-attachto-ignored",null);t.set("roots",s)}function Nc(e,t,o){const i=e.get(t);if(i)return"string"==typeof i?i:i[o]}function Bc(e){return L(e)}class Lc extends Cc{_actions;static get pluginName(){return"PendingActions"}static get isOfficialPlugin(){return!0}init(){this.set("hasAny",!1),this._actions=new eo({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if("string"!=typeof e)throw new fe("pendingactions-add-invalid-message",this);const t=new(Be());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]()}}var zc='',jc='',qc='',$c='',Hc='',Wc='',Uc='',Kc='',Gc='',Jc='',Zc='',Qc='',Yc='',Xc='',ed='',td='',od='',id='',nd='';const sd={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(const e in sd)Object.freeze(sd[e]);const rd=Object.freeze(sd),ad=function(e){var t,o,i=[],n=1;if("number"==typeof e)return{space:"rgb",values:[e>>>16,(65280&e)>>>8,255&e],alpha:1};if("number"==typeof e)return{space:"rgb",values:[e>>>16,(65280&e)>>>8,255&e],alpha:1};if(e=String(e).toLowerCase(),rd[e])i=rd[e].slice(),o="rgb";else if("transparent"===e)n=0,o="rgb",i=[0,0,0];else if("#"===e[0]){var s=e.slice(1),r=s.length;n=1,r<=4?(i=[parseInt(s[0]+s[0],16),parseInt(s[1]+s[1],16),parseInt(s[2]+s[2],16)],4===r&&(n=parseInt(s[3]+s[3],16)/255)):(i=[parseInt(s[0]+s[1],16),parseInt(s[2]+s[3],16),parseInt(s[4]+s[5],16)],8===r&&(n=parseInt(s[6]+s[7],16)/255)),i[0]||(i[0]=0),i[1]||(i[1]=0),i[2]||(i[2]=0),o="rgb"}else if(t=/^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\s*\(([^\)]*)\)/.exec(e)){var a=t[1],l="cmyk"===(o=a.replace(/a$/,""))?4:"gray"===o?1:3;i=t[2].trim().split(/\s*[,\/]\s*|\s+/),"color"===o&&(o=i.shift()),n=(i=i.map((function(e,t){if("%"===e[e.length-1])return e=parseFloat(e)/100,3===t?e:"rgb"===o?255*e:"h"===o[0]?100*e:"l"!==o[0]||t?"lab"===o?125*e:"lch"===o?t<2?150*e:360*e:"o"!==o[0]||t?"oklab"===o?.4*e:"oklch"===o?t<2?.4*e:360*e:e:e:100*e;if("h"===o[t]||2===t&&"h"===o[o.length-1]){if(void 0!==ld[e])return ld[e];if(e.endsWith("deg"))return parseFloat(e);if(e.endsWith("turn"))return 360*parseFloat(e);if(e.endsWith("grad"))return 360*parseFloat(e)/400;if(e.endsWith("rad"))return 180*parseFloat(e)/Math.PI}return"none"===e?0:parseFloat(e)}))).length>l?i.pop():1}else/[0-9](?:\s|\/|,)/.test(e)&&(i=e.match(/([0-9]+)/g).map((function(e){return parseFloat(e)})),o=e.match(/([a-z])/gi)?.join("")?.toLowerCase()||"rgb");return{space:o,values:i,alpha:n}};var ld={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};const cd={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(const e in cd)Object.freeze(cd[e]);const dd=Object.freeze(cd),ud={};for(const e of Object.keys(dd))ud[dd[e]]=e;const hd={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},oklab:{channels:3,labels:["okl","oka","okb"]},lch:{channels:3,labels:"lch"},oklch:{channels:3,labels:["okl","okc","okh"]},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}},md=hd,gd=(6/29)**3;function pd(e){const t=e>.0031308?1.055*e**(1/2.4)-.055:12.92*e;return Math.min(Math.max(0,t),1)}function fd(e){return e>.04045?((e+.055)/1.055)**2.4:e/12.92}for(const e of Object.keys(hd)){if(!("channels"in hd[e]))throw new Error("missing channels property: "+e);if(!("labels"in hd[e]))throw new Error("missing channel labels property: "+e);if(hd[e].labels.length!==hd[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:o}=hd[e];delete hd[e].channels,delete hd[e].labels,Object.defineProperty(hd[e],"channels",{value:t}),Object.defineProperty(hd[e],"labels",{value:o})}function bd(e){const t=function(){const e={},t=Object.keys(md);for(let{length:o}=t,i=0;i0;){const e=o.pop(),i=Object.keys(md[e]);for(let{length:n}=i,s=0;s1&&(n-=1)}return[360*n,100*s,100*c]},hd.rgb.hwb=function(e){const t=e[0],o=e[1];let i=e[2];const n=hd.rgb.hsl(e)[0],s=1/255*Math.min(t,Math.min(o,i));return i=1-1/255*Math.max(t,Math.max(o,i)),[n,100*s,100*i]},hd.rgb.oklab=function(e){const t=fd(e[0]/255),o=fd(e[1]/255),i=fd(e[2]/255),n=Math.cbrt(.4122214708*t+.5363325363*o+.0514459929*i),s=Math.cbrt(.2119034982*t+.6806995451*o+.1073969566*i),r=Math.cbrt(.0883024619*t+.2817188376*o+.6299787005*i);return[100*(.2104542553*n+.793617785*s-.0040720468*r),100*(1.9779984951*n-2.428592205*s+.4505937099*r),100*(.0259040371*n+.7827717662*s-.808675766*r)]},hd.rgb.cmyk=function(e){const t=e[0]/255,o=e[1]/255,i=e[2]/255,n=Math.min(1-t,1-o,1-i);return[100*((1-t-n)/(1-n)||0),100*((1-o-n)/(1-n)||0),100*((1-i-n)/(1-n)||0),100*n]},hd.rgb.keyword=function(e){const t=ud[e];if(t)return t;let o,i=Number.POSITIVE_INFINITY;for(const t of Object.keys(dd)){const r=dd[t],a=(s=r,((n=e)[0]-s[0])**2+(n[1]-s[1])**2+(n[2]-s[2])**2);agd?o**(1/3):7.787*o+16/116,i=i>gd?i**(1/3):7.787*i+16/116,n=n>gd?n**(1/3):7.787*n+16/116;return[116*i-16,500*(o-i),200*(i-n)]},hd.hsl.rgb=function(e){const t=e[0]/360,o=e[1]/100,i=e[2]/100;let n,s;if(0===o)return s=255*i,[s,s,s];const r=i<.5?i*(1+o):i+o-i*o,a=2*i-r,l=[0,0,0];for(let e=0;e<3;e++)n=t+1/3*-(e-1),n<0&&n++,n>1&&n--,s=6*n<1?a+6*(r-a)*n:2*n<1?r:3*n<2?a+(r-a)*(2/3-n)*6:a,l[e]=255*s;return l},hd.hsl.hsv=function(e){const t=e[0];let o=e[1]/100,i=e[2]/100,n=o;const s=Math.max(i,.01);i*=2,o*=i<=1?i:2-i,n*=s<=1?s:2-s;return[t,100*(0===i?2*n/(s+n):2*o/(i+o)),100*((i+o)/2)]},hd.hsv.rgb=function(e){const t=e[0]/60,o=e[1]/100;let i=e[2]/100;const n=Math.floor(t)%6,s=t-Math.floor(t),r=255*i*(1-o),a=255*i*(1-o*s),l=255*i*(1-o*(1-s));switch(i*=255,n){case 0:return[i,l,r];case 1:return[a,i,r];case 2:return[r,i,l];case 3:return[r,a,i];case 4:return[l,r,i];case 5:return[i,r,a]}},hd.hsv.hsl=function(e){const t=e[0],o=e[1]/100,i=e[2]/100,n=Math.max(i,.01);let s,r;r=(2-o)*i;const a=(2-o)*n;return s=o*n,s/=a<=1?a:2-a,s=s||0,r/=2,[t,100*s,100*r]},hd.hwb.rgb=function(e){const t=e[0]/360;let o=e[1]/100,i=e[2]/100;const n=o+i;let s;n>1&&(o/=n,i/=n);const r=Math.floor(6*t),a=1-i;s=6*t-r,1&r&&(s=1-s);const l=o+s*(a-o);let c,d,u;switch(r){default:case 6:case 0:c=a,d=l,u=o;break;case 1:c=l,d=a,u=o;break;case 2:c=o,d=a,u=l;break;case 3:c=o,d=l,u=a;break;case 4:c=l,d=o,u=a;break;case 5:c=a,d=o,u=l}return[255*c,255*d,255*u]},hd.cmyk.rgb=function(e){const t=e[0]/100,o=e[1]/100,i=e[2]/100,n=e[3]/100;return[255*(1-Math.min(1,t*(1-n)+n)),255*(1-Math.min(1,o*(1-n)+n)),255*(1-Math.min(1,i*(1-n)+n))]},hd.xyz.rgb=function(e){const t=e[0]/100,o=e[1]/100,i=e[2]/100;let n,s,r;return n=3.2404542*t+-1.5371385*o+-.4985314*i,s=-.969266*t+1.8760108*o+.041556*i,r=.0556434*t+-.2040259*o+1.0572252*i,n=pd(n),s=pd(s),r=pd(r),[255*n,255*s,255*r]},hd.xyz.lab=function(e){let t=e[0],o=e[1],i=e[2];t/=95.047,o/=100,i/=108.883,t=t>gd?t**(1/3):7.787*t+16/116,o=o>gd?o**(1/3):7.787*o+16/116,i=i>gd?i**(1/3):7.787*i+16/116;return[116*o-16,500*(t-o),200*(o-i)]},hd.xyz.oklab=function(e){const t=e[0]/100,o=e[1]/100,i=e[2]/100,n=Math.cbrt(.8189330101*t+.3618667424*o-.1288597137*i),s=Math.cbrt(.0329845436*t+.9293118715*o+.0361456387*i),r=Math.cbrt(.0482003018*t+.2643662691*o+.633851707*i);return[100*(.2104542553*n+.793617785*s-.0040720468*r),100*(1.9779984951*n-2.428592205*s+.4505937099*r),100*(.0259040371*n+.7827717662*s-.808675766*r)]},hd.oklab.oklch=function(e){return hd.lab.lch(e)},hd.oklab.xyz=function(e){const t=e[0]/100,o=e[1]/100,i=e[2]/100,n=(.999999998*t+.396337792*o+.215803758*i)**3,s=(1.000000008*t-.105561342*o-.063854175*i)**3,r=(1.000000055*t-.089484182*o-1.291485538*i)**3;return[100*(1.227013851*n-.55779998*s+.281256149*r),100*(-.040580178*n+1.11225687*s-.071676679*r),100*(-.076381285*n-.421481978*s+1.58616322*r)]},hd.oklab.rgb=function(e){const t=e[0]/100,o=e[1]/100,i=e[2]/100,n=(t+.3963377774*o+.2158037573*i)**3,s=(t-.1055613458*o-.0638541728*i)**3,r=(t-.0894841775*o-1.291485548*i)**3;return[255*pd(4.0767416621*n-3.3077115913*s+.2309699292*r),255*pd(-1.2684380046*n+2.6097574011*s-.3413193965*r),255*pd(-.0041960863*n-.7034186147*s+1.707614701*r)]},hd.oklch.oklab=function(e){return hd.lch.lab(e)},hd.lab.xyz=function(e){let t,o,i;o=(e[0]+16)/116,t=e[1]/500+o,i=o-e[2]/200;const n=o**3,s=t**3,r=i**3;return o=n>gd?n:(o-16/116)/7.787,t=s>gd?s:(t-16/116)/7.787,i=r>gd?r:(i-16/116)/7.787,t*=95.047,o*=100,i*=108.883,[t,o,i]},hd.lab.lch=function(e){const t=e[0],o=e[1],i=e[2];let n;n=360*Math.atan2(i,o)/2/Math.PI,n<0&&(n+=360);return[t,Math.sqrt(o*o+i*i),n]},hd.lch.lab=function(e){const t=e[0],o=e[1],i=e[2]/360*2*Math.PI;return[t,o*Math.cos(i),o*Math.sin(i)]},hd.rgb.ansi16=function(e,t=null){const[o,i,n]=e;let s=null===t?hd.rgb.hsv(e)[2]:t;if(s=Math.round(s/50),0===s)return 30;let r=30+(Math.round(n/255)<<2|Math.round(i/255)<<1|Math.round(o/255));return 2===s&&(r+=60),r},hd.hsv.ansi16=function(e){return hd.rgb.ansi16(hd.hsv.rgb(e),e[2])},hd.rgb.ansi256=function(e){const t=e[0],o=e[1],i=e[2];if(t>>4==o>>4&&o>>4==i>>4)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;return 16+36*Math.round(t/255*5)+6*Math.round(o/255*5)+Math.round(i/255*5)},hd.ansi16.rgb=function(e){let t=(e=e[0])%10;if(0===t||7===t)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const o=.5*(Math.trunc(e>50)+1);return[(1&t)*o*255,(t>>1&1)*o*255,(t>>2&1)*o*255]},hd.ansi256.rgb=function(e){if((e=e[0])>=232){const t=10*(e-232)+8;return[t,t,t]}let t;e-=16;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},hd.rgb.hex=function(e){const t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".slice(t.length)+t},hd.hex.rgb=function(e){const t=e.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!t)return[0,0,0];let o=t[0];3===t[0].length&&(o=[...o].map((e=>e+e)).join(""));const i=Number.parseInt(o,16);return[i>>16&255,i>>8&255,255&i]},hd.rgb.hcg=function(e){const t=e[0]/255,o=e[1]/255,i=e[2]/255,n=Math.max(Math.max(t,o),i),s=Math.min(Math.min(t,o),i),r=n-s;let a;return a=r<=0?0:n===t?(o-i)/r%6:n===o?2+(i-t)/r:4+(t-o)/r,a/=6,a%=1,[360*a,100*r,100*(r<1?s/(1-r):0)]},hd.hsl.hcg=function(e){const t=e[1]/100,o=e[2]/100,i=o<.5?2*t*o:2*t*(1-o);let n=0;return i<1&&(n=(o-.5*i)/(1-i)),[e[0],100*i,100*n]},hd.hsv.hcg=function(e){const t=e[1]/100,o=e[2]/100,i=t*o;let n=0;return i<1&&(n=(o-i)/(1-i)),[e[0],100*i,100*n]},hd.hcg.rgb=function(e){const t=e[0]/360,o=e[1]/100,i=e[2]/100;if(0===o)return[255*i,255*i,255*i];const n=[0,0,0],s=t%1*6,r=s%1,a=1-r;let l=0;switch(Math.floor(s)){case 0:n[0]=1,n[1]=r,n[2]=0;break;case 1:n[0]=a,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=r;break;case 3:n[0]=0,n[1]=a,n[2]=1;break;case 4:n[0]=r,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=a}return l=(1-o)*i,[255*(o*n[0]+l),255*(o*n[1]+l),255*(o*n[2]+l)]},hd.hcg.hsv=function(e){const t=e[1]/100,o=t+e[2]/100*(1-t);let i=0;return o>0&&(i=t/o),[e[0],100*i,100*o]},hd.hcg.hsl=function(e){const t=e[1]/100,o=e[2]/100*(1-t)+.5*t;let i=0;return o>0&&o<.5?i=t/(2*o):o>=.5&&o<1&&(i=t/(2*(1-o))),[e[0],100*i,100*o]},hd.hcg.hwb=function(e){const t=e[1]/100,o=t+e[2]/100*(1-t);return[e[0],100*(o-t),100*(1-o)]},hd.hwb.hcg=function(e){const t=e[1]/100,o=1-e[2]/100,i=o-t;let n=0;return i<1&&(n=(o-i)/(1-i)),[e[0],100*i,100*n]},hd.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},hd.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},hd.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},hd.gray.hsl=function(e){return[0,0,e[0]]},hd.gray.hsv=hd.gray.hsl,hd.gray.hwb=function(e){return[0,100,e[0]]},hd.gray.cmyk=function(e){return[0,0,0,e[0]]},hd.gray.lab=function(e){return[e[0],0,0]},hd.gray.hex=function(e){const t=255&Math.round(e[0]/100*255),o=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".slice(o.length)+o},hd.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};const _d=function(e){const t=bd(e),o={},i=Object.keys(t);for(let{length:e}=i,n=0;n1&&(t=o),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}function Ad(e){const t=function(...t){const o=t[0];if(null==o)return o;o.length>1&&(t=o);const i=e(t);if("object"==typeof i)for(let{length:e}=i,t=0;te>o?o:eMath.round(o*e)/o,Pd=(Math.PI,e=>("#"===e[0]&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:4===e.length?Td(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:8===e.length?Td(parseInt(e.substring(6,8),16)/255,2):1})),Sd=({h:e,s:t,v:o,a:i})=>{const n=(200-t)*o/100;return{h:Td(e),s:Td(n>0&&n<200?t*o/100/(n<=100?n:200-n)*100:0),l:Td(n/2),a:Td(i,2)}},Id=e=>{const{h:t,s:o,l:i}=Sd(e);return`hsl(${t}, ${o}%, ${i}%)`},Rd=({h:e,s:t,v:o,a:i})=>{e=e/360*6,t/=100,o/=100;const n=Math.floor(e),s=o*(1-t),r=o*(1-(e-n)*t),a=o*(1-(1-e+n)*t),l=n%6;return{r:Td(255*[o,r,s,s,a,o][l]),g:Td(255*[a,o,o,r,s,s][l]),b:Td(255*[s,s,a,o,o,r][l]),a:Td(i,2)}},Od=e=>{const t=e.toString(16);return t.length<2?"0"+t:t},Vd=({r:e,g:t,b:o,a:i})=>{const n=i<1?Od(Td(255*i)):"";return"#"+Od(e)+Od(t)+Od(o)+n},Dd=({r:e,g:t,b:o,a:i})=>{const n=Math.max(e,t,o),s=n-Math.min(e,t,o),r=s?n===e?(t-o)/s:n===t?2+(o-e)/s:4+(e-t)/s:0;return{h:Td(60*(r<0?r+6:r)),s:Td(n?s/n*100:0),v:Td(n/255*100),a:i}},Fd=(e,t)=>{if(e===t)return!0;for(const o in e)if(e[o]!==t[o])return!1;return!0},Md={},Nd=e=>{let t=Md[e];return t||(t=document.createElement("template"),t.innerHTML=e,Md[e]=t),t},Bd=(e,t,o)=>{e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:o}))};let Ld=!1;const zd=e=>"touches"in e,jd=(e,t)=>{const o=zd(t)?t.touches[0]:t,i=e.el.getBoundingClientRect();Bd(e.el,"move",e.getMove({x:Ed((o.pageX-(i.left+window.pageXOffset))/i.width),y:Ed((o.pageY-(i.top+window.pageYOffset))/i.height)}))};class qd{constructor(e,t,o,i){const n=Nd(`
      `);e.appendChild(n.content.cloneNode(!0));const s=e.querySelector(`[part=${t}]`);s.addEventListener("mousedown",this),s.addEventListener("touchstart",this),s.addEventListener("keydown",this),this.el=s,this.xy=i,this.nodes=[s.firstChild,s]}set dragging(e){const t=e?document.addEventListener:document.removeEventListener;t(Ld?"touchmove":"mousemove",this),t(Ld?"touchend":"mouseup",this)}handleEvent(e){switch(e.type){case"mousedown":case"touchstart":if(e.preventDefault(),!(e=>!(Ld&&!zd(e)||(Ld||(Ld=zd(e)),0)))(e)||!Ld&&0!=e.button)return;this.el.focus(),jd(this,e),this.dragging=!0;break;case"mousemove":case"touchmove":e.preventDefault(),jd(this,e);break;case"mouseup":case"touchend":this.dragging=!1;break;case"keydown":((e,t)=>{const o=t.keyCode;o>40||e.xy&&o<37||o<33||(t.preventDefault(),Bd(e.el,"move",e.getMove({x:39===o?.01:37===o?-.01:34===o?.05:33===o?-.05:35===o?1:36===o?-1:0,y:40===o?.01:38===o?-.01:0},!0)))})(this,e)}}style(e){e.forEach(((e,t)=>{for(const o in e)this.nodes[t].style.setProperty(o,e[o])}))}}class $d extends qd{constructor(e){super(e,"hue",'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"',!1)}update({h:e}){this.h=e,this.style([{left:e/360*100+"%",color:Id({h:e,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuenow",`${Td(e)}`)}getMove(e,t){return{h:t?Ed(this.h+360*e.x,0,360):360*e.x}}}class Hd extends qd{constructor(e){super(e,"saturation",'aria-label="Color"',!0)}update(e){this.hsva=e,this.style([{top:100-e.v+"%",left:`${e.s}%`,color:Id(e)},{"background-color":Id({h:e.h,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuetext",`Saturation ${Td(e.s)}%, Brightness ${Td(e.v)}%`)}getMove(e,t){return{s:t?Ed(this.hsva.s+100*e.x,0,100):100*e.x,v:t?Ed(this.hsva.v-100*e.y,0,100):Math.round(100-100*e.y)}}}const Wd=Symbol("same"),Ud=Symbol("color"),Kd=Symbol("hsva"),Gd=Symbol("update"),Jd=Symbol("parts"),Zd=Symbol("css"),Qd=Symbol("sliders");class Yd extends HTMLElement{static get observedAttributes(){return["color"]}get[Zd](){return[':host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;display:flex;place-content:center center;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{content:"";width:100%;height:100%;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}',"[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}","[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}"]}get[Qd](){return[Hd,$d]}get color(){return this[Ud]}set color(e){if(!this[Wd](e)){const t=this.colorModel.toHsva(e);this[Gd](t),this[Ud]=e}}constructor(){super();const e=Nd(``),t=this.attachShadow({mode:"open"});t.appendChild(e.content.cloneNode(!0)),t.addEventListener("move",this),this[Jd]=this[Qd].map((e=>new e(t)))}connectedCallback(){if(this.hasOwnProperty("color")){const e=this.color;delete this.color,this.color=e}else this.color||(this.color=this.colorModel.defaultColor)}attributeChangedCallback(e,t,o){const i=this.colorModel.fromAttr(o);this[Wd](i)||(this.color=i)}handleEvent(e){const t=this[Kd],o={...t,...e.detail};let i;this[Gd](o),Fd(o,t)||this[Wd](i=this.colorModel.fromHsva(o))||(this[Ud]=i,Bd(this,"color-changed",{value:i}))}[Wd](e){return this.color&&this.colorModel.equal(e,this.color)}[Gd](e){this[Kd]=e,this[Jd].forEach((t=>t.update(e)))}}const Xd={defaultColor:"#000",toHsva:e=>Dd(Pd(e)),fromHsva:({h:e,s:t,v:o})=>Vd(Rd({h:e,s:t,v:o,a:1})),equal:(e,t)=>e.toLowerCase()===t.toLowerCase()||Fd(Pd(e),Pd(t)),fromAttr:e=>e};class eu extends Yd{get colorModel(){return Xd}}class tu extends eo{_parentElement;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 fe("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])}remove(e){return super.remove(e)}}class ou extends(xe()){ns;tag;text;attributes;children;eventListeners;_isRendered;_revertData;constructor(e){super(),Object.assign(this,mu(hu(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,intoFragment:!1,isApplying:!0,revertData:this._revertData}),e}revert(e){if(!this._revertData)throw new fe("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)yu(o)?yield o:_u(o)&&(yield*e(o))}(this)}static bind(e,t){return{to:(o,i)=>new nu({eventNameOrFunction:o,attribute:o,observable:e,emitter:t,callback:i}),if:(o,i,n)=>new su({observable:e,emitter:t,attribute:o,valueIfTrue:i,callback:n})}}static extend(e,t){if(e._isRendered)throw new fe("template-extend-render",[this,e]);bu(e,mu(hu(t)))}_renderNode(e){let t;if(t=e.node?this.tag&&this.text:this.tag?this.text:!this.text,t)throw new fe("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(""),ru(this.text)?this._bindToObservable({schema:this.text,updater:cu(t),data:e}):t.textContent=this.text.join(""),t}_renderAttributes(e){if(!this.attributes)return;const t=e.node,o=e.revertData;for(const i in this.attributes){const n=t.getAttribute(i),s=this.attributes[i];o&&(o.attributes[i]=n);const r=vu(s)?s[0].ns:null;if(ru(s)){const a=vu(s)?s[0].value:s;o&&Cu(i)&&a.unshift(n),this._bindToObservable({schema:a,updater:du(t,i,r),data:e})}else if("style"==i&&"string"!=typeof s[0])this._renderStyleAttribute(s[0],e);else{o&&n&&Cu(i)&&s.unshift(n);const e=s.map((e=>e&&e.value||e)).reduce(((e,t)=>e.concat(t)),[]).reduce(pu,"");wu(e)||t.setAttributeNS(r,i,e)}}}_renderStyleAttribute(e,t){const o=t.node;for(const i in e){const n=e[i];ru(n)?this._bindToObservable({schema:[n],updater:uu(o,i),data:t}):au(i)?o.style.setProperty(i,n):o.style[i]=n}}_renderElementChildren(e){const t=e.node,o=e.intoFragment?document.createDocumentFragment():t,i=e.isApplying;let n=0;for(const s of this.children)if(ku(s)){if(!i){s.setParent(t);for(const e of s)o.appendChild(e.element)}}else if(yu(s))i||(s.isRendered||s.render(),o.appendChild(s.element));else if(Qe(s))o.appendChild(s);else if(i){const t={children:[],bindings:[],attributes:{}};e.revertData.children.push(t),s._renderNode({intoFragment:!1,node:o.childNodes[n++],isApplying:!0,revertData:t})}else o.appendChild(s.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,n]=t.split("@");return o.activateDomEventListener(i,n,e)}));e.revertData&&e.revertData.bindings.push(o)}}_bindToObservable({schema:e,updater:t,data:o}){const i=o.revertData;lu(e,t,o);const n=e.filter((e=>!wu(e))).filter((e=>e.observable)).map((i=>i.activateAttributeListener(e,t,o)));i&&i.bindings.push(n)}_revertTemplateFromNode(e,t){for(const e of t.bindings)for(const t of e)t();if(t.text)return void(e.textContent=t.text);const o=e;for(const e in t.attributes){const i=t.attributes[e];null===i?o.removeAttribute(e):o.setAttribute(e,i)}for(let e=0;elu(e,t,o);return this.emitter.listenTo(this.observable,`change:${this.attribute}`,i),()=>{this.emitter.stopListening(this.observable,`change:${this.attribute}`,i)}}}class nu extends iu{eventNameOrFunction;constructor(e){super(e),this.eventNameOrFunction=e.eventNameOrFunction}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 su extends iu{valueIfTrue;constructor(e){super(e),this.valueIfTrue=e.valueIfTrue}getValue(e){return!wu(super.getValue(e))&&(this.valueIfTrue||!0)}}function ru(e){return!!e&&(e.value&&(e=e.value),Array.isArray(e)?e.some(ru):e instanceof iu)}function au(e){return/^--[a-zA-Z_-][\w-]*$/.test(e)}function lu(e,t,{node:o}){const i=function(e,t){return e.map((e=>e instanceof iu?e.getValue(t):e))}(e,o);let n;n=1==e.length&&e[0]instanceof su?i[0]:i.reduce(pu,""),wu(n)?t.remove():t.set(n)}function cu(e){return{set(t){e.textContent=t},remove(){e.textContent=""}}}function du(e,t,o){return{set(i){e.setAttributeNS(o,t,i)},remove(){e.removeAttributeNS(o,t)}}}function uu(e,t){return{set(o){au(t)?e.style.setProperty(t,o):e.style[t]=o},remove(){au(t)?e.style.removeProperty(t):e.style[t]=null}}}function hu(e){return N(e,(e=>{if(e&&(e instanceof iu||_u(e)||yu(e)||ku(e)))return e}))}function mu(e){if("string"==typeof e?e=function(e){return{text:[e]}}(e):e.text&&function(e){e.text=Qt(e.text)}(e),e.on&&(e.eventListeners=function(e){for(const t in e)gu(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=Qt(e[t].value)),gu(e,t)}(e.attributes);const t=[];if(e.children)if(ku(e.children))t.push(e.children);else for(const o of e.children)_u(o)||yu(o)||Qe(o)?t.push(o):t.push(new ou(o));e.children=t}return e}function gu(e,t){e[t]=Qt(e[t])}function pu(e,t){return wu(t)?e:wu(e)?t:`${e} ${t}`}function fu(e,t){for(const o in t)e[o]?e[o].push(...t[o]):e[o]=t[o]}function bu(e,t){if(t.attributes&&(e.attributes||(e.attributes={}),fu(e.attributes,t.attributes)),t.eventListeners&&(e.eventListeners||(e.eventListeners={}),fu(e.eventListeners,t.eventListeners)),t.text&&e.text.push(...t.text),t.children&&t.children.length){if(e.children.length!=t.children.length)throw new fe("ui-template-extend-children-mismatch",e);let o=0;for(const i of t.children)bu(e.children[o++],i)}}function wu(e){return!e&&0!==e}function yu(e){return e instanceof Au}function _u(e){return e instanceof ou}function ku(e){return e instanceof tu}function vu(e){return s(e[0])&&e[0].ns}function Cu(e){return"class"==e||"style"==e}class Au extends(et(Be())){element;isRendered;locale;t;template;_viewCollections;_unboundChildren;_bindTemplate;constructor(e){super(),this.element=null,this.isRendered=!1,this.locale=e,this.t=e&&e.t,this._viewCollections=new eo,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",((t,o)=>{o.locale=e,o.t=e&&e.t})),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=ou.bind(this,this)}createCollection(e){const t=new tu(e);return this._viewCollections.add(t),t}registerChild(e){Ue(e)||(e=[e]);for(const t of e)this._unboundChildren.add(t)}deregisterChild(e){Ue(e)||(e=[e]);for(const t of e)this._unboundChildren.remove(t)}setTemplate(e){this.template=new ou(e)}extendTemplate(e){ou.extend(this.template,e)}render(){if(this.isRendered)throw new fe("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)}}const xu={POLITE:"polite",ASSERTIVE:"assertive"};class Eu{editor;view;constructor(e){this.editor=e,e.once("ready",(()=>{for(const e of Object.values(xu))this.announce("",e)}))}announce(e,t=xu.POLITE){const o=this.editor;if(!o.ui.view)return;this.view||(this.view=new Tu(o.locale),o.ui.view.body.add(this.view));const{politeness:i,isUnsafeHTML:n}="string"==typeof t?{politeness:t}:t;let s=this.view.regionViews.find((e=>e.politeness===i));s||(s=new Pu(o,i),this.view.regionViews.add(s)),s.announce({announcement:e,isUnsafeHTML:n})}}class Tu extends Au{regionViews;constructor(e){super(e),this.regionViews=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-aria-live-announcer"]},children:this.regionViews})}}class Pu extends Au{politeness;_domConverter;_pruneAnnouncementsInterval;constructor(e,t){super(e.locale),this.setTemplate({tag:"div",attributes:{"aria-live":t,"aria-relevant":"additions"},children:[{tag:"ul",attributes:{class:["ck","ck-aria-live-region-list"]}}]}),e.on("destroy",(()=>{null!==this._pruneAnnouncementsInterval&&(clearInterval(this._pruneAnnouncementsInterval),this._pruneAnnouncementsInterval=null)})),this.politeness=t,this._domConverter=e.data.htmlProcessor.domConverter,this._pruneAnnouncementsInterval=setInterval((()=>{this.element&&this._listElement.firstChild&&this._listElement.firstChild.remove()}),5e3)}announce({announcement:e,isUnsafeHTML:t}){if(!e.trim().length)return;const o=document.createElement("li");t?this._domConverter.setContentOf(o,e):o.innerText=e,this._listElement.appendChild(o)}get _listElement(){return this.element.querySelector("ul")}}function Su({emitter:e,activator:t,callback:o,contextElements:i,listenerOptions:n}){e.listenTo(document,"mousedown",((e,n)=>{if(!t())return;const s="function"==typeof n.composedPath?n.composedPath():[],r="function"==typeof i?i():i;for(const e of r)if(e.contains(n.target)||s.includes(e))return;o()}),n)}function Iu(e){return class extends e{disableCssTransitions(){this._isCssTransitionsDisabled=!0}enableCssTransitions(){this._isCssTransitionsDisabled=!1}constructor(...e){super(...e),this.set("_isCssTransitionsDisabled",!1),this.initializeCssTransitionDisablerMixin()}initializeCssTransitionDisablerMixin(){this.template&&this.extendTemplate({attributes:{class:[this.bindTemplate.if("_isCssTransitionsDisabled","ck-transitions-disabled")]}})}}}function Ru(e){return class extends e{_onDragBound=this._onDrag.bind(this);_onDragEndBound=this._onDragEnd.bind(this);_lastDraggingCoordinates={x:0,y:0};constructor(...e){super(...e),this.on("render",(()=>{this._attachListeners()})),this.set("isDragging",!1)}_attachListeners(){this.listenTo(this.element,"mousedown",this._onDragStart.bind(this)),this.listenTo(this.element,"touchstart",this._onDragStart.bind(this))}_attachDragListeners(){this.listenTo(J.document,"mouseup",this._onDragEndBound),this.listenTo(J.document,"touchend",this._onDragEndBound),this.listenTo(J.document,"mousemove",this._onDragBound),this.listenTo(J.document,"touchmove",this._onDragBound)}_detachDragListeners(){this.stopListening(J.document,"mouseup",this._onDragEndBound),this.stopListening(J.document,"touchend",this._onDragEndBound),this.stopListening(J.document,"mousemove",this._onDragBound),this.stopListening(J.document,"touchmove",this._onDragBound)}_onDragStart(e,t){if(!this._isHandleElementPressed(t))return;this._attachDragListeners();let o=0,i=0;t instanceof MouseEvent?(o=t.clientX,i=t.clientY):(o=t.touches[0].clientX,i=t.touches[0].clientY),this._lastDraggingCoordinates={x:o,y:i},this.isDragging=!0}_onDrag(e,t){if(!this.isDragging)return void this._detachDragListeners();let o=0,i=0;t instanceof MouseEvent?(o=t.clientX,i=t.clientY):(o=t.touches[0].clientX,i=t.touches[0].clientY),t.preventDefault(),this.fire("drag",{deltaX:Math.round(o-this._lastDraggingCoordinates.x),deltaY:Math.round(i-this._lastDraggingCoordinates.y)}),this._lastDraggingCoordinates={x:o,y:i}}_onDragEnd(){this._detachDragListeners(),this.isDragging=!1}_isHandleElementPressed(e){return!!this.dragHandleElement&&(this.dragHandleElement===e.target||e.target instanceof HTMLElement&&this.dragHandleElement.contains(e.target))}}}function Ou({view:e}){e.listenTo(e.element,"submit",((t,o)=>{o.preventDefault(),e.fire("submit")}),{useCapture:!0})}function Vu({keystrokeHandler:e,focusTracker:t,gridItems:o,numberOfColumns:i,uiLanguageDirection:n}){const s="number"==typeof i?()=>i:i;function r(e){return i=>{const n=o.find((e=>e.element===t.focusedElement)),s=o.getIndex(n),r=e(s,o);o.get(r).focus(),i.stopPropagation(),i.preventDefault()}}function a(e,t){return e===t-1?0:e+1}function l(e,t){return 0===e?t-1:e-1}e.set("arrowright",r(((e,t)=>"rtl"===n?l(e,t.length):a(e,t.length)))),e.set("arrowleft",r(((e,t)=>"rtl"===n?a(e,t.length):l(e,t.length)))),e.set("arrowup",r(((e,t)=>{let o=e-s();return o<0&&(o=e+s()*Math.floor(t.length/s()),o>t.length-1&&(o-=s())),o}))),e.set("arrowdown",r(((e,t)=>{let o=e+s();return o>t.length-1&&(o=e%s()),o})))}class Du extends Au{id;constructor(e){super(e),this.set("text",void 0),this.set("for",void 0),this.id=`ck-editor__label_${me()}`;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 Fu extends Au{constructor(e,t){super(e);const o=e.t,i=new Du;i.text=o("Help Contents. To close this dialog press ESC."),this.setTemplate({tag:"div",attributes:{class:["ck","ck-accessibility-help-dialog__content"],"aria-labelledby":i.id,role:"document",tabindex:-1},children:[Ke(document,"p",{},o("Below, you can find a list of keyboard shortcuts that can be used in the editor.")),...this._createCategories(Array.from(t.values())),i]})}focus(){this.element.focus()}_createCategories(e){return e.map((e=>{const t=[Ke(document,"h3",{},e.label),...Array.from(e.groups.values()).map((e=>this._createGroup(e))).flat()];return e.description&&t.splice(1,0,Ke(document,"p",{},e.description)),Ke(document,"section",{},t)}))}_createGroup(e){const t=e.keystrokes.sort(((e,t)=>e.label.localeCompare(t.label))).map((e=>this._createGroupRow(e))).flat(),o=[Ke(document,"dl",{},t)];return e.label&&o.unshift(Ke(document,"h4",{},e.label)),o}_createGroupRow(e){const t=this.locale.t,o=Ke(document,"dt"),i=Ke(document,"dd"),n=function(e){if("string"==typeof e)return[[e]];if("string"==typeof e[0])return[e];return e}(e.keystroke),s=[];for(const e of n)s.push(e.map(Mu).join(""));return o.innerHTML=e.label,i.innerHTML=s.join(", ")+(e.mayRequireFn&&Y.isMac?` ${t("(may require Fn)")}`:""),[o,i]}}function Mu(e){return Ut(e).split("+").map((e=>`${e}`)).join("+")}class Nu extends Au{static presentationalAttributeNames=["alignment-baseline","baseline-shift","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-rendering","cursor","direction","display","dominant-baseline","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","image-rendering","letter-spacing","lighting-color","marker-end","marker-mid","marker-start","mask","opacity","overflow","paint-order","pointer-events","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-anchor","text-decoration","text-overflow","text-rendering","transform","unicode-bidi","vector-effect","visibility","white-space","word-spacing","writing-mode"];constructor(){super();const e=this.bindTemplate;this.set("content",""),this.set("viewBox","0 0 20 20"),this.set("fillColor",""),this.set("isColorInherited",!0),this.set("isVisible",!0),this.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon",e.if("isVisible","ck-hidden",(e=>!e)),"ck-reset_all-excluded",e.if("isColorInherited","ck-icon_inherit-color")],viewBox:e.to("viewBox"),"aria-hidden":!0}})}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");if(!e)throw new fe("ui-iconview-invalid-svg",this);const t=e.getAttribute("viewBox");t&&(this.viewBox=t);for(const{name:t,value:o}of Array.from(e.attributes))Nu.presentationalAttributeNames.includes(t)&&this.element.setAttribute(t,o);for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);for(;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}))}}class Bu extends Au{constructor(){super(),this.set({style:void 0,text:void 0,id:void 0});const e=this.bindTemplate;this.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:e.to("style"),id:e.to("id")},children:[{text:e.to("text")}]})}}class Lu extends Au{children;labelView;iconView;keystrokeView;_focusDelayed=null;constructor(e,t=new Bu){super(e);const o=this.bindTemplate,i=me();this.set("_ariaPressed",!1),this.set("_ariaChecked",!1),this.set("ariaLabel",void 0),this.set("ariaLabelledBy",`ck-editor__aria-label_${i}`),this.set("class",void 0),this.set("labelStyle",void 0),this.set("icon",void 0),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isVisible",!0),this.set("isToggleable",!1),this.set("keystroke",void 0),this.set("label",void 0),this.set("role",void 0),this.set("tabindex",-1),this.set("tooltip",!1),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.set("withKeystroke",!1),this.children=this.createCollection(),this.labelView=this._setupLabelView(t),this.iconView=new Nu,this.iconView.extendTemplate({attributes:{class:"ck-button__icon"}}),this.iconView.bind("content").to(this,"icon"),this.keystrokeView=this._createKeystrokeView(),this.bind("_tooltipString").to(this,"tooltip",this,"label",this,"keystroke",this._getTooltipString.bind(this));const n={tag:"button",attributes:{class:["ck","ck-button",o.to("class"),o.if("isEnabled","ck-disabled",(e=>!e)),o.if("isVisible","ck-hidden",(e=>!e)),o.to("isOn",(e=>e?"ck-on":"ck-off")),o.if("withText","ck-button_with-text"),o.if("withKeystroke","ck-button_with-keystroke")],role:o.to("role"),type:o.to("type",(e=>e||"button")),tabindex:o.to("tabindex"),"aria-checked":o.to("_ariaChecked"),"aria-pressed":o.to("_ariaPressed"),"aria-label":o.to("ariaLabel"),"aria-labelledby":o.to("ariaLabelledBy"),"aria-disabled":o.if("isEnabled",!0,(e=>!e)),"data-cke-tooltip-text":o.to("_tooltipString"),"data-cke-tooltip-position":o.to("tooltipPosition")},children:this.children,on:{click:o.to((e=>{this.isEnabled?this.fire("execute"):e.preventDefault()}))}};this.bind("_ariaPressed").to(this,"isOn",this,"isToggleable",this,"role",((e,t,o)=>!(!t||zu(o))&&String(!!e))),this.bind("_ariaChecked").to(this,"isOn",this,"isToggleable",this,"role",((e,t,o)=>!(!t||!zu(o))&&String(!!e))),Y.isSafari&&(this._focusDelayed||(this._focusDelayed=co((()=>this.focus()),0)),n.on.mousedown=o.to((()=>{this._focusDelayed()})),n.on.mouseup=o.to((()=>{this._focusDelayed.cancel()}))),this.setTemplate(n)}render(){super.render(),this.icon&&this.children.add(this.iconView),this.on("change:icon",((e,t,o,i)=>{o&&!i?this.children.add(this.iconView,0):!o&&i&&this.children.remove(this.iconView)})),this.children.add(this.labelView),this.withKeystroke&&this.keystroke&&this.children.add(this.keystrokeView)}focus(){this.element.focus()}destroy(){this._focusDelayed&&this._focusDelayed.cancel(),super.destroy()}_setupLabelView(e){return e.bind("text","style","id").to(this,"label","labelStyle","ariaLabelledBy"),e}_createKeystrokeView(){const e=new Au;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",(e=>Ut(e)))}]}),e}_getTooltipString(e,t,o){return e?"string"==typeof e?e:(o&&(o=Ut(o)),e instanceof Function?e(t,o):`${t}${o?` (${o})`:""}`):""}}function zu(e){switch(e){case"radio":case"checkbox":case"option":case"switch":case"menuitemcheckbox":case"menuitemradio":return!0;default:return!1}}class ju extends Au{children;iconView;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}),t.icon&&(this.iconView=new Nu,this.iconView.content=t.icon,this.children.add(this.iconView));const i=new Au(e);i.setTemplate({tag:"h2",attributes:{class:["ck","ck-form__header__label"],role:"presentation"},children:[{text:o.to("label")}]}),this.children.add(i)}}class qu extends(xe()){focusables;focusTracker;keystrokeHandler;actions;constructor(e){if(super(),this.focusables=e.focusables,this.focusTracker=e.focusTracker,this.keystrokeHandler=e.keystrokeHandler,this.actions=e.actions,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()}),e.keystrokeHandlerOptions)}this.on("forwardCycle",(()=>this.focusFirst()),{priority:"low"}),this.on("backwardCycle",(()=>this.focusLast()),{priority:"low"})}get first(){return this.focusables.find($u)||null}get last(){return this.focusables.filter($u).slice(-1)[0]||null}get next(){return this._getDomFocusableItem(1)}get previous(){return this._getDomFocusableItem(-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,1)}focusLast(){this._focus(this.last,-1)}focusNext(){const e=this.next;e&&this.focusables.getIndex(e)===this.current||e===this.first?this.fire("forwardCycle"):this._focus(e,1)}focusPrevious(){const e=this.previous;e&&this.focusables.getIndex(e)===this.current||e===this.last?this.fire("backwardCycle"):this._focus(e,-1)}chain(e){const t=()=>null===this.current?null:this.focusables.get(this.current);this.listenTo(e,"forwardCycle",(e=>{const o=t();this.focusNext(),o!==t()&&e.stop()}),{priority:"low"}),this.listenTo(e,"backwardCycle",(e=>{const o=t();this.focusPrevious(),o!==t()&&e.stop()}),{priority:"low"})}unchain(e){this.stopListening(e)}_focus(e,t){e&&this.focusTracker.focusedElement!==e.element&&e.focus(t)}_getDomFocusableItem(e){const t=this.focusables.length;if(!t)return null;const o=this.current;if(null===o)return this[1===e?"first":"last"];let i=this.focusables.get(o),n=(o+t+e)%t;do{const o=this.focusables.get(n);if($u(o)){i=o;break}n=(n+t+e)%t}while(n!==o);return i}}function $u(e){return Hu(e)&&Ct(e.element)}function Hu(e){return!(!("focus"in e)||"function"!=typeof e.focus)}class Wu extends Au{children;keystrokes;focusCycler;_focusTracker;_focusables;constructor(e){super(e),this.children=this.createCollection(),this.keystrokes=new ro,this._focusTracker=new oo,this._focusables=new tu,this.focusCycler=new qu({focusables:this._focusables,focusTracker:this._focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-dialog__actions"]},children:this.children})}render(){super.render(),this.keystrokes.listenTo(this.element)}setButtons(e){for(const t of e){const e=new Lu(this.locale);let o;for(o in e.on("execute",(()=>t.onExecute())),t.onCreate&&t.onCreate(e),t)"onExecute"!=o&&"onCreate"!=o&&e.set(o,t[o]);this.children.add(e)}this._updateFocusCyclableItems()}focus(e){-1===e?this.focusCycler.focusLast():this.focusCycler.focusFirst()}_updateFocusCyclableItems(){Array.from(this.children).forEach((e=>{this._focusables.add(e),this._focusTracker.add(e.element)}))}}class Uu extends Au{children;constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-dialog__content"]},children:this.children})}reset(){for(;this.children.length;)this.children.remove(0)}}const Ku="screen-center",Gu="editor-center",Ju="editor-top-side",Zu="editor-top-center",Qu="editor-bottom-center",Yu="editor-above-center",Xu="editor-below-center",eh=yt("px");class th extends(Ru(Au)){parts;headerView;closeButtonView;actionsView;static defaultOffset=15;contentView;keystrokes;focusTracker;wasMoved=!1;_getCurrentDomRoot;_getViewportOffset;_focusables;_focusCycler;constructor(e,{getCurrentDomRoot:t,getViewportOffset:o,keystrokeHandlerOptions:i}){super(e);const n=this.bindTemplate,s=e.t;this.set("className",""),this.set("ariaLabel",s("Editor dialog")),this.set("isModal",!1),this.set("position",Ku),this.set("_isVisible",!1),this.set("_isTransparent",!1),this.set("_top",0),this.set("_left",0),this._getCurrentDomRoot=t,this._getViewportOffset=o,this.decorate("moveTo"),this.parts=this.createCollection(),this.keystrokes=new ro,this.focusTracker=new oo,this._focusables=new tu,this._focusCycler=new qu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"},keystrokeHandlerOptions:i}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-dialog-overlay",n.if("isModal","ck-dialog-overlay__transparent",(e=>!e)),n.if("_isVisible","ck-hidden",(e=>!e))],tabindex:"-1"},children:[{tag:"div",attributes:{tabindex:"-1",class:["ck","ck-dialog",n.if("isModal","ck-dialog_modal"),n.to("className")],role:"dialog","aria-label":n.to("ariaLabel"),style:{top:n.to("_top",(e=>eh(e))),left:n.to("_left",(e=>eh(e))),visibility:n.if("_isTransparent","hidden")}},children:this.parts}]})}render(){super.render(),this.keystrokes.set("Esc",((e,t)=>{e.defaultPrevented||(this.fire("close",{source:"escKeyPress"}),t())})),this.on("drag",((e,{deltaX:t,deltaY:o})=>{this.wasMoved=!0,this.moveBy(t,o)})),this.listenTo(J.window,"resize",(()=>{this._isVisible&&!this.wasMoved&&this.updatePosition()})),this.listenTo(J.document,"scroll",(()=>{this._isVisible&&!this.wasMoved&&this.updatePosition()})),this.on("change:_isVisible",((e,t,o)=>{o&&(this._isTransparent=!0,setTimeout((()=>{this.updatePosition(),this._isTransparent=!1,this.focus()}),10))})),this.keystrokes.listenTo(this.element)}get dragHandleElement(){return this.headerView&&!this.isModal?this.headerView.element:null}setupParts({icon:e,title:t,hasCloseButton:o=!0,content:i,actionButtons:n}){t&&(this.headerView=new ju(this.locale,{icon:e}),o&&(this.closeButtonView=this._createCloseButton(),this.headerView.children.add(this.closeButtonView)),this.headerView.label=t,this.ariaLabel=t,this.parts.add(this.headerView,0)),i&&(i instanceof Au&&(i=[i]),this.contentView=new Uu(this.locale),this.contentView.children.addMany(i),this.parts.add(this.contentView)),n&&(this.actionsView=new Wu(this.locale),this.actionsView.setButtons(n),this.parts.add(this.actionsView)),this._updateFocusCyclableItems()}focus(){this._focusCycler.focusFirst()}moveTo(e,t){const o=this._getViewportRect(),i=this._getDialogRect();e+i.width>o.right&&(e=o.right-i.width),e{var t;this._focusables.add(e),this.focusTracker.add(e.element),Hu(t=e)&&"focusCycler"in t&&t.focusCycler instanceof qu&&this._focusCycler.chain(e.focusCycler)}))}_createCloseButton(){const e=new Lu(this.locale),t=this.locale.t;return e.set({label:t("Close"),tooltip:!0,icon:$c}),e.on("execute",(()=>this.fire("close",{source:"closeButton"}))),e}}class oh extends fc{view;static _visibleDialogPlugin;_onHide;static get pluginName(){return"Dialog"}static get isOfficialPlugin(){return!0}constructor(e){super(e);const t=e.t;this._initShowHideListeners(),this._initFocusToggler(),this._initMultiRootIntegration(),this.set({id:null,isOpen:!1}),e.accessibility.addKeystrokeInfos({categoryId:"navigation",keystrokes:[{label:t("Move focus in and out of an active dialog window"),keystroke:"Ctrl+F6",mayRequireFn:!0}]})}destroy(){super.destroy(),oh._visibleDialogPlugin===this&&this._unlockBodyScroll()}_initShowHideListeners(){this.on("show",((e,t)=>{this._show(t)})),this.on("show",((e,t)=>{t.onShow&&t.onShow(this)}),{priority:"low"}),this.on("hide",(()=>{oh._visibleDialogPlugin&&oh._visibleDialogPlugin._hide()})),this.on("hide",(()=>{this._onHide&&(this._onHide(this),this._onHide=void 0)}),{priority:"low"})}_initFocusToggler(){const e=this.editor;e.keystrokes.set("Ctrl+F6",((t,o)=>{this.isOpen&&!this.view.isModal&&(this.view.focusTracker.isFocused?e.editing.view.focus():this.view.focus(),o())}))}_initMultiRootIntegration(){const e=this.editor.model;e.document.on("change:data",(()=>{if(!this.view)return;const t=e.document.differ.getChangedRoots();for(const e of t)e.state&&this.view.updatePosition()}))}show(e){this.hide(),this.fire(`show:${e.id}`,e)}_show({id:e,icon:t,title:o,hasCloseButton:i=!0,content:n,actionButtons:s,className:r,isModal:a,position:l,onHide:c,keystrokeHandlerOptions:d}){const u=this.editor;this.view=new th(u.locale,{getCurrentDomRoot:()=>u.editing.view.getDomRoot(u.model.document.selection.anchor.root.rootName),getViewportOffset:()=>u.ui.viewportOffset,keystrokeHandlerOptions:d});const h=this.view;h.on("close",(()=>{this.hide()})),u.ui.view.body.add(h),u.keystrokes.listenTo(h.element),l||(l=a?Ku:Gu),a&&this._lockBodyScroll(),h.set({position:l,_isVisible:!0,className:r,isModal:a}),h.setupParts({icon:t,title:o,hasCloseButton:i,content:n,actionButtons:s}),this.id=e,c&&(this._onHide=c),this.isOpen=!0,oh._visibleDialogPlugin=this}hide(){oh._visibleDialogPlugin&&oh._visibleDialogPlugin.fire(`hide:${oh._visibleDialogPlugin.id}`)}_hide(){if(!this.view)return;const e=this.editor,t=this.view;t.isModal&&this._unlockBodyScroll(),t.contentView&&t.contentView.reset(),e.ui.view.body.remove(t),e.ui.focusTracker.remove(t.element),e.keystrokes.stopListening(t.element),t.destroy(),e.editing.view.focus(),this.id=null,this.isOpen=!1,oh._visibleDialogPlugin=null}_lockBodyScroll(){document.documentElement.classList.add("ck-dialog-scroll-locked")}_unlockBodyScroll(){document.documentElement.classList.remove("ck-dialog-scroll-locked")}}class ih extends Lu{_checkIconHolderView=new nh;constructor(e,t=new Bu){super(e,t),this.set({hasCheckSpace:!1,_hasCheck:this.isToggleable});const o=this.bindTemplate;this.extendTemplate({attributes:{class:["ck-list-item-button",o.if("isToggleable","ck-list-item-button_toggleable")]}}),this.bind("_hasCheck").to(this,"hasCheckSpace",this,"isToggleable",((e,t)=>e||t))}render(){super.render(),this._hasCheck&&this.children.add(this._checkIconHolderView,0),this._watchCheckIconHolderMount()}_watchCheckIconHolderMount(){this._checkIconHolderView.bind("isOn").to(this,"isOn",(e=>this.isToggleable&&e)),this.on("change:_hasCheck",((e,t,o)=>{const{children:i,_checkIconHolderView:n}=this;o?i.add(n,0):i.remove(n)}))}}class nh extends Au{children;_checkIconView=this._createCheckIconView();constructor(){super();const e=this.bindTemplate;this.children=this.createCollection(),this.set("isOn",!1),this.setTemplate({tag:"span",children:this.children,attributes:{class:["ck","ck-list-item-button__check-holder",e.to("isOn",(e=>e?"ck-on":"ck-off"))]}})}render(){super.render(),this.isOn&&this.children.add(this._checkIconView,0),this._watchCheckIconMount()}_watchCheckIconMount(){this.on("change:isOn",((e,t,o)=>{const{children:i,_checkIconView:n}=this;o&&!i.has(n)?i.add(n):!o&&i.has(n)&&i.remove(n)}))}_createCheckIconView(){const e=new Nu;return e.content=Hc,e.extendTemplate({attributes:{class:"ck-list-item-button__check-icon"}}),e}}class sh extends ih{constructor(e){super(e),this.set({withText:!0,withKeystroke:!0,tooltip:!1,role:"menuitem"}),this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item__button"]}})}}class rh extends fc{contentView=null;static get requires(){return[oh]}static get pluginName(){return"AccessibilityHelp"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t;e.ui.componentFactory.add("accessibilityHelp",(()=>{const e=this._createButton(Lu);return e.set({tooltip:!0,withText:!1,label:t("Accessibility help")}),e})),e.ui.componentFactory.add("menuBar:accessibilityHelp",(()=>{const e=this._createButton(sh);return e.label=t("Accessibility"),e})),e.keystrokes.set("Alt+0",((e,t)=>{this._toggleDialog(),t()})),this._setupRootLabels()}_createButton(e){const t=this.editor,o=t.plugins.get("Dialog"),i=new e(t.locale);return i.set({keystroke:"Alt+0",icon:zc,isToggleable:!0}),i.on("execute",(()=>this._toggleDialog())),i.bind("isOn").to(o,"id",(e=>"accessibilityHelp"===e)),i}_setupRootLabels(){const e=this.editor,t=e.editing.view,o=e.t;function i(e,t){const i=[t.getAttribute("aria-label"),o("Press %0 for help.",[Ut("Alt+0")])].filter((e=>e)).join(". ");e.setAttribute("aria-label",i,t)}e.ui.on("ready",(()=>{t.change((e=>{for(const o of t.document.roots)i(e,o)})),e.on("addRoot",((o,n)=>{const s=e.editing.view.document.getRoot(n.rootName);t.change((e=>i(e,s)))}),{priority:"low"})}))}_toggleDialog(){const e=this.editor,t=e.plugins.get("Dialog"),o=e.locale.t;this.contentView||(this.contentView=new Fu(e.locale,e.accessibility.keystrokeInfos)),"accessibilityHelp"===t.id?t.hide():t.show({id:"accessibilityHelp",className:"ck-accessibility-help-dialog",title:o("Accessibility help"),icon:zc,hasCloseButton:!0,content:this.contentView})}}class ah extends tu{locale;_bodyCollectionContainer;static _bodyWrapper;constructor(e,t=[]){super(t),this.locale=e}get bodyCollectionContainer(){return this._bodyCollectionContainer}attachToDom(){this._bodyCollectionContainer=new ou({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection,role:"application"},children:this}).render(),ah._bodyWrapper&&ah._bodyWrapper.isConnected||(ah._bodyWrapper=Ke(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(ah._bodyWrapper)),ah._bodyWrapper.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove(),ah._bodyWrapper&&!ah._bodyWrapper.childElementCount&&(ah._bodyWrapper.remove(),delete ah._bodyWrapper)}}const lh=yt("px"),ch={top:-99999,left:-99999,name:"arrowless",config:{withArrow:!1}};class dh extends Au{content;_pinWhenIsVisibleCallback;_resizeObserver;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",void 0),this._pinWhenIsVisibleCallback=null,this._resizeObserver=null,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",lh),left:t.to("left",lh)}},children:this.content})}destroy(){this.hide(),super.destroy()}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(e){const t=uh(e.target);if(t&&!Ct(t))return!1;this.show();const o=dh.defaultPositions,i=Object.assign({},{element:this.element,positions:[o.southArrowNorth,o.southArrowNorthMiddleWest,o.southArrowNorthMiddleEast,o.southArrowNorthWest,o.southArrowNorthEast,o.northArrowSouth,o.northArrowSouthMiddleWest,o.northArrowSouthMiddleEast,o.northArrowSouthWest,o.northArrowSouthEast,o.viewportStickyNorth],limiter:J.document.body,fitInViewport:!0},e),n=dh._getOptimalPosition(i)||ch,s=parseInt(n.left),r=parseInt(n.top),a=n.name,l=n.config||{},{withArrow:c=!0}=l;return this.top=r,this.left=s,this.position=a,this.withArrow=c,!0}pin(e){this.unpin(),this._startPinning(e)&&(this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(e):this._stopPinning()},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){if(!this.attachTo(e))return!1;let t=uh(e.target);const o=e.limiter?uh(e.limiter):J.document.body;if(this.listenTo(J.document,"scroll",((i,n)=>{const s=n.target,r=t&&s.contains(t),a=o&&s.contains(o);!r&&!a&&t&&o||this.attachTo(e)}),{useCapture:!0}),this.listenTo(J.window,"resize",(()=>{this.attachTo(e)})),!this._resizeObserver&&(t&&at(t)&&(t=t.parentElement),t)){const e=()=>{Ct(t)||this.unpin()};this._resizeObserver=new bt(t,e)}return!0}_stopPinning(){this.stopListening(J.document,"scroll"),this.stopListening(J.window,"resize"),this._resizeObserver&&(this._resizeObserver.destroy(),this._resizeObserver=null)}static generatePositions(e={}){const{sideOffset:t=dh.arrowSideOffset,heightOffset:o=dh.arrowHeightOffset,stickyVerticalOffset:i=dh.stickyVerticalOffset,config:n}=e;return{northWestArrowSouthWest:(e,o)=>({top:s(e,o),left:e.left-t,name:"arrow_sw",...n&&{config:n}}),northWestArrowSouthMiddleWest:(e,o)=>({top:s(e,o),left:e.left-.25*o.width-t,name:"arrow_smw",...n&&{config:n}}),northWestArrowSouth:(e,t)=>({top:s(e,t),left:e.left-t.width/2,name:"arrow_s",...n&&{config:n}}),northWestArrowSouthMiddleEast:(e,o)=>({top:s(e,o),left:e.left-.75*o.width+t,name:"arrow_sme",...n&&{config:n}}),northWestArrowSouthEast:(e,o)=>({top:s(e,o),left:e.left-o.width+t,name:"arrow_se",...n&&{config:n}}),northArrowSouthWest:(e,o)=>({top:s(e,o),left:e.left+e.width/2-t,name:"arrow_sw",...n&&{config:n}}),northArrowSouthMiddleWest:(e,o)=>({top:s(e,o),left:e.left+e.width/2-.25*o.width-t,name:"arrow_smw",...n&&{config:n}}),northArrowSouth:(e,t)=>({top:s(e,t),left:e.left+e.width/2-t.width/2,name:"arrow_s",...n&&{config:n}}),northArrowSouthMiddleEast:(e,o)=>({top:s(e,o),left:e.left+e.width/2-.75*o.width+t,name:"arrow_sme",...n&&{config:n}}),northArrowSouthEast:(e,o)=>({top:s(e,o),left:e.left+e.width/2-o.width+t,name:"arrow_se",...n&&{config:n}}),northEastArrowSouthWest:(e,o)=>({top:s(e,o),left:e.right-t,name:"arrow_sw",...n&&{config:n}}),northEastArrowSouthMiddleWest:(e,o)=>({top:s(e,o),left:e.right-.25*o.width-t,name:"arrow_smw",...n&&{config:n}}),northEastArrowSouth:(e,t)=>({top:s(e,t),left:e.right-t.width/2,name:"arrow_s",...n&&{config:n}}),northEastArrowSouthMiddleEast:(e,o)=>({top:s(e,o),left:e.right-.75*o.width+t,name:"arrow_sme",...n&&{config:n}}),northEastArrowSouthEast:(e,o)=>({top:s(e,o),left:e.right-o.width+t,name:"arrow_se",...n&&{config:n}}),southWestArrowNorthWest:e=>({top:r(e),left:e.left-t,name:"arrow_nw",...n&&{config:n}}),southWestArrowNorthMiddleWest:(e,o)=>({top:r(e),left:e.left-.25*o.width-t,name:"arrow_nmw",...n&&{config:n}}),southWestArrowNorth:(e,t)=>({top:r(e),left:e.left-t.width/2,name:"arrow_n",...n&&{config:n}}),southWestArrowNorthMiddleEast:(e,o)=>({top:r(e),left:e.left-.75*o.width+t,name:"arrow_nme",...n&&{config:n}}),southWestArrowNorthEast:(e,o)=>({top:r(e),left:e.left-o.width+t,name:"arrow_ne",...n&&{config:n}}),southArrowNorthWest:e=>({top:r(e),left:e.left+e.width/2-t,name:"arrow_nw",...n&&{config:n}}),southArrowNorthMiddleWest:(e,o)=>({top:r(e),left:e.left+e.width/2-.25*o.width-t,name:"arrow_nmw",...n&&{config:n}}),southArrowNorth:(e,t)=>({top:r(e),left:e.left+e.width/2-t.width/2,name:"arrow_n",...n&&{config:n}}),southArrowNorthMiddleEast:(e,o)=>({top:r(e),left:e.left+e.width/2-.75*o.width+t,name:"arrow_nme",...n&&{config:n}}),southArrowNorthEast:(e,o)=>({top:r(e),left:e.left+e.width/2-o.width+t,name:"arrow_ne",...n&&{config:n}}),southEastArrowNorthWest:e=>({top:r(e),left:e.right-t,name:"arrow_nw",...n&&{config:n}}),southEastArrowNorthMiddleWest:(e,o)=>({top:r(e),left:e.right-.25*o.width-t,name:"arrow_nmw",...n&&{config:n}}),southEastArrowNorth:(e,t)=>({top:r(e),left:e.right-t.width/2,name:"arrow_n",...n&&{config:n}}),southEastArrowNorthMiddleEast:(e,o)=>({top:r(e),left:e.right-.75*o.width+t,name:"arrow_nme",...n&&{config:n}}),southEastArrowNorthEast:(e,o)=>({top:r(e),left:e.right-o.width+t,name:"arrow_ne",...n&&{config:n}}),westArrowEast:(e,t)=>({top:e.top+e.height/2-t.height/2,left:e.left-t.width-o,name:"arrow_e",...n&&{config:n}}),eastArrowWest:(e,t)=>({top:e.top+e.height/2-t.height/2,left:e.right+o,name:"arrow_w",...n&&{config:n}}),viewportStickyNorth:(e,t,o)=>{const s=new ut(J.document.body).getIntersection(o.getVisible());if(!s)return null;const r=s.getVisible();return e.getIntersection(r)&&r.top-e.top-ithis._showBalloon()),50,{leading:!0});_lastFocusedEditableElement=null;_balloonClass;constructor(e,t={}){super(),this.editor=e,this._balloonClass=t.balloonClass,e.on("ready",(()=>this._handleEditorReady()))}destroy(){const e=this._balloonView;e&&(e.unpin(),this._balloonView=null),this._showBalloonThrottled.cancel(),this.stopListening()}_handleEditorReady(){const e=this.editor;this._isEnabled()&&e.ui.view&&(e.ui.focusTracker.on("change:isFocused",((e,t,o)=>{this._updateLastFocusedEditableElement(),o?this._showBalloon():this._hideBalloon()})),e.ui.focusTracker.on("change:focusedElement",((e,t,o)=>{this._updateLastFocusedEditableElement(),o&&this._showBalloon()})),e.ui.on("update",(()=>{this._showBalloonThrottled()})))}_getNormalizedConfig(){return{side:"ltr"===this.editor.locale.contentLanguageDirection?"right":"left",position:"border",verticalOffset:0,horizontalOffset:5}}_showBalloon(){const e=this._getBalloonAttachOptions();e&&(this._balloonView||(this._balloonView=this._createBalloonView()),this._balloonView.pin(e))}_hideBalloon(){this._balloonView&&this._balloonView.unpin()}_createBalloonView(){const e=this.editor,t=new dh,o=this._createBadgeContent();return t.content.add(o),this._balloonClass&&(t.class=this._balloonClass),e.ui.view.body.add(t),t}_getBalloonAttachOptions(){if(!this._lastFocusedEditableElement)return null;const e=this._getNormalizedConfig(),t="right"===e.side?function(e,t){return mh(e,t,((e,o)=>e.left+e.width-o.width-t.horizontalOffset))}(this._lastFocusedEditableElement,e):function(e,t){return mh(e,t,(e=>e.left+t.horizontalOffset))}(this._lastFocusedEditableElement,e);return{target:this._lastFocusedEditableElement,positions:[t]}}_updateLastFocusedEditableElement(){const e=this.editor,t=e.ui.focusTracker.isFocused,o=e.ui.focusTracker.focusedElement;if(!t||!o)return void(this._lastFocusedEditableElement=null);const i=Array.from(e.ui.getEditableElementsNames()).map((t=>e.ui.getEditableElement(t)));i.includes(o)?this._lastFocusedEditableElement=o:this._lastFocusedEditableElement=i[0]}}function mh(e,t,o){return(i,n)=>{const s=new ut(e);if(s.width<350||s.height<50)return null;let r;r="inside"===t.position?s.bottom-n.height:s.bottom-n.height/2,r-=t.verticalOffset;const a=o(s,n),l=i.clone().moveTo(a,r).getIntersection(n.clone().moveTo(a,r)).getVisible();return!l||l.getArea()\n',isColorInherited:!1}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-powered-by"],"aria-hidden":!0},children:[{tag:"a",attributes:{href:"https://ckeditor.com/powered-by-ckeditor/?utm_source=ckeditor&utm_medium=referral&utm_campaign=701Dn000000hVgmIAE_powered_by_ckeditor_logo",target:"_blank",tabindex:"-1"},children:[...t?[{tag:"span",attributes:{class:["ck","ck-powered-by__label"]},children:[t]}]:[],o],on:{dragstart:i.to((e=>e.preventDefault()))}}]})}}class fh extends Lu{toggleSwitchView;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 Au;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),e}}class bh extends(yh(Lu)){}class wh extends(yh(ih)){}function yh(e){return class extends e{_fileInputView;constructor(...e){super(...e),this._fileInputView=new _h(this.locale),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.on("execute",(()=>{this._fileInputView.open()})),this.extendTemplate({attributes:{class:"ck-file-dialog-button"}})}render(){super.render(),this.children.add(this._fileInputView)}}}class _h extends Au{constructor(e){super(e),this.set("acceptedType",void 0),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?.files?.length&&this.fire("done",this.element.files),this.element.value=""}))}})}open(){this.element.click()}}class kh extends Au{buttonView;children;constructor(e,t){super(e);const o=this.bindTemplate;this.set("isCollapsed",!1),this.set("label",""),this.buttonView=this._createButtonView(),this.children=this.createCollection(),this.set("_collapsibleAriaLabelUid",void 0),t&&this.children.addMany(t),this.setTemplate({tag:"div",attributes:{class:["ck","ck-collapsible",o.if("isCollapsed","ck-collapsible_collapsed")]},children:[this.buttonView,{tag:"div",attributes:{class:["ck","ck-collapsible__children"],role:"region",hidden:o.if("isCollapsed","hidden"),"aria-labelledby":o.to("_collapsibleAriaLabelUid")},children:this.children}]})}render(){super.render(),this._collapsibleAriaLabelUid=this.buttonView.labelView.element.id}focus(){this.buttonView.focus()}_createButtonView(){const e=new Lu(this.locale),t=e.bindTemplate;return e.set({withText:!0,icon:Uc}),e.extendTemplate({attributes:{"aria-expanded":t.to("isOn",(e=>String(e)))}}),e.bind("label").to(this),e.bind("isOn").to(this,"isCollapsed",(e=>!e)),e.on("execute",(()=>{this.isCollapsed=!this.isCollapsed})),e}}function vh(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 Ch(e){return e.map(Ah).filter((e=>!!e))}function Ah(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}`}}}}class xh extends Lu{constructor(e){super(e);const t=this.bindTemplate;this.set("color",void 0),this.set("hasBorder",!1),this.icon='',this.extendTemplate({attributes:{style:{backgroundColor:t.to("color",(e=>Y.isMediaForcedColors?null:e))},class:["ck","ck-color-grid__tile",t.if("hasBorder","ck-color-selector__color-tile_bordered")]}})}render(){super.render(),this.iconView.fillColor="hsl(0, 0%, 100%)"}}class Eh extends Au{columns;items;focusTracker;keystrokes;constructor(e,t){super(e);const o=t&&t.colorDefinitions?t.colorDefinitions:[];this.columns=t?.columns||5;const i={gridTemplateColumns:`repeat( ${this.columns}, 1fr)`};this.set("selectedColor",void 0),this.items=this.createCollection(),this.focusTracker=new oo,this.keystrokes=new ro,this.items.on("add",((e,t)=>{t.isOn=t.color===this.selectedColor})),o.forEach((e=>{const t=new xh;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),Vu({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:this.columns,uiLanguageDirection:this.locale?.uiLanguageDirection})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}}function Th(e,t){if(!e)return"";const o=Ph(e);if(!o)return"";if(o.space===t)return e;if(i=o,!Object.keys(xd).includes(i.space))return"";var i;const n=xd[o.space][t];if(!n)return"";return function(e,t){switch(t){case"hex":return`#${e}`;case"rgb":return`rgb(${e[0]}, ${e[1]}, ${e[2]})`;case"hsl":return`hsl(${e[0]}, ${e[1]}%, ${e[2]}%)`;case"hwb":return`hwb(${e[0]}, ${e[1]}, ${e[2]})`;case"lab":return`lab(${e[0]}% ${e[1]} ${e[2]})`;case"lch":return`lch(${e[0]}% ${e[1]} ${e[2]})`;default:return""}}(n("hex"===o.space?o.hexValue:o.values),t)}function Ph(e){if(e.startsWith("#")){const t=ad(e);return{space:"hex",values:t.values,hexValue:e,alpha:t.alpha}}const t=ad(e);return t.space?t:null}class Sh extends Au{fieldView;labelView;statusView;fieldWrapperChildren;constructor(e,t){super(e);const o=`ck-labeled-field-view-${me()}`,i=`ck-labeled-field-view-status-${me()}`;this.fieldView=t(this,o,i),this.set("label",void 0),this.set("isEnabled",!0),this.set("isEmpty",!0),this.set("isFocused",!1),this.set("errorText",null),this.set("infoText",null),this.set("class",void 0),this.set("placeholder",void 0),this.labelView=this._createLabelView(o),this.statusView=this._createStatusView(i),this.fieldWrapperChildren=this.createCollection([this.fieldView,this.labelView]),this.bind("_statusText").to(this,"errorText",this,"infoText",((e,t)=>e||t));const n=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",n.to("class"),n.if("isEnabled","ck-disabled",(e=>!e)),n.if("isEmpty","ck-labeled-field-view_empty"),n.if("isFocused","ck-labeled-field-view_focused"),n.if("placeholder","ck-labeled-field-view_placeholder"),n.if("errorText","ck-error")]},children:[{tag:"div",attributes:{class:["ck","ck-labeled-field-view__input-wrapper"]},children:this.fieldWrapperChildren},this.statusView]})}_createLabelView(e){const t=new Du(this.locale);return t.for=e,t.bind("text").to(this,"label"),t}_createStatusView(e){const t=new Au(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(e){this.fieldView.focus(e)}}class Ih extends Au{focusTracker;constructor(e){super(e),this.set("value",void 0),this.set("id",void 0),this.set("placeholder",void 0),this.set("tabIndex",void 0),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("ariaDescribedById",void 0),this.set("ariaLabel",void 0),this.focusTracker=new oo,this.bind("isFocused").to(this.focusTracker),this.set("isEmpty",!0);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck","ck-input",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"),tabindex:t.to("tabIndex"),readonly:t.to("isReadOnly"),"aria-invalid":t.if("hasError",!0),"aria-describedby":t.to("ariaDescribedById"),"aria-label":t.to("ariaLabel")},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()}))}destroy(){super.destroy(),this.focusTracker.destroy()}select(){this.element.select()}focus(){this.element.focus()}reset(){this.value=this.element.value="",this._updateIsEmpty()}_updateIsEmpty(){this.isEmpty=!this.element.value}_setDomElementValue(e){this.element.value=e||0===e?e:""}}class Rh extends Ih{constructor(e){super(e),this.set("inputMode","text");const t=this.bindTemplate;this.extendTemplate({attributes:{inputmode:t.to("inputMode")}})}}class Oh extends Rh{constructor(e){super(e),this.extendTemplate({attributes:{type:"text",class:["ck-input-text"]}})}}class Vh extends Rh{constructor(e,{min:t,max:o,step:i}={}){super(e);const n=this.bindTemplate;this.set("min",t),this.set("max",o),this.set("step",i),this.extendTemplate({attributes:{type:"number",class:["ck-input-number"],min:n.to("min"),max:n.to("max"),step:n.to("step")}})}}class Dh extends Au{children;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")],tabindex:"-1"},children:this.children,on:{selectstart:t.to((e=>{const t=e.target;t instanceof Element&&"input"===t.tagName.toLocaleLowerCase()||e.preventDefault()}))}})}focus(){if(this.children.length){const e=this.children.first;"function"==typeof e.focus?e.focus():be("ui-dropdown-panel-focus-child-missing-focus",{childView:this.children.first,dropdownPanel:this})}}focusLast(){if(this.children.length){const e=this.children.last;"function"==typeof e.focusLast?e.focusLast():e.focus()}}}class Fh extends Au{buttonView;panelView;focusTracker;keystrokes;listView;toolbarView;menuView;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",void 0),this.set("id",void 0),this.set("panelPosition","auto"),this.panelView.bind("isVisible").to(this,"isOpen"),this.keystrokes=new ro,this.focusTracker=new oo,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"],"data-cke-tooltip-disabled":i.to("isOpen")}})}render(){super.render(),this.focusTracker.add(this.buttonView.element),this.focusTracker.add(this.panelView.element),this.listenTo(this.buttonView,"open",(()=>{this.isOpen=!this.isOpen})),this.on("change:isOpen",((e,t,o)=>{if(o)if("auto"===this.panelPosition){const e=Fh._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions});this.panelView.position=e?e.name:this._defaultPanelPositionName}else this.panelView.position=this.panelPosition})),this.keystrokes.listenTo(this.element);const e=(e,t)=>{this.isOpen&&(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:n,northWest:s,southMiddleEast:r,southMiddleWest:a,northMiddleEast:l,northMiddleWest:c}=Fh.defaultPanelPositions;return"rtl"!==this.locale.uiLanguageDirection?[o,i,r,a,e,n,s,l,c,t]:[i,o,a,r,e,s,n,c,l,t]}get _defaultPanelPositionName(){return"rtl"===this.locale.uiLanguageDirection?"sw":"se"}static 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"})};static _getOptimalPosition=At}class Mh extends Lu{arrowView;constructor(e){super(e),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0,"aria-expanded":this.bindTemplate.to("isOn",(e=>String(e)))}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new Nu;return e.content=Uc,e.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),e}}class Nh extends Au{children;constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible",!0),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item",t.if("isVisible","ck-hidden",(e=>!e))],role:"presentation"},children:this.children})}focus(){this.children.first&&this.children.first.focus()}}class Bh extends Au{constructor(e){super(e),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}class Lh extends Au{labelView;items;children;constructor(e,t=new Du){super(e);const o=this.bindTemplate,i=new zh(e);this.set({label:"",isVisible:!0}),this.labelView=t,this.labelView.bind("text").to(this,"label"),this.children=this.createCollection(),this.children.addMany([this.labelView,i]),i.set({role:"group",ariaLabelledBy:t.id}),i.focusTracker.destroy(),i.keystrokes.destroy(),this.items=i.items,this.setTemplate({tag:"li",attributes:{role:"presentation",class:["ck","ck-list__group",o.if("isVisible","ck-hidden",(e=>!e))]},children:this.children})}focus(){if(this.items){const e=this.items.find((e=>!(e instanceof Bh)));e&&e.focus()}}}class zh extends Au{focusables;items;focusTracker;keystrokes;_focusCycler;_listItemGroupToChangeListeners=new WeakMap;constructor(e){super(e);const t=this.bindTemplate;this.focusables=new tu,this.items=this.createCollection(),this.focusTracker=new oo,this.keystrokes=new ro,this._focusCycler=new qu({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this.set("ariaLabel",void 0),this.set("ariaLabelledBy",void 0),this.set("role",void 0),this.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"],role:t.to("role"),"aria-label":t.to("ariaLabel"),"aria-labelledby":t.to("ariaLabelledBy")},children:this.items})}render(){super.render();for(const e of this.items)e instanceof Lh?this._registerFocusableItemsGroup(e):e instanceof Nh&&this._registerFocusableListItem(e);this.items.on("change",((e,t)=>{for(const e of t.removed)e instanceof Lh?this._deregisterFocusableItemsGroup(e):e instanceof Nh&&this._deregisterFocusableListItem(e);for(const e of Array.from(t.added).reverse())e instanceof Lh?this._registerFocusableItemsGroup(e,t.index):this._registerFocusableListItem(e,t.index)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}focusFirst(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}_registerFocusableListItem(e,t){this.focusTracker.add(e.element),this.focusables.add(e,t)}_deregisterFocusableListItem(e){this.focusTracker.remove(e.element),this.focusables.remove(e)}_getOnGroupItemsChangeCallback(e){return(t,o)=>{for(const e of o.removed)this._deregisterFocusableListItem(e);for(const t of Array.from(o.added).reverse())this._registerFocusableListItem(t,this.items.getIndex(e)+o.index)}}_registerFocusableItemsGroup(e,t){Array.from(e.items).forEach(((e,o)=>{const i=void 0!==t?t+o:void 0;this._registerFocusableListItem(e,i)}));const o=this._getOnGroupItemsChangeCallback(e);this._listItemGroupToChangeListeners.set(e,o),e.items.on("change",o)}_deregisterFocusableItemsGroup(e){for(const t of e.items)this._deregisterFocusableListItem(t);e.items.off("change",this._listItemGroupToChangeListeners.get(e)),this._listItemGroupToChangeListeners.delete(e)}}class jh extends Au{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}class qh extends Au{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__line-break"]}})}}function $h(e){if(Array.isArray(e))return{items:e,removeItems:[]};const t={items:[],removeItems:[]};return e?{...t,...e}:t}const Hh=(()=>({alignLeft:jc,bold:qc,importExport:'',paragraph:'',plus:'',text:'',threeVerticalDots:id,pilcrow:'',dragIndicator:''}))();class Wh extends Au{options;items;focusTracker;keystrokes;itemsView;children;focusables;_focusCycler;_behavior;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.set("role","toolbar"),this.set("isGrouping",!!this.options.shouldGroupWhenFull),this.items=this.createCollection(),this.focusTracker=new oo,this.keystrokes=new ro,this.set("class",void 0),this.set("isCompact",!1),this.set("isVertical",!1),this.itemsView=new Uh(e),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection();const n="rtl"===e.uiLanguageDirection;this._focusCycler=new qu({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[n?"arrowright":"arrowleft","arrowup"],focusNext:[n?"arrowleft":"arrowright","arrowdown"]}});const s=["ck","ck-toolbar",o.to("class"),o.if("isCompact","ck-toolbar_compact"),o.if("isGrouping","ck-toolbar_grouping"),o.if("isVertical","ck-toolbar_vertical")];var r;this.options.shouldGroupWhenFull&&this.options.isFloating&&s.push("ck-toolbar_floating"),this.setTemplate({tag:"div",attributes:{class:s,role:o.to("role"),"aria-label":o.to("ariaLabel"),style:{maxWidth:o.to("maxWidth")},tabindex:-1},children:this.children,on:{mousedown:(r=this,r.bindTemplate.to((e=>{e.target===r.element&&e.preventDefault()})))}}),this._behavior=this.options.shouldGroupWhenFull?new Gh(this):new Kh(this)}render(){super.render(),this.focusTracker.add(this.element);for(const e of this.items)this.focusTracker.add(e);this.items.on("add",((e,t)=>{this.focusTracker.add(t)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t)})),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(e,t,o){this.items.addMany(this._buildItemsFromConfig(e,t,o))}switchBehavior(e){this._behavior.type!==e&&(this._behavior.destroy(),this.itemsView.children.clear(),this.focusables.clear(),"dynamic"===e?(this._behavior=new Gh(this),this._behavior.render(this),this._behavior.refreshItems()):(this._behavior=new Kh(this),this._behavior.render(this)))}_buildItemsFromConfig(e,t,o){const i=$h(e),n=o||i.removeItems;return this._cleanItemsConfiguration(i.items,t,n).map((e=>s(e)?this._createNestedToolbarDropdown(e,t,n):"|"===e?new jh:"-"===e?new qh:t.create(e))).filter((e=>!!e))}_cleanItemsConfiguration(e,t,o){const i=e.filter(((e,i,n)=>"|"===e||-1===o.indexOf(e)&&("-"===e?!this.options.shouldGroupWhenFull||(be("toolbarview-line-break-ignored-when-grouping-items",n),!1):!(!s(e)&&!t.has(e))||(be("toolbarview-item-unavailable",{item:e}),!1))));return this._cleanSeparatorsAndLineBreaks(i)}_cleanSeparatorsAndLineBreaks(e){const t=e=>"-"!==e&&"|"!==e,o=e.length,i=e.findIndex(t);if(-1===i)return[];const n=o-e.slice().reverse().findIndex(t);return e.slice(i,n).filter(((e,o,i)=>{if(t(e))return!0;return!(o>0&&i[o-1]===e)}))}_createNestedToolbarDropdown(e,t,o){let{label:i,icon:n,items:s,tooltip:r=!0,withText:a=!1}=e;if(s=this._cleanItemsConfiguration(s,t,o),!s.length)return null;const l=Zh(this.locale);return i||be("toolbarview-nested-toolbar-dropdown-missing-label",e),l.class="ck-toolbar__nested-toolbar-dropdown",l.buttonView.set({label:i,tooltip:r,withText:!!a}),!1!==n?l.buttonView.icon=Hh[n]||n||id:l.buttonView.withText=!0,Qh(l,(()=>l.toolbarView._buildItemsFromConfig(s,t,o))),l}}class Uh extends Au{children;constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class Kh{type="static";constructor(e){e.isGrouping=!1,e.itemsView.children.bindTo(e.items).using((e=>e)),e.focusables.bindTo(e.items).using((e=>Hu(e)?e:null))}render(){}destroy(){}}class Gh{type="dynamic";view;viewChildren;viewFocusables;viewItemsView;viewFocusTracker;viewLocale;ungroupedItems;groupedItems;groupedItemsDropdown;resizeObserver=null;cachedPadding=null;shouldUpdateGroupingOnNextResize=!1;viewElement;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.view.isGrouping=!0,this.ungroupedItems=e.createCollection(),this.groupedItems=e.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),e.itemsView.children.bindTo(this.ungroupedItems).using((e=>e)),this.ungroupedItems.on("change",this._updateFocusCyclableItems.bind(this)),e.children.on("change",this._updateFocusCyclableItems.bind(this)),e.items.on("change",((e,t)=>{const o=t.index,i=Array.from(t.added);for(const e of t.removed)o>=this.ungroupedItems.length?this.groupedItems.remove(e):this.ungroupedItems.remove(e);for(let e=o;ethis.ungroupedItems.length?this.groupedItems.add(t,e-this.ungroupedItems.length):this.ungroupedItems.add(t,e)}this._updateGrouping()}))}render(e){this.viewElement=e.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(e)}destroy(){this.groupedItemsDropdown.destroy(),this.viewChildren.length>1&&(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last)),this.resizeObserver.destroy()}refreshItems(){const e=this.view;if(e.items.length){for(let t=0;ti.right-this.cachedPadding:o.left{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 jh),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=Zh(e);return o.class="ck-toolbar__grouped-dropdown",o.panelPosition="ltr"===e.uiLanguageDirection?"sw":"se",Qh(o,this.groupedItems),o.buttonView.set({label:t("Show more items"),tooltip:!0,tooltipPosition:"rtl"===e.uiLanguageDirection?"se":"sw",icon:id}),o}_updateFocusCyclableItems(){this.viewFocusables.clear(),this.ungroupedItems.map((e=>{Hu(e)&&this.viewFocusables.add(e)})),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}class Jh extends Au{children;actionView;arrowView;keystrokes;focusTracker;constructor(e,t){super(e);const o=this.bindTemplate;this.set("class",void 0),this.set("labelStyle",void 0),this.set("icon",void 0),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isToggleable",!1),this.set("isVisible",!0),this.set("keystroke",void 0),this.set("withKeystroke",!1),this.set("label",void 0),this.set("tabindex",-1),this.set("tooltip",!1),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.children=this.createCollection(),this.actionView=this._createActionView(t),this.arrowView=this._createArrowView(),this.keystrokes=new ro,this.focusTracker=new oo,this.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",o.to("class"),o.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())}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.actionView.focus()}_createActionView(e){const t=e||new Lu;return e||t.bind("icon","isEnabled","isOn","isToggleable","keystroke","label","tabindex","tooltip","tooltipPosition","type","withText").to(this),t.extendTemplate({attributes:{class:"ck-splitbutton__action"}}),t.delegate("execute").to(this),t}_createArrowView(){const e=new Lu,t=e.bindTemplate;return e.icon=Uc,e.extendTemplate({attributes:{class:["ck-splitbutton__arrow"],"data-cke-tooltip-disabled":t.to("isOn"),"aria-haspopup":!0,"aria-expanded":t.to("isOn",(e=>String(e)))}}),e.bind("isEnabled").to(this),e.bind("label").to(this),e.bind("tooltip").to(this),e.delegate("execute").to(this,"open"),e}}function Zh(e,t=Mh){const o="function"==typeof t?new t(e):t,i=new Dh(e),n=new Fh(e,o,i);return o.bind("isEnabled").to(n),o instanceof Jh?o.arrowView.bind("isOn").to(n,"isOpen"):o.bind("isOn").to(n,"isOpen"),function(e){(function(e){Su({emitter:e,activator:()=>e.isRendered&&e.isOpen,callback:()=>{e.isOpen=!1},contextElements:()=>[e.element,...om(e.focusTracker).filter((t=>!e.element.contains(t)))]})})(e),function(e){e.on("execute",(t=>{t.source instanceof fh||(e.isOpen=!1)}))}(e),function(e){e.focusTracker.on("change:isFocused",((t,o,i)=>{!i&&e.isOpen&&(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),function(e){e.on("change:isOpen",((t,o,i)=>{if(i)return;e.focusTracker.elements.some((e=>e.contains(J.document.activeElement)))&&e.buttonView.focus()}))}(e),function(e){e.on("change:isOpen",((t,o,i)=>{i&&e.panelView.focus()}),{priority:"low"})}(e)}(n),n}function Qh(e,t,o={}){e.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),e.isOpen?Yh(e,t,o):e.once("change:isOpen",(()=>Yh(e,t,o)),{priority:"highest"}),o.enableActiveItemFocusOnDropdownOpen&&tm(e,(()=>e.toolbarView.items.find((e=>e.isOn))))}function Yh(e,t,o){const i=e.locale,n=i.t,s=e.toolbarView=new Wh(i),r="function"==typeof t?t():t;s.ariaLabel=o.ariaLabel||n("Dropdown toolbar"),o.maxWidth&&(s.maxWidth=o.maxWidth),o.class&&(s.class=o.class),o.isCompact&&(s.isCompact=o.isCompact),o.isVertical&&(s.isVertical=!0),r instanceof tu?s.items.bindTo(r).using((e=>e)):s.items.addMany(r),e.panelView.children.add(s),e.focusTracker.add(s),s.items.delegate("execute").to(e)}function Xh(e,t,o={}){e.isOpen?em(e,t,o):e.once("change:isOpen",(()=>em(e,t,o)),{priority:"highest"}),tm(e,(()=>e.listView.items.find((e=>e instanceof Nh&&e.children.first.isOn))))}function em(e,t,o){const i=e.locale,n=e.listView=new zh(i),s="function"==typeof t?t():t;n.ariaLabel=o.ariaLabel,n.role=o.role,im(e,n.items,s,i),e.panelView.children.add(n),n.items.delegate("execute").to(e)}function tm(e,t){e.on("change:isOpen",(()=>{if(!e.isOpen)return;const o=t();o&&("function"==typeof o.focus?o.focus():be("ui-dropdown-focus-child-on-open-child-missing-focus",{view:o}))}),{priority:ge.low-10})}function om(e){return[...e.elements,...e.externalViews.flatMap((e=>om(e.focusTracker)))]}function im(e,t,o,i){!function(e){let t=0;const o=e=>e instanceof Nh&&e.children.first instanceof ih?e.children.first:null,i=e=>{const t=o(e);return t&&t.isToggleable?t:null},n=t=>{for(const i of e){const e=o(i);e&&(e.hasCheckSpace=t)}};e.on("change",((e,s)=>{const r=t>0;for(const e of s.removed)i(e)&&t--;for(const e of s.added){const i=o(e);i&&(i.isToggleable&&t++,i.hasCheckSpace=t>0)}const a=t>0;r!==a&&n(a)}))}(t),t.bindTo(o).using((t=>{if("separator"===t.type)return new Bh(i);if("group"===t.type){const o=new Lh(i);return o.set({label:t.label}),im(e,o.items,t.items,i),o.items.delegate("execute").to(e),o}if("button"===t.type||"switchbutton"===t.type){const e="menuitemcheckbox"===t.model.role||"menuitemradio"===t.model.role,o=new Nh(i);let n;return"button"===t.type?(n=new ih(i,t.labelView),n.set({isToggleable:e})):n=new fh(i),n.bind(...Object.keys(t.model)).to(t.model),n.delegate("execute").to(o),o.children.add(n),o}return null}))}const nm=(e,t,o)=>{const i=new Oh(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},sm=(e,t,o)=>{const i=new Vh(e.locale);return i.set({id:t,ariaDescribedById:o,inputMode:"numeric"}),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},rm=(e,t,o)=>{const i=Zh(e.locale);return i.set({id:t,ariaDescribedById:o}),i.bind("isEnabled").to(e),i};class am extends Au{hexInputRow;_debounceColorPickerEvent;_config;constructor(e,t={}){super(e),this.set({color:"",_hexColor:""}),this.hexInputRow=this._createInputRow();const o=this.createCollection();t.hideInput||o.add(this.hexInputRow),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker"],tabindex:-1},children:o}),this._config=t,this._debounceColorPickerEvent=zo((e=>{this.set("color",e),this.fire("colorSelected",{color:this.color})}),150,{leading:!0}),this.on("set:color",((e,t,o)=>{e.return=Th(o,this._config.format||"hsl")})),this.on("change:color",(()=>{this._hexColor=lm(this.color)})),this.on("change:_hexColor",(()=>{document.activeElement!==this.picker&&this.picker.setAttribute("color",this._hexColor),lm(this.color)!=lm(this._hexColor)&&(this.color=this._hexColor)}))}render(){var e,t;if(super.render(),e="hex-color-picker",t=eu,void 0===customElements.get(e)&&customElements.define(e,t),this.picker=J.document.createElement("hex-color-picker"),this.picker.setAttribute("class","hex-color-picker"),this.picker.setAttribute("tabindex","-1"),this._createSlidersView(),this.element){this.hexInputRow.element?this.element.insertBefore(this.picker,this.hexInputRow.element):this.element.appendChild(this.picker);const e=document.createElement("style");e.textContent='[role="slider"]:focus [part$="pointer"] {border: 1px solid #fff;outline: 1px solid var(--ck-color-focus-border);box-shadow: 0 0 0 2px #fff;}',this.picker.shadowRoot.appendChild(e)}this.picker.addEventListener("color-changed",(e=>{const t=e.detail.value;this._debounceColorPickerEvent(t)}))}focus(){if(!this._config.hideInput&&(Y.isGecko||Y.isiOS||Y.isSafari||Y.isBlink)){this.hexInputRow.children.get(1).focus()}this.slidersView.first.focus()}_createSlidersView(){const e=[...this.picker.shadowRoot.children].filter((e=>"slider"===e.getAttribute("role"))).map((e=>new cm(e)));this.slidersView=this.createCollection(),e.forEach((e=>{this.slidersView.add(e)}))}_createInputRow(){const e=this._createColorInput();return new um(this.locale,e)}_createColorInput(){const e=new Sh(this.locale,nm),{t}=this.locale;return e.set({label:t("HEX"),class:"color-picker-hex-input"}),e.fieldView.bind("value").to(this,"_hexColor",(t=>e.isFocused?e.fieldView.value:t.startsWith("#")?t.substring(1):t)),e.fieldView.on("input",(()=>{const t=e.fieldView.element.value;if(t){const e=hm(t);e&&this._debounceColorPickerEvent(e)}})),e}isValid(){const{t:e}=this.locale;return!!this._config.hideInput||(this.resetValidationStatus(),!!this.hexInputRow.getParsedColor()||(this.hexInputRow.inputView.errorText=e('Please enter a valid color (e.g. "ff0000").'),!1))}resetValidationStatus(){this.hexInputRow.inputView.errorText=null}}function lm(e){let t=function(e){if(!e)return"";const t=Ph(e);return t?"hex"===t.space?t.hexValue:Th(e,"hex"):"#000"}(e);return t||(t="#000"),4===t.length&&(t="#"+[t[1],t[1],t[2],t[2],t[3],t[3]].join("")),t.toLowerCase()}class cm extends Au{constructor(e){super(),this.element=e}focus(){this.element.focus()}}class dm extends Au{constructor(e){super(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker__hash-view"]},children:"#"})}}class um extends Au{children;inputView;constructor(e,t){super(e),this.inputView=t,this.children=this.createCollection([new dm,this.inputView]),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker__row"]},children:this.children})}getParsedColor(){return hm(this.inputView.fieldView.element.value)}}function hm(e){if(!e)return null;const t=e.trim().replace(/^#/,"");return[3,4,6,8].includes(t.length)&&/^(([0-9a-fA-F]{2}){3,4}|([0-9a-fA-F]){3,4})$/.test(t)?`#${t}`:null}class mm extends(Be(eo)){constructor(e){super(e),this.set("isEmpty",!0),this.on("change",(()=>{this.set("isEmpty",0===this.length)}))}add(e,t){return this.find((t=>t.color===e.color))?this:super.add(e,t)}hasColor(e){return!!this.find((t=>t.color===e))}}class gm extends Au{items;colorDefinitions;focusTracker;columns;documentColors;documentColorsCount;staticColorsGrid;documentColorsGrid;colorPickerButtonView;removeColorButtonView;_focusables;_documentColorsLabel;_removeButtonLabel;_colorPickerLabel;constructor(e,{colors:t,columns:o,removeButtonLabel:i,documentColorsLabel:n,documentColorsCount:s,colorPickerLabel:r,focusTracker:a,focusables:l}){super(e);const c=this.bindTemplate;this.set("isVisible",!0),this.focusTracker=a,this.items=this.createCollection(),this.colorDefinitions=t,this.columns=o,this.documentColors=new mm,this.documentColorsCount=s,this._focusables=l,this._removeButtonLabel=i,this._colorPickerLabel=r,this._documentColorsLabel=n,this.setTemplate({tag:"div",attributes:{class:["ck-color-grids-fragment",c.if("isVisible","ck-hidden",(e=>!e))]},children:this.items}),this.removeColorButtonView=this._createRemoveColorButton(),this.items.add(this.removeColorButtonView)}updateDocumentColors(e,t){const o=e.document,i=this.documentColorsCount;this.documentColors.clear();for(const n of o.getRoots()){const o=e.createRangeIn(n);for(const e of o.getItems())if(e.is("$textProxy")&&e.hasAttribute(t)&&(this._addColorToDocumentColors(e.getAttribute(t)),this.documentColors.length>=i))return}}updateSelectedColors(){const e=this.documentColorsGrid,t=this.staticColorsGrid,o=this.selectedColor;t.selectedColor=o,e&&(e.selectedColor=o)}render(){if(super.render(),this.staticColorsGrid=this._createStaticColorsGrid(),this.items.add(this.staticColorsGrid),this.documentColorsCount){const e=ou.bind(this.documentColors,this.documentColors),t=new Au(this.locale);t.setTemplate({tag:"span",attributes:{class:["ck","ck-color-grid__label",e.if("isEmpty","ck-hidden")]},children:[{text:this._documentColorsLabel}]}),this.items.add(t),this.documentColorsGrid=this._createDocumentColorsGrid(),this.items.add(this.documentColorsGrid)}this._createColorPickerButton(),this._addColorSelectorElementsToFocusTracker()}focus(){this.removeColorButtonView.focus()}destroy(){super.destroy()}addColorPickerButton(){this.colorPickerButtonView&&(this.items.add(this.colorPickerButtonView),this.focusTracker.add(this.colorPickerButtonView.element),this._focusables.add(this.colorPickerButtonView))}_addColorSelectorElementsToFocusTracker(){this.focusTracker.add(this.removeColorButtonView.element),this._focusables.add(this.removeColorButtonView),this.staticColorsGrid&&(this.focusTracker.add(this.staticColorsGrid.element),this._focusables.add(this.staticColorsGrid)),this.documentColorsGrid&&(this.focusTracker.add(this.documentColorsGrid.element),this._focusables.add(this.documentColorsGrid))}_createColorPickerButton(){this.colorPickerButtonView=new Lu,this.colorPickerButtonView.set({label:this._colorPickerLabel,withText:!0,icon:'',class:"ck-color-selector__color-picker"}),this.colorPickerButtonView.on("execute",(()=>{this.fire("colorPicker:show")}))}_createRemoveColorButton(){const e=new Lu;return e.set({withText:!0,icon:'',label:this._removeButtonLabel}),e.class="ck-color-selector__remove-color",e.on("execute",(()=>{this.fire("execute",{value:null,source:"removeColorButton"})})),e.render(),e}_createStaticColorsGrid(){const e=new Eh(this.locale,{colorDefinitions:this.colorDefinitions,columns:this.columns});return e.on("execute",((e,t)=>{this.fire("execute",{value:t.value,source:"staticColorsGrid"})})),e}_createDocumentColorsGrid(){const e=ou.bind(this.documentColors,this.documentColors),t=new Eh(this.locale,{columns:this.columns});return t.extendTemplate({attributes:{class:e.if("isEmpty","ck-hidden")}}),t.items.bindTo(this.documentColors).using((e=>{const t=new xh;return t.set({color:e.color,hasBorder:e.options?.hasBorder}),e.label&&t.set({label:e.label,tooltip:!0}),t.on("execute",(()=>{this.fire("execute",{value:e.color,source:"documentColorsGrid"})})),t})),this.documentColors.on("change:isEmpty",((e,o,i)=>{i&&(t.selectedColor=null)})),t}_addColorToDocumentColors(e){const t=this.colorDefinitions.find((t=>t.color===e));t?this.documentColors.add(Object.assign({},t)):this.documentColors.add({color:e,label:e,options:{hasBorder:!1}})}}class pm extends Au{items;colorPickerView;saveButtonView;cancelButtonView;actionBarView;focusTracker;keystrokes;_focusables;_colorPickerViewConfig;constructor(e,{focusTracker:t,focusables:o,keystrokes:i,colorPickerViewConfig:n}){super(e),this.items=this.createCollection(),this.focusTracker=t,this.keystrokes=i,this.set("isVisible",!1),this.set("selectedColor",void 0),this._focusables=o,this._colorPickerViewConfig=n;const s=this.bindTemplate,{saveButtonView:r,cancelButtonView:a}=this._createActionButtons();this.saveButtonView=r,this.cancelButtonView=a,this.actionBarView=this._createActionBarView({saveButtonView:r,cancelButtonView:a}),this.setTemplate({tag:"div",attributes:{class:["ck-color-picker-fragment",s.if("isVisible","ck-hidden",(e=>!e))]},children:this.items})}render(){super.render();const e=new am(this.locale,{...this._colorPickerViewConfig});this.colorPickerView=e,this.colorPickerView.render(),this.selectedColor&&(e.color=this.selectedColor),this.listenTo(this,"change:selectedColor",((t,o,i)=>{e.color=i})),this.items.add(this.colorPickerView),this.items.add(this.actionBarView),this._addColorPickersElementsToFocusTracker(),this._stopPropagationOnArrowsKeys(),this._executeOnEnterPress(),this._executeUponColorChange()}destroy(){super.destroy()}focus(){this.colorPickerView.focus()}resetValidationStatus(){this.colorPickerView.resetValidationStatus()}_executeOnEnterPress(){this.keystrokes.set("enter",(e=>{this.isVisible&&this.focusTracker.focusedElement!==this.cancelButtonView.element&&this.colorPickerView.isValid()&&(this.fire("execute",{value:this.selectedColor}),e.stopPropagation(),e.preventDefault())}))}_stopPropagationOnArrowsKeys(){const e=e=>e.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e)}_addColorPickersElementsToFocusTracker(){for(const e of this.colorPickerView.slidersView)this.focusTracker.add(e.element),this._focusables.add(e);const e=this.colorPickerView.hexInputRow.children.get(1);e.element&&(this.focusTracker.add(e.element),this._focusables.add(e)),this.focusTracker.add(this.saveButtonView.element),this._focusables.add(this.saveButtonView),this.focusTracker.add(this.cancelButtonView.element),this._focusables.add(this.cancelButtonView)}_createActionBarView({saveButtonView:e,cancelButtonView:t}){const o=new Au,i=this.createCollection();return i.add(e),i.add(t),o.setTemplate({tag:"div",attributes:{class:["ck","ck-color-selector_action-bar"]},children:i}),o}_createActionButtons(){const e=this.locale,t=e.t,o=new Lu(e),i=new Lu(e);return o.set({icon:Hc,class:"ck-button-save",type:"button",withText:!1,label:t("Accept")}),i.set({icon:$c,class:"ck-button-cancel",type:"button",withText:!1,label:t("Cancel")}),o.on("execute",(()=>{this.colorPickerView.isValid()&&this.fire("execute",{source:"colorPickerSaveButton",value:this.selectedColor})})),i.on("execute",(()=>{this.fire("colorPicker:cancel")})),{saveButtonView:o,cancelButtonView:i}}_executeUponColorChange(){this.colorPickerView.on("colorSelected",((e,t)=>{this.fire("execute",{value:t.color,source:"colorPicker"}),this.set("selectedColor",t.color)}))}}class fm extends Au{focusTracker;keystrokes;items;colorGridsFragmentView;colorPickerFragmentView;_focusCycler;_focusables;_colorPickerViewConfig;constructor(e,{colors:t,columns:o,removeButtonLabel:i,documentColorsLabel:n,documentColorsCount:s,colorPickerLabel:r,colorPickerViewConfig:a}){super(e),this.items=this.createCollection(),this.focusTracker=new oo,this.keystrokes=new ro,this._focusables=new tu,this._colorPickerViewConfig=a,this._focusCycler=new qu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.colorGridsFragmentView=new gm(e,{colors:t,columns:o,removeButtonLabel:i,documentColorsLabel:n,documentColorsCount:s,colorPickerLabel:r,focusTracker:this.focusTracker,focusables:this._focusables}),this.colorPickerFragmentView=new pm(e,{focusables:this._focusables,focusTracker:this.focusTracker,keystrokes:this.keystrokes,colorPickerViewConfig:a}),this.set("_isColorGridsFragmentVisible",!0),this.set("_isColorPickerFragmentVisible",!1),this.set("selectedColor",void 0),this.colorGridsFragmentView.bind("isVisible").to(this,"_isColorGridsFragmentVisible"),this.colorPickerFragmentView.bind("isVisible").to(this,"_isColorPickerFragmentVisible"),this.on("change:selectedColor",((e,t,o)=>{this.colorGridsFragmentView.set("selectedColor",o),this.colorPickerFragmentView.set("selectedColor",o)})),this.colorGridsFragmentView.on("change:selectedColor",((e,t,o)=>{this.set("selectedColor",o)})),this.colorPickerFragmentView.on("change:selectedColor",((e,t,o)=>{this.set("selectedColor",o)})),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-selector"]},children:this.items})}render(){super.render(),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}appendUI(){this._appendColorGridsFragment(),this._colorPickerViewConfig&&this._appendColorPickerFragment()}showColorPickerFragment(){this.colorPickerFragmentView.colorPickerView&&!this._isColorPickerFragmentVisible&&(this._isColorPickerFragmentVisible=!0,this.colorPickerFragmentView.focus(),this.colorPickerFragmentView.resetValidationStatus(),this._isColorGridsFragmentVisible=!1)}showColorGridsFragment(){this._isColorGridsFragmentVisible||(this._isColorGridsFragmentVisible=!0,this.colorGridsFragmentView.focus(),this._isColorPickerFragmentVisible=!1)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}updateDocumentColors(e,t){this.colorGridsFragmentView.updateDocumentColors(e,t)}updateSelectedColors(){this.colorGridsFragmentView.updateSelectedColors()}_appendColorGridsFragment(){this.items.length||(this.items.add(this.colorGridsFragmentView),this.colorGridsFragmentView.delegate("execute").to(this),this.colorGridsFragmentView.delegate("colorPicker:show").to(this))}_appendColorPickerFragment(){2!==this.items.length&&(this.items.add(this.colorPickerFragmentView),this.colorGridsFragmentView.colorPickerButtonView&&this.colorGridsFragmentView.colorPickerButtonView.on("execute",(()=>{this.showColorPickerFragment()})),this.colorGridsFragmentView.addColorPickerButton(),this.colorPickerFragmentView.delegate("execute").to(this),this.colorPickerFragmentView.delegate("colorPicker:cancel").to(this))}}class bm{editor;_components=new Map;constructor(e){this.editor=e}*names(){for(const e of this._components.values())yield e.originalName}add(e,t){this._components.set(wm(e),{callback:t,originalName:e})}create(e){if(!this.has(e))throw new fe("componentfactory-item-missing",this,{name:e});return this._components.get(wm(e)).callback(this.editor.locale)}has(e){return this._components.has(wm(e))}}function wm(e){return String(e).toLowerCase()}const ym="ck-tooltip";class _m extends(et()){tooltipTextView;balloonPanelView;static defaultBalloonPositions=dh.generatePositions({heightOffset:5,sideOffset:13});_currentElementWithTooltip=null;_currentTooltipPosition=null;_mutationObserver=null;_pinTooltipDebounced;_unpinTooltipDebounced;_watchdogExcluded;static _editors=new Set;static _instance=null;constructor(e){if(super(),_m._editors.add(e),_m._instance)return _m._instance;_m._instance=this,this.tooltipTextView=new Au(e.locale),this.tooltipTextView.set("text",""),this.tooltipTextView.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:this.tooltipTextView.bindTemplate.to("text")}]}),this.balloonPanelView=new dh(e.locale),this.balloonPanelView.class=ym,this.balloonPanelView.content.add(this.tooltipTextView),this._mutationObserver=function(e){const t=new MutationObserver((()=>{e()}));return{attach(e){t.observe(e,{attributes:!0,attributeFilter:["data-cke-tooltip-text","data-cke-tooltip-position"]})},detach(){t.disconnect()}}}((()=>{this._updateTooltipPosition()})),this._pinTooltipDebounced=zo(this._pinTooltip,600),this._unpinTooltipDebounced=zo(this._unpinTooltip,400),this.listenTo(J.document,"keydown",this._onKeyDown.bind(this),{useCapture:!0}),this.listenTo(J.document,"mouseenter",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(J.document,"mouseleave",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(J.document,"focus",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(J.document,"blur",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(J.document,"scroll",this._onScroll.bind(this),{useCapture:!0}),this._watchdogExcluded=!0}destroy(e){const t=e.ui.view&&e.ui.view.body;_m._editors.delete(e),this.stopListening(e.ui),t&&t.has(this.balloonPanelView)&&t.remove(this.balloonPanelView),_m._editors.size||(this._unpinTooltip(),this.balloonPanelView.destroy(),this.stopListening(),_m._instance=null)}static getPositioningFunctions(e){const t=_m.defaultBalloonPositions;return{s:[t.southArrowNorth,t.southArrowNorthEast,t.southArrowNorthWest],n:[t.northArrowSouth],e:[t.eastArrowWest],w:[t.westArrowEast],sw:[t.southArrowNorthEast],se:[t.southArrowNorthWest]}[e]}_onKeyDown(e,t){"Escape"===t.key&&this._currentElementWithTooltip&&(this._unpinTooltip(),t.stopPropagation())}_onEnterOrFocus(e,{target:t}){const o=km(t);o?o!==this._currentElementWithTooltip?(this._unpinTooltip(),"focus"===e.name&&!o.matches(":hover")||o.matches("[data-cke-tooltip-instant]")?this._pinTooltip(o,vm(o)):this._pinTooltipDebounced(o,vm(o))):this._unpinTooltipDebounced.cancel():"focus"===e.name&&this._unpinTooltip()}_onLeaveOrBlur(e,{target:t,relatedTarget:o}){if("mouseleave"===e.name){if(!L(t))return;const e=this.balloonPanelView.element,i=e&&(e===o||e.contains(o)),n=!i&&t===e;if(i)return void this._unpinTooltipDebounced.cancel();if(!n&&this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;const s=km(t),r=km(o);(n||s&&s!==r)&&(this._pinTooltipDebounced.cancel(),this._currentElementWithTooltip&&this._currentElementWithTooltip.matches("[data-cke-tooltip-instant]")||s&&s.matches("[data-cke-tooltip-instant]")?this._unpinTooltip():this._unpinTooltipDebounced())}else{if(this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;this._pinTooltipDebounced.cancel(),this._unpinTooltipDebounced()}}_onScroll(e,{target:t}){this._currentElementWithTooltip&&(t.contains(this.balloonPanelView.element)&&t.contains(this._currentElementWithTooltip)||this._unpinTooltip())}_pinTooltip(e,{text:t,position:o,cssClass:i}){this._unpinTooltip();const n=to(_m._editors.values()).ui.view.body;n.has(this.balloonPanelView)||n.add(this.balloonPanelView),this.tooltipTextView.text=t,this.balloonPanelView.class=[ym,i].filter((e=>e)).join(" "),this.balloonPanelView.pin({target:e,positions:_m.getPositioningFunctions(o)}),this._mutationObserver.attach(e);for(const e of _m._editors)this.listenTo(e.ui,"update",this._updateTooltipPosition.bind(this),{priority:"low"});this._currentElementWithTooltip=e,this._currentTooltipPosition=o}_unpinTooltip(){this._unpinTooltipDebounced.cancel(),this._pinTooltipDebounced.cancel(),this.balloonPanelView.unpin();for(const e of _m._editors)this.stopListening(e.ui,"update");this._currentElementWithTooltip=null,this._currentTooltipPosition=null,this.tooltipTextView.text="",this._mutationObserver.detach()}_updateTooltipPosition(){if(!this._currentElementWithTooltip)return;const e=vm(this._currentElementWithTooltip);Ct(this._currentElementWithTooltip)&&e.text?this.balloonPanelView.pin({target:this._currentElementWithTooltip,positions:_m.getPositioningFunctions(e.position)}):this._unpinTooltip()}}function km(e){return L(e)?e.closest("[data-cke-tooltip-text]:not([data-cke-tooltip-disabled])"):null}function vm(e){return{text:e.dataset.ckeTooltipText,position:e.dataset.ckeTooltipPosition||"s",cssClass:e.dataset.ckeTooltipClass||""}}class Cm extends hh{licenseTypeMessage={evaluation:"For evaluation purposes only",trial:"For evaluation purposes only",development:"For development purposes only"};constructor(e){super(e,{balloonClass:"ck-evaluation-badge-balloon"})}_isEnabled(){const e=xm(this.editor.config.get("licenseKey"));return Boolean(e&&this.licenseTypeMessage[e])}_createBadgeContent(){const e=xm(this.editor.config.get("licenseKey"));return new Am(this.editor.locale,this.licenseTypeMessage[e])}_getNormalizedConfig(){const e=super._getNormalizedConfig(),t=this.editor.config.get("ui.poweredBy")||{};return{position:t.position||e.position,side:"left"===(t.side||e.side)?"right":"left",verticalOffset:e.verticalOffset,horizontalOffset:e.horizontalOffset}}}class Am extends Au{constructor(e,t){super(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-evaluation-badge"],"aria-hidden":!0},children:[{tag:"span",attributes:{class:["ck","ck-evaluation-badge__label"]},children:[t]}]})}}function xm(e){if("GPL"==e)return"GPL";const t=uo(e.split(".")[1]);return t?t.licenseType||"production":null}class Em extends Nh{constructor(e,t){super(e);const o=this.bindTemplate;this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item"]},on:{mouseenter:o.to("mouseenter")}}),this.delegate("mouseenter").to(t)}}const Tm={toggleMenusAndFocusItemsOnHover(e){e.on("menu:mouseenter",(t=>{if(e.isFocusBorderEnabled||e.isOpen){if(e.isOpen)for(const o of e.menus){const e=t.path[0],i=e instanceof Em&&e.children.first===o;o.isOpen=(t.path.includes(o)||i)&&o.isEnabled}t.source.focus()}}))},focusCycleMenusOnArrows(e){const t="rtl"===e.locale.uiLanguageDirection;function o(t,o){const i=e.children.getIndex(t),n=t.isOpen,s=e.children.length,r=e.children.get((i+s+o)%s);t.isOpen=!1,n&&(r.isOpen=!0),r.buttonView.focus()}e.on("menu:arrowright",(e=>{o(e.source,t?-1:1)})),e.on("menu:arrowleft",(e=>{o(e.source,t?1:-1)}))},closeMenusWhenTheBarCloses(e){e.on("change:isOpen",(()=>{e.isOpen||e.menus.forEach((e=>{e.isOpen=!1}))}))},closeMenuWhenAnotherOnTheSameLevelOpens(e){e.on("menu:change:isOpen",((t,o,i)=>{i&&e.menus.filter((e=>t.source.parentMenuView===e.parentMenuView&&t.source!==e&&e.isOpen)).forEach((e=>{e.isOpen=!1}))}))},closeOnClickOutside(e){Su({emitter:e,activator:()=>e.isOpen,callback:()=>e.close(),contextElements:()=>e.children.map((e=>e.element))})},enableFocusHighlightOnInteraction(e){let t=!1;e.on("change:isOpen",((o,i,n)=>{n||(t||(e.isFocusBorderEnabled=!1),t=!1)})),e.listenTo(e.element,"keydown",(()=>{t=!0}),{useCapture:!0}),e.listenTo(e.element,"keyup",(()=>{t=!1}),{useCapture:!0}),e.listenTo(e.element,"focus",(()=>{t&&(e.isFocusBorderEnabled=!0)}),{useCapture:!0})}},Pm={openAndFocusPanelOnArrowDownKey(e){e.keystrokes.set("arrowdown",((t,o)=>{e.isEnabled&&e.focusTracker.focusedElement===e.buttonView.element&&(e.isOpen||(e.isOpen=!0),e.panelView.focus(),o())}))},openOnArrowRightKey(e){const t="rtl"===e.locale.uiLanguageDirection?"arrowleft":"arrowright";e.keystrokes.set(t,((t,o)=>{e.focusTracker.focusedElement===e.buttonView.element&&e.isEnabled&&(e.isOpen||(e.isOpen=!0),e.panelView.focus(),o())}))},openOnButtonClick(e){e.buttonView.on("execute",(()=>{e.isOpen=!0}))},toggleOnButtonClick(e){e.buttonView.on("execute",(()=>{e.isOpen=!e.isOpen}))},openAndFocusOnEnterKeyPress(e){e.keystrokes.set("enter",((t,o)=>{e.focusTracker.focusedElement===e.buttonView.element&&(e.isOpen=!0,e.panelView.focus(),o())}))},closeOnArrowLeftKey(e){const t="rtl"===e.locale.uiLanguageDirection?"arrowright":"arrowleft";e.keystrokes.set(t,((t,o)=>{e.isOpen&&(e.isOpen=!1,e.focus(),o())}))},closeOnEscKey(e){e.keystrokes.set("esc",((t,o)=>{e.isOpen&&(e.isOpen=!1,e.focus(),o())}))},closeOnParentClose(e){e.parentMenuView.on("change:isOpen",((t,o,i)=>{i||t.source!==e.parentMenuView||(e.isOpen=!1)}))}},Sm={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"}),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"}),eastSouth:e=>({top:e.top,left:e.right-5,name:"es"}),eastNorth:(e,t)=>({top:e.top-t.height,left:e.right-5,name:"en"}),westSouth:(e,t)=>({top:e.top,left:e.left-t.width+5,name:"ws"}),westNorth:(e,t)=>({top:e.top-t.height,left:e.left-t.width+5,name:"wn"})},Im=[{menuId:"file",label:"File",groups:[{groupId:"export",items:["menuBar:exportPdf","menuBar:exportWord"]},{groupId:"import",items:["menuBar:importWord"]},{groupId:"revisionHistory",items:["menuBar:revisionHistory"]}]},{menuId:"edit",label:"Edit",groups:[{groupId:"undo",items:["menuBar:undo","menuBar:redo"]},{groupId:"selectAll",items:["menuBar:selectAll"]},{groupId:"findAndReplace",items:["menuBar:findAndReplace"]}]},{menuId:"view",label:"View",groups:[{groupId:"sourceEditingEnhanced",items:["menuBar:sourceEditingEnhanced"]},{groupId:"sourceEditing",items:["menuBar:sourceEditing"]},{groupId:"showBlocks",items:["menuBar:showBlocks"]},{groupId:"previewMergeFields",items:["menuBar:previewMergeFields"]},{groupId:"fullscreen",items:["menuBar:fullscreen"]},{groupId:"restrictedEditing",items:["menuBar:restrictedEditing"]}]},{menuId:"insert",label:"Insert",groups:[{groupId:"insertMainWidgets",items:["menuBar:insertImage","menuBar:ckbox","menuBar:ckfinder","menuBar:insertTable","menuBar:insertTableLayout"]},{groupId:"insertInline",items:["menuBar:link","menuBar:insertFootnote","menuBar:bookmark","menuBar:comment","menuBar:insertMergeField","menuBar:emoji"]},{groupId:"insertMinorWidgets",items:["menuBar:mediaEmbed","menuBar:insertTemplate","menuBar:specialCharacters","menuBar:blockQuote","menuBar:codeBlock","menuBar:htmlEmbed"]},{groupId:"insertStructureWidgets",items:["menuBar:horizontalLine","menuBar:pageBreak","menuBar:tableOfContents"]},{groupId:"restrictedEditingException",items:["menuBar:restrictedEditingException:inline","menuBar:restrictedEditingException:block"]}]},{menuId:"format",label:"Format",groups:[{groupId:"textAndFont",items:[{menuId:"text",label:"Text",groups:[{groupId:"basicStyles",items:["menuBar:bold","menuBar:italic","menuBar:underline","menuBar:strikethrough","menuBar:superscript","menuBar:subscript","menuBar:code"]},{groupId:"textPartLanguage",items:["menuBar:textPartLanguage"]}]},{menuId:"font",label:"Font",groups:[{groupId:"fontProperties",items:["menuBar:fontSize","menuBar:fontFamily"]},{groupId:"fontColors",items:["menuBar:fontColor","menuBar:fontBackgroundColor"]},{groupId:"highlight",items:["menuBar:highlight"]}]},"menuBar:heading"]},{groupId:"list",items:["menuBar:bulletedList","menuBar:numberedList","menuBar:multiLevelList","menuBar:todoList"]},{groupId:"indent",items:["menuBar:alignment","menuBar:lineHeight","menuBar:indent","menuBar:outdent"]},{groupId:"caseChange",items:["menuBar:caseChange"]},{groupId:"removeFormat",items:["menuBar:removeFormat"]}]},{menuId:"tools",label:"Tools",groups:[{groupId:"aiTools",items:["menuBar:aiAssistant","menuBar:aiCommands","menuBar:toggleAi","menuBar:aiQuickActions"]},{groupId:"tools",items:["menuBar:trackChanges","menuBar:commentsArchive"]}]},{menuId:"help",label:"Help",groups:[{groupId:"help",items:["menuBar:accessibilityHelp"]}]}];function Rm({normalizedConfig:e,locale:t,componentFactory:o,extraItems:i}){const n=j(e);return Om(e,n,i),function(e,t){const o=t.removeItems,i=[];t.items=t.items.filter((({menuId:e})=>!o.includes(e)||(i.push(e),!1))),Mm(t.items,(e=>{e.groups=e.groups.filter((({groupId:e})=>!o.includes(e)||(i.push(e),!1)));for(const t of e.groups)t.items=t.items.filter((e=>{const t=zm(e);return!o.includes(t)||(i.push(t),!1)}))}));for(const t of o)i.includes(t)||be("menu-bar-item-could-not-be-removed",{menuBarConfig:e,itemName:t})}(e,n),Om(e,n,n.addItems),function(e,t,o){Mm(t.items,(i=>{for(const n of i.groups)n.items=n.items.filter((n=>{const s="string"==typeof n&&!o.has(n);return s&&!t.isUsingDefaultConfig&&be("menu-bar-item-unavailable",{menuBarConfig:e,parentMenuConfig:j(i),componentName:n}),!s}))}))}(e,n,o),Dm(e,n),function(e,t){const o=t.t,i={File:o({string:"File",id:"MENU_BAR_MENU_FILE"}),Edit:o({string:"Edit",id:"MENU_BAR_MENU_EDIT"}),View:o({string:"View",id:"MENU_BAR_MENU_VIEW"}),Insert:o({string:"Insert",id:"MENU_BAR_MENU_INSERT"}),Format:o({string:"Format",id:"MENU_BAR_MENU_FORMAT"}),Tools:o({string:"Tools",id:"MENU_BAR_MENU_TOOLS"}),Help:o({string:"Help",id:"MENU_BAR_MENU_HELP"}),Text:o({string:"Text",id:"MENU_BAR_MENU_TEXT"}),Font:o({string:"Font",id:"MENU_BAR_MENU_FONT"})};Mm(e.items,(e=>{e.label in i&&(e.label=i[e.label])}))}(n,t),n}function Om(e,t,o){const i=[];if(0!=o.length){for(const e of o){const o=Bm(e.position),s=Lm(e.position);if("object"==typeof(n=e)&&"menu"in n)if(s){const n=t.items.findIndex((e=>e.menuId===s));if(-1!=n)"before"===o?(t.items.splice(n,0,e.menu),i.push(e)):"after"===o&&(t.items.splice(n+1,0,e.menu),i.push(e));else{Vm(t,e.menu,s,o)&&i.push(e)}}else"start"===o?(t.items.unshift(e.menu),i.push(e)):"end"===o&&(t.items.push(e.menu),i.push(e));else if(Nm(e))Mm(t.items,(t=>{if(t.menuId===s)"start"===o?(t.groups.unshift(e.group),i.push(e)):"end"===o&&(t.groups.push(e.group),i.push(e));else{const n=t.groups.findIndex((e=>e.groupId===s));-1!==n&&("before"===o?(t.groups.splice(n,0,e.group),i.push(e)):"after"===o&&(t.groups.splice(n+1,0,e.group),i.push(e)))}}));else{Vm(t,e.item,s,o)&&i.push(e)}}var n;for(const t of o)i.includes(t)||be("menu-bar-item-could-not-be-added",{menuBarConfig:e,addedItemConfig:t})}}function Vm(e,t,o,i){let n=!1;return Mm(e.items,(e=>{for(const{groupId:s,items:r}of e.groups){if(n)return;if(s===o)"start"===i?(r.unshift(t),n=!0):"end"===i&&(r.push(t),n=!0);else{const e=r.findIndex((e=>zm(e)===o));-1!==e&&("before"===i?(r.splice(e,0,t),n=!0):"after"===i&&(r.splice(e+1,0,t),n=!0))}}})),n}function Dm(e,t){const o=t.isUsingDefaultConfig;let i=!1;t.items=t.items.filter((t=>!!t.groups.length||(Fm(e,t,o),!1))),t.items.length?(Mm(t.items,(t=>{t.groups=t.groups.filter((e=>!!e.items.length||(i=!0,!1)));for(const n of t.groups)n.items=n.items.filter((t=>!(jm(t)&&!t.groups.length)||(Fm(e,t,o),i=!0,!1)))})),i&&Dm(e,t)):Fm(e,e,o)}function Fm(e,t,o){o||be("menu-bar-menu-empty",{menuBarConfig:e,emptyMenuConfig:t})}function Mm(e,t){if(Array.isArray(e))for(const t of e)o(t);function o(e){t(e);for(const t of e.groups)for(const e of t.items)jm(e)&&o(e)}}function Nm(e){return"object"==typeof e&&"group"in e}function Bm(e){return e.startsWith("start")?"start":e.startsWith("end")?"end":e.startsWith("after")?"after":"before"}function Lm(e){const t=e.match(/^[^:]+:(.+)/);return t?t[1]:null}function zm(e){return"string"==typeof e?e:e.menuId}function jm(e){return"object"==typeof e&&"menuId"in e}class qm extends(Be()){editor;componentFactory;focusTracker;tooltipManager;poweredBy;evaluationBadge;ariaLiveAnnouncer;isReady=!1;_editableElementsMap=new Map;_focusableToolbarDefinitions=[];_extraMenuBarElements=[];_lastFocusedForeignElement=null;_domEmitter;constructor(e){super();const t=e.editing.view;this.editor=e,this.componentFactory=new bm(e),this.focusTracker=new oo,this.tooltipManager=new _m(e),this.poweredBy=new gh(e),this.evaluationBadge=new Cm(e),this.ariaLiveAnnouncer=new Eu(e),this._initViewportOffset(this._readViewportOffsetFromConfig()),this.once("ready",(()=>{this._bindBodyCollectionWithFocusTracker(),this.isReady=!0})),this.listenTo(t.document,"layoutChanged",this.update.bind(this)),this.listenTo(t,"scrollToTheSelection",this._handleScrollToTheSelection.bind(this)),this._initFocusTracking(),this._initVisualViewportSupport()}get element(){return null}update(){this.fire("update")}destroy(){this.stopListening(),this.focusTracker.destroy(),this.tooltipManager.destroy(this.editor),this.poweredBy.destroy(),this.evaluationBadge.destroy();for(const e of this._editableElementsMap.values())e.ckeditorInstance=null,this.editor.keystrokes.stopListening(e);this._editableElementsMap=new Map,this._focusableToolbarDefinitions=[],this._domEmitter&&this._domEmitter.stopListening()}setEditableElement(e,t){this._editableElementsMap.set(e,t),t.ckeditorInstance||(t.ckeditorInstance=this.editor),this.focusTracker.add(t);const o=()=>{this.editor.editing.view.getDomRoot(e)||this.editor.keystrokes.listenTo(t)};this.isReady?o():this.once("ready",o)}removeEditableElement(e){const t=this._editableElementsMap.get(e);t&&(this._editableElementsMap.delete(e),this.editor.keystrokes.stopListening(t),this.focusTracker.remove(t),t.ckeditorInstance=null)}getEditableElement(e="main"){return this._editableElementsMap.get(e)}getEditableElementsNames(){return this._editableElementsMap.keys()}addToolbar(e,t={}){e.isRendered?(this.focusTracker.add(e),this.editor.keystrokes.listenTo(e.element)):e.once("render",(()=>{this.focusTracker.add(e),this.editor.keystrokes.listenTo(e.element)})),this._focusableToolbarDefinitions.push({toolbarView:e,options:t})}extendMenuBar(e){this._extraMenuBarElements.push(e)}initMenuBar(e){const t=e.element;this.focusTracker.add(t),this.editor.keystrokes.listenTo(t);const o=function(e){let t;return t="items"in e&&e.items?{items:e.items,removeItems:[],addItems:[],isVisible:!0,isUsingDefaultConfig:!1,...e}:{items:j(Im),addItems:[],removeItems:[],isVisible:!0,isUsingDefaultConfig:!0,...e},t}(this.editor.config.get("menuBar")||{});e.fillFromConfig(o,this.componentFactory,this._extraMenuBarElements),this.editor.keystrokes.set("Esc",((e,o)=>{t.contains(this.editor.ui.focusTracker.focusedElement)&&(this._lastFocusedForeignElement?(this._lastFocusedForeignElement.focus(),this._lastFocusedForeignElement=null):this.editor.editing.view.focus(),o())})),this.editor.keystrokes.set("Alt+F9",((o,i)=>{t.contains(this.editor.ui.focusTracker.focusedElement)||(this._saveLastFocusedForeignElement(),e.isFocusBorderEnabled=!0,e.focus(),i())}))}_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}}_initFocusTracking(){const e=this.editor;let t;e.keystrokes.set("Alt+F10",((e,o)=>{this._saveLastFocusedForeignElement();const i=this._getCurrentFocusedToolbarDefinition();i&&t||(t=this._getFocusableCandidateToolbarDefinitions());for(let e=0;e{const i=this._getCurrentFocusedToolbarDefinition();i&&(this._lastFocusedForeignElement?(this._lastFocusedForeignElement.focus(),this._lastFocusedForeignElement=null):e.editing.view.focus(),i.options.afterBlur&&i.options.afterBlur(),o())}))}_saveLastFocusedForeignElement(){const e=this.focusTracker.focusedElement;Array.from(this._editableElementsMap.values()).includes(e)&&!Array.from(this.editor.editing.view.domRoots.values()).includes(e)&&(this._lastFocusedForeignElement=e)}_getFocusableCandidateToolbarDefinitions(){const e=[];for(const t of this._focusableToolbarDefinitions){const{toolbarView:o,options:i}=t;(Ct(o.element)||i.beforeFocus)&&e.push(t)}return e.sort(((e,t)=>$m(e)-$m(t))),e}_getCurrentFocusedToolbarDefinition(){for(const e of this._focusableToolbarDefinitions)if(e.toolbarView.element&&e.toolbarView.element.contains(this.focusTracker.focusedElement))return e;return null}_focusFocusableCandidateToolbar(e){const{toolbarView:t,options:{beforeFocus:o}}=e;return o&&o(),!!Ct(t.element)&&(t.focus(),!0)}_handleScrollToTheSelection(e,t){const o={top:0,bottom:0,left:0,right:0,...this.viewportOffset};t.viewportOffset.top+=o.top,t.viewportOffset.bottom+=o.bottom,t.viewportOffset.left+=o.left,t.viewportOffset.right+=o.right}_bindBodyCollectionWithFocusTracker(){const e=this.view.body;for(const t of e)this.focusTracker.add(t.element);e.on("add",((e,t)=>{this.focusTracker.add(t.element)})),e.on("remove",((e,t)=>{this.focusTracker.remove(t.element)}))}_initViewportOffset(e){this.on("set:viewportOffset",((e,t,o)=>{const i=this._getVisualViewportTopOffset(o);o.visualTop!==i&&(e.return={...o,visualTop:i})})),this.set("viewportOffset",e)}_initVisualViewportSupport(){if(!J.window.visualViewport)return;const e=()=>{const e=this._getVisualViewportTopOffset(this.viewportOffset);this.viewportOffset.visualTop!==e&&(this.viewportOffset={...this.viewportOffset,visualTop:e})};this._domEmitter=new(et()),this._domEmitter.listenTo(J.window.visualViewport,"scroll",e),this._domEmitter.listenTo(J.window.visualViewport,"resize",e)}_getVisualViewportTopOffset(e){const t=St().top,o=e.top||0;return t>o?0:o-t}}function $m(e){const{toolbarView:t,options:o}=e;let i=10;return Ct(t.element)&&i--,o.isContextual&&(i-=2),i}class Hm extends Au{body;menuBarView;toolbar;constructor(e){super(e),this.body=new ah(e)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}class Wm extends Au{name=null;_editingView;_editableElement;_hasExternalElement;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.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()}get hasExternalElement(){return this._hasExternalElement}_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,n,s)=>{s?o(i):t(i)}))}(this):t(this)}}class Um extends Wm{_options;constructor(e,t,o,i={}){super(e,t,o),this._options=i,this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}})}render(){super.render();const e=this._editingView;e.change((t=>{const o=e.document.getRoot(this.name);t.setAttribute("aria-label",this.getEditableAriaLabel(),o)}))}getEditableAriaLabel(){const e=this.locale.t,t=this._options.label,o=this._editableElement,i=this.name;if("string"==typeof t)return t;if("object"==typeof t)return t[i];if("function"==typeof t)return t(this);if(o){const e=o.getAttribute("aria-label");if(e)return e}return e("Rich Text Editor. Editing area: %0",i)}}class Km extends Au{children;constructor(e,t={}){super(e);const o=this.bindTemplate;this.set("class",["ck","ck-form__row",...Qt(t.class||[])]),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:o.to("class",(e=>e.join(" "))),role:o.to("_role"),"aria-labelledby":o.to("_ariaLabelledBy")},children:this.children})}}class Gm extends Cc{static get pluginName(){return"Notification"}static get isOfficialPlugin(){return!0}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=e.namespace?`show:${e.type}:${e.namespace}`:`show:${e.type}`;this.fire(t,{message:e.message,type:e.type,title:e.title||""})}}class Jm extends(Be()){constructor(e,t){super(),t&&No(this,t),e&&this.set(e)}}const Zm=yt("px");class Qm extends fc{positionLimiter;visibleStack;_viewToStack=new Map;_idToStack=new Map;_view=null;_rotatorView=null;_fakePanelsView=null;static get pluginName(){return"ContextualBalloon"}static get isOfficialPlugin(){return!0}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.decorate("getPositionOptions"),this.set("visibleView",null),this.set("_numberOfStacks",0),this.set("_singleViewMode",!1)}destroy(){super.destroy(),this._view&&this._view.destroy(),this._rotatorView&&this._rotatorView.destroy(),this._fakePanelsView&&this._fakePanelsView.destroy()}get view(){return this._view||this._createPanelView(),this._view}hasView(e){return Array.from(this._viewToStack.keys()).includes(e)}add(e){if(this._view||this._createPanelView(),this.hasView(e.view))throw new fe("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 fe("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.getPositionOptions()),this._fakePanelsView.updatePosition()}getPositionOptions(){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,top:this.editor.ui.viewportOffset.visualTop}})),e}showStack(e){this.visibleStack=e;const t=this._idToStack.get(e);if(!t)throw new fe("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==t&&this._showView(Array.from(t.values()).pop())}_createPanelView(){this._view=new dh(this.editor.locale),this.editor.ui.view.body.add(this._view),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}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 Ym(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 Xm(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.getPositionOptions()),this._fakePanelsView.updatePosition(),i&&(this._singleViewMode=!0)}}class Ym extends Au{focusTracker;buttonPrevView;buttonNextView;content;constructor(e){super(e);const t=e.t,o=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new oo,this.buttonPrevView=this._createButtonView(t("Previous"),ed),this.buttonNextView=this._createButtonView(t("Next"),Kc),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)}destroy(){super.destroy(),this.focusTracker.destroy()}showView(e){this.hideView(),this.content.add(e)}hideView(){this.content.clear()}_createButtonView(e,t){const o=new Lu(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o}}class Xm extends Au{content;_balloonPanelView;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",Zm),left:o.to("left",Zm),width:o.to("width",Zm),height:o.to("height",Zm)}},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 Au;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 ut(this._balloonPanelView.element);Object.assign(this,{top:e,left:t,width:o,height:i})}}}class eg extends ih{arrowView;constructor(e){super(e);const t=this.bindTemplate;this.set({withText:!0,role:"menuitem"}),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{class:["ck-menu-bar__menu__button"],"aria-haspopup":!0,"aria-expanded":this.bindTemplate.to("isOn",(e=>String(e))),"data-cke-tooltip-disabled":t.to("isOn")},on:{mouseenter:t.to("mouseenter")}})}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new Nu;return e.content=Uc,e.extendTemplate({attributes:{class:"ck-menu-bar__menu__button__arrow"}}),e}}class tg extends Au{children;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-menu-bar__menu__panel",t.to("position",(e=>`ck-menu-bar__menu__panel_position_${e}`)),t.if("isVisible","ck-hidden",(e=>!e))],tabindex:"-1"},children:this.children,on:{selectstart:t.to((e=>{"input"!==e.target.tagName.toLocaleLowerCase()&&e.preventDefault()}))}})}focus(e=1){this.children.length&&(1===e?this.children.first.focus():this.children.last.focus())}}class og extends Au{buttonView;panelView;focusTracker;keystrokes;constructor(e){super(e);const t=this.bindTemplate;this.buttonView=new eg(e),this.buttonView.delegate("mouseenter").to(this),this.buttonView.bind("isOn","isEnabled").to(this,"isOpen","isEnabled"),this.panelView=new tg(e),this.panelView.bind("isVisible").to(this,"isOpen"),this.keystrokes=new ro,this.focusTracker=new oo,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("panelPosition","w"),this.set("class",void 0),this.set("parentMenuView",null),this.setTemplate({tag:"div",attributes:{class:["ck","ck-menu-bar__menu",t.to("class"),t.if("isEnabled","ck-disabled",(e=>!e)),t.if("parentMenuView","ck-menu-bar__menu_top-level",(e=>!e))]},children:[this.buttonView,this.panelView]})}render(){super.render(),this.focusTracker.add(this.buttonView.element),this.focusTracker.add(this.panelView.element),this.keystrokes.listenTo(this.element),Pm.closeOnEscKey(this),this._closeOnDisabled(),this._repositionPanelOnOpen()}_attachBehaviors(){this.parentMenuView?(Pm.openOnButtonClick(this),Pm.openOnArrowRightKey(this),Pm.closeOnArrowLeftKey(this),Pm.openAndFocusOnEnterKeyPress(this),Pm.closeOnParentClose(this)):(this._propagateArrowKeystrokeEvents(),Pm.openAndFocusPanelOnArrowDownKey(this),Pm.toggleOnButtonClick(this))}_propagateArrowKeystrokeEvents(){this.keystrokes.set("arrowright",((e,t)=>{this.fire("arrowright"),t()})),this.keystrokes.set("arrowleft",((e,t)=>{this.fire("arrowleft"),t()}))}_closeOnDisabled(){this.on("change:isEnabled",((e,t,o)=>{o||(this.isOpen=!1)}))}_repositionPanelOnOpen(){this.on("change:isOpen",((e,t,o)=>{if(!o)return;const i=og._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions});this.panelView.position=i?i.name:this._defaultMenuPositionName}))}focus(){this.buttonView.focus()}get _panelPositions(){const{southEast:e,southWest:t,northEast:o,northWest:i,westSouth:n,eastSouth:s,westNorth:r,eastNorth:a}=Sm;return"ltr"===this.locale.uiLanguageDirection?this.parentMenuView?[s,a,n,r]:[e,t,o,i]:this.parentMenuView?[n,r,s,a]:[t,e,i,o]}get _defaultMenuPositionName(){return"ltr"===this.locale.uiLanguageDirection?this.parentMenuView?"es":"se":this.parentMenuView?"ws":"sw"}static _getOptimalPosition=At}class ig extends zh{constructor(e){super(e),this.role="menu",this.items.on("change",this._setItemsCheckSpace.bind(this))}_setItemsCheckSpace(){const e=Array.from(this.items).some((e=>{const t=ng(e);return t&&t.isToggleable}));this.items.forEach((t=>{const o=ng(t);o&&(o.hasCheckSpace=e)}))}}function ng(e){return e instanceof Nh?e.children.map((e=>function(e){return"object"==typeof e&&"buttonView"in e&&e.buttonView instanceof Lu}(e)?e.buttonView:e)).find((e=>e instanceof ih)):null}class sg extends wh{constructor(e){super(e),this.set({withText:!0,withKeystroke:!0,tooltip:!1,role:"menuitem"}),this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item__button"]}})}}const rg=["mouseenter","arrowleft","arrowright","change:isOpen"];class ag extends Au{children;menus=[];constructor(e){super(e);const t=e.t,o=this.bindTemplate;this.set({isOpen:!1,isFocusBorderEnabled:!1}),this._setupIsOpenUpdater(),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-menu-bar",o.if("isFocusBorderEnabled","ck-menu-bar_focus-border-enabled")],"aria-label":t("Editor menu bar"),role:"menubar"},children:this.children})}fillFromConfig(e,t,o=[]){const i=Rm({normalizedConfig:e,locale:this.locale,componentFactory:t,extraItems:o}).items.map((e=>this._createMenu({componentFactory:t,menuDefinition:e})));this.children.addMany(i)}render(){super.render(),Tm.toggleMenusAndFocusItemsOnHover(this),Tm.closeMenusWhenTheBarCloses(this),Tm.closeMenuWhenAnotherOnTheSameLevelOpens(this),Tm.focusCycleMenusOnArrows(this),Tm.closeOnClickOutside(this),Tm.enableFocusHighlightOnInteraction(this)}focus(){this.children.first&&this.children.first.focus()}close(){for(const e of this.children)e.isOpen=!1}disable(){for(const e of this.children)e.isEnabled=!1}enable(){for(const e of this.children)e.isEnabled=!0}registerMenu(e,t=null){t?(e.delegate(...rg).to(t),e.parentMenuView=t):e.delegate(...rg).to(this,(e=>"menu:"+e)),e._attachBehaviors(),this.menus.push(e)}_createMenu({componentFactory:e,menuDefinition:t,parentMenuView:o}){const i=this.locale,n=new og(i);return this.registerMenu(n,o),n.buttonView.set({label:t.label}),n.once("change:isOpen",(()=>{const o=new ig(i);o.ariaLabel=t.label,n.panelView.children.add(o),o.items.addMany(this._createMenuItems({menuDefinition:t,parentMenuView:n,componentFactory:e}))})),n}_createMenuItems({menuDefinition:e,parentMenuView:t,componentFactory:o}){const i=this.locale,n=[];for(const r of e.groups){for(const e of r.items){const r=new Em(i,t);if(s(e))r.children.add(this._createMenu({componentFactory:o,menuDefinition:e,parentMenuView:t}));else{const i=this._createMenuItemContentFromFactory({componentName:e,componentFactory:o,parentMenuView:t});if(!i)continue;r.children.add(i)}n.push(r)}r!==e.groups[e.groups.length-1]&&n.push(new Bh(i))}return n}_createMenuItemContentFromFactory({componentName:e,parentMenuView:t,componentFactory:o}){const i=o.create(e);return i instanceof og||i instanceof sh||i instanceof sg?(this._registerMenuTree(i,t),i.on("execute",(()=>{this.close()})),i):(be("menu-bar-component-unsupported",{componentName:e,componentView:i}),null)}_registerMenuTree(e,t){if(!(e instanceof og))return void e.delegate("mouseenter").to(t);this.registerMenu(e,t);const o=e.panelView.children.filter((e=>e instanceof ig))[0];if(!o)return void e.delegate("mouseenter").to(t);const i=o.items.filter((e=>e instanceof Nh));for(const t of i)this._registerMenuTree(t.children.get(0),e)}_setupIsOpenUpdater(){let e;this.on("menu:change:isOpen",((t,o,i)=>{clearTimeout(e),i?this.isOpen=!0:e=setTimeout((()=>{this.isOpen=Array.from(this.children).some((e=>e.isOpen))}),0)}))}}class lg extends qm{view;constructor(e,t){super(e),this.view=t}init(){const e=this.editor,t=this.view,o=e.editing.view,i=t.editable,n=o.document.getRoot();i.name=n.rootName,t.render();const s=i.element;this.setEditableElement(i.name,s),t.editable.bind("isFocused").to(this.focusTracker),o.attachDomRoot(s),this._initPlaceholder(),this._initToolbar(),this.initMenuBar(this.view.menuBarView),this.fire("ready")}destroy(){super.destroy();const e=this.view,t=this.editor.editing.view;t.getDomRoot(e.editable.name)&&t.detachDomRoot(e.editable.name),e.destroy()}_initToolbar(){const e=this.editor,t=this.view;t.toolbar.fillFromConfig(e.config.get("toolbar"),this.componentFactory),this.addToolbar(t.toolbar)}_initPlaceholder(){const e=this.editor,t=e.editing.view,o=t.document.getRoot(),i=e.config.get("roots")[o.rootName].placeholder;i&&(o.placeholder=i),Yo({view:t,element:o,isDirectHost:!1,keepOnFocus:!0})}}class cg extends Hm{toolbar;editable;menuBarView;constructor(e,t,o={}){super(e),this.toolbar=new Wh(e,{shouldGroupWhenFull:o.shouldToolbarGroupWhenFull}),this.menuBarView=new ag(e),this.editable=new Um(e,t,o.editableElement,{label:o.label}),this.toolbar.extendTemplate({attributes:{class:["ck-reset_all","ck-rounded-corners"],dir:e.uiLanguageDirection}}),this.menuBarView.extendTemplate({attributes:{class:["ck-reset_all","ck-rounded-corners"],dir:e.uiLanguageDirection}})}render(){super.render(),this.registerChild([this.menuBarView,this.toolbar,this.editable])}}class dg extends(Fc(Vc)){static get editorName(){return"DecoupledEditor"}ui;constructor(e,t={}){const{sourceElementOrData:o,editorConfig:i}=function(e,t){return"string"==typeof e||Bc(e)||t&&Object.keys(t).length?{sourceElementOrData:e,editorConfig:t}:{sourceElementOrData:"",editorConfig:e}}(e,t);super(i),Mc(o,this.config);const n=this.config.get("roots").main.element;if(L(n)){if("TEXTAREA"===n.tagName)throw new fe("editor-wrong-element",null);this.sourceElement=n,function(e,t){if(t.ckeditorInstance)throw new fe("editor-source-element-already-used",e);t.ckeditorInstance=e,e.once("destroy",(()=>{delete t.ckeditorInstance}))}(this,n)}this.model.document.createRoot();const s=!this.config.get("toolbar.shouldNotGroupWhenFull"),r=new cg(this.locale,this.editing.view,{editableElement:this.sourceElement,shouldToolbarGroupWhenFull:s,label:this.config.get("roots").main.label});this.ui=new lg(this,r)}destroy(){const e=this.getData();return this.ui.destroy(),super.destroy().then((()=>{this.sourceElement&&this.updateSourceElement(e)}))}static create(e,t={}){return new Promise((o=>{const i=new this(e,t);o(i.initPlugins().then((()=>i.ui.init())).then((()=>i.data.init(i.config.get("roots").main.initialData))).then((()=>i.fire("ready"))).then((()=>i)))}))}}class ug{model;limit;_isLocked;_size;_batch=null;_changeCallback;_selectionChangeCallback;constructor(e,t=20){this.model=e,this._size=0,this.limit=t,this._isLocked=!1,this._changeCallback=(e,t)=>{t.isLocal&&t.isUndoable&&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({isTyping:!0})),this._batch}get size(){return this._size}input(e){this._size+=e,this._size>=this.limit&&this._reset(!0)}get isLocked(){return this._isLocked}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=!1){this.isLocked&&!e||(this._batch=null,this._size=0)}}class hg extends wc{_buffer;constructor(e,t){super(e),this._buffer=new ug(e.model,t),this._isEnabledBasedOnSelection=!1}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,o=t.document,i=e.text||"",n=i.length;let s=o.selection;if(e.selection?s=e.selection:e.range&&(s=t.createSelection(e.range)),!t.canEditAt(s))return;const r=e.resultRange;t.enqueueChange(this._buffer.batch,(e=>{this._buffer.lock();const a=Array.from(o.selection.getAttributes());t.deleteContent(s),i&&t.insertContent(e.createText(i,a),s),r?e.setSelection(r):s.is("documentSelection")||e.setSelection(s),this._buffer.unlock(),this._buffer.input(n)}))}}const mg=["insertText","insertReplacementText"],gg=[...mg,"insertCompositionText"];class pg extends Ln{focusObserver;constructor(e){super(e),this.focusObserver=e.getObserver(Un);const t=Y.isAndroid?gg:mg,o=e.document;o.on("beforeinput",((i,n)=>{if(!this.isEnabled)return;const{data:s,targetRanges:r,inputType:a,domEvent:l,isComposing:c}=n;if(!t.includes(a))return;this.focusObserver.flush();const d=new ue(o,"insertText");o.fire(d,new zn(e,l,{text:s,selection:e.createSelection(r),isComposing:c})),d.stop.called&&i.stop()})),Y.isAndroid||o.on("compositionend",((t,{data:i,domEvent:n})=>{this.isEnabled&&i&&o.fire("insertText",new zn(e,n,{text:i,isComposing:!0}))}),{priority:"low"})}observe(){}stopObserving(){}}class fg extends fc{_typingQueue;static get pluginName(){return"Input"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model,o=e.editing.view,i=e.editing.mapper,n=t.document.selection;this._typingQueue=new bg(e),o.addObserver(pg);const s=new hg(e,e.config.get("typing.undoStep")||20);e.commands.add("insertText",s),e.commands.add("input",s),this.listenTo(o.document,"beforeinput",(()=>{this._typingQueue.flush("next beforeinput")}),{priority:"high"}),this.listenTo(o.document,"insertText",((e,r)=>{const{text:a,selection:l}=r;if(o.document.selection.isFake&&l&&o.document.selection.isSimilar(l)&&r.preventDefault(),l&&Array.from(l.getRanges()).some((e=>!e.isCollapsed))&&r.preventDefault(),!s.isEnabled)return void r.preventDefault();let c;l&&(c=Array.from(l.getRanges()).filter((e=>e.root.is("rootElement"))).map((e=>i.toModelRange(e))).map((e=>Ba(e,t.schema)||e))),c&&c.length||(c=Array.from(n.getRanges()));let d=a;if(Y.isAndroid){const e=Array.from(c[0].getItems()).reduce(((e,t)=>e+(t.is("$textProxy")?t.data:"")),"");if(e&&(e.length<=d.length?d.startsWith(e)&&(d=d.substring(e.length),c[0].start=c[0].start.getShiftedBy(e.length)):e.startsWith(d)&&(c[0].start=c[0].start.getShiftedBy(d.length),d="")),0==d.length&&c[0].isCollapsed)return}const u={text:d,selection:t.createSelection(c)};this._typingQueue.push(u,Boolean(r.isComposing)),r.domEvent.defaultPrevented&&this._typingQueue.flush("beforeinput default prevented")})),Y.isAndroid?this.listenTo(o.document,"keydown",((e,i)=>{!n.isCollapsed&&229==i.keyCode&&o.document.isComposing&&wg(t,s)})):this.listenTo(o.document,"compositionstart",(()=>{n.isCollapsed||wg(t,s)}),{priority:"high"}),this.listenTo(o.document,"mutations",((e,{mutations:t})=>{if(this._typingQueue.hasAffectedElements())for(const{node:e}of t){const t=yg(e,i),o=i.toModelElement(t);if(this._typingQueue.isElementAffected(o))return void this._typingQueue.flush("mutations")}})),this.listenTo(o.document,"compositionend",(()=>{this._typingQueue.flush("before composition end")}),{priority:"high"}),this.listenTo(o.document,"compositionend",(()=>{this._typingQueue.flush("after composition end");const e=[];if(this._typingQueue.hasAffectedElements())for(const t of this._typingQueue.flushAffectedElements()){const o=i.toViewElement(t);o&&e.push({type:"children",node:o})}!e.length&&Y.isAndroid||o.document.fire("mutations",{mutations:e})}),{priority:"lowest"})}destroy(){super.destroy(),this._typingQueue.destroy()}}class bg{editor;flushDebounced=zo((()=>this.flush("timeout")),50);_queue=[];_isComposing=!1;_affectedElements=new Set;constructor(e){this.editor=e}destroy(){for(this.flushDebounced.cancel(),this._affectedElements.clear();this._queue.length;)this.shift()}get length(){return this._queue.length}push(e,t){const o={text:e.text};if(e.selection){o.selectionRanges=[];for(const t of e.selection.getRanges())o.selectionRanges.push(Ts.fromRange(t)),this._affectedElements.add(t.start.parent)}this._queue.push(o),this._isComposing||=t,this.flushDebounced()}shift(){const e=this._queue.shift(),t={text:e.text};if(e.selectionRanges){const o=e.selectionRanges.map((e=>function(e){const t=e.toRange();if(e.detach(),"$graveyard"==t.root.rootName)return null;return t}(e))).filter((e=>!!e));o.length&&(t.selection=this.editor.model.createSelection(o))}return t}flush(e){const t=this.editor,o=t.model,i=t.editing.view;if(this.flushDebounced.cancel(),!this._queue.length)return;const n=t.commands.get("insertText").buffer;o.enqueueChange(n.batch,(()=>{for(n.lock();this._queue.length;){const e=this.shift();t.execute("insertText",e)}n.unlock(),this._isComposing||this._affectedElements.clear(),this._isComposing=!1})),i.scrollToTheSelection()}isElementAffected(e){return this._affectedElements.has(e)}hasAffectedElements(){return this._affectedElements.size>0}flushAffectedElements(){const e=Array.from(this._affectedElements);return this._affectedElements.clear(),e}}function wg(e,t){if(!t.isEnabled)return;const o=t.buffer;o.lock(),e.enqueueChange(o.batch,(()=>{e.deleteContent(e.document.selection)})),o.unlock()}function yg(e,t){let o=e.is("$text")?e.parent:e;for(;!t.toModelElement(o);)o=o.parent;return o}class _g extends wc{direction;_buffer;constructor(e,t){super(e),this.direction=t,this._buffer=new ug(e.model,e.config.get("typing.undoStep")),this._isEnabledBasedOnSelection=!1}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 n=i.createSelection(e.selection||o.selection);if(!t.canEditAt(n))return;const s=e.sequence||1,r=n.isCollapsed;if(n.isCollapsed&&t.modifySelection(n,{direction:this.direction,unit:e.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(s))return void this._replaceEntireContentWithParagraph(i);if(this._shouldReplaceFirstBlockWithParagraph(n,s))return void this.editor.execute("paragraph",{selection:n});if(n.isCollapsed)return;let a=0;n.getFirstRange().getMinimalFlatRanges().forEach((e=>{a+=He(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),t.deleteContent(n,{doNotResetEntireContent:r,direction:this.direction}),this._buffer.input(a),i.setSelection(n),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 n=i.getChild(0);return!n||!n.is("element","paragraph")}_replaceEntireContentWithParagraph(e){const t=this.editor.model,o=t.document.selection,i=t.schema.getLimitElement(o),n=e.createElement("paragraph");e.remove(e.createRangeIn(i)),e.insert(n,i),e.setSelection(n,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(),n=o.schema.getLimitElement(i),s=n.getChild(0);return i.parent==s&&(!!e.containsEntireContent(s)&&(!!o.schema.checkChild(n,"paragraph")&&"paragraph"!=s.name))}}const kg="word",vg="selection",Cg="backward",Ag="forward",xg={deleteContent:{unit:vg,direction:Cg},deleteContentBackward:{unit:"codePoint",direction:Cg},deleteWordBackward:{unit:kg,direction:Cg},deleteHardLineBackward:{unit:vg,direction:Cg},deleteSoftLineBackward:{unit:vg,direction:Cg},deleteContentForward:{unit:"character",direction:Ag},deleteWordForward:{unit:kg,direction:Ag},deleteHardLineForward:{unit:vg,direction:Ag},deleteSoftLineForward:{unit:vg,direction:Ag}};class Eg extends Ln{constructor(e){super(e);const t=e.document;let o=0;t.on("keydown",(()=>{o++})),t.on("keyup",(()=>{o=0})),t.on("beforeinput",((i,n)=>{if(!this.isEnabled)return;const{targetRanges:s,domEvent:r,inputType:a}=n,l=xg[a];if(!l)return;const c={direction:l.direction,unit:l.unit,sequence:o};c.unit==vg&&(c.selectionToRemove=e.createSelection(s[0])),"deleteContentBackward"===a&&(Y.isAndroid&&(c.sequence=1),function(e){if(1!=e.length||e[0].isCollapsed)return!1;const t=e[0].getWalker({direction:"backward",singleCharacters:!0,ignoreElementEnd:!0});let o=0;for(const{nextPosition:e,item:i}of t){if(e.parent.is("$text")){const t=e.parent.data,i=e.offset;if(ho(t,i)||mo(t,i)||po(t,i))continue;o++}else(i.is("containerElement")||i.is("emptyElement"))&&o++;if(o>1)return!0}return!1}(s)&&(c.unit=vg,c.selectionToRemove=e.createSelection(s)));const d=new Di(t,"delete",s[0]);t.fire(d,new zn(e,r,c)),d.stop.called&&i.stop()})),Y.isBlink&&function(e){const t=e.view,o=t.document;let i=null,n=!1;function s(e){return e==qt.backspace||e==qt.delete}function r(e){return e==qt.backspace?Cg:Ag}o.on("keydown",((e,{keyCode:t})=>{i=t,n=!1})),o.on("keyup",((a,{keyCode:l,domEvent:c})=>{const d=o.selection,u=e.isEnabled&&l==i&&s(l)&&!d.isCollapsed&&!n;if(i=null,u){const e=d.getFirstRange(),i=new Di(o,"delete",e),n={unit:vg,direction:r(l),selectionToRemove:d};o.fire(i,new zn(t,c,n))}})),o.on("beforeinput",((e,{inputType:t})=>{const o=xg[t];s(i)&&o&&o.direction==r(i)&&(n=!0)}),{priority:"high"}),o.on("beforeinput",((e,{inputType:t,data:o})=>{i==qt.delete&&"insertText"==t&&""==o&&e.stop()}),{priority:"high"})}(this)}observe(){}stopObserving(){}}class Tg extends fc{_undoOnBackspace;static get pluginName(){return"Delete"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.editing.view,o=t.document,i=e.model.document;t.addObserver(Eg),this._undoOnBackspace=!1;const n=new _g(e,"forward");e.commands.add("deleteForward",n),e.commands.add("forwardDelete",n),e.commands.add("delete",new _g(e,"backward")),this.listenTo(o,"delete",((i,n)=>{o.isComposing||n.preventDefault();const{direction:s,sequence:r,selectionToRemove:a,unit:l}=n,c="forward"===s?"deleteForward":"delete",d={sequence:r};if("selection"==l){const t=Array.from(a.getRanges()).map((t=>e.editing.mapper.toModelRange(t))).map((t=>Ba(t,e.model.schema)||t));d.selection=e.model.createSelection(t)}else d.unit=l;e.execute(c,d),t.scrollToTheSelection()}),{priority:"low"}),this.listenTo(o,"keydown",((n,s)=>{if(o.isComposing||s.keyCode!=qt.backspace||!i.selection.isCollapsed)return;const r=e.model.schema.getLimitElement(i.selection),a=e.model.createPositionAt(r,0);if(a.isTouching(i.selection.getFirstPosition())){s.preventDefault();const i=e.model.schema.getNearestSelectionRange(a,"forward");if(!i)return;const n=t.createSelection(e.editing.mapper.toViewRange(i)),r=n.getFirstRange(),l=new Di(document,"delete",r),c={unit:"selection",direction:"backward",selectionToRemove:n};o.fire(l,new zn(t,s.domEvent,c))}})),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)}}class Pg extends fc{static get requires(){return[fg,Tg]}static get pluginName(){return"Typing"}static get isOfficialPlugin(){return!0}}function Sg(e,t){let o=e.start;return{text:Array.from(e.getWalker({ignoreElementEnd:!1})).reduce(((e,{item:i})=>i.is("$text")||i.is("$textProxy")?e+i.data:(o=t.createPositionAfter(i),"")),""),range:t.createRange(o,e.end)}}class Ig extends(Be()){model;testCallback;_hasMatch;constructor(e,t){super(),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()}get hasMatch(){return this._hasMatch}_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)=>{!t.isUndo&&t.isLocal&&this._evaluateTextBeforeSelection("data",{batch:t})}))}_evaluateTextBeforeSelection(e,t={}){const o=this.model,i=o.document.selection,n=o.createRange(o.createPositionAt(i.focus.parent,0),i.focus),{text:s,range:r}=Sg(n,o),a=this.testCallback(s);if(!a&&this.hasMatch&&this.fire("unmatched"),this._hasMatch=!!a,a){const o=Object.assign(t,{text:s,range:r});"object"==typeof a&&Object.assign(o,a),this.fire(`matched:${e}`,o)}}}class Rg extends fc{attributes;_overrideUid;_isNextGravityRestorationSkipped=!1;static get pluginName(){return"TwoStepCaretMovement"}static get isOfficialPlugin(){return!0}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,n=t.document.selection;this.listenTo(o.document,"arrowKey",((e,t)=>{if(!n.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const o=t.keyCode==qt.arrowright,s=t.keyCode==qt.arrowleft;if(!o&&!s)return;const r=i.contentLanguageDirection;let a=!1;a="ltr"===r&&o||"rtl"===r&&s?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()}),{context:"$text",priority:"highest"}),this.listenTo(n,"change:range",((e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&Ng(n.getFirstPosition(),this.attributes)||this._restoreGravity())})),this._enableClickingAfterNode(),this._enableInsertContentSelectionAttributesFixer(),this._handleDeleteContentAfterNode()}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,o=this.editor.model,i=o.document.selection,n=i.getFirstPosition();return!this._isGravityOverridden&&((!n.isAtStart||!Og(i,t))&&(!!Ng(n,t)&&(e&&Fg(e),Og(i,t)&&Ng(n,t,!0)?Dg(o,t):this._overrideGravity(),!0)))}_handleBackwardMovement(e){const t=this.attributes,o=this.editor.model,i=o.document.selection,n=i.getFirstPosition();return this._isGravityOverridden?(e&&Fg(e),this._restoreGravity(),Ng(n,t,!0)?Dg(o,t):Vg(o,t,n),!0):n.isAtStart?!!Og(i,t)&&(e&&Fg(e),Vg(o,t,n),!0):!Og(i,t)&&Ng(n,t,!0)?(e&&Fg(e),Vg(o,t,n),!0):!!Mg(n,t)&&(n.isAtEnd&&!Og(i,t)&&Ng(n,t)?(e&&Fg(e),Vg(o,t,n),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1))}_enableClickingAfterNode(){const e=this.editor,t=e.model,o=t.document.selection,i=e.editing.view.document;e.editing.view.addObserver(il),e.editing.view.addObserver(nl);let n=!1,s=!1;this.listenTo(i,"touchstart",(()=>{s=!1,n=!0})),this.listenTo(i,"mousedown",(()=>{s=!0})),this.listenTo(i,"selectionChange",(()=>{const e=this.attributes;if(!s&&!n)return;if(s=!1,n=!1,!o.isCollapsed)return;if(!Og(o,e))return;const i=o.getFirstPosition();Ng(i,e)&&(i.isAtStart||Ng(i,e,!0)?Dg(t,e):this._isGravityOverridden||this._overrideGravity())}))}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection,o=this.attributes;this.listenTo(e,"insertContent",(()=>{const i=t.getFirstPosition();Og(t,o)&&Ng(i,o)&&Dg(e,o)}),{priority:"low"})}_handleDeleteContentAfterNode(){const e=this.editor,t=e.model,o=t.document.selection,i=e.editing.view;let n=!1,s=!1;this.listenTo(i.document,"delete",((e,t)=>{n="backward"===t.direction}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{if(!n)return;const e=o.getFirstPosition();s=Og(o,this.attributes)&&!Mg(e,this.attributes)}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{n&&(n=!1,s||e.model.enqueueChange((()=>{const e=o.getFirstPosition();Og(o,this.attributes)&&Ng(e,this.attributes)&&(e.isAtStart||Ng(e,this.attributes,!0)?Dg(t,this.attributes):this._isGravityOverridden||this._overrideGravity())})))}),{priority:"low"})}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 Og(e,t){for(const o of t)if(e.hasAttribute(o))return!0;return!1}function Vg(e,t,o){const i=o.nodeBefore;e.change((o=>{if(i){const t=[],n=e.schema.isObject(i)&&e.schema.isInline(i);for(const[o,s]of i.getAttributes())!e.schema.checkAttribute("$text",o)||n&&!1===e.schema.getAttributeProperties(o).copyFromObject||t.push([o,s]);o.setSelectionAttribute(t)}else o.removeSelectionAttribute(t)}))}function Dg(e,t){e.change((e=>{e.removeSelectionAttribute(t)}))}function Fg(e){e.preventDefault()}function Mg(e,t){return Ng(e.getShiftedBy(-1),t)}function Ng(e,t,o=!1){const{nodeBefore:i,nodeAfter:n}=e;for(const e of t){const t=i?i.getAttribute(e):void 0,s=n?n.getAttribute(e):void 0;if((!o||void 0!==t&&void 0!==s)&&s!==t)return!0}return!1}Bg('"'),Bg("'"),Bg("'"),Bg('"'),Bg('"'),Bg("'");function Bg(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function Lg(e,t,o,i){return i.createRange(zg(e,t,o,!0,i),zg(e,t,o,!1,i))}function zg(e,t,o,i,n){let s=e.textNode||(i?e.nodeBefore:e.nodeAfter),r=null;for(;s&&s.getAttribute(t)==o;)r=s,s=i?s.previousSibling:s.nextSibling;return r?n.createPositionAt(r,i?"before":"after"):e}function jg(e,t,o,i){const n=e.editing.view,s=new Set;n.document.registerPostFixer((n=>{const r=e.model.document.selection;let a=!1;if(r.hasAttribute(t)){const l=Lg(r.getFirstPosition(),t,r.getAttribute(t),e.model),c=e.editing.mapper.toViewRange(l);for(const e of c.getItems())e.is("element",o)&&!e.hasClass(i)&&(n.addClass(i,e),s.add(e),a=!0)}return a})),e.conversion.for("editingDowncast").add((e=>{function t(){n.change((e=>{for(const t of s.values())e.removeClass(i,t),s.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"})}))}function*qg(e,t){for(const o of t)o&&e.getAttributeProperties(o[0]).copyOnEnter&&(yield o)}class $g extends wc{execute(){this.editor.model.change((e=>{this.enterBlock(e),this.fire("afterExecute",{writer:e})}))}enterBlock(e){const t=this.editor.model,o=t.document.selection,i=t.schema,n=o.isCollapsed,s=o.getFirstRange(),r=s.start.parent,a=s.end.parent;if(i.isLimit(r)||i.isLimit(a))return n||r!=a||t.deleteContent(o),!1;if(n){const t=qg(e.model.schema,o.getAttributes());return Hg(e,s.start),e.setSelectionAttribute(t),!0}{const i=!(s.start.isAtStart&&s.end.isAtEnd),n=r==a;if(t.deleteContent(o,{leaveUnmerged:i}),i){if(n)return Hg(e,o.focus),!0;e.setSelection(a,0)}}return!1}}function Hg(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}const Wg={insertParagraph:{isSoft:!1},insertLineBreak:{isSoft:!0}};class Ug extends Ln{constructor(e){super(e);const t=this.document;let o=!1;t.on("keydown",((e,t)=>{o=t.shiftKey})),t.on("beforeinput",((i,n)=>{if(!this.isEnabled)return;let s=n.inputType;Y.isSafari&&o&&"insertParagraph"==s&&(s="insertLineBreak");const r=n.domEvent,a=Wg[s];if(!a)return;const l=new Di(t,"enter",n.targetRanges[0]);t.fire(l,new zn(e,r,{isSoft:a.isSoft})),l.stop.called&&i.stop()}))}observe(){}stopObserving(){}}class Kg extends fc{static get pluginName(){return"Enter"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.editing.view,o=t.document,i=this.editor.t;t.addObserver(Ug),e.commands.add("enter",new $g(e)),this.listenTo(o,"enter",((i,n)=>{o.isComposing||n.preventDefault(),n.isSoft||(e.execute("enter"),t.scrollToTheSelection())}),{priority:"low"}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:i("Insert a hard break (a new paragraph)"),keystroke:"Enter"}]})}}class Gg extends wc{execute(){const e=this.editor.model,t=e.document;e.change((o=>{!function(e,t,o){const i=o.isCollapsed,n=o.getFirstRange(),s=n.start.parent,r=n.end.parent,a=s==r;if(i){const i=qg(e.schema,o.getAttributes());Jg(e,t,n.end),t.removeSelectionAttribute(o.getAttributeKeys()),t.setSelectionAttribute(i)}else{const i=!(n.start.isAtStart&&n.end.isAtEnd);e.deleteContent(o,{leaveUnmerged:i}),a?Jg(e,t,o.focus):i&&t.setSelection(r,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(),n=i.start.parent,s=i.end.parent;if((Zg(n,e)||Zg(s,e))&&n!==s)return!1;return!0}(e.schema,t.selection)}}function Jg(e,t,o){const i=t.createElement("softBreak");e.insertContent(i,o),t.setSelection(i,"after")}function Zg(e,t){return!e.is("rootElement")&&(t.isLimit(e)||Zg(e.parent,t))}class Qg extends fc{static get pluginName(){return"ShiftEnter"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model.schema,o=e.conversion,i=e.editing.view,n=i.document,s=this.editor.t;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(Ug),e.commands.add("shiftEnter",new Gg(e)),this.listenTo(n,"enter",((t,o)=>{n.isComposing||o.preventDefault(),o.isSoft&&(e.execute("shiftEnter"),i.scrollToTheSelection())}),{priority:"low"}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:s("Insert a soft break (a <br> element)"),keystroke:"Shift+Enter"}]})}}class Yg extends(xe()){_stack=[];add(e,t){const o=this._stack,i=o[0];this._insertDescriptor(e);const n=o[0];i===n||Xg(i,n)||this.fire("change:top",{oldDescriptor:i,newDescriptor:n,writer:t})}remove(e,t){const o=this._stack,i=o[0];this._removeDescriptor(e);const n=o[0];i===n||Xg(i,n)||this.fire("change:top",{oldDescriptor:i,newDescriptor:n,writer:t})}_insertDescriptor(e){const t=this._stack,o=t.findIndex((t=>t.id===e.id));if(Xg(e,t[o]))return;o>-1&&t.splice(o,1);let i=0;for(;t[i]&&ep(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 Xg(e,t){return e&&t&&e.priority==t.priority&&tp(e.classes)==tp(t.classes)}function ep(e,t){return e.priority>t.priority||!(e.prioritytp(t.classes)}function tp(e){return Array.isArray(e)?e.sort().join(","):e}const op="ck-widget_selected";function ip(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function np(e,t,o={}){if(!e.is("containerElement"))throw new fe("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass("ck-widget",e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=dp,t.setCustomProperty("widgetLabel",[],e),o.label&&function(e,t){const o=e.getCustomProperty("widgetLabel");o.push(t)}(e,o.label),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 Nu;return o.set("content",Wc),o.render(),t.appendChild(o.element),t}));t.insert(t.createPositionAt(e,0),o),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),ap(e,t),e}function sp(e,t,o){if(t.classes&&o.addClass(Qt(t.classes),e),t.attributes)for(const i in t.attributes)o.setAttribute(i,t.attributes[i],e)}function rp(e,t,o){if(t.classes&&o.removeClass(Qt(t.classes),e),t.attributes)for(const i in t.attributes)o.removeAttribute(i,e)}function ap(e,t,o=sp,i=rp){const n=new Yg;n.on("change:top",((t,n)=>{n.oldDescriptor&&i(e,n.oldDescriptor,n.writer),n.newDescriptor&&o(e,n.newDescriptor,n.writer)}));t.setCustomProperty("addHighlight",((e,t,o)=>n.add(t,o)),e),t.setCustomProperty("removeHighlight",((e,t,o)=>n.remove(t,o)),e)}function lp(e,t,o={}){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),!1!==o.withAriaRole&&t.setAttribute("role","textbox",e),e.isReadOnly||t.setAttribute("tabindex","-1",e),o.label&&t.setAttribute("aria-label",o.label,e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",((o,i,n)=>{t.setAttribute("contenteditable",n?"false":"true",e),n?t.removeAttribute("tabindex",e):t.setAttribute("tabindex","-1",e)})),e.on("change:isFocused",((o,i,n)=>{n?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)})),ap(e,t),e}function cp(e,t){const o=e.getSelectedElement();if(o){const i=gp(e);if(i)return t.createRange(t.createPositionAt(o,i))}return t.schema.findOptimalInsertionRange(e)}function dp(){return null}function up(e){const t=e=>{const{width:t,paddingLeft:o,paddingRight:i}=e.ownerDocument.defaultView.getComputedStyle(e);return parseFloat(t)-(parseFloat(o)||0)-(parseFloat(i)||0)},o=e.parentElement;if(!o)return 0;let i=t(o);let n=0,s=o;for(;isNaN(i);){if(s=s.parentElement,++n>5)return 0;i=t(s)}return i}const hp="widget-type-around";function mp(e,t,o){return!!e&&ip(e)&&!o.isInline(t)}function gp(e){return e.getAttribute(hp)}const pp=["before","after"],fp=(new DOMParser).parseFromString('',"image/svg+xml").firstChild,bp="ck-widget__type-around_disabled";class wp extends fc{_currentFakeCaretModelElement=null;static get pluginName(){return"WidgetTypeAround"}static get isOfficialPlugin(){return!0}static get requires(){return[Kg,Tg]}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",((o,i,n)=>{t.change((e=>{for(const o of t.document.roots)n?e.removeClass(bp,o):e.addClass(bp,o)})),n||e.model.change((e=>{e.removeSelectionAttribute(hp)}))})),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableInsertObjectIntegration(),this._enableDeleteContentIntegration()}destroy(){super.destroy(),this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const o=this.editor,i=o.editing.view,n=o.model.schema.getAttributesWithProperty(e,"copyOnReplace",!0);o.execute("insertParagraph",{position:o.model.createPositionAt(e,t),attributes:n}),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=gp(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,n,s)=>{const r=s.mapper.toViewElement(n.item);if(r&&mp(r,n.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 pp){const i=new ou({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${o}`],title:t[o],"aria-hidden":"true"},children:[e.ownerDocument.importNode(fp,!0)]});e.appendChild(i.render())}}(o,t),function(e){const t=new ou({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(o),o}));e.insert(e.createPositionAt(o,"end"),i)}(s.writer,i,r);r.getCustomProperty("widgetLabel").push((()=>this.isEnabled?o("Press Enter to type after or press Shift + Enter to type before the widget"):""))}}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,o=t.document.selection,i=t.schema,n=e.editing.view;function s(e){return`ck-widget_type-around_show-fake-caret_${e}`}this._listenToIfEnabled(n.document,"arrowKey",((e,t)=>{this._handleArrowKeyPress(e,t)}),{context:[ip,"$text"],priority:"high"}),this._listenToIfEnabled(o,"change:range",((t,o)=>{o.directChange&&e.model.change((e=>{e.removeSelectionAttribute(hp)}))})),this._listenToIfEnabled(t.document,"change:data",(()=>{const t=o.getSelectedElement();if(t){if(mp(e.editing.mapper.toViewElement(t),t,i))return}e.model.change((e=>{e.removeSelectionAttribute(hp)}))})),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",((e,t,o)=>{const n=o.writer;if(this._currentFakeCaretModelElement){const e=o.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(n.removeClass(pp.map(s),e),this._currentFakeCaretModelElement=null)}const r=t.selection.getSelectedElement();if(!r)return;const a=o.mapper.toViewElement(r);if(!mp(a,r,i))return;const l=gp(t.selection);l&&(n.addClass(s(l),a),this._currentFakeCaretModelElement=r)})),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",((t,o,i)=>{i||e.model.change((e=>{e.removeSelectionAttribute(hp)}))}))}_handleArrowKeyPress(e,t){const o=this.editor,i=o.model,n=i.document.selection,s=i.schema,r=o.editing.view;if(t.shiftKey)return;const a=function(e,t){const o=Kt(e,t);return"down"===o||"right"===o}(t.keyCode,o.locale.contentLanguageDirection),l=r.document.selection.getSelectedElement();let c;mp(l,o.editing.mapper.toModelElement(l),s)?c=this._handleArrowKeyPressOnSelectedWidget(a):n.isCollapsed?c=this._handleArrowKeyPressWhenSelectionNextToAWidget(a):t.shiftKey||(c=this._handleArrowKeyPressWhenNonCollapsedSelection(a)),c&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,o=gp(t.document.selection);return t.change((t=>{if(!o)return t.setSelectionAttribute(hp,e?"after":"before"),!0;if(!(o===(e?"after":"before")))return t.removeSelectionAttribute(hp),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,o=t.model,i=o.schema,n=t.plugins.get("Widget"),s=n._getObjectElementNextToSelection(e);return!!mp(t.editing.mapper.toViewElement(s),s,i)&&(o.change((t=>{n._setSelectionOverElement(s),t.setSelectionAttribute(hp,e?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(e){const t=this.editor,o=t.model,i=o.schema,n=t.editing.mapper,s=o.document.selection,r=e?s.getLastPosition().nodeBefore:s.getFirstPosition().nodeAfter;return!!mp(n.toViewElement(r),r,i)&&(o.change((t=>{t.setSelection(r,"on"),t.setSelectionAttribute(hp,e?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",((o,i)=>{const n=i.domTarget.closest(".ck-widget__type-around__button");if(!n)return;const s=function(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(n),r=function(e,t){const o=e.closest(".ck-widget");return t.mapDomToView(o)}(n,t.domConverter),a=e.editing.mapper.toModelElement(r);this._insertParagraph(a,s),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 n=t.getSelectedElement(),s=e.editing.mapper.toViewElement(n),r=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:mp(s,n,r)&&(this._insertParagraph(n,i.isSoft?"before":"after"),a=!0),a&&(i.preventDefault(),o.stop())}),{context:ip})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view.document;this._listenToIfEnabled(e,"insertText",((t,o)=>{this._insertParagraphAccordingToFakeCaretPosition()&&(o.selection=e.selection)}),{priority:"high"}),Y.isAndroid?this._listenToIfEnabled(e,"keydown",((e,t)=>{229==t.keyCode&&this._insertParagraphAccordingToFakeCaretPosition()})):this._listenToIfEnabled(e,"compositionstart",(()=>{this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"highest"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,o=e.model,i=o.schema;this._listenToIfEnabled(t.document,"delete",((t,n)=>{if("atTarget"!=t.eventPhase)return;const s=gp(o.document.selection);if(!s)return;const r=n.direction,a=o.document.selection.getSelectedElement(),l="forward"==r;if("before"===s===l)e.execute("delete",{selection:o.createSelection(a,"on")});else{const t=i.getNearestSelectionRange(o.createPositionAt(a,s),r);if(t)if(t.isCollapsed){const n=o.createSelection(t.start);if(o.modifySelection(n,{direction:r}),n.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")}))}n.preventDefault(),t.stop()}),{context:ip})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,o=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",((e,[i,n])=>{if(n&&!n.is("documentSelection"))return;const s=gp(o);return s?(e.stop(),t.change((e=>{const n=o.getSelectedElement(),r=t.createPositionAt(n,s),a=e.createSelection(r),l=t.insertContent(i,a);return e.setSelection(a),l}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"insertObject",((e,o)=>{const[,i,n={}]=o;if(i&&!i.is("documentSelection"))return;const s=gp(t);s&&(n.findOptimalPosition=s,o[3]=n)}),{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;gp(t)&&e.stop()}),{priority:"high"})}}function yp(e){const t=e.model;return(o,i)=>{const n=i.keyCode==qt.arrowup,s=i.keyCode==qt.arrowdown,r=i.shiftKey,a=t.document.selection;if(!n&&!s)return;const l=s,c=function(e,t,o){const i=e.model;if(o){const e=t.focus,o=_p(i,e,"forward");if(!o)return;const n=i.createRange(e,o),s=kp(i.schema,n,"backward");if(s)return i.createRange(e,s)}else{const e=t.focus,o=_p(i,e,"backward");if(!o)return;const n=i.createRange(o,e),s=kp(i.schema,n,"forward");if(s)return i.createRange(s,e)}}(e,a,l);if(c){if(c.isCollapsed){if(a.isCollapsed)return;if(r)return}(c.isCollapsed||function(e,t,o){const i=e.model,n=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 s=e.mapper.toViewRange(t),r=n.viewRangeToDom(s),a=ut.getDomRangeRects(r);let l;for(const e of a)if(void 0!==l){if(Math.round(e.top)>=l)return!1;l=Math.max(l,Math.round(e.bottom))}else l=Math.round(e.bottom);return!0}(e,c,l))&&(t.change((e=>{const o=l?c.end:c.start;if(r){const i=t.createSelection(a.anchor);i.setFocus(o),e.setSelection(i)}else e.setSelection(o)})),o.stop(),i.preventDefault(),i.stopPropagation())}}}function _p(e,t,o){const i=e.schema,n=e.createRangeIn(t.root),s="forward"==o?"elementStart":"elementEnd";for(const{previousPosition:e,item:r,type:a}of n.getWalker({startPosition:t,direction:o})){if(i.isLimit(r)&&!i.isInline(r))return e;if(a==s&&i.isBlock(r))return null}return null}function kp(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}class vp extends fc{_previouslySelected=new Set;static get pluginName(){return"Widget"}static get isOfficialPlugin(){return!0}static get requires(){return[wp,Tg]}init(){const e=this.editor,t=e.editing.view,o=t.document,i=e.t;this.editor.editing.downcastDispatcher.on("selection",((t,o,i)=>{const n=i.writer,s=o.selection;if(s.isCollapsed)return;const r=s.getSelectedElement();if(!r)return;const a=e.editing.mapper.toViewElement(r);var l;ip(a)&&(i.consumable.consume(s,"selection")&&n.setSelection(n.createRangeOn(a),{fake:!0,label:(l=a,l.getCustomProperty("widgetLabel").reduce(((e,t)=>"function"==typeof t?e?e+". "+t():t():e?e+". "+t:t),""))}))})),this.editor.editing.downcastDispatcher.on("selection",((e,t,o)=>{this._clearPreviouslySelectedWidgets(o.writer);const i=o.writer,n=i.document.selection;let s=null;for(const e of n.getRanges())for(const t of e){const e=t.item;ip(e)&&!Cp(e,s)&&(i.addClass(op,e),this._previouslySelected.add(e),s=e)}}),{priority:"low"}),t.addObserver(il),t.addObserver(sl),this.listenTo(o,"mousedown",((...e)=>this._onMousedown(...e))),this.listenTo(o,"pointerdown",((...e)=>this._onPointerdown(...e))),this.listenTo(o,"arrowKey",((...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)}),{context:[ip,"$text"]}),this.listenTo(o,"arrowKey",((...e)=>{this._preventDefaultOnArrowKeyPress(...e)}),{context:"$root"}),this.listenTo(o,"arrowKey",yp(this.editor.editing),{context:"$text"}),this.listenTo(o,"delete",((e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())}),{context:"$root"}),this.listenTo(o,"tab",((e,o)=>{this._selectNextEditable(o.shiftKey?"backward":"forward")&&(t.scrollToTheSelection(),o.preventDefault(),e.stop())}),{context:e=>ip(e)||e.is("editableElement"),priority:"low"}),this.listenTo(o,"keydown",((e,t)=>{t.keystroke==qt.esc&&this._selectAncestorWidget()&&(t.preventDefault(),e.stop())}),{context:e=>e.is("editableElement"),priority:"low"}),e.accessibility.addKeystrokeInfoGroup({id:"widget",label:i("Keystrokes that can be used when a widget is selected (for example: image, table, etc.)"),keystrokes:[{label:i("Move focus from an editable area back to the parent widget"),keystroke:"Esc"},{label:i("Insert a new paragraph directly after a widget"),keystroke:"Enter"},{label:i("Insert a new paragraph directly before a widget"),keystroke:"Shift+Enter"},{label:i("Move the caret to allow typing directly before a widget"),keystroke:[["arrowup"],["arrowleft"]]},{label:i("Move the caret to allow typing directly after a widget"),keystroke:[["arrowdown"],["arrowright"]]}]})}_onMousedown(e,t){const o=t.target;o&&t.domEvent.detail>=3&&this._selectBlockContent(o)&&t.preventDefault()}_onPointerdown(e,t){if(!t.domEvent.isPrimary)return;const o=this.editor,i=o.editing.view,n=i.document;let s=t.target;if(!s)return;if(!ip(s)){const e=function(e){let t=e;for(;t;){if(t.is("editableElement")||ip(t))return t;t=t.parent}return null}(s);if(!e)return;if(ip(e))s=e;else{const e=function(e,t){const o=st(t.domEvent);let i=null;i=o?e.domConverter.domRangeToView(o):e.createRange(e.createPositionAt(t.target,0));if(!i)return null;const n=i.start;if(!n.parent)return null;let s=n.parent;n.parent.is("editableElement")&&(n.isAtEnd&&n.nodeBefore?s=n.nodeBefore:n.isAtStart&&n.nodeAfter&&(s=n.nodeAfter));if(s.is("$text"))return s.parent;return s}(i,t);if(!e||!ip(e))return;s=e}}(Y.isAndroid||Y.isiOS)&&t.preventDefault(),n.isFocused||i.focus();const r=o.editing.mapper.toModelElement(s);this._setSelectionOverElement(r)}_selectBlockContent(e){const t=this.editor,o=t.model,i=t.editing.mapper,n=o.schema,s=i.findMappedViewAncestor(this.editor.editing.view.createPositionAt(e,0)),r=function(e,t){for(const o of e.getAncestors({includeSelf:!0,parentFirst:!0})){if(t.checkChild(o,"$text"))return o;if(t.isLimit(o)&&!t.isObject(o))break}return null}(i.toModelElement(s),o.schema);return!!r&&(o.change((e=>{const t=n.isLimit(r)?null:function(e,t){const o=new is({startPosition:e});for(const{item:e}of o){if(t.isLimit(e)||!e.is("element"))return null;if(t.checkChild(e,"$text"))return e}return null}(e.createPositionAfter(r),n),o=e.createPositionAt(r,0),i=t?e.createPositionAt(t,0):e.createPositionAt(r,"end");e.setSelection(e.createRange(o,i))})),!0)}_handleSelectionChangeOnArrowKeyPress(e,t){const o=t.keyCode,i=this.editor.model,n=i.schema,s=i.document.selection,r=s.getSelectedElement(),a=Kt(o,this.editor.locale.contentLanguageDirection),l="down"==a||"right"==a,c="up"==a||"down"==a;if(!t.shiftKey&&!s.isCollapsed){if(function(e,t){const o=e.getFirstPosition(),i=e.getLastPosition(),n=o.nodeAfter,s=i.nodeBefore;return!!n&&t.isObject(n)||!!s&&t.isObject(s)}(s,n)){const o=l?s.getLastPosition():s.getFirstPosition(),r=n.getNearestSelectionRange(o,l?"forward":"backward");r&&(i.change((e=>{e.setSelection(r)})),t.preventDefault(),e.stop())}return}const d=function(e,t){const o=e.document.selection,i=o.getSelectedElement(),n=gp(o);if(i&&"before"==n)return e.createSelection(i,"before");if(i&&"after"==n)return e.createSelection(i,"after");return e.createSelection(o.getRanges(),{backward:i&&e.schema.isObject(i)?!t:o.isBackward})}(i,l),u=i.createSelection(d);if(i.modifySelection(u,{direction:l?"forward":"backward"}),u.isEqual(d))return;u.focus.isTouching(d.focus)&&n.checkChild(u.focus.parent,"$text")&&(l?!u.focus.isAtEnd:!u.focus.isAtStart)&&i.modifySelection(u,{direction:l?"forward":"backward"});const h=l?d.focus.nodeBefore:d.focus.nodeAfter,m=u.focus.nodeBefore,g=u.focus.nodeAfter,p=l?m:g;if(t.shiftKey)(r&&n.isObject(r)||p&&n.isObject(p)||h&&n.isObject(h))&&(i.change((e=>{e.setSelection(u)})),t.preventDefault(),e.stop());else if(p&&n.isObject(p)){if(n.isInline(p)&&c)return;i.change((e=>{e.setSelection(p,"on")})),t.preventDefault(),e.stop()}}_preventDefaultOnArrowKeyPress(e,t){const o=this.editor.model,i=o.schema,n=o.document.selection.getSelectedElement();n&&i.isObject(n)&&(t.preventDefault(),e.stop())}_handleDelete(e){const t=this.editor.model.document.selection;if(!this.editor.model.canEditAt(t))return;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,n=t.createSelection(i);if(t.modifySelection(n,{direction:e?"forward":"backward"}),n.isEqual(i))return null;const s=e?n.focus.nodeBefore:n.focus.nodeAfter;return s&&o.isObject(s)?s:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass(op,t);this._previouslySelected.clear()}_selectNextEditable(e){const t=this.editor.editing,o=t.view,i=this.editor.model,n=o.document.selection,s=i.document.selection;let r;if(s.rangeCount>1){const o=s.isBackward?s.getFirstRange():s.getLastRange();r=t.mapper.toViewPosition("forward"==e?o.end:o.start)}else r="forward"==e?n.getFirstPosition():n.getLastPosition();const a=this._findNextFocusRange(r,e);return!!a&&(i.change((e=>{e.setSelection(a)})),!0)}_findNextFocusRange(e,t){const o=this.editor.editing,i=o.view,n=this.editor.model,s=i.document.selection,r=s.editableElement,a=r.getPath();let l=s.getSelectedElement();l&&!ip(l)&&(l=null);const c="forward"==t?i.createRange(e,i.createPositionAt(e.root,"end")):i.createRange(i.createPositionAt(e.root,0),e);for(const{nextPosition:e}of c.getWalker({direction:t})){const i=e.parent;if(ip(i)&&i!=l){const e=o.mapper.toModelElement(i);if(!n.schema.isBlock(e))continue;if("extension"!=We(a,i.getPath()))return n.createRangeOn(e)}else if(i.is("editableElement")){if(i==r&&!l)continue;const s=o.mapper.toModelPosition(e),c=n.schema.getNearestSelectionRange(s,t);if(!c)continue;return i==r&&l?c:"extension"!=We(a,i.getPath())?n.createRangeIn(n.schema.getLimitElement(c)):c}}return null}_selectAncestorWidget(){const e=this.editor,t=e.editing.mapper,o=e.editing.view.document.selection.getFirstPosition().parent,i=(o.is("$text")?o.parent:o).findAncestor(ip);if(!i)return!1;const n=t.toModelElement(i);return!!n&&(e.model.change((e=>{e.setSelection(n,"on")})),!0)}}function Cp(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}class Ap extends fc{_toolbarDefinitions=new Map;_balloon;static get requires(){return[Qm]}static get pluginName(){return"WidgetToolbarRepository"}static get isOfficialPlugin(){return!0}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||!ip(t))})(e.editing.view.document.selection)&&t.stop()}),{priority:"high"})}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:n="ck-toolbar-container",positions:s}){if(!o.length)return void be("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,a=r.t,l=new Wh(r.locale);if(l.ariaLabel=t||a("Widget toolbar"),this._toolbarDefinitions.has(e))throw new fe("widget-toolbar-duplicated",this,{toolbarId:e});const c={view:l,getRelatedElement:i,balloonClassName:n,itemsConfig:o,positions:s,initialized:!1};r.ui.addToolbar(l,{isContextual:!0,beforeFocus:()=>{const e=i(r.editing.view.document.selection);e&&this._showToolbar(c,e)},afterBlur:()=>{this._hideToolbar(c)}}),this._toolbarDefinitions.set(e,c)}_updateToolbarsVisibility(){let e=0,t=null,o=null;for(const i of this._toolbarDefinitions.values()){const n=i.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&n)if(this.editor.ui.focusTracker.isFocused){const s=n.getAncestors().length;s>e&&(e=s,t=n,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)?xp(this.editor,t,e.positions):this._isToolbarInBalloon(e)||(e.initialized||(e.initialized=!0,e.view.fillFromConfig(e.itemsConfig,this.editor.ui.componentFactory)),this._balloon.add({view:e.view,position:Ep(this.editor,t,e.positions),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(()=>{for(const t of this._toolbarDefinitions.values())if(this._isToolbarVisible(t)){const o=t.getRelatedElement(this.editor.editing.view.document.selection);xp(this.editor,o,e.positions)}})))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function xp(e,t,o){const i=e.plugins.get("ContextualBalloon"),n=Ep(e,t,o);i.updatePosition(n)}function Ep(e,t,o){const i=e.editing.view,n=dh.defaultPositions;return{target:i.domConverter.mapViewToDom(t),positions:o||[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,n.viewportStickyNorth]}}class Tp extends(Be()){_referenceCoordinates;_options;_originalWidth;_originalHeight;_originalWidthPercents;_aspectRatio;constructor(e){super(),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}get originalWidth(){return this._originalWidth}get originalHeight(){return this._originalHeight}get originalWidthPercents(){return this._originalWidthPercents}get aspectRatio(){return this._aspectRatio}begin(e,t,o){const i=new ut(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const o of t)if(e.classList.contains(Pp(o)))return o}(e),this._referenceCoordinates=function(e,t){const o=new ut(e),i=t.split("-"),n={x:"right"==i[1]?o.right:o.left,y:"bottom"==i[0]?o.bottom:o.top};return n.x+=e.ownerDocument.defaultView.scrollX,n.y+=e.ownerDocument.defaultView.scrollY,n}(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 n=o.style.width;n&&n.match(/^\d+(\.\d*)?%$/)?this._originalWidthPercents=parseFloat(n):this._originalWidthPercents=function(e,t=new ut(e)){const o=up(e);return o?t.width/o*100:0}(o,i)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}function Pp(e){return`ck-widget__resizer__handle-${e}`}class Sp extends Au{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 Ip extends(Be()){_state;_sizeView;_options;_viewResizerWrapper=null;_initialViewWidth;constructor(e){super(),this._options=e,this.set("isEnabled",!0),this.set("isSelected",!1),this.bind("isVisible").to(this,"isEnabled",this,"isSelected",((e,t)=>e&&t)),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"})}get state(){return this._state}show(){this._options.editor.editing.view.change((e=>{e.removeClass("ck-hidden",this._viewResizerWrapper)}))}hide(){this._options.editor.editing.view.change((e=>{e.addClass("ck-hidden",this._viewResizerWrapper)}))}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),o}));o.insert(o.createPositionAt(t,"end"),i),o.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=i,this.isVisible||this.hide()})),this.on("change:isVisible",(()=>{this.isVisible?(this.show(),this.redraw()):this.hide()}))}begin(e){this._state=new Tp(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 ut(o),n=Math.round(i.width),s=Math.round(i.height),r=new ut(o);t.width=Math.round(r.width),t.height=Math.round(r.height),this.redraw(i),this.state.update({...t,handleHostWidth:n,handleHostHeight:s})}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,n=this._getHandleHost(),s=this._viewResizerWrapper,r=[s.getStyle("width"),s.getStyle("height"),s.getStyle("left"),s.getStyle("top")];let a;if(i.isSameNode(n)){const t=e||new ut(n);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[n.offsetWidth+"px",n.offsetHeight+"px",n.offsetLeft+"px",n.offsetTop+"px"];"same"!==We(r,a)&&this._options.editor.editing.view.change((e=>{e.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},s)}))}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 n=!this._options.isCentered||this._options.isCentered(this),s={x:t._referenceCoordinates.x-(o.x+t.originalWidth),y:o.y-t.originalHeight-t._referenceCoordinates.y};n&&t.activeHandlePosition.endsWith("-right")&&(s.x=o.x-(t._referenceCoordinates.x+t.originalWidth)),n&&(s.x*=2);let r=Math.abs(t.originalWidth+s.x),a=Math.abs(t.originalHeight+s.y);return"width"==(r/t.aspectRatio>a?"width":"height")?a=r/t.aspectRatio:r=a*t.aspectRatio,{width:Math.round(r),height:Math.round(a),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*r*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 ou({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(o=i,`ck-widget__resizer__handle-${o}`)}}).render());var o}_appendSizeUI(e){this._sizeView=new Sp,this._sizeView.render(),e.appendChild(this._sizeView.element)}}class Rp extends fc{_resizers=new Map;_observer;_redrawSelectedResizerThrottled;static get pluginName(){return"WidgetResize"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.editing,t=J.window.document;this.set("selectedResizer",null),this.set("_activeResizer",null),e.view.addObserver(il),this._observer=new(et()),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)),this._redrawSelectedResizerThrottled=oc((()=>this.redrawSelectedResizer()),200),this.editor.ui.on("update",this._redrawSelectedResizerThrottled),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.window,"resize",this._redrawSelectedResizerThrottled);const o=this.editor.editing.view.document.selection;o.on("change",(()=>{const e=o.getSelectedElement(),t=this.getResizerByViewElement(e)||null;t?this.select(t):this.deselect()}))}redrawSelectedResizer(){this.selectedResizer&&this.selectedResizer.isVisible&&this.selectedResizer.redraw()}destroy(){super.destroy(),this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawSelectedResizerThrottled.cancel()}select(e){this.deselect(),this.selectedResizer=e,this.selectedResizer.isSelected=!0}deselect(){this.selectedResizer&&(this.selectedResizer.isSelected=!1),this.selectedResizer=null}attachTo(e){const t=new Ip(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.select(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;Ip.isResizeHandle(o)&&(this._activeResizer=this._getResizerByHandle(o)||null,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)}}class Op extends fc{static get pluginName(){return"OPMacroToc"}static get buttonName(){return"insertToc"}init(){const e=this.editor,t=e.model,o=e.conversion;t.schema.register("op-macro-toc",{allowWhere:"$block",isBlock:!0,isLimit:!0}),o.for("upcast").elementToElement({view:{name:"macro",classes:"toc"},model:"op-macro-toc"}),o.for("editingDowncast").elementToElement({model:"op-macro-toc",view:(e,{writer:t})=>np(this.createTocViewElement(t),t,{label:this.label})}),o.for("dataDowncast").elementToElement({model:"op-macro-toc",view:(e,{writer:t})=>this.createTocDataElement(t)}),e.ui.componentFactory.add(Op.buttonName,(t=>{const o=new Lu(t);return o.set({label:this.label,withText:!0}),o.on("execute",(()=>{e.model.change((t=>{const o=t.createElement("op-macro-toc",{});e.model.insertContent(o,e.model.document.selection)}))})),o}))}get label(){return window.I18n.t("js.editor.macro.toc")}createTocViewElement(e){const t=e.createText(this.label),o=e.createContainerElement("div");return e.insert(e.createPositionAt(o,0),t),o}createTocDataElement(e){return e.createContainerElement("macro",{class:"toc"})}}const Vp=Symbol("isOPEmbeddedTable");function Dp(e){const t=e.getSelectedElement();return!(!t||!function(e){return!!e.getCustomProperty(Vp)&&ip(e)}(t))}function Fp(e){return _.get(e.config,"_config.openProject.context.resource")}function Mp(e){return _.get(e.config,"_config.openProject.pluginContext")}function Np(e,t){return Mp(e).services[t]}function Bp(e){return Np(e,"pathHelperService")}function Lp(e){return Np(e,"i18n")}class zp extends fc{static get pluginName(){return"EmbeddedTableEditing"}static get buttonName(){return"insertEmbeddedTable"}init(){const e=this.editor,t=e.model,o=e.conversion,i=Mp(e);this.text={button:window.I18n.t("js.editor.macro.embedded_table.button"),macro_text:window.I18n.t("js.editor.macro.embedded_table.text")},t.schema.register("op-macro-embedded-table",{allowWhere:"$block",allowAttributes:["opEmbeddedTableQuery"],isBlock:!0,isObject:!0}),o.for("upcast").elementToElement({view:{name:"macro",classes:"embedded-table"},model:(e,{writer:t})=>{const o=e.getAttribute("data-query-props");return t.createElement("op-macro-embedded-table",{opEmbeddedTableQuery:o?JSON.parse(o):{}})}}),o.for("editingDowncast").elementToElement({model:"op-macro-embedded-table",view:(e,{writer:t})=>{return o=this.createEmbeddedTableView(t),i=t,this.label,i.setCustomProperty(Vp,!0,o),np(o,i,{label:"your label here"});var o,i}}),o.for("dataDowncast").elementToElement({model:"op-macro-embedded-table",view:(e,{writer:t})=>this.createEmbeddedTableDataElement(e,t)}),e.ui.componentFactory.add(zp.buttonName,(t=>{const o=new Lu(t);return o.set({label:this.text.button,withText:!0}),o.on("execute",(()=>i.runInZone((()=>{i.services.externalQueryConfiguration.show({currentQuery:{},callback:t=>e.model.change((o=>{const i=o.createElement("op-macro-embedded-table",{opEmbeddedTableQuery:t});e.model.insertContent(i,e.model.document.selection)}))})})))),o}))}createEmbeddedTableView(e){const t=e.createText(this.text.macro_text),o=e.createContainerElement("div");return e.insert(e.createPositionAt(o,0),t),o}createEmbeddedTableDataElement(e,t){const o=e.getAttribute("opEmbeddedTableQuery")||{};return t.createContainerElement("macro",{class:"embedded-table","data-query-props":JSON.stringify(o)})}}function jp(e,t,o){e.ui.componentFactory.add(t,(t=>{const i=new Lu(t);return i.set({label:I18n.t("js.button_edit"),icon:'\n',tooltip:!0}),i.on("execute",(()=>{const t=e.model.document.selection.getSelectedElement();t&&o(t)})),i}))}const qp="ck-toolbar-container";function $p(e,t,o,i){const n=t.config.get(o+".toolbar");if(!n||!n.length)return;const s=t.plugins.get("ContextualBalloon"),r=new Wh(t.locale);function a(){t.ui.focusTracker.isFocused&&i(t.editing.view.document.selection)?c()?function(e,t){const o=e.plugins.get("ContextualBalloon");if(t(e.editing.view.document.selection)){const t=Hp(e);o.updatePosition(t)}}(t,i):s.hasView(r)||s.add({view:r,position:Hp(t),balloonClassName:qp}):l()}function l(){c()&&s.remove(r)}function c(){return s.visibleView==r}r.fillFromConfig(n,t.ui.componentFactory),e.listenTo(t.editing.view,"render",a),e.listenTo(t.ui.focusTracker,"change:isFocused",a,{priority:"low"})}function Hp(e){const t=e.editing.view,o=dh.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast]}}class Wp extends fc{static get requires(){return[Qm]}static get pluginName(){return"EmbeddedTableToolbar"}init(){const e=this.editor,t=this.editor.model,o=Mp(e);jp(e,"opEditEmbeddedTableQuery",(e=>{const i=o.services.externalQueryConfiguration,n=e.getAttribute("opEmbeddedTableQuery")||{};o.runInZone((()=>{i.show({currentQuery:n,callback:o=>t.change((t=>{t.setAttribute("opEmbeddedTableQuery",o,e)}))})}))}))}afterInit(){$p(this,this.editor,"OPMacroEmbeddedTable",Dp)}}const Up=Symbol("isWpButtonMacroSymbol");function Kp(e){const t=e.getSelectedElement();return!(!t||!function(e){return!!e.getCustomProperty(Up)&&ip(e)}(t))}class Gp extends fc{static get pluginName(){return"OPMacroWpButtonEditing"}static get buttonName(){return"insertWorkPackageButton"}init(){const e=this.editor,t=e.model,o=e.conversion,i=Mp(e);t.schema.register("op-macro-wp-button",{allowWhere:["$block"],allowAttributes:["type","classes"],isBlock:!0,isLimit:!0}),o.for("upcast").elementToElement({view:{name:"macro",classes:"create_work_package_link"},model:(e,{writer:t})=>{const o=e.getAttribute("data-type")||"",i=e.getAttribute("data-classes")||"";return t.createElement("op-macro-wp-button",{type:o,classes:i})}}),o.for("editingDowncast").elementToElement({model:"op-macro-wp-button",view:(e,{writer:t})=>this.createMacroViewElement(e,t)}),o.for("dataDowncast").elementToElement({model:"op-macro-wp-button",view:(e,{writer:t})=>t.createContainerElement("macro",{class:"create_work_package_link","data-type":e.getAttribute("type")||"","data-classes":e.getAttribute("classes")||""})}),e.ui.componentFactory.add(Gp.buttonName,(t=>{const o=new Lu(t);return o.set({label:window.I18n.t("js.editor.macro.work_package_button.button"),withText:!0}),o.on("execute",(()=>{i.services.macros.configureWorkPackageButton().then((t=>e.model.change((o=>{const i=o.createElement("op-macro-wp-button",{});o.setAttribute("type",t.type,i),o.setAttribute("classes",t.classes,i),e.model.insertContent(i,e.model.document.selection)}))))})),o}))}macroLabel(e){return e?window.I18n.t("js.editor.macro.work_package_button.with_type",{typename:e}):window.I18n.t("js.editor.macro.work_package_button.without_type")}createMacroViewElement(e,t){const o=e.getAttribute("classes")||"",i=this.macroLabel(),n=t.createText(i),s=t.createContainerElement("span",{class:o});return t.insert(t.createPositionAt(s,0),n),function(e,t,o){return t.setCustomProperty(Up,!0,e),np(e,t,{label:o})}(s,t,{label:i})}}class Jp extends fc{static get requires(){return[Qm]}static get pluginName(){return"OPMacroWpButtonToolbar"}init(){const e=this.editor,t=Mp(e);jp(e,"opEditWpMacroButton",(o=>{const i=t.services.macros,n=o.getAttribute("type"),s=o.getAttribute("classes");i.configureWorkPackageButton(n,s).then((t=>e.model.change((e=>{e.setAttribute("classes",t.classes,o),e.setAttribute("type",t.type,o)}))))}))}afterInit(){$p(this,this.editor,"OPMacroWpButton",Kp)}}class Zp extends(Be()){total;_reader;_data;constructor(){super();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()}}class Qp extends fc{loaders=new eo;_loadersMap=new Map;_pendingAction=null;static get pluginName(){return"FileRepository"}static get isOfficialPlugin(){return!0}static get requires(){return[Lc]}init(){this.loaders.on("change",(()=>this._updatePendingAction())),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 be("filerepository-no-upload-adapter"),null;const t=new Yp(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 Yp?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(Lc);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}}class Yp extends(Be()){id;_filePromiseWrapper;_adapter;_reader;constructor(e,t){super(),this.id=me(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new Zp,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 fe("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 fe("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}}class Xp{constructor(e,t,o){this.loader=e,this.resource=t,this.editor=o}upload(){const e=this.resource,t=Np(this.editor,"attachmentsResourceService");return e?this.loader.file.then((o=>t.attachFiles(e,[o]).toPromise().then((e=>(this.editor.model.fire("op:attachment-added",e),this.buildResponse(e[0])))).catch((e=>{console.error("Failed upload %O",e)})))):(console.warn("resource not available in this CKEditor instance"),Promise.reject("Not possible to upload attachments without resource"))}buildResponse(e){return{default:e._links.staticDownloadLocation.href}}abort(){return!1}}function ef(e){return e}function tf(e,t,o){return"function"!=typeof o?tf(e,t,(()=>{})):of(e,t,(function e(t,i,n,s,r,a){const l=o(t,i,n,s,r,a);return void 0!==l?Boolean(l):of(t,i,e,a)}),new Map)}function of(e,t,o,i){if(t===e)return!0;switch(typeof t){case"object":return function(e,t,o,i){if(null==t)return!0;if(Array.isArray(t))return nf(e,t,o,i);if(t instanceof Map)return function(e,t,o,i){if(0===t.size)return!0;if(!(e instanceof Map))return!1;for(const[n,s]of t.entries()){if(!1===o(e.get(n),s,n,e,t,i))return!1}return!0}(e,t,o,i);if(t instanceof Set)return function(e,t,o,i){if(0===t.size)return!0;if(!(e instanceof Set))return!1;return nf([...e],[...t],o,i)}(e,t,o,i);const n=Object.keys(t);if(null==e||V(e))return 0===n.length;if(0===n.length)return!0;if(i?.has(t))return i.get(t)===e;i?.set(t,e);try{for(let s=0;s0?of(e,{...t},o,i):Co(e,t);default:return s(e)?"string"!=typeof t||""===t:Co(e,t)}}function nf(e,t,o,i){if(0===t.length)return!0;if(!Array.isArray(e))return!1;const n=new Set;for(let s=0;s{}))}function rf(e){var t;return e=F(t=e,void 0,t,new Map,void 0),t=>sf(t,e)}function af(e,t){let o;if(o=Array.isArray(t)?t:"string"==typeof t&&wo(t)&&null==e?.[t]?ko(t):[t],0===o.length)return!1;let i=e;for(let e=0;e{i.preventDefault();const n=i.dropRange?[i.dropRange]:null,s=new ue(t,e);t.fire(s,{dataTransfer:i.dataTransfer,method:o.name,targetRanges:n,target:i.target,domEvent:i.domEvent}),s.stop.called&&i.stopPropagation()}}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="clipboardData"in e?e.clipboardData:e.dataTransfer,o="drop"==e.type||"paste"==e.type,i={dataTransfer:new Jn(t,{cacheFiles:o})};if("drop"==e.type||"dragover"==e.type){const t=st(e);i.dropRange=t&&this.view.domConverter.domRangeToView(t)}this.fire(e.type,e,i)}}const uf=["figcaption","li"],hf=["ol","ul"];function mf(e,t){if(t.is("$text")||t.is("$textProxy"))return t.data;if(t.is("element","img")&&t.hasAttribute("alt"))return t.getAttribute("alt");if(t.is("element","br"))return"\n";let o="",i=null;for(const n of t.getChildren())o+=pf(n,i)+mf(e,n),i=n;if(t.is("rawElement")){const i=document.implementation.createHTMLDocument("").createElement("div");t.render(i,e),o+=gf(i)}return o}function gf(e){let t="";if(e.nodeType===Node.TEXT_NODE)return e.textContent;if("BR"===e.tagName)return"\n";for(const o of e.childNodes)t+=gf(o);return t}function pf(e,t){return t?e.is("element","li")&&!e.isEmpty&&e.getChild(0).is("containerElement")||hf.includes(e.name)&&hf.includes(t.name)?"\n\n":e.is("containerElement")||t.is("containerElement")?uf.includes(e.name)||uf.includes(t.name)?"\n":e.is("element")&&e.getCustomProperty("dataPipeline:transparentRendering")||t.is("element")&&t.getCustomProperty("dataPipeline:transparentRendering")?"":"\n\n":"":""}class ff extends fc{_markersToCopy=new Map;static get pluginName(){return"ClipboardMarkersUtils"}static get isOfficialPlugin(){return!0}_registerMarkerToCopy(e,t){this._markersToCopy.set(e,t)}_copySelectedFragmentWithMarkers(e,t,o=e=>e.model.getSelectedContent(e.model.document.selection)){return this.editor.model.change((i=>{const n=i.model.document.selection;i.setSelection(t);const s=this._insertFakeMarkersIntoSelection(i,i.model.document.selection,e),r=o(i),a=this._removeFakeMarkersInsideElement(i,r);for(const[e,t]of Object.entries(s)){a[e]||=i.createRangeIn(r);for(const e of t)i.remove(e)}r.markers.clear();for(const[e,t]of Object.entries(a))r.markers.set(e,t);return i.setSelection(n),r}))}_pasteMarkersIntoTransformedElement(e,t){const o=this._getPasteMarkersFromRangeMap(e);return this.editor.model.change((e=>{const i=this._insertFakeMarkersElements(e,o),n=t(e),s=this._removeFakeMarkersInsideElement(e,n);for(const t of Object.values(i).flat())e.remove(t);for(const[t,o]of Object.entries(s))e.model.markers.has(t)||e.addMarker(t,{usingOperation:!0,affectsData:!0,range:o});return n}))}_pasteFragmentWithMarkers(e){const t=this._getPasteMarkersFromRangeMap(e.markers);e.markers.clear();for(const o of t)e.markers.set(o.name,o.range);return this.editor.model.insertContent(e)}_forceMarkersCopy(e,t,o={allowedActions:"all",copyPartiallySelected:!0,duplicateOnPaste:!0}){const i=this._markersToCopy.get(e);this._markersToCopy.set(e,o),t(),i?this._markersToCopy.set(e,i):this._markersToCopy.delete(e)}_isMarkerCopyable(e,t){const o=this._getMarkerClipboardConfig(e);if(!o)return!1;if(!t)return!0;const{allowedActions:i}=o;return"all"===i||i.includes(t)}_hasMarkerConfiguration(e){return!!this._getMarkerClipboardConfig(e)}_getMarkerClipboardConfig(e){const[t]=e.split(":");return this._markersToCopy.get(t)||null}_insertFakeMarkersIntoSelection(e,t,o){const i=this._getCopyableMarkersFromSelection(e,t,o);return this._insertFakeMarkersElements(e,i)}_getCopyableMarkersFromSelection(e,t,o){const i=Array.from(t.getRanges()),n=new Set(i.flatMap((t=>Array.from(e.model.markers.getMarkersIntersectingRange(t)))));return Array.from(n).filter((e=>{if(!this._isMarkerCopyable(e.name,o))return!1;const{copyPartiallySelected:t}=this._getMarkerClipboardConfig(e.name);if(!t){const t=e.getRange();return i.some((e=>e.containsRange(t,!0)))}return!0})).map((e=>({name:"dragstart"===o?this._getUniqueMarkerName(e.name):e.name,range:e.getRange()})))}_getPasteMarkersFromRangeMap(e,t=null){const{model:o}=this.editor;return(e instanceof Map?Array.from(e.entries()):Object.entries(e)).flatMap((([e,i])=>{if(!this._hasMarkerConfiguration(e))return[{name:e,range:i}];if(this._isMarkerCopyable(e,t)){const t=this._getMarkerClipboardConfig(e),n=o.markers.has(e)&&"$graveyard"===o.markers.get(e).getRange().root.rootName;return(t.duplicateOnPaste||n)&&(e=this._getUniqueMarkerName(e)),[{name:e,range:i}]}return[]}))}_insertFakeMarkersElements(e,t){const o={},i=t.flatMap((e=>{const{start:t,end:o}=e.range;return[{position:t,marker:e,type:"start"},{position:o,marker:e,type:"end"}]})).sort((({position:e},{position:t})=>e.isBefore(t)?1:-1));for(const{position:t,marker:n,type:s}of i){const i=e.createElement("$marker",{"data-name":n.name,"data-type":s});o[n.name]||(o[n.name]=[]),o[n.name].push(i),e.insert(i,t)}return o}_removeFakeMarkersInsideElement(e,t){return cf(this._getAllFakeMarkersFromElement(e,t).reduce(((t,o)=>{const i=o.markerElement&&e.createPositionBefore(o.markerElement);let n=t[o.name],s=!1;if(n?.start&&n?.end){this._getMarkerClipboardConfig(o.name).duplicateOnPaste?t[this._getUniqueMarkerName(o.name)]=t[o.name]:s=!0,n=null}return s||(t[o.name]={...n,[o.type]:i}),o.markerElement&&e.remove(o.markerElement),t}),{}),(o=>new us(o.start||e.createPositionFromPath(t,[0]),o.end||e.createPositionAt(t,"end"))))}_getAllFakeMarkersFromElement(e,t){const o=Array.from(e.createRangeIn(t)).flatMap((({item:e})=>{if(!e.is("element","$marker"))return[];const t=e.getAttribute("data-name"),o=e.getAttribute("data-type");return[{markerElement:e,name:t,type:o}]})),i=[],n=[];for(const e of o){if("end"===e.type){o.some((t=>t.name===e.name&&"start"===t.type))||i.push({markerElement:null,name:e.name,type:"start"})}if("start"===e.type){o.some((t=>t.name===e.name&&"end"===t.type))||n.unshift({markerElement:null,name:e.name,type:"end"})}}return[...i,...o,...n]}_getUniqueMarkerName(e){const t=e.split(":"),o=me().substring(1,6);return 3===t.length?`${t.slice(0,2).join(":")}:${o}`:`${t.join(":")}:${o}`}}class bf extends fc{static get pluginName(){return"ClipboardPipeline"}static get isOfficialPlugin(){return!0}static get requires(){return[ff]}init(){this.editor.editing.view.addObserver(df),this._setupPasteDrop(),this._setupCopyCut()}_fireOutputTransformationEvent(e,t,o){const i=this.editor.plugins.get("ClipboardMarkersUtils");this.editor.model.enqueueChange({isUndoable:"cut"===o},(()=>{const n=i._copySelectedFragmentWithMarkers(o,t);this.fire("outputTransformation",{dataTransfer:e,content:n,method:o})}))}_setupPasteDrop(){const e=this.editor,t=e.model,o=e.editing.view,i=o.document,n=this.editor.plugins.get("ClipboardMarkersUtils");this.listenTo(i,"clipboardInput",((t,o)=>{"paste"!=o.method||e.model.canEditAt(e.model.document.selection)||t.stop()}),{priority:"highest"}),this.listenTo(i,"clipboardInput",((e,t)=>{const i=t.dataTransfer;let n;if(t.content)n=t.content;else{let e="";i.getData("text/html")?e=function(e){return e.replace(/(\s+)<\/span>/g,((e,t)=>1==t.length?" ":t)).replace(//g,"")}(i.getData("text/html")):i.getData("text/plain")&&(((s=(s=i.getData("text/plain")).replace(/&/g,"&").replace(//g,">").replace(/\r?\n\r?\n/g,"

      ").replace(/\r?\n/g,"
      ").replace(/\t/g,"    ").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

      ")||s.includes("
      "))&&(s=`

      ${s}

      `),e=s),n=this.editor.data.htmlProcessor.toView(e)}var s;const r=new ue(this,"inputTransformation"),a=i.getData("application/ckeditor5-editor-id")||null;this.fire(r,{content:n,dataTransfer:i,sourceEditorId:a,targetRanges:t.targetRanges,method:t.method}),r.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,sourceEditorId:o.sourceEditorId,dataTransfer:o.dataTransfer,targetRanges:o.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((e,t)=>{t.resultRange=n._pasteFragmentWithMarkers(t.content)}),{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,o=e.editing.view.document,i=(e,o)=>{const i=o.dataTransfer;o.preventDefault(),this._fireOutputTransformationEvent(i,t.selection,e.name)};this.listenTo(o,"copy",i,{priority:"low"}),this.listenTo(o,"cut",((t,o)=>{e.model.canEditAt(e.model.document.selection)?i(t,o):o.preventDefault()}),{priority:"low"}),this.listenTo(this,"outputTransformation",((t,i)=>{const n=e.data.toView(i.content,{isClipboardPipeline:!0});o.fire("clipboardOutput",{dataTransfer:i.dataTransfer,content:n,method:i.method})}),{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",mf(e.data.htmlProcessor.domConverter,i.content)),i.dataTransfer.setData("application/ckeditor5-editor-id",this.editor.id)),"cut"==i.method&&e.model.deleteContent(t.selection)}),{priority:"low"})}}const wf=yt("px");class yf extends Au{constructor(){super();const e=this.bindTemplate;this.set({isVisible:!1,left:null,top:null,width:null}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-clipboard-drop-target-line",e.if("isVisible","ck-hidden",(e=>!e))],style:{left:e.to("left",(e=>wf(e))),top:e.to("top",(e=>wf(e))),width:e.to("width",(e=>wf(e)))}}})}}class _f extends fc{removeDropMarkerDelayed=co((()=>this.removeDropMarker()),40);_updateDropMarkerThrottled=oc((e=>this._updateDropMarker(e)),40);_reconvertMarkerThrottled=oc((()=>{this.editor.model.markers.has("drop-target")&&this.editor.editing.reconvertMarker("drop-target")}),0);_dropTargetLineView=new yf;_domEmitter=new(et());_scrollables=new Map;static get pluginName(){return"DragDropTarget"}static get isOfficialPlugin(){return!0}init(){this._setupDropMarker()}destroy(){this._domEmitter.stopListening();for(const{resizeObserver:e}of this._scrollables.values())e.destroy();return this._updateDropMarkerThrottled.cancel(),this.removeDropMarkerDelayed.cancel(),this._reconvertMarkerThrottled.cancel(),super.destroy()}updateDropMarker(e,t,o,i,n,s){this.removeDropMarkerDelayed.cancel();const r=kf(this.editor,e,t,o,i,n,s);return r?s&&s.containsRange(r)||r&&!this.editor.model.canEditAt(r)?(this.removeDropMarker(),null):(this._updateDropMarkerThrottled(r),r):null}getFinalDropRange(e,t,o,i,n,s){const r=kf(this.editor,e,t,o,i,n,s);return this.removeDropMarker(),r}removeDropMarker(){const e=this.editor.model;this.removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),this._dropTargetLineView.isVisible=!1,e.markers.has("drop-target")&&e.change((e=>{e.removeMarker("drop-target")}))}_setupDropMarker(){const e=this.editor;e.ui.view.body.add(this._dropTargetLineView),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 this._dropTargetLineView.isVisible=!1,this._createDropTargetPosition(o);t.markerRange.isCollapsed?this._updateDropTargetLine(t.markerRange):this._dropTargetLineView.isVisible=!1}})}_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})}))}_createDropTargetPosition(e){return e.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.append("⁠",e.createElement("span"),"⁠"),t}))}_updateDropTargetLine(e){const t=this.editor.editing,o=e.start.nodeBefore,i=e.start.nodeAfter,n=e.start.parent,s=o?t.mapper.toViewElement(o):null,r=s?t.view.domConverter.mapViewToDom(s):null,a=i?t.mapper.toViewElement(i):null,l=a?t.view.domConverter.mapViewToDom(a):null,c=t.mapper.toViewElement(n);if(!c)return;const d=t.view.domConverter.mapViewToDom(c),u=this._getScrollableRect(c),{scrollX:h,scrollY:m}=J.window,g=r?new ut(r):null,p=l?new ut(l):null,f=new ut(d).excludeScrollbarsAndBorders(),b=g?g.bottom:f.top,w=p?p.top:f.bottom,y=J.window.getComputedStyle(d),_=b<=w?(b+w)/2:w;if(u.top<_&&_a.schema.checkChild(s,e)))){if(a.schema.checkChild(s,"$text"))return a.createRange(s);if(t)return Cf(e,xf(e,t.parent),i,n)}}}else if(a.schema.isInline(c))return Cf(e,c,i,n);if(a.schema.isBlock(c))return Cf(e,c,i,n);if(a.schema.checkChild(c,"$block")){const t=Array.from(c.getChildren()).filter((t=>t.is("element")&&!vf(e,t)));let o=0,s=t.length;if(0==s)return a.createRange(a.createPositionAt(c,"end"));for(;o{o?(this.forceDisabled("readOnlyMode"),this._isBlockDragging=!1):this.clearForceDisabled("readOnlyMode")})),Y.isAndroid&&this.forceDisabled("noAndroidSupport"),e.plugins.has("BlockToolbar")){const t=e.plugins.get("BlockToolbar").buttonView.element;this._domEmitter.listenTo(t,"dragstart",((e,t)=>this._handleBlockDragStart(t))),this._domEmitter.listenTo(J.document,"dragover",((e,t)=>this._handleBlockDragging(t))),this._domEmitter.listenTo(J.document,"drop",((e,t)=>this._handleBlockDragging(t))),this._domEmitter.listenTo(J.document,"dragend",(()=>this._handleBlockDragEnd()),{useCapture:!0}),this.isEnabled&&t.setAttribute("draggable","true"),this.on("change:isEnabled",((e,o,i)=>{t.setAttribute("draggable",i?"true":"false")}))}}destroy(){return this._domEmitter.stopListening(),super.destroy()}_handleBlockDragStart(e){if(!this.isEnabled)return;const t=this.editor.model,o=t.document.selection,i=this.editor.editing.view,n=Array.from(o.getSelectedBlocks()),s=t.createRange(t.createPositionBefore(n[0]),t.createPositionAfter(n[n.length-1]));t.change((e=>e.setSelection(s))),this._isBlockDragging=!0,i.focus(),i.getObserver(df).onDomEvent(e)}_handleBlockDragging(e){if(!this.isEnabled||!this._isBlockDragging)return;const t=e.clientX+("ltr"==this.editor.locale.contentLanguageDirection?100:-100),o=e.clientY,i=document.elementFromPoint(t,o),n=this.editor.editing.view;i&&i.closest(".ck-editor__editable")&&n.getObserver(df).onDomEvent({...e,type:e.type,dataTransfer:e.dataTransfer,target:i,clientX:t,clientY:o,preventDefault:()=>e.preventDefault(),stopPropagation:()=>e.stopPropagation()})}_handleBlockDragEnd(){this._isBlockDragging=!1}}class Tf extends fc{_draggedRange;_draggingUid;_draggableElement;_clearDraggableAttributesDelayed=co((()=>this._clearDraggableAttributes()),40);_blockMode=!1;_domEmitter=new(et());_previewContainer;static get pluginName(){return"DragDrop"}static get isOfficialPlugin(){return!0}static get requires(){return[bf,vp,_f,Ef]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,t.addObserver(df),t.addObserver(sl),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),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)})),Y.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._previewContainer&&this._previewContainer.remove(),this._domEmitter.stopListening(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,o=e.editing.view,i=o.document,n=e.plugins.get(_f);this.listenTo(i,"dragstart",((o,i)=>{if(i.target?.is("editableElement"))return void i.preventDefault();if(this._prepareDraggedRange(i.target),!this._draggedRange)return void i.preventDefault();this._draggingUid=me();const n=this.isEnabled&&e.model.canEditAt(this._draggedRange);i.dataTransfer.effectAllowed=n?"copyMove":"copy",i.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const s=t.createSelection(this._draggedRange.toRange());this.editor.plugins.get("ClipboardPipeline")._fireOutputTransformationEvent(i.dataTransfer,s,"dragstart");const{dataTransfer:r,domTarget:a,domEvent:l}=i,{clientX:c}=l;this._updatePreview({dataTransfer:r,domTarget:a,clientX:c}),i.stopPropagation(),n||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(i,"dragend",((e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)}),{priority:"low"}),this._domEmitter.listenTo(J.document,"dragend",(()=>{this._blockMode=!1}),{useCapture:!0}),this.listenTo(i,"dragenter",(()=>{this.isEnabled&&o.focus()})),this.listenTo(i,"dragleave",(()=>{n.removeDropMarkerDelayed()})),this.listenTo(i,"dragging",((e,t)=>{if(!this.isEnabled)return void(t.dataTransfer.dropEffect="none");const{clientX:o,clientY:i}=t.domEvent;n.updateDropMarker(t.target,t.targetRanges,o,i,this._blockMode,this._draggedRange)?(this._draggedRange||(t.dataTransfer.dropEffect="copy"),Y.isGecko||("copy"==t.dataTransfer.effectAllowed?t.dataTransfer.dropEffect="copy":["all","copyMove"].includes(t.dataTransfer.effectAllowed)&&(t.dataTransfer.dropEffect="move")),e.stop()):t.dataTransfer.dropEffect="none"}),{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document,o=e.plugins.get(_f);this.listenTo(t,"clipboardInput",((t,i)=>{if("drop"!=i.method)return;const{clientX:n,clientY:s}=i.domEvent,r=o.getFinalDropRange(i.target,i.targetRanges,n,s,this._blockMode,this._draggedRange);if(!r)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=i.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==Pf(i.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(r,!0))return this._finalizeDragging(!1),void t.stop();i.targetRanges=[e.editing.mapper.toViewRange(r)]}),{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(bf);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"==Pf(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,"pointerdown",((i,n)=>{if(Y.isAndroid||!n)return;this._clearDraggableAttributesDelayed.cancel();let s=Sf(n.target);if(Y.isBlink&&!e.isReadOnly&&!s&&!o.selection.isCollapsed){const e=o.selection.getSelectedElement();e&&ip(e)||(s=o.selection.editableElement)}s&&(t.change((e=>{e.setAttribute("draggable","true",s)})),this._draggableElement=e.editing.mapper.toModelElement(s))})),this.listenTo(o,"pointerup",(()=>{Y.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}))}_finalizeDragging(e){const t=this.editor,o=t.model;if(t.plugins.get(_f).removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")){t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop")}this._draggingUid="",this._previewContainer&&(this._previewContainer.remove(),this._previewContainer=void 0),this._draggedRange&&(e&&this.isEnabled&&o.change((e=>{const t=o.createSelection(this._draggedRange);o.deleteContent(t,{doNotAutoparagraph:!0});const i=t.getFirstPosition().parent;i.isEmpty&&!o.schema.checkChild(i,"$text")&&o.schema.checkChild(i,"paragraph")&&e.insertElement("paragraph",i,0)})),this._draggedRange.detach(),this._draggedRange=null)}_prepareDraggedRange(e){const t=this.editor,o=t.model,i=o.document.selection,n=e?Sf(e):null;if(n){const e=t.editing.mapper.toModelElement(n);if(this._draggedRange=Ts.fromRange(o.createRangeOn(e)),this._blockMode=o.schema.isBlock(e),t.plugins.has("WidgetToolbarRepository")){t.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}return}if(i.isCollapsed&&!i.getFirstPosition().parent.isEmpty)return;const s=Array.from(i.getSelectedBlocks()),r=i.getFirstRange();if(0==s.length)return void(this._draggedRange=Ts.fromRange(r));const a=If(o,s);if(s.length>1)this._draggedRange=Ts.fromRange(a),this._blockMode=!0;else if(1==s.length){const e=r.start.isTouching(a.start)&&r.end.isTouching(a.end);this._draggedRange=Ts.fromRange(e?a:r),this._blockMode=e}o.change((e=>e.setSelection(this._draggedRange.toRange())))}_updatePreview({dataTransfer:e,domTarget:t,clientX:o}){const i=this.editor.editing.view,n=i.document.selection.editableElement,s=i.domConverter.mapViewToDom(n),r=J.window.getComputedStyle(s);this._previewContainer?this._previewContainer.firstElementChild&&this._previewContainer.removeChild(this._previewContainer.firstElementChild):(this._previewContainer=Ke(J.document,"div",{style:"position: fixed; left: -999999px;"}),J.document.body.appendChild(this._previewContainer));const a=Ke(J.document,"div");a.className="ck ck-content ck-clipboard-preview";const l=new ut(s),c=parseFloat(r.paddingLeft),d=parseFloat(r.paddingRight),u=parseFloat(r.width)-c-d;if(s.contains(t)){if(!Y.isiOS)return;a.style.maxWidth=`${u}px`,a.style.padding="10px",a.style.minWidth="200px",a.style.minHeight="20px",a.style.boxSizing="border-box",a.style.backgroundColor="var(--ck-color-base-background)"}else if(Y.isiOS)a.style.width=`${u}px`,a.style.backgroundColor="var(--ck-color-base-background)";else{const e=l.left-o+c;a.style.width=`${u+e}px`,a.style.paddingLeft=`${e}px`}i.domConverter.setContentOf(a,e.getData("text/html")),e.setDragImage(a,0,0),this._previewContainer.appendChild(a)}}function Pf(e){return Y.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function Sf(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(ip);if(ip(e))return e;const t=e.findAncestor((e=>ip(e)||e.is("editableElement")));return ip(t)?t:null}function If(e,t){const o=t[0],i=t[t.length-1],n=o.getCommonAncestor(i),s=e.createPositionBefore(o),r=e.createPositionAfter(i);if(n&&n.is("element")&&!e.schema.isLimit(n)){const t=e.createRangeOn(n),o=s.isTouching(t.start),i=r.isTouching(t.end);if(o&&i)return If(e,[n])}return e.createRange(s,r)}class Rf extends fc{static get pluginName(){return"PastePlainText"}static get isOfficialPlugin(){return!0}static get requires(){return[bf]}init(){const e=this.editor,t=e.model,o=e.editing.view,i=t.document.selection;o.addObserver(df),e.plugins.get(bf).on("contentInsertion",((e,o)=>{(function(e,t){let o=t.createRangeIn(e);if(1==e.childCount){const i=e.getChild(0);i.is("element")&&t.schema.isBlock(i)&&!t.schema.isObject(i)&&!t.schema.isLimit(i)&&(o=t.createRangeIn(i))}for(const e of o.getItems()){if(!t.schema.isInline(e))return!1;if(Array.from(e.getAttributeKeys()).find((e=>t.schema.getAttributeProperties(e).isFormatting)))return!1}return!0})(o.content,t)&&t.change((e=>{const n=Array.from(i.getAttributes()).filter((([e])=>t.schema.getAttributeProperties(e).isFormatting));i.isCollapsed||t.deleteContent(i,{doNotAutoparagraph:!0}),n.push(...i.getAttributes());const s=e.createRangeIn(o.content);for(const o of s.getItems())for(const i of n)t.schema.checkAttribute(o,i[0])&&e.setAttribute(i[0],i[1],o)}))}))}}class Of extends fc{static get pluginName(){return"Clipboard"}static get isOfficialPlugin(){return!0}static get requires(){return[ff,bf,Tf,Rf]}init(){const e=this.editor,t=this.editor.t;e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Copy selected content"),keystroke:"CTRL+C"},{label:t("Paste content"),keystroke:"CTRL+V"},{label:t("Paste content as plain text"),keystroke:"CTRL+SHIFT+V"}]})}}class Vf extends wc{_stack=[];_createdBatches=new WeakSet;constructor(e){super(e),this.refresh(),this._isEnabledBasedOnSelection=!1,this.listenTo(e.data,"set",((e,t)=>{t[1]={...t[1]};const o=t[1];o.batchType||(o.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(e.data,"set",((e,t)=>{t[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}get createdBatches(){return this._createdBatches}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,n=i.document,s=[],r=e.map((e=>e.getTransformedByOperations(o))),a=r.flat();for(const e of r){const t=e.filter((e=>e.root!=n.graveyard)).filter((e=>!Ff(e,a)));t.length&&(Df(t),s.push(t[0]))}s.length&&i.change((e=>{e.setSelection(s,{backward:t})}))}_undo(e,t){const o=this.editor.model,i=o.document;this._createdBatches.add(t);const n=e.operations.slice().filter((e=>e.isDocumentOperation));n.reverse();for(const e of n){const n=e.baseVersion+1,s=Array.from(i.history.getOperations(n)),r=sa([e.getReversed()],s,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(let n of r){const s=n.affectedSelectable;s&&!o.canEditAt(s)&&(n=new Jr(n.baseVersion)),t.addOperation(n),o.applyOperation(n),i.history.setOperationAsUndone(e,n)}}}}function Df(e){e.sort(((e,t)=>e.start.isBefore(t.start)?-1:1));for(let t=1;tt!==e&&t.containsRange(e,!0)))}class Mf extends Vf{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({isUndo:!0});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 Nf extends Vf{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch({isUndo:!0});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.fire("revert",e.batch,t),this.refresh()}}class Bf extends fc{_undoCommand;_redoCommand;_batchRegistry=new WeakSet;static get pluginName(){return"UndoEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t;this._undoCommand=new Mf(e),this._redoCommand=new Nf(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,n=this._redoCommand.createdBatches.has(i),s=this._undoCommand.createdBatches.has(i);this._batchRegistry.has(i)||(this._batchRegistry.add(i),i.isUndoable&&(n?this._undoCommand.addBatch(i):s||(this._undoCommand.addBatch(i),this._redoCommand.clearStack())))}),{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"),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Undo"),keystroke:"CTRL+Z"},{label:t("Redo"),keystroke:[["CTRL+Y"],["CTRL+SHIFT+Z"]]}]})}}class Lf extends fc{static get pluginName(){return"UndoUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale,o=e.t,i="ltr"==t.uiLanguageDirection?nd:td,n="ltr"==t.uiLanguageDirection?td:nd;this._addButtonsToFactory("undo",o("Undo"),"CTRL+Z",i),this._addButtonsToFactory("redo",o("Redo"),"CTRL+Y",n)}_addButtonsToFactory(e,t,o,i){const n=this.editor;n.ui.componentFactory.add(e,(()=>{const n=this._createButton(Lu,e,t,o,i);return n.set({tooltip:!0}),n})),n.ui.componentFactory.add("menuBar:"+e,(()=>this._createButton(sh,e,t,o,i)))}_createButton(e,t,o,i,n){const s=this.editor,r=s.locale,a=s.commands.get(t),l=new e(r);return l.set({label:o,icon:n,keystroke:i}),l.bind("isEnabled").to(a,"isEnabled"),this.listenTo(l,"execute",(()=>{s.execute(t),s.editing.view.focus()})),l}}class zf extends fc{static get requires(){return[Bf,Lf]}static get pluginName(){return"Undo"}static get isOfficialPlugin(){return!0}}function jf(e){return e}function qf(e){return e.createContainerElement("figure",{class:"image"},[e.createEmptyElement("img"),e.createSlot("children")])}function $f(e,t){const o=e.plugins.get("ImageUtils"),i=e.plugins.has("ImageInlineEditing")&&e.plugins.has("ImageBlockEditing");return e=>{if(!o.isInlineImageView(e))return null;if(!i)return n(e);return("block"==e.getStyle("display")||e.findAncestor(o.isBlockImageView)?"imageBlock":"imageInline")!==t?null:n(e)};function n(e){const t={name:!0};return e.hasAttribute("src")&&(t.attributes=["src"]),t}}function Hf(e,t){const o=to(t.getSelectedBlocks());return!o||e.isObject(o)||o.isEmpty&&"listItem"!=o.name?"imageBlock":"imageInline"}function Wf(e){return e&&e.endsWith("px")?parseInt(e):null}function Uf(e){const t=Wf(e.getStyle("width")),o=Wf(e.getStyle("height"));return!(!t||!o)}const Kf=/^(image|image-inline)$/;class Gf extends fc{_domEmitter=new(et());static get pluginName(){return"ImageUtils"}static get isOfficialPlugin(){return!0}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,o=null,i={}){const n=this.editor,s=n.model,r=s.document.selection,a=Jf(n,t||r,o);e={...Object.fromEntries(r.getAttributes()),...e};for(const t in e)s.schema.checkAttribute(a,t)||delete e[t];return s.change((o=>{const{setImageSizes:n=!0}=i,r=o.createElement(a,e);return s.insertObject(r,t,null,{setSelection:"on",findOptimalPosition:t||"imageInline"==a?void 0:"auto"}),r.parent?(n&&this.setImageNaturalSizeAttributes(r),r):null}))}setImageNaturalSizeAttributes(e){const t=e.getAttribute("src");t&&(e.getAttribute("width")||e.getAttribute("height")||this.editor.model.change((o=>{const i=new J.window.Image;this._domEmitter.listenTo(i,"load",(()=>{e.getAttribute("width")||e.getAttribute("height")||this.editor.model.enqueueChange(o.batch,(t=>{t.setAttribute("width",i.naturalWidth,e),t.setAttribute("height",i.naturalHeight,e)})),this._domEmitter.stopListening(i,"load")})),i.src=t})))}getClosestSelectedImageWidget(e){const t=e.getFirstPosition();if(!t)return null;const o=e.getSelectedElement();if(o&&this.isImageWidget(o))return o;let i=t.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")}getImageWidgetFromImageView(e){return e.findAncestor({classes:Kf})}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){const o=Jf(e,t,null);if("imageBlock"==o){const o=function(e,t){const o=cp(e,t),i=o.start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(t,e.model);if(e.model.schema.checkChild(o,"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,o){t.setCustomProperty("image",!0,e);return np(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${o}`:o}})}isImageWidget(e){return!!e.getCustomProperty("image")&&ip(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:o}of t.createRangeIn(e))if(this.isInlineImageView(o))return o}destroy(){return this._domEmitter.stopListening(),super.destroy()}}function Jf(e,t,o){const i=e.model.schema,n=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?o||("inline"===n?"imageInline":"auto"!==n?"imageBlock":t.is("selection")?Hf(i,t):i.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}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 Zf extends wc{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,o=t.plugins.get("ImageUtils"),i=t.model,n=o.getClosestSelectedImageElement(i.document.selection);i.change((t=>{t.setAttribute("alt",e.newValue,n)}))}}class Qf extends fc{static get requires(){return[Gf]}static get pluginName(){return"ImageTextAlternativeEditing"}static get isOfficialPlugin(){return!0}init(){this.editor.commands.add("imageTextAlternative",new Zf(this.editor))}}class Yf extends Au{focusTracker;keystrokes;labeledInput;backButtonView;saveButtonView;children;_focusables;_focusCycler;constructor(e){super(e),this.focusTracker=new oo,this.keystrokes=new ro,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.labeledInput=this._createLabeledInputView(),this.children=this.createCollection([this._createHeaderView()]),this.children.add(new Km(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new tu,this.keystrokes.set("Esc",((e,t)=>{this.fire("cancel"),t()})),this._focusCycler=new qu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),Ou({view:this});[this.backButtonView,this.labeledInput,this.saveButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createBackButton(){const e=this.locale.t,t=new Lu(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:ed,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new Lu(this.locale);return t.set({label:e("Save"),withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){const e=this.locale.t,t=new ju(this.locale,{label:e("Text Alternative")});return t.children.add(this.backButtonView,0),t}_createLabeledInputView(){const e=this.locale.t,t=new Sh(this.locale,nm);return t.label=e("Text alternative"),t.class="ck-labeled-field-view_full-width",t}}function Xf(e){const t=e.editing.view,o=dh.defaultPositions,i=e.plugins.get("ImageUtils");return{target:t.domConverter.mapViewToDom(i.getClosestSelectedImageWidget(t.document.selection)),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast,o.viewportStickyNorth]}}class eb extends fc{_balloon;_form;static get requires(){return[Qm]}static get pluginName(){return"ImageTextAlternativeUI"}static get isOfficialPlugin(){return!0}init(){this._createButton()}destroy(){super.destroy(),this._form&&this._form.destroy()}_createButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("imageTextAlternative",(o=>{const i=e.commands.get("imageTextAlternative"),n=new Lu(o);return n.set({label:t("Change image text alternative"),icon:'',tooltip:!0}),n.bind("isEnabled").to(i,"isEnabled"),n.bind("isOn").to(i,"value",(e=>!!e)),this.listenTo(n,"execute",(()=>{this._showForm()})),n}))}_createForm(){const e=this.editor,t=e.editing.view.document,o=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(Iu(Yf))(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.listenTo(e.ui,"update",(()=>{o.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 o=Xf(e);t.updatePosition(o)}}(e):this._hideForm(!0)})),Su({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;this._form||this._createForm();const e=this.editor,t=e.commands.get("imageTextAlternative"),o=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:Xf(e)}),o.fieldView.value=o.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e=!1){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&&this._balloon.visibleView===this._form}get _isInBalloon(){return!!this._balloon&&this._balloon.hasView(this._form)}}class tb extends fc{static get requires(){return[Qf,eb]}static get pluginName(){return"ImageTextAlternative"}static get isOfficialPlugin(){return!0}}function ob(e,t){const o=(t,o,i)=>{if(!i.consumable.consume(o.item,t.name))return;const n=i.writer,s=i.mapper.toViewElement(o.item),r=e.findViewImgElement(s);null===o.attributeNewValue?(n.removeAttribute("srcset",r),n.removeAttribute("sizes",r)):o.attributeNewValue&&(n.setAttribute("srcset",o.attributeNewValue,r),n.setAttribute("sizes","100vw",r))};return e=>{e.on(`attribute:srcset:${t}`,o)}}function ib(e,t,o){const i=(t,o,i)=>{if(!i.consumable.consume(o.item,t.name))return;const n=i.writer,s=i.mapper.toViewElement(o.item),r=e.findViewImgElement(s);n.setAttribute(o.attributeKey,o.attributeNewValue||"",r)};return e=>{e.on(`attribute:${o}:${t}`,i)}}class nb extends Ln{observe(e){this.listenTo(e,"load",((e,t)=>{const o=t.target;this.checkShouldIgnoreEventFromTarget(o)||"IMG"==o.tagName&&this._fireEvents(t)}),{useCapture:!0})}stopObserving(e){this.stopListening(e)}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class sb extends wc{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&be("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&be("image-inline-plugin-required")}refresh(){const e=this.editor.plugins.get("ImageUtils");this.isEnabled=e.isImageAllowed()}execute(e){const t=Qt(e.source),o=this.editor.model.document.selection,i=this.editor.plugins.get("ImageUtils"),n=Object.fromEntries(o.getAttributes());t.forEach(((t,s)=>{const r=o.getSelectedElement();if("string"==typeof t&&(t={src:t}),s&&r&&i.isImage(r)){const o=this.editor.model.createPositionAfter(r);i.insertImage({...t,...n},o,e.imageType)}else e.breakBlock?i.insertImage({...t,...n},o.getFirstPosition(),e.imageType):i.insertImage({...t,...n},null,e.imageType)}))}}class rb extends wc{constructor(e){super(e),this.decorate("cleanupImage")}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=this.editor.model.document.selection.getSelectedElement();this.isEnabled=e.isImage(t),this.value=this.isEnabled?t.getAttribute("src"):null}execute(e){const t=this.editor.model.document.selection.getSelectedElement(),o=this.editor.plugins.get("ImageUtils");this.editor.model.change((i=>{i.setAttribute("src",e.source,t),this.cleanupImage(i,t),o.setImageNaturalSizeAttributes(t)}))}cleanupImage(e,t){e.removeAttribute("srcset",t),e.removeAttribute("sizes",t),e.removeAttribute("sources",t),e.removeAttribute("width",t),e.removeAttribute("height",t),e.removeAttribute("alt",t)}}class ab extends fc{static get requires(){return[Gf]}static get pluginName(){return"ImageEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(nb),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:"srcset"});const o=new sb(e),i=new rb(e);e.commands.add("insertImage",o),e.commands.add("replaceImageSource",i),e.commands.add("imageInsert",o)}}class lb extends fc{static get requires(){return[Gf]}static get pluginName(){return"ImageSizeAttributes"}static get isOfficialPlugin(){return!0}afterInit(){this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline")}_registerSchema(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["width","height"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["width","height"]})}_registerConverters(e){const t=this.editor,o=t.plugins.get("ImageUtils"),i="imageBlock"===e?"figure":"img";function n(t,i,n,s,r=!1){t.on(`attribute:${i}:${e}`,((t,i,a)=>{if(!a.consumable.consume(i.item,t.name))return;const l=a.writer,c=a.mapper.toViewElement(i.item),d=o.findViewImgElement(c);null!==i.attributeNewValue?l.setAttribute(n,i.attributeNewValue,d):l.removeAttribute(n,d);const u=i.item.getAttribute("width"),h=i.item.getAttribute("height"),m=u&&h;if(m&&r&&l.setAttribute("loading","lazy",d),i.item.hasAttribute("sources"))return;const g=i.item.hasAttribute("resizedWidth");("imageInline"!==e||g||s)&&m&&l.setStyle("aspect-ratio",`${u}/${h}`,d)}))}t.conversion.for("upcast").attributeToAttribute({view:{name:i,styles:{width:/.+/}},model:{key:"width",value:e=>Uf(e)?Wf(e.getStyle("width")):null}}).attributeToAttribute({view:{name:i,key:"width"},model:"width"}).attributeToAttribute({view:{name:i,styles:{height:/.+/}},model:{key:"height",value:e=>Uf(e)?Wf(e.getStyle("height")):null}}).attributeToAttribute({view:{name:i,key:"height"},model:"height"}),t.conversion.for("editingDowncast").add((e=>{n(e,"width","width",!0,!0),n(e,"height","height",!0,!0)})),t.conversion.for("dataDowncast").add((e=>{n(e,"width","width",!1),n(e,"height","height",!1)})),t.conversion.for("upcast").add((e=>{e.on("element:img",((e,t,o)=>{const i=t.viewItem.getAttribute("width"),n=t.viewItem.getAttribute("height");i&&n&&o.consumable.consume(t.viewItem,{styles:["aspect-ratio"]})}))}))}}class cb extends wc{_modelElementName;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(e={}){const t=this.editor,o=this.editor.model,i=t.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(o.document.selection),s=Object.fromEntries(n.getAttributes());return s.src||s.uploadId?o.change((t=>{const{setImageSizes:r=!0}=e,a=Array.from(o.markers).filter((e=>e.getRange().containsItem(n))),l=i.insertImage(s,o.createSelection(n,"on"),this._modelElementName,{setImageSizes:r});if(!l)return null;const c=t.createRangeOn(l);for(const e of a){const o=e.getRange(),i="$graveyard"!=o.root.rootName?o.getJoined(c,!0):c;t.updateMarker(e,{range:i})}return{oldElement:n,newElement:l}})):null}}class db extends fc{static get requires(){return[Gf]}static get pluginName(){return"ImagePlaceholder"}static get isOfficialPlugin(){return!0}afterInit(){this._setupSchema(),this._setupConversion(),this._setupLoadListener()}_setupSchema(){const e=this.editor.model.schema;e.isRegistered("imageBlock")&&e.extend("imageBlock",{allowAttributes:["placeholder"]}),e.isRegistered("imageInline")&&e.extend("imageInline",{allowAttributes:["placeholder"]})}_setupConversion(){const e=this.editor,t=e.conversion,o=e.plugins.get("ImageUtils");t.for("editingDowncast").add((e=>{e.on("attribute:placeholder",((e,t,i)=>{if(!i.consumable.test(t.item,e.name))return;if(!t.item.is("element","imageBlock")&&!t.item.is("element","imageInline"))return;i.consumable.consume(t.item,e.name);const n=i.writer,s=i.mapper.toViewElement(t.item),r=o.findViewImgElement(s);t.attributeNewValue?(n.addClass("image_placeholder",r),n.setStyle("background-image",`url(${t.attributeNewValue})`,r),n.setCustomProperty("editingPipeline:doNotReuseOnce",!0,r)):(n.removeClass("image_placeholder",r),n.removeStyle("background-image",r))}))}))}_setupLoadListener(){const e=this.editor,t=e.model,o=e.editing,i=o.view,n=e.plugins.get("ImageUtils");i.addObserver(nb),this.listenTo(i.document,"imageLoaded",((e,s)=>{const r=i.domConverter.mapDomToView(s.target);if(!r)return;const a=n.getImageWidgetFromImageView(r);if(!a)return;const l=o.mapper.toModelElement(a);l&&l.hasAttribute("placeholder")&&t.enqueueChange({isUndoable:!1},(e=>{e.removeAttribute("placeholder",l)}))}))}}class ub extends fc{static get requires(){return[ab,lb,Gf,db,bf]}static get pluginName(){return"ImageBlockEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new cb(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,o=e.conversion,i=e.plugins.get("ImageUtils");o.for("dataDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:t})=>qf(t)}),o.for("editingDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:o})=>i.toImageWidget(qf(o),o,t("image widget"))}),o.for("downcast").add(ib(i,"imageBlock","src")).add(ib(i,"imageBlock","alt")).add(ob(i,"imageBlock")),o.for("upcast").elementToElement({view:$f(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",e.hasAttribute("src")?{src:e.getAttribute("src")}:void 0)}).add(function(e){const t=(t,o,i)=>{if(!i.consumable.test(o.viewItem,{name:!0,classes:"image"}))return;const n=e.findViewImgElement(o.viewItem);if(!n||!i.consumable.test(n,{name:!0}))return;i.consumable.consume(o.viewItem,{name:!0,classes:"image"});const s=to(i.convertItem(n,o.modelCursor).modelRange.getItems());s?(i.convertChildren(o.viewItem,s),i.updateConversionResult(s,o)):i.consumable.revert(o.viewItem,{name:!0,classes:"image"})};return e=>{e.on("element:figure",t)}}(i))}_setupClipboardIntegration(){const e=this.editor,t=e.model,o=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ClipboardPipeline");this.listenTo(n,"inputTransformation",((n,s)=>{const r=Array.from(s.content.getChildren());let a;if(!r.every(i.isInlineImageView))return;a=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageBlock"===Hf(t.schema,l)){const e=new rl(o.document),t=r.map((t=>e.createElement("figure",{class:"image"},t)));s.content=e.createDocumentFragment(t)}})),this.listenTo(n,"contentInsertion",((e,o)=>{"paste"===o.method&&t.change((e=>{const t=e.createRangeIn(o.content);for(const e of t.getItems())e.is("element","imageBlock")&&i.setImageNaturalSizeAttributes(e)}))}))}}class hb extends Au{focusTracker;keystrokes;_focusables;_focusCycler;children;constructor(e,t=[]){super(e),this.focusTracker=new oo,this.keystrokes=new ro,this._focusables=new tu,this.children=this.createCollection(),this._focusCycler=new qu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});for(const e of t)this.children.add(e),this._focusables.add(e),e instanceof kh&&this._focusables.addMany(e.children);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:-1},children:this.children})}render(){super.render(),Ou({view:this});for(const e of this._focusables)this.focusTracker.add(e.element);this.keystrokes.listenTo(this.element);const e=e=>e.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}}class mb extends fc{static get pluginName(){return"ImageInsertUI"}static get isOfficialPlugin(){return!0}static get requires(){return[Gf]}dropdownView;_integrations=new Map;constructor(e){super(e),e.config.define("image.insert.integrations",["upload","assetManager","url"])}init(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("ImageUtils");this.set("isImageSelected",!1),this.listenTo(e.model.document,"change",(()=>{this.isImageSelected=o.isImage(t.getSelectedElement())}));const i=e=>this._createToolbarComponent(e);e.ui.componentFactory.add("insertImage",i),e.ui.componentFactory.add("imageInsert",i),e.ui.componentFactory.add("menuBar:insertImage",(e=>this._createMenuBarComponent(e)))}registerIntegration({name:e,observable:t,buttonViewCreator:o,formViewCreator:i,menuBarButtonViewCreator:n,requiresForm:s=!1,override:r=!1}){this._integrations.has(e)&&!r&&be("image-insert-integration-exists",{name:e}),this._integrations.set(e,{observable:t,buttonViewCreator:o,menuBarButtonViewCreator:n,formViewCreator:i,requiresForm:s})}_createToolbarComponent(e){const t=this.editor,o=e.t,i=this._prepareIntegrations();if(!i.length)return null;let n;const s=i[0];if(1==i.length){if(!s.requiresForm)return s.buttonViewCreator(!0);n=s.buttonViewCreator(!0)}else{const t=s.buttonViewCreator(!1);n=new Jh(e,t),n.tooltip=!0,n.bind("label").to(this,"isImageSelected",(e=>o(e?"Replace image":"Insert image")))}const r=this.dropdownView=Zh(e,n),a=i.map((({observable:e})=>"function"==typeof e?e():e));return r.bind("isEnabled").toMany(a,"isEnabled",((...e)=>e.some((e=>e)))),r.once("change:isOpen",(()=>{const e=i.flatMap((({formViewCreator:e})=>e(1==i.length))),o=new hb(t.locale,e);r.panelView.children.add(o)})),r}_createMenuBarComponent(e){const t=e.t,o=this._prepareIntegrations();if(!o.length)return null;const i=o.flatMap((({menuBarButtonViewCreator:e})=>e(1==o.length))),n=new og(e),s=new ig(e);n.panelView.children.add(s),n.buttonView.set({icon:'',label:t("Image")});for(const t of i){const o=new Em(e,n);o.children.add(t),s.items.add(o),t.delegate("execute").to(n)}return n}_prepareIntegrations(){const e=this.editor.config.get("image.insert.integrations"),t=[];if(!e.length)return be("image-insert-integrations-not-specified"),t;for(const o of e)this._integrations.has(o)?t.push(this._integrations.get(o)):["upload","assetManager","url"].includes(o)||be("image-insert-unknown-integration",{item:o});return t.length||be("image-insert-integrations-not-registered"),t}}class gb extends fc{static get requires(){return[ub,vp,tb,mb]}static get pluginName(){return"ImageBlock"}static get isOfficialPlugin(){return!0}}class pb extends fc{static get requires(){return[ab,lb,Gf,db,bf]}static get pluginName(){return"ImageInlineEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.model.schema.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"],disallowIn:["caption"]}),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new cb(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,o=e.conversion,i=e.plugins.get("ImageUtils");o.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),o.for("editingDowncast").elementToStructure({model:"imageInline",view:(e,{writer:o})=>i.toImageWidget(function(e){return e.createContainerElement("span",{class:"image-inline"},e.createEmptyElement("img"))}(o),o,t("image widget"))}),o.for("downcast").add(ib(i,"imageInline","src")).add(ib(i,"imageInline","alt")).add(ob(i,"imageInline")),o.for("upcast").elementToElement({view:$f(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",e.hasAttribute("src")?{src:e.getAttribute("src")}:void 0)})}_setupClipboardIntegration(){const e=this.editor,t=e.model,o=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ClipboardPipeline");this.listenTo(n,"inputTransformation",((n,s)=>{const r=Array.from(s.content.getChildren());let a;if(!r.every(i.isBlockImageView))return;a=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const l=t.createSelection(a);if("imageInline"===Hf(t.schema,l)){const e=new rl(o.document),t=r.map((t=>1===t.childCount?(Array.from(t.getAttributes()).forEach((o=>e.setAttribute(...o,i.findViewImgElement(t)))),t.getChild(0)):t));s.content=e.createDocumentFragment(t)}})),this.listenTo(n,"contentInsertion",((e,o)=>{"paste"===o.method&&t.change((e=>{const t=e.createRangeIn(o.content);for(const e of t.getItems())e.is("element","imageInline")&&i.setImageNaturalSizeAttributes(e)}))}))}}class fb extends fc{static get requires(){return[pb,vp,tb,mb]}static get pluginName(){return"ImageInline"}static get isOfficialPlugin(){return!0}}class bb extends fc{static get pluginName(){return"ImageCaptionUtils"}static get isOfficialPlugin(){return!0}static get requires(){return[Gf]}getCaptionFromImageModelElement(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}getCaptionFromModelSelection(e){const t=this.editor.plugins.get("ImageUtils"),o=e.getFirstPosition().findAncestor("caption");return o&&t.isBlockImage(o.parent)?o:null}matchImageCaptionViewElement(e){const t=this.editor.plugins.get("ImageUtils");return"figcaption"==e.name&&t.isBlockImageView(e.parent)?{name:!0}:null}}class wb extends wc{refresh(){const e=this.editor,t=e.plugins.get("ImageCaptionUtils"),o=e.plugins.get("ImageUtils");if(!e.plugins.has(ub))return this.isEnabled=!1,void(this.value=!1);const i=e.model.document.selection,n=i.getSelectedElement();if(!n){const e=t.getCaptionFromModelSelection(i);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=o.isImage(n),this.isEnabled?this.value=!!t.getCaptionFromImageModelElement(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 o=this.editor.model.document.selection,i=this.editor.plugins.get("ImageCaptionEditing"),n=this.editor.plugins.get("ImageUtils");let s=o.getSelectedElement();const r=i._getSavedCaption(s);n.isInlineImage(s)&&(this.editor.execute("imageTypeBlock"),s=o.getSelectedElement());const a=r||e.createElement("caption");e.append(a,s),t&&e.setSelection(a,"in")}_hideImageCaption(e){const t=this.editor,o=t.model.document.selection,i=t.plugins.get("ImageCaptionEditing"),n=t.plugins.get("ImageCaptionUtils");let s,r=o.getSelectedElement();r?s=n.getCaptionFromImageModelElement(r):(s=n.getCaptionFromModelSelection(o),r=s.parent),i._saveCaption(r,s),e.setSelection(r,"on"),e.remove(s)}}class yb extends fc{static get requires(){return[Gf,bb]}static get pluginName(){return"ImageCaptionEditing"}static get isOfficialPlugin(){return!0}_savedCaptionsMap;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 wb(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const e=this.editor,t=e.editing.view,o=e.plugins.get("ImageUtils"),i=e.plugins.get("ImageCaptionUtils"),n=e.t;e.conversion.for("upcast").elementToElement({view:e=>i.matchImageCaptionViewElement(e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>o.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:i})=>{if(!o.isBlockImage(e.parent))return null;const s=i.createEditableElement("figcaption");i.setCustomProperty("imageCaption",!0,s),s.placeholder=n("Enter image caption"),Yo({view:t,element:s,keepOnFocus:!0});const r=e.parent.getAttribute("alt");return lp(s,i,{label:r?n("Caption for image: %0",[r]):n("Caption for the image")})}})}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),o=e.plugins.get("ImageCaptionUtils"),i=e.commands.get("imageTypeInline"),n=e.commands.get("imageTypeBlock"),s=e=>{if(!e.return)return;const{oldElement:i,newElement:n}=e.return;if(!i)return;if(t.isBlockImage(i)){const e=o.getCaptionFromImageModelElement(i);if(e)return void this._saveCaption(n,e)}const s=this._getSavedCaption(i);s&&this._saveCaption(n,s)};i&&this.listenTo(i,"execute",s,{priority:"low"}),n&&this.listenTo(n,"execute",s,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Ms.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}_registerCaptionReconversion(){const e=this.editor,t=e.model,o=e.plugins.get("ImageUtils"),i=e.plugins.get("ImageCaptionUtils");t.document.on("change:data",(()=>{const n=t.document.differ.getChanges();for(const t of n){if("alt"!==t.attributeKey)continue;const n=t.range.start.nodeAfter;if(o.isBlockImage(n)){const t=i.getCaptionFromImageModelElement(n);if(!t)return;e.editing.reconvertItem(t)}}}))}}class _b extends fc{static get requires(){return[bb]}static get pluginName(){return"ImageCaptionUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.editing.view,o=e.plugins.get("ImageCaptionUtils"),i=e.t;e.ui.componentFactory.add("toggleImageCaption",(n=>{const s=e.commands.get("toggleImageCaption"),r=new Lu(n);return r.set({icon:'',tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.bind("label").to(s,"value",(e=>i(e?"Toggle caption off":"Toggle caption on"))),this.listenTo(r,"execute",(()=>{e.execute("toggleImageCaption",{focusCaptionOnShow:!0});const i=o.getCaptionFromModelSelection(e.model.document.selection);if(i){const o=e.editing.mapper.toViewElement(i);t.scrollToTheSelection(),t.change((e=>{e.addClass("image__caption_highlighted",o)}))}e.editing.view.focus()})),r}))}}function kb(e){const t=e.map((e=>e.replace("+","\\+")));return new RegExp(`^image\\/(${t.join("|")})$`)}function vb(e){return new Promise(((t,o)=>{const i=e.getAttribute("src");fetch(i).then((e=>e.blob())).then((e=>{const o=Cb(e,i),n=o.replace("image/",""),s=new File([e],`image.${n}`,{type:o});t(s)})).catch((e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise(((t,o)=>{const i=J.document.createElement("img");i.addEventListener("load",(()=>{const e=J.document.createElement("canvas");e.width=i.width,e.height=i.height;e.getContext("2d").drawImage(i,0,0),e.toBlob((e=>e?t(e):o()))})),i.addEventListener("error",(()=>o())),i.src=e}))}(e).then((t=>{const o=Cb(t,e),i=o.replace("image/","");return new File([t],`image.${i}`,{type:o})}))}(i).then(t).catch(o):o(e)))}))}function Cb(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Ab extends fc{static get pluginName(){return"ImageUploadUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("uploadImage",(()=>this._createToolbarButton())),e.ui.componentFactory.add("imageUpload",(()=>this._createToolbarButton())),e.ui.componentFactory.add("menuBar:uploadImage",(()=>this._createMenuBarButton("standalone"))),e.plugins.has("ImageInsertUI")&&e.plugins.get("ImageInsertUI").registerIntegration({name:"upload",observable:()=>e.commands.get("uploadImage"),buttonViewCreator:()=>this._createToolbarButton(),formViewCreator:()=>this._createDropdownButton(),menuBarButtonViewCreator:e=>this._createMenuBarButton(e?"insertOnly":"insertNested")})}_createButton(e){const t=this.editor,o=t.locale,i=t.commands.get("uploadImage"),n=t.config.get("image.upload.types"),s=kb(n),r=new e(t.locale),a=o.t;return r.set({acceptedType:n.map((e=>`image/${e}`)).join(","),allowMultipleFiles:!0,label:a("Upload from computer"),icon:''}),r.bind("isEnabled").to(i),r.on("done",((e,o)=>{const i=Array.from(o).filter((e=>s.test(e.type)));i.length&&(t.execute("uploadImage",{file:i}),t.editing.view.focus())})),r}_createToolbarButton(){const e=this.editor.locale.t,t=this.editor.plugins.get("ImageInsertUI"),o=this.editor.commands.get("uploadImage"),i=this._createButton(bh);return i.tooltip=!0,i.bind("label").to(t,"isImageSelected",o,"isAccessAllowed",((t,o)=>e(o?t?"Replace image from computer":"Upload image from computer":"You have no image upload permissions."))),i}_createDropdownButton(){const e=this.editor.locale.t,t=this.editor.plugins.get("ImageInsertUI"),o=this._createButton(bh);return o.withText=!0,o.bind("label").to(t,"isImageSelected",(t=>e(t?"Replace from computer":"Upload from computer"))),o.on("execute",(()=>{t.dropdownView.isOpen=!1})),o}_createMenuBarButton(e){const t=this.editor.locale.t,o=this._createButton(sg);switch(o.withText=!0,e){case"standalone":o.label=t("Image from computer");break;case"insertOnly":o.label=t("Image");break;case"insertNested":o.label=t("From computer")}return o}}class xb extends fc{static get pluginName(){return"ImageUploadProgress"}static get isOfficialPlugin(){return!0}placeholder;constructor(e){super(e),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",this.uploadStatusChange),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",this.uploadStatusChange)}uploadStatusChange=(e,t,o)=>{const i=this.editor,n=t.item,s=n.getAttribute("uploadId");if(!o.consumable.consume(t.item,e.name))return;const r=i.plugins.get("ImageUtils"),a=i.plugins.get(Qp),l=s?t.attributeNewValue:null,c=this.placeholder,d=i.editing.mapper.toViewElement(n),u=o.writer;if("reading"==l)return Eb(d,u),void Tb(r,c,d,u);if("uploading"==l){const e=a.loaders.get(s);return Eb(d,u),void(e?(Pb(d,u),function(e,t,o,i){const n=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"),n),o.on("change:uploadedPercent",((e,t,o)=>{i.change((e=>{e.setStyle("width",o+"%",n)}))}))}(d,u,e,i.editing.view),function(e,t,o,i){if(i.data){const n=e.findViewImgElement(t);o.setAttribute("src",i.data,n)}}(r,d,u,e)):Tb(r,c,d,u))}"complete"==l&&a.loaders.get(s)&&function(e,t,o){const i=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),i),setTimeout((()=>{o.change((e=>e.remove(e.createRangeOn(i))))}),3e3)}(d,u,i.editing.view),function(e,t){Ib(e,t,"progressBar")}(d,u),Pb(d,u),function(e,t){t.removeClass("ck-appear",e)}(d,u)}}function Eb(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function Tb(e,t,o,i){o.hasClass("ck-image-upload-placeholder")||i.addClass("ck-image-upload-placeholder",o);const n=e.findViewImgElement(o);n.getAttribute("src")!==t&&i.setAttribute("src",t,n),Sb(o,"placeholder")||i.insert(i.createPositionAfter(n),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(i))}function Pb(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),Ib(e,t,"placeholder")}function Sb(e,t){for(const o of e.getChildren())if(o.getCustomProperty(t))return o}function Ib(e,t,o){const i=Sb(e,o);i&&t.remove(t.createRangeOn(i))}class Rb extends wc{constructor(e){super(e),this.set("isAccessAllowed",!0)}refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),o=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(o)}execute(e){const t=Qt(e.file),o=this.editor.model.document.selection,i=this.editor.plugins.get("ImageUtils"),n=Object.fromEntries(o.getAttributes());t.forEach(((e,t)=>{const s=o.getSelectedElement();if(t&&s&&i.isImage(s)){const t=this.editor.model.createPositionAfter(s);this._uploadImage(e,n,t)}else this._uploadImage(e,n)}))}_uploadImage(e,t,o){const i=this.editor,n=i.plugins.get(Qp).createLoader(e),s=i.plugins.get("ImageUtils");n&&s.insertImage({...t,uploadId:n.id},o)}}class Ob extends fc{static get requires(){return[Qp,Gm,bf,Gf]}static get pluginName(){return"ImageUploadEditing"}static get isOfficialPlugin(){return!0}_uploadImageElements;_uploadedImages=new Map;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,o=e.conversion,i=e.plugins.get(Qp),n=e.plugins.get("ImageUtils"),s=e.plugins.get("ClipboardPipeline"),r=kb(e.config.get("image.upload.types")),a=new Rb(e);e.commands.add("uploadImage",a),e.commands.add("imageUpload",a),o.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}).add((e=>e.on("element:img",((e,t,o)=>{if(!o.consumable.test(t.viewItem,{attributes:["data-ck-upload-id"]}))return;const n=t.viewItem.getAttribute("data-ck-upload-id");if(!n)return;const[s]=Array.from(t.modelRange.getItems({shallow:!0})),r=i.loaders.get(n);s&&(o.writer.setAttribute("uploadId",n,s),o.consumable.consume(t.viewItem,{attributes:["data-ck-upload-id"]}),r&&r.data&&o.writer.setAttribute("uploadStatus",r.status,s))}),{priority:"low"}))),this.listenTo(e.editing.view.document,"clipboardInput",((t,o)=>{if(i=o.dataTransfer,Array.from(i.types).includes("text/html")&&""!==i.getData("text/html"))return;var i;const n=Array.from(o.dataTransfer.files).filter((e=>!!e&&r.test(e.type)));if(!n.length)return;t.stop(),e.model.change((t=>{o.targetRanges&&t.setSelection(o.targetRanges.map((t=>e.editing.mapper.toModelRange(t)))),e.execute("uploadImage",{file:n})}));if(!e.commands.get("uploadImage").isAccessAllowed){const t=e.plugins.get("Notification"),o=e.locale.t;t.showWarning(o("You have no image upload permissions."),{namespace:"image"})}})),this.listenTo(s,"inputTransformation",((t,o)=>{const s=Array.from(e.editing.view.createRangeIn(o.content)).map((e=>e.item)).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))}(n,e)&&!e.getAttribute("uploadProcessed"))).map((e=>({promise:vb(e),imageElement:e})));if(!s.length)return;const r=new rl(e.editing.view.document);for(const e of s){r.setAttribute("uploadProcessed",!0,e.imageElement);const t=i.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 o=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),n=new Set;for(const t of o)if("insert"==t.type&&"$text"!=t.name){const o=t.position.nodeAfter,s="$graveyard"==t.position.root.rootName;for(const t of Vb(e,o)){const o=t.getAttribute("uploadId"),r=t.getAttribute("uploadStatus");if(!o||"complete"==r)continue;const a=i.loaders.get(o);if(a)if(s){if(!n.has(o)){Array.from(this._uploadImageElements.get(o)).every((e=>"$graveyard"==e.root.rootName))&&a.abort()}}else n.add(o),this._uploadImageElements.has(o)?this._uploadImageElements.get(o).add(t):this._uploadImageElements.set(o,new Set([t])),"idle"==a.status&&this._readAndUpload(a);else!s&&this._uploadedImages.has(o)&&e.model.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","complete",t),this.fire("uploadComplete",{data:this._uploadedImages.get(o),imageElement:t})}))}}})),this.on("uploadComplete",((e,{imageElement:t,data:o})=>{const i=o.urls?o.urls:o;this.editor.model.change((e=>{e.setAttribute("src",i.default,t),this._parseAndSetSrcsetAttributeOnImage(i,t,e),n.setImageNaturalSizeAttributes(t)}))}),{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&(e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this._registerConverters("imageBlock")),this.editor.plugins.has("ImageInlineEditing")&&(e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]}),this._registerConverters("imageInline"))}_readAndUpload(e){const t=this.editor,o=t.model,i=t.locale.t,n=t.plugins.get(Qp),s=t.plugins.get(Gm),r=t.plugins.get("ImageUtils"),a=this._uploadImageElements;return o.enqueueChange({isUndoable:!1},(t=>{const o=a.get(e.id);for(const e of o)t.setAttribute("uploadStatus","reading",e)})),e.read().then((()=>{const n=e.upload();t.ui&&t.ui.ariaLiveAnnouncer.announce(i("Uploading image"));for(const i of a.get(e.id)){if(Y.isSafari){const e=t.editing.mapper.toViewElement(i),o=r.findViewImgElement(e);t.editing.view.once("render",(()=>{if(!o.parent)return;const e=t.editing.view.domConverter.mapViewToDom(o.parent);if(!e)return;const i=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=i}))}o.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","uploading",i)}))}return n})).then((n=>{o.enqueueChange({isUndoable:!1},(o=>{for(const t of a.get(e.id))o.setAttribute("uploadStatus","complete",t),this.fire("uploadComplete",{data:n,imageElement:t});t.ui&&t.ui.ariaLiveAnnouncer.announce(i("Image upload complete")),this._uploadedImages.set(e.id,n)})),l()})).catch((n=>{if(t.ui&&t.ui.ariaLiveAnnouncer.announce(i("Error during image upload")),"error"!==e.status&&"aborted"!==e.status)throw n;"error"==e.status&&n&&s.showWarning(n,{title:i("Upload failed"),namespace:"upload"}),o.enqueueChange({isUndoable:!1},(t=>{for(const o of a.get(e.id))"$graveyard"!==o.root.rootName&&t.remove(o)})),l()}));function l(){o.enqueueChange({isUndoable:!1},(t=>{for(const o of a.get(e.id))t.removeAttribute("uploadId",o),t.removeAttribute("uploadStatus",o);a.delete(e.id)})),n.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,o){let i=0;const n=Object.keys(e).filter((e=>{const t=parseInt(e,10);if(!isNaN(t))return i=Math.max(i,t),!0})).map((t=>`${e[t]} ${t}w`)).join(", ");if(""!=n){const e={srcset:n};t.hasAttribute("width")||t.hasAttribute("height")||(e.width=i),o.setAttributes(e,t)}}_registerConverters(e){const{conversion:t,plugins:o}=this.editor,i=o.get(Qp),n=o.get(Gf);t.for("dataDowncast").add((t=>{t.on(`attribute:uploadId:${e}`,((e,t,o)=>{if(!o.consumable.test(t.item,e.name))return;const s=i.loaders.get(t.attributeNewValue);if(!s||!s.data)return null;const r=o.mapper.toViewElement(t.item),a=n.findViewImgElement(r);a&&(o.consumable.consume(t.item,e.name),o.writer.setAttribute("data-ck-upload-id",s.id,a))}))}))}}function Vb(e,t){const o=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter((e=>o.isImage(e.item))).map((e=>e.item))}class Db extends fc{static get pluginName(){return"ImageUpload"}static get isOfficialPlugin(){return!0}static get requires(){return[Ob,Ab,xb]}}class Fb extends wc{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils").getClosestSelectedImageElement(e.model.document.selection);this.isEnabled=!!t,t&&t.hasAttribute("resizedWidth")?this.value={width:t.getAttribute("resizedWidth"),height:null}:this.value=null}execute(e){const t=this.editor,o=t.model,i=t.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(o.document.selection);this.value={width:e.width,height:null},n&&o.change((t=>{t.setAttribute("resizedWidth",e.width,n),t.removeAttribute("resizedHeight",n),i.setImageNaturalSizeAttributes(n)}))}}class Mb extends fc{static get requires(){return[Gf]}static get pluginName(){return"ImageResizeEditing"}static get licenseFeatureCode(){return"IR"}static get isOfficialPlugin(){return!0}static get isPremiumPlugin(){return!0}constructor(e){super(e),e.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:custom",value:"custom",icon:"custom"},{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 Fb(e);this._registerConverters("imageBlock"),this._registerConverters("imageInline"),e.commands.add("resizeImage",t),e.commands.add("imageResize",t)}afterInit(){this._registerSchema()}_registerSchema(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&(e.extend("imageBlock",{allowAttributes:["resizedWidth","resizedHeight"]}),e.setAttributeProperties("resizedWidth",{isFormatting:!0}),e.setAttributeProperties("resizedHeight",{isFormatting:!0})),this.editor.plugins.has("ImageInlineEditing")&&(e.extend("imageInline",{allowAttributes:["resizedWidth","resizedHeight"]}),e.setAttributeProperties("resizedWidth",{isFormatting:!0}),e.setAttributeProperties("resizedHeight",{isFormatting:!0}))}_registerConverters(e){const t=this.editor,o=t.plugins.get("ImageUtils");t.conversion.for("downcast").add((t=>t.on(`attribute:resizedWidth:${e}`,((e,t,o)=>{if(!o.consumable.consume(t.item,e.name))return;const i=o.writer,n=o.mapper.toViewElement(t.item);null!==t.attributeNewValue?(i.setStyle("width",t.attributeNewValue,n),i.addClass("image_resized",n)):(i.removeStyle("width",n),i.removeClass("image_resized",n))})))),t.conversion.for("dataDowncast").attributeToAttribute({model:{name:e,key:"resizedHeight"},view:e=>({key:"style",value:{height:e}})}),t.conversion.for("editingDowncast").add((t=>t.on(`attribute:resizedHeight:${e}`,((t,i,n)=>{if(!n.consumable.consume(i.item,t.name))return;const s=n.writer,r=n.mapper.toViewElement(i.item),a="imageInline"===e?o.findViewImgElement(r):r;null!==i.attributeNewValue?s.setStyle("height",i.attributeNewValue,a):s.removeStyle("height",a)})))),t.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===e?"figure":"img",styles:{width:/.+/}},model:{key:"resizedWidth",value:e=>Uf(e)?null:e.getStyle("width")}}),t.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===e?"figure":"img",styles:{height:/.+/}},model:{key:"resizedHeight",value:e=>Uf(e)?null:e.getStyle("height")}}),t.conversion.for("upcast").add((t=>{t.on("element:"+("imageBlock"===e?"figure":"img"),((e,t,o)=>{o.consumable.consume(t.viewItem,{classes:["image_resized"]})}))}))}}const Nb=(()=>({small:'',medium:'',large:'',custom:'',original:''}))();class Bb extends fc{static get requires(){return[Mb]}static get pluginName(){return"ImageResizeButtons"}static get isOfficialPlugin(){return!0}_resizeUnit;constructor(e){super(e),this._resizeUnit=e.config.get("image.resizeUnit")}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),o=e.commands.get("resizeImage");this.bind("isEnabled").to(o);for(const e of t)this._registerImageResizeButton(e);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:o,value:i,icon:n}=e;t.ui.componentFactory.add(o,(o=>{const s=new Lu(o),r=t.commands.get("resizeImage"),a=this._getOptionLabelValue(e,!0);if(!Nb[n])throw new fe("imageresizebuttons-missing-icon",t,e);if(s.set({label:a,icon:Nb[n],tooltip:a,isToggleable:!0}),s.bind("isEnabled").to(this),t.plugins.has("ImageCustomResizeUI")&&Lb(e)){const e=t.plugins.get("ImageCustomResizeUI");this.listenTo(s,"execute",(()=>{e._showForm(this._resizeUnit)}))}else{const e=i?i+this._resizeUnit:null;s.bind("isOn").to(r,"value",r,"isEnabled",zb(e)),this.listenTo(s,"execute",(()=>{t.execute("resizeImage",{width:e})}))}return s}))}_registerImageResizeDropdown(e){const t=this.editor,o=t.t,i=e.find((e=>!e.value)),n=n=>{const s=t.commands.get("resizeImage"),r=Zh(n,Mh),a=r.buttonView,l=o("Resize image");return a.set({tooltip:l,commandValue:i.value,icon:Nb.medium,isToggleable:!0,label:this._getOptionLabelValue(i),withText:!0,class:"ck-resize-image-button",ariaLabel:l,ariaLabelledBy:void 0}),a.bind("label").to(s,"value",(e=>e&&e.width?e.width:this._getOptionLabelValue(i))),r.bind("isEnabled").to(this),Xh(r,(()=>this._getResizeDropdownListItemDefinitions(e,s)),{ariaLabel:o("Image resize list"),role:"menu"}),this.listenTo(r,"execute",(e=>{"onClick"in e.source?e.source.onClick():(t.execute(e.source.commandName,{width:e.source.commandValue}),t.editing.view.focus())})),r};t.ui.componentFactory.add("resizeImage",n),t.ui.componentFactory.add("imageResize",n)}_getOptionLabelValue(e,t=!1){const o=this.editor.t;return e.label?e.label:t?Lb(e)?o("Custom image size"):e.value?o("Resize image to %0",e.value+this._resizeUnit):o("Resize image to the original size"):Lb(e)?o("Custom"):e.value?e.value+this._resizeUnit:o("Original")}_getResizeDropdownListItemDefinitions(e,t){const{editor:o}=this,i=new eo,n=e.map((e=>Lb(e)?{...e,valueWithUnits:"custom"}:e.value?{...e,valueWithUnits:`${e.value}${this._resizeUnit}`}:{...e,valueWithUnits:null}));for(const e of n){let s=null;if(o.plugins.has("ImageCustomResizeUI")&&Lb(e)){const i=o.plugins.get("ImageCustomResizeUI");s={type:"button",model:new Jm({label:this._getOptionLabelValue(e),role:"menuitemradio",withText:!0,icon:null,onClick:()=>{i._showForm(this._resizeUnit)}})};const r=Object.values(n).map((e=>e.valueWithUnits));s.model.bind("isOn").to(t,"value",t,"isEnabled",jb(r))}else s={type:"button",model:new Jm({commandName:"resizeImage",commandValue:e.valueWithUnits,label:this._getOptionLabelValue(e),role:"menuitemradio",withText:!0,icon:null})},s.model.bind("isOn").to(t,"value",t,"isEnabled",zb(e.valueWithUnits));s.model.bind("isEnabled").to(t,"isEnabled"),i.add(s)}return i}}function Lb(e){return"custom"===e.value}function zb(e){return(t,o)=>!(void 0===t||!o)&&(null===e&&t===e||null!==t&&t.width===e)}function jb(e){return(t,o)=>!e.some((e=>zb(e)(t,o)))}const qb="image_resized";class $b extends fc{static get requires(){return[Rp,Gf]}static get pluginName(){return"ImageResizeHandles"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(e),this._setupResizerCreator()}_setupResizerCreator(){const e=this.editor,t=e.editing.view,o=e.plugins.get("ImageUtils");t.addObserver(nb),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 s=e.editing.view.domConverter,r=s.domToView(n.target),a=o.getImageWidgetFromImageView(r);let l=this.editor.plugins.get(Rp).getResizerByViewElement(a);if(l)return void l.redraw();const c=e.editing.mapper,d=c.toModelElement(a);l=e.plugins.get(Rp).attachTo({unit:e.config.get("image.resizeUnit"),modelElement:d,viewElement:a,editor:e,getHandleHost:e=>e.querySelector("img"),getResizeHost:()=>s.mapViewToDom(c.toViewElement(d)),isCentered:()=>"alignCenter"==d.getAttribute("imageStyle"),onCommit(o){t.change((e=>{e.removeClass(qb,a)})),e.execute("resizeImage",{width:o})}}),l.on("updateSize",(()=>{a.hasClass(qb)||t.change((e=>{e.addClass(qb,a)}));const e="imageInline"===d.name?r:a;e.getStyle("height")&&t.change((t=>{t.removeStyle("height",e)}))})),l.bind("isEnabled").to(this)}))}}function Hb(e){if(!e)return null;const[,t,o]=e.trim().match(/([.,\d]+)(%|px)$/)||[],i=Number.parseFloat(t);return Number.isNaN(i)?null:{value:i,unit:o}}function Wb(e,t,o){return"px"===o?{value:t.value,unit:"px"}:{value:t.value/e*100,unit:"%"}}function Ub(e){const{editing:t}=e,o=e.plugins.get("ImageUtils").getClosestSelectedImageElement(e.model.document.selection);if(!o)return null;const i=t.mapper.toViewElement(o);return{model:o,view:i,dom:t.view.domConverter.mapViewToDom(i)}}class Kb extends Au{focusTracker;keystrokes;unit;backButtonView;saveButtonView;labeledInput;children;_focusables;_focusCycler;_validators;constructor(e,t,o){super(e),this.focusTracker=new oo,this.keystrokes=new ro,this.unit=t,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.labeledInput=this._createLabeledInputView(),this.children=this.createCollection([this._createHeaderView()]),this.children.add(new Km(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new tu,this._validators=o,this.keystrokes.set("Esc",((e,t)=>{this.fire("cancel"),t()})),this._focusCycler=new qu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-image-custom-resize-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),Ou({view:this});[this.backButtonView,this.labeledInput,this.saveButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createBackButton(){const e=this.locale.t,t=new Lu(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:ed,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new Lu(this.locale);return t.set({label:e("Save"),withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){const e=this.locale.t,t=new ju(this.locale,{label:e("Image Resize")});return t.children.add(this.backButtonView,0),t}_createLabeledInputView(){const e=this.locale.t,t=new Sh(this.locale,sm);return t.label=e("Resize image (in %0)",this.unit),t.class="ck-labeled-field-view_full-width",t.fieldView.set({step:.1}),t}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.labeledInput.errorText=t,!1}return!0}resetFormStatus(){this.labeledInput.errorText=null}get rawSize(){const{element:e}=this.labeledInput.fieldView;return e?e.value:null}get parsedSize(){const{rawSize:e}=this;if(null===e)return null;const t=Number.parseFloat(e);return Number.isNaN(t)?null:t}get sizeWithUnits(){const{parsedSize:e,unit:t}=this;return null===e?null:`${e}${t}`}}class Gb extends fc{_balloon;_form;static get requires(){return[Qm]}static get pluginName(){return"ImageCustomResizeUI"}static get isOfficialPlugin(){return!0}destroy(){super.destroy(),this._form&&this._form.destroy()}_createForm(e){const t=this.editor;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(Iu(Kb))(t.locale,e,function(e){const t=e.t;return[e=>""===e.rawSize.trim()?t("The value must not be empty."):null===e.parsedSize?t("The value should be a plain number."):void 0]}(t)),this._form.render(),this.listenTo(this._form,"submit",(()=>{this._form.isValid()&&(t.execute("resizeImage",{width:this._form.sizeWithUnits}),this._hideForm(!0))})),this.listenTo(this._form.labeledInput,"change:errorText",(()=>{t.ui.update()})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),Su({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(e){if(this._isVisible)return;this._form||this._createForm(e);const t=this.editor,o=this._form.labeledInput;this._form.disableCssTransitions(),this._form.resetFormStatus(),this._isInBalloon||this._balloon.add({view:this._form,position:Xf(t)});const i=function(e,t){const o=Ub(e);if(!o)return null;const i=Hb(o.model.getAttribute("resizedWidth")||null);return i?i.unit===t?i:Wb(up(o.dom),{value:new ut(o.dom).width},t):null}(t,e),n=i?i.value.toFixed(1):"",s=function(e,t){const o=Ub(e);if(!o)return null;const i=up(o.dom),n=Hb(window.getComputedStyle(o.dom).minWidth)||{value:1};return{unit:t,lower:Math.max(.1,Wb(i,n,t).value),upper:"px"===t?i:100}}(t,e);o.fieldView.value=o.fieldView.element.value=n,s&&Object.assign(o.fieldView,{min:s.lower.toFixed(1),max:Math.ceil(s.upper).toFixed(1)}),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e=!1){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&&this._balloon.visibleView===this._form}get _isInBalloon(){return!!this._balloon&&this._balloon.hasView(this._form)}}class Jb extends wc{_defaultStyles;_styles;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,o=t.model,i=t.plugins.get("ImageUtils");o.change((t=>{const n=e.value,{setImageSizes:s=!0}=e;let r=i.getClosestSelectedImageElement(o.document.selection);n&&this.shouldConvertImageType(n,r)&&(this.editor.execute(i.isBlockImage(r)?"imageTypeInline":"imageTypeBlock",{setImageSizes:s}),r=i.getClosestSelectedImageElement(o.document.selection)),!n||this._styles.get(n).isDefault?t.removeAttribute("imageStyle",r):t.setAttribute("imageStyle",n,r),s&&i.setImageNaturalSizeAttributes(r)}))}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const Zb={get inline(){return{name:"inline",title:"In line",icon:Qc,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:Jc,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:Yc,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:Gc,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:Zc,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:Xc,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:Gc,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:Zc,modelElements:["imageBlock"],className:"image-style-side"}}},Qb=(()=>({full:'',left:Yc,right:Xc,center:Gc,inlineLeft:Jc,inlineRight:Zc,inline:Qc}))(),Yb=[{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 Xb(e){be("image-style-configuration-definition-invalid",e)}const ew={normalizeStyles:function(e){const t=(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?Zb[e]?{...Zb[e]}:{name:e}:function(e,t){const o={...t};for(const i in e)Object.prototype.hasOwnProperty.call(t,i)||(o[i]=e[i]);return o}(Zb[e.name],e);"string"==typeof e.icon&&(e.icon=Qb[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:o}){const{modelElements:i,name:n}=e;if(!(i&&i.length&&n))return Xb({style:e}),!1;{const n=[t?"imageBlock":null,o?"imageInline":null];if(!i.some((e=>n.includes(e))))return be("image-style-missing-dependency",{style:e,missingPlugins:i.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)));return t},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")?[...Yb]:[]},warnInvalidStyle:Xb};function tw(e){const t={imageInline:e.filter((e=>!e.isDefault&&e.modelElements.includes("imageInline"))),imageBlock:e.filter((e=>!e.isDefault&&e.modelElements.includes("imageBlock")))};return(o,i,n)=>{if(!i.modelRange)return;const s=i.viewItem,r=to(i.modelRange.getItems());if(r&&n.schema.checkAttribute(r,"imageStyle")){for(const e of t[r.name])n.consumable.consume(s,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,r);!function(e,t,o,i){if(!e.consumable.test(t,{styles:["float"]}))return;let n=null;switch(t.getStyle("float")){case"left":n="alignLeft";break;case"right":n="alignRight"}if(!n)return;const s=ow(n,i);if(!s)return;const r=Zb[s.name];if(!Ko(s,r))return;e.writer.setAttribute("imageStyle",n,o),e.consumable.consume(t,{styles:["float"]})}(n,s,r,e)}}}function ow(e,t){for(const o of t)if(o.name===e)return o}class iw extends fc{static get pluginName(){return"ImageStyleEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[Gf]}normalizedStyles;init(){const e=this.editor,t=e.plugins.has("ImageBlockEditing"),o=e.plugins.has("ImageInlineEditing");e.config.define("image.styles",ew.getDefaultStylesConfiguration(t,o)),this.normalizedStyles=ew.normalizeStyles({configuredStyles:e.config.get("image.styles"),isBlockPluginLoaded:t,isInlinePluginLoaded:o}),this._setupConversion(t,o),this._setupPostFixer(),e.commands.add("imageStyle",new Jb(e,this.normalizedStyles))}_setupConversion(e,t){const o=this.editor,i=o.model.schema,n=(s=this.normalizedStyles,(e,t,o)=>{if(!o.consumable.consume(t.item,e.name))return;const i=ow(t.attributeNewValue,s),n=ow(t.attributeOldValue,s),r=o.mapper.toViewElement(t.item),a=o.writer;n&&a.removeClass(n.className,r),i&&a.addClass(i.className,r)});var s;const r=tw(this.normalizedStyles);o.editing.downcastDispatcher.on("attribute:imageStyle",n),o.data.downcastDispatcher.on("attribute:imageStyle",n),e&&(i.extend("imageBlock",{allowAttributes:"imageStyle"}),i.setAttributeProperties("imageStyle",{isFormatting:!0}),o.data.upcastDispatcher.on("element:figure",r,{priority:"low"})),t&&(i.extend("imageInline",{allowAttributes:"imageStyle"}),i.setAttributeProperties("imageStyle",{isFormatting:!0}),o.data.upcastDispatcher.on("element:img",r,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,o=e.plugins.get(Gf),i=new Map(this.normalizedStyles.map((e=>[e.name,e])));t.registerPostFixer((e=>{let n=!1;for(const s of t.differ.getChanges())if("insert"==s.type||"attribute"==s.type&&"imageStyle"==s.attributeKey){let t="insert"==s.type?s.position.nodeAfter:s.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!o.isImage(t))continue;const r=t.getAttribute("imageStyle");if(!r)continue;const a=i.get(r);a&&a.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),n=!0)}return n}))}}class nw extends fc{static get requires(){return[iw]}static get pluginName(){return"ImageStyleUI"}static get isOfficialPlugin(){return!0}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")||[],o=sw(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of o)this._createButton(e);const i=sw([...t.filter(s),...ew.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of i)this._createDropdown(e,o)}_createDropdown(e,t){const o=this.editor.ui.componentFactory;o.add(e.name,(i=>{let n;const{defaultItem:s,items:r,title:a}=e,l=r.filter((e=>t.find((({name:t})=>rw(t)===e)))).map((e=>{const t=o.create(e);return e===s&&(n=t),t}));r.length!==l.length&&ew.warnInvalidStyle({dropdown:e});const c=Zh(i,Jh),d=c.buttonView,u=d.arrowView;return Qh(c,l,{enableActiveItemFocusOnDropdownOpen:!0}),d.set({label:aw(a,n.label),class:null,tooltip:!0}),u.unbind("label"),u.set({label:a}),d.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(jf);return t<0?n.icon:l[t].icon})),d.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(jf);return aw(a,t<0?n.label:l[t].label)})),d.bind("isOn").toMany(l,"isOn",((...e)=>e.some(jf))),d.bind("class").toMany(l,"isOn",((...e)=>e.some(jf)?"ck-splitbutton_flatten":void 0)),d.on("execute",(()=>{l.some((({isOn:e})=>e))?c.isOpen=!c.isOpen:n.fire("execute")})),c.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(jf))),this.listenTo(c,"execute",(()=>{this.editor.editing.view.focus()})),c}))}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(rw(t),(o=>{const i=this.editor.commands.get("imageStyle"),n=new Lu(o);return n.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),n.bind("isEnabled").to(i,"isEnabled"),n.bind("isOn").to(i,"value",(e=>e===t)),n.on("execute",this._executeCommand.bind(this,t)),n}))}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function sw(e,t){for(const o of e)t[o.title]&&(o.title=t[o.title]);return e}function rw(e){return`imageStyle:${e}`}function aw(e,t){return(e?e+": ":"")+t}function lw(e){return e.map((e=>s(e)?e.name:e))}const cw=Symbol("isWpButtonMacroSymbol");function dw(e){const t=e.getSelectedElement();return!(!t||!function(e){return!!e.getCustomProperty(cw)&&ip(e)}(t))}class uw extends fc{static get pluginName(){return"OPChildPagesEditing"}static get buttonName(){return"insertChildPages"}init(){const e=this.editor,t=e.model,o=e.conversion;t.schema.register("op-macro-child-pages",{allowWhere:["$block"],allowAttributes:["page"],isBlock:!0,isLimit:!0}),o.for("upcast").elementToElement({view:{name:"macro",classes:"child_pages"},model:(e,{writer:t})=>{const o=e.getAttribute("data-page")||"",i="true"==e.getAttribute("data-include-parent");return t.createElement("op-macro-child-pages",{page:o,includeParent:i})}}),o.for("editingDowncast").elementToElement({model:"op-macro-child-pages",view:(e,{writer:t})=>this.createMacroViewElement(e,t)}).add((e=>e.on("attribute:page",this.modelAttributeToView.bind(this)))).add((e=>e.on("attribute:includeParent",this.modelAttributeToView.bind(this)))),o.for("dataDowncast").elementToElement({model:"op-macro-child-pages",view:(e,{writer:t})=>t.createContainerElement("macro",{class:"child_pages","data-page":e.getAttribute("page")||"","data-include-parent":e.getAttribute("includeParent")||""})}),e.ui.componentFactory.add(uw.buttonName,(t=>{const o=new Lu(t);return o.set({label:window.I18n.t("js.editor.macro.child_pages.button"),withText:!0}),o.on("execute",(()=>{e.model.change((t=>{const o=t.createElement("op-macro-child-pages",{});e.model.insertContent(o,e.model.document.selection)}))})),o}))}modelAttributeToView(e,t,o){const i=t.item;if(!i.is("element","op-macro-child-pages"))return;o.consumable.consume(t.item,e.name);const n=o.mapper.toViewElement(i);o.writer.remove(o.writer.createRangeIn(n)),this.setPlaceholderContent(o.writer,i,n)}macroLabel(){return window.I18n.t("js.editor.macro.child_pages.text")}pageLabel(e){return e&&e.length>0?e:window.I18n.t("js.editor.macro.child_pages.this_page")}includeParentText(e){return e?` (${window.I18n.t("js.editor.macro.child_pages.include_parent")})`:""}createMacroViewElement(e,t){const o=t.createContainerElement("div");return this.setPlaceholderContent(t,e,o),function(e,t,o){return t.setCustomProperty(cw,!0,e),np(e,t,{label:o})}(o,t,{label:this.macroLabel()})}setPlaceholderContent(e,t,o){const i=t.getAttribute("page"),n=t.getAttribute("includeParent"),s=this.macroLabel(),r=this.pageLabel(i),a=e.createContainerElement("span",{class:"macro-value"});let l=[e.createText(`${s} `)];e.insert(e.createPositionAt(a,0),e.createText(`${r}`)),l.push(a),l.push(e.createText(this.includeParentText(n))),e.insert(e.createPositionAt(o,0),l)}}class hw extends fc{static get requires(){return[Qm]}static get pluginName(){return"OPChildPagesToolbar"}init(){const e=this.editor,t=this.editor.model,o=Mp(e);jp(e,"opEditChildPagesMacroButton",(e=>{const i=o.services.macros,n=e.getAttribute("page"),s=e.getAttribute("includeParent"),r=n&&n.length>0?n:"";i.configureChildPages(r,s).then((o=>t.change((t=>{t.setAttribute("page",o.page,e),t.setAttribute("includeParent",o.includeParent,e)}))))}))}afterInit(){$p(this,this.editor,"OPChildPages",dw)}}class mw extends wc{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)||!gw(e.schema,o))do{if(o=o.parent,!o)return}while(!gw(e.schema,o));e.change((e=>{e.setSelection(o,"in")}))}}function gw(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const pw=Wt("Ctrl+A");class fw extends fc{static get pluginName(){return"SelectAllEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t,o=e.editing.view.document;e.commands.add("selectAll",new mw(e)),this.listenTo(o,"keydown",((t,o)=>{Ht(o)===pw&&(e.execute("selectAll"),o.preventDefault())})),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Select all"),keystroke:"CTRL+A"}]})}}class bw extends fc{static get pluginName(){return"SelectAllUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",(()=>{const e=this._createButton(Lu);return e.set({tooltip:!0}),e})),e.ui.componentFactory.add("menuBar:selectAll",(()=>this._createButton(sh)))}_createButton(e){const t=this.editor,o=t.locale,i=t.commands.get("selectAll"),n=new e(t.locale),s=o.t;return n.set({label:s("Select all"),icon:'',keystroke:"Ctrl+A"}),n.bind("isEnabled").to(i,"isEnabled"),this.listenTo(n,"execute",(()=>{t.execute("selectAll"),t.editing.view.focus()})),n}}class ww extends fc{static get requires(){return[fw,bw]}static get pluginName(){return"SelectAll"}static get isOfficialPlugin(){return!0}}const yw="ckCsrfToken",_w="abcdefghijklmnopqrstuvwxyz0123456789";function kw(){let e=function(e){e=e.toLowerCase();const t=document.cookie.split(";");for(const o of t){const t=o.split("=");if(decodeURIComponent(t[0].trim().toLowerCase())===e)return decodeURIComponent(t[1])}return null}(yw);var t,o;return e&&40==e.length||(e=function(e){let t="";const o=new Uint8Array(e);window.crypto.getRandomValues(o);for(let e=0;e.5?i.toUpperCase():i}return t}(40),t=yw,o=e,document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(o)+";path=/"),e}class vw{loader;url;t;xhr;constructor(e,t,o){this.loader=e,this.url=t,this.t=o}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.url,!0),e.responseType="json"}_initListeners(e,t,o){const i=this.xhr,n=this.loader,s=(0,this.t)("Cannot upload file:")+` ${o.name}.`;i.addEventListener("error",(()=>t(s))),i.addEventListener("abort",(()=>t())),i.addEventListener("load",(()=>{const o=i.response;if(!o||!o.uploaded)return t(o&&o.error&&o.error.message?o.error.message:s);e({default:o.url})})),i.upload&&i.upload.addEventListener("progress",(e=>{e.lengthComputable&&(n.uploadTotal=e.total,n.uploaded=e.loaded)}))}_sendRequest(e){const t=new FormData;t.append("upload",e),t.append("ckCsrfToken",kw()),this.xhr.send(t)}}function Cw(e,t,o,i){let n,s=null;"function"==typeof i?n=i:(s=e.commands.get(i),n=()=>{e.execute(i)}),e.model.document.on("change:data",((r,a)=>{if(s&&!s.isEnabled||!t.isEnabled)return;const l=to(e.model.document.selection.getRanges());if(!l.isCollapsed)return;if(a.isUndo||!a.isLocal)return;const c=Array.from(e.model.document.differ.getChanges()),d=c[0];if(1!=c.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const u=d.position.parent;if(u.is("element","codeBlock"))return;if(u.is("element","listItem")&&"function"!=typeof i&&!["numberedList","bulletedList","todoList"].includes(i))return;if(s&&!0===s.value)return;const h=u.getChild(0),m=e.model.createRangeOn(h);if(!m.containsRange(l)&&!l.end.isEqual(m.end))return;const g=o.exec(h.data.substr(0,l.end.offset));g&&e.model.enqueueChange((t=>{const o=e.model.document.selection,i=t.createPositionAt(u,0),s=t.createPositionAt(u,g[0].length),r=new Ts(i,s);if(!1!==n({match:g})){const e=Array.from(o.getAttributes());t.remove(r);const i=o.getFirstRange(),n=t.createRangeIn(u);!u.isEmpty||n.isEqual(i)||n.containsRange(i,!0)||t.remove(u),function(e,t,o){const i=e.model.schema,n=t.getFirstPosition();let s=new gr(n);i.checkChild(s,"$text")&&(s=s.push("$text"));for(const[t,n]of o)i.checkAttribute(s,t)&&e.setSelectionAttribute(t,n)}(t,o,e)}r.detach(),e.model.enqueueChange((()=>{e.plugins.get("Delete").requestUndoOnBackspace()}))}))}))}function Aw(e,t,o,i){let n,s;o instanceof RegExp?n=o:s=o,s=s||(e=>{let t;const o=[],i=[];for(;null!==(t=n.exec(e))&&!(t&&t.length<4);){let{index:e,1:n,2:s,3:r}=t;const a=n+s+r;e+=t[0].length-a.length;const l=[e,e+n.length],c=[e+n.length+s.length,e+n.length+s.length+r.length];o.push(l),o.push(c),i.push([e+n.length,e+n.length+s.length])}return{remove:o,format:i}}),e.model.document.on("change:data",((o,n)=>{if(n.isUndo||!n.isLocal||!t.isEnabled)return;const r=e.model,a=r.document.selection;if(!a.isCollapsed)return;const l=Array.from(r.document.differ.getChanges()),c=l[0];if(1!=l.length||"insert"!==c.type||"$text"!=c.name||1!=c.length)return;const d=a.focus,u=d.parent,{text:h,range:m}=function(e,t){let o=e.start;const i=Array.from(e.getItems()).reduce(((e,i)=>!i.is("$text")&&!i.is("$textProxy")||i.getAttribute("code")?(o=t.createPositionAfter(i),""):e+i.data),"");return{text:i,range:t.createRange(o,e.end)}}(r.createRange(r.createPositionAt(u,0),d),r),g=s(h),p=xw(m.start,g.format,r),f=xw(m.start,g.remove,r);p.length&&f.length&&r.enqueueChange((t=>{if(!1!==i(t,p)){for(const e of f.reverse())t.remove(e);r.enqueueChange((()=>{e.plugins.get("Delete").requestUndoOnBackspace()}))}}))}))}function xw(e,t,o){return t.filter((e=>void 0!==e[0]&&void 0!==e[1])).map((t=>o.createRange(e.getShiftedBy(t[0]),e.getShiftedBy(t[1]))))}function Ew(e,t){return(o,i)=>{if(!e.commands.get(t).isEnabled)return!1;const n=e.model.schema.getValidRanges(i,t);for(const e of n)o.setAttribute(t,!0,e);o.removeSelectionAttribute(t)}}class Tw extends wc{attributeKey;constructor(e,t){super(e),this.attributeKey=t}refresh(){const e=this.editor.model,t=e.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=e.schema.checkAttributeInSelection(t.selection,this.attributeKey)}execute(e={}){const t=this.editor.model,o=t.document.selection,i=void 0===e.forceValue?!this.value:e.forceValue;t.change((e=>{if(o.isCollapsed)i?e.setSelectionAttribute(this.attributeKey,!0):e.removeSelectionAttribute(this.attributeKey);else{const n=t.schema.getValidRanges(o.getRanges(),this.attributeKey,{includeEmptyRanges:!0});for(const t of n){let o=t,n=this.attributeKey;t.isCollapsed&&(o=t.start.parent,n=Os._getStoreAttributeKey(this.attributeKey)),i?e.setAttribute(n,i,o):e.removeAttribute(n,o)}}}))}_getValueFromFirstAllowedNode(){const e=this.editor.model,t=e.schema,o=e.document.selection;if(o.isCollapsed)return o.hasAttribute(this.attributeKey);for(const e of o.getRanges())for(const o of e.getItems())if(t.checkAttribute(o,this.attributeKey))return o.hasAttribute(this.attributeKey);return!1}}const Pw="bold";class Sw extends fc{static get pluginName(){return"BoldEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=this.editor.t;e.model.schema.extend("$text",{allowAttributes:Pw}),e.model.schema.setAttributeProperties(Pw,{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:Pw,view:"strong",upcastAlso:["b",e=>{const t=e.getStyle("font-weight");return t&&("bold"==t||Number(t)>=600)?{name:!0,styles:["font-weight"]}:null}]}),e.commands.add(Pw,new Tw(e,Pw)),e.keystrokes.set("CTRL+B",Pw),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Bold text"),keystroke:"CTRL+B"}]})}}function Iw({editor:e,commandName:t,plugin:o,icon:i,label:n,keystroke:s}){return r=>{const a=e.commands.get(t),l=new r(e.locale);return l.set({label:n,icon:i,keystroke:s,isToggleable:!0}),l.bind("isEnabled").to(a,"isEnabled"),l.bind("isOn").to(a,"value"),l instanceof sh?l.set({role:"menuitemcheckbox"}):l.set({tooltip:!0}),o.listenTo(l,"execute",(()=>{e.execute(t),e.editing.view.focus()})),l}}const Rw="bold";class Ow extends fc{static get pluginName(){return"BoldUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t,o=Iw({editor:e,commandName:Rw,plugin:this,icon:qc,label:t("Bold"),keystroke:"CTRL+B"});e.ui.componentFactory.add(Rw,(()=>o(Lu))),e.ui.componentFactory.add("menuBar:"+Rw,(()=>o(sh)))}}const Vw="code";class Dw extends fc{static get pluginName(){return"CodeEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[Rg]}init(){const e=this.editor,t=this.editor.t;e.model.schema.extend("$text",{allowAttributes:Vw}),e.model.schema.setAttributeProperties(Vw,{isFormatting:!0,copyOnEnter:!1}),e.conversion.attributeToElement({model:Vw,view:"code"}),e.commands.add(Vw,new Tw(e,Vw)),e.plugins.get(Rg).registerAttribute(Vw),jg(e,Vw,"code","ck-code_selected"),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Move out of an inline code style"),keystroke:[["arrowleft","arrowleft"],["arrowright","arrowright"]]}]})}}const Fw="code";class Mw extends fc{static get pluginName(){return"CodeUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t,o=Iw({editor:e,commandName:Fw,plugin:this,icon:'',label:t("Code")});e.ui.componentFactory.add(Fw,(()=>o(Lu))),e.ui.componentFactory.add("menuBar:"+Fw,(()=>o(sh)))}}const Nw="italic";class Bw extends fc{static get pluginName(){return"ItalicEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=this.editor.t;e.model.schema.extend("$text",{allowAttributes:Nw}),e.model.schema.setAttributeProperties(Nw,{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:Nw,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),e.commands.add(Nw,new Tw(e,Nw)),e.keystrokes.set("CTRL+I",Nw),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Italic text"),keystroke:"CTRL+I"}]})}}const Lw="italic";class zw extends fc{static get pluginName(){return"ItalicUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t,o=Iw({editor:e,commandName:Lw,plugin:this,icon:'',keystroke:"CTRL+I",label:t("Italic")});e.ui.componentFactory.add(Lw,(()=>o(Lu))),e.ui.componentFactory.add("menuBar:"+Lw,(()=>o(sh)))}}const jw="strikethrough";class qw extends fc{static get pluginName(){return"StrikethroughEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=this.editor.t;e.model.schema.extend("$text",{allowAttributes:jw}),e.model.schema.setAttributeProperties(jw,{isFormatting:!0,copyOnEnter:!0}),e.conversion.attributeToElement({model:jw,view:"s",upcastAlso:["del","strike",{styles:{"text-decoration":"line-through"}}]}),e.commands.add(jw,new Tw(e,jw)),e.keystrokes.set("CTRL+SHIFT+X","strikethrough"),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Strikethrough text"),keystroke:"CTRL+SHIFT+X"}]})}}const $w="strikethrough";class Hw extends fc{static get pluginName(){return"StrikethroughUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t,o=Iw({editor:e,commandName:$w,plugin:this,icon:'',keystroke:"CTRL+SHIFT+X",label:t("Strikethrough")});e.ui.componentFactory.add($w,(()=>o(Lu))),e.ui.componentFactory.add("menuBar:"+$w,(()=>o(sh)))}}class Ww extends wc{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,o=t.schema,i=t.document.selection,n=Array.from(i.getSelectedBlocks()),s=void 0===e.forceValue?!this.value:e.forceValue;t.change((e=>{if(s){const t=n.filter((e=>Uw(e)||Gw(o,e)));this._applyQuote(e,t)}else this._removeQuote(e,n.filter(Uw))}))}_getValue(){const e=to(this.editor.model.document.selection.getSelectedBlocks());return!(!e||!Uw(e))}_checkEnabled(){if(this.value)return!0;const e=this.editor.model.document.selection,t=this.editor.model.schema,o=to(e.getSelectedBlocks());return!!o&&Gw(t,o)}_removeQuote(e,t){Kw(e,t).reverse().forEach((t=>{if(t.start.isAtStart&&t.end.isAtEnd)return void e.unwrap(t.start.parent);if(t.start.isAtStart){const o=e.createPositionBefore(t.start.parent);return void e.move(t,o)}t.end.isAtEnd||e.split(t.end);const o=e.createPositionAfter(t.end.parent);e.move(t,o)}))}_applyQuote(e,t){const o=[];Kw(e,t).reverse().forEach((t=>{let i=Uw(t.start);i||(i=e.createElement("blockQuote"),e.wrap(t,i)),o.push(i)})),o.reverse().reduce(((t,o)=>t.nextSibling==o?(e.merge(e.createPositionAfter(t)),t):o))}}function Uw(e){return"blockQuote"==e.parent.name?e.parent:null}function Kw(e,t){let o,i=0;const n=[];for(;i{const i=e.model.document.differ.getChanges();for(const e of i)if("insert"==e.type){const i=e.position.nodeAfter;if(!i)continue;if(i.is("element","blockQuote")&&i.isEmpty)return o.remove(i),!0;if(i.is("element","blockQuote")&&!t.checkChild(e.position,i))return o.unwrap(i),!0;if(i.is("element")){const e=o.createRangeIn(i);for(const i of e.getItems())if(i.is("element","blockQuote")&&!t.checkChild(o.createPositionBefore(i),i))return o.unwrap(i),!0}}else if("remove"==e.type){const t=e.position.parent;if(t.is("element","blockQuote")&&t.isEmpty)return o.remove(t),!0}return!1}));const o=this.editor.editing.view.document,i=e.model.document.selection,n=e.commands.get("blockQuote");this.listenTo(o,"enter",((t,o)=>{if(!i.isCollapsed||!n.value)return;i.getLastPosition().parent.isEmpty&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),o.preventDefault(),t.stop())}),{context:"blockquote"}),this.listenTo(o,"delete",((t,o)=>{if("backward"!=o.direction||!i.isCollapsed||!n.value)return;const s=i.getLastPosition().parent;s.isEmpty&&!s.previousSibling&&(e.execute("blockQuote"),e.editing.view.scrollToTheSelection(),o.preventDefault(),t.stop())}),{context:"blockquote"})}}class Zw extends fc{static get pluginName(){return"BlockQuoteUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("blockQuote",(()=>{const e=this._createButton(Lu);return e.set({tooltip:!0}),e})),e.ui.componentFactory.add("menuBar:blockQuote",(()=>{const e=this._createButton(sh);return e.set({role:"menuitemcheckbox"}),e}))}_createButton(e){const t=this.editor,o=t.locale,i=t.commands.get("blockQuote"),n=new e(t.locale),s=o.t;return n.set({label:s("Block quote"),icon:'',isToggleable:!0}),n.bind("isEnabled").to(i,"isEnabled"),n.bind("isOn").to(i,"value"),this.listenTo(n,"execute",(()=>{t.execute("blockQuote"),t.editing.view.focus()})),n}}class Qw extends wc{constructor(e){super(e),this._isEnabledBasedOnSelection=!1}refresh(){const e=this.editor.model,t=to(e.document.selection.getSelectedBlocks());this.value=!!t&&t.is("element","paragraph"),this.isEnabled=!!t&&Yw(t,e.schema)}execute(e={}){const t=this.editor.model,o=t.document,i=e.selection||o.selection;t.canEditAt(i)&&t.change((e=>{const o=i.getSelectedBlocks();for(const i of o)!i.is("element","paragraph")&&Yw(i,t.schema)&&e.rename(i,"paragraph")}))}}function Yw(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class Xw extends wc{constructor(e){super(e),this._isEnabledBasedOnSelection=!1}execute(e){const t=this.editor.model,o=e.attributes;let i=e.position;return t.canEditAt(i)?t.change((e=>{if(i=this._findPositionToInsertParagraph(i,e),!i)return null;const n=e.createElement("paragraph");return o&&t.schema.setAllowedAttributes(n,o,e),t.insertContent(n,i),e.setSelection(n,"in"),e.createPositionAt(n,0)})):null}_findPositionToInsertParagraph(e,t){const o=this.editor.model;if(o.schema.checkChild(e,"paragraph"))return e;const i=o.schema.findAllowedParent(e,"paragraph");if(!i)return null;const n=e.parent,s=o.schema.checkChild(n,"$text");return n.isEmpty||s&&e.isAtEnd?o.createPositionAfter(n):!n.isEmpty&&s&&e.isAtStart?o.createPositionBefore(n):t.split(e,i).position}}class ey extends fc{static get pluginName(){return"Paragraph"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new Qw(e)),e.commands.add("insertParagraph",new Xw(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>ey.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}static paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"])}class ty extends wc{modelElements;constructor(e,t){super(e),this.modelElements=t}refresh(){const e=to(this.editor.model.document.selection.getSelectedBlocks());this.value=!!e&&this.modelElements.includes(e.name)&&e.name,this.isEnabled=!!e&&this.modelElements.some((t=>oy(e,t,this.editor.model.schema)))}execute(e){const t=this.editor.model,o=t.document,i=e.value;t.change((e=>{const n=Array.from(o.selection.getSelectedBlocks()).filter((e=>oy(e,i,t.schema)));for(const t of n)t.is("element",i)||e.rename(t,i)}))}}function oy(e,t,o){return o.checkChild(e.parent,t)&&!o.isObject(e)}const iy="paragraph";class ny extends fc{static get pluginName(){return"HeadingEditing"}static get isOfficialPlugin(){return!0}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[ey]}init(){const e=this.editor,t=e.config.get("heading.options"),o=[];for(const i of t)"paragraph"!==i.model&&(e.model.schema.register(i.model,{inheritAllFrom:"$block"}),e.conversion.elementToElement(i),o.push(i.model));this._addDefaultH1Conversion(e),e.commands.add("heading",new ty(e,o))}afterInit(){const e=this.editor,t=e.commands.get("enter"),o=e.config.get("heading.options");t&&this.listenTo(t,"afterExecute",((t,i)=>{const n=e.model.document.selection.getFirstPosition().parent;o.some((e=>n.is("element",e.model)))&&!n.is("element",iy)&&0===n.childCount&&i.writer.rename(n,iy)}))}_addDefaultH1Conversion(e){e.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:ge.low+1})}}function sy(e){const t=e.t,o={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=o[e.title];return t&&t!=e.title&&(e.title=t),e}))}class ry extends fc{static get pluginName(){return"HeadingUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.t,o=sy(e),i=t("Choose heading"),n=t("Heading");e.ui.componentFactory.add("heading",(t=>{const s={},r=new eo,a=e.commands.get("heading"),l=e.commands.get("paragraph"),c=[a];for(const e of o){const t={type:"button",model:new Jm({label:e.title,class:e.class,role:"menuitemradio",withText:!0})};"paragraph"===e.model?(t.model.bind("isOn").to(l,"value"),t.model.set("commandName","paragraph"),c.push(l)):(t.model.bind("isOn").to(a,"value",(t=>t===e.model)),t.model.set({commandName:"heading",commandValue:e.model})),r.add(t),s[e.model]=e.title}const d=Zh(t);return Xh(d,r,{ariaLabel:n,role:"menu"}),d.buttonView.set({ariaLabel:n,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:n}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(c,"isEnabled",((...e)=>e.some((e=>e)))),d.buttonView.bind("label").to(a,"value",l,"value",((e,t)=>{const o=t?"paragraph":e;return"boolean"==typeof o?i:s[o]?s[o]:i})),d.buttonView.bind("ariaLabel").to(a,"value",l,"value",((e,t)=>{const o=t?"paragraph":e;return"boolean"==typeof o?n:s[o]?`${s[o]}, ${n}`:n})),this.listenTo(d,"execute",(t=>{const{commandName:o,commandValue:i}=t.source;e.execute(o,i?{value:i}:void 0),e.editing.view.focus()})),d})),e.ui.componentFactory.add("menuBar:heading",(i=>{const n=new og(i),s=e.commands.get("heading"),r=e.commands.get("paragraph"),a=[s],l=new ig(i);n.set({class:"ck-heading-dropdown"}),l.set({ariaLabel:t("Heading"),role:"menu"}),n.buttonView.set({label:t("Heading")}),n.panelView.children.add(l);for(const t of o){const o=new Em(i,n),c=new sh(i);o.children.add(c),l.items.add(o),c.set({isToggleable:!0,label:t.title,role:"menuitemradio",class:t.class}),c.delegate("execute").to(n),c.on("execute",(()=>{const o="paragraph"===t.model?"paragraph":"heading";e.execute(o,{value:t.model}),e.editing.view.focus()})),"paragraph"===t.model?(c.bind("isOn").to(r,"value"),a.push(r)):c.bind("isOn").to(s,"value",(e=>e===t.model))}return n.bind("isEnabled").toMany(a,"isEnabled",((...e)=>e.some((e=>e)))),n}))}}new Set(["paragraph","heading1","heading2","heading3","heading4","heading5","heading6"]);class ay{_definitions=new Set;_conflictChecker;get length(){return this._definitions.size}setConflictChecker(e){this._conflictChecker=e}add(e){Array.isArray(e)?e.forEach((e=>this._definitions.add(e))):this._definitions.add(e)}getDispatcher(){return e=>{const t=(e,t)=>{const o=t.createAttributeElement("a",e.attributes,{priority:5});e.classes&&t.addClass(e.classes,o);for(const i in e.styles)t.setStyle(i,e.styles[i],o);return t.setCustomProperty("link",!0,o),o},o=e=>(o,i,n)=>{if(i.attributeKey.startsWith("link")&&("linkHref"!=i.attributeKey||n.consumable.test(i.item,"attribute:linkHref"))&&(i.item.is("selection")||n.schema.isInline(i.item)))for(const o of this._definitions)o.callback(i.item.getAttribute("linkHref"))&&!this._conflictChecker?.(o,i.item)&&e?i.item.is("selection")?n.writer.wrap(n.writer.document.selection.getFirstRange(),t(o,n.writer)):n.writer.wrap(n.mapper.toViewRange(i.range),t(o,n.writer)):n.writer.unwrap(n.mapper.toViewRange(i.range),t(o,n.writer))};e.on("attribute",o(!1),{priority:ge.high-1}),e.on("attribute",o(!0),{priority:ge.high-2})}}getDispatcherForLinkedImage(){return e=>{const t=e=>(t,o,{writer:i,mapper:n})=>{if(!o.item.is("element","imageBlock")||!o.attributeKey.startsWith("link"))return;const s=n.toViewElement(o.item),r=Array.from(s.getChildren()).find((e=>e.is("element","a")));if(r)for(const t of this._definitions){const n=ao(t.attributes);if(t.callback(o.item.getAttribute("linkHref"))&&!this._conflictChecker?.(t,o.item)&&e){for(const[e,t]of n)"class"===e?i.addClass(t,r):i.setAttribute(e,t,!1,r);t.classes&&i.addClass(t.classes,r);for(const e in t.styles)i.setStyle(e,t.styles[e],r)}else{for(const[e,t]of n)"class"===e?i.removeClass(t,r):i.removeAttribute(e,t,r);t.classes&&i.removeClass(t.classes,r);for(const e in t.styles)i.removeStyle(e,r)}}};e.on("attribute",t(!1),{priority:ge.high-1}),e.on("attribute",t(!0),{priority:ge.high-2})}}}const ly=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,cy=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,dy=/^((\w+:(\/{2,})?)|(\W))/i,uy=["https?","ftps?","mailto"],hy="Ctrl+K";function my(e,{writer:t}){const o=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,o),o}function gy(e,t=uy){const o=String(e),i=t.join("|");return function(e,t){const o=e.replace(ly,"");return!!o.match(t)}(o,new RegExp(`${"^(?:(?:):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))".replace("",i)}`,"i"))?o:"#"}function py(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function fy(e,t){const o=(i=e,cy.test(i)?"mailto:":t);var i;const n=!!o&&!by(e);return e&&n?o+e:e}function by(e){return dy.test(e)}function wy(e){let t="";for(const o of e.getItems()){if(!o.is("$text")&&!o.is("$textProxy"))return;t+=o.data}return t}function yy(e,t){if(e.attributes&&t.attributes){if(Object.keys(e.attributes).some((e=>!function(e){return"class"===e||"style"===e||"rel"===e}(e)&&e in t.attributes)))return!0}if(e.styles&&t.styles){if(Object.keys(e.styles).some((e=>e in t.styles)))return!0}return!1}function _y(e,t){const o=t.find((t=>t.id===e));return o?t.filter((t=>t.id!==e&&yy(o,t))).map((e=>e.id)):[]}class ky extends wc{manualDecorators=new eo;automaticDecorators=new ay;restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,o=t.getSelectedElement()||to(t.getSelectedBlocks());py(o,e.schema)?(this.value=o.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(o,"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={},o){const i=this.editor.model,n=i.document.selection,s=function({decoratorStates:e,allDecorators:t}){const o={...e};for(const n in e)if(e[n]&&i(n)){const e=_y(n,t);for(const t of e)o[t]=!1}function i(e){return t.some((t=>t.id===e&&!t.value))}return o}({allDecorators:Array.from(this.manualDecorators),decoratorStates:t}),r=[],a=[];for(const e in s)s[e]?r.push(e):a.push(e);i.change((t=>{const s=o=>{t.setAttribute("linkHref",e,o),r.forEach((e=>t.setAttribute(e,!0,o))),a.forEach((e=>t.removeAttribute(e,o)))},l=(n,r)=>{const a=wy(n);if(!a)return n;let l=o;if(l||(l=r&&r==a?e:a),l!=a){const e=t.createDocumentFragment();for(const o of n.getItems()){const i=o;t.append(t.createText(i.data,i.getAttributes()),e)}const o=t.createRangeIn(e),r=function(e,t){const o=de(e,t),i={equal:0,insert:0,delete:0},n=[];let s="",r="";for(const a of[...o,null])"insert"==a?r+=t[i.equal+i.insert]:"delete"==a?s+=e[i.equal+i.delete]:(s.length||r.length)&&(n.push({offset:i.equal,actual:s,expected:r}),s="",r=""),a&&i[a]++;return n}(a,l);let c=0;for(const{offset:e,actual:n,expected:a}of r){const r=e+c,l=t.createRange(o.start.getShiftedBy(r),o.start.getShiftedBy(r+n.length)),d=vy(l,o).getAttributes(),u=Array.from(d).filter((([e])=>i.schema.getAttributeProperties(e).isFormatting)),h=t.createText(a,u);s(h),t.remove(l),t.insert(h,l.start),c+=a.length}return i.insertContent(e,n),t.createRange(n.start,n.start.getShiftedBy(l.length))}},c=e=>{const{plugins:o}=this.editor;if(t.setSelection(e.end),o.has("TwoStepCaretMovement"))o.get("TwoStepCaretMovement")._handleForwardMovement();else for(const e of["linkHref",...r,...a])t.removeSelectionAttribute(e)};if(n.isCollapsed){const a=n.getFirstPosition();if(n.hasAttribute("linkHref")){const e=n.getAttribute("linkHref"),t=Lg(a,"linkHref",e,i),o=l(t,e);s(o||t),o&&c(o)}else if(""!==e){const s=ao(n.getAttributes());s.set("linkHref",e),r.forEach((e=>{s.set(e,!0)}));c(i.insertContent(t.createText(o||e,s),a))}}else{const e=Array.from(n.getRanges()),o=i.schema.getValidRanges(e,"linkHref"),r=[];for(const e of n.getSelectedBlocks())i.schema.checkAttribute(e,"linkHref")&&r.push(t.createRangeOn(e));const a=r.slice();for(const e of o)this._isRangeToUpdate(e,r)&&a.push(e);const c=e.map((e=>({start:ma.fromPosition(e.start,"toPrevious"),end:ma.fromPosition(e.end,"toNext")})));for(let e of a){e=l(e,(e.start.textNode||e.start.nodeAfter).getAttribute("linkHref"))||e,s(e)}t.setSelection(c.map((e=>{const t=e.start.toPosition(),o=e.end.toPosition();return e.start.detach(),e.end.detach(),i.createRange(t,o)})))}})),this.restoreManualDecoratorStates()}_getDecoratorStateFromModel(e){const t=this.editor.model,o=t.document.selection,i=o.getSelectedElement();return py(i,t.schema)?i.getAttribute(e):o.getAttribute(e)}_isRangeToUpdate(e,t){for(const o of t)if(o.containsRange(e))return!1;return!0}}function vy(e,t){if(!e.isCollapsed)return to(e.getItems());const o=e.start;return o.textNode?o.textNode:!o.nodeBefore||o.isEqual(t.start)?o.nodeAfter:o.nodeBefore}class Cy extends wc{refresh(){const e=this.editor.model,t=e.document.selection,o=t.getSelectedElement();py(o,e.schema)?this.isEnabled=e.schema.checkAttribute(o,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,o=t.document.selection,i=e.commands.get("link");t.change((e=>{const n=o.isCollapsed?[Lg(o.getFirstPosition(),"linkHref",o.getAttribute("linkHref"),t)]:t.schema.getValidRanges(o.getRanges(),"linkHref");for(const t of n)if(e.removeAttribute("linkHref",t),i)for(const o of i.manualDecorators)e.removeAttribute(o.id,t)}))}}class Ay extends(Be()){id;defaultValue;label;attributes;classes;styles;constructor({id:e,label:t,attributes:o,classes:i,styles:n,defaultValue:s}){super(),this.id=e,this.set("value",void 0),this.defaultValue=s,this.label=t,this.attributes=o,this.classes=i,this.styles=n}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}const xy="automatic",Ey=/^(https?:)?\/\//;class Ty extends fc{_linkOpeners=[];static get pluginName(){return"LinkEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[Rg,fg,bf]}constructor(e){super(e),e.config.define("link",{allowCreatingEmptyLinks:!1,addTargetToExternalLinks:!1,toolbar:["linkPreview","|","editLink","linkProperties","unlink"]})}init(){const e=this.editor,t=this.editor.config.get("link.allowedProtocols");e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:my}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,o)=>my(gy(e,t),o)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new ky(e)),e.commands.add("unlink",new Cy(e));const o=function(e,t){const o={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach((e=>("label"in e&&o[e.label]&&(e.label=o[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${o=i,function(e){return e.substring(0,1).toUpperCase()+e.substring(1)}(_o(o))}`});t.push(e)}var o;return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(o.filter((e=>e.mode===xy))),this._enableManualDecorators(o.filter((e=>"manual"===e.mode)));e.plugins.get(Rg).registerAttribute("linkHref"),jg(e,"linkHref","a","ck-link_selected"),this._enableLinkOpen(),this._enableSelectionAttributesFixer(),this._enableClipboardIntegration(),this._enableDecoratorConflictPostfixer()}_registerLinkOpener(e){this._linkOpeners.push(e)}_enableAutomaticDecorators(e){const t=this.editor,o=t.commands.get("link"),i=o.automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&i.add({id:"linkIsExternal",mode:xy,callback:e=>!!e&&Ey.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),i.add(e),i.setConflictChecker(((e,t)=>{for(const i of o.manualDecorators)if(t.hasAttribute(i.id)&&yy(e,i))return!0})),i.length&&t.conversion.for("downcast").add(i.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,o=t.commands.get("link").manualDecorators;e.forEach((e=>{t.model.schema.extend("$text",{allowAttributes:e.id});const i=new Ay(e);o.add(i),t.conversion.for("downcast").add((e=>{const t=e=>{const t=e.createAttributeElement("a",i.attributes,{priority:5});i.classes&&e.addClass(i.classes,t);for(const o in i.styles)e.setStyle(o,i.styles[o],t);return e.setCustomProperty("link",!0,t),t},o=e=>(o,i,n)=>{if(i.item.is("selection")||n.schema.isInline(i.item)){if(!e&&i.attributeOldValue){if(!n.consumable.test(i.item,o.name))return;n.writer.unwrap(n.mapper.toViewRange(i.range),t(n.writer))}if(e&&i.attributeNewValue){if(!n.consumable.consume(i.item,o.name))return;i.item.is("selection")?n.writer.wrap(n.writer.document.selection.getFirstRange(),t(n.writer)):n.writer.wrap(n.mapper.toViewRange(i.range),t(n.writer))}}};e.on(`attribute:${i.id}`,o(!1),{priority:ge.high-1}),e.on(`attribute:${i.id}`,o(!0),{priority:ge.high-2})})),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...i._createPattern()},model:{key:i.id}})}))}_enableLinkOpen(){const e=this.editor,t=e.editing.view.document,o=e=>{var t;this._linkOpeners.some((t=>t(e)))||(t=e,window.open(t,"_blank","noopener"))};this.listenTo(t,"click",((e,t)=>{if(!(Y.isMac?t.domEvent.metaKey:t.domEvent.ctrlKey))return;let i=t.domTarget;if("a"!=i.tagName.toLowerCase()&&(i=i.closest("a")),!i)return;const n=i.getAttribute("href");n&&(e.stop(),t.preventDefault(),o(n))}),{context:"$capture"}),this.listenTo(t,"keydown",((t,i)=>{const n=e.commands.get("link").value;!!n&&i.keyCode===qt.enter&&i.altKey&&(t.stop(),o(n))}))}_enableSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(t,"change:attribute",((o,{attributeKeys:i})=>{i.includes("linkHref")&&!t.hasAttribute("linkHref")&&e.change((t=>{var o;!function(e,t){e.removeSelectionAttribute("linkHref");for(const o of t)e.removeSelectionAttribute(o)}(t,(o=e.schema,o.getDefinition("$text").allowAttributes.filter((e=>e.startsWith("link")))))}))}))}_enableClipboardIntegration(){const e=this.editor,t=e.model,o=this.editor.config.get("link.defaultProtocol");o&&this.listenTo(e.plugins.get("ClipboardPipeline"),"contentInsertion",((e,i)=>{t.change((e=>{const t=e.createRangeIn(i.content);for(const i of t.getItems())if(i.hasAttribute("linkHref")){const t=fy(i.getAttribute("linkHref"),o);e.setAttribute("linkHref",t,i)}}))}))}_enableDecoratorConflictPostfixer(){const e=this.editor,t=e.model,o=e.commands.get("link");t.document.registerPostFixer((e=>{let i=!1;const n=t.document.differ.getChanges(),s=new Set,r=new Set(o.manualDecorators.map((e=>e.id)));for(const e of n){if("attribute"===e.type){if("linkHref"!==e.attributeKey&&!r.has(e.attributeKey))continue;for(const t of e.range.getItems())t.hasAttribute("linkHref")&&s.add(t)}"insert"===e.type&&e.attributes.has("linkHref")&&e.position.nodeAfter&&s.add(e.position.nodeAfter)}for(const t of s){const n=[];for(const s of o.manualDecorators)if(t.hasAttribute(s.id)){for(let o=n.length-1;o>=0;o--){const r=n[o];yy(r,s)&&(e.removeAttribute(r.id,t),n.splice(o,1),i=!0)}n.push(s)}}return i}))}}class Py extends Lu{constructor(e){super(e);const t=this.bindTemplate;this.set({href:void 0,withText:!0}),this.extendTemplate({attributes:{class:["ck-link-toolbar__preview"],href:t.to("href"),target:"_blank",rel:"noopener noreferrer"},on:{click:t.to((e=>{if(this.href){const t=()=>e.preventDefault();this.fire("navigate",this.href,t)}}))}}),this.template.tag="a"}}class Sy extends Au{focusTracker=new oo;keystrokes=new ro;backButtonView;saveButtonView;displayedTextInputView;urlInputView;children;providersListChildren;_validators;_focusables=new tu;_focusCycler;constructor(e,t){super(e),this._validators=t,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.displayedTextInputView=this._createDisplayedTextInput(),this.urlInputView=this._createUrlInput(),this.providersListChildren=this.createCollection(),this.children=this.createCollection([this._createHeaderView()]),this._createFormChildren(),this.listenTo(this.providersListChildren,"add",(()=>{this.stopListening(this.providersListChildren,"add"),this.children.add(this._createProvidersListView())})),this._focusCycler=new qu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-link-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),Ou({view:this});[this.urlInputView,this.saveButtonView,...this.providersListChildren,this.backButtonView,this.displayedTextInputView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.urlInputView.errorText=t,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null}_createBackButton(){const e=this.locale.t,t=new Lu(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:ed,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new Lu(this.locale);return t.set({label:e("Insert"),tooltip:!1,withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){const e=this.locale.t,t=new ju(this.locale,{label:e("Link")});return t.children.add(this.backButtonView,0),t}_createProvidersListView(){const e=new zh(this.locale);return e.extendTemplate({attributes:{class:["ck-link-form__providers-list"]}}),e.items.bindTo(this.providersListChildren).using((e=>{const t=new Nh(this.locale);return t.children.add(e),t})),e}_createDisplayedTextInput(){const e=this.locale.t,t=new Sh(this.locale,nm);return t.label=e("Displayed text"),t.class="ck-labeled-field-view_full-width",t}_createUrlInput(){const e=this.locale.t,t=new Sh(this.locale,nm);return t.fieldView.inputMode="url",t.label=e("Link URL"),t.class="ck-labeled-field-view_full-width",t}_createFormChildren(){this.children.add(new Km(this.locale,{children:[this.displayedTextInputView],class:["ck-form__row_large-top-padding"]})),this.children.add(new Km(this.locale,{children:[this.urlInputView,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding","ck-form__row_large-bottom-padding"]}))}get url(){const{element:e}=this.urlInputView.fieldView;return e?e.value.trim():null}}class Iy extends Au{focusTracker=new oo;keystrokes=new ro;backButtonView;listView;listChildren;emptyListInformation;children;_focusables=new tu;_focusCycler;constructor(e){super(e),this.listChildren=this.createCollection(),this.backButtonView=this._createBackButton(),this.listView=this._createListView(),this.emptyListInformation=this._createEmptyLinksListItemView(),this.children=this.createCollection([this._createHeaderView(),this.emptyListInformation]),this.set("title",""),this.set("emptyListPlaceholder",""),this.set("hasItems",!1),this.listenTo(this.listChildren,"change",(()=>{this.hasItems=this.listChildren.length>0})),this.on("change:hasItems",((e,t,o)=>{o?(this.children.remove(this.emptyListInformation),this.children.add(this.listView)):(this.children.remove(this.listView),this.children.add(this.emptyListInformation))})),this.keystrokes.set("Esc",((e,t)=>{this.fire("cancel"),t()})),this._focusCycler=new qu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-providers"],tabindex:"-1"},children:this.children})}render(){super.render();[this.listView,this.backButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createListView(){const e=new zh(this.locale);return e.extendTemplate({attributes:{class:["ck-link-providers__list"]}}),e.items.bindTo(this.listChildren).using((e=>{const t=new Nh(this.locale);return t.children.add(e),t})),e}_createBackButton(){const e=this.locale.t,t=new Lu(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:ed,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createHeaderView(){const e=new ju(this.locale);return e.bind("label").to(this,"title"),e.children.add(this.backButtonView,0),e}_createEmptyLinksListItemView(){const e=new Au(this.locale);return e.setTemplate({tag:"p",attributes:{class:["ck","ck-link__empty-list-info"]},children:[{text:this.bindTemplate.to("emptyListPlaceholder")}]}),e}}class Ry extends Au{focusTracker=new oo;keystrokes=new ro;backButtonView;children;listChildren;_focusables=new tu;_focusCycler;constructor(e){super(e),this.backButtonView=this._createBackButton(),this.listChildren=this.createCollection(),this.children=this.createCollection([this._createHeaderView(),this._createListView()]),this._focusCycler=new qu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-properties"],tabindex:"-1"},children:this.children}),this.keystrokes.set("Esc",((e,t)=>{this.fire("back"),t()}))}render(){super.render();[...this.listChildren,this.backButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBackButton(){const e=this.locale.t,t=new Lu(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:ed,tooltip:!0}),t.delegate("execute").to(this,"back"),t}_createHeaderView(){const e=this.locale.t,t=new ju(this.locale,{label:e("Link properties")});return t.children.add(this.backButtonView,0),t}_createListView(){const e=new zh(this.locale);return e.extendTemplate({attributes:{class:["ck-link__list"]}}),e.items.bindTo(this.listChildren).using((e=>{const t=new Nh(this.locale);return t.children.add(e),t})),e}}class Oy extends Lu{arrowView;constructor(e){super(e),this.set({withText:!0}),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{class:["ck-link__button"]}})}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new Nu;return e.content=Kc,e}}const Vy="link-ui";class Dy extends fc{toolbarView=null;formView=null;linkProviderItemsView=null;propertiesView=null;_balloon;_linksProviders=new eo;static get requires(){return[Qm,Ty]}static get pluginName(){return"LinkUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=this.editor.t;this.set("selectedLinkableText",void 0),e.editing.view.addObserver(ol),this._balloon=e.plugins.get(Qm),this._registerComponents(),this._registerEditingOpeners(),this._enableBalloonActivators(),e.conversion.for("editingDowncast").markerToHighlight({model:Vy,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:Vy,view:(e,{writer:t})=>{if(!e.markerRange.isCollapsed)return null;const o=t.createUIElement("span");return t.addClass(["ck-fake-link-selection","ck-fake-link-selection_collapsed"],o),o}}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Create link"),keystroke:hy},{label:t("Move out of a link"),keystroke:[["arrowleft","arrowleft"],["arrowright","arrowright"]]}]})}destroy(){super.destroy(),this.propertiesView&&this.propertiesView.destroy(),this.formView&&this.formView.destroy(),this.toolbarView&&this.toolbarView.destroy(),this.linkProviderItemsView&&this.linkProviderItemsView.destroy()}registerLinksListProvider(e){const t=this._linksProviders.filter((t=>(t.order||0)<=(e.order||0))).length;this._linksProviders.add(e,t)}_createViews(){const e=this.editor.commands.get("link");this.toolbarView=this._createToolbarView(),this.formView=this._createFormView(),e.manualDecorators.length&&(this.propertiesView=this._createPropertiesView()),this._enableUserBalloonInteractions()}_createToolbarView(){const e=this.editor,t=new Wh(e.locale),o=e.commands.get("link");t.class="ck-link-toolbar";let i=e.config.get("link.toolbar");return o.manualDecorators.length||(i=i.filter((e=>"linkProperties"!==e))),t.fillFromConfig(i,e.ui.componentFactory),t.keystrokes.set("Esc",((e,t)=>{this._hideUI(),t()})),t.keystrokes.set(hy,((e,t)=>{this._addFormView(),t()})),e.ui.addToolbar(t,{isContextual:!0,beforeFocus:()=>{this._getSelectedLinkElement()&&!this._isToolbarVisible&&this._showUI(!0)},afterBlur:()=>{this._hideUI(!1)}}),t}_createFormView(){const e=this.editor,t=e.locale.t,o=e.commands.get("link"),i=e.config.get("link.defaultProtocol"),n=new(Iu(Sy))(e.locale,function(e){const t=e.t,o=e.config.get("link.allowCreatingEmptyLinks");return[e=>{if(!o&&!e.url.length)return t("Link URL must not be empty.")}]}(e));return n.displayedTextInputView.bind("isEnabled").to(this,"selectedLinkableText",(e=>void 0!==e)),n.urlInputView.bind("isEnabled").to(o,"isEnabled"),n.saveButtonView.bind("isEnabled").to(o,"isEnabled"),n.saveButtonView.bind("label").to(o,"value",(e=>t(e?"Update":"Insert"))),this.listenTo(n,"submit",(()=>{if(n.isValid()){const t=fy(n.urlInputView.fieldView.element.value,i),o=n.displayedTextInputView.fieldView.element.value;e.execute("link",t,this._getDecoratorSwitchesState(),o!==this.selectedLinkableText?o:void 0),this._closeFormView()}})),this.listenTo(n.urlInputView,"change:errorText",(()=>{e.ui.update()})),this.listenTo(n,"cancel",(()=>{this._closeFormView()})),n.keystrokes.set("Esc",((e,t)=>{this._closeFormView(),t()})),n.providersListChildren.bindTo(this._linksProviders).using((e=>this._createLinksListProviderButton(e))),n}_createLinkProviderListView(e){return e.getListItems().map((({href:e,label:t,icon:o})=>{const i=new Lu;return i.set({label:t,icon:o,tooltip:!1,withText:!0}),i.on("execute",(()=>{this.formView.resetFormStatus(),this.formView.urlInputView.fieldView.value=e,this.editor.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()})),i}))}_createLinkProviderItemsView(e){const t=this.editor,o=t.locale.t,i=new Iy(t.locale),{emptyListPlaceholder:n,label:s}=e;return i.emptyListPlaceholder=n||o("No links available"),i.title=s,this.listenTo(i,"cancel",(()=>{t.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()})),i}_createPropertiesView(){const e=this.editor,t=this.editor.commands.get("link"),o=new(Iu(Ry))(e.locale);return this.listenTo(o,"back",(()=>{e.editing.view.focus(),this._removePropertiesView()})),o.listChildren.bindTo(t.manualDecorators).using((o=>{const i=new fh(e.locale);return i.set({label:o.label,withText:!0}),i.bind("isOn").toMany([o,t],"value",((e,t)=>void 0===t&&void 0===e?!!o.defaultValue:!!e)),i.on("execute",(()=>{e.execute("link",t.value,{...this._getDecoratorSwitchesState(),[o.id]:!i.isOn})})),i})),o}_getDecoratorSwitchesState(){const e=this.editor.commands.get("link");return Array.from(e.manualDecorators).reduce(((t,o)=>{const i=void 0===e.value&&void 0===o.value?o.defaultValue:o.value;return{...t,[o.id]:!!i}}),{})}_registerEditingOpeners(){this.editor.plugins.get(Ty)._registerLinkOpener((e=>{const t=this._getLinkProviderLinkByHref(e);if(!t)return!1;const{item:o,provider:i}=t;return!!i.navigate&&i.navigate(o)}))}_registerComponents(){const e=this.editor;e.ui.componentFactory.add("link",(()=>{const e=this._createButton(Lu);return e.set({tooltip:!0}),e})),e.ui.componentFactory.add("menuBar:link",(()=>{const e=this._createButton(sh);return e.set({role:"menuitemcheckbox"}),e})),e.ui.componentFactory.add("linkPreview",(t=>{const o=new Py(t),i=e.config.get("link.allowedProtocols"),n=e.commands.get("link"),s=t.t;o.bind("isEnabled").to(n,"value",(e=>!!e)),o.bind("href").to(n,"value",(e=>e&&gy(e,i)));const r=e=>{if(!e)return o.label=void 0,o.icon=void 0,void(o.tooltip=s("Open link in new tab"));const t=this._getLinkProviderLinkByHref(e);if(t){const{label:e,tooltip:i,icon:n}=t.item;o.label=e,o.tooltip=i||!1,o.icon=n}else o.label=e,o.icon=void 0,o.tooltip=s("Open link in new tab")};return r(n.value),this.listenTo(n,"change:value",((e,t,o)=>{r(o)})),this.listenTo(o,"navigate",((e,t,o)=>{const i=this._getLinkProviderLinkByHref(t);if(!i)return;const{provider:n,item:s}=i,{navigate:r}=n;r&&r(s)&&(e.stop(),o())})),o})),e.ui.componentFactory.add("unlink",(t=>{const o=e.commands.get("unlink"),i=new Lu(t),n=t.t;return i.set({label:n("Unlink"),icon:'',tooltip:!0}),i.bind("isEnabled").to(o),this.listenTo(i,"execute",(()=>{e.execute("unlink"),this._hideUI()})),i})),e.ui.componentFactory.add("editLink",(t=>{const o=e.commands.get("link"),i=new Lu(t),n=t.t;return i.set({label:n("Edit link"),icon:'',tooltip:!0}),i.bind("isEnabled").to(o),this.listenTo(i,"execute",(()=>{this._addFormView()})),i})),e.ui.componentFactory.add("linkProperties",(t=>{const o=e.commands.get("link"),i=new Lu(t),n=t.t;return i.set({label:n("Link properties"),icon:'\n',tooltip:!0}),i.bind("isEnabled").to(o,"isEnabled",o,"value",o,"manualDecorators",((e,t,o)=>e&&!!t&&o.length>0)),this.listenTo(i,"execute",(()=>{this._addPropertiesView()})),i}))}_createLinksListProviderButton(e){const t=this.editor.locale,o=new Oy(t);return o.set({label:e.label}),this.listenTo(o,"execute",(()=>{this._showLinksProviderView(e)})),o}_createButton(e){const t=this.editor,o=t.locale,i=t.commands.get("link"),n=new e(t.locale),s=o.t;return n.set({label:s("Link"),icon:'',keystroke:hy,isToggleable:!0}),n.bind("isEnabled").to(i,"isEnabled"),n.bind("isOn").to(i,"value",(e=>!!e)),this.listenTo(n,"execute",(()=>{t.editing.view.scrollToTheSelection(),this._showUI(!0),this._getSelectedLinkElement()&&this._addFormView()})),n}_enableBalloonActivators(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),e.keystrokes.set(hy,((t,o)=>{o(),e.commands.get("link").isEnabled&&(e.editing.view.scrollToTheSelection(),this._showUI(!0))}))}_enableUserBalloonInteractions(){this.editor.keystrokes.set("Tab",((e,t)=>{this._isToolbarVisible&&!this.toolbarView.focusTracker.isFocused&&(this.toolbarView.focus(),t())}),{priority:"high"}),this.editor.keystrokes.set("Esc",((e,t)=>{this._isUIVisible&&(this._hideUI(),t())})),Su({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:()=>[this._balloon.view.element],callback:()=>{this._hideUI(!1)}})}_addToolbarView(){this.toolbarView||this._createViews(),this._isToolbarInPanel||this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"})}_addFormView(){if(this.formView||this._createViews(),this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this.formView.resetFormStatus(),this.formView.backButtonView.isVisible=e.isEnabled&&!!e.value,this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this.selectedLinkableText=this._getSelectedLinkableText(),this.formView.displayedTextInputView.fieldView.value=this.selectedLinkableText||"",this.formView.urlInputView.fieldView.value=e.value||"",this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions()}_addPropertiesView(){this.propertiesView||this._createViews(),this._arePropertiesInPanel||(this.propertiesView.disableCssTransitions(),this._balloon.add({view:this.propertiesView,position:this._getBalloonPositionData()}),this.propertiesView.enableCssTransitions(),this.propertiesView.focus())}_showLinksProviderView(e){this.linkProviderItemsView&&this._removeLinksProviderView(),this.linkProviderItemsView=this._createLinkProviderItemsView(e),this._addLinkProviderItemsView(e)}_addLinkProviderItemsView(e){this.linkProviderItemsView.listChildren.clear(),this.linkProviderItemsView.listChildren.addMany(this._createLinkProviderListView(e)),this._balloon.add({view:this.linkProviderItemsView,position:this._getBalloonPositionData()}),this.linkProviderItemsView.focus()}_closeFormView(){const e=this.editor.commands.get("link");this.selectedLinkableText=void 0,void 0!==e.value?this._removeFormView():this._hideUI()}_removePropertiesView(){this._arePropertiesInPanel&&this._balloon.remove(this.propertiesView)}_removeLinksProviderView(){this._isLinksListInPanel&&this._balloon.remove(this.linkProviderItemsView)}_removeFormView(e=!0){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this.formView.displayedTextInputView.fieldView.reset(),this.formView.urlInputView.fieldView.reset(),this._balloon.remove(this.formView),e&&this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this.formView||this._createViews(),this._getSelectedLinkElement()?(this._isToolbarVisible?this._addFormView():this._addToolbarView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addToolbarView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(e=!0){const t=this.editor;this._isUIInPanel&&(this.stopListening(t.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e&&t.editing.view.focus(),this._removeLinksProviderView(),this._removePropertiesView(),this._removeFormView(e),this._isToolbarInPanel&&this._balloon.remove(this.toolbarView),this._hideFakeVisualSelection())}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let o=this._getSelectedLinkElement(),i=s();const n=()=>{const e=this._getSelectedLinkElement(),t=s();o&&!e||!o&&t!==i?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),o=e,i=t};function s(){return t.selection.focus.getAncestors().reverse().find((e=>e.is("element")))}this.listenTo(e.ui,"update",n),this.listenTo(this._balloon,"change:visibleView",n)}get _arePropertiesInPanel(){return!!this.propertiesView&&this._balloon.hasView(this.propertiesView)}get _isLinksListInPanel(){return!!this.linkProviderItemsView&&this._balloon.hasView(this.linkProviderItemsView)}get _isFormInPanel(){return!!this.formView&&this._balloon.hasView(this.formView)}get _isToolbarInPanel(){return!!this.toolbarView&&this._balloon.hasView(this.toolbarView)}get _isPropertiesVisible(){return!!this.propertiesView&&this._balloon.visibleView===this.propertiesView}get _isFormVisible(){return!!this.formView&&this._balloon.visibleView==this.formView}get _isToolbarVisible(){return!!this.toolbarView&&this._balloon.visibleView===this.toolbarView}get _isUIInPanel(){return this._arePropertiesInPanel||this._isLinksListInPanel||this._isFormInPanel||this._isToolbarInPanel}get _isUIVisible(){return this._isPropertiesVisible||this._isLinksListInPanel||this._isFormVisible||this._isToolbarVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document;if(this.editor.model.markers.has(Vy)){const t=this.editor.editing.mapper.markerNameToElements(Vy);if(t){const o=Array.from(t),i=e.createRange(e.createPositionBefore(o[0]),e.createPositionAfter(o[o.length-1]));return{target:e.domConverter.viewRangeToDom(i)}}}return{target:()=>{const o=this._getSelectedLinkElement();return o?e.domConverter.mapViewToDom(o):e.domConverter.viewRangeToDom(t.selection.getFirstRange())}}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,o=t.getSelectedElement();if(t.isCollapsed||o&&ip(o))return Fy(t.getFirstPosition());{const o=t.getFirstRange().getTrimmed(),i=Fy(o.start),n=Fy(o.end);return i&&i==n&&e.createRangeIn(i).getTrimmed().isEqual(o)?i:null}}_getSelectedLinkableText(){const e=this.editor.model,t=this.editor.editing,o=this._getSelectedLinkElement();if(!o)return wy(e.document.selection.getFirstRange());const i=t.view.createRangeOn(o);return wy(t.mapper.toModelRange(i))}_getLinkProviderLinkByHref(e){if(!e)return null;for(const t of this._linksProviders){const o=t.getItem?t.getItem(e):t.getListItems().find((t=>t.href===e));if(o)return{provider:t,item:o}}return null}_showFakeVisualSelection(){const e=this.editor.model;e.change((t=>{const o=e.document.selection.getFirstRange();if(e.markers.has(Vy))t.updateMarker(Vy,{range:o});else if(o.start.isAtEnd){const i=o.start.getLastMatchingPosition((({item:t})=>!e.schema.isContent(t)),{boundaries:o});t.addMarker(Vy,{usingOperation:!1,affectsData:!1,range:t.createRange(i,o.end)})}else t.addMarker(Vy,{usingOperation:!1,affectsData:!1,range:o})}))}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(Vy)&&e.change((e=>{e.removeMarker(Vy)}))}}function Fy(e){return e.getAncestors().find((e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t}))||null}const My=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}))|localhost)(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class Ny extends fc{static get requires(){return[Tg,Ty]}static get pluginName(){return"AutoLink"}static get isOfficialPlugin(){return!0}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(),this._enablePasteLinking()}_expandLinkRange(e,t){return t.textNode&&t.textNode.hasAttribute("linkHref")?Lg(t,"linkHref",t.textNode.getAttribute("linkHref"),e):null}_selectEntireLinks(e,t){const o=this.editor.model,i=o.document.selection,n=i.getFirstPosition(),s=i.getLastPosition();let r=t.getJoined(this._expandLinkRange(o,n)||t);r&&(r=r.getJoined(this._expandLinkRange(o,s)||t)),r&&(r.start.isBefore(n)||r.end.isAfter(s))&&e.setSelection(r)}_enablePasteLinking(){const e=this.editor,t=e.model,o=t.document.selection,i=e.plugins.get("ClipboardPipeline"),n=e.commands.get("link");i.on("inputTransformation",((e,i)=>{if(!this.isEnabled||!n.isEnabled||o.isCollapsed||"paste"!==i.method)return;if(o.rangeCount>1)return;const s=o.getFirstRange(),r=i.dataTransfer.getData("text/plain");if(!r)return;const a=r.match(My);a&&a[2]===r&&(t.change((e=>{this._selectEntireLinks(e,s),n.execute(r)})),e.stop())}),{priority:"high"})}_enableTypingHandling(){const e=this.editor,t=new Ig(e.model,(e=>{let t=e;if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(t))return;t=t.slice(0,-1),"!.:,;?".includes(t[t.length-1])&&(t=t.slice(0,-1));const o=By(t);return o?{url:o,removedTrailingCharacters:e.length-t.length}:void 0}));t.on("matched:data",((t,o)=>{const{batch:i,range:n,url:s,removedTrailingCharacters:r}=o;if(!i.isTyping)return;const a=n.end.getShiftedBy(-r),l=a.getShiftedBy(-s.length),c=e.model.createRange(l,a);this._applyAutoLink(s,c)})),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,o=e.commands.get("enter");o&&o.on("execute",(()=>{const e=t.document.selection.getFirstPosition();let o;o=e.parent.previousSibling?.is("element")?t.createRangeIn(e.parent.previousSibling):t.createRange(t.createPositionAt(e.parent,0),e),this._checkAndApplyAutoLinkOnRange(o)}))}_enableShiftEnterHandling(){const e=this.editor,t=e.model,o=e.commands.get("shiftEnter");o&&o.on("execute",(()=>{const e=t.document.selection.getFirstPosition(),o=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(o)}))}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:o,range:i}=Sg(e,t),n=By(o);if(n){const e=t.createRange(i.end.getShiftedBy(-n.length),i.end);this._applyAutoLink(n,e)}}_applyAutoLink(e,t){const o=this.editor.model,i=fy(e,this.editor.config.get("link.defaultProtocol"));this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,o)&&by(i)&&!function(e){const t=e.start.nodeAfter;return!!t&&t.hasAttribute("linkHref")}(t)&&this._persistAutoLink(i,t)}_persistAutoLink(e,t){const o=this.editor.model,i=this.editor.plugins.get("Delete");o.enqueueChange((n=>{n.setAttribute("linkHref",e,t),o.enqueueChange((()=>{i.requestUndoOnBackspace()}))}))}}function By(e){const t=My.exec(e);return t?t[2]:null}function Ly(e){return e.map((e=>function(e){"number"==typeof e&&(e=String(e));if("object"==typeof e&&(t=e,t.title&&t.model&&t.view))return jy(e);var t;const o=function(e){return"string"==typeof e?zy[e]:zy[e.model]}(e);if(o)return jy(o);if("default"===e)return{model:void 0,title:"Default"};if(function(e){let t;if("object"==typeof e){if(!e.model)throw new fe("font-size-invalid-definition",null,e);t=parseFloat(e.model)}else t=parseFloat(e);return isNaN(t)}(e))return;return function(e){"string"==typeof e&&(e={title:e,model:`${parseFloat(e)}px`});return e.view={name:"span",styles:{"font-size":e.model}},jy(e)}(e)}(e))).filter((e=>void 0!==e))}const zy={get tiny(){return{title:"Tiny",model:"tiny",view:{name:"span",classes:"text-tiny",priority:7}}},get small(){return{title:"Small",model:"small",view:{name:"span",classes:"text-small",priority:7}}},get big(){return{title:"Big",model:"big",view:{name:"span",classes:"text-big",priority:7}}},get huge(){return{title:"Huge",model:"huge",view:{name:"span",classes:"text-huge",priority:7}}}};function jy(e){return e.view&&"string"!=typeof e.view&&!e.view.priority&&(e.view.priority=7),e}class qy{_startElement;_referenceIndent;_isForward;_includeSelf;_sameAttributes;_sameIndent;_lowerIndent;_higherIndent;constructor(e,t){this._startElement=e,this._referenceIndent=e.getAttribute("listIndent"),this._isForward="forward"==t.direction,this._includeSelf=!!t.includeSelf,this._sameAttributes=Qt(t.sameAttributes||[]),this._sameIndent=!!t.sameIndent,this._lowerIndent=!!t.lowerIndent,this._higherIndent=!!t.higherIndent}static first(e,t){return to(new this(e,t)[Symbol.iterator]())}*[Symbol.iterator](){const e=[];for(const{node:t}of new $y(this._getStartNode(),this._isForward?"forward":"backward")){const o=t.getAttribute("listIndent");if(othis._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){e.push(t);continue}}else{if(!this._sameIndent){if(this._higherIndent){e.length&&(yield*e,e.length=0);break}continue}if(this._sameAttributes.some((e=>t.getAttribute(e)!==this._startElement.getAttribute(e))))break}e.length&&(yield*e,e.length=0),yield t}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}class $y{_node;_isForward;_previousNodesByIndent=[];_previous=null;_previousNodeIndent=null;constructor(e,t="forward"){this._node=e,this._isForward="forward"===t}[Symbol.iterator](){return this}next(){if(!Uy(this._node))return{done:!0,value:void 0};const e=this._node.getAttribute("listIndent");let t=null;if(this._previous){const o=this._previousNodeIndent;e>o?this._previousNodesByIndent[o]=this._previous:ee.getAttribute("listItemId")!=t))}function s_(e){return Array.from(e).filter((e=>"$graveyard"!==e.root.rootName)).sort(((e,t)=>e.index-t.index))}function r_(e){const t=e.document.selection.getSelectedElement();return t&&e.schema.isObject(t)&&e.schema.isBlock(t)?t:null}function a_(e,t){return t.checkChild(e.parent,"listItem")&&t.checkChild(e,"$text")&&!t.isObject(e)}function l_(e){return"numbered"==e||"customNumbered"==e}function c_(e,t,o){return Gy(t,{direction:"forward"}).pop().index>e.index?t_(e,t,o):[]}class d_ extends wc{_direction;constructor(e,t){super(e),this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute(){const e=this.editor,t=e.model,o=u_(t.document.selection),i=e.plugins.get("ListEditing").getListAttributeNames();t.change((e=>{const t=[];n_(o)&&!Zy(o[0])?("forward"==this._direction&&t.push(...o_(o,e,{attributeNames:i})),t.push(...e_(o[0],e))):"forward"==this._direction?t.push(...o_(o,e,{expand:!0,attributeNames:i})):t.push(...function(e,t,{attributeNames:o}){const i=Yy(e=Qt(e)),n=new Set,s=Math.min(...i.map((e=>e.getAttribute("listIndent")))),r=new Map;for(const e of i)r.set(e,qy.first(e,{lowerIndent:!0}));for(const e of i){if(n.has(e))continue;n.add(e);const i=e.getAttribute("listIndent")-1;if(i<0)i_(e,t,o);else{if(e.getAttribute("listIndent")==s){const o=c_(e,r.get(e),t);for(const e of o)n.add(e);if(o.length)continue}t.setAttribute("listIndent",i,e)}}return s_(n)}(o,e,{attributeNames:i}));for(const o of t){if(!o.hasAttribute("listType"))continue;const t=qy.first(o,{sameIndent:!0});t&&e.setAttribute("listType",t.getAttribute("listType"),o)}this._fireAfterExecute(t)}))}_fireAfterExecute(e){this.fire("afterExecute",s_(new Set(e)))}_checkEnabled(){let e=u_(this.editor.model.document.selection),t=e[0];if(!t)return!1;if("backward"==this._direction)return!0;if(n_(e)&&!Zy(e[0]))return!0;e=Yy(e),t=e[0];const o=qy.first(t,{sameIndent:!0});return!!o&&o.getAttribute("listType")==t.getAttribute("listType")}}function u_(e){const t=Array.from(e.getSelectedBlocks()),o=t.findIndex((e=>!Uy(e)));return-1!=o&&(t.length=o),t}class h_ extends wc{type;_listWalkerOptions;constructor(e,t,o={}){super(e),this.type=t,this._listWalkerOptions=o.multiLevel?{higherIndent:!0,lowerIndent:!0,sameAttributes:[]}:void 0}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,o=t.document,i=r_(t),n=Array.from(o.selection.getSelectedBlocks()).filter((e=>t.schema.checkAttribute(e,"listType")||a_(e,t.schema))),s=void 0!==e.forceValue?!e.forceValue:this.value;t.change((r=>{if(s){const e=n[n.length-1],t=this.editor.plugins.get("ListEditing").getListAttributeNames(),o=Gy(e,{direction:"forward"}),i=[];o.length>1&&i.push(...e_(o[1],r)),i.push(...i_(n,r,t)),i.push(...function(e,t){const o=[];let i=Number.POSITIVE_INFINITY;for(const{node:n}of new $y(e.nextSibling)){const e=n.getAttribute("listIndent");if(0==e)break;e{const{firstElement:r,lastElement:a}=this._getMergeSubjectElements(i,e),l=r.getAttribute("listIndent")||0,c=a.getAttribute("listIndent"),d=a.getAttribute("listItemId");if(l!=c){const e=(u=a,Array.from(new qy(u,{direction:"forward",higherIndent:!0})));n.push(...o_([a,...e],t,{indentBy:l-c,expand:l{const t=e_(this._getStartBlock(),e);this._fireAfterExecute(t)}))}_fireAfterExecute(e){this.fire("afterExecute",s_(new Set(e)))}_checkEnabled(){const e=this.editor.model.document.selection,t=this._getStartBlock();return e.isCollapsed&&Uy(t)&&!Zy(t)}_getStartBlock(){const e=this.editor.model.document.selection.getFirstPosition().parent;return"before"==this._direction?e:e.nextSibling}}class p_ extends fc{static get pluginName(){return"ListItemBoldIntegration"}static get isOfficialPlugin(){return!0}static get requires(){return[z_]}init(){const e=this.editor,t=e.plugins.get("ListFormatting"),o=e.plugins.get(z_);e.plugins.has("BoldEditing")&&this.editor.config.get("list.enableListItemMarkerFormatting")&&(t.registerFormatAttribute("bold","listItemBold"),o.registerDowncastStrategy({scope:"item",attributeName:"listItemBold",setAttributeOnDowncast(e,t,o,i){t&&(e.addClass("ck-list-marker-bold",o),!Y.isSafari||i&&i.dataPipeline||e.setStyle("--ck-content-list-marker-dummy-bold","0",o))}}))}afterInit(){const e=this.editor,t=e.model;e.plugins.has("BoldEditing")&&this.editor.config.get("list.enableListItemMarkerFormatting")&&(t.schema.extend("$listItem",{allowAttributes:"listItemBold"}),t.schema.setAttributeProperties("listItemBold",{isFormatting:!0}),t.schema.addAttributeCheck((e=>{if(!e.last.getAttribute("listItemId"))return!1}),"listItemBold"),e.conversion.for("upcast").attributeToAttribute({model:"listItemBold",view:{name:"li",classes:"ck-list-marker-bold"}}))}}class f_ extends fc{static get pluginName(){return"ListItemItalicIntegration"}static get isOfficialPlugin(){return!0}static get requires(){return[z_]}init(){const e=this.editor,t=e.plugins.get("ListFormatting"),o=e.plugins.get(z_);e.plugins.has("ItalicEditing")&&this.editor.config.get("list.enableListItemMarkerFormatting")&&(t.registerFormatAttribute("italic","listItemItalic"),o.registerDowncastStrategy({scope:"item",attributeName:"listItemItalic",setAttributeOnDowncast(e,t,o,i){t&&(e.addClass("ck-list-marker-italic",o),!Y.isSafari||i&&i.dataPipeline||e.setStyle("--ck-content-list-marker-dummy-italic","0",o))}}))}afterInit(){const e=this.editor,t=e.model;e.plugins.has("ItalicEditing")&&this.editor.config.get("list.enableListItemMarkerFormatting")&&(t.schema.extend("$listItem",{allowAttributes:"listItemItalic"}),t.schema.setAttributeProperties("listItemItalic",{isFormatting:!0}),t.schema.addAttributeCheck((e=>{if(!e.last.getAttribute("listItemId"))return!1}),"listItemItalic"),e.conversion.for("upcast").attributeToAttribute({model:"listItemItalic",view:{name:"li",classes:"ck-list-marker-italic"}}))}}class b_ extends fc{static get pluginName(){return"ListItemFontSizeIntegration"}static get isOfficialPlugin(){return!0}static get requires(){return[z_]}init(){const e=this.editor,t=e.plugins.get("ListFormatting"),o=e.plugins.get(z_);if(!e.plugins.has("FontSizeEditing")||!this.editor.config.get("list.enableListItemMarkerFormatting"))return;const i=Ly(e.config.get("fontSize.options"));t.registerFormatAttribute("fontSize","listItemFontSize"),o.registerDowncastStrategy({scope:"item",attributeName:"listItemFontSize",setAttributeOnDowncast(e,t,o,n){if(t){const s=i.find((e=>e.model==t));s&&s.view&&"string"!=typeof s.view?s.view.styles?(e.addClass("ck-list-marker-font-size",o),e.setStyle("--ck-content-list-marker-font-size",s.view.styles["font-size"],o)):s.view.classes&&(e.addClass(`ck-list-marker-font-size-${t}`,o),!Y.isSafari||n&&n.dataPipeline||e.setStyle("--ck-content-list-marker-dummy-font-size","0",o)):(e.addClass("ck-list-marker-font-size",o),e.setStyle("--ck-content-list-marker-font-size",t,o))}}})}afterInit(){const e=this.editor,t=e.model;if(!e.plugins.has("FontSizeEditing")||!this.editor.config.get("list.enableListItemMarkerFormatting"))return;t.schema.extend("$listItem",{allowAttributes:"listItemFontSize"}),t.schema.setAttributeProperties("listItemFontSize",{isFormatting:!0}),t.schema.addAttributeCheck((e=>{if(!e.last.getAttribute("listItemId"))return!1}),"listItemFontSize"),e.conversion.for("upcast").elementToAttribute({model:{key:"listItemFontSize",value:e=>e.getStyle("--ck-content-list-marker-font-size")},view:{name:"li",classes:"ck-list-marker-font-size",styles:{"--ck-content-list-marker-font-size":/.*/}}});const o=Ly(e.config.get("fontSize.options"));for(const t of o)t.model&&t.view&&e.conversion.for("upcast").elementToAttribute({model:{key:"listItemFontSize",value:t.model},view:{name:"li",classes:`ck-list-marker-font-size-${t.model}`}})}}class w_ extends fc{static get pluginName(){return"ListItemFontColorIntegration"}static get isOfficialPlugin(){return!0}static get requires(){return[z_]}init(){const e=this.editor,t=e.plugins.get("ListFormatting"),o=e.plugins.get(z_);e.plugins.has("FontColorEditing")&&this.editor.config.get("list.enableListItemMarkerFormatting")&&(t.registerFormatAttribute("fontColor","listItemFontColor"),o.registerDowncastStrategy({scope:"item",attributeName:"listItemFontColor",setAttributeOnDowncast(e,t,o){t&&(e.addClass("ck-list-marker-color",o),e.setStyle("--ck-content-list-marker-color",t,o))}}))}afterInit(){const e=this.editor,t=e.model;e.plugins.has("FontColorEditing")&&this.editor.config.get("list.enableListItemMarkerFormatting")&&(t.schema.extend("$listItem",{allowAttributes:"listItemFontColor"}),t.schema.setAttributeProperties("listItemFontColor",{isFormatting:!0}),t.schema.addAttributeCheck((e=>{if(!e.last.getAttribute("listItemId"))return!1}),"listItemFontColor"),e.conversion.for("upcast").attributeToAttribute({model:{key:"listItemFontColor",value:e=>e.getStyle("--ck-content-list-marker-color")},view:{name:"li",classes:"ck-list-marker-color",styles:{"--ck-content-list-marker-color":/.*/}}}))}}class y_ extends fc{static get pluginName(){return"ListItemFontFamilyIntegration"}static get isOfficialPlugin(){return!0}static get requires(){return[z_]}init(){const e=this.editor,t=e.plugins.get("ListFormatting"),o=e.plugins.get(z_);e.plugins.has("FontFamilyEditing")&&this.editor.config.get("list.enableListItemMarkerFormatting")&&(t.registerFormatAttribute("fontFamily","listItemFontFamily"),o.registerDowncastStrategy({scope:"item",attributeName:"listItemFontFamily",setAttributeOnDowncast(e,t,o){t&&(e.addClass("ck-list-marker-font-family",o),e.setStyle("--ck-content-list-marker-font-family",t,o))}}))}afterInit(){const e=this.editor,t=e.model;e.plugins.has("FontFamilyEditing")&&this.editor.config.get("list.enableListItemMarkerFormatting")&&(t.schema.extend("$listItem",{allowAttributes:"listItemFontFamily"}),t.schema.setAttributeProperties("listItemFontFamily",{isFormatting:!0}),t.schema.addAttributeCheck((e=>{if(!e.last.getAttribute("listItemId"))return!1}),"listItemFontFamily"),e.conversion.for("upcast").attributeToAttribute({model:{key:"listItemFontFamily",value:e=>e.getStyle("--ck-content-list-marker-font-family")},view:{name:"li",classes:"ck-list-marker-font-family",styles:{"--ck-content-list-marker-font-family":/.*/}}}))}}class __ extends fc{_loadedFormatting={};static get pluginName(){return"ListFormatting"}static get isOfficialPlugin(){return!0}static get requires(){return[p_,f_,b_,w_,y_]}constructor(e){super(e),e.config.define("list.enableListItemMarkerFormatting",!0)}afterInit(){this.editor.config.get("list.enableListItemMarkerFormatting")&&this._registerPostfixerForListItemFormatting()}_registerPostfixerForListItemFormatting(){const e=this.editor.model;e.document.registerPostFixer((t=>{const o=e.document.differ.getChanges(),i=new Set;let n=!1;for(const e of o)if("attribute"===e.type)("listItemId"==e.attributeKey||"listType"==e.attributeKey||this._isInlineOrSelectionFormatting(e.attributeKey)||Object.values(this._loadedFormatting).includes(e.attributeKey))&&(Uy(e.range.start.nodeAfter)?i.add(e.range.start.nodeAfter):Uy(e.range.start.parent)&&i.add(e.range.start.parent));else if(Uy(e.position.nodeAfter)&&i.add(e.position.nodeAfter),Uy(e.position.nodeBefore)&&i.add(e.position.nodeBefore),Uy(e.position.parent)&&i.add(e.position.parent),"insert"==e.type&&"$text"!=e.name){const o=t.createRangeIn(e.position.nodeAfter);for(const e of o.getItems())Uy(e)&&i.add(e)}for(const o of i){const i=k_(e,o,Object.keys(this._loadedFormatting));for(const[e,s]of Object.entries(i)){const i=this._loadedFormatting[e];(s&&C_(t,o,i,s)||!s&&A_(t,o,i))&&(n=!0)}}return n}))}registerFormatAttribute(e,t){this._loadedFormatting[e]=t}_isInlineOrSelectionFormatting(e){return e.replace(/^selection:/,"")in this._loadedFormatting}}function k_(e,t,o){if(Zy(t))return v_(e,t,o);return v_(e,Ky(t)[0],o)}function v_(e,t,o){if(!function(e){return["numbered","bulleted","customNumbered","customBulleted"].includes(e.getAttribute("listType"))}(t)||e.schema.isLimit(t))return Object.fromEntries(o.map((e=>[e])));if(t.isEmpty)return Object.fromEntries(o.map((e=>[e,t.getAttribute(`selection:${e}`)])));const i=new Set(o),n={},s=e.createRangeIn(t).getWalker({ignoreElementEnd:!0});for(const{item:t}of s){for(const o of i)if(e.schema.checkAttribute(t,o)){const e=t.getAttribute(o);void 0===e?(i.delete(o),n[o]=void 0):void 0===n[o]?n[o]=e:n[o]!==e&&(i.delete(o),n[o]=void 0)}else o in n||(n[o]=void 0);if(!i.size)break;e.schema.isLimit(t)&&s.jumpTo(e.createPositionAfter(t))}return n}function C_(e,t,o,i){const n=Ky(t);let s=!1;for(const t of n)t.hasAttribute(o)&&t.getAttribute(o)===i||(e.setAttribute(o,i,t),s=!0);return s}function A_(e,t,o){const i=Ky(t);let n=!1;for(const t of i)t.hasAttribute(o)&&(e.removeAttribute(o,t),n=!0);return n}class x_ extends fc{static get pluginName(){return"ListUtils"}static get isOfficialPlugin(){return!0}expandListBlocksToCompleteList(e){return Xy(e)}isFirstBlockOfListItem(e){return Zy(e)}isListItemBlock(e){return Uy(e)}expandListBlocksToCompleteItems(e,t={}){return Yy(e,t)}isNumberedListType(e){return l_(e)}isFirstListItemInList(e){return function(e){return!qy.first(e,{sameIndent:!0,sameAttributes:"listType"})}(e)}}function E_(e){return e.is("element","ol")||e.is("element","ul")}function T_(e){return e.is("element","li")}function P_(e,t,o,i=R_(o,t)){return e.createAttributeElement(I_(o),null,{priority:2*t/100-100,id:i})}function S_(e,t,o){return e.createAttributeElement("li",null,{priority:(2*t+1)/100-100,id:o})}function I_(e){return"numbered"==e||"customNumbered"==e?"ol":"ul"}function R_(e,t){return`list-${e}-${t}`}function O_(e,t,o){const i=e.nodeBefore;if(Uy(i)){let e=i;for(const{node:n}of new $y(e,"backward")){if(e=n,o.has(e))return;if(o.add(e),t.has(i))return}t.add(e)}else{const o=e.nodeAfter;Uy(o)&&t.add(o)}}function V_(){return(e,t,o)=>{const{writer:i,schema:n}=o;if(!t.modelRange)return;const s=Array.from(t.modelRange.getItems({shallow:!0})).filter((e=>n.checkAttribute(e,"listItemId")));if(!s.length)return;const r=t.viewItem.getAttribute("data-list-item-id")||Wy.next();o.consumable.consume(t.viewItem,{attributes:"data-list-item-id"});const a=function(e){let t=0,o=e.parent;for(;o;){if(T_(o))t++;else{const e=o.previousSibling;e&&T_(e)&&t++}o=o.parent}return t}(t.viewItem);let l=t.viewItem.parent&&t.viewItem.parent.is("element","ol")?"numbered":"bulleted";const c=s[0].getAttribute("listType");c&&(l=c);const d={listItemId:r,listIndent:a,listType:l};for(const e of s)e.hasAttribute("listItemId")||i.setAttributes(d,e);s.length>1&&s[1].getAttribute("listItemId")!=d.listItemId&&o.keepEmptyElement(s[0])}}function D_(e,t,o,i){return()=>{const i=e.document.differ.getChanges(),r=[],a=new Set,l=new Set,c=new Set;for(const e of i)if("insert"==e.type&&"$text"!=e.name)O_(e.position,a,c),e.attributes.has("listItemId")?l.add(e.position.nodeAfter):O_(e.position.getShiftedBy(e.length),a,c);else if("remove"==e.type&&e.attributes.has("listItemId"))O_(e.position,a,c);else if("attribute"==e.type){const t=e.range.start.nodeAfter;o.includes(e.attributeKey)?(O_(e.range.start,a,c),null===e.attributeNewValue?(O_(e.range.start.getShiftedBy(1),a,c),s(t)&&r.push(t)):l.add(t)):Uy(t)&&s(t)&&r.push(t)}for(const e of a.values())r.push(...n(e,l));for(const e of new Set(r))t.reconvertItem(e)};function n(e,t){const i=[],n=new Set,a=[];for(const{node:l,previous:c}of new $y(e)){if(n.has(l))continue;const e=l.getAttribute("listIndent");c&&eo.includes(e)))),modelElement:l};const d=Gy(l,{direction:"forward"});for(const e of d)n.add(e),(s(e,d)||r(e,a,t))&&i.push(e)}return i}function s(e,n){const s=t.mapper.toViewElement(e);if(!s)return!1;if(function(e){e=e.parent;for(;e.is("attributeElement")&&["ol","ul","li"].includes(e.name);)e=e.parent;if(e.getCustomProperty("$structureSlotParent")&&!t.mapper.toModelElement(e))return!0;return!1}(s))return!0;if(i.fire("checkElement",{modelElement:e,viewElement:s}))return!0;if(!e.is("element","paragraph")&&!e.is("element","listItem"))return!1;const r=B_(e,o,n);return!(!r||!s.is("element","p"))||!(r||!s.is("element","span"))}function r(e,o,n){if(n.has(e))return!1;const s=t.mapper.toViewElement(e);let r=o.length-1;for(let e=s.parent;!e.is("editableElement");e=e.parent){const t=T_(e),n=E_(e);if(!n&&!t)continue;const s="checkAttributes:"+(t?"item":"list");if(i.fire(s,{viewElement:e,modelAttributes:o[r].modelAttributes,modelReferenceElement:o[r].modelElement}))break;if(n&&(r--,r<0))return!1}return!0}}function F_(e,t,o,{dataPipeline:i}={}){const n=function(e,t){const o=t.filter((e=>!1===e.consume)).map((e=>e.attributeName));return(t,i)=>{const n=[];for(const i of e)t.hasAttribute(i)&&!o.includes(i)&&n.push(`attribute:${i}`);return!!n.every((e=>!1!==i.test(t,e)))&&(n.forEach((e=>i.consume(t,e))),!0)}}(e,t);return(s,r,a)=>{const{writer:l,mapper:c,consumable:d}=a,u=r.item;if(!e.includes(r.attributeKey))return;if(!n(u,d))return;const h={...a.options,dataPipeline:i},m=function(e,t,o,i){const n=o.createRangeOn(e),s=t.toViewRange(n).getTrimmed(),r=s.getWalker();for(const{item:e}of r)if(e.is("element")&&e.getCustomProperty("listItemMarker"))r.jumpTo(i.createPositionAfter(e));else if(e.is("element")&&!e.getCustomProperty("listItemWrapper"))return e}(u,c,o,l);N_(m,l,c),function(e,t){let o=e.parent;for(;o.is("attributeElement")&&["ul","ol","li"].includes(o.name);){const i=o.parent;t.unwrap(t.createRangeOn(e),o),o=i}}(m,l);const g=function(e,t,o,i,{dataPipeline:n}){let s=i.createRangeOn(t);if(!Zy(e))return s;for(const r of o){if("itemMarker"!=r.scope)continue;const o=r.createElement(i,e,{dataPipeline:n});if(!o)continue;if(i.setCustomProperty("listItemMarker",!0,o),r.canInjectMarkerIntoElement&&r.canInjectMarkerIntoElement(e)?i.insert(i.createPositionAt(t,0),o):(i.insert(s.start,o),s=i.createRange(i.createPositionBefore(o),i.createPositionAfter(t))),!r.createWrapperElement||!r.canWrapElement)continue;const a=r.createWrapperElement(i,e,{dataPipeline:n});i.setCustomProperty("listItemWrapper",!0,a),r.canWrapElement(e)?s=i.wrap(s,a):(s=i.wrap(i.createRangeOn(o),a),s=i.createRange(s.start,i.createPositionAfter(t)))}return s}(u,m,t,l,h);!function(e,t,o,i,n){if(!e.hasAttribute("listIndent"))return;const s=e.getAttribute("listIndent");let r=e;for(let e=s;e>=0;e--){const s=S_(i,e,r.getAttribute("listItemId")),a=P_(i,e,r.getAttribute("listType"));for(const e of o)"list"!=e.scope&&"item"!=e.scope||!r.hasAttribute(e.attributeName)||e.setAttributeOnDowncast(i,r.getAttribute(e.attributeName),"list"==e.scope?a:s,n,r);if(t=i.wrap(t,s),t=i.wrap(t,a),0==e)break;if(r=qy.first(r,{lowerIndent:!0}),!r)break}}(u,g,t,l,h)}}function M_(e,{dataPipeline:t}={}){return(o,{writer:i})=>{if(!B_(o,e))return null;if(!t)return i.createContainerElement("span",{class:"ck-list-bogus-paragraph"});const n=i.createContainerElement("p");return i.setCustomProperty("dataPipeline:transparentRendering",!0,n),n}}function N_(e,t,o){for(;e.parent.is("attributeElement")&&e.parent.getCustomProperty("listItemWrapper");)t.unwrap(t.createRangeOn(e),e.parent);const i=[];n(t.createPositionBefore(e).getWalker({direction:"backward"})),n(t.createRangeIn(e).getWalker());for(const e of i)t.remove(e);function n(e){for(const{item:t}of e){if(t.is("element")&&o.toModelElement(t))break;t.is("element")&&t.getCustomProperty("listItemMarker")&&i.push(t)}}}function B_(e,t,o=Ky(e)){if(!Uy(e))return!1;for(const o of e.getAttributeKeys())if(!o.startsWith("selection:")&&"htmlEmptyBlock"!=o&&!t.includes(o))return!1;return o.length<2}const L_=["listType","listIndent","listItemId"];class z_ extends fc{_downcastStrategies=[];static get pluginName(){return"ListEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[Kg,Tg,x_,bf,__]}constructor(e){super(e),e.config.define("list.multiBlock",!0)}init(){const e=this.editor,t=e.model,o=e.config.get("list.multiBlock");if(e.plugins.has("LegacyListEditing"))throw new fe("list-feature-conflict",this,{conflictPlugin:"LegacyListEditing"});t.schema.register("$listItem",{allowAttributes:L_}),o?(t.schema.extend("$container",{allowAttributesOf:"$listItem"}),t.schema.extend("$block",{allowAttributesOf:"$listItem"}),t.schema.extend("$blockObject",{allowAttributesOf:"$listItem"})):t.schema.register("listItem",{inheritAllFrom:"$block",allowAttributesOf:"$listItem"});for(const e of L_)t.schema.setAttributeProperties(e,{copyOnReplace:!0});e.commands.add("numberedList",new h_(e,"numbered")),e.commands.add("bulletedList",new h_(e,"bulleted")),e.commands.add("customNumberedList",new h_(e,"customNumbered",{multiLevel:!0})),e.commands.add("customBulletedList",new h_(e,"customBulleted",{multiLevel:!0})),e.commands.add("indentList",new d_(e,"forward")),e.commands.add("outdentList",new d_(e,"backward")),e.commands.add("splitListItemBefore",new g_(e,"before")),e.commands.add("splitListItemAfter",new g_(e,"after")),o&&(e.commands.add("mergeListItemBackward",new m_(e,"backward")),e.commands.add("mergeListItemForward",new m_(e,"forward"))),this._setupDeleteIntegration(),this._setupEnterIntegration(),this._setupTabIntegration(),this._setupClipboardIntegration(),this._setupAccessibilityIntegration(),this._setupListItemIdConversionStrategy()}afterInit(){const e=this.editor.commands,t=e.get("indent"),o=e.get("outdent");t&&t.registerChildCommand(e.get("indentList"),{priority:"high"}),o&&o.registerChildCommand(e.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(e){this._downcastStrategies.push(e)}getListAttributeNames(){return[...L_,...this._downcastStrategies.map((e=>e.attributeName))]}_setupDeleteIntegration(){const e=this.editor,t=e.commands.get("mergeListItemBackward"),o=e.commands.get("mergeListItemForward");this.listenTo(e.editing.view.document,"delete",((i,n)=>{const s=e.model.document.selection;r_(e.model)||e.model.change((()=>{const r=s.getFirstPosition();if(s.isCollapsed&&"backward"==n.direction){if(!r.isAtStart)return;const o=r.parent;if(!Uy(o))return;if(qy.first(o,{sameAttributes:"listType",sameIndent:!0})||0!==o.getAttribute("listIndent")){if(!t||!t.isEnabled)return;t.execute({shouldMergeOnBlocksContentLevel:j_(e.model,"backward")})}else Qy(o)||e.execute("splitListItemAfter"),e.execute("outdentList");n.preventDefault(),i.stop()}else{if(s.isCollapsed&&!s.getLastPosition().isAtEnd)return;if(!o||!o.isEnabled)return;o.execute({shouldMergeOnBlocksContentLevel:j_(e.model,"forward")}),n.preventDefault(),i.stop()}}))}),{context:"li"})}_setupEnterIntegration(){const e=this.editor,t=e.model,o=e.commands,i=o.get("enter");this.listenTo(e.editing.view.document,"enter",((o,i)=>{const n=t.document,s=n.selection.getFirstPosition().parent;if(n.selection.isCollapsed&&Uy(s)&&s.isEmpty&&!i.isSoft){const t=Zy(s),n=Qy(s);t&&n?(e.execute("outdentList"),i.preventDefault(),o.stop()):t&&!n?(e.execute("splitListItemAfter"),i.preventDefault(),o.stop()):n&&(e.execute("splitListItemBefore"),i.preventDefault(),o.stop())}}),{context:"li"}),this.listenTo(i,"afterExecute",(()=>{const t=o.get("splitListItemBefore");if(t.refresh(),!t.isEnabled)return;2===Ky(e.model.document.selection.getLastPosition().parent).length&&t.execute()}))}_setupTabIntegration(){const e=this.editor;this.listenTo(e.editing.view.document,"tab",((t,o)=>{const i=o.shiftKey?"outdentList":"indentList";this.editor.commands.get(i).isEnabled&&(e.execute(i),o.stopPropagation(),o.preventDefault(),t.stop())}),{context:"li"})}_setupConversion(){const e=this.editor,t=e.model,o=this.getListAttributeNames(),i=e.config.get("list.multiBlock"),n=i?"paragraph":"listItem";e.conversion.for("upcast").elementToElement({view:"li",model:(e,{writer:t})=>t.createElement(n,{listType:""})}).elementToElement({view:"p",model:(e,{writer:t})=>e.parent&&e.parent.is("element","li")?t.createElement(n,{listType:""}):null,converterPriority:"high"}).add((e=>{e.on("element:li",V_())})),i||e.conversion.for("downcast").elementToElement({model:"listItem",view:"p"}),e.conversion.for("editingDowncast").elementToElement({model:n,view:M_(o),converterPriority:"high"}).add((e=>{var i;e.on("attribute",F_(o,this._downcastStrategies,t)),e.on("remove",(i=t.schema,(e,t,o)=>{const{writer:n,mapper:s}=o,r=e.name.split(":")[1];if(!i.checkAttribute(r,"listItemId"))return;const a=s.toViewPosition(t.position),l=t.position.getShiftedBy(t.length),c=s.toViewPosition(l,{isPhantom:!0}),d=n.createRange(a,c).getTrimmed().end.nodeBefore;d&&N_(d,n,s)}))})),e.conversion.for("dataDowncast").elementToElement({model:n,view:M_(o,{dataPipeline:!0}),converterPriority:"high"}).add((e=>{e.on("attribute",F_(o,this._downcastStrategies,t,{dataPipeline:!0}))}));const s=(r=this._downcastStrategies,a=e.editing.view,(e,t)=>{if(t.modelPosition.offset>0)return;const o=t.modelPosition.parent;if(!Uy(o))return;if(!r.some((e=>"itemMarker"==e.scope&&e.canInjectMarkerIntoElement&&e.canInjectMarkerIntoElement(o))))return;const i=t.mapper.toViewElement(o),n=a.createRangeIn(i),s=n.getWalker();let l=n.start;for(const{item:e}of s){if(e.is("element")&&t.mapper.toModelElement(e)||e.is("$textProxy"))break;e.is("element")&&e.getCustomProperty("listItemMarker")&&(l=a.createPositionAfter(e),s.skip((({previousPosition:e})=>!e.isEqual(l))))}t.viewPosition=l});var r,a;e.editing.mapper.on("modelToViewPosition",s),e.data.mapper.on("modelToViewPosition",s),this.listenTo(t.document,"change:data",D_(t,e.editing,o,this),{priority:"high"}),this.on("checkAttributes:item",((e,{viewElement:t,modelAttributes:o})=>{t.id!=o.listItemId&&(e.return=!0,e.stop())})),this.on("checkAttributes:list",((e,{viewElement:t,modelAttributes:o})=>{t.name==I_(o.listType)&&t.id==R_(o.listType,o.listIndent)||(e.return=!0,e.stop())}))}_setupModelPostFixing(){const e=this.editor.model,t=this.getListAttributeNames();e.document.registerPostFixer((o=>function(e,t,o,i){const n=e.document.differ.getChanges(),s=new Set,r=new Set,a=i.editor.config.get("list.multiBlock");let l=!1;for(const i of n){if("insert"==i.type&&"$text"!=i.name){const n=i.position.nodeAfter;if(!e.schema.checkAttribute(n,"listItemId"))for(const e of Array.from(n.getAttributeKeys()))o.includes(e)&&(t.removeAttribute(e,n),l=!0);O_(i.position,r,s),i.attributes.has("listItemId")||O_(i.position.getShiftedBy(i.length),r,s);for(const{item:t,previousPosition:o}of e.createRangeIn(n))Uy(t)&&O_(o,r,s)}else"remove"==i.type?O_(i.position,r,s):"attribute"==i.type&&o.includes(i.attributeKey)&&(O_(i.range.start,r,s),null===i.attributeNewValue&&O_(i.range.start.getShiftedBy(1),r,s));if(!a&&"attribute"==i.type&&L_.includes(i.attributeKey)){const e=i.range.start.nodeAfter;null===i.attributeNewValue&&e&&e.is("element","listItem")?(t.rename(e,"paragraph"),l=!0):null===i.attributeOldValue&&e&&e.is("element")&&"listItem"!=e.name&&(t.rename(e,"listItem"),l=!0)}}const c=new Set;for(const e of r.values())l=i.fire("postFixer",{listNodes:new Hy(e),listHead:e,writer:t,seenIds:c})||l;return l}(e,o,t,this))),this.on("postFixer",((e,{listNodes:t,writer:o})=>{e.return=function(e,t){let o=0,i=-1,n=null,s=!1;for(const{node:r}of e){const e=r.getAttribute("listIndent");if(e>o){let a;null===n?(n=e-o,a=o):(n>e&&(n=e),a=e-n),a>i+1&&(a=i+1),t.setAttribute("listIndent",a,r),s=!0,i=a}else n=null,o=e+1,i=e}return s}(t,o)||e.return}),{priority:"high"}),this.on("postFixer",((e,{listNodes:t,writer:o,seenIds:i})=>{e.return=function(e,t,o){const i=new Set;let n=!1;for(const{node:s}of e){if(i.has(s))continue;let e=s.getAttribute("listType"),r=s.getAttribute("listItemId");if(t.has(r)&&(r=Wy.next()),t.add(r),s.is("element","listItem"))s.getAttribute("listItemId")!=r&&(o.setAttribute("listItemId",r,s),n=!0);else for(const t of Gy(s,{direction:"forward"}))i.add(t),t.getAttribute("listType")!=e&&(r=Wy.next(),e=t.getAttribute("listType")),t.getAttribute("listItemId")!=r&&(o.setAttribute("listItemId",r,t),n=!0)}return n}(t,i,o)||e.return}),{priority:"high"})}_setupClipboardIntegration(){const e=this.editor.model,t=this.editor.plugins.get("ClipboardPipeline");this.listenTo(e,"insertContent",function(e){return(t,[o,i])=>{const n=o.is("documentFragment")?Array.from(o.getChildren()):[o];if(!n.length)return;const s=(i?e.createSelection(i):e.document.selection).getFirstPosition();let r;if(Uy(s.parent))r=s.parent;else{if(!Uy(s.nodeBefore)||!Uy(s.nodeAfter))return;r=s.nodeBefore}e.change((e=>{const t=r.getAttribute("listType"),o=r.getAttribute("listIndent"),i=n[0].getAttribute("listIndent")||0,s=Math.max(o-i,0);for(const o of n){const i=Uy(o);r.is("element","listItem")&&o.is("element","paragraph")&&e.rename(o,"listItem"),e.setAttributes({listIndent:(i?o.getAttribute("listIndent"):0)+s,listItemId:i?o.getAttribute("listItemId"):Wy.next(),listType:t},o)}}))}}(e),{priority:"high"}),this.listenTo(t,"outputTransformation",((t,o)=>{e.change((e=>{const t=Array.from(o.content.getChildren()),i=t[t.length-1];if(t.length>1&&i.is("element")&&i.isEmpty){t.slice(0,-1).every(Uy)&&e.remove(i)}if("copy"==o.method||"cut"==o.method){const t=Array.from(o.content.getChildren());n_(t)&&i_(t,e,this.getListAttributeNames())}}))}))}_setupAccessibilityIntegration(){const e=this.editor,t=e.t;e.accessibility.addKeystrokeInfoGroup({id:"list",label:t("Keystrokes that can be used in a list"),keystrokes:[{label:t("Increase list item indent"),keystroke:"Tab"},{label:t("Decrease list item indent"),keystroke:"Shift+Tab"}]})}_setupListItemIdConversionStrategy(){this.registerDowncastStrategy({scope:"item",attributeName:"listItemId",setAttributeOnDowncast(e,t,o,i){i&&(i.skipListItemIds||i.isClipboardPipeline)||e.setAttribute("data-list-item-id",t,o)}})}}function j_(e,t){const o=e.document.selection;if(!o.isCollapsed)return!r_(e);if("forward"===t)return!0;const i=o.getFirstPosition().parent,n=i.previousSibling;return!e.schema.isObject(n)&&(!!n.isEmpty||n_([i,n]))}function q_(e,t,o,i){e.ui.componentFactory.add(t,(()=>{const n=$_(Lu,e,t,o,i);return n.set({tooltip:!0,isToggleable:!0}),n})),e.ui.componentFactory.add(`menuBar:${t}`,(()=>{const n=$_(sh,e,t,o,i);return n.set({role:"menuitemcheckbox",isToggleable:!0}),n}))}function $_(e,t,o,i,n){const s=t.commands.get(o),r=new e(t.locale);return r.set({label:i,icon:n}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.on("execute",(()=>{t.execute(o),t.editing.view.focus()})),r}class H_ extends fc{static get pluginName(){return"ListUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.t;this.editor.ui.componentFactory.has("numberedList")||q_(this.editor,"numberedList",e("Numbered List"),''),this.editor.ui.componentFactory.has("bulletedList")||q_(this.editor,"bulletedList",e("Bulleted List"),'')}}const W_={},U_={},K_={},G_=[{listStyle:"disc",typeAttribute:"disc",listType:"bulleted"},{listStyle:"circle",typeAttribute:"circle",listType:"bulleted"},{listStyle:"square",typeAttribute:"square",listType:"bulleted"},{listStyle:"decimal",typeAttribute:"1",listType:"numbered"},{listStyle:"decimal-leading-zero",typeAttribute:null,listType:"numbered"},{listStyle:"lower-roman",typeAttribute:"i",listType:"numbered"},{listStyle:"upper-roman",typeAttribute:"I",listType:"numbered"},{listStyle:"lower-alpha",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-alpha",typeAttribute:"A",listType:"numbered"},{listStyle:"lower-latin",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-latin",typeAttribute:"A",listType:"numbered"},{listStyle:"arabic-indic",typeAttribute:null,listType:"numbered"}];for(const{listStyle:e,typeAttribute:t,listType:o}of G_)W_[e]=o,U_[e]=t,t&&(K_[t]=e);class J_ extends wc{constructor(e){super(e),this.on("execute",(()=>{this.refresh()}),{priority:"highest"})}refresh(){const e=this._getSelectedItems();this.value=this._getValue(e),this.isEnabled=!!e.length}execute(e={}){this.editor.model.change((t=>{const o=this._getSelectedItems(),i=void 0===e.forceValue?!this._getValue(o):e.forceValue;for(const e of o)i?t.setAttribute("todoListChecked",!0,e):t.removeAttribute("todoListChecked",e)}))}_getValue(e){return e.every((e=>e.getAttribute("todoListChecked")))}_getSelectedItems(){const e=this.editor.model,t=e.schema,o=e.document.selection.getFirstRange(),i=o.start.parent,n=[];t.checkAttribute(i,"todoListChecked")&&n.push(...Ky(i));for(const e of o.getItems({shallow:!0}))t.checkAttribute(e,"todoListChecked")&&!n.includes(e)&&n.push(...Ky(e));return n}}class Z_ extends jn{domEventType=["change"];onDomEvent(e){if(e.target){const t=this.view.domConverter.mapDomToView(e.target);t&&t.is("element","input")&&"checkbox"==t.getAttribute("type")&&t.findAncestor({classes:"todo-list__label"})&&this.fire("todoCheckboxChange",e)}}}const Q_=Wt("Ctrl+Enter");class Y_ extends fc{static get pluginName(){return"TodoListEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[z_]}init(){const e=this.editor,t=e.model,o=e.editing,i=e.plugins.get(z_),n=e.config.get("list.multiBlock")?"paragraph":"listItem";e.commands.add("todoList",new h_(e,"todo")),e.commands.add("checkTodoList",new J_(e)),o.view.addObserver(Z_),t.schema.extend("$listItem",{allowAttributes:"todoListChecked"}),t.schema.addAttributeCheck((e=>{const t=e.last;if(!t.getAttribute("listItemId")||"todo"!=t.getAttribute("listType"))return!1}),"todoListChecked"),e.conversion.for("upcast").add((e=>{e.on("element:input",((e,t,o)=>{const i=t.modelCursor,n=i.parent,s=t.viewItem;if(!o.consumable.test(s,{name:!0}))return;if("checkbox"!=s.getAttribute("type")||!i.isAtStart||!n.hasAttribute("listType"))return;o.consumable.consume(s,{name:!0});const r=o.writer;r.setAttribute("listType","todo",n),t.viewItem.hasAttribute("checked")&&r.setAttribute("todoListChecked",!0,n),t.modelRange=r.createRange(i)})),e.on("element:li",((e,t,o)=>{const{writer:i,schema:n}=o;if(!t.modelRange)return;const s=Array.from(t.modelRange.getItems({shallow:!0})).filter((e=>"todo"===e.getAttribute("listType")&&n.checkAttribute(e,"listItemId"))).reduce(((e,t)=>{const o=t.getAttribute("listItemId");return e.has(o)||e.set(o,Ky(t)),e}),new Map);for(const[,e]of s.entries())if(e.some((e=>e.getAttribute("todoListChecked"))))for(const t of e)i.setAttribute("todoListChecked",!0,t)}),{priority:"low"}),e.on("element:label",X_({name:"label",classes:"todo-list__label"})),e.on("element:label",X_({name:"label",classes:["todo-list__label","todo-list__label_without-description"]})),e.on("element:span",X_({name:"span",classes:"todo-list__label__description"})),e.on("element:ul",function(e){const t=new ui(e);return(e,o,i)=>{const n=t.match(o.viewItem);if(!n)return;const s=n.match;s.name=!1,i.consumable.consume(o.viewItem,s)}}({name:"ul",classes:"todo-list"}))})),e.conversion.for("downcast").elementToElement({model:n,view:(e,{writer:t})=>{if(ek(e,i.getListAttributeNames()))return t.createContainerElement("span",{class:"todo-list__label__description"})},converterPriority:"highest"}),i.registerDowncastStrategy({scope:"list",attributeName:"listType",setAttributeOnDowncast(e,t,o){"todo"==t?e.addClass("todo-list",o):e.removeClass("todo-list",o)}}),i.registerDowncastStrategy({scope:"itemMarker",attributeName:"todoListChecked",createElement(e,t,{dataPipeline:o}){if("todo"!=t.getAttribute("listType"))return null;const i=e.createUIElement("input",{type:"checkbox",...t.getAttribute("todoListChecked")?{checked:"checked"}:null,...o?{disabled:"disabled"}:{tabindex:"-1"}});if(o)return i;const n=e.createContainerElement("span",{contenteditable:"false"},i);return n.getFillerOffset=()=>null,n},canWrapElement:e=>ek(e,i.getListAttributeNames()),createWrapperElement(e,t,{dataPipeline:o}){const n=["todo-list__label"];return ek(t,i.getListAttributeNames())||n.push("todo-list__label_without-description"),e.createAttributeElement(o?"label":"span",{class:n.join(" ")})}}),i.on("checkElement",((e,{modelElement:t,viewElement:o})=>{const n=ek(t,i.getListAttributeNames());o.hasClass("todo-list__label__description")!=n&&(e.return=!0,e.stop())})),i.on("checkElement",((t,{modelElement:o,viewElement:i})=>{const n="todo"==o.getAttribute("listType")&&Zy(o);let s=!1;const r=e.editing.view.createPositionBefore(i).getWalker({direction:"backward"});for(const{item:t}of r){if(t.is("element")&&e.editing.mapper.toModelElement(t))break;t.is("element","input")&&"checkbox"==t.getAttribute("type")&&(s=!0)}s!=n&&(t.return=!0,t.stop())})),i.on("postFixer",((e,{listNodes:t,writer:o})=>{for(const{node:i,previousNodeInList:n}of t){if(!n)continue;if(n.getAttribute("listItemId")!=i.getAttribute("listItemId"))continue;const t=n.hasAttribute("todoListChecked"),s=i.hasAttribute("todoListChecked");s&&!t?(o.removeAttribute("todoListChecked",i),e.return=!0):!s&&t&&(o.setAttribute("todoListChecked",!0,i),e.return=!0)}})),t.document.registerPostFixer((e=>{const o=t.document.differ.getChanges();let i=!1;for(const t of o)if("attribute"==t.type&&"listType"==t.attributeKey){const o=t.range.start.nodeAfter;"todo"==t.attributeOldValue&&o.hasAttribute("todoListChecked")&&(e.removeAttribute("todoListChecked",o),i=!0)}else if("insert"==t.type&&"$text"!=t.name)for(const{item:o}of e.createRangeOn(t.position.nodeAfter))o.is("element")&&"todo"!=o.getAttribute("listType")&&o.hasAttribute("todoListChecked")&&(e.removeAttribute("todoListChecked",o),i=!0);return i})),this.listenTo(o.view.document,"keydown",((t,o)=>{Ht(o)===Q_&&(e.execute("checkTodoList"),t.stop())}),{priority:"high"}),this.listenTo(o.view.document,"todoCheckboxChange",((e,t)=>{const i=t.target;if(!i||!i.is("element","input"))return;const n=o.view.createPositionAfter(i),s=o.mapper.toModelPosition(n).parent;s&&Uy(s)&&"todo"==s.getAttribute("listType")&&this._handleCheckmarkChange(s)})),this.listenTo(o.view.document,"arrowKey",function(e,t){return(o,i)=>{const n=Kt(i.keyCode,t.contentLanguageDirection),s=e.schema,r=e.document.selection;if(!r.isCollapsed)return;const a=r.getFirstPosition(),l=a.parent;if("right"==n&&a.isAtEnd){const t=s.getNearestSelectionRange(e.createPositionAfter(l),"forward");if(!t)return;const n=t.start.parent;n&&Uy(n)&&"todo"==n.getAttribute("listType")&&(e.change((e=>e.setSelection(t))),i.preventDefault(),i.stopPropagation(),o.stop())}else if("left"==n&&a.isAtStart&&Uy(l)&&"todo"==l.getAttribute("listType")){const t=s.getNearestSelectionRange(e.createPositionBefore(l),"backward");if(!t)return;e.change((e=>e.setSelection(t))),i.preventDefault(),i.stopPropagation(),o.stop()}}}(t,e.locale),{context:"$text"}),this.listenTo(o.mapper,"viewToModelPosition",((e,o)=>{const i=o.viewPosition.parent,n=i.is("attributeElement","li")&&0==o.viewPosition.offset,s=tk(i)&&o.viewPosition.offset<=1,r=i.is("element","span")&&"false"==i.getAttribute("contenteditable")&&tk(i.parent);if(!n&&!s&&!r)return;const a=o.modelPosition.nodeAfter;a&&"todo"==a.getAttribute("listType")&&(o.modelPosition=t.createPositionAt(a,0))}),{priority:"low"}),this._initAriaAnnouncements()}_handleCheckmarkChange(e){const t=this.editor,o=t.model,i=Array.from(o.document.selection.getRanges());o.change((o=>{o.setSelection(e,"end"),t.execute("checkTodoList"),o.setSelection(i)}))}_initAriaAnnouncements(){const{model:e,ui:t,t:o}=this.editor;let i=null;t&&e.document.selection.on("change:range",(()=>{const n=e.document.selection.focus.parent,s=ok(i),r=ok(n);s&&!r?t.ariaLiveAnnouncer.announce(o("Leaving a to-do list")):!s&&r&&t.ariaLiveAnnouncer.announce(o("Entering a to-do list")),i=n}))}}function X_(e){const t=new ui(e);return(e,o,i)=>{const n=t.match(o.viewItem);n&&i.consumable.consume(o.viewItem,n.match)&&Object.assign(o,i.convertChildren(o.viewItem,o.modelCursor))}}function ek(e,t){return(e.is("element","paragraph")||e.is("element","listItem"))&&"todo"==e.getAttribute("listType")&&Zy(e)&&function(e,t){for(const o of e.getAttributeKeys())if(!o.startsWith("selection:")&&!t.includes(o))return!1;return!0}(e,t)}function tk(e){return!!e&&e.is("attributeElement")&&e.hasClass("todo-list__label")}function ok(e){return!!e&&(!(!e.is("element","paragraph")&&!e.is("element","listItem"))&&"todo"==e.getAttribute("listType"))}class ik extends fc{static get pluginName(){return"TodoListUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.t;q_(this.editor,"todoList",e("To-do List"),'')}}const nk=Symbol("isOPCodeBlock");function sk(e){return!!e.getCustomProperty(nk)&&ip(e)}function rk(e){const t=e.getSelectedElement();return!(!t||!sk(t))}function ak(e,t,o){const i=t.createContainerElement("pre",{title:window.I18n.t("js.editor.macro.toolbar_help")});return lk(t,e,i),function(e,t,o){return t.setCustomProperty(nk,!0,e),np(e,t,{label:o})}(i,t,o)}function lk(e,t,o){const i=(t.getAttribute("opCodeblockLanguage")||"language-text").replace(/^language-/,""),n=e.createContainerElement("div",{class:"op-uc-code-block--language"});ck(e,i,n,"text"),e.insert(e.createPositionAt(o,0),n);ck(e,t.getAttribute("opCodeblockContent"),o,"(empty)")}function ck(e,t,o,i){const n=e.createText(t||i);e.insert(e.createPositionAt(o,0),n)}class dk extends jn{constructor(e){super(e),this.domEventType="dblclick"}onDomEvent(e){this.fire(e.type,e)}}class uk extends fc{static get pluginName(){return"CodeBlockEditing"}init(){const e=this.editor,t=e.model.schema,o=e.conversion,i=e.editing.view,n=i.document,s=Mp(e);var r,a;t.register("codeblock",{isObject:!0,isBlock:!0,allowContentOf:"$block",allowWhere:["$root","$block"],allowIn:["$root"],allowAttributes:["opCodeblockLanguage","opCodeblockContent"]}),o.for("upcast").add(function(){return t=>{t.on("element:pre",e,{priority:"high"})};function e(e,t,o){if(!o.consumable.test(t.viewItem,{name:!0}))return;const i=Array.from(t.viewItem.getChildren()).find((e=>e.is("element","code")));if(!i||!o.consumable.consume(i,{name:!0}))return;const n=o.writer.createElement("codeblock");o.writer.setAttribute("opCodeblockLanguage",i.getAttribute("class"),n);const s=o.splitToAllowedParent(n,t.modelCursor);if(s){o.writer.insert(n,s.position);const e=i.getChild(0);if(e){o.consumable.consume(e,{name:!0});const t=e.data.replace(/\n$/,"");o.writer.setAttribute("opCodeblockContent",t,n)}t.modelRange=o.writer.createRange(o.writer.createPositionBefore(n),o.writer.createPositionAfter(n)),t.modelCursor=t.modelRange.end}}}()),o.for("editingDowncast").elementToElement({model:"codeblock",view:(e,{writer:t})=>ak(e,t,"Code block")}).add(function(){return t=>{t.on("attribute:opCodeblockContent",e),t.on("attribute:opCodeblockLanguage",e)};function e(e,t,o){const i=t.item;o.consumable.consume(t.item,e.name);const n=o.mapper.toViewElement(i);o.writer.remove(o.writer.createRangeOn(n.getChild(1))),o.writer.remove(o.writer.createRangeOn(n.getChild(0))),lk(o.writer,i,n)}}()),o.for("dataDowncast").add(function(){return t=>{t.on("insert:codeblock",e,{priority:"high"})};function e(e,t,o){const i=t.item,n=i.getAttribute("opCodeblockLanguage")||"language-text",s=i.getAttribute("opCodeblockContent");o.consumable.consume(i,"insert");const r=o.writer,a=r.createContainerElement("pre"),l=r.createContainerElement("div",{class:"op-uc-code-block--language"}),c=r.createContainerElement("code",{class:n}),d=r.createText(n),u=r.createText(s);r.insert(r.createPositionAt(c,0),u),r.insert(r.createPositionAt(l,0),d),r.insert(r.createPositionAt(a,0),l),r.insert(r.createPositionAt(a,0),c),o.mapper.bindElements(i,c),o.mapper.bindElements(i,a),o.mapper.bindElements(i,l);const h=o.mapper.toViewPosition(t.range.start);r.insert(h,a),e.stop()}}()),this.editor.editing.mapper.on("viewToModelPosition",(r=this.editor.model,a=e=>e.hasClass("op-uc-code-block"),(e,t)=>{const{mapper:o,viewPosition:i}=t,n=o.findMappedViewAncestor(i);if(!a(n))return;const s=o.toModelElement(n);t.modelPosition=r.createPositionAt(s,i.isAtStart?"before":"after")})),i.addObserver(dk),this.listenTo(n,"dblclick",((t,o)=>{let i=o.target,n=o.domEvent;if(n.shiftKey||n.altKey||n.metaKey)return;if(!sk(i)&&(i=i.findAncestor(sk),!i))return;o.preventDefault(),o.stopPropagation();const r=e.editing.mapper.toModelElement(i),a=s.services.macros,l=r.getAttribute("opCodeblockLanguage"),c=r.getAttribute("opCodeblockContent");a.editCodeBlock(c,l).then((t=>e.model.change((e=>{e.setAttribute("opCodeblockLanguage",t.languageClass,r),e.setAttribute("opCodeblockContent",t.content,r)}))))})),e.ui.componentFactory.add("insertCodeBlock",(t=>{const o=new Lu(t);return o.set({label:window.I18n.t("js.editor.macro.code_block.button"),icon:'\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n image/svg+xml\n \n \n \n \n\n',tooltip:!0}),o.on("execute",(()=>{s.services.macros.editCodeBlock().then((t=>e.model.change((o=>{const i=o.createElement("codeblock");o.setAttribute("opCodeblockLanguage",t.languageClass,i),o.setAttribute("opCodeblockContent",t.content,i),e.model.insertContent(i,e.model.document.selection)}))))})),o}))}}class hk extends fc{static get requires(){return[Qm]}static get pluginName(){return"CodeBlockToolbar"}init(){const e=this.editor,t=this.editor.model,o=Mp(e);jp(e,"opEditCodeBlock",(e=>{const i=o.services.macros,n=e.getAttribute("opCodeblockLanguage"),s=e.getAttribute("opCodeblockContent");i.editCodeBlock(s,n).then((o=>t.change((t=>{t.setAttribute("opCodeblockLanguage",o.languageClass,e),t.setAttribute("opCodeblockContent",o.content,e)}))))}))}afterInit(){$p(this,this.editor,"OPCodeBlock",rk)}}function mk(e){return e.__currentlyDisabled=e.__currentlyDisabled||[],e.ui.view.toolbar?e.ui.view.toolbar.items._items:[]}function gk(e,t){mk(e).forEach((o=>{let i=o;o instanceof bh?i=o.buttonView:o!==t&&Object.prototype.hasOwnProperty.call(o,"isEnabled")||(i=null),i&&(i.isEnabled?i.isEnabled=!1:e.__currentlyDisabled.push(i))}))}function pk(e){mk(e).forEach((t=>{let o=t;t instanceof bh&&(o=t.buttonView),e.__currentlyDisabled.indexOf(o)<0&&(o.isEnabled=!0)})),e.__currentlyDisabled=[]}class fk{constructor(e){this.response=e}get statusCode(){return this.response.status}get redirected(){return this.response.redirected}get ok(){return this.response.ok}get unauthenticated(){return 401===this.statusCode}get unprocessableEntity(){return 422===this.statusCode}get authenticationURL(){return this.response.headers.get("WWW-Authenticate")}get contentType(){return(this.response.headers.get("Content-Type")||"").replace(/;.*$/,"")}get headers(){return this.response.headers}get html(){return this.contentType.match(/^(application|text)\/(html|xhtml\+xml)$/)?this.text:Promise.reject(new Error(`Expected an HTML response but got "${this.contentType}" instead`))}get json(){return this.contentType.match(/^application\/.*json$/)?this.responseJson||(this.responseJson=this.response.json()):Promise.reject(new Error(`Expected a JSON response but got "${this.contentType}" instead`))}get text(){return this.responseText||(this.responseText=this.response.text())}get isTurboStream(){return this.contentType.match(/^text\/vnd\.turbo-stream\.html/)}get isScript(){return this.contentType.match(/\b(?:java|ecma)script\b/)}async renderTurboStream(){if(!this.isTurboStream)return Promise.reject(new Error(`Expected a Turbo Stream response but got "${this.contentType}" instead`));window.Turbo?await window.Turbo.renderStreamMessage(await this.text):console.warn("You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js")}async activeScript(){if(!this.isScript)return Promise.reject(new Error(`Expected a Script response but got "${this.contentType}" instead`));{const e=document.createElement("script"),t=document.querySelector("meta[name=csp-nonce]");if(t){const o=""===t.nonce?t.content:t.nonce;o&&e.setAttribute("nonce",o)}e.innerHTML=await this.text,document.body.appendChild(e)}}}class bk{static register(e){this.interceptor=e}static get(){return this.interceptor}static reset(){this.interceptor=void 0}}function wk(e){const t=document.head.querySelector(`meta[name="${e}"]`);return t&&t.content}class yk{constructor(e,t,o={}){this.method=e,this.options=o,this.originalUrl=t.toString()}async perform(){try{const e=bk.get();e&&await e(this)}catch(e){console.error(e)}const e=window.Turbo?window.Turbo.fetch:window.fetch,t=new fk(await e(this.url,this.fetchOptions));if(t.unauthenticated&&t.authenticationURL)return Promise.reject(window.location.href=t.authenticationURL);t.isScript&&await t.activeScript();return(t.ok||t.unprocessableEntity)&&t.isTurboStream&&await t.renderTurboStream(),t}addHeader(e,t){const o=this.additionalHeaders;o[e]=t,this.options.headers=o}sameHostname(){if(!this.originalUrl.startsWith("http:")&&!this.originalUrl.startsWith("https:"))return!0;try{return new URL(this.originalUrl).hostname===window.location.hostname}catch(e){return!0}}get fetchOptions(){return{method:this.method.toUpperCase(),headers:this.headers,body:this.formattedBody,signal:this.signal,credentials:this.credentials,redirect:this.redirect,keepalive:this.keepalive}}get headers(){const e={"X-Requested-With":"XMLHttpRequest","Content-Type":this.contentType,Accept:this.accept};return this.sameHostname()&&(e["X-CSRF-Token"]=this.csrfToken),function(e){const t={};for(const o in e){const i=e[o];void 0!==i&&(t[o]=i)}return t}(Object.assign(e,this.additionalHeaders))}get csrfToken(){return function(e){const t=document.cookie?document.cookie.split("; "):[],o=`${encodeURIComponent(e)}=`,i=t.find((e=>e.startsWith(o)));if(i){const e=i.split("=").slice(1).join("=");if(e)return decodeURIComponent(e)}}(wk("csrf-param"))||wk("csrf-token")}get contentType(){return this.options.contentType?this.options.contentType:null==this.body||this.body instanceof window.FormData?void 0:this.body instanceof window.File?this.body.type:"application/json"}get accept(){switch(this.responseKind){case"html":return"text/html, application/xhtml+xml";case"turbo-stream":return"text/vnd.turbo-stream.html, text/html, application/xhtml+xml";case"json":return"application/json, application/vnd.api+json";case"script":return"text/javascript, application/javascript";default:return"*/*"}}get body(){return this.options.body}get query(){const e=(this.originalUrl.split("?")[1]||"").split("#")[0],t=new URLSearchParams(e);let o=this.options.query;var i;o instanceof window.FormData?(i=o,o=[...i].reduce(((e,[t,o])=>e.concat("string"==typeof o?[[t,o]]:[])),[])):o=o instanceof window.URLSearchParams?o.entries():Object.entries(o||{}),function(e,t){for(const[o,i]of t)i instanceof window.File||(e.has(o)&&!o.includes("[]")?(e.delete(o),e.set(o,i)):e.append(o,i))}(t,o);const n=t.toString();return n.length>0?`?${n}`:""}get url(){return this.originalUrl.split("?")[0].split("#")[0]+this.query}get responseKind(){return this.options.responseKind||"html"}get signal(){return this.options.signal}get redirect(){return this.options.redirect||"follow"}get credentials(){return this.options.credentials||"same-origin"}get keepalive(){return this.options.keepalive||!1}get additionalHeaders(){return this.options.headers||{}}get formattedBody(){const e="[object String]"===Object.prototype.toString.call(this.body);return"application/json"===this.headers["Content-Type"]&&!e?JSON.stringify(this.body):this.body}}async function _k(e,t){return new yk("get",e,t).perform()}function kk(e,t){const{modelAttribute:o,styleName:i,attributeName:n,attributeType:s,viewElement:r,defaultValue:a,shouldUpcast:l=()=>!0,reduceBoxSides:c=!1}=t;e.for("upcast").attributeToAttribute({view:{name:r,styles:{[i]:/[\s\S]+/}},model:{key:o,value:(e,t,o)=>{if(!l(e))return;const n=xk(a,"",o),s=e.getNormalizedStyle(i),r=c?Ek(s):s;if(n!==r)return r;t.consumable.consume(e,{styles:i})}}}),n&&e.for("upcast").attributeToAttribute({view:{name:r,attributes:{[n]:/.+/}},model:{key:o,value:(e,t,o)=>{if("figure"==e.name||e.hasStyle(i)||"table"==e.name&&"figure"==e.parent.name&&e.parent.hasStyle(i))return;const r=xk(a,"",o);let l=e.getAttribute(n);if(l&&"length"==s){const e=parseFloat(l);l=isNaN(e)?r:e+(l.includes("%")?"%":"px")}if(r!==l)return l;t.consumable.consume(e,{attributes:n})}}})}function vk(e,t,o,i){const{conversion:n}=e;n.for("upcast").add((e=>{e.on(`element:${t}`,((e,t,n)=>{const{modelRange:s,viewItem:r}=t;if(!s)return;const a=["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=>r.hasStyle(e))),l=r.is("element","table")?r:r.findAncestor("table"),c=l.hasAttribute("border");if(!a.length&&!c)return;const d={styles:a};if(!n.consumable.test(r,d))return;const u=to(s.getItems({shallow:!0})),h=u.findAncestor("table",{includeSelf:!0});let m=i;h&&"layout"==h.getAttribute("tableType")&&(m={style:"none",color:"",width:""}),n.consumable.consume(r,d);const g={style:r.getNormalizedStyle("border-style"),color:r.getNormalizedStyle("border-color"),width:r.getNormalizedStyle("border-width")};if(c&&n.consumable.test(l,{attributes:"border"})){const e=parseFloat(l.getAttribute("border")||"1"),t=Number.isNaN(e)||!Number.isFinite(e)||e<0||"table"!=r.name&&e>1?"1px":`${e}px`;g.width={top:t,bottom:t,right:t,left:t,...g.width||{}},r.is("element","table")&&n.consumable.consume(l,{attributes:"border"})}const p={style:Ek(g.style),color:Ek(g.color),width:Ek(g.width)};p.style!==m.style&&n.writer.setAttribute(o.style,p.style,u),p.color!==m.color&&n.writer.setAttribute(o.color,p.color,u),p.width!==m.width&&n.writer.setAttribute(o.width,p.width,u)}))}))}function Ck(e,t){const{modelElement:o,modelAttribute:i,styleName:n}=t;e.for("downcast").attributeToAttribute({model:{name:o,key:i},view:e=>({key:"style",value:{[n]:e}})})}function Ak(e,t){const{modelAttribute:o,styleName:i}=t;e.for("downcast").add((e=>{e.on(`attribute:${o}:table`,((e,t,o)=>{const{item:n,attributeNewValue:s}=t,{mapper:r,writer:a}=o;if(!o.consumable.consume(t.item,e.name))return;const l=Array.from(r.toViewElement(n).getChildren()).find((e=>e.is("element","table")));s?a.setStyle(i,s,l):a.removeStyle(i,l)}))}))}function xk(e,t,o){const i=o.modelRange&&to(o.modelRange.getItems({shallow:!0})),n=i&&i.is("element")&&i.findAncestor("table",{includeSelf:!0});return n&&"layout"===n.getAttribute("tableType")?t:e}function Ek(e){if(!e)return;const t=["top","right","bottom","left"];if(!t.every((t=>e[t])))return e;const o=e.top;return t.every((t=>e[t]===o))?o:e}function Tk(e,t,o){const{conversion:i}=e;i.for("upcast").add((e=>{e.on(`element:${t}`,((e,t,i)=>{const{modelRange:n,viewItem:s}=t;if(!n)return;if(s.is("element","table"))return void i.consumable.consume(s,{attributes:"cellpadding"});const r=s.findAncestor("table");if(!r.hasAttribute("cellpadding")||!i.consumable.test(r,{attributes:"cellpadding"}))return;const a=n?.start?.nodeAfter,l=parseFloat(r.getAttribute("cellpadding")||"1"),c=Number.isNaN(l)||!Number.isFinite(l)||l<0?"0px":`${l}px`,d=a.getAttribute("tableCellPadding");if(d){if("object"==typeof d){const e={...o!==c&&{top:c},...o!==c&&{right:c},...o!==c&&{bottom:c},...o!==c&&{left:c},...d};i.writer.setAttribute("tableCellPadding",e,a)}}else o!==c&&i.writer.setAttribute("tableCellPadding",c,a)}),{priority:"low"})}))}const Pk={className:"table-style-align-left"},Sk={className:"table-style-align-center"},Ik={className:"table-style-align-right"},Rk={className:"table-style-block-align-left"},Ok={className:"table-style-block-align-right"},Vk=[{view:{name:/^(table|figure)$/,styles:{float:/^(left|none|right)$/}},getAlign:e=>{let t=e.getStyle("float");return"none"===t&&(t="center"),t},getConsumables(e){const t=e.getStyle("float"),o=["float"];return"left"===t&&e.hasStyle("margin-right")?o.push("margin-right"):"right"===t&&e.hasStyle("margin-left")&&o.push("margin-left"),{styles:o}}},{view:{name:/^(table|figure)$/,styles:{"margin-left":"auto","margin-right":"auto"}},getAlign:()=>"center",getConsumables:()=>({styles:["margin-left","margin-right"]})},{view:{name:/^(table|figure)$/,key:"class",value:"table-style-align-left"},getAlign:()=>"left",getConsumables:()=>({classes:Pk.className})},{view:{name:/^(table|figure)$/,key:"class",value:Ik.className},getAlign:()=>"right",getConsumables:()=>({classes:Ik.className})},{view:{name:/^(table|figure)$/,key:"class",value:Sk.className},getAlign:()=>"center",getConsumables:()=>({classes:Sk.className})},{view:{name:/^(table|figure)$/,key:"class",value:Rk.className},getAlign:()=>"blockLeft",getConsumables:()=>({classes:Rk.className})},{view:{name:/^(table|figure)$/,key:"class",value:Ok.className},getAlign:()=>"blockRight",getConsumables:()=>({classes:Ok.className})},{view:{name:/^(table|figure)$/,styles:{"margin-left":"0","margin-right":"auto"}},getAlign:()=>"blockLeft",getConsumables:()=>({styles:["margin-left","margin-right"]})},{view:{name:/^(table|figure)$/,styles:{"margin-left":"auto","margin-right":"0"}},getAlign:()=>"blockRight",getConsumables:()=>({styles:["margin-left","margin-right"]})},{view:{name:"table",attributes:{align:/^(left|center|right)$/}},getAlign:e=>e.getAttribute("align"),getConsumables:()=>({attributes:"align"})}],Dk={center:{align:"center",style:"margin-left: auto; margin-right: auto;",className:"table-style-align-center"},left:{align:"left",style:"float: left;",className:"table-style-align-left"},right:{align:"right",style:"float: right;",className:"table-style-align-right"},blockLeft:{align:void 0,style:"margin-left: 0; margin-right: auto;",className:Rk.className},blockRight:{align:void 0,style:"margin-left: auto; margin-right: 0;",className:Ok.className}};class Fk{_table;_startRow;_endRow;_startColumn;_endColumn;_includeAllSlots;_skipRows;_row;_rowIndex;_column;_cellIndex;_spannedCells;_nextCellAtColumn;_jumpedToStartRow=!1;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(){this._canJumpToStartRow()&&this._jumpToNonSpannedRowClosestToStartRow();const e=this._table.getChild(this._rowIndex);if(!e||this._isOverEndRow())return{done:!0,value:void 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 i=parseInt(o.getAttribute("colspan")||"1"),n=parseInt(o.getAttribute("rowspan")||"1");(i>1||n>1)&&this._recordSpans(o,n,i),this._shouldSkipSlot()||(t=this._formatOutValue(o)),this._nextCellAtColumn=this._column+i}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 Mk(this,e,t,o)}}_shouldSkipSlot(){const e=this._skipRows.has(this._row),t=this._rowthis._endColumn;return e||t||o||i}_getSpanned(){const e=this._spannedCells.get(this._row);return e&&e.get(this._column)||null}_recordSpans(e,t,o){const i={cell:e,row:this._row,column:this._column};for(let e=this._row;e0&&!this._jumpedToStartRow}_jumpToNonSpannedRowClosestToStartRow(){const e=this._getRowLength(0);for(let t=this._startRow;!this._jumpedToStartRow;t--)e===this._getRowLength(t)&&(this._row=t,this._rowIndex=t,this._jumpedToStartRow=!0)}_getRowLength(e){return[...this._table.getChild(e).getChildren()].reduce(((e,t)=>e+parseInt(t.getAttribute("colspan")||"1")),0)}}class Mk{cell;row;column;cellAnchorRow;cellAnchorColumn;_cellIndex;_rowIndex;_table;constructor(e,t,o,i){this.cell=t,this.row=e._row,this.column=e._column,this.cellAnchorRow=o,this.cellAnchorColumn=i,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 Nk(e){return"header"===e||"header-row"===e||"header-column"===e}function Bk(e,t,o,i,n=1){null!=t&&null!=n&&t>n?i.setAttribute(e,t,o):i.removeAttribute(e,o)}function Lk(e,t,o={}){const i=e.createElement("tableCell",o);return e.insertElement("paragraph",i),e.insert(i,t),i}function zk(e,t){const o=t.parent.parent,i=parseInt(o.getAttribute("headingColumns")||"0"),{column:n}=e.getCellLocation(t);return!!i&&n0){Bk("headingRows",s-o,e,n,0)}const r=parseInt(t.getAttribute("headingColumns")||"0");if(r>0){Bk("headingColumns",r-i,e,n,0)}}(a,e,i,n,o),function(e,t,o,i,n){const s=Array.from(t.getChildren()).reduce(((e,t)=>t.is("element","tableRow")?e+1:e),0),r=parseInt(t.getAttribute("footerRows")||"0"),a=s-r;if(r<1)return;let l=0;i>=a&&(l=i-Math.max(a,o)+1);Bk("footerRows",l,e,n,0)}(a,e,i,s,o),a}function Uk(e,t,o=0){const i=[],n=new Fk(e,{startRow:o,endRow:t-1});for(const e of n){const{row:o,cellHeight:n}=e;o1&&(a.rowspan=l);const c=parseInt(e.getAttribute("colspan")||"1");c>1&&(a.colspan=c);const d=s+r,u=[...new Fk(n,{startRow:s,endRow:d,includeAllSlots:!0})];let h,m=null;for(const t of u){const{row:i,column:n,cell:s}=t;s===e&&void 0===h&&(h=n),void 0!==h&&h===n&&i===d&&(m=Lk(o,t.getPositionBefore(),a))}return Bk("rowspan",r,e,o),m}function Gk(e,t){const o=[],i=new Fk(e);for(const e of i){const{column:i,cellWidth:n}=e;i1&&(s.colspan=r);const a=parseInt(e.getAttribute("rowspan")||"1");a>1&&(s.rowspan=a);const l=Lk(i,i.createPositionAfter(e),s);return Bk("colspan",n,e,i),l}function Zk(e,t,o,i,n,s){const r=parseInt(e.getAttribute("colspan")||"1"),a=parseInt(e.getAttribute("rowspan")||"1");if(o+r-1>n){Bk("colspan",n-o+1,e,s,1)}if(t+a-1>i){Bk("rowspan",i-t+1,e,s,1)}}function Qk(e,t){const o=t.getColumns(e),i=new Array(o).fill(0);for(const{column:t}of new Fk(e))i[t]++;const n=i.reduce(((e,t,o)=>t?e:[...e,o]),[]);if(n.length>0){const o=n[n.length-1];return t.removeColumns(e,{at:o}),!0}return!1}function Yk(e,t){const o=[],i=t.getRows(e);for(let t=0;t0){const i=o[o.length-1];return t.removeRows(e,{at:i}),!0}return!1}function Xk(e,t){Qk(e,t)||Yk(e,t)}function ev(e,t){const o=Array.from(new Fk(e,{startColumn:t.firstColumn,endColumn:t.lastColumn,row:t.lastRow}));if(o.every((({cellHeight:e})=>1===e)))return t.lastRow;const i=o[0].cellHeight-1;return t.lastRow+i}function tv(e,t){const o=Array.from(new Fk(e,{startRow:t.firstRow,endRow:t.lastRow,column:t.lastColumn}));if(o.every((({cellWidth:e})=>1===e)))return t.lastColumn;const i=o[0].cellWidth-1;return t.lastColumn+i}function ov(e){for(const t of e.getChildren())if(t.is("element","table"))return t}function iv(e){return t=>{t.on("element:table",((t,o,i)=>{const n=o.viewItem;if(!i.consumable.test(n,{name:!0}))return;const{rows:s,headingRows:r,headingColumns:a,footerRows:l}=function(e){let t,o=!0;const i=[],n=[],s=[];let r=null,a=null;const l=Array.from(e.getChildren());for(let e=0;ee.is("element","tr")));let d=null,u=null;for(const h of c){const m=Array.from(h.getChildren()).filter((e=>e.is("element","td")||e.is("element","th")));if("tfoot"===t.name){a||={element:t,rows:c},o=!1;const i=a.element===t;if(!i&&null===u)for(let t=e;t0&&(null===d||m.length===d)&&m.every((e=>e.is("element","th")))&&o?(i.push(h),o=!0):(n.push(h),o=!1),d=Math.max(d||0,m.length)}}const c=function(e){let t=new Map,o=0;const i=e.map((e=>{const i=[],n=Array.from(e.getChildren()).filter((e=>"th"===e.name||"td"===e.name)),s=new Map;for(;n.length||i.length0)i.push(e.cell);else{const e=n.shift();if(!e){i.push(null);continue}{const t=parseInt(e.getAttribute("colspan")||"1"),o=parseInt(e.getAttribute("rowspan")||"1");for(let n=0;n1&&s.set(i.length,{cell:e,remaining:o-1}),i.push(e)}}}for(const[e,o]of t.entries())o.remaining-=1,o.remaining>0&&!s.has(e)&&s.set(e,o);return t=s,o=Math.max(o,i.length),i}));for(const e of i)for(;e.lengthi.convertItem(e,i.writer.createPositionAt(d,"end")))),i.convertChildren(n,i.writer.createPositionAt(d,"end")),d.isEmpty){const e=i.writer.createElement("tableRow");i.writer.insert(e,i.writer.createPositionAt(d,"end")),Lk(i.writer,i.writer.createPositionAt(e,"end"))}i.updateConversionResult(d,o)}}))}}function nv(e){return t=>{t.on(`element:${e}`,((e,t,{writer:o})=>{if(!t.modelRange)return;const i=t.modelRange.start.nodeAfter,n=o.createPositionAt(i,0);if(t.viewItem.isEmpty)return void o.insertElement("paragraph",n);const s=Array.from(i.getChildren());if(s.every((e=>e.is("element","$marker")))){const e=o.createElement("paragraph");o.insert(e,o.createPositionAt(i,0));for(const t of s)o.move(o.createRangeOn(t),o.createPositionAt(e,"end"))}}),{priority:"low"})}}function sv(e){if(e.is("element","tableColumnGroup"))return e;const t=e.getChildren();return Array.from(t).find((e=>e.is("element","tableColumnGroup")))}function rv(e){const t=sv(e);return t?Array.from(t.getChildren()):[]}class av extends fc{static get pluginName(){return"TableUtils"}static get isOfficialPlugin(){return!0}init(){this.decorate("insertColumns"),this.decorate("insertRows")}getCellLocation(e){const t=e.parent,o=t.parent,i=o.getChildIndex(t),n=new Fk(o,{row:i});for(const{cell:t,row:o,column:i}of n)if(t===e)return{row:o,column:i}}createTable(e,t){const o=e.createElement("table");return lv(e,o,0,t.rows||2,t.columns||2),t.footerRows&&this.setFooterRowsCount(e,o,t.footerRows),t.headingRows&&this.setHeadingRowsCount(e,o,t.headingRows),t.headingColumns&&this.setHeadingColumnsCount(e,o,t.headingColumns),o}insertRows(e,t={}){const o=this.editor.model,i=t.at||0,n=t.rows||1,s=void 0!==t.copyStructureFromAbove,r=t.copyStructureFromAbove?i-1:i,a=Hk(this.editor),l=!!this.editor.config.get("table.tableCellProperties.scopedHeaders"),c=this.getRows(e),d=this.getColumns(e);if(i>c)throw new fe("tableutils-insertrows-insert-out-of-range",this,{options:t});o.change((t=>{let o=e.getAttribute("headingRows")||0,u=e.getAttribute("footerRows")||0;if(o>i&&(o+=n),u&&i>c-u&&(u+=n),s||0!==i&&i!==c){const o=s?Math.max(i,r):i,c=new Fk(e,{endRow:o}),u=new Array(d).fill(1);for(const{row:e,column:o,cellHeight:a,cellWidth:l,cell:d}of c){const c=e+a-1,h=e<=r&&r<=c;e0){const n=Lk(t,c,r>1?{colspan:r}:void 0);a&&hv({table:e,writer:t,cell:n,row:i+o,column:s,scopedHeaders:l})}s+=Math.abs(r)-1}}}else{const o=lv(t,e,i,n,d);if(a)for(let n=0;n{let o=e.getAttribute("headingColumns");in-1)throw new fe("tableutils-removerows-row-index-out-of-range",this,{table:e,options:t});o.change((t=>{const o={first:s,last:r},{cellsToMove:i,cellsToTrim:a}=function(e,{first:t,last:o}){const i=new Map,n=[];for(const{row:s,column:r,cellHeight:a,cell:l}of new Fk(e,{endRow:o})){const e=s+a-1;if(s>=t&&s<=o&&e>o){const e=a-(o-s+1);i.set(r,{cell:l,rowspan:e})}if(s=t){let i;i=e>=o?o-t+1:e-t+1,n.push({cell:l,rowspan:a-i})}}return{cellsToMove:i,cellsToTrim:n}}(e,o);if(i.size){!function(e,t,o,i){const n=new Fk(e,{includeAllSlots:!0,row:t}),s=[...n],r=e.getChild(t);let a;for(const{column:e,cell:t,isAnchor:n}of s)if(o.has(e)){const{cell:t,rowspan:n}=o.get(e),s=a?i.createPositionAfter(a):i.createPositionAt(r,0);i.move(i.createRangeOn(t),s),Bk("rowspan",n,t,i),a=t}else n&&(a=t)}(e,r+1,i,t)}for(let o=r;o>=s;o--)t.remove(e.getChild(o));for(const{rowspan:e,cell:o}of a)Bk("rowspan",e,o,t);if(function(e,{first:t,last:o},i){const n=e.getAttribute("headingRows")||0;if(t=r){Bk("footerRows",o>=r?s-(i-o+1):t-1-i,e,n,0)}}(e,n,o,t),Qk(e,this)||Yk(e,this),Hk(this.editor)){let o=e.getAttribute("headingRows")||0;const i=this.getRows(e);for(;o{!function(e,t,o){const i=e.getAttribute("headingColumns")||0;if(i&&t.first=i;n--){for(const{cell:o,column:i,cellWidth:s}of[...new Fk(e)])i<=n&&s>1&&i+s>n?Bk("colspan",s-1,o,t):i===n&&t.remove(o);if(o[n]){const e=0===n?o[1]:o[n-1],i=parseFloat(o[n].getAttribute("columnWidth")),s=parseFloat(e.getAttribute("columnWidth"));t.remove(o[n]),t.setAttribute("columnWidth",i+s+"%",e)}}if(Yk(e,this)||Qk(e,this),Hk(this.editor)){let o=e.getAttribute("headingColumns")||0;const i=this.getColumns(e);for(;o{if(s>1){const{newCellsSpan:i,updatedSpan:r}=dv(s,t);Bk("colspan",r,e,o);const a={};i>1&&(a.colspan=i),n>1&&(a.rowspan=n);cv(s>t?t-1:s-1,o,o.createPositionAfter(e),a)}if(st===e)),c=a.filter((({cell:t,cellWidth:o,column:i})=>t!==e&&i===l||il));for(const{cell:e,cellWidth:t}of c)o.setAttribute("colspan",t+r,e);const d={};n>1&&(d.rowspan=n),cv(r,o,o.createPositionAfter(e),d);const u=i.getAttribute("headingColumns")||0;u>l&&Bk("headingColumns",u+r,i,o)}}))}splitCellHorizontally(e,t=2){const o=this.editor.model,i=e.parent,n=i.parent,s=n.getChildIndex(i),r=parseInt(e.getAttribute("rowspan")||"1"),a=parseInt(e.getAttribute("colspan")||"1");o.change((o=>{if(r>1){const i=[...new Fk(n,{startRow:s,endRow:s+r-1,includeAllSlots:!0})],{newCellsSpan:l,updatedSpan:c}=dv(r,t);Bk("rowspan",c,e,o);const{column:d}=i.find((({cell:t})=>t===e)),u={};l>1&&(u.rowspan=l),a>1&&(u.colspan=a);let h=0;for(const e of i){const{column:t,row:i}=e,n=t===d;h>=l&&n&&(h=0),i>=s+c&&n&&(h||cv(1,o,e.getPositionBefore(),u),h++)}}if(rs){const e=n+i;o.setAttribute("rowspan",e,t)}const d={};a>1&&(d.colspan=a),lv(o,n,s+1,i,1,d);const u=n.getAttribute("headingRows")||0;u>s&&Bk("headingRows",u+i,n,o);const h=n.getAttribute("footerRows")||0;l-h<=s&&Bk("footerRows",h+i,n,o)}}))}getColumns(e){return[...e.getChild(0).getChildren()].filter((e=>e.is("element","tableCell"))).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)}createTableWalker(e,t={}){return new Fk(e,t)}getSelectedTableCells(e){const t=[];for(const o of this.sortRanges(e.getRanges())){const e=o.getContainedElement();e&&e.is("element","tableCell")&&t.push(e)}return t}setFooterRowsCount(e,t,o){if(!this.editor.config.get("table.enableFooters"))return;const i=t.getAttribute("headingRows")||0,n=this.getRows(t),s=Math.min(o,n);if(Bk("footerRows",s,t,e,0),i+s>n){const o=n-s;this.setHeadingRowsCount(e,t,o)}}setHeadingRowsCount(e,t,o,i={}){const{updateCellType:n=!0,resetFormerHeadingCells:s=!0,autoExpand:r=!0}=i,a=this.getRows(t),l=!!this.editor.config.get("table.tableCellProperties.scopedHeaders"),c=t.getAttribute("headingRows")||0;let d=Math.min(o,a);if(d===c)return;Bk("headingRows",d,t,e,0);if(d+(t.getAttribute("footerRows")||0)>a){const o=a-d;this.setFooterRowsCount(e,t,o)}if(Hk(this.editor)){if(n){for(const{cell:o,row:i,column:n}of new Fk(t,{endRow:d-1}))hv({table:t,writer:e,cell:o,row:i,column:n,scopedHeaders:l});if(s&&dc){for(;dl){for(;de.parent.index));return this._getFirstLastIndexesObject(t)}getColumnIndexes(e){const t=e[0].findAncestor("table"),o=[...new Fk(t)].filter((t=>e.includes(t.cell))).map((e=>e.column));return this._getFirstLastIndexesObject(o)}isSelectionRectangular(e){if(e.length<2||!this._areCellInTheSameTableSection(e))return!1;const t=new Set,o=new Set;let i=0;for(const n of e){const{row:e,column:s}=this.getCellLocation(n),r=parseInt(n.getAttribute("rowspan"))||1,a=parseInt(n.getAttribute("colspan"))||1;t.add(e),o.add(s),r>1&&t.add(e+r-1),a>1&&o.add(s+a-1),i+=r*a}const n=function(e,t){const o=Array.from(e.values()),i=Array.from(t.values()),n=Math.max(...o),s=Math.min(...o),r=Math.max(...i),a=Math.min(...i);return(n-s+1)*(r-a+1)}(t,o);return n==i}sortRanges(e){return Array.from(e).sort(uv)}_getFirstLastIndexesObject(e){const t=e.sort(((e,t)=>e-t));return{first:t[0],last:t[t.length-1]}}_areCellInTheSameTableSection(e){const t=e[0].findAncestor("table"),o=this.getRows(t),i=this.getRowIndexes(e),n=parseInt(t.getAttribute("headingRows"))||0,s=parseInt(t.getAttribute("footerRows"))||0;if(!this._areIndexesInSameHeadingSection(i,n)||!this._areIndexesInSameFooterSection(i,o,s))return!1;const r=this.getColumnIndexes(e),a=parseInt(t.getAttribute("headingColumns"))||0;return this._areIndexesInSameHeadingSection(r,a)}_areIndexesInSameHeadingSection({first:e,last:t},o){return e=n===t>=n}}function lv(e,t,o,i,n,s={}){const r=[];for(let a=0;a=r&&i>=a)return void e.removeAttribute("tableCellType",n);let l="header";s&&(l=o{const n=o.getAttribute("headingRows")||0,s=o.getAttribute("footerRows")||0,r=i.createContainerElement("table",null,[]),a=i.createContainerElement("figure",{class:"table"},r),l=e.getRows(o);n>0&&i.insert(i.createPositionAt(r,"end"),i.createContainerElement("thead",null,i.createSlot((e=>e.is("element","tableRow")&&e.indexe.is("element","tableRow")&&e.index>=n&&e.index0&&i.insert(i.createPositionAt(r,"end"),i.createContainerElement("tfoot",null,i.createSlot((e=>e.is("element","tableRow")&&e.index>=l-s))));for(const{positionOffset:e,filter:o}of t.additionalSlots)i.insert(i.createPositionAt(r,e),i.createSlot(o));return i.insert(i.createPositionAt(r,"after"),i.createSlot((e=>!e.is("element","tableRow")&&!t.additionalSlots.some((({filter:t})=>t(e)))))),t.asWidget?function(e,t){return t.setCustomProperty("table",!0,e),np(e,t,{hasSelectionHandle:!0})}(a,i):a}}function yv(e){return(o,{writer:i})=>{if(e.cellTypeEnabled?.()){return t(i,Nk(o.getAttribute("tableCellType"))?"th":"td")}const n=o.parent,s=n.parent,r=s.getChildIndex(n),a=new Fk(s,{row:r}),l=s.getAttribute("headingRows")||0,c=s.getAttribute("headingColumns")||0;let d=null;for(const e of a)if(e.cell==o){d=t(i,e.row{if(!t.parent.is("element","tableCell"))return null;if(!kv(t))return null;if(e.asWidget)return o.createContainerElement("span",{class:"ck-table-bogus-paragraph"});{const e=o.createContainerElement("p");return o.setCustomProperty("dataPipeline:transparentRendering",!0,e),e}}}function kv(e){return 1==e.parent.childCount&&!function(e){for(const t of e.getAttributeKeys())if(!t.startsWith("selection:")&&"htmlEmptyBlock"!=t)return!0;return!1}(e)}function vv(e){return(t,o)=>{const i=e.plugins.has("PlainTableOutput"),n=o.options.isClipboardPipeline,s=Av(e,t);return i||s||n?function(e,t,o){const i=o.plugins.get(av),n=t.writer,s=i.getRows(e),r=e.getAttribute("headingRows")||0,a=e.getAttribute("footerRows")||0,l=s-a,c=n.createSlot((e=>e.is("element","tableRow")&&e.indexe.is("element","tableRow")&&e.index>=r&&e.indexe.is("element","tableRow")&&e.index>=l)),h=n.createSlot((e=>!e.is("element","tableRow"))),m=n.createContainerElement("thead",null,c),g=n.createContainerElement("tbody",null,d),p=n.createContainerElement("tfoot",null,u),f=[];r&&f.push(m);r+a{const n=e.plugins.has("PlainTableOutput"),s=i.isClipboardPipeline,r=Av(e,t);return(n||r||s)&&"table"===t.parent.name?o.createContainerElement("caption"):null}}function Av(e,t){const o=e.plugins.has("TableLayoutEditing"),i=e.config.get("table.tableLayout.stripFigureFromContentTable")??!1,n=t.findAncestor("table",{includeSelf:!0}),s=n?.getAttribute("tableType");return o&&(i||"layout"===s)}class xv extends wc{refresh(){const e=this.editor.model,t=e.document.selection,o=e.schema;this.isEnabled=function(e,t){const o=e.getFirstPosition().parent,i=o===o.root?o:o.parent;return t.checkChild(i,"table")}(t,o)}execute(e={}){const t=this.editor,o=t.model,i=t.plugins.get("TableUtils"),n=!!t.config.get("table.enableFooters"),s=t.config.get("table.defaultHeadings.rows"),r=t.config.get("table.defaultHeadings.columns"),a=t.config.get("table.defaultFooters");void 0===e.headingRows&&s&&(e.headingRows=s),void 0===e.headingColumns&&r&&(e.headingColumns=r),n&&void 0===e.footerRows&&a&&(e.footerRows=a),!n&&"footerRows"in e&&delete e.footerRows,o.change((t=>{const n=i.createTable(t,e);o.insertObject(n,null,null,{findOptimalPosition:"auto"}),t.setSelection(t.createPositionAt(n.getNodeByPath([0,0,0]),0))}))}}class Ev extends wc{order;constructor(e,t={}){super(e),this.order=t.order||"below"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),i="above"===this.order,n=o.getSelectionAffectedTableCells(t),s=o.getRowIndexes(n),r=i?s.first:s.last,a=n[0].findAncestor("table");o.insertRows(a,{at:i?r:r+1,copyStructureFromAbove:!i})}}class Tv extends wc{order;constructor(e,t={}){super(e),this.order=t.order||"right"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),i="left"===this.order,n=o.getSelectionAffectedTableCells(t),s=o.getColumnIndexes(n),r=i?s.first:s.last,a=n[0].findAncestor("table");o.insertColumns(a,{columns:1,at:i?r:r+1})}}class Pv extends wc{direction;constructor(e,t={}){super(e),this.direction=t.direction||"horizontally"}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=1===e.length}execute(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection)[0];"horizontally"===this.direction?e.splitCellHorizontally(t,2):e.splitCellVertically(t,2)}}class Sv extends wc{direction;isHorizontal;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=e.document,o=this.editor.plugins.get("TableUtils").getTableCellsContainingSelection(t.selection)[0],i=this.value,n=this.direction;e.change((e=>{const t="right"==n||"down"==n,s=t?o:i,r=t?i:o,a=r.parent;!function(e,t,o){Iv(e)||(Iv(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end")));o.remove(e)}(r,s,e);const l=this.isHorizontal?"colspan":"rowspan",c=parseInt(o.getAttribute(l)||"1"),d=parseInt(i.getAttribute(l)||"1");e.setAttribute(l,c+d,s),e.setSelection(e.createRangeIn(s));const u=this.editor.plugins.get("TableUtils");Xk(a.findAncestor("table"),u)}))}_getMergeableCell(){const e=this.editor.model.document,t=this.editor.plugins.get("TableUtils"),o=t.getTableCellsContainingSelection(e.selection)[0];if(!o)return;const i=this.isHorizontal?function(e,t,o){const i=e.parent,n=i.parent,s="right"==t?e.nextSibling:e.previousSibling,r=(n.getAttribute("headingColumns")||0)>0;if(!s)return;const a="right"==t?e:s,l="right"==t?s:e,{column:c}=o.getCellLocation(a),{column:d}=o.getCellLocation(l),u=parseInt(a.getAttribute("colspan")||"1"),h=zk(o,a),m=zk(o,l);if(r&&h!=m)return;return c+u===d?s:void 0}(o,this.direction,t):function(e,t,o){const i=e.parent,n=i.parent,s=n.getChildIndex(i),r=o.getRows(n);if("down"==t&&s===r-1||"up"==t&&0===s)return null;const a=parseInt(e.getAttribute("rowspan")||"1"),l=n.getAttribute("headingRows")||0,c=n.getAttribute("footerRows")||0,d=r-c,u="up"==t&&s===d,h="up"==t&&s===l,m="down"==t&&s+a===l,g="down"==t&&s+a===d;if(l&&(m||h))return null;if(c&&(u||g))return null;const p=parseInt(e.getAttribute("rowspan")||"1"),f="down"==t?s+p:s,b=[...new Fk(n,{endRow:f})],w=b.find((t=>t.cell===e)),y=w.column,_=b.find((({row:e,cellHeight:o,column:i})=>i===y&&("down"==t?e===f:f===e+o)));return _&&_.cell?_.cell:null}(o,this.direction,t);if(!i)return;const n=this.isHorizontal?"rowspan":"colspan",s=parseInt(o.getAttribute(n)||"1");return parseInt(i.getAttribute(n)||"1")===s?i:void 0}}function Iv(e){const t=e.getChild(0);return 1==e.childCount&&t.is("element","paragraph")&&t.isEmpty}class Rv extends wc{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const i=o.findAncestor("table"),n=e.getRows(i)-1,s=e.getRowIndexes(t),r=0===s.first&&s.last===n;this.isEnabled=!r}else this.isEnabled=!1}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),i=t.getRowIndexes(o),n=o[0],s=n.findAncestor("table"),r=t.getCellLocation(n).column;e.change((e=>{const o=i.last-i.first+1;t.removeRows(s,{at:i.first,rows:o});const n=function(e,t,o,i){const n=e.getChild(Math.min(t,i-1));let s=n.getChild(0),r=0;for(const e of n.getChildren()){if(r>o)return s;s=e,r+=parseInt(e.getAttribute("colspan")||"1")}return s}(s,i.first,r,t.getRows(s));e.setSelection(e.createPositionAt(n,0))}))}}class Ov extends wc{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const i=o.findAncestor("table"),n=e.getColumns(i),{first:s,last:r}=e.getColumnIndexes(t);this.isEnabled=r-se.cell===t)).column,last:n.find((e=>e.cell===o)).column},r=function(e,t,o,i){const n=parseInt(o.getAttribute("colspan")||"1");return n>1?o:t.previousSibling||o.nextSibling?o.nextSibling||t.previousSibling:i.first?e.reverse().find((({column:e})=>ee>i.last)).cell}(n,t,o,s);this.editor.model.change((t=>{const o=s.last-s.first+1;e.removeColumns(i,{at:s.first,columns:o}),t.setSelection(t.createPositionAt(r,0))}))}}class Vv extends wc{refresh(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection);if(0===o.length)return this.isEnabled=!1,void(this.value=!1);const i=o[0].findAncestor("table");this.isEnabled=t.schema.checkAttribute(i,"headingRows"),this.value=o.every((e=>this._isInHeading(e,e.parent.parent)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,i=t.getSelectionAffectedTableCells(o.document.selection),n=i[0].findAncestor("table"),{first:s,last:r}=t.getRowIndexes(i),a=this.value?s:r+1,l=n.getAttribute("headingRows")||0;o.change((e=>{if(a){const t=Uk(n,a,a>l?l:0);for(const{cell:o}of t)Kk(o,a,e)}t.setHeadingRowsCount(e,n,a)}))}_isInHeading(e,t){const o=parseInt(t.getAttribute("headingRows")||"0");return!!o&&e.parent.indexthis._isInFooter(e,i)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,i=t.getSelectionAffectedTableCells(o.document.selection),n=i[0].findAncestor("table"),{first:s,last:r}=t.getRowIndexes(i),a=t.getRows(n),l=this.value?a-(r+1):a-s,c=n.getAttribute("footerRows")||0;o.change((e=>{if(l){const t=a-l,o=a-c,i=Uk(n,t,t>o?o:0);for(const{cell:o}of i)Kk(o,t,e)}t.setFooterRowsCount(e,n,l)}))}_isInFooter(e,t){const o=parseInt(t.getAttribute("footerRows")||"0"),i=this.editor.plugins.get("TableUtils").getRows(t),n=e.parent.index;return!!o&&n>=i-o}}class Fv extends wc{refresh(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection);if(0===o.length)return this.isEnabled=!1,void(this.value=!1);const i=o[0].findAncestor("table");this.isEnabled=t.schema.checkAttribute(i,"headingColumns"),this.value=o.every((t=>zk(e,t)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,i=t.getSelectionAffectedTableCells(o.document.selection),n=i[0].findAncestor("table"),{first:s,last:r}=t.getColumnIndexes(i),a=this.value?s:r+1;o.change((e=>{if(a){const t=Gk(n,a);for(const{cell:o,column:i}of t)Jk(o,i,a,e)}t.setHeadingColumnsCount(e,n,a)}))}}class Mv extends wc{refresh(){const e=this.editor.plugins.get(av),t=e.getSelectedTableCells(this.editor.model.document.selection);this.isEnabled=e.isSelectionRectangular(t)}execute(){const e=this.editor.model,t=this.editor.plugins.get(av);e.change((o=>{const i=t.getSelectedTableCells(e.document.selection),n=i.shift(),{mergeWidth:s,mergeHeight:r}=function(e,t,o){let i=0,n=0;for(const e of t){const{row:t,column:s}=o.getCellLocation(e);i=Lv(e,s,i,"colspan"),n=Lv(e,t,n,"rowspan")}const{row:s,column:r}=o.getCellLocation(e),a=i-r,l=n-s;return{mergeWidth:a,mergeHeight:l}}(n,i,t);Bk("colspan",s,n,o),Bk("rowspan",r,n,o);for(const e of i)Nv(e,n,o);Xk(n.findAncestor("table"),t),o.setSelection(n,"in")}))}}function Nv(e,t,o){Bv(e)||(Bv(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end"))),o.remove(e)}function Bv(e){const t=e.getChild(0);return 1==e.childCount&&t.is("element","paragraph")&&t.isEmpty}function Lv(e,t,o,i){const n=parseInt(e.getAttribute(i)||"1");return Math.max(o,t+n)}class zv extends wc{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),i=t.getRowIndexes(o),n=o[0].findAncestor("table"),s=[];for(let t=i.first;t<=i.last;t++)for(const o of n.getChild(t).getChildren())s.push(e.createRangeOn(o));e.change((e=>{e.setSelection(s)}))}}class jv extends wc{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection),i=o[0],n=o.pop(),s=i.findAncestor("table"),r=e.getCellLocation(i),a=e.getCellLocation(n),l=Math.min(r.column,a.column),c=Math.max(r.column,a.column),d=[];for(const e of new Fk(s,{startColumn:l,endColumn:c}))d.push(t.createRangeOn(e.cell));t.change((e=>{e.setSelection(d)}))}}function qv(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let i=!1;const n=new Set;for(const t of o){let o=null;"insert"==t.type&&"table"==t.name&&(o=t.position.nodeAfter),"insert"!=t.type&&"remove"!=t.type||"tableRow"!=t.name&&"tableCell"!=t.name||(o=t.position.findAncestor("table")),Wv(t)&&(o=t.range.start.findAncestor("table")),o&&!n.has(o)&&(i=$v(o,e)||i,i=Hv(o,e)||i,n.add(o))}return i}(t,e)))}function $v(e,t){let o=!1;const i=function(e){const t=parseInt(e.getAttribute("headingRows")||"0"),o=parseInt(e.getAttribute("footerRows")||"0"),i=Array.from(e.getChildren()).reduce(((e,t)=>t.is("element","tableRow")?e+1:e),0),n=i-o,s=[];for(const{row:o,cell:r,cellHeight:a}of new Fk(e)){if(a<2)continue;let e;if(e=o=n?i:n,o+a>e){const t=e-o;s.push({cell:r,rowspan:t})}}return s}(e);if(i.length){o=!0;for(const e of i)Bk("rowspan",e.rowspan,e.cell,t,1)}return o}function Hv(e,t){let o=!1;const i=function(e){const t=new Array(e.childCount).fill(0);for(const{rowIndex:o}of new Fk(e,{includeAllSlots:!0}))t[o]++;return t}(e),n=[];for(const[t,o]of i.entries())!o&&e.getChild(t).is("element","tableRow")&&n.push(t);if(n.length){o=!0;for(const o of n.reverse())t.remove(e.getChild(o)),i.splice(o,1)}const s=i.filter(((t,o)=>e.getChild(o).is("element","tableRow"))),r=s[0];if(!s.every((e=>e===r))){const i=s.reduce(((e,t)=>t>e?t:e),0);for(const[n,r]of s.entries()){const s=i-r;if(s){for(let o=0;ofunction(e,t){const o=t.document.differ.getChanges();let i=!1;for(const t of o)"insert"==t.type&&"table"==t.name&&(i=Kv(t.position.nodeAfter,e)||i),"insert"==t.type&&"tableRow"==t.name&&(i=Gv(t.position.nodeAfter,e)||i),"insert"==t.type&&"tableCell"==t.name&&(i=Jv(t.position.nodeAfter,e)||i),"remove"!=t.type&&"insert"!=t.type||!Zv(t)||(i=Jv(t.position.parent,e)||i);return i}(t,e)))}function Kv(e,t){let o=!1;for(const i of e.getChildren())i.is("element","tableRow")&&(o=Gv(i,t)||o);return o}function Gv(e,t){let o=!1;for(const i of e.getChildren())o=Jv(i,t)||o;return o}function Jv(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 Zv(e){return!!e.position.parent.is("element","tableCell")&&("insert"==e.type&&"$text"==e.name||"remove"==e.type)}function Qv(e,t,o){const i=o.getAttribute("headingRows")||0,n=o.getAttribute("footerRows")||0,s=e.getRows(o);if(i+n>s){return Bk("footerRows",Math.max(0,s-i),o,t,0),!0}return!1}function Yv(e,t){if(!e.is("element","paragraph"))return!1;const o=t.toViewElement(e);return!!o&&kv(e)!==o.is("element","span")}class Xv extends fc{_additionalSlots;static get pluginName(){return"TableEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[av]}constructor(e){super(e),this._additionalSlots=[]}init(){const e=this.editor,t=e.model,o=t.schema,i=e.conversion,n=e.plugins.get(av);e.config.define("table.enableFooters",!1);const s=!!e.config.get("table.enableFooters");o.register("table",{inheritAllFrom:"$blockObject",allowAttributes:["headingRows","headingColumns",...s?["footerRows"]:[]]}),o.register("tableRow",{allowIn:"table",isLimit:!0}),o.register("tableCell",{allowContentOf:"$container",allowIn:"tableRow",allowAttributes:["colspan","rowspan"],isLimit:!0,isSelectable:!0}),i.for("upcast").add((e=>{e.on("element:figure",((e,t,o)=>{if(!o.consumable.test(t.viewItem,{name:!0,classes:"table"}))return;const i=ov(t.viewItem);if(!i||!o.consumable.test(i,{name:!0}))return;o.consumable.consume(t.viewItem,{name:!0,classes:"table"});const n=o.convertItem(i,t.modelCursor),s=to(n.modelRange.getItems());if(!s||!s.is("element","table"))return o.consumable.revert(t.viewItem,{name:!0,classes:"table"}),void(n.modelRange&&!n.modelRange.isCollapsed&&(t.modelRange=n.modelRange,t.modelCursor=n.modelCursor));o.convertChildren(t.viewItem,o.writer.createPositionAt(s,"end")),o.updateConversionResult(s,t)}))})),i.for("upcast").add(iv({enableFooters:s})),i.for("editingDowncast").elementToStructure({model:{name:"table",attributes:["headingRows",...s?["footerRows"]:[]]},view:wv(n,{asWidget:!0,additionalSlots:this._additionalSlots})}),i.for("dataDowncast").elementToStructure({model:{name:"table",attributes:["headingRows",...s?["footerRows"]:[]]},view:wv(n,{additionalSlots:this._additionalSlots})}),i.for("upcast").elementToElement({model:"tableRow",view:"tr"}),i.for("upcast").add((e=>{e.on("element:tr",((e,t)=>{t.viewItem.isEmpty&&0==t.modelCursor.index&&e.stop()}),{priority:"high"})})),i.for("downcast").elementToElement({model:"tableRow",view:(e,{writer:t})=>e.isEmpty?t.createEmptyElement("tr"):t.createContainerElement("tr")}),i.for("upcast").elementToElement({model:"tableCell",view:"td"}),i.for("upcast").elementToElement({model:"tableCell",view:"th"}),i.for("upcast").add(nv("td")),i.for("upcast").add(nv("th")),i.for("editingDowncast").elementToElement({model:"tableCell",view:yv({asWidget:!0,cellTypeEnabled:()=>Hk(this.editor)})}),i.for("dataDowncast").elementToElement({model:"tableCell",view:yv({cellTypeEnabled:()=>Hk(this.editor)})}),i.for("editingDowncast").elementToElement({model:"paragraph",view:_v({asWidget:!0}),converterPriority:"high"}),i.for("dataDowncast").elementToElement({model:"paragraph",view:_v(),converterPriority:"high"}),i.for("downcast").attributeToAttribute({model:"colspan",view:"colspan"}),i.for("upcast").attributeToAttribute({model:{key:"colspan",value:eC("colspan")},view:"colspan"}),i.for("downcast").attributeToAttribute({model:"rowspan",view:"rowspan"}),i.for("upcast").attributeToAttribute({model:{key:"rowspan",value:eC("rowspan")},view:"rowspan"}),this._addPlainTableOutputConverters(),e.config.define("table.defaultHeadings.rows",0),e.config.define("table.defaultHeadings.columns",0),e.config.define("table.defaultFooters",0),e.config.define("table.showHiddenBorders",!0),e.config.get("table.showHiddenBorders")&&e.editing.view.change((t=>{for(const o of e.editing.view.document.roots)t.addClass("ck-table-show-hidden-borders",o)})),e.commands.add("insertTable",new xv(e)),e.commands.add("insertTableRowAbove",new Ev(e,{order:"above"})),e.commands.add("insertTableRowBelow",new Ev(e,{order:"below"})),e.commands.add("insertTableColumnLeft",new Tv(e,{order:"left"})),e.commands.add("insertTableColumnRight",new Tv(e,{order:"right"})),e.commands.add("removeTableRow",new Rv(e)),e.commands.add("removeTableColumn",new Ov(e)),e.commands.add("splitTableCellVertically",new Pv(e,{direction:"vertically"})),e.commands.add("splitTableCellHorizontally",new Pv(e,{direction:"horizontally"})),e.commands.add("mergeTableCells",new Mv(e)),e.commands.add("mergeTableCellRight",new Sv(e,{direction:"right"})),e.commands.add("mergeTableCellLeft",new Sv(e,{direction:"left"})),e.commands.add("mergeTableCellDown",new Sv(e,{direction:"down"})),e.commands.add("mergeTableCellUp",new Sv(e,{direction:"up"})),e.commands.add("setTableColumnHeader",new Fv(e)),e.commands.add("setTableRowHeader",new Vv(e)),s&&e.commands.add("setTableFooterRow",new Dv(e)),e.commands.add("selectTableRow",new zv(e)),e.commands.add("selectTableColumn",new jv(e)),qv(t),Uv(t),s&&function(e){const{model:t}=e,o=e.plugins.get(av);t.document.registerPostFixer((e=>{let i=!1;const n=t.document.differ.getChanges(),s=new Set;for(const e of n){let t=null;"attribute"!=e.type||"headingRows"!=e.attributeKey&&"footerRows"!=e.attributeKey?("insert"==e.type&&"tableRow"==e.name||"remove"==e.type&&"tableRow"==e.name)&&(t=e.position.parent):t=e.range.start.nodeAfter,t&&t.is("element","table")&&s.add(t)}for(const t of s)Qv(o,e,t)&&(i=!0);return i}))}(e),this.listenTo(t.document,"change:data",(()=>{Hk(e)||function(e,t){const o=e.document.differ,i=new Set,n=new Set,s=new Set;for(const e of o.getChanges()){let o;if("attribute"==e.type){const t=e.range.start.nodeAfter;if(!t||!t.is("element","table"))continue;if("headingRows"!=e.attributeKey&&"headingColumns"!=e.attributeKey&&"footerRows"!=e.attributeKey)continue;o=t}else"tableRow"!=e.name&&"tableCell"!=e.name||(o=e.position.findAncestor("table"));if(!o)continue;"insert"==e.type&&"tableRow"==e.name&&t.mapper.toViewElement(e.position.nodeAfter)&&i.add(e.position.nodeAfter);const r=o.getAttribute("headingRows")||0,a=o.getAttribute("headingColumns")||0,l=new Fk(o);for(const e of l){const o=t.mapper.toViewElement(e.cell);if(!o||!o.is("element"))continue;const l=e.rowYv(e,t.mapper)));for(const e of o)t.reconvertItem(e)}}(t,e.editing)}))}registerAdditionalSlot(e){this._additionalSlots.push(e)}_addPlainTableOutputConverters(){const e=this.editor;e.conversion.for("dataDowncast").elementToStructure({model:"table",view:vv(e),converterPriority:"high"}),e.plugins.has("TableCaptionEditing")&&e.conversion.for("dataDowncast").elementToElement({model:"caption",view:Cv(e),converterPriority:"high"}),e.plugins.has("TablePropertiesEditing")&&function(e){const t={"border-width":"tableBorderWidth","border-color":"tableBorderColor","border-style":"tableBorderStyle","background-color":"tableBackgroundColor"};for(const[o,i]of Object.entries(t))e.conversion.for("dataDowncast").add((t=>t.on(`attribute:${i}:table`,((t,i,n)=>{const{item:s,attributeNewValue:r}=i,{mapper:a,writer:l}=n,c=e.plugins.has("PlainTableOutput"),d=n.options.isClipboardPipeline,u=Av(e,s);if(!(c||u||d))return;if(!n.consumable.consume(s,t.name))return;const h=a.toViewElement(s);r?l.setStyle(o,r,h):l.removeStyle(o,h)}),{priority:"high"})))}(e)}}function eC(e){return t=>{const o=parseInt(t.getAttribute(e));return Number.isNaN(o)||o<=0?null:o}}class tC extends Au{items;keystrokes;focusTracker;constructor(e){super(e);const t=this.bindTemplate;this.items=this._createGridCollection(),this.keystrokes=new ro,this.focusTracker=new oo,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","ck-insert-table-dropdown__label"],"aria-hidden":!0},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:i}=t.target.dataset;this.items.get(10*(parseInt(o,10)-1)+(parseInt(i,10)-1)).focus()})),this.focusTracker.on("change:focusedElement",((e,t,o)=>{if(!o)return;const{row:i,column:n}=o.dataset;this.set({rows:parseInt(i),columns:parseInt(n)})})),this.on("change:columns",(()=>this._highlightGridBoxes())),this.on("change:rows",(()=>this._highlightGridBoxes()))}render(){super.render(),Vu({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:10,uiLanguageDirection:this.locale&&this.locale.uiLanguageDirection});for(const e of this.items)this.focusTracker.add(e.element);this.keystrokes.listenTo(this.element)}reset(){this.set({rows:1,columns:1})}focus(){this.items.get(0).focus()}focusLast(){this.items.get(0).focus()}_highlightGridBoxes(){const e=this.rows,t=this.columns;this.items.map(((o,i)=>{const n=Math.floor(i/10){const i=e.commands.get("insertTable"),n=Zh(o);let s;return n.bind("isEnabled").to(i),n.buttonView.set({icon:od,label:t("Insert table"),tooltip:!0}),n.on("change:isOpen",(()=>{s||(s=new tC(o),n.panelView.children.add(s),s.delegate("execute").to(n),n.on("execute",(()=>{e.execute("insertTable",{rows:s.rows,columns:s.columns}),e.editing.view.focus()})))})),n})),e.ui.componentFactory.add("menuBar:insertTable",(o=>{const i=e.commands.get("insertTable"),n=new og(o),s=new tC(o);return s.delegate("execute").to(n),n.on("change:isOpen",((e,t,o)=>{o||s.reset()})),s.on("execute",(()=>{e.execute("insertTable",{rows:s.rows,columns:s.columns}),e.editing.view.focus()})),n.buttonView.set({label:t("Table"),icon:od}),n.panelView.children.add(s),n.bind("isEnabled").to(i),n})),e.ui.componentFactory.add("tableColumn",(e=>{const i=[{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"),'',i,e)})),e.ui.componentFactory.add("tableRow",(e=>{const o=[{type:"switchbutton",model:{commandName:"setTableRowHeader",label:t("Header row"),bindIsOn:!0}},i&&{type:"switchbutton",model:{commandName:"setTableFooterRow",label:t("Footer 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")}}].filter(Boolean);return this._prepareDropdown(t("Row"),'',o,e)})),e.ui.componentFactory.add("mergeTableCells",(e=>{const i=[{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"),'',i,e)}))}_prepareDropdown(e,t,o,i){const n=this.editor,s=Zh(i),r=this._fillDropdownWithListOptions(s,o);return s.buttonView.set({label:e,icon:t,tooltip:!0}),s.bind("isEnabled").toMany(r,"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(s,"execute",(e=>{n.execute(e.source.commandName),e.source instanceof fh||n.editing.view.focus()})),s}_prepareMergeSplitButtonDropdown(e,t,o,i){const n=this.editor,s=Zh(i,Jh),r="mergeTableCells",a=n.commands.get(r),l=this._fillDropdownWithListOptions(s,o);return s.buttonView.set({label:e,icon:t,tooltip:!0,isEnabled:!0}),s.bind("isEnabled").toMany([a,...l],"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(s.buttonView,"execute",(()=>{n.execute(r),n.editing.view.focus()})),this.listenTo(s,"execute",(e=>{n.execute(e.source.commandName),n.editing.view.focus()})),s}_fillDropdownWithListOptions(e,t){const o=this.editor,i=[],n=new eo;for(const e of t)iC(e,o,i,n);return Xh(e,n),i}}function iC(e,t,o,i){if("button"===e.type||"switchbutton"===e.type){const i=e.model=new Jm(e.model),{commandName:n,bindIsOn:s}=e.model,r=t.commands.get(n);o.push(r),i.set({commandName:n}),i.bind("isEnabled").to(r),s&&i.bind("isOn").to(r,"value"),i.set({withText:!0})}i.add(e)}class nC extends fc{static get pluginName(){return"TableSelection"}static get isOfficialPlugin(){return!0}static get requires(){return[av,av]}init(){const e=this.editor,t=e.model,o=e.editing.view;this.listenTo(t,"deleteContent",((e,t)=>this._handleDeleteContent(e,t)),{priority:"high"}),this.listenTo(o.document,"insertText",((e,t)=>this._handleInsertTextEvent(e,t)),{priority:"high"}),this._defineSelectionConverter(),this._enablePluginDisabling()}getSelectedTableCells(){const e=this.editor.plugins.get(av),t=this.editor.model.document.selection,o=e.getSelectedTableCells(t);return 0==o.length?null:o}getSelectionAsFragment(){const e=this.editor.plugins.get(av),t=this.getSelectedTableCells();return t?this.editor.model.change((o=>{const i=o.createDocumentFragment(),{first:n,last:s}=e.getColumnIndexes(t),{first:r,last:a}=e.getRowIndexes(t),l=t[0].findAncestor("table");let c=a,d=s;if(e.isSelectionRectangular(t)){const e={firstColumn:n,lastColumn:s,firstRow:r,lastRow:a};c=ev(l,e),d=tv(l,e)}const u=Wk(l,{startRow:r,startColumn:n,endRow:c,endColumn:d},o);return o.insert(u,i,0),i})):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=to(this.editor.model.document.selection.getRanges()).getContainedElement();return e&&e.is("element","tableCell")?e:null}_defineSelectionConverter(){const e=this.editor,t=new Set;e.conversion.for("editingDowncast").add((e=>e.on("selection",((e,o,i)=>{const n=i.writer;!function(e){for(const o of t)e.removeClass("ck-editor__editable_selected",o);t.clear()}(n);const s=this.getSelectedTableCells();if(!s)return;for(const e of s){const o=i.mapper.toViewElement(e);n.addClass("ck-editor__editable_selected",o),t.add(o)}const r=i.mapper.toViewElement(s[s.length-1]);n.setSelection(r,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 i=o.createPositionAt(t[0],0),n=e.model.schema.getNearestSelectionRange(i);o.setSelection(n)}))}}))}_handleDeleteContent(e,t){const o=this.editor.plugins.get(av),i=t[0],n=t[1],s=this.editor.model,r=!n||"backward"==n.direction,a=o.getSelectedTableCells(i);a.length&&(e.stop(),s.change((e=>{const t=a[r?a.length-1:0];s.change((e=>{for(const t of a)s.deleteContent(e.createSelection(t,"in"))}));const o=s.schema.getNearestSelectionRange(e.createPositionAt(t,0));i.is("documentSelection")?e.setSelection(o):i.setTo(o)})))}_handleInsertTextEvent(e,t){const o=this.editor,i=this.getSelectedTableCells();if(!i)return;const n=o.editing.view,s=o.editing.mapper,r=i.map((e=>n.createRangeOn(s.toViewElement(e))));t.selection=n.createSelection(r),t.preventDefault()}_getCellsToSelect(e,t){const o=this.editor.plugins.get("TableUtils"),i=o.getCellLocation(e),n=o.getCellLocation(t),s=Math.min(i.row,n.row),r=Math.max(i.row,n.row),a=Math.min(i.column,n.column),l=parseInt(t.getAttribute("colspan")||"1")-1,c=Math.max(i.column,n.column+l),d=new Array(r-s+1).fill(null).map((()=>[])),u={startRow:s,endRow:r,startColumn:a,endColumn:c};for(const{row:t,cell:o}of new Fk(e.findAncestor("table"),u))d[t-s].push(o);const h=n.rowe.reverse())),{cells:d.flat(),backward:h||m}}}class sC extends fc{static get pluginName(){return"TableClipboard"}static get isOfficialPlugin(){return!0}static get requires(){return[ff,bf,nC,av]}init(){const e=this.editor.editing.view.document;this.listenTo(e,"copy",((e,t)=>this._onCopyCut(e,t))),this.listenTo(e,"cut",((e,t)=>this._onCopyCut(e,t))),this._listenToContentInsertion(),this.decorate("_replaceTableSlotCell")}_listenToContentInsertion(){const{editor:e}=this,t=e.plugins.get(bf),o=e.plugins.get(nC);let i=!1;t.on("contentInsertion",((e,t)=>{i="paste"===t.method})),this.listenTo(e.model,"insertContent",((e,[t,n])=>{(i||null!==o.getSelectedTableCells())&&this._onInsertContent(e,t,n)}),{priority:"high"}),t.on("contentInsertion",(()=>{i=!1}),{priority:"lowest"})}_onCopyCut(e,t){const o=this.editor.editing.view,i=this.editor.plugins.get(nC),n=this.editor.plugins.get(ff);i.getSelectedTableCells()&&("cut"!=e.name||this.editor.model.canEditAt(this.editor.model.document.selection))&&(t.preventDefault(),e.stop(),this.editor.model.enqueueChange({isUndoable:"cut"===e.name},(()=>{const s=n._copySelectedFragmentWithMarkers(e.name,this.editor.model.document.selection,(()=>i.getSelectionAsFragment()));o.document.fire("clipboardOutput",{dataTransfer:t.dataTransfer,content:this.editor.data.toView(s),method:e.name})})))}_onInsertContent(e,t,o){if(o&&!o.is("documentSelection"))return;const i=this.editor.model,n=this.editor.plugins.get(av),s=this.editor.plugins.get(ff),r=this.getTableIfOnlyTableInContent(t,i);if(!r)return;const a=n.getSelectionAffectedTableCells(i.document.selection);a.length?(e.stop(),t.is("documentFragment")?s._pasteMarkersIntoTransformedElement(t.markers,(e=>this._replaceSelectedCells(r,a,e))):this.editor.model.change((e=>{this._replaceSelectedCells(r,a,e)}))):Xk(r,n)}_replaceSelectedCells(e,t,o){const i=this.editor.plugins.get(av),n={width:i.getColumns(e),height:i.getRows(e)},s=function(e,t,o,i){const n=e[0].findAncestor("table"),s=i.getColumnIndexes(e),r=i.getRowIndexes(e),a={firstColumn:s.first,lastColumn:s.last,firstRow:r.first,lastRow:r.last},l=1===e.length;l&&(a.lastRow+=t.height-1,a.lastColumn+=t.width-1,function(e,t,o,i){const n=i.getColumns(e),s=i.getRows(e);o>n&&i.insertColumns(e,{at:n,columns:o-n});t>s&&i.insertRows(e,{at:s,rows:t-s})}(n,a.lastRow+1,a.lastColumn+1,i));l||!i.isSelectionRectangular(e)?function(e,t,o){const{firstRow:i,lastRow:n,firstColumn:s,lastColumn:r}=t,a={first:i,last:n},l={first:s,last:r};aC(e,s,a,o),aC(e,r+1,a,o),rC(e,i,l,o),rC(e,n+1,l,o,i)}(n,a,o):(a.lastRow=ev(n,a),a.lastColumn=tv(n,a));return a}(t,n,o,i),r=s.lastRow-s.firstRow+1,a=s.lastColumn-s.firstColumn+1;e=Wk(e,{startRow:0,startColumn:0,endRow:Math.min(r,n.height)-1,endColumn:Math.min(a,n.width)-1},o);const l=t[0].findAncestor("table"),c=this._replaceSelectedCellsWithPasted(e,n,l,s,o,i);if(this.editor.plugins.get("TableSelection").isEnabled){const e=i.sortRanges(c.map((e=>o.createRangeOn(e))));o.setSelection(e)}else o.setSelection(c[0],0);return l}_replaceSelectedCellsWithPasted(e,t,o,i,n,s){const{width:r,height:a}=t,l=function(e,t,o){const i=new Array(o).fill(null).map((()=>new Array(t).fill(null)));for(const{column:t,row:o,cell:n}of new Fk(e))i[o][t]=n;return i}(e,r,a),c=[...new Fk(o,{startRow:i.firstRow,endRow:i.lastRow,startColumn:i.firstColumn,endColumn:i.lastColumn,includeAllSlots:!0})],d=[];let u;for(const e of c){const{row:t,column:o}=e;o===i.firstColumn&&(u=e.getPositionBefore());const s=t-i.firstRow,c=o-i.firstColumn,h=l[s%a][c%r],m=h?n.cloneElement(h):null,g=this._replaceTableSlotCell(e,m,u,n);g&&(Zk(g,t,o,i.lastRow,i.lastColumn,n),d.push(g),u=n.createPositionAfter(g))}const h=parseInt(o.getAttribute("headingRows")||"0"),m=parseInt(o.getAttribute("headingColumns")||"0"),g=parseInt(o.getAttribute("footerRows")||"0"),p=s.getRows(o)-g,f=i.firstRowlC(e,t,o))).map((({cell:e})=>Kk(e,t,i)))}function aC(e,t,o,i){if(t<1)return;return Gk(e,t).filter((({row:e,cellHeight:t})=>lC(e,t,o))).map((({cell:e,column:o})=>Jk(e,o,t,i)))}function lC(e,t,o){const i=e+t-1,{first:n,last:s}=o;return e>=n&&e<=s||e=n}class cC extends fc{static get pluginName(){return"TableKeyboard"}static get isOfficialPlugin(){return!0}static get requires(){return[nC,av]}init(){const e=this.editor,t=e.editing.view.document,o=e.t;this.listenTo(t,"arrowKey",((...e)=>this._onArrowKey(...e)),{context:"table"}),this.listenTo(t,"tab",((...e)=>this._handleTabOnSelectedTable(...e)),{context:"figure"}),this.listenTo(t,"tab",((...e)=>this._handleTab(...e)),{context:["th","td"]}),e.accessibility.addKeystrokeInfoGroup({id:"table",label:o("Keystrokes that can be used in a table cell"),keystrokes:[{label:o("Move the selection to the next cell"),keystroke:"Tab"},{label:o("Move the selection to the previous cell"),keystroke:"Shift+Tab"},{label:o("Insert a new table row (when in the last cell of a table)"),keystroke:"Tab"},{label:o("Navigate through the table"),keystroke:[["arrowup"],["arrowright"],["arrowdown"],["arrowleft"]]}]})}_handleTabOnSelectedTable(e,t){const o=this.editor.model.document.selection.getSelectedElement();o&&o.is("element","table")&&t.stopPropagation()}_handleTab(e,t){const o=this.editor,i=this.editor.plugins.get(av),n=this.editor.plugins.get("TableSelection"),s=o.model.document.selection,r=!t.shiftKey;let a=i.getTableCellsContainingSelection(s)[0];if(a||(a=n.getFocusCell()),!a)return;t.stopPropagation();const l=a.parent,c=l.parent,d=c.getChildIndex(l),u=l.getChildIndex(a)===l.childCount-1,h=d===i.getRows(c)-1;r&&h&&u&&o.execute("insertTableRowBelow")}_onArrowKey(e,t){const o=this.editor,i=Kt(t.keyCode,o.locale.contentLanguageDirection);this._handleArrowKeys(i,t.shiftKey)&&(t.preventDefault(),t.stopPropagation(),e.stop())}_handleArrowKeys(e,t){const o=this.editor.plugins.get(av),i=this.editor.plugins.get("TableSelection"),n=this.editor.model,s=n.document.selection,r=["right","down"].includes(e),a=o.getSelectedTableCells(s);if(a.length){let o;return o=t?i.getFocusCell():r?a[a.length-1]:a[0],this._navigateFromCellInDirection(o,e,t),!0}const l=s.focus.findAncestor("tableCell");if(!l)return!1;if(!s.isCollapsed)if(t){if(s.isBackward==r&&!s.containsEntireContent(l))return!1}else{const e=s.getSelectedElement();if(!e||!n.schema.isObject(e))return!1}return!!this._isSelectionAtCellEdge(s,l,r)&&(this._navigateFromCellInDirection(l,e,t),!0)}_isSelectionAtCellEdge(e,t,o){const i=this.editor.model,n=this.editor.model.schema,s=o?e.getLastPosition():e.getFirstPosition();if(!n.getLimitElement(s).is("element","tableCell")){return i.createPositionAt(t,o?"end":0).isTouching(s)}const r=i.createSelection(s);return i.modifySelection(r,{direction:o?"forward":"backward"}),s.isEqual(r.focus)}_navigateFromCellInDirection(e,t,o=!1){const i=this.editor.model,n=e.findAncestor("table"),s=[...new Fk(n,{includeAllSlots:!0})],{row:r,column:a}=s[s.length-1],l=s.find((({cell:t})=>t==e));let{row:c,column:d}=l;switch(t){case"left":d--;break;case"up":c--;break;case"right":d+=l.cellWidth;break;case"down":c+=l.cellHeight}if(c<0||c>r||d<0&&c<=0||d>a&&c>=r)return void i.change((e=>{e.setSelection(e.createRangeOn(n))}));d<0?(d=o?0:a,c--):d>a&&(d=o?a:0,c++);const u=s.find((e=>e.row==c&&e.column==d)).cell,h=["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=i.createPositionAt(u,h?0:"end");i.change((t=>{t.setSelection(e)}))}}}class dC extends jn{domEventType=["mousemove","mouseleave"];onDomEvent(e){this.fire(e.type,e)}}class uC extends fc{static get pluginName(){return"TableMouse"}static get isOfficialPlugin(){return!0}static get requires(){return[nC,av]}init(){this.editor.editing.view.addObserver(dC),this._enableShiftClickSelection(),this._enableMouseDragSelection()}_enableShiftClickSelection(){const e=this.editor,t=e.plugins.get(av);let o=!1;const i=e.plugins.get(nC);this.listenTo(e.editing.view.document,"mousedown",((n,s)=>{const r=e.model.document.selection;if(!this.isEnabled||!i.isEnabled)return;if(!s.domEvent.shiftKey)return;const a=i.getAnchorCell()||t.getTableCellsContainingSelection(r)[0];if(!a)return;const l=this._getModelTableCellFromDomEvent(s);l&&hC(a,l)&&(o=!0,i.setCellSelection(a,l),s.preventDefault())})),this.listenTo(e.editing.view.document,"mouseup",(()=>{o=!1})),this.listenTo(e.editing.view.document,"selectionChange",(e=>{o&&e.stop()}),{priority:"highest"})}_enableMouseDragSelection(){const e=this.editor;let t,o,i=!1,n=!1;const s=e.plugins.get(nC);this.listenTo(e.editing.view.document,"mousedown",((e,o)=>{this.isEnabled&&s.isEnabled&&(o.domEvent.shiftKey||o.domEvent.ctrlKey||o.domEvent.altKey||(t=this._getModelTableCellFromDomEvent(o)))})),this.listenTo(e.editing.view.document,"mousemove",((e,r)=>{if(!r.domEvent.buttons)return;if(!t)return;const a=this._getModelTableCellFromDomEvent(r);a&&hC(t,a)&&(o=a,i||o==t||(i=!0)),i&&(n=!0,s.setCellSelection(t,o),r.preventDefault())})),this.listenTo(e.editing.view.document,"mouseup",(()=>{i=!1,n=!1,t=null,o=null})),this.listenTo(e.editing.view.document,"selectionChange",(e=>{n&&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 hC(e,t){return e.parent.parent==t.parent.parent}class mC extends fc{static get requires(){return[Xv,oC,nC,uC,cC,sC,vp]}static get pluginName(){return"Table"}static get isOfficialPlugin(){return!0}}function gC(e){const t=pC(e);return t||fC(e)}function pC(e){const t=e.getSelectedElement();return t&&bC(t)?t:null}function fC(e){const t=e.getFirstPosition();if(!t)return null;let o=t.parent;for(;o;){if(o.is("element")&&bC(o))return o;o=o.parent}return null}function bC(e){return e.is("element")&&!!e.getCustomProperty("table")&&ip(e)}class wC extends Au{options;focusTracker;focusCycler;_focusables;dropdownView;inputView;keystrokes;_stillTyping;constructor(e,t){super(e),this.set("value",""),this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isEmpty",!0),this.options=t,this.focusTracker=new oo,this._focusables=new tu,this.dropdownView=this._createDropdownView(),this.inputView=this._createInputTextView(),this.keystrokes=new ro,this._stillTyping=!1,this.focusCycler=new qu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-input-color"]},children:[this.dropdownView,this.inputView]}),this.on("change:value",((e,t,o)=>this._setInputValue(o)))}render(){super.render(),[this.inputView,this.dropdownView.buttonView].forEach((e=>{this.focusTracker.add(e.element),this._focusables.add(e)})),this.keystrokes.listenTo(this.element)}focus(e){-1===e?this.focusCycler.focusLast():this.focusCycler.focusFirst()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createDropdownView(){const e=this.locale,t=e.t,o=this.bindTemplate,i=this._createColorSelector(e),n=Zh(e),s=new Au;return s.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))]}}]}),n.buttonView.extendTemplate({attributes:{class:"ck-input-color__button"}}),n.buttonView.children.add(s),n.buttonView.label=t("Color picker"),n.buttonView.tooltip=!0,n.panelPosition="rtl"===e.uiLanguageDirection?"se":"sw",n.panelView.children.add(i),n.bind("isEnabled").to(this,"isReadOnly",(e=>!e)),n.on("change:isOpen",((e,t,o)=>{o&&(i.updateSelectedColors(),i.showColorGridsFragment())})),n}_createInputTextView(){const e=this.locale,t=new Oh(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}_createColorSelector(e){const t=e.t,o=this.options.defaultColorValue||"",i=t(o?"Restore default":"Remove color"),n=new fm(e,{colors:this.options.colorDefinitions,columns:this.options.columns,removeButtonLabel:i,colorPickerLabel:t("Color picker"),colorPickerViewConfig:!1!==this.options.colorPickerConfig&&{...this.options.colorPickerConfig,hideInput:!0}});n.appendUI(),n.on("execute",((e,t)=>{"colorPickerSaveButton"!==t.source?(this.value=t.value||o,this.fire("input"),"colorPicker"!==t.source&&(this.dropdownView.isOpen=!1)):this.dropdownView.isOpen=!1}));let s=this.value;return n.on("colorPicker:cancel",(()=>{this.value=s,this.fire("input"),this.dropdownView.isOpen=!1})),n.colorGridsFragmentView.colorPickerButtonView.on("execute",(()=>{s=this.value})),n.bind("selectedColor").to(this,"value"),n}_setInputValue(e){if(!this._stillTyping){const t=yC(e),o=this.options.colorDefinitions.find((e=>t===yC(e.color)));this.inputView.value=o?o.label:e||""}}}function yC(e){return e.replace(/([(,])\s+/g,"$1").replace(/^\s+|\s+(?=[),\s]|$)/g,"").replace(/,|\s/g," ")}const _C=e=>""===e;function kC(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 vC(e){return e('The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".')}function CC(e){return e('The value is invalid. Try "10px" or "2em" or simply "2".')}function AC(e){return e=e.trim().toLowerCase(),_C(e)||gl(e)}function xC(e){return e=e.trim(),_C(e)||RC(e)||wl(e)||_l(e)}function EC(e){return e=e.trim(),_C(e)||RC(e)||wl(e)}function TC(e,t){const o=new eo,i=kC(e.t);for(const n in i){const s={type:"button",model:new Jm({_borderStyleValue:n,label:i[n],role:"menuitemradio",withText:!0})};"none"===n?s.model.bind("isOn").to(e,"borderStyle",(e=>"none"===t?!e:e===n)):s.model.bind("isOn").to(e,"borderStyle",(e=>e===n)),o.add(s)}return o}function PC(e){const{view:t,icons:o,toolbar:i,labels:n,propertyName:s,nameToValue:r,defaultValue:a}=e;for(const e in n){const l=new Lu(t.locale);l.set({role:"radio",isToggleable:!0,label:n[e],icon:o[e],tooltip:n[e]});const c=r?r(e):e;l.bind("isOn").to(t,s,(e=>{let t=e;return""===e&&a&&(t=a),c===t})),l.on("execute",(()=>{!a&&c&&t[s]===c?t[s]=void 0:t[s]=c})),i.items.add(l)}}const SC=[{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 IC(e){return(t,o,i)=>{const n=new wC(t.locale,{colorDefinitions:(s=e.colorConfig,s.map((e=>({color:e.model,label:e.label,options:{hasBorder:e.hasBorder}})))),columns:e.columns,defaultColorValue:e.defaultColorValue,colorPickerConfig:e.colorPickerConfig});var s;return n.inputView.set({id:o,ariaDescribedById:i}),n.bind("isReadOnly").to(t,"isEnabled",(e=>!e)),n.bind("hasError").to(t,"errorText",(e=>!!e)),n.on("input",(()=>{t.errorText=null})),t.bind("isEmpty","isFocused").to(n),n}}function RC(e){const t=parseFloat(e);return!Number.isNaN(t)&&e===String(t)}class OC extends Au{options;focusTracker;keystrokes;children;borderStyleDropdown;borderWidthInput;borderColorInput;backgroundInput;cellTypeDropdown;paddingInput;widthInput;heightInput;horizontalAlignmentToolbar;verticalAlignmentToolbar;saveButtonView;cancelButtonView;backButtonView;_focusables;_focusCycler;constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",padding:"",backgroundColor:"",width:"",height:"",horizontalAlignment:"",verticalAlignment:"",cellType:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:i,borderColorInput:n,borderRowLabel:s}=this._createBorderFields(),{backgroundRowLabel:r,backgroundInput:a}=this._createBackgroundFields(),{cellTypeRowLabel:l,cellTypeDropdown:c}=this._createCellTypeField(),{widthInput:d,operatorLabel:u,heightInput:h,dimensionsLabel:m}=this._createDimensionFields(),{horizontalAlignmentToolbar:g,verticalAlignmentToolbar:p,alignmentLabel:f}=this._createAlignmentFields();this.focusTracker=new oo,this.keystrokes=new ro,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=i,this.borderColorInput=n,this.backgroundInput=a,this.cellTypeDropdown=c,this.paddingInput=this._createPaddingField(),this.widthInput=d,this.heightInput=h,this.horizontalAlignmentToolbar=g,this.verticalAlignmentToolbar=p;const{saveButtonView:b,cancelButtonView:w}=this._createActionButtons();this.saveButtonView=b,this.cancelButtonView=w,this.backButtonView=this._createBackButton(),this._focusables=new tu,this._focusCycler=new qu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const y=new ju(e,{label:this.t("Cell properties")});y.children.add(this.backButtonView,0),this.children.add(y),this.children.add(new Km(e,{labelView:s,children:[s,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new Km(e,{children:[new Km(e,{labelView:l,children:[l,c],class:"ck-table-form__cell-type-row"}),new Km(e,{labelView:r,children:[r,a],class:"ck-table-form__background-row"})]})),this.children.add(new Km(e,{children:[new Km(e,{labelView:m,children:[m,d,u,h],class:"ck-table-form__dimensions-row"}),new Km(e,{children:[this.paddingInput],class:"ck-table-cell-properties-form__padding-row"})]})),this.children.add(new Km(e,{labelView:f,children:[f,g,p],class:"ck-table-cell-properties-form__alignment-row"})),this.children.add(new Km(e,{children:[this.cancelButtonView,this.saveButtonView],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(),Ou({view:this}),[this.borderColorInput,this.backgroundInput].forEach((e=>{this._focusCycler.chain(e.fieldView.focusCycler)})),[this.borderStyleDropdown,this.borderColorInput,this.borderWidthInput,this.cellTypeDropdown,this.backgroundInput,this.widthInput,this.heightInput,this.paddingInput,this.horizontalAlignmentToolbar,this.verticalAlignmentToolbar,this.cancelButtonView,this.saveButtonView,this.backButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableCellProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=IC({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color,colorPickerConfig:this.options.colorPickerConfig}),i=this.locale,n=this.t,s=n("Style"),r=new Du(i);r.text=n("Border");const a=kC(n),l=new Sh(i,rm);l.set({label:s,class:"ck-table-form__border-style"}),l.fieldView.buttonView.set({ariaLabel:s,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:s}),l.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>a[e||"none"])),l.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),l.bind("isEmpty").to(this,"borderStyle",(e=>!e)),Xh(l.fieldView,TC(this,t.style),{role:"menu",ariaLabel:s});const c=new Sh(i,nm);c.set({label:n("Width"),class:"ck-table-form__border-width"}),c.fieldView.bind("value").to(this,"borderWidth"),c.bind("isEnabled").to(this,"borderStyle",VC),c.fieldView.on("input",(()=>{this.borderWidth=c.fieldView.element.value}));const d=new Sh(i,o);return d.set({label:n("Color"),class:"ck-table-form__border-color"}),d.fieldView.bind("value").to(this,"borderColor"),d.bind("isEnabled").to(this,"borderStyle",VC),d.fieldView.on("input",(()=>{this.borderColor=d.fieldView.value})),this.on("change:borderStyle",((e,o,i,n)=>{VC(i)||(this.borderColor="",this.borderWidth=""),VC(n)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:r,borderStyleDropdown:l,borderColorInput:d,borderWidthInput:c}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new Du(e);o.text=t("Background");const i=IC({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableCellProperties.backgroundColor,colorPickerConfig:this.options.colorPickerConfig}),n=new Sh(e,i);return n.set({label:t("Color"),class:"ck-table-cell-properties-form__background"}),n.fieldView.bind("value").to(this,"backgroundColor"),n.fieldView.on("input",(()=>{this.backgroundColor=n.fieldView.value})),{backgroundRowLabel:o,backgroundInput:n}}_createCellTypeField(){const e=this.locale,t=this.t,o=new Du(e);o.text=t("Cell type");const i=this._cellTypeLabels,n=new Sh(e,rm);return n.set({label:t("Cell type"),class:"ck-table-cell-properties-form__cell-type"}),n.fieldView.buttonView.set({ariaLabel:t("Cell type"),ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:t("Cell type")}),n.fieldView.buttonView.bind("label").to(this,"cellType",(e=>i[e||"data"])),n.fieldView.on("execute",(e=>{this.cellType=e.source._cellTypeValue})),n.bind("isEmpty").to(this,"cellType",(e=>!e)),Xh(n.fieldView,this._getCellTypeDefinitions(),{role:"menu",ariaLabel:t("Cell type")}),{cellTypeRowLabel:o,cellTypeDropdown:n}}_createDimensionFields(){const e=this.locale,t=this.t,o=new Du(e);o.text=t("Dimensions");const i=new Sh(e,nm);i.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),i.fieldView.bind("value").to(this,"width"),i.fieldView.on("input",(()=>{this.width=i.fieldView.element.value}));const n=new Au(e);n.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const s=new Sh(e,nm);return s.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),s.fieldView.bind("value").to(this,"height"),s.fieldView.on("input",(()=>{this.height=s.fieldView.element.value})),{dimensionsLabel:o,widthInput:i,operatorLabel:n,heightInput:s}}_createPaddingField(){const e=this.locale,t=this.t,o=new Sh(e,nm);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 Du(e),i={left:jc,center:'',right:'',justify:'',top:'',middle:'',bottom:''};o.text=t("Table cell text alignment");const n=new Wh(e),s="rtl"===e.contentLanguageDirection;n.set({isCompact:!0,role:"radiogroup",ariaLabel:t("Horizontal text alignment toolbar"),class:"ck-table-cell-properties-form__horizontal-alignment-toolbar"}),PC({view:this,icons:i,toolbar:n,labels:this._horizontalAlignmentLabels,propertyName:"horizontalAlignment",nameToValue:e=>{if(s){if("left"===e)return"right";if("right"===e)return"left"}return e},defaultValue:this.options.defaultTableCellProperties.horizontalAlignment});const r=new Wh(e);return r.set({isCompact:!0,role:"radiogroup",ariaLabel:t("Vertical text alignment toolbar"),class:"ck-table-cell-properties-form__vertical-alignment-toolbar"}),PC({view:this,icons:i,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 Lu(e),i=new Lu(e),n=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.paddingInput];return o.set({label:t("Save"),class:"ck-button-action",type:"submit",withText:!0}),o.bind("isEnabled").toMany(n,"errorText",((...e)=>e.every((e=>!e)))),i.set({label:t("Cancel"),withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:o,cancelButtonView:i}}_createBackButton(){const e=this.locale.t,t=new Lu(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:ed,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_getCellTypeDefinitions(){const e=new eo,t=this._cellTypeLabels,o=["data","header"];this.options.showScopedHeaderOptions&&o.push("header-column","header-row");for(const i of o){const o={type:"button",model:new Jm({_cellTypeValue:i,label:t[i],role:"menuitemradio",withText:!0})};o.model.bind("isOn").to(this,"cellType",(e=>e===i)),e.add(o)}return e}get _horizontalAlignmentLabels(){const e=this.locale,t=this.t,o=t("Align cell text to the left"),i=t("Align cell text to the center"),n=t("Align cell text to the right"),s=t("Justify cell text");return"rtl"===e.uiLanguageDirection?{right:n,center:i,left:o,justify:s}:{left:o,center:i,right:n,justify:s}}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")}}get _cellTypeLabels(){const e=this.t;return{data:e("Data cell"),header:e("Header cell"),"header-column":e("Column header"),"header-row":e("Row header")}}}function VC(e){return"none"!==e}const DC=(()=>[dh.defaultPositions.northArrowSouth,dh.defaultPositions.northArrowSouthWest,dh.defaultPositions.northArrowSouthEast,dh.defaultPositions.southArrowNorth,dh.defaultPositions.southArrowNorthWest,dh.defaultPositions.southArrowNorthEast,dh.defaultPositions.viewportStickyNorth])();function FC(e,t){const o=e.plugins.get("ContextualBalloon"),i=e.editing.view.document.selection;let n;"cell"===t?fC(i)&&(n=NC(e)):gC(i)&&(n=MC(e)),n&&o.updatePosition(n)}function MC(e){const t=qk(e.model.document.selection),o=e.editing.mapper.toViewElement(t);return{target:e.editing.view.domConverter.mapViewToDom(o),positions:DC}}function NC(e){const t=e.editing.mapper,o=e.editing.view.domConverter,i=e.model.document.selection;if(i.rangeCount>1)return{target:()=>function(e,t){const o=t.editing.mapper,i=t.editing.view.domConverter,n=Array.from(e).map((e=>{const t=BC(e.start),n=o.toViewElement(t);return new ut(i.mapViewToDom(n))}));return ut.getBoundingRect(n)}(i.getRanges(),e),positions:DC};const n=BC(i.getFirstPosition()),s=t.toViewElement(n);return{target:o.mapViewToDom(s),positions:DC}}function BC(e){return e.nodeAfter&&e.nodeAfter.is("element","tableCell")?e.nodeAfter:e.findAncestor("tableCell")}const LC={borderStyle:"tableCellBorderStyle",borderColor:"tableCellBorderColor",borderWidth:"tableCellBorderWidth",height:"tableCellHeight",width:"tableCellWidth",padding:"tableCellPadding",backgroundColor:"tableCellBackgroundColor",horizontalAlignment:"tableCellHorizontalAlignment",verticalAlignment:"tableCellVerticalAlignment",cellType:"tableCellType"};class zC extends fc{_defaultContentTableCellProperties;_defaultLayoutTableCellProperties;_balloon;view;_viewWithContentTableDefaults;_viewWithLayoutTableDefaults;_undoStepBatch;_isReady;static get requires(){return[Qm]}static get pluginName(){return"TableCellPropertiesUI"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define("table.tableCellProperties",{borderColors:SC,backgroundColors:SC})}init(){const e=this.editor,t=e.t;this._defaultContentTableCellProperties=bv(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection}),this._defaultLayoutTableCellProperties=pv(void 0,{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection}),this._balloon=e.plugins.get(Qm),this.view=null,this._isReady=!1,e.ui.componentFactory.add("tableCellProperties",(o=>{const i=new Lu(o);i.set({label:t("Cell properties"),icon:'',tooltip:!0}),this.listenTo(i,"execute",(()=>this._showView()));const n=Object.values(LC).map((t=>e.commands.get(t))).filter((e=>!!e));return i.bind("isEnabled").toMany(n,"isEnabled",((...e)=>e.some((e=>e)))),i}))}destroy(){super.destroy(),this.view&&this.view.destroy()}_createPropertiesView(e){const t=this.editor,o=t.config.get("table.tableCellProperties"),i=!!t.config.get("table.tableCellProperties.scopedHeaders"),n=Ch(o.borderColors),s=vh(t.locale,n),r=Ch(o.backgroundColors),a=vh(t.locale,r),l=!1!==o.colorPicker,c=new OC(t.locale,{borderColors:s,backgroundColors:a,defaultTableCellProperties:e,colorPickerConfig:!!l&&(o.colorPicker||{}),showScopedHeaderOptions:i}),d=t.t;c.render(),this.listenTo(c,"submit",(()=>{this._hideView()})),this.listenTo(c,"cancel",(()=>{this._undoStepBatch.operations.length&&t.execute("undo",this._undoStepBatch),this._hideView()})),c.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),Su({emitter:c,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const u=vC(d),h=CC(d);c.on("change:borderStyle",this._getPropertyChangeCallback("tableCellBorderStyle")),c.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:c.borderColorInput,commandName:"tableCellBorderColor",errorText:u,validator:AC})),c.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:c.borderWidthInput,commandName:"tableCellBorderWidth",errorText:h,validator:EC})),c.on("change:padding",this._getValidatedPropertyChangeCallback({viewField:c.paddingInput,commandName:"tableCellPadding",errorText:h,validator:xC})),c.on("change:width",this._getValidatedPropertyChangeCallback({viewField:c.widthInput,commandName:"tableCellWidth",errorText:h,validator:xC})),c.on("change:height",this._getValidatedPropertyChangeCallback({viewField:c.heightInput,commandName:"tableCellHeight",errorText:h,validator:xC})),c.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:c.backgroundInput,commandName:"tableCellBackgroundColor",errorText:u,validator:AC})),c.on("change:horizontalAlignment",this._getPropertyChangeCallback("tableCellHorizontalAlignment")),c.on("change:verticalAlignment",this._getPropertyChangeCallback("tableCellVerticalAlignment"));const m=t.commands.get("tableCellType");return m&&(c.cellTypeDropdown.bind("isEnabled").to(m,"isEnabled"),c.on("change:cellType",this._getPropertyChangeCallback("tableCellType"))),c}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableCellBorderStyle");Object.entries(LC).flatMap((([t,o])=>{const i=e.get(o);if(!i)return[];const n=t;let s;s="cellType"===n?"":this.view===this._viewWithContentTableDefaults?this._defaultContentTableCellProperties[n]||"":this._defaultLayoutTableCellProperties[n]||"";return[[t,i.value||s]]})).forEach((([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)})),this._isReady=!0}_showView(){const e=this.editor,t=gC(e.editing.view.document.selection),o=t&&e.editing.mapper.toModelElement(t),i=!o||"layout"!==o.getAttribute("tableType");i&&!this._viewWithContentTableDefaults?this._viewWithContentTableDefaults=this._createPropertiesView(this._defaultContentTableCellProperties):i||this._viewWithLayoutTableDefaults||(this._viewWithLayoutTableDefaults=this._createPropertiesView(this._defaultLayoutTableCellProperties)),this.view=i?this._viewWithContentTableDefaults:this._viewWithLayoutTableDefaults,this.listenTo(e.ui,"update",(()=>{this._updateView()})),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:NC(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){const e=this.editor;this.stopListening(e.ui,"update"),this._isReady=!1,this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}_updateView(){const e=this.editor;fC(e.editing.view.document.selection)?this._isViewVisible&&FC(e,"cell"):this._hideView()}get _isViewVisible(){return!!this.view&&this._balloon.visibleView===this.view}get _isViewInBalloon(){return!!this.view&&this._balloon.hasView(this.view)}_getPropertyChangeCallback(e){return(t,o,i)=>{this._isReady&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:i,errorText:n}=e,s=zo((()=>{o.errorText=n}),500);return(e,n,r)=>{s.cancel(),this._isReady&&(i(r)?(this.editor.execute(t,{value:r,batch:this._undoStepBatch}),o.errorText=null):s())}}}class jC extends wc{attributeName;_defaultValue;_defaultContentTableValue;_defaultLayoutTableValue;constructor(e,t,o){switch(super(e),this.attributeName=t,this._defaultContentTableValue=o,t){case"tableCellType":this._defaultLayoutTableValue="data";break;case"tableCellBorderStyle":this._defaultLayoutTableValue="none";break;case"tableCellHorizontalAlignment":this._defaultLayoutTableValue="left";break;case"tableCellVerticalAlignment":this._defaultLayoutTableValue="middle";break;default:this._defaultLayoutTableValue=void 0}}refresh(){const e=this.editor.model.document.selection,t=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e),o=qk(e);this._defaultValue=o&&"layout"===o.getAttribute("tableType")?this._defaultLayoutTableValue:this._defaultContentTableValue,this.isEnabled=!!t.length,this.value=this._getSingleValue(t)}execute(e={}){const{value:t,batch:o}=e,i=this.editor.model,n=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(i.document.selection),s=this._getValueToSet(t);i.enqueueChange(o,(e=>{s?n.forEach((t=>e.setAttribute(this.attributeName,s,t))):n.forEach((t=>e.removeAttribute(this.attributeName,t))),this.fire("afterExecute",{writer:e,tableCells:n,valueToSet:s})}))}_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 qC extends jC{constructor(e,t){super(e,"tableCellWidth",t)}_getValueToSet(e){if((e=gv(e,"px"))!==this._defaultValue)return e}}class $C extends fc{static get pluginName(){return"TableCellWidthEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[Xv]}init(){const e=this.editor,t=bv(e.config.get("table.tableCellProperties.defaultProperties"));jk(e.model.schema,e.conversion,{modelAttribute:"tableCellWidth",styleName:"width",attributeName:"width",attributeType:"length",defaultValue:t.width}),e.commands.add("tableCellWidth",new qC(e,t.width))}}class HC extends jC{constructor(e,t){super(e,"tableCellPadding",t)}_getAttribute(e){if(!e)return;const t=mv(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){const t=gv(e,"px");if(t!==this._defaultValue)return t}}class WC extends jC{constructor(e,t){super(e,"tableCellHeight",t)}_getValueToSet(e){const t=gv(e,"px");if(t!==this._defaultValue)return t}}class UC extends jC{constructor(e,t){super(e,"tableCellBackgroundColor",t)}}class KC extends jC{constructor(e,t){super(e,"tableCellVerticalAlignment",t)}}class GC extends jC{constructor(e,t){super(e,"tableCellHorizontalAlignment",t)}}class JC extends jC{constructor(e,t){super(e,"tableCellBorderStyle",t)}_getAttribute(e){if(!e)return;const t=mv(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class ZC extends jC{constructor(e,t){super(e,"tableCellBorderColor",t)}_getAttribute(e){if(!e)return;const t=mv(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class QC extends jC{constructor(e,t){super(e,"tableCellBorderWidth",t)}_getAttribute(e){if(!e)return;const t=mv(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){const t=gv(e,"px");if(t!==this._defaultValue)return t}}class YC extends jC{constructor(e){super(e,"tableCellType","data"),this.on("afterExecute",((e,t)=>{const{writer:o,tableCells:i}=t,n=this.editor.plugins.get(av),s=function(e){const t=new Map;for(const o of e){const e=o.findAncestor("table");t.has(e)||t.set(e,[]),t.get(e).push(o)}return t}(i);XC(n,o,s.keys())}))}refresh(){super.refresh();const e=qk(this.editor.model.document.selection);this.isEnabled&&e&&"layout"===e.getAttribute("tableType")&&(this.isEnabled=!1)}_getAttribute(e){return e?.getAttribute(this.attributeName)||"data"}}function XC(e,t,o){let i=!1;for(const n of o){let o=n.getAttribute("headingRows")||0,s=n.getAttribute("headingColumns")||0;const r=n.getAttribute("footerRows")||0,a=e.getRows(n)-r,l=s>o;if(l){const r=eA(e,n,"column",s,o);r!==s&&(e.setHeadingColumnsCount(t,n,r,{updateCellType:!1}),s=r,i=!0)}let c=eA(e,n,"row",o,s);if(r>0&&(c=Math.min(c,a)),c!==o&&(e.setHeadingRowsCount(t,n,c,{updateCellType:!1}),o=c,i=!0),!l){const r=eA(e,n,"column",s,o);r!==s&&(e.setHeadingColumnsCount(t,n,r,{updateCellType:!1}),i=!0)}}return i}function eA(e,t,o,i,n){const s="row"===o?e.getRows(t):e.getColumns(t);let r=i;for(let e=0;e=n&&(a=!0)}if(!s)return Math.min(r,e);a&&(r=Math.max(r,e+1))}return Math.min(r,s)}const tA=/^(top|middle|bottom)$/,oA=/^(left|center|right|justify)$/;class iA extends fc{static get pluginName(){return"TableCellPropertiesEditing"}static get licenseFeatureCode(){return"TCP"}static get isOfficialPlugin(){return!0}static get isPremiumPlugin(){return!0}static get requires(){return[Xv,$C]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableCellProperties.defaultProperties",{});const i=bv(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection});e.data.addStyleProcessorRules(Hl),function(e,t){const{conversion:o}=e,{schema:i}=e.model,n={width:"tableCellBorderWidth",color:"tableCellBorderColor",style:"tableCellBorderStyle"};i.extend("tableCell",{allowAttributes:Object.values(n)});for(const e of Object.values(n))i.setAttributeProperties(e,{isFormatting:!0});vk(e,"td",n,t),vk(e,"th",n,t),Ck(o,{modelElement:"tableCell",modelAttribute:n.style,styleName:"border-style"}),Ck(o,{modelElement:"tableCell",modelAttribute:n.color,styleName:"border-color"}),Ck(o,{modelElement:"tableCell",modelAttribute:n.width,styleName:"border-width"})}(e,{color:i.borderColor,style:i.borderStyle,width:i.borderWidth}),e.commands.add("tableCellBorderStyle",new JC(e,i.borderStyle)),e.commands.add("tableCellBorderColor",new ZC(e,i.borderColor)),e.commands.add("tableCellBorderWidth",new QC(e,i.borderWidth)),jk(t,o,{modelAttribute:"tableCellHeight",styleName:"height",attributeName:"height",attributeType:"length",defaultValue:i.height}),e.commands.add("tableCellHeight",new WC(e,i.height)),e.data.addStyleProcessorRules(tc),jk(t,o,{modelAttribute:"tableCellPadding",styleName:"padding",reduceBoxSides:!0,defaultValue:i.padding}),function(e,t){Tk(e,"td",t),Tk(e,"th",t)}(e,i.padding),e.commands.add("tableCellPadding",new HC(e,i.padding)),e.data.addStyleProcessorRules(Bl),jk(t,o,{modelAttribute:"tableCellBackgroundColor",styleName:"background-color",attributeName:"bgcolor",attributeType:"color",defaultValue:i.backgroundColor}),e.commands.add("tableCellBackgroundColor",new UC(e,i.backgroundColor)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellHorizontalAlignment"]}),e.setAttributeProperties("tableCellHorizontalAlignment",{isFormatting:!0}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellHorizontalAlignment"},view:e=>({key:"style",value:{"text-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"text-align":oA}},model:{key:"tableCellHorizontalAlignment",value:(e,t,i)=>{const n=xk(o,"left",i),s=e.getStyle("text-align");if(s!==n)return s;t.consumable.consume(e,{styles:"text-align"})}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{align:oA}},model:{key:"tableCellHorizontalAlignment",value:(e,t,i)=>{const n=xk(o,"left",i),s=e.getAttribute("align");if(s!==n)return s;t.consumable.consume(e,{attributes:"align"})}}})}(t,o,i.horizontalAlignment),e.commands.add("tableCellHorizontalAlignment",new GC(e,i.horizontalAlignment)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellVerticalAlignment"]}),e.setAttributeProperties("tableCellVerticalAlignment",{isFormatting:!0}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellVerticalAlignment"},view:e=>({key:"style",value:{"vertical-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"vertical-align":tA}},model:{key:"tableCellVerticalAlignment",value:(e,t,i)=>{const n=xk(o,"middle",i),s=e.getStyle("vertical-align");if(s!==n)return s;t.consumable.consume(e,{styles:"vertical-align"})}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{valign:tA}},model:{key:"tableCellVerticalAlignment",value:(e,t,i)=>{const n=xk(o,"middle",i),s=e.getAttribute("valign");if(s!==n)return s;t.consumable.consume(e,{attributes:"valign"})}}})}(t,o,i.verticalAlignment),e.commands.add("tableCellVerticalAlignment",new KC(e,i.verticalAlignment)),function(e){const{model:t,conversion:o,editing:i,config:n}=e,{schema:s}=t;n.define("table.tableCellProperties.scopedHeaders",!0);const r=!!n.get("table.tableCellProperties.scopedHeaders"),a=e.plugins.get(av);s.extend("tableCell",{allowAttributes:["tableCellType"]}),s.setAttributeProperties("tableCellType",{isFormatting:!0}),s.addAttributeCheck((e=>{const t=Array.from(e).reverse().find((e=>"table"===e.name));if("layout"===t?.getAttribute("tableType"))return!1}),"tableCellType"),o.for("upcast").add((e=>{e.on("element:th",((e,t,o)=>{const{writer:i}=o,{modelRange:n}=t,s=n?.start.nodeAfter;s?.is("element","tableCell")&&!s.hasAttribute("tableCellType")&&i.setAttribute("tableCellType","header",s)})),e.on("element:table",((e,t,o)=>{const{writer:i}=o,{modelRange:n}=t,s=n?.start.nodeAfter;if(s?.is("element","table")&&"layout"===s.getAttribute("tableType"))for(const{cell:e}of new Fk(s)){if(Nk(e.getAttribute("tableCellType"))){i.setAttribute("tableType","content",s);break}}}),{priority:ge.low-1})})),r&&(o.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellType"},view:e=>{switch(e){case"header-row":return{key:"scope",value:"row"};case"header-column":return{key:"scope",value:"col"}}}}),o.for("upcast").add((e=>{e.on("element:th",((e,t,o)=>{const{writer:i,consumable:n}=o,{viewItem:s,modelRange:r}=t,a=r.start.nodeAfter,l=a?.getAttribute("tableCellType");if("header"===l&&n.consume(s,{attributes:["scope"]})){switch(s.getAttribute("scope")){case"row":i.setAttribute("tableCellType","header-row",a);break;case"col":i.setAttribute("tableCellType","header-column",a)}}}))})));t.document.registerPostFixer((e=>{const o=t.document.differ.getChanges(),i=new Set;for(const e of o){if("attribute"===e.type&&("headingRows"===e.attributeKey||"headingColumns"===e.attributeKey)){const t=e.range.start.nodeAfter;t?.is("element","table")&&"$graveyard"!==t.root.rootName&&i.add(t)}if("attribute"===e.type&&"tableCellType"===e.attributeKey){const t=e.range.start.nodeAfter;if(t?.is("element","tableCell")&&"$graveyard"!==t.root.rootName){const e=t.findAncestor("table");e&&i.add(e)}}if("insert"===e.type&&e.position.nodeAfter)for(const{item:o}of t.createRangeOn(e.position.nodeAfter))if(o.is("element","tableCell")&&o.getAttribute("tableCellType")&&"$graveyard"!==o.root.rootName){const e=o.findAncestor("table");e&&i.add(e)}}return XC(a,e,i)})),t.document.on("change:data",(()=>{const{differ:e}=t.document,o=new Set;for(const t of e.getChanges())if("attribute"===t.type&&"tableCellType"===t.attributeKey){const e=t.range.start.nodeAfter;e.is("element","tableCell")&&o.add(e)}for(const e of o){const t=i.mapper.toViewElement(e),o=Nk(e.getAttribute("tableCellType"))?"th":"td";t?.name!==o&&i.reconvertItem(e)}}))}(e),e.commands.add("tableCellType",new YC(e))}}class nA extends wc{attributeName;_defaultValue;_defaultContentTableValue;_defaultLayoutTableValue;constructor(e,t,o){super(e),this.attributeName=t,this._defaultContentTableValue=o,this._defaultLayoutTableValue="tableBorderStyle"===t?"none":void 0}refresh(){const e=qk(this.editor.model.document.selection);this._defaultValue=e&&"layout"===e.getAttribute("tableType")?this._defaultLayoutTableValue:this._defaultContentTableValue,this.isEnabled=!!e,this.value=this._getValue(e)}execute(e={}){const t=this.editor.model,o=t.document.selection,{value:i,batch:n}=e,s=qk(o),r=this._getValueToSet(i);t.enqueueChange(n,(e=>{r?e.setAttribute(this.attributeName,r,s):e.removeAttribute(this.attributeName,s)}))}_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 sA extends nA{constructor(e,t){super(e,"tableBackgroundColor",t)}}class rA extends nA{constructor(e,t){super(e,"tableBorderColor",t)}_getValue(e){if(!e)return;const t=mv(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class aA extends nA{constructor(e,t){super(e,"tableBorderStyle",t)}_getValue(e){if(!e)return;const t=mv(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class lA extends nA{constructor(e,t){super(e,"tableBorderWidth",t)}_getValue(e){if(!e)return;const t=mv(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){const t=gv(e,"px");if(t!==this._defaultValue)return t}}class cA extends nA{constructor(e,t){super(e,"tableWidth",t)}_getValueToSet(e){if((e=gv(e,"px"))!==this._defaultValue)return e}}class dA extends nA{constructor(e,t){super(e,"tableHeight",t)}_getValueToSet(e){if((e=gv(e,"px"))!==this._defaultValue)return e}}class uA extends nA{constructor(e,t){super(e,"tableAlignment",t)}}class hA extends fc{static get pluginName(){return"TablePropertiesEditing"}static get licenseFeatureCode(){return"TCP"}static get isOfficialPlugin(){return!0}static get isPremiumPlugin(){return!0}static get requires(){return[Xv]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableProperties.defaultProperties",{});const i=fv(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0}),n=!0===e.config.get("table.tableProperties.alignment.useInlineStyles");e.data.addStyleProcessorRules(ec),e.data.addStyleProcessorRules(Hl),function(e,t){const{conversion:o}=e,{schema:i}=e.model,n={width:"tableBorderWidth",color:"tableBorderColor",style:"tableBorderStyle"};i.extend("table",{allowAttributes:Object.values(n)});for(const e of Object.values(n))i.setAttributeProperties(e,{isFormatting:!0});vk(e,"table",n,t),Ak(o,{modelAttribute:n.color,styleName:"border-color"}),Ak(o,{modelAttribute:n.style,styleName:"border-style"}),Ak(o,{modelAttribute:n.width,styleName:"border-width"})}(e,{color:i.borderColor,style:i.borderStyle,width:i.borderWidth}),e.commands.add("tableBorderColor",new rA(e,i.borderColor)),e.commands.add("tableBorderStyle",new aA(e,i.borderStyle)),e.commands.add("tableBorderWidth",new lA(e,i.borderWidth)),function(e,t,o,i){e.extend("table",{allowAttributes:["tableAlignment"]}),e.setAttributeProperties("tableAlignment",{isFormatting:!0}),t.for("downcast").attributeToAttribute({model:{name:"table",key:"tableAlignment",values:["left","center","right","blockLeft","blockRight"]},view:{left:i?{key:"style",value:{float:"left","margin-right":"var(--ck-content-table-style-spacing, 1.5em)"}}:{key:"class",value:Pk.className},right:i?{key:"style",value:{float:"right","margin-left":"var(--ck-content-table-style-spacing, 1.5em)"}}:{key:"class",value:Ik.className},center:i?{key:"style",value:{"margin-left":"auto","margin-right":"auto"}}:{key:"class",value:Sk.className},blockLeft:i?{key:"style",value:{"margin-left":"0","margin-right":"auto"}}:{key:"class",value:Rk.className},blockRight:i?{key:"style",value:{"margin-left":"auto","margin-right":"0"}}:{key:"class",value:Ok.className}},converterPriority:"high"}),Vk.forEach((e=>{t.for("upcast").attributeToAttribute({view:e.view,model:{key:"tableAlignment",value:(t,i,n)=>{if(function(e){return"figure"==e.name&&!e.hasClass("table")}(t))return;const s=xk(o,"",n),r=e.getAlign(t),a=e.getConsumables(t);return i.consumable.consume(t,a),r!==s?r:void 0}}})})),t.for("upcast").add(function(e){return t=>{t.on("element:div",((t,o,i)=>{if(!i.consumable.test(o.viewItem,{name:!0,attributes:"align"}))return;const n=ov(o.viewItem);if(!n||!i.consumable.test(n,{name:!0}))return;i.consumable.consume(o.viewItem,{name:!0,attributes:"align"});const s=i.convertItem(n,o.modelCursor),r=to(s.modelRange.getItems());if(!r||!r.is("element","table"))return i.consumable.revert(o.viewItem,{name:!0,attributes:"align"}),void(s.modelRange&&!s.modelRange.isCollapsed&&(o.modelRange=s.modelRange,o.modelCursor=s.modelCursor));const a=function(e,t,o){if(e)switch(e){case"right":return"right"===t?"right":"left"===t?"left":"blockRight";case"center":return"center";case"left":return void 0===t?"blockLeft":"left";default:return o}return}(o.viewItem.getAttribute("align"),n.getAttribute("align"),xk(e,"",o));a&&i.writer.setAttribute("tableAlignment",a,r),i.convertChildren(o.viewItem,i.writer.createPositionAt(r,"end")),i.updateConversionResult(r,o)}))}}(o))}(t,o,i.alignment,n),e.commands.add("tableAlignment",new uA(e,i.alignment)),pA(t,o,{modelAttribute:"tableWidth",styleName:"width",attributeName:"width",attributeType:"length",defaultValue:i.width}),e.commands.add("tableWidth",new cA(e,i.width)),pA(t,o,{modelAttribute:"tableHeight",styleName:"height",attributeName:"height",attributeType:"length",defaultValue:i.height}),e.commands.add("tableHeight",new dA(e,i.height)),e.data.addStyleProcessorRules(Bl),function(e,t,o){const{modelAttribute:i}=o;e.extend("table",{allowAttributes:[i]}),e.setAttributeProperties(i,{isFormatting:!0}),kk(t,{viewElement:"table",...o}),Ak(t,o)}(t,o,{modelAttribute:"tableBackgroundColor",styleName:"background-color",attributeName:"bgcolor",attributeType:"color",defaultValue:i.backgroundColor}),e.commands.add("tableBackgroundColor",new sA(e,i.backgroundColor)),Tk(e,"table");const s=e.editing.view.document;this.listenTo(s,"clipboardOutput",((t,o)=>{e.editing.view.change((e=>{for(const{item:t}of e.createRangeIn(o.content))mA(t,e);o.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(o.content))}))}),{priority:"lowest"})}}function mA(e,t){if(!e.is("element","table"))return;const o=e.getAttribute("align"),i=e.getStyle("float"),n=e.getStyle("margin-left"),s=e.getStyle("margin-right");o&&"center"===o||i&&"right"===i&&o&&"right"===o?gA(t,o,e):void 0===i&&"auto"===n&&"0"===s&&gA(t,"right",e)}function gA(e,t,o){const i=e.createPositionBefore(o),n=e.createContainerElement("div",{align:t},o);e.insert(i,n)}function pA(e,t,o){const{modelAttribute:i}=o;e.extend("table",{allowAttributes:[i]}),e.setAttributeProperties(i,{isFormatting:!0}),kk(t,{viewElement:/^(table|figure)$/,shouldUpcast:e=>!("table"==e.name&&"figure"==e.parent.name||"figure"==e.name&&!e.hasClass("table")),...o}),Ck(t,{modelElement:"table",...o})}class fA extends Au{options;focusTracker;keystrokes;children;borderStyleDropdown;borderWidthInput;borderColorInput;backgroundInput;widthInput;heightInput;alignmentToolbar;saveButtonView;cancelButtonView;backButtonView;_focusables;_focusCycler;constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:"",alignment:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:i,borderColorInput:n,borderRowLabel:s}=this._createBorderFields(),{backgroundRowLabel:r,backgroundInput:a}=this._createBackgroundFields(),{widthInput:l,operatorLabel:c,heightInput:d,dimensionsLabel:u}=this._createDimensionFields(),{alignmentToolbar:h,alignmentLabel:m}=this._createAlignmentFields();this.focusTracker=new oo,this.keystrokes=new ro,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=i,this.borderColorInput=n,this.backgroundInput=a,this.widthInput=l,this.heightInput=d,this.alignmentToolbar=h;const{saveButtonView:g,cancelButtonView:p}=this._createActionButtons();this.saveButtonView=g,this.cancelButtonView=p,this.backButtonView=this._createBackButton(),this._focusables=new tu,this._focusCycler=new qu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const f=new ju(e,{label:this.t("Table properties")});f.children.add(this.backButtonView,0),this.children.add(f),this.children.add(new Km(e,{labelView:s,children:[s,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new Km(e,{children:[new Km(e,{labelView:u,children:[u,l,c,d],class:"ck-table-form__dimensions-row"}),new Km(e,{labelView:r,children:[r,a],class:"ck-table-form__background-row"})]})),this.children.add(new Km(e,{labelView:m,children:[m,h],class:"ck-table-properties-form__alignment-row"})),this.children.add(new Km(e,{children:[this.cancelButtonView,this.saveButtonView],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(),Ou({view:this}),[this.borderColorInput,this.backgroundInput].forEach((e=>{this._focusCycler.chain(e.fieldView.focusCycler)})),[this.borderStyleDropdown,this.borderWidthInput,this.borderColorInput,this.widthInput,this.heightInput,this.backgroundInput,this.alignmentToolbar,this.cancelButtonView,this.saveButtonView,this.backButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=IC({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color,colorPickerConfig:this.options.colorPickerConfig}),i=this.locale,n=this.t,s=n("Style"),r=new Du(i);r.text=n("Border");const a=kC(n),l=new Sh(i,rm);l.set({label:s,class:"ck-table-form__border-style"}),l.fieldView.buttonView.set({ariaLabel:s,ariaLabelledBy:void 0,isOn:!1,withText:!0,tooltip:s}),l.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>a[e||"none"])),l.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),l.bind("isEmpty").to(this,"borderStyle",(e=>!e)),Xh(l.fieldView,TC(this,t.style),{role:"menu",ariaLabel:s});const c=new Sh(i,nm);c.set({label:n("Width"),class:"ck-table-form__border-width"}),c.fieldView.bind("value").to(this,"borderWidth"),c.bind("isEnabled").to(this,"borderStyle",bA),c.fieldView.on("input",(()=>{this.borderWidth=c.fieldView.element.value}));const d=new Sh(i,o);return d.set({label:n("Color"),class:"ck-table-form__border-color"}),d.fieldView.bind("value").to(this,"borderColor"),d.bind("isEnabled").to(this,"borderStyle",bA),d.fieldView.on("input",(()=>{this.borderColor=d.fieldView.value})),this.on("change:borderStyle",((e,o,i,n)=>{bA(i)||(this.borderColor="",this.borderWidth=""),bA(n)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:r,borderStyleDropdown:l,borderColorInput:d,borderWidthInput:c}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new Du(e);o.text=t("Background");const i=IC({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableProperties.backgroundColor,colorPickerConfig:this.options.colorPickerConfig}),n=new Sh(e,i);return n.set({label:t("Color"),class:"ck-table-properties-form__background"}),n.fieldView.bind("value").to(this,"backgroundColor"),n.fieldView.on("input",(()=>{this.backgroundColor=n.fieldView.value})),{backgroundRowLabel:o,backgroundInput:n}}_createDimensionFields(){const e=this.locale,t=this.t,o=new Du(e);o.text=t("Dimensions");const i=new Sh(e,nm);i.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),i.fieldView.bind("value").to(this,"width"),i.fieldView.on("input",(()=>{this.width=i.fieldView.element.value}));const n=new Au(e);n.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const s=new Sh(e,nm);return s.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),s.fieldView.bind("value").to(this,"height"),s.fieldView.on("input",(()=>{this.height=s.fieldView.element.value})),{dimensionsLabel:o,widthInput:i,operatorLabel:n,heightInput:s}}_createAlignmentFields(){const e=this.locale,t=this.t,o=new Du(e);o.text=t("Table Alignment");const i=new Wh(e);return i.set({role:"radiogroup",isCompact:!0,ariaLabel:t("Table alignment toolbar")}),PC({view:this,icons:{left:Jc,center:Gc,right:Zc,blockLeft:Yc,blockRight:Xc},toolbar:i,labels:this._alignmentLabels,propertyName:"alignment",defaultValue:this.options.defaultTableProperties.alignment}),{alignmentLabel:o,alignmentToolbar:i}}_createActionButtons(){const e=this.locale,t=this.t,o=new Lu(e),i=new Lu(e),n=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.widthInput,this.heightInput];return o.set({label:t("Save"),class:"ck-button-action",type:"submit",withText:!0}),o.bind("isEnabled").toMany(n,"errorText",((...e)=>e.every((e=>!e)))),i.set({label:t("Cancel"),withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:o,cancelButtonView:i}}_createBackButton(){const e=this.locale.t,t=new Lu(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:ed,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}get _alignmentLabels(){const e=this.locale,t=this.t,o=t("Align table to the left with no text wrapping"),i=t("Align table to the right with no text wrapping"),n=t("Align table to the left with text wrapping"),s=t("Center table with no text wrapping"),r=t("Align table to the right with text wrapping");return"rtl"===e.uiLanguageDirection?{right:r,left:n,blockRight:i,center:s,blockLeft:o}:{blockLeft:o,center:s,blockRight:i,left:n,right:r}}}function bA(e){return"none"!==e}const wA={borderStyle:"tableBorderStyle",borderColor:"tableBorderColor",borderWidth:"tableBorderWidth",backgroundColor:"tableBackgroundColor",width:"tableWidth",height:"tableHeight",alignment:"tableAlignment"};class yA extends fc{_defaultContentTableProperties;_defaultLayoutTableProperties;_balloon;view=null;_viewWithContentTableDefaults=null;_viewWithLayoutTableDefaults=null;_undoStepBatch;_isReady;static get requires(){return[Qm]}static get pluginName(){return"TablePropertiesUI"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define("table.tableProperties",{borderColors:SC,backgroundColors:SC})}init(){const e=this.editor;this._defaultContentTableProperties=fv(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0}),this._defaultLayoutTableProperties=pv(),this._balloon=e.plugins.get(Qm),e.ui.componentFactory.add("tableProperties",(()=>this._createTablePropertiesButton()))}_createTablePropertiesButton(){const e=this.editor,t=e.t,o=new Lu(e.locale);o.set({label:t("Table properties"),icon:'',tooltip:!0}),this.listenTo(o,"execute",(()=>this._showView()));const i=Object.values(wA).map((t=>e.commands.get(t)));return o.bind("isEnabled").toMany(i,"isEnabled",((...e)=>e.some((e=>e)))),o}destroy(){super.destroy(),this.view&&this.view.destroy()}_createPropertiesView(e){const t=this.editor,o=t.config.get("table.tableProperties"),i=Ch(o.borderColors),n=vh(t.locale,i),s=Ch(o.backgroundColors),r=vh(t.locale,s),a=!1!==o.colorPicker,l=new fA(t.locale,{borderColors:n,backgroundColors:r,defaultTableProperties:e,colorPickerConfig:!!a&&(o.colorPicker||{})}),c=t.t;l.render(),this.listenTo(l,"submit",(()=>{this._hideView()})),this.listenTo(l,"cancel",(()=>{this._undoStepBatch.operations.length&&t.execute("undo",this._undoStepBatch),this._hideView()})),l.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),Su({emitter:l,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const d=vC(c),u=CC(c);return l.on("change:borderStyle",this._getPropertyChangeCallback("tableBorderStyle")),l.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:l.borderColorInput,commandName:"tableBorderColor",errorText:d,validator:AC})),l.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:l.borderWidthInput,commandName:"tableBorderWidth",errorText:u,validator:EC})),l.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:l.backgroundInput,commandName:"tableBackgroundColor",errorText:d,validator:AC})),l.on("change:width",this._getValidatedPropertyChangeCallback({viewField:l.widthInput,commandName:"tableWidth",errorText:u,validator:xC})),l.on("change:height",this._getValidatedPropertyChangeCallback({viewField:l.heightInput,commandName:"tableHeight",errorText:u,validator:xC})),l.on("change:alignment",this._getPropertyChangeCallback("tableAlignment")),l}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableBorderStyle");Object.entries(wA).map((([t,o])=>{const i=t,n=this.view===this._viewWithContentTableDefaults?this._defaultContentTableProperties[i]||"":this._defaultLayoutTableProperties[i]||"";return[i,e.get(o).value||n]})).forEach((([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)})),this._isReady=!0}_showView(){const e=this.editor,t=gC(e.editing.view.document.selection),o=t&&e.editing.mapper.toModelElement(t),i=!o||"layout"!==o.getAttribute("tableType");i&&!this._viewWithContentTableDefaults?this._viewWithContentTableDefaults=this._createPropertiesView(this._defaultContentTableProperties):i||this._viewWithLayoutTableDefaults||(this._viewWithLayoutTableDefaults=this._createPropertiesView(this._defaultLayoutTableProperties)),this.view=i?this._viewWithContentTableDefaults:this._viewWithLayoutTableDefaults,this.listenTo(e.ui,"update",(()=>{this._updateView()})),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:MC(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){const e=this.editor;this.stopListening(e.ui,"update"),this._isReady=!1,this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}_updateView(){const e=this.editor;gC(e.editing.view.document.selection)?this._isViewVisible&&FC(e,"table"):this._hideView()}get _isViewVisible(){return!!this.view&&this._balloon.visibleView===this.view}get _isViewInBalloon(){return!!this.view&&this._balloon.hasView(this.view)}_getPropertyChangeCallback(e){return(t,o,i)=>{this._isReady&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:i,errorText:n}=e,s=zo((()=>{o.errorText=n}),500);return(e,n,r)=>{s.cancel(),this._isReady&&(i(r)?(this.editor.execute(t,{value:r,batch:this._undoStepBatch}),o.errorText=null):s())}}}function _A(e){const t=parseFloat(e);return e.endsWith("pt")?kA(96*t/72):e.endsWith("pc")?kA(12*t*96/72):e.endsWith("in")?kA(96*t):e.endsWith("cm")?kA(96*t/2.54):e.endsWith("mm")?kA(t/10*96/2.54):e}function kA(e){return Math.round(e)+"px"}function vA(e,t,o){if(!e.childCount)return;const i=new rl(e.document),n=function(e,t){const o=t.createRangeIn(e),i=[],n=new Set;for(const e of o.getItems()){if(!e.is("element")||!e.name.match(/^(p|h\d+|li|div)$/))continue;let t=VA(e);if(void 0===t||0!=parseFloat(t)||Array.from(e.getClassNames()).find((e=>e.startsWith("MsoList")))||(t=void 0),e.hasStyle("mso-list")&&"none"!==e.getStyle("mso-list")||void 0!==t&&n.has(t)){const o=RA(e);i.push({element:e,id:o.id,order:o.order,indent:o.indent,marginLeft:t}),void 0!==t&&n.add(t)}else n.clear()}return i}(e,i);if(!n.length)return;const s={},r=[];let a=AA();for(const e of n)if(void 0!==e.indent){EA(e)||(xA(i,r,a),a=AA(),r.length=0);const n=`${e.id}:${e.indent}`,l=Math.min(e.indent-1,r.length);if(lr.length-1||r[l].listElement.name!=a.type){0==l&&"ol"==a.type&&void 0!==e.id&&s[n]&&(a.startIndex=s[n]);const t=IA(a,i,o);if(0==r.length){const o=e.element.parent,n=o.getChildIndex(e.element)+1;i.insertChild(n,t,o)}else{const e=r[l-1].listItemElements;i.appendChild(t,e[e.length-1])}r[l]={...e,listElement:t,listItemElements:[]},0==l&&void 0!==e.id&&(s[n]=a.startIndex||1)}}const c="li"==e.element.name?e.element:i.createElement("li");CA(i,r,a,e,c,l),i.appendChild(c,r[l].listElement),r[l].listItemElements.push(c),0==l&&void 0!==e.id&&s[n]++,e.element!=c&&i.appendChild(e.element,c),OA(e.element,i),i.removeStyle("text-indent",e.element),i.removeStyle("margin-left",e.element)}else{const t=r.find((t=>t.marginLeft==e.marginLeft));if(t){const o=t.listItemElements;i.appendChild(e.element,o[o.length-1]),i.removeStyle("margin-left",e.element)}else r.length=0}xA(i,r,a)}function CA(e,t,o,i,n,s){if(void 0===i.marginLeft)return void(0==s&&(o.canApplyMarginOnList=!1));const r=parseFloat(i.marginLeft);let a=0;if(t.length>1){const e=t[t.length-2].listItemElements;if(e.length>0){const t=e[e.length-1].getStyle("margin-left");void 0!==t&&(a+=parseFloat(t))}}a+=40*t.length;const l=r-a,c=0!==l?kA(l):void 0;c&&(e.setStyle("margin-left",c,n),0==s&&o.canApplyMarginOnList&&(void 0===o.marginLeft&&(o.marginLeft=c),c!==o.marginLeft&&(o.canApplyMarginOnList=!1),o.topLevelListItemElements.push(n)))}function AA(){return{marginLeft:void 0,canApplyMarginOnList:!0,topLevelListItemElements:[]}}function xA(e,t,o){if(o.canApplyMarginOnList&&o.marginLeft&&o.topLevelListItemElements.length>0){e.setStyle("margin-left",o.marginLeft,t[0].listElement);for(const t of o.topLevelListItemElements)e.removeStyle("margin-left",t)}}function EA(e){const t=e.element.previousSibling;if(!t){const t=e.element.parent;return TA(t)&&(!t.previousSibling||TA(t.previousSibling))}return TA(t)}function TA(e){return e.is("element","ol")||e.is("element","ul")}function PA(e,t){const o=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),i=/mso-level-number-format:([^;]{0,100});/gi,n=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,s=new RegExp(`@list\\s+l${e.id}:level\\d\\s*{[^{]*mso-level-text:"%\\d\\\\.`,"gi"),r=new RegExp(`@list l${e.id}:level\\d\\s*{[^{]*mso-level-number-format:`,"gi"),a=s.exec(t),l=r.exec(t),c=a&&!l,d=o.exec(t);let u="decimal",h="ol",m=null;if(d&&d[1]){const t=i.exec(d[1]);if(t&&t[1]&&(u=t[1].trim(),h="bullet"!==u&&"image"!==u?"ol":"ul"),"bullet"===u){const t=function(e){if("li"==e.name&&"ul"==e.parent.name&&e.parent.hasAttribute("type"))return e.parent.getAttribute("type");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);if(e)return e.is("$text")?e:e.getChild(0)}return null}(e);if(!t)return null;const o=t._data;if("o"===o)return"circle";if("·"===o)return"disc";if("§"===o)return"square";return null}(e.element);t&&(u=t)}else{const e=n.exec(d[1]);e&&e[1]&&(m=parseInt(e[1]))}c&&(h="ol")}return{type:h,startIndex:m,style:SA(u),isLegalStyleList:c}}function SA(e){if(e.startsWith("arabic-leading-zero"))return"decimal-leading-zero";switch(e){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 IA(e,t,o){const i=t.createElement(e.type);return e.style&&t.setStyle("list-style-type",e.style,i),e.startIndex&&e.startIndex>1&&t.setAttribute("start",e.startIndex,i),e.isLegalStyleList&&o&&t.addClass("legal-list",i),i}function RA(e){const t=e.getStyle("mso-list");if(void 0===t)return{};const o=t.match(/(^|\s{1,100})l(\d+)/i),i=t.match(/\s{0,100}lfo(\d+)/i),n=t.match(/\s{0,100}level(\d+)/i);return o&&i&&n?{id:o[2],order:i[1],indent:parseInt(n[1])}:{indent:1}}function OA(e,t){const o=new ui({name:"span",styles:{"mso-list":"Ignore"}}),i=t.createRangeIn(e);for(const e of i)"elementStart"===e.type&&o.match(e.item)&&t.remove(e.item)}function VA(e){const t=e.getStyle("margin-left");return void 0===t||t.endsWith("px")?t:_A(t)}function DA(e,t){if(!e.childCount)return;const o=new rl(e.document),i=function(e,t){const o=t.createRangeIn(e),i=new ui({name:/v:(.+)/}),n=[];for(const e of o){if("elementStart"!=e.type)continue;const t=e.item,o=t.previousSibling,s=o&&o.is("element")?o.name:null,r=["Chart"],a=i.match(t),l=t.getAttribute("o:gfxdata"),c="v:shapetype"===s,d=l&&r.some((e=>t.getAttribute("id").includes(e)));a&&l&&!c&&!d&&n.push(e.item.getAttribute("id"))}return n}(e,o);!function(e,t,o){const i=o.createRangeIn(t),n=new ui({name:"img"}),s=[];for(const t of i)if(t.item.is("element")&&n.match(t.item)){const o=t.item,i=o.getAttribute("v:shapes")?o.getAttribute("v:shapes").split(" "):[];i.length&&i.every((t=>e.indexOf(t)>-1))?s.push(o):o.getAttribute("src")||s.push(o)}for(const e of s)o.remove(e)}(i,e,o),function(e,t,o){const i=o.createRangeIn(t),n=[];for(const t of i)if("elementStart"==t.type&&t.item.is("element","v:shape")){const o=t.item.getAttribute("id");if(e.includes(o))continue;s(t.item.parent.getChildren(),o)||n.push(t.item)}for(const e of n){const t={src:r(e)};e.hasAttribute("alt")&&(t.alt=e.getAttribute("alt"));const i=o.createElement("img",t);o.insertChild(e.index+1,i,e.parent)}function s(e,t){for(const o of e)if(o.is("element")){if("img"==o.name&&o.getAttribute("v:shapes")==t)return!0;if(s(o.getChildren(),t))return!0}return!1}function r(e){for(const t of e.getChildren())if(t.is("element")&&t.getAttribute("src"))return t.getAttribute("src")}}(i,e,o),function(e,t){const o=t.createRangeIn(e),i=new ui({name:/v:(.+)/}),n=[];for(const e of o)"elementStart"==e.type&&i.match(e.item)&&n.push(e.item);for(const e of n)t.remove(e)}(e,o);const n=function(e,t){const o=t.createRangeIn(e),i=new ui({name:"img"}),n=[];let s=0;for(const e of o)e.item.is("element")&&i.match(e.item)&&(e.item.getAttribute("src").startsWith("file://")&&n.push({element:e.item,imageIndex:s}),s++);return n}(e,o);n.length&&function(e,t,o){for(let i=0;iString.fromCharCode(parseInt(e,16)))).join(""))}function MA(e,t){for(const o of t.createRangeIn(e).getItems())o.is("element","table")&&("0px"===o.getStyle("width")&&t.removeStyle("width",o),"0"===o.getAttribute("width")&&t.removeAttribute("width",o))}function NA(e,t){const o=[],i=[];for(const{item:n}of e.createRangeIn(t))if(n.is("element")&&n.getStyle("mso-footnote-id")){o.unshift(n);const{nextSibling:e}=n;e?.is("$text")&&e.data.startsWith(" ")&&i.unshift(e)}for(const t of o)e.remove(t);for(const t of i){const o=t.data.substring(1);if(o.length>0){const i=t.parent,n=i.getChildIndex(t),s=e.createText(o);e.remove(t),e.insertChild(n,s,i)}else e.remove(t)}return t}function BA(e,t){const o=e.createElement("sup",{class:"footnote"}),i=e.createElement("a",{id:`ref-${t}`,href:`#${t}`});return e.appendChild(i,o),o}function LA(e,t){const o=e.createElement("li",{id:t,class:"footnote-definition"}),i=e.createElement("a",{href:`#ref-${t}`,class:"footnote-backlink"}),n=e.createElement("div",{class:"footnote-content"});return e.appendChild(e.createText("^"),i),e.appendChild(i,o),e.appendChild(n,o),{listItem:o,content:n}}const zA=//i,jA=/xmlns:o="urn:schemas-microsoft-com/i;class qA{document;hasMultiLevelListPlugin;hasTablePropertiesPlugin;constructor(e,t=!1,o=!1){this.document=e,this.hasMultiLevelListPlugin=t,this.hasTablePropertiesPlugin=o}isActive(e){return zA.test(e)||jA.test(e)}execute(e){const t=new rl(this.document),{body:o,stylesString:i}=e._parsedData;!function(e,t){const o=[];for(const i of t.createRangeIn(e)){const e=i.item;e.is("element","a")&&!e.hasAttribute("href")&&(e.hasAttribute("id")||e.hasAttribute("name"))&&o.push(e)}for(const e of o){const o=e.parent.getChildIndex(e)+1,i=e.getChildren();t.insertChild(o,i,e.parent)}}(o,t),vA(o,i,this.hasMultiLevelListPlugin),DA(o,e.dataTransfer.getData("text/rtf")),function(e,t,o=!1){for(const i of t.createRangeIn(e).getItems()){if(!i.is("element","table")&&!i.is("element","td")&&!i.is("element","th"))continue;if(o&&i.is("element","table")){const e=i.parent?.is("element","div")?i.parent:null,o=i.parent?.parent?.is("element","div")?i.parent.parent:null,n=e??o;n&&"center"===n.getAttribute("align")&&!i.getAttribute("align")?(t.setStyle("margin-left","auto",i),t.setStyle("margin-right","auto",i)):n&&"right"===n.getAttribute("align")&&!i.getAttribute("align")?(t.setStyle("margin-left","auto",i),t.setStyle("margin-right","0",i)):n||i.getAttribute("align")||(t.setStyle("margin-left","0",i),t.setStyle("margin-right","auto",i))}const e=["left","top","right","bottom"];if(e.every((e=>!i.hasStyle(`border-${e}-style`))))t.setStyle("border-style","none",i);else for(const o of e)i.hasStyle(`border-${o}-style`)||t.setStyle(`border-${o}-style`,"none",i);const n=["width","height",...e.map((e=>`border-${e}-width`)),...e.map((e=>`padding-${e}`))];for(const e of n)i.hasStyle(e)&&t.setStyle(e,_A(i.getStyle(e)),i)}}(o,t,this.hasTablePropertiesPlugin),MA(o,t),function(e,t){const o=new Map,i=new Map;let n=null;for(const{item:s}of t.createRangeIn(e))if(s.is("element"))if("footnote-list"!==s.getStyle("mso-element")){if(s.hasStyle("mso-footnote-id")){const e=s.findAncestor("element",(e=>"footnote"===e.getStyle("mso-element")));if(e){const t=e.getAttribute("id");i.set(t,e)}else{const e=s.getStyle("mso-footnote-id");o.set(e,s)}}}else n=s;if(!o.size||!n)return;const s=function(e){return e.createElement("ol",{class:"footnotes"})}(t);t.replace(n,s);for(const[e,n]of o){const o=i.get(e);if(!o)continue;t.replace(n,BA(t,e));const r=LA(t,e);NA(t,o);for(const e of o.getChildren()){let o=e;e.is("element")&&(o=t.clone(e,!0)),t.appendChild(o,r.content)}t.appendChild(r.listItem,s)}}(o,t),function(e){const t=[],o=new rl(e.document);for(const{item:i}of o.createRangeIn(e))if(i.is("element")){for(const e of i.getClassNames())/\bmso/gi.exec(e)&&o.removeClass(e,i);for(const e of i.getStyleNames())/\bmso/gi.exec(e)&&o.removeStyle(e,i);(i.is("element","w:sdt")||i.is("element","w:sdtpr")&&i.isEmpty||i.is("element","o:p")&&i.isEmpty)&&t.push(i)}for(const e of t){const t=e.parent,i=t.getChildIndex(e);o.insertChild(i,e.getChildren(),t),o.remove(e)}}(o),e.content=o}}function $A(e,t,o,{blockElements:i,inlineObjectElements:n}){let s=o.createPositionAt(e,"forward"==t?"after":"before");return s=s.getLastMatchingPosition((({item:e})=>e.is("element")&&!i.includes(e.name)&&!n.includes(e.name)),{direction:t}),"forward"==t?s.nodeAfter:s.nodeBefore}function HA(e,t){return!!e&&e.is("element")&&t.includes(e.name)}function WA(e){let t=e;for(;t;){if(t.is("element")){const e=t.getStyle?.("white-space");if("pre-wrap"===e)return!0}t=t.parent}return!1}function UA(e,t,o){const{parent:i,data:n}=e,s=n.replaceAll("\t"," ".repeat(o)),r=i.getChildIndex(e);t.remove(e),t.insertChild(r,t.createText(s),i)}const KA=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class GA{document;constructor(e){this.document=e}isActive(e){return KA.test(e)}execute(e){const t=new rl(this.document),{body:o}=e._parsedData;!function(e,t){for(const o of e.getChildren())if(o.is("element","b")&&"normal"===o.getStyle("font-weight")){const i=e.getChildIndex(o);t.remove(o),t.insertChild(i,o.getChildren(),e)}}(o,t),function(e,t){for(const o of t.createRangeIn(e)){const e=o.item;if(e.is("element","li")){const o=e.getChild(0);o&&o.is("element","p")&&t.unwrapElement(o)}}}(o,t),function(e,t){const o=new Hi(t.document.stylesProcessor),i=new Rn(o,{renderingMode:"data"}),n=i.blockElements,s=i.inlineObjectElements,r=[];for(const o of t.createRangeIn(e)){const e=o.item;if(e.is("element","br")){const o=$A(e,"forward",t,{blockElements:n,inlineObjectElements:s}),i=$A(e,"backward",t,{blockElements:n,inlineObjectElements:s}),a=HA(o,n);(HA(i,n)||a)&&r.push(e)}}for(const e of r)e.hasClass("Apple-interchange-newline")?t.remove(e):t.replace(e,t.createElement("p"))}(o,t),function(e,t,o){const i=new Set;for(const o of t.createRangeIn(e).getItems())o.is("view:$textProxy")&&o.data.includes("\t")&&WA(o.parent)&&i.add(o.textNode);for(const e of i)UA(e,t,o)}(o,t,8),e.content=o}}const JA=/(\s+)<\/span>/g,((e,t)=>1===t.length?" ":Array(t.length+1).join("  ").substr(0,t.length)))}function YA(e,t){const o=new DOMParser,i=function(e){return QA(QA(e)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/()[\r\n]+(<\/span>)/g,"$1 $2").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(e){const t="",o="",i=e.indexOf(t);if(i<0)return e;const n=e.indexOf(o,i+t.length);return e.substring(0,i+t.length)+(n>=0?e.substring(n):"")}(e=(e=e.replace(//,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(HT.source+"\\s*$"),/^$/,!1]];const UT=[["table",function(e,t,o,i){if(t+2>o)return!1;let n=t+1;if(e.sCount[n]=4)return!1;let s=e.bMarks[n]+e.tShift[n];if(s>=e.eMarks[n])return!1;const r=e.src.charCodeAt(s++);if(124!==r&&45!==r&&58!==r)return!1;if(s>=e.eMarks[n])return!1;const a=e.src.charCodeAt(s++);if(124!==a&&45!==a&&58!==a&&!eT(a))return!1;if(45===r&&eT(a))return!1;for(;s=4)return!1;c=BT(l),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop();const u=c.length;if(0===u||u!==d.length)return!1;if(i)return!0;const h=e.parentType;e.parentType="table";const m=e.md.block.ruler.getRules("blockquote"),g=[t,0];e.push("table_open","table",1).map=g,e.push("thead_open","thead",1).map=[t,t+1],e.push("tr_open","tr",1).map=[t,t+1];for(let t=0;t=4)break;if(c=BT(l),c.length&&""===c[0]&&c.shift(),c.length&&""===c[c.length-1]&&c.pop(),f+=u-c.length,f>65536)break;if(n===t+2){e.push("tbody_open","tbody",1).map=p=[t+2,0]}e.push("tr_open","tr",1).map=[n,n+1];for(let t=0;t=4))break;i++,n=i}e.line=n;const s=e.push("code_block","code",0);return s.content=e.getLines(t,n,4+e.blkIndent,!1)+"\n",s.map=[t,e.line],!0}],["fence",function(e,t,o,i){let n=e.bMarks[t]+e.tShift[t],s=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(n+3>s)return!1;const r=e.src.charCodeAt(n);if(126!==r&&96!==r)return!1;let a=n;n=e.skipChars(n,r);let l=n-a;if(l<3)return!1;const c=e.src.slice(a,n),d=e.src.slice(n,s);if(96===r&&d.indexOf(String.fromCharCode(r))>=0)return!1;if(i)return!0;let u=t,h=!1;for(;(u++,!(u>=o))&&(n=a=e.bMarks[u]+e.tShift[u],s=e.eMarks[u],!(n=4||(n=e.skipChars(n,r),n-a=4)return!1;if(62!==e.src.charCodeAt(n))return!1;if(i)return!0;const a=[],l=[],c=[],d=[],u=e.md.block.ruler.getRules("blockquote"),h=e.parentType;e.parentType="blockquote";let m,g=!1;for(m=t;m=s)break;if(62===e.src.charCodeAt(n++)&&!t){let t,o,i=e.sCount[m]+1;32===e.src.charCodeAt(n)?(n++,i++,o=!1,t=!0):9===e.src.charCodeAt(n)?(t=!0,(e.bsCount[m]+i)%4==3?(n++,i++,o=!1):o=!0):t=!1;let r=i;for(a.push(e.bMarks[m]),e.bMarks[m]=n;n=s,l.push(e.bsCount[m]),e.bsCount[m]=e.sCount[m]+1+(t?1:0),c.push(e.sCount[m]),e.sCount[m]=r-i,d.push(e.tShift[m]),e.tShift[m]=n-e.bMarks[m];continue}if(g)break;let i=!1;for(let t=0,n=u.length;t";const b=[t,0];f.map=b,e.md.block.tokenize(e,t,m),e.push("blockquote_close","blockquote",-1).markup=">",e.lineMax=r,e.parentType=h,b[1]=e.line;for(let o=0;o=4)return!1;let s=e.bMarks[t]+e.tShift[t];const r=e.src.charCodeAt(s++);if(42!==r&&45!==r&&95!==r)return!1;let a=1;for(;s=4)return!1;if(e.listIndent>=0&&e.sCount[l]-e.listIndent>=4&&e.sCount[l]=e.blkIndent&&(m=!0),(h=zT(e,l))>=0){if(d=!0,r=e.bMarks[l]+e.tShift[l],u=Number(e.src.slice(r,h-1)),m&&1!==u)return!1}else{if(!((h=LT(e,l))>=0))return!1;d=!1}if(m&&e.skipSpaces(h)>=e.eMarks[l])return!1;if(i)return!0;const g=e.src.charCodeAt(h-1),p=e.tokens.length;d?(a=e.push("ordered_list_open","ol",1),1!==u&&(a.attrs=[["start",u]])):a=e.push("bullet_list_open","ul",1);const f=[l,0];a.map=f,a.markup=String.fromCharCode(g);let b=!1;const w=e.md.block.ruler.getRules("list"),y=e.parentType;for(e.parentType="list";l=n?1:i-t,m>4&&(m=1);const p=t+m;a=e.push("list_item_open","li",1),a.markup=String.fromCharCode(g);const f=[l,0];a.map=f,d&&(a.info=e.src.slice(r,h-1));const y=e.tight,_=e.tShift[l],k=e.sCount[l],v=e.listIndent;if(e.listIndent=e.blkIndent,e.blkIndent=p,e.tight=!0,e.tShift[l]=u-e.bMarks[l],e.sCount[l]=i,u>=n&&e.isEmpty(l+1)?e.line=Math.min(e.line+2,o):e.md.block.tokenize(e,l,o,!0),e.tight&&!b||(c=!1),b=e.line-l>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=v,e.tShift[l]=_,e.sCount[l]=k,e.tight=y,a=e.push("list_item_close","li",-1),a.markup=String.fromCharCode(g),l=e.line,f[1]=l,l>=o)break;if(e.sCount[l]=4)break;let C=!1;for(let t=0,i=w.length;t=4)return!1;if(91!==e.src.charCodeAt(n))return!1;function a(t){const o=e.lineMax;if(t>=o||e.isEmpty(t))return null;let i=!1;if(e.sCount[t]-e.blkIndent>3&&(i=!0),e.sCount[t]<0&&(i=!0),!i){const i=e.md.block.ruler.getRules("reference"),n=e.parentType;e.parentType="reference";let s=!1;for(let n=0,r=i.length;n=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(n))return!1;let r=e.src.slice(n,s),a=0;for(;a=4)return!1;let r=e.src.charCodeAt(n);if(35!==r||n>=s)return!1;let a=1;for(r=e.src.charCodeAt(++n);35===r&&n6||nn&&eT(e.src.charCodeAt(l-1))&&(s=l),e.line=t+1;const c=e.push("heading_open","h"+String(a),1);c.markup="########".slice(0,a),c.map=[t,e.line];const d=e.push("inline","",0);return d.content=e.src.slice(n,s).trim(),d.map=[t,e.line],d.children=[],e.push("heading_close","h"+String(a),-1).markup="########".slice(0,a),!0},["paragraph","reference","blockquote"]],["lheading",function(e,t,o){const i=e.md.block.ruler.getRules("paragraph");if(e.sCount[t]-e.blkIndent>=4)return!1;const n=e.parentType;e.parentType="paragraph";let s,r=0,a=t+1;for(;a3)continue;if(e.sCount[a]>=e.blkIndent){let t=e.bMarks[a]+e.tShift[a];const o=e.eMarks[a];if(t=o))){r=61===s?1:2;break}}if(e.sCount[a]<0)continue;let t=!1;for(let n=0,s=i.length;n3)continue;if(e.sCount[s]<0)continue;let t=!1;for(let n=0,r=i.length;n=o))&&!(e.sCount[r]=s){e.line=o;break}const t=e.line;let l=!1;for(let s=0;s=e.line)throw new Error("block rule didn't increment state.line");break}if(!l)throw new Error("none of the block rules matched");e.tight=!a,e.isEmpty(e.line-1)&&(a=!0),r=e.line,r0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],n={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(i),this.tokens_meta.push(n),i},JT.prototype.scanDelims=function(e,t){const o=this.posMax,i=this.src.charCodeAt(e),n=e>0?this.src.charCodeAt(e-1):32;let s=e;for(;s?@[]^_`{|}~-".split("").forEach((function(e){XT[e.charCodeAt(0)]=1}));const tP={tokenize:function(e,t){const o=e.pos,i=e.src.charCodeAt(o);if(t)return!1;if(126!==i)return!1;const n=e.scanDelims(e.pos,!0);let s=n.length;const r=String.fromCharCode(i);if(s<2)return!1;let a;s%2&&(a=e.push("text","",0),a.content=r,s--);for(let t=0;t=0;o--){const i=t[o];if(95!==i.marker&&42!==i.marker)continue;if(-1===i.end)continue;const n=t[i.end],s=o>0&&t[o-1].end===i.end+1&&t[o-1].marker===i.marker&&t[o-1].token===i.token-1&&t[i.end+1].token===n.token+1,r=String.fromCharCode(i.marker),a=e.tokens[i.token];a.type=s?"strong_open":"em_open",a.tag=s?"strong":"em",a.nesting=1,a.markup=s?r+r:r,a.content="";const l=e.tokens[n.token];l.type=s?"strong_close":"em_close",l.tag=s?"strong":"em",l.nesting=-1,l.markup=s?r+r:r,l.content="",s&&(e.tokens[t[o-1].token].content="",e.tokens[t[i.end+1].token].content="",o--)}}const iP={tokenize:function(e,t){const o=e.pos,i=e.src.charCodeAt(o);if(t)return!1;if(95!==i&&42!==i)return!1;const n=e.scanDelims(e.pos,42===i);for(let t=0;t\x00-\x20]*)$/;const rP=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,aP=/^&([a-z][a-z0-9]{1,31});/i;function lP(e){const t={},o=e.length;if(!o)return;let i=0,n=-2;const s=[];for(let r=0;ra;l-=s[l]+1){const t=e[l];if(t.marker===o.marker&&(t.open&&t.end<0)){let i=!1;if((t.close||o.open)&&(t.length+o.length)%3==0&&(t.length%3==0&&o.length%3==0||(i=!0)),!i){const i=l>0&&!e[l-1].open?s[l-1]+1:0;s[r]=r-l+i,s[l]=i,o.open=!1,t.end=r,t.close=!1,c=-1,n=-2;break}}}-1!==c&&(t[o.marker][(o.open?3:0)+(o.length||0)%3]=c)}}const cP=[["text",function(e,t){let o=e.pos;for(;o0)return!1;const o=e.pos;if(o+3>e.posMax)return!1;if(58!==e.src.charCodeAt(o))return!1;if(47!==e.src.charCodeAt(o+1))return!1;if(47!==e.src.charCodeAt(o+2))return!1;const i=e.pending.match(YT);if(!i)return!1;const n=i[1],s=e.md.linkify.matchAtStart(e.src.slice(o-n.length));if(!s)return!1;let r=s.url;if(r.length<=n.length)return!1;r=r.replace(/\*+$/,"");const a=e.md.normalizeLink(r);if(!e.md.validateLink(a))return!1;if(!t){e.pending=e.pending.slice(0,-n.length);const t=e.push("link_open","a",1);t.attrs=[["href",a]],t.markup="linkify",t.info="auto";e.push("text","",0).content=e.md.normalizeLinkText(r);const o=e.push("link_close","a",-1);o.markup="linkify",o.info="auto"}return e.pos+=r.length-n.length,!0}],["newline",function(e,t){let o=e.pos;if(10!==e.src.charCodeAt(o))return!1;const i=e.pending.length-1,n=e.posMax;if(!t)if(i>=0&&32===e.pending.charCodeAt(i))if(i>=1&&32===e.pending.charCodeAt(i-1)){let t=i-1;for(;t>=1&&32===e.pending.charCodeAt(t-1);)t--;e.pending=e.pending.slice(0,t),e.push("hardbreak","br",0)}else e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0);else e.push("softbreak","br",0);for(o++;o=i)return!1;let n=e.src.charCodeAt(o);if(10===n){for(t||e.push("hardbreak","br",0),o++;o=55296&&n<=56319&&o+1=56320&&t<=57343&&(s+=e.src[o+1],o++)}const r="\\"+s;if(!t){const t=e.push("text_special","",0);n<256&&0!==XT[n]?t.content=s:t.content=r,t.markup=r,t.info="escape"}return e.pos=o+1,!0}],["backticks",function(e,t){let o=e.pos;if(96!==e.src.charCodeAt(o))return!1;const i=o;o++;const n=e.posMax;for(;o=u)return!1;if(l=g,n=e.md.helpers.parseLinkDestination(e.src,g,e.posMax),n.ok){for(r=e.md.normalizeLink(n.str),e.md.validateLink(r)?g=n.pos:r="",l=g;g=u||41!==e.src.charCodeAt(g))&&(c=!0),g++}if(c){if(void 0===e.env.references)return!1;if(g=0?i=e.src.slice(l,g++):g=m+1):g=m+1,i||(i=e.src.slice(h,m)),s=e.env.references[nT(i)],!s)return e.pos=d,!1;r=s.href,a=s.title}if(!t){e.pos=h,e.posMax=m;const t=[["href",r]];e.push("link_open","a",1).attrs=t,a&&t.push(["title",a]),e.linkLevel++,e.md.inline.tokenize(e),e.linkLevel--,e.push("link_close","a",-1)}return e.pos=g,e.posMax=u,!0}],["image",function(e,t){let o,i,n,s,r,a,l,c,d="";const u=e.pos,h=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;const m=e.pos+2,g=e.md.helpers.parseLinkLabel(e,e.pos+1,!1);if(g<0)return!1;if(s=g+1,s=h)return!1;for(c=s,a=e.md.helpers.parseLinkDestination(e.src,s,e.posMax),a.ok&&(d=e.md.normalizeLink(a.str),e.md.validateLink(d)?s=a.pos:d=""),c=s;s=h||41!==e.src.charCodeAt(s))return e.pos=u,!1;s++}else{if(void 0===e.env.references)return!1;if(s=0?n=e.src.slice(c,s++):s=g+1):s=g+1,n||(n=e.src.slice(m,g)),r=e.env.references[nT(n)],!r)return e.pos=u,!1;d=r.href,l=r.title}if(!t){i=e.src.slice(m,g);const t=[];e.md.inline.parse(i,e.md,e.env,t);const o=e.push("image","img",0),n=[["src",d],["alt",""]];o.attrs=n,o.children=t,o.content=i,l&&n.push(["title",l])}return e.pos=s,e.posMax=h,!0}],["autolink",function(e,t){let o=e.pos;if(60!==e.src.charCodeAt(o))return!1;const i=e.pos,n=e.posMax;for(;;){if(++o>=n)return!1;const t=e.src.charCodeAt(o);if(60===t)return!1;if(62===t)break}const s=e.src.slice(i+1,o);if(sP.test(s)){const o=e.md.normalizeLink(s);if(!e.md.validateLink(o))return!1;if(!t){const t=e.push("link_open","a",1);t.attrs=[["href",o]],t.markup="autolink",t.info="auto";e.push("text","",0).content=e.md.normalizeLinkText(s);const i=e.push("link_close","a",-1);i.markup="autolink",i.info="auto"}return e.pos+=s.length+2,!0}if(nP.test(s)){const o=e.md.normalizeLink("mailto:"+s);if(!e.md.validateLink(o))return!1;if(!t){const t=e.push("link_open","a",1);t.attrs=[["href",o]],t.markup="autolink",t.info="auto";e.push("text","",0).content=e.md.normalizeLinkText(s);const i=e.push("link_close","a",-1);i.markup="autolink",i.info="auto"}return e.pos+=s.length+2,!0}return!1}],["html_inline",function(e,t){if(!e.md.options.html)return!1;const o=e.posMax,i=e.pos;if(60!==e.src.charCodeAt(i)||i+2>=o)return!1;const n=e.src.charCodeAt(i+1);if(33!==n&&63!==n&&47!==n&&!function(e){const t=32|e;return t>=97&&t<=122}(n))return!1;const s=e.src.slice(i).match($T);if(!s)return!1;if(!t){const t=e.push("html_inline","",0);t.content=s[0],r=t.content,/^\s]/i.test(r)&&e.linkLevel++,function(e){return/^<\/a\s*>/i.test(e)}(t.content)&&e.linkLevel--}var r;return e.pos+=s[0].length,!0}],["entity",function(e,t){const o=e.pos,i=e.posMax;if(38!==e.src.charCodeAt(o))return!1;if(o+1>=i)return!1;if(35===e.src.charCodeAt(o+1)){const i=e.src.slice(o).match(rP);if(i){if(!t){const t="x"===i[1][0].toLowerCase()?parseInt(i[1].slice(1),16):parseInt(i[1],10),o=e.push("text_special","",0);o.content=zE(t)?jE(t):jE(65533),o.markup=i[0],o.info="entity"}return e.pos+=i[0].length,!0}}else{const i=e.src.slice(o).match(aP);if(i){const o=SE(i[0]);if(o!==i[0]){if(!t){const t=e.push("text_special","",0);t.content=o,t.markup=i[0],t.info="entity"}return e.pos+=i[0].length,!0}}}return!1}]],dP=[["balance_pairs",function(e){const t=e.tokens_meta,o=e.tokens_meta.length;lP(e.delimiters);for(let e=0;e0&&i++,"text"===n[t].type&&t+1=e.pos)throw new Error("inline rule didn't increment state.pos");break}}else e.pos=e.posMax;r||e.pos++,s[t]=e.pos},uP.prototype.tokenize=function(e){const t=this.ruler.getRules(""),o=t.length,i=e.posMax,n=e.md.options.maxNesting;for(;e.pos=e.pos)throw new Error("inline rule didn't increment state.pos");break}if(r){if(e.pos>=i)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},uP.prototype.parse=function(e,t,o,i){const n=new this.State(e,t,o,i);this.tokenize(n);const s=this.ruler2.getRules(""),r=s.length;for(let e=0;e=3&&":"===e[t-3]||t>=3&&"/"===e[t-3]?0:i.match(o.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,o){const i=e.slice(t);return o.re.mailto||(o.re.mailto=new RegExp("^"+o.re.src_email_name+"@"+o.re.src_host_strict,"i")),o.re.mailto.test(i)?i.match(o.re.mailto)[0].length:0}}},yP="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function _P(e){const t=e.re=function(e){const t={};e=e||{},t.src_Any=lE.source,t.src_Cc=cE.source,t.src_Z=uE.source,t.src_P=rE.source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");const o="[><|]";return t.src_pseudo_letter="(?:(?![><|]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><|]|"+t.src_ZPCc+")(?!"+(e["---"]?"-(?!--)|":"-|")+"_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|"+o+"|[()[\\]{}.,\"'?!\\-;]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+t.src_ZCc+"|[.]|$)|"+(e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+t.src_ZCc+"|$)|;(?!"+t.src_ZCc+"|$)|\\!+(?!"+t.src_ZCc+"|[!]|$)|\\?(?!"+t.src_ZCc+"|[?]|$))+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><|]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}(e.__opts__),o=e.__tlds__.slice();function i(e){return e.replace("%TLDS%",t.src_tlds)}e.onCompile(),e.__tlds_replaced__||o.push("a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"),o.push(t.src_xn),t.src_tlds=o.join("|"),t.email_fuzzy=RegExp(i(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(i(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(i(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(i(t.tpl_host_fuzzy_test),"i");const n=[];function s(e,t){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+t)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(t){const o=e.__schemas__[t];if(null===o)return;const i={validate:null,link:null};if(e.__compiled__[t]=i,"[object Object]"===gP(o))return!function(e){return"[object RegExp]"===gP(e)}(o.validate)?pP(o.validate)?i.validate=o.validate:s(t,o):i.validate=function(e){return function(t,o){const i=t.slice(o);return e.test(i)?i.match(e)[0].length:0}}(o.validate),void(pP(o.normalize)?i.normalize=o.normalize:o.normalize?s(t,o):i.normalize=function(e,t){t.normalize(e)});!function(e){return"[object String]"===gP(e)}(o)?s(t,o):n.push(t)})),n.forEach((function(t){e.__compiled__[e.__schemas__[t]]&&(e.__compiled__[t].validate=e.__compiled__[e.__schemas__[t]].validate,e.__compiled__[t].normalize=e.__compiled__[e.__schemas__[t]].normalize)})),e.__compiled__[""]={validate:null,normalize:function(e,t){t.normalize(e)}};const r=Object.keys(e.__compiled__).filter((function(t){return t.length>0&&e.__compiled__[t]})).map(fP).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+r+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+r+")","ig"),e.re.schema_at_start=RegExp("^"+e.re.schema_search.source,"i"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(e)}function kP(e,t){const o=e.__index__,i=e.__last_index__,n=e.__text_cache__.slice(o,i);this.schema=e.__schema__.toLowerCase(),this.index=o+t,this.lastIndex=i+t,this.raw=n,this.text=n,this.url=n}function vP(e,t){const o=new kP(e,t);return e.__compiled__[o.schema].normalize(o,e),o}function CP(e,t){if(!(this instanceof CP))return new CP(e,t);var o;t||(o=e,Object.keys(o||{}).reduce((function(e,t){return e||bP.hasOwnProperty(t)}),!1)&&(t=e,e={})),this.__opts__=mP({},bP,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=mP({},wP,e),this.__compiled__={},this.__tlds__=yP,this.__tlds_replaced__=!1,this.re={},_P(this)}CP.prototype.add=function(e,t){return this.__schemas__[e]=t,_P(this),this},CP.prototype.set=function(e){return this.__opts__=mP(this.__opts__,e),this},CP.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;let t,o,i,n,s,r,a,l,c;if(this.re.schema_test.test(e))for(a=this.re.schema_search,a.lastIndex=0;null!==(t=a.exec(e));)if(n=this.testSchemaAt(e,t[2],a.lastIndex),n){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+n;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(l=e.search(this.re.host_fuzzy_test),l>=0&&(this.__index__<0||l=0&&null!==(i=e.match(this.re.email_fuzzy))&&(s=i.index+i[1].length,r=i.index+i[0].length,(this.__index__<0||sthis.__last_index__)&&(this.__schema__="mailto:",this.__index__=s,this.__last_index__=r))),this.__index__>=0},CP.prototype.pretest=function(e){return this.re.pretest.test(e)},CP.prototype.testSchemaAt=function(e,t,o){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,o,this):0},CP.prototype.match=function(e){const t=[];let o=0;this.__index__>=0&&this.__text_cache__===e&&(t.push(vP(this,o)),o=this.__last_index__);let i=o?e.slice(o):e;for(;this.test(i);)t.push(vP(this,o)),i=i.slice(this.__last_index__),o+=this.__last_index__;return t.length?t:null},CP.prototype.matchAtStart=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return null;const t=this.re.schema_at_start.exec(e);if(!t)return null;const o=this.testSchemaAt(e,t[2],t[0].length);return o?(this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+o,vP(this,0)):null},CP.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,t,o){return e!==o[t-1]})).reverse(),_P(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,_P(this),this)},CP.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},CP.prototype.onCompile=function(){};const AP=CP,xP=2147483647,EP=36,TP=/^xn--/,PP=/[^\0-\x7F]/,SP=/[\x2E\u3002\uFF0E\uFF61]/g,IP={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},RP=Math.floor,OP=String.fromCharCode;function VP(e){throw new RangeError(IP[e])}function DP(e,t){const o=e.split("@");let i="";o.length>1&&(i=o[0]+"@",e=o[1]);const n=function(e,t){const o=[];let i=e.length;for(;i--;)o[i]=t(e[i]);return o}((e=e.replace(SP,".")).split("."),t).join(".");return i+n}function FP(e){const t=[];let o=0;const i=e.length;for(;o=55296&&n<=56319&&o>1,e+=RP(e/t);e>455;i+=EP)e=RP(e/35);return RP(i+36*e/(e+38))},BP=function(e){const t=[],o=e.length;let i=0,n=128,s=72,r=e.lastIndexOf("-");r<0&&(r=0);for(let o=0;o=128&&VP("not-basic"),t.push(e.charCodeAt(o));for(let l=r>0?r+1:0;l=o&&VP("invalid-input");const r=(a=e.charCodeAt(l++))>=48&&a<58?a-48+26:a>=65&&a<91?a-65:a>=97&&a<123?a-97:EP;r>=EP&&VP("invalid-input"),r>RP((xP-i)/t)&&VP("overflow"),i+=r*t;const c=n<=s?1:n>=s+26?26:n-s;if(rRP(xP/d)&&VP("overflow"),t*=d}const c=t.length+1;s=NP(i-r,c,0==r),RP(i/c)>xP-n&&VP("overflow"),n+=RP(i/c),i%=c,t.splice(i++,0,n)}var a;return String.fromCodePoint(...t)},LP=function(e){const t=[],o=(e=FP(e)).length;let i=128,n=0,s=72;for(const o of e)o<128&&t.push(OP(o));const r=t.length;let a=r;for(r&&t.push("-");a=i&&tRP((xP-n)/l)&&VP("overflow"),n+=(o-i)*l,i=o;for(const o of e)if(oxP&&VP("overflow"),o===i){let e=n;for(let o=EP;;o+=EP){const i=o<=s?1:o>=s+26?26:o-s;if(eString.fromCodePoint(...e)},decode:BP,encode:LP,toASCII:function(e){return DP(e,(function(e){return PP.test(e)?"xn--"+LP(e):e}))},toUnicode:function(e){return DP(e,(function(e){return TP.test(e)?BP(e.slice(4).toLowerCase()):e}))}},jP={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}},zero:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","fragments_join"]}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"“”‘’",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","fragments_join"]}}}},qP=/^(vbscript|javascript|file|data):/,$P=/^data:image\/(gif|png|jpeg|webp);/;function HP(e){const t=e.trim().toLowerCase();return!qP.test(t)||$P.test(t)}const WP=["http:","https:","mailto:"];function UP(e){const t=sE(e,!0);if(t.hostname&&(!t.protocol||WP.indexOf(t.protocol)>=0))try{t.hostname=zP.toASCII(t.hostname)}catch(e){}return Wx(Ux(t))}function KP(e){const t=sE(e,!0);if(t.hostname&&(!t.protocol||WP.indexOf(t.protocol)>=0))try{t.hostname=zP.toUnicode(t.hostname)}catch(e){}return qx(Ux(t),qx.defaultChars+"%")}function GP(e,t){if(!(this instanceof GP))return new GP(e,t);t||FE(e)||(t=e||{},e="default"),this.inline=new hP,this.block=new GT,this.core=new DT,this.renderer=new uT,this.linkify=new AP,this.validateLink=HP,this.normalizeLink=UP,this.normalizeLinkText=KP,this.utils=i,this.helpers=BE({},n),this.options={},this.configure(e),t&&this.set(t)}GP.prototype.set=function(e){return BE(this.options,e),this},GP.prototype.configure=function(e){const t=this;if(FE(e)){const t=e;if(!(e=jP[t]))throw new Error('Wrong `markdown-it` preset "'+t+'", check name')}if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach((function(o){e.components[o].rules&&t[o].ruler.enableOnly(e.components[o].rules),e.components[o].rules2&&t[o].ruler2.enableOnly(e.components[o].rules2)})),this},GP.prototype.enable=function(e,t){let o=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){o=o.concat(this[t].ruler.enable(e,!0))}),this),o=o.concat(this.inline.ruler2.enable(e,!0));const i=e.filter((function(e){return o.indexOf(e)<0}));if(i.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+i);return this},GP.prototype.disable=function(e,t){let o=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){o=o.concat(this[t].ruler.disable(e,!0))}),this),o=o.concat(this.inline.ruler2.disable(e,!0));const i=e.filter((function(e){return o.indexOf(e)<0}));if(i.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+i);return this},GP.prototype.use=function(e){const t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},GP.prototype.parse=function(e,t){if("string"!=typeof e)throw new Error("Input data should be a String");const o=new this.core.State(e,this,t);return this.core.process(o),o.tokens},GP.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},GP.prototype.parseInline=function(e,t){const o=new this.core.State(e,this,t);return o.inlineMode=!0,this.core.process(o),o.tokens},GP.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)};const JP=GP;var ZP=o(428),QP=o.n(ZP);class YP{constructor(e){this._htmlDP=new Ir(e),this._domConverter=new Rn(e)}toView(e){const t=JP({html:!0,breaks:!0,langPrefix:"language-"});let o=t.use(QP(),{label:!0});const i=o.renderer.rules.code_block;t.renderer.rules.code_block=function(e,t,o,n,s){return e[t].content=e[t].content.replace(/\n$/,""),i(e,t,o,n,s)};const n=o.render(e),s=this._htmlDP._toDom(n);!function(e){let t,o=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(;t=o.nextNode();)t.previousElementSibling&&t.previousElementSibling.classList.contains("task-list-item-checkbox")&&(t.textContent=t.textContent.replace(/^\s+/,""))}(s),function(e){let t,o=document.createNodeIterator(e,NodeFilter.SHOW_ELEMENT,{acceptNode:function(e){if("BR"===e.tagName&&!e.parentElement)return NodeFilter.FILTER_ACCEPT}}),i=[];for(;t=o.nextNode();)i.push(t);for(const t of i){const o=document.createElement("p");e.insertBefore(o,t),Lx(t)?o.appendChild(t):t.remove()}}(s),function(e){const t=document.createNodeIterator(e,NodeFilter.SHOW_ELEMENT,{acceptNode:function(e){if("P"===e.tagName&&e.parentElement&&"TD"===e.parentElement.tagName&&1===e.childNodes.length&&"BR"===e.childNodes[0].nodeName)return NodeFilter.FILTER_ACCEPT}});let o;for(;o=t.nextNode();)o.childNodes[0].remove()}(s),function(e){const t=document.createNodeIterator(e,NodeFilter.SHOW_ELEMENT,{acceptNode:function(e){if("BR"===e.tagName&&e.parentElement&&"LI"===e.parentElement.tagName)return NodeFilter.FILTER_ACCEPT}});let o,i=[];for(;o=t.nextNode();)i.push(o);for(const e of i)e.parentElement.insertBefore(document.createElement("p"),e),e.remove()}(s),s.querySelectorAll("input.task-list-item-checkbox").forEach((e=>{const t=e.closest("li.task-list-item");t&&e.parentElement!==t&&(e.parentElement&&e.parentElement.removeChild(e),t.insertBefore(e,t.firstChild))}));return this._domConverter.domToView(s)}toData(e){const t=this._domConverter.viewToDom(e,document);!function(e,t,o){t=t.map((e=>e.toUpperCase())),o=o.map((e=>e.toUpperCase()));let i,n=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(;i=n.nextNode();)i.parentElement&&t.indexOf(i.parentElement.nodeName)>=0&&(i.nodeValue=i.nodeValue.replace(/^[\u00a0]+/g," ").replace(/[\u00a0]+$/g," ")),Nx(i,o)||(i.nodeValue=_.escape(i.nodeValue))}(t,["strong","em"],["pre","code","table"]),function(e){let t,o=document.createNodeIterator(e,NodeFilter.SHOW_ELEMENT,(function(e){return"a"===e.nodeName.toLowerCase()?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}));for(;t=o.nextNode();)t.setAttribute("href",t.href)}(t),function(e){let t,o=document.createNodeIterator(e,NodeFilter.SHOW_ELEMENT,{acceptNode:function(e){if("P"===e.tagName&&0===e.childNodes.length&&(!e.parentElement||"LI"===e.parentElement.tagName))return NodeFilter.FILTER_ACCEPT}});for(;t=o.nextNode();)t.appendChild(document.createElement("br"))}(t);const o=new Mx({headingStyle:"atx",codeBlockStyle:"fenced",blankReplacement:function(e,t){if("CODE"===t.tagName){const e=(t.getAttribute("class")||"").replace("language-",""),o=t.textContent||"";return"```"+e+"\n"+(o.length?o:"\n")+"```\n"}return"PRE"===t.tagName?e:t.isBlock?"\n\n":""}});return o.use([ex]),o.addRule("taskListItems",{filter:function(e){const t="checkbox"===e.type,o=e.parentNode&&"LI"===e.parentNode.nodeName,i=e.parentNode&&e.parentNode.parentNode&&"LI"===e.parentNode.parentNode.nodeName;return t&&(o||i)},replacement:function(e,t){return(t.checked?"[x]":"[ ]")+" "}}),o.addRule("orderedListItems",{filter:function(e){return"LI"===e.nodeName&&!!e.closest("ol")},replacement:function(e,t,o){e=e.replace(/^\n+/,"").replace(/\n+$/,"\n");var i=t.parentNode,n=o.bulletListMarker+" ";if("OL"===i.nodeName){var s=i.getAttribute("start"),r=Array.prototype.indexOf.call(i.children,t);n=(s?Number(s)+r:r+1)+". "}var a=n.length,l=" ".repeat(a);return n+(e=e.replace(/\n/gm,"\n"+l))+(t.nextSibling&&!/\n$/.test(e)?"\n":"")}}),o.addRule("imageFigure",{filter:"img",replacement:function(e,t){const o=t.parentElement;return o&&o.classList.contains("op-uc-figure--content")?o.parentElement.outerHTML:t.outerHTML}}),o.addRule("figcaption",{filter:"figcaption",replacement:function(e,t){return""}}),o.addRule("markdownTables",{filter:function(e){return"TABLE"===e.nodeName&&(!e.parentElement||"FIGURE"!==e.parentElement.nodeName)},replacement:function(e,t){return t.outerHTML}}),o.addRule("htmlTables",{filter:function(e){const t=e.getElementsByTagName("table");return"FIGURE"===e.nodeName&&t.length},replacement:function(e,t){return t.querySelectorAll("td br[data-cke-filler]").forEach((e=>{e.nextElementSibling&&e.removeAttribute("data-cke-filler")})),t.outerHTML}}),o.addRule("strikethrough",{filter:["del","s","strike"],replacement:function(e){return"~~"+e+"~~"}}),o.addRule("openProjectMacros",{filter:["macro"],replacement:(e,t)=>{t.innerHTML="";return t.outerHTML.replace("","\n")}}),o.addRule("mentions",{filter:e=>"MENTION"===e.nodeName&&e.classList.contains("mention"),replacement:(e,t)=>t.outerHTML}),o.addRule("emptyParagraphs",{filter:e=>"P"===e.nodeName&&(0===e.childNodes.length||1===e.childNodes.length&&"BR"===e.childNodes[0].nodeName),replacement:(e,t)=>t.parentElement||t.nextSibling||t.previousSibling?1===t.childNodes.length&&Lx(t.childNodes[0])?Bx+"\n\n":"
      \n\n":""}),o.addRule("openProjectPageBreak",{filter:e=>"DIV"===e.nodeName&&e.classList.contains("page-break"),replacement:(e,t)=>Bx}),o.turndown(t).replace(/\u00A0/," ").replace("###turndown-ignore###\n","")}}const XP='\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n image/svg+xml\n \n \n \n \n \n\n';const eS={"(":")","[":"]","{":"}"};class tS extends wc{constructor(e){super(e),this._isEnabledBasedOnSelection=!1}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=e.schema.checkAttributeInSelection(t.selection,"mention")}execute(e){const t=this.editor.model,o=t.document.selection,i="string"==typeof e.mention?{id:e.mention}:e.mention,n=i.id,s=e.range||o.getFirstRange();if(!t.canEditAt(s))return;const r=e.text||n,a=iS({_text:r,id:n},i);if(!n.startsWith(e.marker))throw new fe("mentioncommand-incorrect-id",this);t.change((e=>{const i=ao(o.getAttributes()),n=new Map(i.entries());n.set("mention",a);const l=t.insertContent(e.createText(r,n),s),c=l.start.nodeBefore,d=l.end.nodeAfter,u=d&&d.is("$text")&&d.data.startsWith(" ");let h=!1;if(c&&d&&c.is("$text")&&d.is("$text")){const e=c.data.slice(-1),t=e in eS,o=t&&d.data.startsWith(eS[e]);h=t&&o}h||u||t.insertContent(e.createText(" ",i),s.start.getShiftedBy(r.length))}))}}class oS extends fc{static get pluginName(){return"MentionEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model,o=t.document;t.schema.extend("$text",{allowAttributes:"mention"}),e.conversion.for("upcast").elementToAttribute({view:{name:"span",attributes:"data-mention",classes:"mention"},model:{key:"mention",value:e=>nS(e)}}),e.conversion.for("downcast").attributeToElement({model:"mention",view:rS}),e.conversion.for("downcast").add(sS),o.registerPostFixer((e=>function(e,t,o){const i=t.differ.getChanges();let n=!1;for(const t of i){if("attribute"==t.type)continue;const i=t.position;if("$text"==t.name){const t=i.textNode&&i.textNode.nextSibling;n=lS(i.textNode,e)||n,n=lS(t,e)||n,n=lS(i.nodeBefore,e)||n,n=lS(i.nodeAfter,e)||n}if("$text"!=t.name&&"insert"==t.type){const t=i.nodeAfter;for(const o of e.createRangeIn(t).getItems())n=lS(o,e)||n}if("insert"==t.type&&o.isInline(t.name)){const t=i.nodeAfter&&i.nodeAfter.nextSibling;n=lS(i.nodeBefore,e)||n,n=lS(t,e)||n}}return n}(e,o,t.schema))),o.registerPostFixer((e=>function(e,t){const o=t.differ.getChanges();let i=!1;for(const t of o)if("attribute"===t.type&&"mention"!=t.attributeKey){const o=t.range.start.nodeBefore,n=t.range.end.nodeAfter;for(const s of[o,n])aS(s)&&s.getAttribute(t.attributeKey)!=t.attributeNewValue&&(e.setAttribute(t.attributeKey,t.attributeNewValue,s),i=!0)}return i}(e,o))),o.registerPostFixer((e=>function(e,t){const o=t.selection,i=o.focus;if(o.isCollapsed&&o.hasAttribute("mention")&&function(e){const t=e.isAtStart;return e.nodeBefore&&e.nodeBefore.is("$text")||t}(i))return e.removeSelectionAttribute("mention"),!0;return!1}(e,o))),e.commands.add("mention",new tS(e))}}function iS(e,t){return Object.assign({uid:me().slice(0,8)},e,t||{})}function nS(e,t){const o=e.getAttribute("data-mention"),i=e.getChild(0);if(!i)return;const n=e.getAttribute("data-mention-uid");return iS({id:o,_text:i.data},n?{uid:n,...t}:t)}function sS(e){e.on("attribute:mention",((e,t,o)=>{const i=t.attributeNewValue;if(!t.item.is("$textProxy")||!i)return;const n=t.range.start;(n.textNode||n.nodeAfter).data!=i._text&&o.consumable.consume(t.item,e.name)}),{priority:"highest"})}function rS(e,{writer:t,options:o}){if(e)return t.createAttributeElement("span",{class:"mention","data-mention":e.id,...!o.isClipboardPipeline&&{"data-mention-uid":e.uid}},{id:e.uid,priority:20})}function aS(e){if(!e||!e.is("$text")&&!e.is("$textProxy")||!e.hasAttribute("mention"))return!1;return e.data!=e.getAttribute("mention")._text}function lS(e,t){return!!aS(e)&&(t.removeAttribute("mention",e),!0)}class cS extends zh{selected;position;constructor(e){super(e),this.extendTemplate({attributes:{class:["ck-mentions"],tabindex:"-1"}})}selectFirst(){this.select(0)}selectNext(){const e=this.selected,t=this.items.getIndex(e);this.select(t+1)}selectPrevious(){const e=this.selected,t=this.items.getIndex(e);this.select(t-1)}select(e){let t=0;e>0&&e{o?(this.domElement.classList.add("ck-on"),this.domElement.classList.remove("ck-off")):(this.domElement.classList.add("ck-off"),this.domElement.classList.remove("ck-on"))})),this.listenTo(this.domElement,"click",(()=>{this.fire("execute")}))}render(){super.render(),this.element=this.domElement}focus(){this.domElement.focus()}}class uS extends Nh{item;marker;highlight(){this.children.first.isOn=!0}removeHighlight(){this.children.first.isOn=!1}}const hS=[qt.arrowup,qt.arrowdown,qt.esc],mS=[qt.enter,qt.tab];class gS extends fc{_mentionsView;_mentionsConfigurations;_balloon;_items=new eo;_lastRequested;_requestFeedDebounced;static get pluginName(){return"MentionUI"}static get isOfficialPlugin(){return!0}static get requires(){return[Qm]}constructor(e){super(e),this._mentionsView=this._createMentionView(),this._mentionsConfigurations=new Map,this._requestFeedDebounced=zo(this._requestFeed,100),e.config.define("mention",{feeds:[]})}init(){const e=this.editor,t=e.config.get("mention.commitKeys")||mS,o=hS.concat(t);this._balloon=e.plugins.get(Qm),e.editing.view.document.on("keydown",((e,i)=>{var n;n=i.keyCode,o.includes(n)&&this._isUIVisible&&(i.preventDefault(),e.stop(),i.keyCode==qt.arrowdown&&this._mentionsView.selectNext(),i.keyCode==qt.arrowup&&this._mentionsView.selectPrevious(),t.includes(i.keyCode)&&this._mentionsView.executeSelected(),i.keyCode==qt.esc&&this._hideUIAndRemoveMarker())}),{priority:"highest"}),Su({emitter:this._mentionsView,activator:()=>this._isUIVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideUIAndRemoveMarker()});const i=e.config.get("mention.feeds");for(const e of i){const{feed:t,marker:o,dropdownLimit:i}=e;if(!yS(o))throw new fe("mentionconfig-incorrect-marker",null,{marker:o});const n={marker:o,feedCallback:"function"==typeof t?t.bind(this.editor):wS(t),itemRenderer:e.itemRenderer,dropdownLimit:i};this._mentionsConfigurations.set(o,n)}this._setupTextWatcher(i),this.listenTo(e,"change:isReadOnly",(()=>{this._hideUIAndRemoveMarker()})),this.on("requestFeed:response",((e,t)=>this._handleFeedResponse(t))),this.on("requestFeed:error",(()=>this._hideUIAndRemoveMarker()))}destroy(){super.destroy(),this._mentionsView.destroy()}get _isUIVisible(){return this._balloon.visibleView===this._mentionsView}_createMentionView(){const e=this.editor.locale,t=new cS(e);return t.items.bindTo(this._items).using((o=>{const{item:i,marker:n}=o,{dropdownLimit:s}=this._mentionsConfigurations.get(n),r=s||this.editor.config.get("mention.dropdownLimit")||10;if(t.items.length>=r)return null;const a=new uS(e),l=this._renderItem(i,n);return l.delegate("execute").to(a),a.children.add(l),a.item=i,a.marker=n,a.on("execute",(()=>{t.fire("execute",{item:i,marker:n})})),a})),t.on("execute",((e,t)=>{const o=this.editor,i=o.model,n=t.item,s=t.marker,r=o.model.markers.get("mention"),a=i.createPositionAt(i.document.selection.focus),l=i.createPositionAt(r.getStart()),c=i.createRange(l,a);this._hideUIAndRemoveMarker(),o.execute("mention",{mention:n,text:n.text,marker:s,range:c}),o.editing.view.focus()})),t}_getItemRenderer(e){const{itemRenderer:t}=this._mentionsConfigurations.get(e);return t}_requestFeed(e,t){this._lastRequested=t;const{feedCallback:o}=this._mentionsConfigurations.get(e),i=o(t);i instanceof Promise?i.then((o=>{this._lastRequested==t?this.fire("requestFeed:response",{feed:o,marker:e,feedText:t}):this.fire("requestFeed:discarded",{feed:o,marker:e,feedText:t})})).catch((t=>{this.fire("requestFeed:error",{error:t}),be("mention-feed-callback-error",{marker:e})})):this.fire("requestFeed:response",{feed:i,marker:e,feedText:t})}_setupTextWatcher(e){const t=this.editor,o=e.map((e=>({...e,pattern:bS(e.marker,e.minimumCharacters||0)}))),i=new Ig(t.model,function(e){const t=t=>{const o=fS(e,t);if(!o)return!1;let i=0;0!==o.position&&(i=o.position-1);const n=t.substring(i);return o.pattern.test(n)};return t}(o));i.on("matched",((e,i)=>{const n=fS(o,i.text),s=t.model.document.selection.focus,r=t.model.createPositionAt(s.parent,n.position);if(function(e){const t=e.textNode&&e.textNode.hasAttribute("mention"),o=e.nodeBefore;return t||o&&o.is("$text")&&o.hasAttribute("mention")}(s)||function(e){const t=e.nodeAfter;return t&&t.is("$text")&&t.hasAttribute("mention")}(r))return void this._hideUIAndRemoveMarker();const a=function(e,t){let o=0;0!==e.position&&(o=e.position-1);const i=bS(e.marker,0),n=t.substring(o);return n.match(i)[2]}(n,i.text),l=n.marker.length+a.length,c=s.getShiftedBy(-l),d=s.getShiftedBy(-a.length),u=t.model.createRange(c,d);if(_S(t)){const e=t.model.markers.get("mention");t.model.change((t=>{t.updateMarker(e,{range:u})}))}else t.model.change((e=>{e.addMarker("mention",{range:u,usingOperation:!1,affectsData:!1})}));this._requestFeedDebounced(n.marker,a)})),i.on("unmatched",(()=>{this._hideUIAndRemoveMarker()}));const n=t.commands.get("mention");return i.bind("isEnabled").to(n),i}_handleFeedResponse(e){const{feed:t,marker:o}=e;if(!_S(this.editor))return;this._items.clear();for(const e of t){const t="object"!=typeof e?{id:e,text:e}:e;this._items.add({item:t,marker:o})}const i=this.editor.model.markers.get("mention");this._items.length?this._showOrUpdateUI(i):this._hideUIAndRemoveMarker()}_showOrUpdateUI(e){this._isUIVisible?this._balloon.updatePosition(this._getBalloonPanelPositionData(e,this._mentionsView.position)):this._balloon.add({view:this._mentionsView,position:this._getBalloonPanelPositionData(e,this._mentionsView.position),singleViewMode:!0,balloonClassName:"ck-mention-balloon"}),this._mentionsView.position=this._balloon.view.position,this._mentionsView.selectFirst()}_hideUIAndRemoveMarker(){this._balloon.hasView(this._mentionsView)&&this._balloon.remove(this._mentionsView),_S(this.editor)&&this.editor.model.change((e=>e.removeMarker("mention"))),this._mentionsView.position=void 0}_renderItem(e,t){const o=this.editor;let i,n=e.id;const s=this._getItemRenderer(t);if(s){const t=s(e);"string"!=typeof t?i=new dS(o.locale,t):n=t}if(!i){const e=new Lu(o.locale);e.label=n,e.withText=!0,i=e}return i}_getBalloonPanelPositionData(e,t){const o=this.editor,i=o.editing,n=i.view.domConverter,s=i.mapper;return{target:()=>{let t=e.getRange();"$graveyard"==t.start.root.rootName&&(t=o.model.document.selection.getFirstRange());const i=s.toViewRange(t);return ut.getDomRangeRects(n.viewRangeToDom(i)).pop()},limiter:()=>{const e=this.editor.editing.view,t=e.document.selection.editableElement;return t?e.domConverter.mapViewToDom(t.root):null},positions:pS(t,o.locale.uiLanguageDirection)}}}function pS(e,t){const o={caret_se:e=>({top:e.bottom+3,left:e.right,name:"caret_se",config:{withArrow:!1}}),caret_ne:(e,t)=>({top:e.top-t.height-3,left:e.right,name:"caret_ne",config:{withArrow:!1}}),caret_sw:(e,t)=>({top:e.bottom+3,left:e.right-t.width,name:"caret_sw",config:{withArrow:!1}}),caret_nw:(e,t)=>({top:e.top-t.height-3,left:e.right-t.width,name:"caret_nw",config:{withArrow:!1}})};return Object.prototype.hasOwnProperty.call(o,e)?[o[e]]:"rtl"!==t?[o.caret_se,o.caret_sw,o.caret_ne,o.caret_nw]:[o.caret_sw,o.caret_se,o.caret_nw,o.caret_ne]}function fS(e,t){let o;for(const i of e){const e=t.lastIndexOf(i.marker);e>0&&!t.substring(e-1).match(i.pattern)||(!o||e>=o.position)&&(o={marker:i.marker,position:e,minimumCharacters:i.minimumCharacters,pattern:i.pattern})}return o}function bS(e,t){const o=0==t?"*":`{${t},}`,i=Y.features.isRegExpUnicodePropertySupported?"\\p{Ps}\\p{Pi}\"'":"\\(\\[{\"'";e=e.replace(/[.*+?^${}()\-|[\]\\]/g,"\\$&");return new RegExp(`(?:^|[ ${i}])(${e})([^#@]${o})$`,"u")}function wS(e){return t=>e.filter((e=>("string"==typeof e?e:String(e.id)).toLowerCase().includes(t.toLowerCase())))}function yS(e){return!!e}function _S(e){return e.model.markers.has("mention")}class kS extends wc{refresh(){const e=this.editor.model,t=e.schema,o=e.document.selection;this.isEnabled=function(e,t,o){const i=function(e,t){const o=cp(e,t),i=o.start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(e,o);return t.checkChild(i,"pageBreak")}(o,t,e)}execute(){const e=this.editor.model;e.change((t=>{const o=t.createElement("pageBreak");e.insertObject(o,null,null,{setSelection:"after"})}))}}class vS extends fc{static get pluginName(){return"PageBreakEditing"}static get licenseFeatureCode(){return"PB"}static get isOfficialPlugin(){return!0}static get isPremiumPlugin(){return!0}init(){const e=this.editor,t=e.model.schema,o=e.t,i=e.conversion;t.register("pageBreak",{inheritAllFrom:"$blockObject"}),i.for("dataDowncast").elementToStructure({model:"pageBreak",view:(e,{writer:t})=>t.createContainerElement("div",{class:"page-break",style:"page-break-after: always"},t.createContainerElement("span",{style:"display: none"}))}),i.for("editingDowncast").elementToStructure({model:"pageBreak",view:(e,{writer:t})=>{const i=o("Page break"),n=t.createContainerElement("div"),s=t.createRawElement("span",{class:"page-break__label"},(function(e){e.innerText=o("Page break")}));return t.addClass("page-break",n),t.insert(t.createPositionAt(n,0),s),function(e,t,o){return t.setCustomProperty("pageBreak",!0,e),np(e,t,{label:o})}(n,t,i)}}),i.for("upcast").elementToElement({view:e=>{const t="always"==e.getStyle("page-break-before"),o="always"==e.getStyle("page-break-after");if(!t&&!o)return null;if(1==e.childCount){const t=e.getChild(0);if(!t.is("element","span")||"none"!=t.getStyle("display"))return null}else if(e.childCount>1)return null;return{name:!0,styles:[...t?["page-break-before"]:[],...o?["page-break-after"]:[]],...e.hasClass("page-break")&&{classes:["page-break"]}}},model:"pageBreak",converterPriority:"high"}),e.commands.add("pageBreak",new kS(e))}}class CS extends fc{static get pluginName(){return"PageBreakUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("pageBreak",(()=>{const e=this._createButton(Lu);return e.set({tooltip:!0}),e})),e.ui.componentFactory.add("menuBar:pageBreak",(()=>this._createButton(sh)))}_createButton(e){const t=this.editor,o=t.locale,i=t.commands.get("pageBreak"),n=new e(t.locale),s=o.t;return n.set({label:s("Page break"),icon:''}),n.bind("isEnabled").to(i,"isEnabled"),this.listenTo(n,"execute",(()=>{t.execute("pageBreak"),t.editing.view.focus()})),n}}class AS extends fc{adapter;_debouncedSave;_lastDocumentVersion;_savePromise;_domEmitter;_config;_pendingActions;_makeImmediateSave;_action=null;static get pluginName(){return"Autosave"}static get isOfficialPlugin(){return!0}static get requires(){return[Lc]}constructor(e){super(e);const t=e.config.get("autosave")||{},o=t.waitingTime||1e3;this.set("state","synchronized"),this._debouncedSave=zo(this._save.bind(this),o),this._lastDocumentVersion=e.model.document.version,this._savePromise=null,this._domEmitter=new(et()),this._config=t,this._pendingActions=e.plugins.get(Lc),this._makeImmediateSave=!1}init(){const e=this.editor,t=e.model.document;this.listenTo(e,"ready",(()=>{this.listenTo(t,"change:data",((e,t)=>{this._saveCallbacks.length&&t.isLocal&&("synchronized"===this.state&&(this.state="waiting",this._setPendingAction()),"waiting"===this.state&&this._debouncedSave())}))})),this.listenTo(e,"destroy",(()=>this._flush()),{priority:"highest"}),this._domEmitter.listenTo(window,"beforeunload",((e,t)=>{this._pendingActions.hasAny&&(t.returnValue=this._pendingActions.first.message)}))}destroy(){this._domEmitter.stopListening(),super.destroy()}save(){return this._debouncedSave.cancel(),this._save()}_flush(){this._debouncedSave.flush()}_save(){return this._savePromise?(this._makeImmediateSave=this.editor.model.document.version>this._lastDocumentVersion,this._savePromise):(this._setPendingAction(),this.state="saving",this._lastDocumentVersion=this.editor.model.document.version,this._savePromise=Promise.resolve().then((()=>Promise.all(this._saveCallbacks.map((e=>e(this.editor)))))).finally((()=>{this._savePromise=null})).then((()=>{if(this._makeImmediateSave)return this._makeImmediateSave=!1,this._save();this.editor.model.document.version>this._lastDocumentVersion?(this.state="waiting",this._debouncedSave()):(this.state="synchronized",this._pendingActions.remove(this._action),this._action=null)})).catch((e=>{throw this.state="error",this.state="saving",this._debouncedSave(),e})),this._savePromise)}_setPendingAction(){const e=this.editor.t;this._action||(this._action=this._pendingActions.add(e("Saving changes")))}get _saveCallbacks(){const e=[];return this.adapter&&this.adapter.save&&e.push(this.adapter.save),this._config.save&&e.push(this._config.save),e}}var xS=o(992);function ES(e){return e.trim().split(/\s+/).length}function TS(e){const t=e.length;let o=5381;for(let i=0;i>>0}function PS(e){const t=localStorage.getItem(e);if(!t)return null;try{return JSON.parse(xS.decompress(t))}catch(e){return console.error("Failed to load CKEditor revisions from localStorage: "+e.toString()),null}}class SS extends fc{init(){const e=this.editor,t=Lp(e);e.ui.componentFactory.add("opContentRevisions",(o=>{const i=Zh(o),n=new eo;return Xh(i,n,{role:"menu",ariaLabel:t.t("js.editor.revisions")}),i.buttonView.set({label:t.t("js.editor.revisions"),icon:'\n\n\n',tooltip:!0}),this.listenTo(i.buttonView,"execute",(async()=>{n.clear(),function(e,t){const o=e.config.get(RS),i=PS(o),n=Lp(e),s=Np(e,"timezone");if(!i?.items||i.items.count<=0){const e={type:"button",model:{label:n.t("js.editor.no_revisions"),withText:!0}};return void t.add(e)}const r=e.getData(),a=TS(r);for(let e=i.items.length;e>0;){e--;const o=i.items[e],r=s.formattedRelativeDateTime(o.timestamp),l=n.t("js.units.word",{count:ES(o.content)}),c=`${o.hash===a?`${n.t("js.label_current")} - `:""}${r} (${l})`,d={type:"button",model:{timestamp:o.timestamp,label:c,withText:!0}};t.add(d)}}(e,n)})),i.on("execute",(t=>{const{timestamp:o}=t.source;o&&e.execute("opContentRevisionApply",o)})),i}))}}class IS extends wc{async execute(e){const t=this.editor,o=t.config.get(RS),i=await PS(o);if(!i)return void console.error(`Trying to load revision ${e} but no record present.`);const n=i.items.find((t=>t.timestamp===e));n&&(t.setData(n.content),setTimeout((()=>{t.editing.view.focus()})))}}const RS="opContentRevisionKey",OS="op_ckeditor_rev";const VS=[Op,class extends fc{static get requires(){return[zp,vp,Wp]}static get pluginName(){return"OPMacroEmbeddedTable"}static get buttonName(){return zp.buttonName}},class extends fc{static get requires(){return[Gp,vp,Jp]}static get pluginName(){return"OPMacroWpButton"}static get buttonName(){return Gp.buttonName}},class extends fc{static get requires(){return[uw,vp,hw]}static get pluginName(){return"OPChildPages"}static get buttonName(){return uw.buttonName}}],DS=[class extends fc{static get requires(){return[Qp,Db]}static get pluginName(){return"OpUploadPlugin"}init(){this.editor.plugins.get("FileRepository").createUploadAdapter=e=>{const t=Fp(this.editor);return new Xp(e,t,this.editor)}}},class extends fc{static get pluginName(){return"OPAttachmentListener"}init(){this.editor.model.on("op:attachment-removed",((e,t)=>{this.removeDeletedImage(t)}))}removeDeletedImage(e){let t=this.editor.model.document.getRoot();for(const o of Array.from(t.getChildren()))if("image"===o.name&&e.indexOf(o.getAttribute("src"))>-1){const e=this.editor.model.createSelection(o,"on");this.editor.model.deleteContent(e)}}}],FS=[class extends fc{static get requires(){return[rh,Of,Kg,ww,Qg,Pg,zf]}static get pluginName(){return"Essentials"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[Qp]}static get pluginName(){return"CKFinderUploadAdapter"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.config.get("ckfinder.uploadUrl");e&&(this.editor.plugins.get(Qp).createUploadAdapter=t=>new vw(t,e,this.editor.t))}},class extends fc{static get requires(){return[Tg]}static get pluginName(){return"Autoformat"}static get isOfficialPlugin(){return!0}afterInit(){const e=this.editor,t=this.editor.t;this._addListAutoformats(),this._addBasicStylesAutoformats(),this._addHeadingAutoformats(),this._addBlockQuoteAutoformats(),this._addCodeBlockAutoformats(),this._addHorizontalLineAutoformats(),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Revert autoformatting action"),keystroke:"Backspace"}]})}_addListAutoformats(){const e=this.editor.commands;e.get("bulletedList")&&Cw(this.editor,this,/^[*-]\s$/,"bulletedList"),e.get("numberedList")&&Cw(this.editor,this,/^1[.|)]\s$/,"numberedList"),e.get("todoList")&&Cw(this.editor,this,/^\[\s?\]\s$/,"todoList"),e.get("checkTodoList")&&Cw(this.editor,this,/^\[\s?x\s?\]\s$/,(()=>{this.editor.execute("todoList"),this.editor.execute("checkTodoList")}))}_addBasicStylesAutoformats(){const e=this.editor.commands;if(e.get("bold")){const e=Ew(this.editor,"bold");Aw(this.editor,this,/(?:^|\s)(\*\*)([^*]+)(\*\*)$/g,e),Aw(this.editor,this,/(?:^|\s)(__)([^_]+)(__)$/g,e)}if(e.get("italic")){const e=Ew(this.editor,"italic");Aw(this.editor,this,/(?:^|\s)(\*)([^*_]+)(\*)$/g,e),Aw(this.editor,this,/(?:^|\s)(_)([^_]+)(_)$/g,e)}if(e.get("code")){const e=Ew(this.editor,"code");Aw(this.editor,this,/(`)([^`]+)(`)$/g,e)}if(e.get("strikethrough")){const e=Ew(this.editor,"strikethrough");Aw(this.editor,this,/(~~)([^~]+)(~~)$/g,e)}}_addHeadingAutoformats(){const e=this.editor.commands.get("heading");e&&e.modelElements.filter((e=>e.match(/^heading[1-6]$/))).forEach((t=>{const o=t[7],i=new RegExp(`^(#{${o}})\\s$`);Cw(this.editor,this,i,(()=>{if(!e.isEnabled||e.value===t)return!1;this.editor.execute("heading",{value:t})}))}))}_addBlockQuoteAutoformats(){this.editor.commands.get("blockQuote")&&Cw(this.editor,this,/^>\s$/,"blockQuote")}_addCodeBlockAutoformats(){const e=this.editor,t=e.model.document.selection;e.commands.get("codeBlock")&&Cw(e,this,/^```$/,(()=>{if(t.getFirstPosition().parent.is("element","listItem"))return!1;this.editor.execute("codeBlock",{usePreviousLanguageChoice:!0})}))}_addHorizontalLineAutoformats(){this.editor.commands.get("horizontalLine")&&Cw(this.editor,this,/^---$/,"horizontalLine")}},AS,class extends fc{static get requires(){return[Sw,Ow]}static get pluginName(){return"Bold"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[Dw,Mw]}static get pluginName(){return"Code"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[Bw,zw]}static get pluginName(){return"Italic"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[qw,Hw]}static get pluginName(){return"Strikethrough"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[Jw,Zw]}static get pluginName(){return"BlockQuote"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[ny,ry]}static get pluginName(){return"Heading"}static get isOfficialPlugin(){return!0}},gb,fb,class extends fc{static get requires(){return[yb,_b]}static get pluginName(){return"ImageCaption"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[iw,nw]}static get pluginName(){return"ImageStyle"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[Mb,$b,Gb,Bb]}static get pluginName(){return"ImageResize"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[Ap,Gf]}static get pluginName(){return"ImageToolbar"}static get isOfficialPlugin(){return!0}afterInit(){const e=this.editor,t=e.t,o=e.plugins.get(Ap),i=e.plugins.get("ImageUtils");o.register("image",{ariaLabel:t("Image toolbar"),items:lw(e.config.get("image.toolbar")||[]),getRelatedElement:e=>i.getClosestSelectedImageWidget(e)})}},class extends fc{static get pluginName(){return"OpImageAttachmentLookup"}init(){const e=this.editor,t=e.conversion,o=Fp(e);t.for("editingDowncast").add(function(e){return e=>{e.on("attribute:src:imageBlock",t,{priority:"highest"}),e.on("attribute:src:imageInline",t,{priority:"highest"})};function t(t,o,i){let n=o.attributeNewValue;if(!n||!e.lookupDownloadLocationByName)return;const s=e.lookupDownloadLocationByName(n);o.attributeNewValue=s||n}}(o)),t.for("dataDowncast").add(function(e){return e=>{e.on("attribute:src:imageBlock",t,{priority:"highest"}),e.on("attribute:src:imageInline",t,{priority:"highest"})};function t(t,o,i){let n=o.attributeNewValue;if(!n||!e.lookupDownloadLocationByName)return;const s=e.lookupDownloadLocationByName(n);o.attributeNewValue=s||n;const r=i.writer,a=i.mapper.toViewElement(o.item);let l;l="imageInline"===o.item.name?a:a.getChild(0),s&&r.setAttribute("data-original-src",n,l)}}(o));const i=e.plugins.get("ImageUtils");i.decorate("setImageNaturalSizeAttributes"),i.on("setImageNaturalSizeAttributes",((e,[t])=>{console.log("model image element:",{element:t}),e.stop()}),{priority:"highest"})}},class extends fc{static get requires(){return[Ty,Dy,Ny]}static get pluginName(){return"Link"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[z_,H_]}static get pluginName(){return"List"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[Y_,ik]}static get pluginName(){return"TodoList"}static get isOfficialPlugin(){return!0}},class extends fc{static get requires(){return[vS,CS,vp]}static get pluginName(){return"PageBreak"}static get isOfficialPlugin(){return!0}},ey,Pg,class extends fc{toMentionAttribute(e,t){return nS(e,t)}static get pluginName(){return"Mention"}static get isOfficialPlugin(){return!0}static get requires(){return[oS,gS]}},function(e){const t=Mp(e),o=e.editing.view,i=o.document;o.addObserver(ol),e.listenTo(i,"click",((e,t)=>{if("A"===t.domTarget.nodeName&&t.domTarget.classList.contains("mention")){const e=document.createElement("a");e.target="_blank",e.href=t.domTarget.attributes.href.value,e.click()}})),e.conversion.for("upcast").elementToAttribute({view:{name:"mention",key:"data-mention",classes:"mention"},model:{key:"mention",value:o=>{const i=o.getAttribute("data-id"),n=o.getAttribute("data-type"),s=o.getAttribute("data-text"),r=function(e,o){const i=t.services.apiV3Service[`${o}s`].segment,n=window.OpenProject.urlRoot;return`${n}/${i}/${e}`}(i,n);return e.plugins.get("Mention").toMentionAttribute(o,{idNumber:i,link:r,text:s,type:n})}},converterPriority:"high"}),e.conversion.for("upcast").elementToAttribute({view:{name:"span",key:"data-mention",classes:"mention"},model:{key:"mention",value:e=>{const t=[...e.getChildren()][0],o=t&&t.data;if(o){const e=`[Invalid mention: ${o}]`;t._data=e}}},converterPriority:"high"}),e.conversion.for("editingDowncast").attributeToElement({model:"mention",converterPriority:"high",view:(e,{writer:t})=>{if(!e)return;if("emoji"===e.type)return t.createAttributeElement("span");return t.createAttributeElement("a",{class:"mention",href:e.link,"data-mention":e.text,title:e.text})}}),e.conversion.for("dataDowncast").attributeToElement({model:"mention",converterPriority:"high",view:(e,{writer:t})=>{if(!e)return;if("emoji"===e.type)return t.createAttributeElement("span");return t.createAttributeElement("mention",{class:"mention","data-id":e.idNumber,"data-type":e.type,"data-text":e.text})}})},class extends fc{static get pluginName(){return"PasteFromOffice"}static get licenseFeatureCode(){return"PFO"}static get isOfficialPlugin(){return!0}static get isPremiumPlugin(){return!0}static get requires(){return[bf]}init(){const e=this.editor,t=e.plugins.get("ClipboardPipeline"),o=e.editing.view.document,i=[],n=this.editor.plugins.has("MultiLevelListEditing"),s=this.editor.plugins.has("TablePropertiesEditing");i.push(new qA(o,n,s)),i.push(new GA(o)),i.push(new ZA(o)),t.on("inputTransformation",((t,n)=>{if(n._isTransformedWithPasteFromOffice)return;if(e.model.document.selection.getFirstPosition().parent.is("element","codeBlock"))return;const s=n.dataTransfer.getData("text/html"),r=i.find((e=>e.isActive(s)));r&&(n._parsedData||(n._parsedData=YA(s,o.stylesProcessor)),r.execute(n),n._isTransformedWithPasteFromOffice=!0)}),{priority:"high"})}},class extends fc{static get pluginName(){return"OPHelpLinkPlugin"}init(){const e=this.editor,t=e.config.get("openProject.helpURL");e.ui.componentFactory.add("openProjectShowFormattingHelp",(e=>{const o=new Lu(e);return o.set({label:window.I18n.t("js.inplace.link_formatting_help"),icon:'',tooltip:!0}),o.on("execute",(()=>{window.open(t,"_blank")})),o}))}},class extends fc{static get pluginName(){return"OPPreview"}init(){const e=this.editor;let t=!1,o=null;e.ui.componentFactory.add("preview",(i=>{const n=new Lu(i);n.set({label:this.label,icon:'\n',tooltip:!0});let s=function(t){const i=e.ui.getEditableElement(),s=i?.parentElement;if(!s?.parentElement)return void console.error("Cannot show preview: invalid editor structure");const r=document.createElement("div");r.className="ck-editor__preview op-uc-container";Array.from(s.parentElement.children).filter((e=>e!==s&&e.classList.contains("ck-editor__preview"))).forEach((e=>e.remove()));const a=Np(e,"ckEditorPreview");o=a.render(r,t),s.style.display="none",s.parentElement.insertBefore(r,s.nextSibling),gk(e,n)},r=function(){let o=function(e){return _.get(e.config,"_config.openProject.context.previewContext")}(e);(async function(e,t){return new yk("post",e,t).perform()})(Bp(e).api.v3.previewMarkup(o),{contentType:"text/plain; charset=UTF-8",responseKind:"html",body:e.getData()}).then((e=>e.html)).then(s).catch((o=>{console.error("Error fetching preview:",o),t=!1,pk(e)}))};return n.on("execute",(()=>{t?(t=!1,function(){const t=e.ui.getEditableElement(),i=t?.parentElement;if(!i?.parentElement)return void console.error("Cannot disable preview: invalid editor structure");o&&o(),Array.from(i.parentElement.children).filter((e=>e!==i&&e.classList.contains("ck-editor__preview"))).forEach((e=>e.remove())),i.style.display="",pk(e)}()):(t=!0,r())})),n}))}get label(){return window.I18n.t("js.editor.preview")}},class extends fc{static get pluginName(){return"OPSourceCode"}init(){const e=this.editor;let t=!1,o={source:window.I18n.t("js.editor.mode.manual"),wysiwyg:window.I18n.t("js.editor.mode.wysiwyg")};e.ui.componentFactory.add("opShowSource",(i=>{const n=new Lu(i);n.set({label:o.source,class:"",icon:XP,tooltip:!0});return n.on("execute",(()=>{t?(t=!1,function(){const t=e.ui.getEditableElement(),i=t?.parentElement;if(!i?.parentElement)return void console.error("Cannot hide source: invalid editor structure");e.fire("op:source-code-disabled"),Array.from(i.parentElement.children).filter((e=>e!==i&&e.classList.contains("ck-editor__source"))).forEach((e=>e.remove())),i.style.display="",pk(e),n.set({label:o.source,class:"",icon:XP,tooltip:!0})}()):(t=!0,function(){const t=e.ui.getEditableElement(),i=t?.parentElement;if(!i?.parentElement)return void console.error("Cannot show source: invalid editor structure");const s=document.createElement("div");s.className="ck-editor__source",Array.from(i.parentElement.children).filter((e=>e!==i&&e.classList.contains("ck-editor__source"))).forEach((e=>e.remove())),i.style.display="none",i.parentElement.insertBefore(s,i.nextSibling),gk(e,n),e.fire("op:source-code-enabled"),n.set({label:o.wysiwyg,class:"-source-enabled",icon:'\n\n \n \n \n image/svg+xml\n \n \n \n \n \n \n \n \n\n',tooltip:!0})}())})),n}))}},class extends fc{static get requires(){return[AS,SS]}static get pluginName(){return"OpContentRevisions"}constructor(e){super(e);const t=this.getStorageKey(e);e.config.define(RS,t)}init(){const e=this.editor;e.commands.add("opContentRevisionApply",new IS(e)),e.once("ready",(()=>{const t=Date.now();e.plugins.get("Autosave")._domEmitter.stopListening(window,"beforeunload"),Object.keys(localStorage).forEach((e=>{if(e.startsWith(OS)){const o=PS(e);o?.updatedAt&&t-o.updatedAt>=288e5&&localStorage.removeItem(e)}}))}))}getStorageKey(e){const t=e.config.get("storageKey");return t||this.createLocalStorageKey(e)}createLocalStorageKey(e){const t=Fp(e),o=function(e){return _.get(e.config,"_config.openProject.context.field")}(e);let i="";return i=t?.href?t.href:location.pathname,o&&(i+=`_${o}`),`${OS}_${i}`}},class extends fc{static get pluginName(){return"CodeBlock"}static get requires(){return[uk,hk]}},function(e){e.data.processor=new YP(e.editing.view.document)},mC,class extends fc{static get requires(){return[Ap]}static get pluginName(){return"TableToolbar"}static get isOfficialPlugin(){return!0}afterInit(){const e=this.editor,t=e.t,o=e.plugins.get(Ap),i=e.config.get("table.contentToolbar"),n=e.config.get("table.tableToolbar");i&&o.register("tableContent",{ariaLabel:t("Table toolbar"),items:i,getRelatedElement:fC}),n&&o.register("table",{ariaLabel:t("Table toolbar"),items:n,getRelatedElement:pC})}},class extends fc{static get pluginName(){return"TableProperties"}static get isOfficialPlugin(){return!0}static get requires(){return[hA,yA]}},class extends fc{static get pluginName(){return"TableCellProperties"}static get isOfficialPlugin(){return!0}static get requires(){return[iA,zC]}},class extends fc{init(){const e=this.editor,t=(e.config.get("removePlugins")||[]).map((e=>e.pluginName)),o=window.I18n.t("js.editor.macro.dropdown.chose_macro");!0!==e.config.get("openProject.disableAllMacros")&&e.ui.componentFactory.add("macroList",(i=>{const n=[];for(const o of VS){if(-1!==t.indexOf(o.pluginName))continue;const i=e.ui.componentFactory.create(o.buttonName);n.push(i)}const s=Zh(i);return Qh(s,n,{isVertical:!0,class:"op-macro-list-button"}),s.buttonView.set({isOn:!1,withText:!0,tooltip:o,label:window.I18n.t("js.editor.macro.dropdown.macros")}),s}))}},class extends fc{get config(){const e="op-uc-";return{preFix:e,editorClasses:[`${e}container`,`${e}container_editing`],elementsWithCustomClassesMap:{paragraph:`${e}p`,heading1:`${e}h1`,heading2:`${e}h2`,heading3:`${e}h3`,heading4:`${e}h4`,heading5:`${e}h5`,heading6:`${e}h6`,blockQuote:`${e}blockquote`,figure:`${e}figure`,table:`${e}table`,thead:`${e}table--head`,tr:`${e}table--row`,td:`${e}table--cell`,th:[`${e}table--cell`,`${e}table--cell_head`],tableCell:`${e}table--cell`,tableRow:`${e}table--row`,ol:`${e}list`,ul:`${e}list`,list:`${e}list`,todo:`${e}list ${e}list_task-list`,listItem:`${e}list--item`,li:`${e}list--item`,imageInline:`${e}image ${e}image_inline`,imageBlock:`${e}image`,img:`${e}image`,codeblock:`${e}code-block`,caption:`${e}figure--description`,"op-macro-embedded-table":[`${e}placeholder`,`${e}embedded-table`],"op-macro-wp-button":[`${e}placeholder`,`${e}wp-button`],"op-macro-child-pages":[`${e}placeholder`,`${e}child-pages`],"op-macro-toc":[`${e}placeholder`,`${e}toc`],content:`${e}figure--content`},attributesWithCustomClassesMap:{code:`${e}code`,linkHref:`${e}link`,alignment:`${e}figure_align-`,tableAlignment:`${e}figure_align-`,todo:`${e}list_task-list`,numbered:`${e}list`,bulleted:`${e}list`,listType:null,headingColumns:null,width:null,uploadStatus:null},alignmentValuesMap:{left:"start",right:"end",blockLeft:"start",blockRight:"end",center:"center",default:"center"}}}init(){this._addCustomCSSClassesToTheEditorContainer(this.editor),this._addCustomCSSClassesToElements(this.config),this._addCustomCSSClassesToAttributes(this.config)}_addCustomCSSClassesToTheEditorContainer(e){e.sourceElement.classList.add(...this.config.editorClasses)}_addCustomCSSClassesToElements(e){this.editor.model.schema.extend("table",{allowAttributes:["figureClasses"]}),this.editor.conversion.for("upcast").add((t=>t.on("element:table",this._manageTableUpcast(e))),{priority:"high"}),this.editor.conversion.for("downcast").add((t=>t.on("insert",this._manageElementsInsertion(e),{priority:"low"})))}_addCustomCSSClassesToAttributes(e){this.editor.conversion.for("downcast").add((t=>t.on("attribute",this._manageAttributesInsertion(e),{priority:"low"})))}_manageTableUpcast(e){return(t,o,i)=>{const n=i.writer,s=o.viewItem,r=o.modelRange,a=r&&r.start.nodeAfter;if(!a)return;let l=a.getAttribute("figureClasses")||[],c=s.parent.getClassNames&&s.parent.getClassNames();const d=c?[...c].filter((e=>!!e)):[];l=[...l,...d];const u=d.filter((t=>t.startsWith(e.attributesWithCustomClassesMap.alignment)))[0],h=u&&u.replace(e.attributesWithCustomClassesMap.alignment,"")||e.alignmentValuesMap.default,m=Object.keys(e.alignmentValuesMap).find((t=>e.alignmentValuesMap[t]===h))||"center";if(!u){const t=`${e.attributesWithCustomClassesMap.alignment}${h}`;l=[...l,t]}n.setAttribute("figureClasses",l,a),"center"===m?n.setAttribute("alignment",null,a):n.setAttribute("alignment",m,a)}}_manageElementsInsertion(e){return(t,o,i)=>{const n=Object.keys(e.elementsWithCustomClassesMap),s=i.writer,r=o.item.name,a=o.item,l=i.mapper.toViewElement(a);let c=[l];const d=["imageBlock","table","tableCell","tableRow","listItem"].includes(r);if(n.includes(r)&&l){if(d)if("listItem"===r)c=this._manageListItems(s,a,l,c,e);else{const t=l,o=Array.from(s.createRangeIn(l).getItems());if("imageBlock"===r){const i=o.find((e=>e.is("element","img")));this._wrapInFigureContentContainer(i,t,e,s),c=[...c,i]}else if("table"===r||"tableRow"===r){const i=o.filter((e=>n.includes(e.name)));if(c=[...c,...i],"table"===r){if(!a.getAttribute("tableAlignment")){const o=`${e.attributesWithCustomClassesMap.alignment}${e.alignmentValuesMap.default}`;s.addClass(o,t)}}}}c.forEach((t=>{const o=d?t.name:r,i=e.elementsWithCustomClassesMap[o];s.addClass(i,t)}))}}}_manageAttributesInsertion(e){return(t,o,i)=>{const n=Object.keys(e.attributesWithCustomClassesMap),s=o.attributeKey,r=i.writer,a=o.item,l=i.mapper.toViewElement(a);if(n.includes(s))if("linkHref"===s||"code"===s){const t="linkHref"===s?"a":s,n="linkHref"===s?5:10,l=r.document.selection,c=r.createAttributeElement(t,{class:e.attributesWithCustomClassesMap[s]},{priority:n});a.is("selection")?r.wrap(l.getFirstRange(),c):r.wrap(i.mapper.toViewRange(o.range),c)}else if("tableAlignment"===s){const t=l,i=e.alignmentValuesMap[o.attributeNewValue]||e.alignmentValuesMap.default;Array.from(new Set(Object.values(e.alignmentValuesMap))).map((t=>`${e.attributesWithCustomClassesMap[s]}${t}`)).filter((e=>t.hasClass(e))).forEach((e=>r.removeClass(e,t))),t.hasStyle("float")&&r.removeStyle("float",t),r.addClass(`${e.attributesWithCustomClassesMap[s]}${i}`,t)}else if("listType"===s){this._manageListItems(r,a,l,[l],e).forEach((t=>{const o=t.name,i=e.elementsWithCustomClassesMap[o];r.addClass(i,t)}))}else if("headingColumns"===s){const t=o.attributeNewValue,i=Array.from(r.createRangeIn(l).getItems()).filter((t=>Object.keys(e.elementsWithCustomClassesMap).includes(t.name)));t?i.forEach((t=>{const o=t.name,i=e.elementsWithCustomClassesMap[o];r.addClass(i,t)})):i.filter((t=>t.hasClass(e.elementsWithCustomClassesMap.th[1]))).forEach((t=>{const o=t.nextSibling;o&&"th"!==o.name&&r.removeClass(e.elementsWithCustomClassesMap.th[1],t)}))}else if("width"===s)l.hasClass("image_resized")&&r.removeClass("image_resized",l);else if("uploadStatus"===s&&"complete"===o.attributeNewValue){let e=Array.from(r.createRangeIn(l).getItems()).find((e=>e.hasClass("ck-upload-placeholder-loader")));e&&r.remove(r.createRangeOn(e))}}}_manageListItems(e,t,o,i,n){const s=o.findAncestor("li"),r=o.findAncestor(/^(ul|ol)$/);if(!r)return i;const a=t.getAttribute("listType"),l=n.attributesWithCustomClassesMap[a];if("todo"===a)e.addClass(l,r);else{const t=n.attributesWithCustomClassesMap.todo;r.hasClass(t)&&e.removeClass(t,r)}return[...i,r,s]}_wrapInFigureContentContainer(e,t,o,i){const n=i.createContainerElement("div",{class:o.elementsWithCustomClassesMap.content});i.insert(i.createPositionAt(n,0),e),i.insert(i.createPositionAt(t,0),n)}}].concat(VS,DS);function MS(e){return function(t){const o=window.OpenProject.urlRoot+"/work_packages/auto_complete.json";let i=window.OpenProject.urlRoot+"/work_packages/";return this.config.get("disabledMentions").includes("work_package")?[]:new Promise(((n,s)=>{_k(o,{responseKind:"json",query:{q:t,scope:"all"}}).then((e=>e.json)).then((t=>{n(t.map((t=>{const o=`${e}${t.id}`;return{id:o,idNumber:t.id,type:"work_package",text:o,name:t.to_s,link:i+t.id}})))})).catch((e=>{console.error("Error fetching work package mentions:",e),s(e)}))}))}}function NS(e){const t=document.createElement("span");return"user"!==e.type&&"work_package"!==e.type||(t.setAttribute("data-hover-card-trigger-target","trigger"),t.setAttribute("data-hover-card-url",`${e.link}/hover_card`)),t.classList.add("mention-list-item"),t.textContent=e.name,t}const BS=JSON.parse('[{"id":":grinning_face:","symbol":"😀","group":"people","keywords":["face","grin","grinning face"]},{"id":":beaming_face_with_smiling_eyes:","symbol":"😁","group":"people","keywords":["beaming face with smiling eyes","eye","face","grin","smile"]},{"id":":face_with_tears_of_joy:","symbol":"😂","group":"people","keywords":["face","face with tears of joy","joy","laugh","tear"]},{"id":":rolling_on_the_floor_laughing:","symbol":"🤣","group":"people","keywords":["face","floor","laugh","rolling","rolling on the floor laughing"]},{"id":":grinning_face_with_big_eyes:","symbol":"😃","group":"people","keywords":["face","grinning face with big eyes","mouth","open","smile"]},{"id":":grinning_face_with_smiling_eyes:","symbol":"😄","group":"people","keywords":["eye","face","grinning face with smiling eyes","mouth","open","smile"]},{"id":":grinning_face_with_sweat:","symbol":"😅","group":"people","keywords":["cold","face","grinning face with sweat","open","smile","sweat"]},{"id":":grinning_squinting_face:","symbol":"😆","group":"people","keywords":["face","grinning squinting face","laugh","mouth","satisfied","smile"]},{"id":":winking_face:","symbol":"😉","group":"people","keywords":["face","wink","winking face"]},{"id":":smiling_face_with_smiling_eyes:","symbol":"😊","group":"people","keywords":["blush","eye","face","smile","smiling face with smiling eyes"]},{"id":":face_savoring_food:","symbol":"😋","group":"people","keywords":["delicious","face","face savoring food","savouring","smile","yum"]},{"id":":smiling_face_with_sunglasses:","symbol":"😎","group":"people","keywords":["bright","cool","face","smiling face with sunglasses","sun","sunglasses"]},{"id":":smiling_face_with_heart-eyes:","symbol":"😍","group":"people","keywords":["eye","face","love","smile","smiling face with heart-eyes"]},{"id":":face_blowing_a_kiss:","symbol":"😘","group":"people","keywords":["face","face blowing a kiss","kiss"]},{"id":":kissing_face:","symbol":"😗","group":"people","keywords":["face","kiss","kissing face"]},{"id":":kissing_face_with_smiling_eyes:","symbol":"😙","group":"people","keywords":["eye","face","kiss","kissing face with smiling eyes","smile"]},{"id":":kissing_face_with_closed_eyes:","symbol":"😚","group":"people","keywords":["closed","eye","face","kiss","kissing face with closed eyes"]},{"id":":smiling_face:","symbol":"☺","group":"people","keywords":["face","outlined","relaxed","smile","smiling face"]},{"id":":slightly_smiling_face:","symbol":"🙂","group":"people","keywords":["face","slightly smiling face","smile"]},{"id":":hugging_face:","symbol":"🤗","group":"people","keywords":["face","hug","hugging"]},{"id":":star-struck:","symbol":"🤩","group":"people","keywords":["eyes","face","grinning","star","star-struck",""]},{"id":":thinking_face:","symbol":"🤔","group":"people","keywords":["face","thinking"]},{"id":":face_with_raised_eyebrow:","symbol":"🤨","group":"people","keywords":["distrust","face with raised eyebrow","skeptic",""]},{"id":":neutral_face:","symbol":"😐","group":"people","keywords":["deadpan","face","neutral"]},{"id":":expressionless_face:","symbol":"😑","group":"people","keywords":["expressionless","face","inexpressive","unexpressive"]},{"id":":face_without_mouth:","symbol":"😶","group":"people","keywords":["face","face without mouth","mouth","quiet","silent"]},{"id":":face_with_rolling_eyes:","symbol":"🙄","group":"people","keywords":["eyes","face","face with rolling eyes","rolling"]},{"id":":smirking_face:","symbol":"😏","group":"people","keywords":["face","smirk","smirking face"]},{"id":":persevering_face:","symbol":"😣","group":"people","keywords":["face","persevere","persevering face"]},{"id":":sad_but_relieved_face:","symbol":"😥","group":"people","keywords":["disappointed","face","relieved","sad but relieved face","whew"]},{"id":":face_with_open_mouth:","symbol":"😮","group":"people","keywords":["face","face with open mouth","mouth","open","sympathy"]},{"id":":zipper-mouth_face:","symbol":"🤐","group":"people","keywords":["face","mouth","zipper","zipper-mouth face"]},{"id":":hushed_face:","symbol":"😯","group":"people","keywords":["face","hushed","stunned","surprised"]},{"id":":sleepy_face:","symbol":"😪","group":"people","keywords":["face","sleep","sleepy face"]},{"id":":tired_face:","symbol":"😫","group":"people","keywords":["face","tired"]},{"id":":sleeping_face:","symbol":"😴","group":"people","keywords":["face","sleep","sleeping face","zzz"]},{"id":":relieved_face:","symbol":"😌","group":"people","keywords":["face","relieved"]},{"id":":face_with_tongue:","symbol":"😛","group":"people","keywords":["face","face with tongue","tongue"]},{"id":":winking_face_with_tongue:","symbol":"😜","group":"people","keywords":["eye","face","joke","tongue","wink","winking face with tongue"]},{"id":":squinting_face_with_tongue:","symbol":"😝","group":"people","keywords":["eye","face","horrible","squinting face with tongue","taste","tongue"]},{"id":":drooling_face:","symbol":"🤤","group":"people","keywords":["drooling","face"]},{"id":":unamused_face:","symbol":"😒","group":"people","keywords":["face","unamused","unhappy"]},{"id":":downcast_face_with_sweat:","symbol":"😓","group":"people","keywords":["cold","downcast face with sweat","face","sweat"]},{"id":":pensive_face:","symbol":"😔","group":"people","keywords":["dejected","face","pensive"]},{"id":":confused_face:","symbol":"😕","group":"people","keywords":["confused","face"]},{"id":":upside-down_face:","symbol":"🙃","group":"people","keywords":["face","upside-down"]},{"id":":money-mouth_face:","symbol":"🤑","group":"people","keywords":["face","money","money-mouth face","mouth"]},{"id":":astonished_face:","symbol":"😲","group":"people","keywords":["astonished","face","shocked","totally"]},{"id":":frowning_face:","symbol":"☹","group":"people","keywords":["face","frown","frowning face"]},{"id":":slightly_frowning_face:","symbol":"🙁","group":"people","keywords":["face","frown","slightly frowning face"]},{"id":":confounded_face:","symbol":"😖","group":"people","keywords":["confounded","face"]},{"id":":disappointed_face:","symbol":"😞","group":"people","keywords":["disappointed","face"]},{"id":":worried_face:","symbol":"😟","group":"people","keywords":["face","worried"]},{"id":":face_with_steam_from_nose:","symbol":"😤","group":"people","keywords":["face","face with steam from nose","triumph","won"]},{"id":":crying_face:","symbol":"😢","group":"people","keywords":["cry","crying face","face","sad","tear"]},{"id":":loudly_crying_face:","symbol":"😭","group":"people","keywords":["cry","face","loudly crying face","sad","sob","tear"]},{"id":":frowning_face_with_open_mouth:","symbol":"😦","group":"people","keywords":["face","frown","frowning face with open mouth","mouth","open"]},{"id":":anguished_face:","symbol":"😧","group":"people","keywords":["anguished","face"]},{"id":":fearful_face:","symbol":"😨","group":"people","keywords":["face","fear","fearful","scared"]},{"id":":weary_face:","symbol":"😩","group":"people","keywords":["face","tired","weary"]},{"id":":exploding_head:","symbol":"🤯","group":"people","keywords":["exploding head","shocked"]},{"id":":grimacing_face:","symbol":"😬","group":"people","keywords":["face","grimace","grimacing face"]},{"id":":anxious_face_with_sweat:","symbol":"😰","group":"people","keywords":["anxious face with sweat","blue","cold","face","rushed","sweat"]},{"id":":face_screaming_in_fear:","symbol":"😱","group":"people","keywords":["face","face screaming in fear","fear","munch","scared","scream"]},{"id":":flushed_face:","symbol":"😳","group":"people","keywords":["dazed","face","flushed"]},{"id":":zany_face:","symbol":"🤪","group":"people","keywords":["eye","goofy","large","small","zany face"]},{"id":":dizzy_face:","symbol":"😵","group":"people","keywords":["dizzy","face"]},{"id":":pouting_face:","symbol":"😡","group":"people","keywords":["angry","face","mad","pouting","rage","red"]},{"id":":angry_face:","symbol":"😠","group":"people","keywords":["angry","face","mad"]},{"id":":face_with_symbols_on_mouth:","symbol":"🤬","group":"people","keywords":["face with symbols on mouth","swearing",""]},{"id":":face_with_medical_mask:","symbol":"😷","group":"people","keywords":["cold","doctor","face","face with medical mask","mask","sick"]},{"id":":face_with_thermometer:","symbol":"🤒","group":"people","keywords":["face","face with thermometer","ill","sick","thermometer"]},{"id":":face_with_head-bandage:","symbol":"🤕","group":"people","keywords":["bandage","face","face with head-bandage","hurt","injury"]},{"id":":nauseated_face:","symbol":"🤢","group":"people","keywords":["face","nauseated","vomit"]},{"id":":face_vomiting:","symbol":"🤮","group":"people","keywords":["face vomiting","sick","vomit"]},{"id":":sneezing_face:","symbol":"🤧","group":"people","keywords":["face","gesundheit","sneeze","sneezing face"]},{"id":":smiling_face_with_halo:","symbol":"😇","group":"people","keywords":["angel","face","fantasy","halo","innocent","smiling face with halo"]},{"id":":cowboy_hat_face:","symbol":"🤠","group":"people","keywords":["cowboy","cowgirl","face","hat"]},{"id":":lying_face:","symbol":"🤥","group":"people","keywords":["face","lie","lying face","pinocchio"]},{"id":":shushing_face:","symbol":"🤫","group":"people","keywords":["quiet","shush","shushing face"]},{"id":":face_with_hand_over_mouth:","symbol":"🤭","group":"people","keywords":["face with hand over mouth","whoops",""]},{"id":":face_with_monocle:","symbol":"🧐","group":"people","keywords":["face with monocle","stuffy",""]},{"id":":nerd_face:","symbol":"🤓","group":"people","keywords":["face","geek","nerd"]},{"id":":smiling_face_with_horns:","symbol":"😈","group":"people","keywords":["face","fairy tale","fantasy","horns","smile","smiling face with horns"]},{"id":":angry_face_with_horns:","symbol":"👿","group":"people","keywords":["angry face with horns","demon","devil","face","fantasy","imp"]},{"id":":clown_face:","symbol":"🤡","group":"people","keywords":["clown","face"]},{"id":":ogre:","symbol":"👹","group":"people","keywords":["creature","face","fairy tale","fantasy","monster","ogre",""]},{"id":":goblin:","symbol":"👺","group":"people","keywords":["creature","face","fairy tale","fantasy","goblin","monster"]},{"id":":skull:","symbol":"💀","group":"people","keywords":["death","face","fairy tale","monster","skull"]},{"id":":skull_and_crossbones:","symbol":"☠","group":"people","keywords":["crossbones","death","face","monster","skull","skull and crossbones"]},{"id":":ghost:","symbol":"👻","group":"people","keywords":["creature","face","fairy tale","fantasy","ghost","monster"]},{"id":":alien:","symbol":"👽","group":"people","keywords":["alien","creature","extraterrestrial","face","fantasy","ufo"]},{"id":":alien_monster:","symbol":"👾","group":"people","keywords":["alien","creature","extraterrestrial","face","monster","ufo"]},{"id":":robot_face:","symbol":"🤖","group":"people","keywords":["face","monster","robot"]},{"id":":pile_of_poo:","symbol":"💩","group":"people","keywords":["dung","face","monster","pile of poo","poo","poop"]},{"id":":grinning_cat_face:","symbol":"😺","group":"people","keywords":["cat","face","grinning cat face","mouth","open","smile"]},{"id":":grinning_cat_face_with_smiling_eyes:","symbol":"😸","group":"people","keywords":["cat","eye","face","grin","grinning cat face with smiling eyes","smile"]},{"id":":cat_face_with_tears_of_joy:","symbol":"😹","group":"people","keywords":["cat","cat face with tears of joy","face","joy","tear"]},{"id":":smiling_cat_face_with_heart-eyes:","symbol":"😻","group":"people","keywords":["cat","eye","face","love","smile","smiling cat face with heart-eyes"]},{"id":":cat_face_with_wry_smile:","symbol":"😼","group":"people","keywords":["cat","cat face with wry smile","face","ironic","smile","wry"]},{"id":":kissing_cat_face:","symbol":"😽","group":"people","keywords":["cat","eye","face","kiss","kissing cat face"]},{"id":":weary_cat_face:","symbol":"🙀","group":"people","keywords":["cat","face","oh","surprised","weary"]},{"id":":crying_cat_face:","symbol":"😿","group":"people","keywords":["cat","cry","crying cat face","face","sad","tear"]},{"id":":pouting_cat_face:","symbol":"😾","group":"people","keywords":["cat","face","pouting"]},{"id":":see-no-evil_monkey:","symbol":"🙈","group":"people","keywords":["evil","face","forbidden","monkey","see","see-no-evil monkey"]},{"id":":hear-no-evil_monkey:","symbol":"🙉","group":"people","keywords":["evil","face","forbidden","hear","hear-no-evil monkey","monkey"]},{"id":":speak-no-evil_monkey:","symbol":"🙊","group":"people","keywords":["evil","face","forbidden","monkey","speak","speak-no-evil monkey"]},{"id":":baby:","symbol":"👶","group":"people","keywords":["baby","young"]},{"id":":child:","symbol":"🧒","group":"people","keywords":["child","gender-neutral","unspecified gender","young"]},{"id":":boy:","symbol":"👦","group":"people","keywords":["boy","young"]},{"id":":girl:","symbol":"👧","group":"people","keywords":["girl","Virgo","young","zodiac"]},{"id":":person:","symbol":"🧑","group":"people","keywords":["adult","gender-neutral","person","unspecified gender"]},{"id":":person_blond_hair:","symbol":"👱","group":"people","keywords":["blond","blond-haired person","person: blond hair"]},{"id":":man:","symbol":"👨","group":"people","keywords":["adult","man"]},{"id":":man_blond_hair:","symbol":"👱‍♂️","group":"people","keywords":["blond","blond-haired man","man","man: blond hair"]},{"id":":man_beard:","symbol":"🧔","group":"people","keywords":["beard","man: beard","person",""]},{"id":":woman:","symbol":"👩","group":"people","keywords":["adult","woman"]},{"id":":woman_blond_hair:","symbol":"👱‍♀️","group":"people","keywords":["blond-haired woman","blonde","woman","woman: blond hair"]},{"id":":older_person:","symbol":"🧓","group":"people","keywords":["adult","gender-neutral","old","older person","unspecified gender"]},{"id":":old_man:","symbol":"👴","group":"people","keywords":["adult","man","old"]},{"id":":old_woman:","symbol":"👵","group":"people","keywords":["adult","old","woman"]},{"id":":man_health_worker:","symbol":"👨‍⚕️","group":"people","keywords":["doctor","healthcare","man","man health worker","nurse","therapist"]},{"id":":woman_health_worker:","symbol":"👩‍⚕️","group":"people","keywords":["doctor","healthcare","nurse","therapist","woman","woman health worker"]},{"id":":man_student:","symbol":"👨‍🎓","group":"people","keywords":["graduate","man","student"]},{"id":":woman_student:","symbol":"👩‍🎓","group":"people","keywords":["graduate","student","woman"]},{"id":":man_teacher:","symbol":"👨‍🏫","group":"people","keywords":["instructor","man","professor","teacher"]},{"id":":woman_teacher:","symbol":"👩‍🏫","group":"people","keywords":["instructor","professor","teacher","woman"]},{"id":":man_judge:","symbol":"👨‍⚖️","group":"people","keywords":["justice","man","man judge","scales"]},{"id":":woman_judge:","symbol":"👩‍⚖️","group":"people","keywords":["judge","scales","woman"]},{"id":":man_farmer:","symbol":"👨‍🌾","group":"people","keywords":["farmer","gardener","man","rancher"]},{"id":":woman_farmer:","symbol":"👩‍🌾","group":"people","keywords":["farmer","gardener","rancher","woman"]},{"id":":man_cook:","symbol":"👨‍🍳","group":"people","keywords":["chef","cook","man"]},{"id":":woman_cook:","symbol":"👩‍🍳","group":"people","keywords":["chef","cook","woman"]},{"id":":man_mechanic:","symbol":"👨‍🔧","group":"people","keywords":["electrician","man","mechanic","plumber","tradesperson"]},{"id":":woman_mechanic:","symbol":"👩‍🔧","group":"people","keywords":["electrician","mechanic","plumber","tradesperson","woman"]},{"id":":man_factory_worker:","symbol":"👨‍🏭","group":"people","keywords":["assembly","factory","industrial","man","worker"]},{"id":":woman_factory_worker:","symbol":"👩‍🏭","group":"people","keywords":["assembly","factory","industrial","woman","worker"]},{"id":":man_office_worker:","symbol":"👨‍💼","group":"people","keywords":["architect","business","man","man office worker","manager","white-collar"]},{"id":":woman_office_worker:","symbol":"👩‍💼","group":"people","keywords":["architect","business","manager","white-collar","woman","woman office worker"]},{"id":":man_scientist:","symbol":"👨‍🔬","group":"people","keywords":["biologist","chemist","engineer","man","physicist","scientist"]},{"id":":woman_scientist:","symbol":"👩‍🔬","group":"people","keywords":["biologist","chemist","engineer","physicist","scientist","woman"]},{"id":":man_technologist:","symbol":"👨‍💻","group":"people","keywords":["coder","developer","inventor","man","software","technologist"]},{"id":":woman_technologist:","symbol":"👩‍💻","group":"people","keywords":["coder","developer","inventor","software","technologist","woman"]},{"id":":man_singer:","symbol":"👨‍🎤","group":"people","keywords":["actor","entertainer","man","rock","singer","star"]},{"id":":woman_singer:","symbol":"👩‍🎤","group":"people","keywords":["actor","entertainer","rock","singer","star","woman"]},{"id":":man_artist:","symbol":"👨‍🎨","group":"people","keywords":["artist","man","palette"]},{"id":":woman_artist:","symbol":"👩‍🎨","group":"people","keywords":["artist","palette","woman"]},{"id":":man_pilot:","symbol":"👨‍✈️","group":"people","keywords":["man","pilot","plane"]},{"id":":woman_pilot:","symbol":"👩‍✈️","group":"people","keywords":["pilot","plane","woman"]},{"id":":man_astronaut:","symbol":"👨‍🚀","group":"people","keywords":["astronaut","man","rocket"]},{"id":":woman_astronaut:","symbol":"👩‍🚀","group":"people","keywords":["astronaut","rocket","woman"]},{"id":":man_firefighter:","symbol":"👨‍🚒","group":"people","keywords":["firefighter","firetruck","man"]},{"id":":woman_firefighter:","symbol":"👩‍🚒","group":"people","keywords":["firefighter","firetruck","woman"]},{"id":":police_officer:","symbol":"👮","group":"people","keywords":["cop","officer","police"]},{"id":":man_police_officer:","symbol":"👮‍♂️","group":"people","keywords":["cop","man","officer","police"]},{"id":":woman_police_officer:","symbol":"👮‍♀️","group":"people","keywords":["cop","officer","police","woman"]},{"id":":detective:","symbol":"🕵","group":"people","keywords":["detective","sleuth","spy"]},{"id":":man_detective:","symbol":"🕵️‍♂️","group":"people","keywords":["detective","man","sleuth","spy"]},{"id":":woman_detective:","symbol":"🕵️‍♀️","group":"people","keywords":["detective","sleuth","spy","woman"]},{"id":":guard:","symbol":"💂","group":"people","keywords":["guard"]},{"id":":man_guard:","symbol":"💂‍♂️","group":"people","keywords":["guard","man"]},{"id":":woman_guard:","symbol":"💂‍♀️","group":"people","keywords":["guard","woman"]},{"id":":construction_worker:","symbol":"👷","group":"people","keywords":["construction","hat","worker"]},{"id":":man_construction_worker:","symbol":"👷‍♂️","group":"people","keywords":["construction","man","worker"]},{"id":":woman_construction_worker:","symbol":"👷‍♀️","group":"people","keywords":["construction","woman","worker"]},{"id":":prince:","symbol":"🤴","group":"people","keywords":["prince"]},{"id":":princess:","symbol":"👸","group":"people","keywords":["fairy tale","fantasy","princess"]},{"id":":person_wearing_turban:","symbol":"👳","group":"people","keywords":["person wearing turban","turban"]},{"id":":man_wearing_turban:","symbol":"👳‍♂️","group":"people","keywords":["man","man wearing turban","turban"]},{"id":":woman_wearing_turban:","symbol":"👳‍♀️","group":"people","keywords":["turban","woman","woman wearing turban"]},{"id":":man_with_chinese_cap:","symbol":"👲","group":"people","keywords":["gua pi mao","hat","man","man with Chinese cap"]},{"id":":woman_with_headscarf:","symbol":"🧕","group":"people","keywords":["headscarf","hijab","mantilla","tichel","woman with headscarf",""]},{"id":":man_in_tuxedo:","symbol":"🤵","group":"people","keywords":["groom","man","man in tuxedo","tuxedo"]},{"id":":bride_with_veil:","symbol":"👰","group":"people","keywords":["bride","bride with veil","veil","wedding"]},{"id":":pregnant_woman:","symbol":"🤰","group":"people","keywords":["pregnant","woman"]},{"id":":breast-feeding:","symbol":"🤱","group":"people","keywords":["baby","breast","breast-feeding","nursing"]},{"id":":baby_angel:","symbol":"👼","group":"people","keywords":["angel","baby","face","fairy tale","fantasy"]},{"id":":santa_claus:","symbol":"🎅","group":"people","keywords":["celebration","Christmas","claus","father","santa","Santa Claus"]},{"id":":mrs._claus:","symbol":"🤶","group":"people","keywords":["celebration","Christmas","claus","mother","Mrs.","Mrs. Claus"]},{"id":":mage:","symbol":"🧙","group":"people","keywords":["mage","sorcerer","sorceress","witch","wizard"]},{"id":":man_mage:","symbol":"🧙‍♂️","group":"people","keywords":["man mage","sorcerer","wizard"]},{"id":":woman_mage:","symbol":"🧙‍♀️","group":"people","keywords":["sorceress","witch","woman mage"]},{"id":":fairy:","symbol":"🧚","group":"people","keywords":["fairy","Oberon","Puck","Titania"]},{"id":":man_fairy:","symbol":"🧚‍♂️","group":"people","keywords":["man fairy","Oberon","Puck"]},{"id":":woman_fairy:","symbol":"🧚‍♀️","group":"people","keywords":["Titania","woman fairy"]},{"id":":vampire:","symbol":"🧛","group":"people","keywords":["Dracula","undead","vampire"]},{"id":":man_vampire:","symbol":"🧛‍♂️","group":"people","keywords":["Dracula","man vampire","undead"]},{"id":":woman_vampire:","symbol":"🧛‍♀️","group":"people","keywords":["undead","woman vampire"]},{"id":":merperson:","symbol":"🧜","group":"people","keywords":["mermaid","merman","merperson","merwoman"]},{"id":":merman:","symbol":"🧜‍♂️","group":"people","keywords":["merman","Triton"]},{"id":":mermaid:","symbol":"🧜‍♀️","group":"people","keywords":["mermaid","merwoman"]},{"id":":elf:","symbol":"🧝","group":"people","keywords":["elf","magical",""]},{"id":":man_elf:","symbol":"🧝‍♂️","group":"people","keywords":["magical","man elf"]},{"id":":woman_elf:","symbol":"🧝‍♀️","group":"people","keywords":["magical","woman elf"]},{"id":":genie:","symbol":"🧞","group":"people","keywords":["djinn","genie",""]},{"id":":man_genie:","symbol":"🧞‍♂️","group":"people","keywords":["djinn","man genie"]},{"id":":woman_genie:","symbol":"🧞‍♀️","group":"people","keywords":["djinn","woman genie"]},{"id":":zombie:","symbol":"🧟","group":"people","keywords":["undead","walking dead","zombie",""]},{"id":":man_zombie:","symbol":"🧟‍♂️","group":"people","keywords":["man zombie","undead","walking dead"]},{"id":":woman_zombie:","symbol":"🧟‍♀️","group":"people","keywords":["undead","walking dead","woman zombie"]},{"id":":person_frowning:","symbol":"🙍","group":"people","keywords":["frown","gesture","person frowning"]},{"id":":man_frowning:","symbol":"🙍‍♂️","group":"people","keywords":["frowning","gesture","man"]},{"id":":woman_frowning:","symbol":"🙍‍♀️","group":"people","keywords":["frowning","gesture","woman"]},{"id":":person_pouting:","symbol":"🙎","group":"people","keywords":["gesture","person pouting","pouting"]},{"id":":man_pouting:","symbol":"🙎‍♂️","group":"people","keywords":["gesture","man","pouting"]},{"id":":woman_pouting:","symbol":"🙎‍♀️","group":"people","keywords":["gesture","pouting","woman"]},{"id":":person_gesturing_no:","symbol":"🙅","group":"people","keywords":["forbidden","gesture","hand","person gesturing NO","prohibited"]},{"id":":man_gesturing_no:","symbol":"🙅‍♂️","group":"people","keywords":["forbidden","gesture","hand","man","man gesturing NO","prohibited"]},{"id":":woman_gesturing_no:","symbol":"🙅‍♀️","group":"people","keywords":["forbidden","gesture","hand","prohibited","woman","woman gesturing NO"]},{"id":":person_gesturing_ok:","symbol":"🙆","group":"people","keywords":["gesture","hand","OK","person gesturing OK"]},{"id":":man_gesturing_ok:","symbol":"🙆‍♂️","group":"people","keywords":["gesture","hand","man","man gesturing OK","OK"]},{"id":":woman_gesturing_ok:","symbol":"🙆‍♀️","group":"people","keywords":["gesture","hand","OK","woman","woman gesturing OK"]},{"id":":person_tipping_hand:","symbol":"💁","group":"people","keywords":["hand","help","information","person tipping hand","sassy","tipping"]},{"id":":man_tipping_hand:","symbol":"💁‍♂️","group":"people","keywords":["man","man tipping hand","sassy","tipping hand"]},{"id":":woman_tipping_hand:","symbol":"💁‍♀️","group":"people","keywords":["sassy","tipping hand","woman","woman tipping hand"]},{"id":":person_raising_hand:","symbol":"🙋","group":"people","keywords":["gesture","hand","happy","person raising hand","raised"]},{"id":":man_raising_hand:","symbol":"🙋‍♂️","group":"people","keywords":["gesture","man","man raising hand","raising hand"]},{"id":":woman_raising_hand:","symbol":"🙋‍♀️","group":"people","keywords":["gesture","raising hand","woman","woman raising hand"]},{"id":":person_bowing:","symbol":"🙇","group":"people","keywords":["apology","bow","gesture","person bowing","sorry"]},{"id":":man_bowing:","symbol":"🙇‍♂️","group":"people","keywords":["apology","bowing","favor","gesture","man","sorry"]},{"id":":woman_bowing:","symbol":"🙇‍♀️","group":"people","keywords":["apology","bowing","favor","gesture","sorry","woman"]},{"id":":person_facepalming:","symbol":"🤦","group":"people","keywords":["disbelief","exasperation","face","palm","person facepalming"]},{"id":":man_facepalming:","symbol":"🤦‍♂️","group":"people","keywords":["disbelief","exasperation","facepalm","man","man facepalming"]},{"id":":woman_facepalming:","symbol":"🤦‍♀️","group":"people","keywords":["disbelief","exasperation","facepalm","woman","woman facepalming"]},{"id":":person_shrugging:","symbol":"🤷","group":"people","keywords":["doubt","ignorance","indifference","person shrugging","shrug"]},{"id":":man_shrugging:","symbol":"🤷‍♂️","group":"people","keywords":["doubt","ignorance","indifference","man","man shrugging","shrug"]},{"id":":woman_shrugging:","symbol":"🤷‍♀️","group":"people","keywords":["doubt","ignorance","indifference","shrug","woman","woman shrugging"]},{"id":":person_getting_massage:","symbol":"💆","group":"people","keywords":["face","massage","person getting massage","salon"]},{"id":":man_getting_massage:","symbol":"💆‍♂️","group":"people","keywords":["face","man","man getting massage","massage"]},{"id":":woman_getting_massage:","symbol":"💆‍♀️","group":"people","keywords":["face","massage","woman","woman getting massage"]},{"id":":person_getting_haircut:","symbol":"💇","group":"people","keywords":["barber","beauty","haircut","parlor","person getting haircut"]},{"id":":man_getting_haircut:","symbol":"💇‍♂️","group":"people","keywords":["haircut","man","man getting haircut"]},{"id":":woman_getting_haircut:","symbol":"💇‍♀️","group":"people","keywords":["haircut","woman","woman getting haircut"]},{"id":":person_walking:","symbol":"🚶","group":"people","keywords":["hike","person walking","walk","walking"]},{"id":":man_walking:","symbol":"🚶‍♂️","group":"people","keywords":["hike","man","man walking","walk"]},{"id":":woman_walking:","symbol":"🚶‍♀️","group":"people","keywords":["hike","walk","woman","woman walking"]},{"id":":person_running:","symbol":"🏃","group":"people","keywords":["marathon","person running","running"]},{"id":":man_running:","symbol":"🏃‍♂️","group":"people","keywords":["man","marathon","racing","running"]},{"id":":woman_running:","symbol":"🏃‍♀️","group":"people","keywords":["marathon","racing","running","woman"]},{"id":":woman_dancing:","symbol":"💃","group":"people","keywords":["dancing","woman"]},{"id":":man_dancing:","symbol":"🕺","group":"people","keywords":["dance","man","man dancing"]},{"id":":people_with_bunny_ears:","symbol":"👯","group":"people","keywords":["bunny ear","dancer","partying","people with bunny ears"]},{"id":":men_with_bunny_ears:","symbol":"👯‍♂️","group":"people","keywords":["bunny ear","dancer","men","men with bunny ears","partying"]},{"id":":women_with_bunny_ears:","symbol":"👯‍♀️","group":"people","keywords":["bunny ear","dancer","partying","women","women with bunny ears"]},{"id":":person_in_steamy_room:","symbol":"🧖","group":"people","keywords":["person in steamy room","sauna","steam room",""]},{"id":":man_in_steamy_room:","symbol":"🧖‍♂️","group":"people","keywords":["man in steamy room","sauna","steam room"]},{"id":":woman_in_steamy_room:","symbol":"🧖‍♀️","group":"people","keywords":["sauna","steam room","woman in steamy room"]},{"id":":person_climbing:","symbol":"🧗","group":"people","keywords":["climber","person climbing"]},{"id":":man_climbing:","symbol":"🧗‍♂️","group":"people","keywords":["climber","man climbing"]},{"id":":woman_climbing:","symbol":"🧗‍♀️","group":"people","keywords":["climber","woman climbing"]},{"id":":person_in_lotus_position:","symbol":"🧘","group":"people","keywords":["meditation","person in lotus position","yoga",""]},{"id":":man_in_lotus_position:","symbol":"🧘‍♂️","group":"people","keywords":["man in lotus position","meditation","yoga"]},{"id":":woman_in_lotus_position:","symbol":"🧘‍♀️","group":"people","keywords":["meditation","woman in lotus position","yoga"]},{"id":":person_taking_bath:","symbol":"🛀","group":"people","keywords":["bath","bathtub","person taking bath"]},{"id":":person_in_bed:","symbol":"🛌","group":"people","keywords":["hotel","person in bed","sleep"]},{"id":":man_in_suit_levitating:","symbol":"🕴","group":"people","keywords":["business","man","man in suit levitating","suit"]},{"id":":speaking_head:","symbol":"🗣","group":"people","keywords":["face","head","silhouette","speak","speaking"]},{"id":":bust_in_silhouette:","symbol":"👤","group":"people","keywords":["bust","bust in silhouette","silhouette"]},{"id":":busts_in_silhouette:","symbol":"👥","group":"people","keywords":["bust","busts in silhouette","silhouette"]},{"id":":person_fencing:","symbol":"🤺","group":"people","keywords":["fencer","fencing","person fencing","sword"]},{"id":":horse_racing:","symbol":"🏇","group":"people","keywords":["horse","jockey","racehorse","racing"]},{"id":":skier:","symbol":"⛷","group":"people","keywords":["ski","skier","snow"]},{"id":":snowboarder:","symbol":"🏂","group":"people","keywords":["ski","snow","snowboard","snowboarder"]},{"id":":person_golfing:","symbol":"🏌","group":"people","keywords":["ball","golf","person golfing"]},{"id":":man_golfing:","symbol":"🏌️‍♂️","group":"people","keywords":["golf","man","man golfing"]},{"id":":woman_golfing:","symbol":"🏌️‍♀️","group":"people","keywords":["golf","woman","woman golfing"]},{"id":":person_surfing:","symbol":"🏄","group":"people","keywords":["person surfing","surfing"]},{"id":":man_surfing:","symbol":"🏄‍♂️","group":"people","keywords":["man","surfing"]},{"id":":woman_surfing:","symbol":"🏄‍♀️","group":"people","keywords":["surfing","woman"]},{"id":":person_rowing_boat:","symbol":"🚣","group":"people","keywords":["boat","person rowing boat","rowboat"]},{"id":":man_rowing_boat:","symbol":"🚣‍♂️","group":"people","keywords":["boat","man","man rowing boat","rowboat"]},{"id":":woman_rowing_boat:","symbol":"🚣‍♀️","group":"people","keywords":["boat","rowboat","woman","woman rowing boat"]},{"id":":person_swimming:","symbol":"🏊","group":"people","keywords":["person swimming","swim"]},{"id":":man_swimming:","symbol":"🏊‍♂️","group":"people","keywords":["man","man swimming","swim"]},{"id":":woman_swimming:","symbol":"🏊‍♀️","group":"people","keywords":["swim","woman","woman swimming"]},{"id":":person_bouncing_ball:","symbol":"⛹","group":"people","keywords":["ball","person bouncing ball"]},{"id":":man_bouncing_ball:","symbol":"⛹️‍♂️","group":"people","keywords":["ball","man","man bouncing ball"]},{"id":":woman_bouncing_ball:","symbol":"⛹️‍♀️","group":"people","keywords":["ball","woman","woman bouncing ball"]},{"id":":person_lifting_weights:","symbol":"🏋","group":"people","keywords":["lifter","person lifting weights","weight"]},{"id":":man_lifting_weights:","symbol":"🏋️‍♂️","group":"people","keywords":["man","man lifting weights","weight lifter"]},{"id":":woman_lifting_weights:","symbol":"🏋️‍♀️","group":"people","keywords":["weight lifter","woman","woman lifting weights"]},{"id":":person_biking:","symbol":"🚴","group":"people","keywords":["bicycle","biking","cyclist","person biking"]},{"id":":man_biking:","symbol":"🚴‍♂️","group":"people","keywords":["bicycle","biking","cyclist","man"]},{"id":":woman_biking:","symbol":"🚴‍♀️","group":"people","keywords":["bicycle","biking","cyclist","woman"]},{"id":":person_mountain_biking:","symbol":"🚵","group":"people","keywords":["bicycle","bicyclist","bike","cyclist","mountain","person mountain biking"]},{"id":":man_mountain_biking:","symbol":"🚵‍♂️","group":"people","keywords":["bicycle","bike","cyclist","man","man mountain biking","mountain"]},{"id":":woman_mountain_biking:","symbol":"🚵‍♀️","group":"people","keywords":["bicycle","bike","biking","cyclist","mountain","woman"]},{"id":":racing_car:","symbol":"🏎","group":"people","keywords":["car","racing"]},{"id":":motorcycle:","symbol":"🏍","group":"people","keywords":["motorcycle","racing"]},{"id":":person_cartwheeling:","symbol":"🤸","group":"people","keywords":["cartwheel","gymnastics","person cartwheeling"]},{"id":":man_cartwheeling:","symbol":"🤸‍♂️","group":"people","keywords":["cartwheel","gymnastics","man","man cartwheeling"]},{"id":":woman_cartwheeling:","symbol":"🤸‍♀️","group":"people","keywords":["cartwheel","gymnastics","woman","woman cartwheeling"]},{"id":":people_wrestling:","symbol":"🤼","group":"people","keywords":["people wrestling","wrestle","wrestler"]},{"id":":men_wrestling:","symbol":"🤼‍♂️","group":"people","keywords":["men","men wrestling","wrestle"]},{"id":":women_wrestling:","symbol":"🤼‍♀️","group":"people","keywords":["women","women wrestling","wrestle"]},{"id":":person_playing_water_polo:","symbol":"🤽","group":"people","keywords":["person playing water polo","polo","water"]},{"id":":man_playing_water_polo:","symbol":"🤽‍♂️","group":"people","keywords":["man","man playing water polo","water polo"]},{"id":":woman_playing_water_polo:","symbol":"🤽‍♀️","group":"people","keywords":["water polo","woman","woman playing water polo"]},{"id":":person_playing_handball:","symbol":"🤾","group":"people","keywords":["ball","handball","person playing handball"]},{"id":":man_playing_handball:","symbol":"🤾‍♂️","group":"people","keywords":["handball","man","man playing handball"]},{"id":":woman_playing_handball:","symbol":"🤾‍♀️","group":"people","keywords":["handball","woman","woman playing handball"]},{"id":":person_juggling:","symbol":"🤹","group":"people","keywords":["balance","juggle","multitask","person juggling","skill"]},{"id":":man_juggling:","symbol":"🤹‍♂️","group":"people","keywords":["juggling","man","multitask"]},{"id":":woman_juggling:","symbol":"🤹‍♀️","group":"people","keywords":["juggling","multitask","woman"]},{"id":":man_and_woman_holding_hands:","symbol":"👫","group":"people","keywords":["couple","hand","hold","man","man and woman holding hands","woman"]},{"id":":two_men_holding_hands:","symbol":"👬","group":"people","keywords":["couple","Gemini","man","twins","two men holding hands","zodiac"]},{"id":":two_women_holding_hands:","symbol":"👭","group":"people","keywords":["couple","hand","two women holding hands","woman"]},{"id":":kiss:","symbol":"💏","group":"people","keywords":["couple","kiss"]},{"id":":kiss_woman_man:","symbol":"👩‍❤️‍💋‍👨","group":"people","keywords":["couple","kiss","man","woman"]},{"id":":kiss_man_man:","symbol":"👨‍❤️‍💋‍👨","group":"people","keywords":["couple","kiss","man"]},{"id":":kiss_woman_woman:","symbol":"👩‍❤️‍💋‍👩","group":"people","keywords":["couple","kiss","woman"]},{"id":":couple_with_heart:","symbol":"💑","group":"people","keywords":["couple","couple with heart","love"]},{"id":":couple_with_heart_woman_man:","symbol":"👩‍❤️‍👨","group":"people","keywords":["couple","couple with heart","love","man","woman"]},{"id":":couple_with_heart_man_man:","symbol":"👨‍❤️‍👨","group":"people","keywords":["couple","couple with heart","love","man"]},{"id":":couple_with_heart_woman_woman:","symbol":"👩‍❤️‍👩","group":"people","keywords":["couple","couple with heart","love","woman"]},{"id":":family:","symbol":"👪","group":"people","keywords":["family"]},{"id":":family_man_woman_boy:","symbol":"👨‍👩‍👦","group":"people","keywords":["boy","family","man","woman"]},{"id":":family_man_woman_girl:","symbol":"👨‍👩‍👧","group":"people","keywords":["family","girl","man","woman"]},{"id":":family_man_woman_girl_boy:","symbol":"👨‍👩‍👧‍👦","group":"people","keywords":["boy","family","girl","man","woman"]},{"id":":family_man_woman_boy_boy:","symbol":"👨‍👩‍👦‍👦","group":"people","keywords":["boy","family","man","woman"]},{"id":":family_man_woman_girl_girl:","symbol":"👨‍👩‍👧‍👧","group":"people","keywords":["family","girl","man","woman"]},{"id":":family_man_man_boy:","symbol":"👨‍👨‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_man_girl:","symbol":"👨‍👨‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_man_man_girl_boy:","symbol":"👨‍👨‍👧‍👦","group":"people","keywords":["boy","family","girl","man"]},{"id":":family_man_man_boy_boy:","symbol":"👨‍👨‍👦‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_man_girl_girl:","symbol":"👨‍👨‍👧‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_woman_woman_boy:","symbol":"👩‍👩‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_woman_girl:","symbol":"👩‍👩‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":family_woman_woman_girl_boy:","symbol":"👩‍👩‍👧‍👦","group":"people","keywords":["boy","family","girl","woman"]},{"id":":family_woman_woman_boy_boy:","symbol":"👩‍👩‍👦‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_woman_girl_girl:","symbol":"👩‍👩‍👧‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":family_man_boy:","symbol":"👨‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_boy_boy:","symbol":"👨‍👦‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_girl:","symbol":"👨‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_man_girl_boy:","symbol":"👨‍👧‍👦","group":"people","keywords":["boy","family","girl","man"]},{"id":":family_man_girl_girl:","symbol":"👨‍👧‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_woman_boy:","symbol":"👩‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_boy_boy:","symbol":"👩‍👦‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_girl:","symbol":"👩‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":family_woman_girl_boy:","symbol":"👩‍👧‍👦","group":"people","keywords":["boy","family","girl","woman"]},{"id":":family_woman_girl_girl:","symbol":"👩‍👧‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":selfie:","symbol":"🤳","group":"people","keywords":["camera","phone","selfie"]},{"id":":flexed_biceps:","symbol":"💪","group":"people","keywords":["biceps","comic","flex","flexed biceps","muscle"]},{"id":":backhand_index_pointing_left:","symbol":"👈","group":"people","keywords":["backhand","backhand index pointing left","finger","hand","index","point"]},{"id":":backhand_index_pointing_right:","symbol":"👉","group":"people","keywords":["backhand","backhand index pointing right","finger","hand","index","point"]},{"id":":index_pointing_up:","symbol":"☝","group":"people","keywords":["finger","hand","index","index pointing up","point","up"]},{"id":":backhand_index_pointing_up:","symbol":"👆","group":"people","keywords":["backhand","backhand index pointing up","finger","hand","point","up"]},{"id":":middle_finger:","symbol":"🖕","group":"people","keywords":["finger","hand","middle finger"]},{"id":":backhand_index_pointing_down:","symbol":"👇","group":"people","keywords":["backhand","backhand index pointing down","down","finger","hand","point"]},{"id":":victory_hand:","symbol":"✌","group":"people","keywords":["hand","v","victory"]},{"id":":crossed_fingers:","symbol":"🤞","group":"people","keywords":["cross","crossed fingers","finger","hand","luck"]},{"id":":vulcan_salute:","symbol":"🖖","group":"people","keywords":["finger","hand","spock","vulcan","vulcan salute"]},{"id":":sign_of_the_horns:","symbol":"🤘","group":"people","keywords":["finger","hand","horns","rock-on","sign of the horns"]},{"id":":call_me_hand:","symbol":"🤙","group":"people","keywords":["call","call me hand","hand"]},{"id":":hand_with_fingers_splayed:","symbol":"🖐","group":"people","keywords":["finger","hand","hand with fingers splayed","splayed"]},{"id":":raised_hand:","symbol":"✋","group":"people","keywords":["hand","raised hand"]},{"id":":ok_hand:","symbol":"👌","group":"people","keywords":["hand","OK"]},{"id":":thumbs_up:","symbol":"👍","group":"people","keywords":["+1","hand","thumb","thumbs up","up"]},{"id":":thumbs_down:","symbol":"👎","group":"people","keywords":["-1","down","hand","thumb","thumbs down"]},{"id":":raised_fist:","symbol":"✊","group":"people","keywords":["clenched","fist","hand","punch","raised fist"]},{"id":":oncoming_fist:","symbol":"👊","group":"people","keywords":["clenched","fist","hand","oncoming fist","punch"]},{"id":":left-facing_fist:","symbol":"🤛","group":"people","keywords":["fist","left-facing fist","leftwards"]},{"id":":right-facing_fist:","symbol":"🤜","group":"people","keywords":["fist","right-facing fist","rightwards"]},{"id":":raised_back_of_hand:","symbol":"🤚","group":"people","keywords":["backhand","raised","raised back of hand"]},{"id":":waving_hand:","symbol":"👋","group":"people","keywords":["hand","wave","waving"]},{"id":":love-you_gesture:","symbol":"🤟","group":"people","keywords":["hand","ILY","love-you gesture"]},{"id":":writing_hand:","symbol":"✍","group":"people","keywords":["hand","write","writing hand"]},{"id":":clapping_hands:","symbol":"👏","group":"people","keywords":["clap","clapping hands","hand"]},{"id":":open_hands:","symbol":"👐","group":"people","keywords":["hand","open","open hands"]},{"id":":raising_hands:","symbol":"🙌","group":"people","keywords":["celebration","gesture","hand","hooray","raised","raising hands"]},{"id":":palms_up_together:","symbol":"🤲","group":"people","keywords":["palms up together","prayer",""]},{"id":":folded_hands:","symbol":"🙏","group":"people","keywords":["ask","folded hands","hand","please","pray","thanks"]},{"id":":handshake:","symbol":"🤝","group":"people","keywords":["agreement","hand","handshake","meeting","shake"]},{"id":":nail_polish:","symbol":"💅","group":"people","keywords":["care","cosmetics","manicure","nail","polish"]},{"id":":ear:","symbol":"👂","group":"people","keywords":["body","ear"]},{"id":":nose:","symbol":"👃","group":"people","keywords":["body","nose"]},{"id":":footprints:","symbol":"👣","group":"people","keywords":["clothing","footprint","footprints","print"]},{"id":":eyes:","symbol":"👀","group":"people","keywords":["eye","eyes","face"]},{"id":":eye:","symbol":"👁","group":"people","keywords":["body","eye"]},{"id":":eye_in_speech_bubble:","symbol":"👁️‍🗨️","group":"people","keywords":["eye","eye in speech bubble","speech bubble","witness"]},{"id":":brain:","symbol":"🧠","group":"people","keywords":["brain","intelligent"]},{"id":":tongue:","symbol":"👅","group":"people","keywords":["body","tongue"]},{"id":":mouth:","symbol":"👄","group":"people","keywords":["lips","mouth"]},{"id":":kiss_mark:","symbol":"💋","group":"people","keywords":["kiss","kiss mark","lips"]},{"id":":heart_with_arrow:","symbol":"💘","group":"people","keywords":["arrow","cupid","heart with arrow"]},{"id":":heart_with_ribbon:","symbol":"💝","group":"people","keywords":["heart with ribbon","ribbon","valentine"]},{"id":":sparkling_heart:","symbol":"💖","group":"people","keywords":["excited","sparkle","sparkling heart"]},{"id":":growing_heart:","symbol":"💗","group":"people","keywords":["excited","growing","growing heart","nervous","pulse"]},{"id":":beating_heart:","symbol":"💓","group":"people","keywords":["beating","beating heart","heartbeat","pulsating"]},{"id":":revolving_hearts:","symbol":"💞","group":"people","keywords":["revolving","revolving hearts"]},{"id":":two_hearts:","symbol":"💕","group":"people","keywords":["love","two hearts"]},{"id":":love_letter:","symbol":"💌","group":"people","keywords":["heart","letter","love","mail"]},{"id":":heavy_heart_exclamation:","symbol":"❣","group":"people","keywords":["exclamation","heavy heart exclamation","mark","punctuation"]},{"id":":broken_heart:","symbol":"💔","group":"people","keywords":["break","broken","broken heart"]},{"id":":red_heart:","symbol":"❤","group":"people","keywords":["heart","red heart"]},{"id":":orange_heart:","symbol":"🧡","group":"people","keywords":["orange","orange heart"]},{"id":":yellow_heart:","symbol":"💛","group":"people","keywords":["yellow","yellow heart"]},{"id":":green_heart:","symbol":"💚","group":"people","keywords":["green","green heart"]},{"id":":blue_heart:","symbol":"💙","group":"people","keywords":["blue","blue heart"]},{"id":":purple_heart:","symbol":"💜","group":"people","keywords":["purple","purple heart"]},{"id":":black_heart:","symbol":"🖤","group":"people","keywords":["black","black heart","evil","wicked"]},{"id":":heart_decoration:","symbol":"💟","group":"people","keywords":["heart","heart decoration"]},{"id":":zzz:","symbol":"💤","group":"people","keywords":["comic","sleep","zzz"]},{"id":":anger_symbol:","symbol":"💢","group":"people","keywords":["anger symbol","angry","comic","mad"]},{"id":":bomb:","symbol":"💣","group":"people","keywords":["bomb","comic"]},{"id":":collision:","symbol":"💥","group":"people","keywords":["boom","collision","comic"]},{"id":":sweat_droplets:","symbol":"💦","group":"people","keywords":["comic","splashing","sweat","sweat droplets"]},{"id":":dashing_away:","symbol":"💨","group":"people","keywords":["comic","dash","dashing away","running"]},{"id":":dizzy:","symbol":"💫","group":"people","keywords":["comic","dizzy","star"]},{"id":":speech_balloon:","symbol":"💬","group":"people","keywords":["balloon","bubble","comic","dialog","speech"]},{"id":":left_speech_bubble:","symbol":"🗨","group":"people","keywords":["dialog","left speech bubble","speech"]},{"id":":right_anger_bubble:","symbol":"🗯","group":"people","keywords":["angry","balloon","bubble","mad","right anger bubble"]},{"id":":thought_balloon:","symbol":"💭","group":"people","keywords":["balloon","bubble","comic","thought"]},{"id":":hole:","symbol":"🕳","group":"people","keywords":["hole"]},{"id":":glasses:","symbol":"👓","group":"people","keywords":["clothing","eye","eyeglasses","eyewear","glasses"]},{"id":":sunglasses:","symbol":"🕶","group":"people","keywords":["dark","eye","eyewear","glasses","sunglasses"]},{"id":":necktie:","symbol":"👔","group":"people","keywords":["clothing","necktie","tie"]},{"id":":t-shirt:","symbol":"👕","group":"people","keywords":["clothing","shirt","t-shirt","tshirt"]},{"id":":jeans:","symbol":"👖","group":"people","keywords":["clothing","jeans","pants","trousers"]},{"id":":scarf:","symbol":"🧣","group":"people","keywords":["neck","scarf"]},{"id":":gloves:","symbol":"🧤","group":"people","keywords":["gloves","hand"]},{"id":":coat:","symbol":"🧥","group":"people","keywords":["coat","jacket"]},{"id":":socks:","symbol":"🧦","group":"people","keywords":["socks","stocking"]},{"id":":dress:","symbol":"👗","group":"people","keywords":["clothing","dress"]},{"id":":kimono:","symbol":"👘","group":"people","keywords":["clothing","kimono"]},{"id":":bikini:","symbol":"👙","group":"people","keywords":["bikini","clothing","swim"]},{"id":":woman’s_clothes:","symbol":"👚","group":"people","keywords":["clothing","woman","woman’s clothes"]},{"id":":purse:","symbol":"👛","group":"people","keywords":["clothing","coin","purse"]},{"id":":handbag:","symbol":"👜","group":"people","keywords":["bag","clothing","handbag","purse"]},{"id":":clutch_bag:","symbol":"👝","group":"people","keywords":["bag","clothing","clutch bag","pouch"]},{"id":":shopping_bags:","symbol":"🛍","group":"people","keywords":["bag","hotel","shopping","shopping bags"]},{"id":":backpack:","symbol":"🎒","group":"people","keywords":["backpack","bag","rucksack","satchel","school"]},{"id":":man’s_shoe:","symbol":"👞","group":"people","keywords":["clothing","man","man’s shoe","shoe"]},{"id":":running_shoe:","symbol":"👟","group":"people","keywords":["athletic","clothing","running shoe","shoe","sneaker"]},{"id":":high-heeled_shoe:","symbol":"👠","group":"people","keywords":["clothing","heel","high-heeled shoe","shoe","woman"]},{"id":":woman’s_sandal:","symbol":"👡","group":"people","keywords":["clothing","sandal","shoe","woman","woman’s sandal"]},{"id":":woman’s_boot:","symbol":"👢","group":"people","keywords":["boot","clothing","shoe","woman","woman’s boot"]},{"id":":crown:","symbol":"👑","group":"people","keywords":["clothing","crown","king","queen"]},{"id":":woman’s_hat:","symbol":"👒","group":"people","keywords":["clothing","hat","woman","woman’s hat"]},{"id":":top_hat:","symbol":"🎩","group":"people","keywords":["clothing","hat","top","tophat"]},{"id":":graduation_cap:","symbol":"🎓","group":"people","keywords":["cap","celebration","clothing","graduation","hat"]},{"id":":billed_cap:","symbol":"🧢","group":"people","keywords":["baseball cap","billed cap"]},{"id":":rescue_worker’s_helmet:","symbol":"⛑","group":"people","keywords":["aid","cross","face","hat","helmet","rescue worker’s helmet"]},{"id":":prayer_beads:","symbol":"📿","group":"people","keywords":["beads","clothing","necklace","prayer","religion"]},{"id":":lipstick:","symbol":"💄","group":"people","keywords":["cosmetics","lipstick","makeup"]},{"id":":ring:","symbol":"💍","group":"people","keywords":["diamond","ring"]},{"id":":gem_stone:","symbol":"💎","group":"people","keywords":["diamond","gem","gem stone","jewel"]},{"id":":monkey_face:","symbol":"🐵","group":"nature","keywords":["face","monkey"]},{"id":":monkey:","symbol":"🐒","group":"nature","keywords":["monkey"]},{"id":":gorilla:","symbol":"🦍","group":"nature","keywords":["gorilla"]},{"id":":dog_face:","symbol":"🐶","group":"nature","keywords":["dog","face","pet"]},{"id":":dog:","symbol":"🐕","group":"nature","keywords":["dog","pet"]},{"id":":poodle:","symbol":"🐩","group":"nature","keywords":["dog","poodle"]},{"id":":wolf_face:","symbol":"🐺","group":"nature","keywords":["face","wolf"]},{"id":":fox_face:","symbol":"🦊","group":"nature","keywords":["face","fox"]},{"id":":cat_face:","symbol":"🐱","group":"nature","keywords":["cat","face","pet"]},{"id":":cat:","symbol":"🐈","group":"nature","keywords":["cat","pet"]},{"id":":lion_face:","symbol":"🦁","group":"nature","keywords":["face","Leo","lion","zodiac"]},{"id":":tiger_face:","symbol":"🐯","group":"nature","keywords":["face","tiger"]},{"id":":tiger:","symbol":"🐅","group":"nature","keywords":["tiger"]},{"id":":leopard:","symbol":"🐆","group":"nature","keywords":["leopard"]},{"id":":horse_face:","symbol":"🐴","group":"nature","keywords":["face","horse"]},{"id":":horse:","symbol":"🐎","group":"nature","keywords":["equestrian","horse","racehorse","racing"]},{"id":":unicorn_face:","symbol":"🦄","group":"nature","keywords":["face","unicorn"]},{"id":":zebra:","symbol":"🦓","group":"nature","keywords":["stripe","zebra"]},{"id":":deer:","symbol":"🦌","group":"nature","keywords":["deer"]},{"id":":cow_face:","symbol":"🐮","group":"nature","keywords":["cow","face"]},{"id":":ox:","symbol":"🐂","group":"nature","keywords":["bull","ox","Taurus","zodiac"]},{"id":":water_buffalo:","symbol":"🐃","group":"nature","keywords":["buffalo","water"]},{"id":":cow:","symbol":"🐄","group":"nature","keywords":["cow"]},{"id":":pig_face:","symbol":"🐷","group":"nature","keywords":["face","pig"]},{"id":":pig:","symbol":"🐖","group":"nature","keywords":["pig","sow"]},{"id":":boar:","symbol":"🐗","group":"nature","keywords":["boar","pig"]},{"id":":pig_nose:","symbol":"🐽","group":"nature","keywords":["face","nose","pig"]},{"id":":ram:","symbol":"🐏","group":"nature","keywords":["Aries","male","ram","sheep","zodiac"]},{"id":":ewe:","symbol":"🐑","group":"nature","keywords":["ewe","female","sheep"]},{"id":":goat:","symbol":"🐐","group":"nature","keywords":["Capricorn","goat","zodiac"]},{"id":":camel:","symbol":"🐪","group":"nature","keywords":["camel","dromedary","hump"]},{"id":":two-hump_camel:","symbol":"🐫","group":"nature","keywords":["bactrian","camel","hump","two-hump camel"]},{"id":":giraffe:","symbol":"🦒","group":"nature","keywords":["giraffe","spots"]},{"id":":elephant:","symbol":"🐘","group":"nature","keywords":["elephant"]},{"id":":rhinoceros:","symbol":"🦏","group":"nature","keywords":["rhinoceros"]},{"id":":mouse_face:","symbol":"🐭","group":"nature","keywords":["face","mouse"]},{"id":":mouse:","symbol":"🐁","group":"nature","keywords":["mouse"]},{"id":":rat:","symbol":"🐀","group":"nature","keywords":["rat"]},{"id":":hamster_face:","symbol":"🐹","group":"nature","keywords":["face","hamster","pet"]},{"id":":rabbit_face:","symbol":"🐰","group":"nature","keywords":["bunny","face","pet","rabbit"]},{"id":":rabbit:","symbol":"🐇","group":"nature","keywords":["bunny","pet","rabbit"]},{"id":":chipmunk:","symbol":"🐿","group":"nature","keywords":["chipmunk","squirrel"]},{"id":":hedgehog:","symbol":"🦔","group":"nature","keywords":["hedgehog","spiny"]},{"id":":bat:","symbol":"🦇","group":"nature","keywords":["bat","vampire"]},{"id":":bear_face:","symbol":"🐻","group":"nature","keywords":["bear","face"]},{"id":":koala:","symbol":"🐨","group":"nature","keywords":["bear","koala"]},{"id":":panda_face:","symbol":"🐼","group":"nature","keywords":["face","panda"]},{"id":":paw_prints:","symbol":"🐾","group":"nature","keywords":["feet","paw","paw prints","print"]},{"id":":turkey:","symbol":"🦃","group":"nature","keywords":["bird","turkey"]},{"id":":chicken:","symbol":"🐔","group":"nature","keywords":["bird","chicken"]},{"id":":rooster:","symbol":"🐓","group":"nature","keywords":["bird","rooster"]},{"id":":hatching_chick:","symbol":"🐣","group":"nature","keywords":["baby","bird","chick","hatching"]},{"id":":baby_chick:","symbol":"🐤","group":"nature","keywords":["baby","bird","chick"]},{"id":":front-facing_baby_chick:","symbol":"🐥","group":"nature","keywords":["baby","bird","chick","front-facing baby chick"]},{"id":":bird:","symbol":"🐦","group":"nature","keywords":["bird"]},{"id":":penguin:","symbol":"🐧","group":"nature","keywords":["bird","penguin"]},{"id":":dove:","symbol":"🕊","group":"nature","keywords":["bird","dove","fly","peace"]},{"id":":eagle:","symbol":"🦅","group":"nature","keywords":["bird","eagle"]},{"id":":duck:","symbol":"🦆","group":"nature","keywords":["bird","duck"]},{"id":":owl:","symbol":"🦉","group":"nature","keywords":["bird","owl","wise"]},{"id":":frog_face:","symbol":"🐸","group":"nature","keywords":["face","frog"]},{"id":":crocodile:","symbol":"🐊","group":"nature","keywords":["crocodile"]},{"id":":turtle:","symbol":"🐢","group":"nature","keywords":["terrapin","tortoise","turtle"]},{"id":":lizard:","symbol":"🦎","group":"nature","keywords":["lizard","reptile"]},{"id":":snake:","symbol":"🐍","group":"nature","keywords":["bearer","Ophiuchus","serpent","snake","zodiac"]},{"id":":dragon_face:","symbol":"🐲","group":"nature","keywords":["dragon","face","fairy tale"]},{"id":":dragon:","symbol":"🐉","group":"nature","keywords":["dragon","fairy tale"]},{"id":":sauropod:","symbol":"🦕","group":"nature","keywords":["brachiosaurus","brontosaurus","diplodocus","sauropod"]},{"id":":t-rex:","symbol":"🦖","group":"nature","keywords":["T-Rex","Tyrannosaurus Rex"]},{"id":":spouting_whale:","symbol":"🐳","group":"nature","keywords":["face","spouting","whale"]},{"id":":whale:","symbol":"🐋","group":"nature","keywords":["whale"]},{"id":":dolphin:","symbol":"🐬","group":"nature","keywords":["dolphin","flipper"]},{"id":":fish:","symbol":"🐟","group":"nature","keywords":["fish","Pisces","zodiac"]},{"id":":tropical_fish:","symbol":"🐠","group":"nature","keywords":["fish","tropical"]},{"id":":blowfish:","symbol":"🐡","group":"nature","keywords":["blowfish","fish"]},{"id":":shark:","symbol":"🦈","group":"nature","keywords":["fish","shark"]},{"id":":octopus:","symbol":"🐙","group":"nature","keywords":["octopus"]},{"id":":spiral_shell:","symbol":"🐚","group":"nature","keywords":["shell","spiral"]},{"id":":crab:","symbol":"🦀","group":"nature","keywords":["Cancer","crab","zodiac"]},{"id":":shrimp:","symbol":"🦐","group":"nature","keywords":["food","shellfish","shrimp","small"]},{"id":":squid:","symbol":"🦑","group":"nature","keywords":["food","molusc","squid"]},{"id":":snail:","symbol":"🐌","group":"nature","keywords":["snail"]},{"id":":butterfly:","symbol":"🦋","group":"nature","keywords":["butterfly","insect","pretty"]},{"id":":bug:","symbol":"🐛","group":"nature","keywords":["bug","insect"]},{"id":":ant:","symbol":"🐜","group":"nature","keywords":["ant","insect"]},{"id":":honeybee:","symbol":"🐝","group":"nature","keywords":["bee","honeybee","insect"]},{"id":":lady_beetle:","symbol":"🐞","group":"nature","keywords":["beetle","insect","lady beetle","ladybird","ladybug"]},{"id":":cricket:","symbol":"🦗","group":"nature","keywords":["cricket","grasshopper",""]},{"id":":spider:","symbol":"🕷","group":"nature","keywords":["insect","spider"]},{"id":":spider_web:","symbol":"🕸","group":"nature","keywords":["spider","web"]},{"id":":scorpion:","symbol":"🦂","group":"nature","keywords":["scorpio","Scorpio","scorpion","zodiac"]},{"id":":bouquet:","symbol":"💐","group":"nature","keywords":["bouquet","flower"]},{"id":":cherry_blossom:","symbol":"🌸","group":"nature","keywords":["blossom","cherry","flower"]},{"id":":white_flower:","symbol":"💮","group":"nature","keywords":["flower","white flower"]},{"id":":rosette:","symbol":"🏵","group":"nature","keywords":["plant","rosette"]},{"id":":rose:","symbol":"🌹","group":"nature","keywords":["flower","rose"]},{"id":":wilted_flower:","symbol":"🥀","group":"nature","keywords":["flower","wilted"]},{"id":":hibiscus:","symbol":"🌺","group":"nature","keywords":["flower","hibiscus"]},{"id":":sunflower:","symbol":"🌻","group":"nature","keywords":["flower","sun","sunflower"]},{"id":":blossom:","symbol":"🌼","group":"nature","keywords":["blossom","flower"]},{"id":":tulip:","symbol":"🌷","group":"nature","keywords":["flower","tulip"]},{"id":":seedling:","symbol":"🌱","group":"nature","keywords":["seedling","young"]},{"id":":evergreen_tree:","symbol":"🌲","group":"nature","keywords":["evergreen tree","tree"]},{"id":":deciduous_tree:","symbol":"🌳","group":"nature","keywords":["deciduous","shedding","tree"]},{"id":":palm_tree:","symbol":"🌴","group":"nature","keywords":["palm","tree"]},{"id":":cactus:","symbol":"🌵","group":"nature","keywords":["cactus","plant"]},{"id":":sheaf_of_rice:","symbol":"🌾","group":"nature","keywords":["ear","grain","rice","sheaf of rice"]},{"id":":herb:","symbol":"🌿","group":"nature","keywords":["herb","leaf"]},{"id":":shamrock:","symbol":"☘","group":"nature","keywords":["plant","shamrock"]},{"id":":four_leaf_clover:","symbol":"🍀","group":"nature","keywords":["4","clover","four","four-leaf clover","leaf"]},{"id":":maple_leaf:","symbol":"🍁","group":"nature","keywords":["falling","leaf","maple"]},{"id":":fallen_leaf:","symbol":"🍂","group":"nature","keywords":["fallen leaf","falling","leaf"]},{"id":":leaf_fluttering_in_wind:","symbol":"🍃","group":"nature","keywords":["blow","flutter","leaf","leaf fluttering in wind","wind"]},{"id":":grapes:","symbol":"🍇","group":"food","keywords":["fruit","grape","grapes"]},{"id":":melon:","symbol":"🍈","group":"food","keywords":["fruit","melon"]},{"id":":watermelon:","symbol":"🍉","group":"food","keywords":["fruit","watermelon"]},{"id":":tangerine:","symbol":"🍊","group":"food","keywords":["fruit","orange","tangerine"]},{"id":":lemon:","symbol":"🍋","group":"food","keywords":["citrus","fruit","lemon"]},{"id":":banana:","symbol":"🍌","group":"food","keywords":["banana","fruit"]},{"id":":pineapple:","symbol":"🍍","group":"food","keywords":["fruit","pineapple"]},{"id":":red_apple:","symbol":"🍎","group":"food","keywords":["apple","fruit","red"]},{"id":":green_apple:","symbol":"🍏","group":"food","keywords":["apple","fruit","green"]},{"id":":pear:","symbol":"🍐","group":"food","keywords":["fruit","pear"]},{"id":":peach:","symbol":"🍑","group":"food","keywords":["fruit","peach"]},{"id":":cherries:","symbol":"🍒","group":"food","keywords":["berries","cherries","cherry","fruit","red"]},{"id":":strawberry:","symbol":"🍓","group":"food","keywords":["berry","fruit","strawberry"]},{"id":":kiwi_fruit:","symbol":"🥝","group":"food","keywords":["food","fruit","kiwi"]},{"id":":tomato:","symbol":"🍅","group":"food","keywords":["fruit","tomato","vegetable"]},{"id":":coconut:","symbol":"🥥","group":"food","keywords":["coconut","palm","piña colada"]},{"id":":avocado:","symbol":"🥑","group":"food","keywords":["avocado","food","fruit"]},{"id":":eggplant:","symbol":"🍆","group":"food","keywords":["aubergine","eggplant","vegetable"]},{"id":":potato:","symbol":"🥔","group":"food","keywords":["food","potato","vegetable"]},{"id":":carrot:","symbol":"🥕","group":"food","keywords":["carrot","food","vegetable"]},{"id":":ear_of_corn:","symbol":"🌽","group":"food","keywords":["corn","ear","ear of corn","maize","maze"]},{"id":":hot_pepper:","symbol":"🌶","group":"food","keywords":["hot","pepper"]},{"id":":cucumber:","symbol":"🥒","group":"food","keywords":["cucumber","food","pickle","vegetable"]},{"id":":broccoli:","symbol":"🥦","group":"food","keywords":["broccoli","wild cabbage"]},{"id":":mushroom:","symbol":"🍄","group":"food","keywords":["mushroom","toadstool"]},{"id":":peanuts:","symbol":"🥜","group":"food","keywords":["food","nut","peanut","peanuts","vegetable"]},{"id":":chestnut:","symbol":"🌰","group":"food","keywords":["chestnut","plant"]},{"id":":bread:","symbol":"🍞","group":"food","keywords":["bread","loaf"]},{"id":":croissant:","symbol":"🥐","group":"food","keywords":["bread","crescent roll","croissant","food","french"]},{"id":":baguette_bread:","symbol":"🥖","group":"food","keywords":["baguette","bread","food","french"]},{"id":":pretzel:","symbol":"🥨","group":"food","keywords":["pretzel","twisted",""]},{"id":":pancakes:","symbol":"🥞","group":"food","keywords":["crêpe","food","hotcake","pancake","pancakes"]},{"id":":cheese_wedge:","symbol":"🧀","group":"food","keywords":["cheese","cheese wedge"]},{"id":":meat_on_bone:","symbol":"🍖","group":"food","keywords":["bone","meat","meat on bone"]},{"id":":poultry_leg:","symbol":"🍗","group":"food","keywords":["bone","chicken","drumstick","leg","poultry"]},{"id":":cut_of_meat:","symbol":"🥩","group":"food","keywords":["chop","cut of meat","lambchop","porkchop","steak"]},{"id":":bacon:","symbol":"🥓","group":"food","keywords":["bacon","food","meat"]},{"id":":hamburger:","symbol":"🍔","group":"food","keywords":["burger","hamburger"]},{"id":":french_fries:","symbol":"🍟","group":"food","keywords":["french","fries"]},{"id":":pizza:","symbol":"🍕","group":"food","keywords":["cheese","pizza","slice"]},{"id":":hot_dog:","symbol":"🌭","group":"food","keywords":["frankfurter","hot dog","hotdog","sausage"]},{"id":":sandwich:","symbol":"🥪","group":"food","keywords":["bread","sandwich"]},{"id":":taco:","symbol":"🌮","group":"food","keywords":["mexican","taco"]},{"id":":burrito:","symbol":"🌯","group":"food","keywords":["burrito","mexican","wrap"]},{"id":":stuffed_flatbread:","symbol":"🥙","group":"food","keywords":["falafel","flatbread","food","gyro","kebab","stuffed"]},{"id":":egg:","symbol":"🥚","group":"food","keywords":["egg","food"]},{"id":":cooking:","symbol":"🍳","group":"food","keywords":["cooking","egg","frying","pan"]},{"id":":shallow_pan_of_food:","symbol":"🥘","group":"food","keywords":["casserole","food","paella","pan","shallow","shallow pan of food"]},{"id":":pot_of_food:","symbol":"🍲","group":"food","keywords":["pot","pot of food","stew"]},{"id":":bowl_with_spoon:","symbol":"🥣","group":"food","keywords":["bowl with spoon","breakfast","cereal","congee",""]},{"id":":green_salad:","symbol":"🥗","group":"food","keywords":["food","green","salad"]},{"id":":popcorn:","symbol":"🍿","group":"food","keywords":["popcorn"]},{"id":":canned_food:","symbol":"🥫","group":"food","keywords":["can","canned food"]},{"id":":bento_box:","symbol":"🍱","group":"food","keywords":["bento","box"]},{"id":":rice_cracker:","symbol":"🍘","group":"food","keywords":["cracker","rice"]},{"id":":rice_ball:","symbol":"🍙","group":"food","keywords":["ball","Japanese","rice"]},{"id":":cooked_rice:","symbol":"🍚","group":"food","keywords":["cooked","rice"]},{"id":":curry_rice:","symbol":"🍛","group":"food","keywords":["curry","rice"]},{"id":":steaming_bowl:","symbol":"🍜","group":"food","keywords":["bowl","noodle","ramen","steaming"]},{"id":":spaghetti:","symbol":"🍝","group":"food","keywords":["pasta","spaghetti"]},{"id":":roasted_sweet_potato:","symbol":"🍠","group":"food","keywords":["potato","roasted","sweet"]},{"id":":oden:","symbol":"🍢","group":"food","keywords":["kebab","oden","seafood","skewer","stick"]},{"id":":sushi:","symbol":"🍣","group":"food","keywords":["sushi"]},{"id":":fried_shrimp:","symbol":"🍤","group":"food","keywords":["fried","prawn","shrimp","tempura"]},{"id":":fish_cake_with_swirl:","symbol":"🍥","group":"food","keywords":["cake","fish","fish cake with swirl","pastry","swirl"]},{"id":":dango:","symbol":"🍡","group":"food","keywords":["dango","dessert","Japanese","skewer","stick","sweet"]},{"id":":dumpling:","symbol":"🥟","group":"food","keywords":["dumpling","empanada","gyōza","jiaozi","pierogi","potsticker"]},{"id":":fortune_cookie:","symbol":"🥠","group":"food","keywords":["fortune cookie","prophecy"]},{"id":":takeout_box:","symbol":"🥡","group":"food","keywords":["oyster pail","takeout box"]},{"id":":soft_ice_cream:","symbol":"🍦","group":"food","keywords":["cream","dessert","ice","icecream","soft","sweet"]},{"id":":shaved_ice:","symbol":"🍧","group":"food","keywords":["dessert","ice","shaved","sweet"]},{"id":":ice_cream:","symbol":"🍨","group":"food","keywords":["cream","dessert","ice","sweet"]},{"id":":doughnut:","symbol":"🍩","group":"food","keywords":["dessert","donut","doughnut","sweet"]},{"id":":cookie:","symbol":"🍪","group":"food","keywords":["cookie","dessert","sweet"]},{"id":":birthday_cake:","symbol":"🎂","group":"food","keywords":["birthday","cake","celebration","dessert","pastry","sweet"]},{"id":":shortcake:","symbol":"🍰","group":"food","keywords":["cake","dessert","pastry","shortcake","slice","sweet"]},{"id":":pie:","symbol":"🥧","group":"food","keywords":["filling","pastry","pie",""]},{"id":":chocolate_bar:","symbol":"🍫","group":"food","keywords":["bar","chocolate","dessert","sweet"]},{"id":":candy:","symbol":"🍬","group":"food","keywords":["candy","dessert","sweet"]},{"id":":lollipop:","symbol":"🍭","group":"food","keywords":["candy","dessert","lollipop","sweet"]},{"id":":custard:","symbol":"🍮","group":"food","keywords":["custard","dessert","pudding","sweet"]},{"id":":honey_pot:","symbol":"🍯","group":"food","keywords":["honey","honeypot","pot","sweet"]},{"id":":baby_bottle:","symbol":"🍼","group":"food","keywords":["baby","bottle","drink","milk"]},{"id":":glass_of_milk:","symbol":"🥛","group":"food","keywords":["drink","glass","glass of milk","milk"]},{"id":":hot_beverage:","symbol":"☕","group":"food","keywords":["beverage","coffee","drink","hot","steaming","tea"]},{"id":":teacup_without_handle:","symbol":"🍵","group":"food","keywords":["beverage","cup","drink","tea","teacup","teacup without handle"]},{"id":":sake:","symbol":"🍶","group":"food","keywords":["bar","beverage","bottle","cup","drink","sake"]},{"id":":bottle_with_popping_cork:","symbol":"🍾","group":"food","keywords":["bar","bottle","bottle with popping cork","cork","drink","popping"]},{"id":":wine_glass:","symbol":"🍷","group":"food","keywords":["bar","beverage","drink","glass","wine"]},{"id":":cocktail_glass:","symbol":"🍸","group":"food","keywords":["bar","cocktail","drink","glass"]},{"id":":tropical_drink:","symbol":"🍹","group":"food","keywords":["bar","drink","tropical"]},{"id":":beer_mug:","symbol":"🍺","group":"food","keywords":["bar","beer","drink","mug"]},{"id":":clinking_beer_mugs:","symbol":"🍻","group":"food","keywords":["bar","beer","clink","clinking beer mugs","drink","mug"]},{"id":":clinking_glasses:","symbol":"🥂","group":"food","keywords":["celebrate","clink","clinking glasses","drink","glass"]},{"id":":tumbler_glass:","symbol":"🥃","group":"food","keywords":["glass","liquor","shot","tumbler","whisky"]},{"id":":cup_with_straw:","symbol":"🥤","group":"food","keywords":["cup with straw","juice","soda",""]},{"id":":chopsticks:","symbol":"🥢","group":"food","keywords":["chopsticks","hashi",""]},{"id":":fork_and_knife_with_plate:","symbol":"🍽","group":"food","keywords":["cooking","fork","fork and knife with plate","knife","plate"]},{"id":":fork_and_knife:","symbol":"🍴","group":"food","keywords":["cooking","cutlery","fork","fork and knife","knife"]},{"id":":spoon:","symbol":"🥄","group":"food","keywords":["spoon","tableware"]},{"id":":kitchen_knife:","symbol":"🔪","group":"food","keywords":["cooking","hocho","kitchen knife","knife","tool","weapon"]},{"id":":amphora:","symbol":"🏺","group":"food","keywords":["amphora","Aquarius","cooking","drink","jug","zodiac"]},{"id":":globe_showing_europe-africa:","symbol":"🌍","group":"travel","keywords":["Africa","earth","Europe","globe","globe showing Europe-Africa","world"]},{"id":":globe_showing_americas:","symbol":"🌎","group":"travel","keywords":["Americas","earth","globe","globe showing Americas","world"]},{"id":":globe_showing_asia-australia:","symbol":"🌏","group":"travel","keywords":["Asia","Australia","earth","globe","globe showing Asia-Australia","world"]},{"id":":globe_with_meridians:","symbol":"🌐","group":"travel","keywords":["earth","globe","globe with meridians","meridians","world"]},{"id":":world_map:","symbol":"🗺","group":"travel","keywords":["map","world"]},{"id":":map_of_japan:","symbol":"🗾","group":"travel","keywords":["Japan","map","map of Japan"]},{"id":":snow-capped_mountain:","symbol":"🏔","group":"travel","keywords":["cold","mountain","snow","snow-capped mountain"]},{"id":":mountain:","symbol":"⛰","group":"travel","keywords":["mountain"]},{"id":":volcano:","symbol":"🌋","group":"travel","keywords":["eruption","mountain","volcano"]},{"id":":mount_fuji:","symbol":"🗻","group":"travel","keywords":["fuji","mount fuji","mountain"]},{"id":":camping:","symbol":"🏕","group":"travel","keywords":["camping"]},{"id":":beach_with_umbrella:","symbol":"🏖","group":"travel","keywords":["beach","beach with umbrella","umbrella"]},{"id":":desert:","symbol":"🏜","group":"travel","keywords":["desert"]},{"id":":desert_island:","symbol":"🏝","group":"travel","keywords":["desert","island"]},{"id":":national_park:","symbol":"🏞","group":"travel","keywords":["national park","park"]},{"id":":stadium:","symbol":"🏟","group":"travel","keywords":["stadium"]},{"id":":classical_building:","symbol":"🏛","group":"travel","keywords":["classical","classical building"]},{"id":":building_construction:","symbol":"🏗","group":"travel","keywords":["building construction","construction"]},{"id":":houses:","symbol":"🏘","group":"travel","keywords":["houses"]},{"id":":derelict_house:","symbol":"🏚","group":"travel","keywords":["derelict","house"]},{"id":":house:","symbol":"🏠","group":"travel","keywords":["home","house"]},{"id":":house_with_garden:","symbol":"🏡","group":"travel","keywords":["garden","home","house","house with garden"]},{"id":":office_building:","symbol":"🏢","group":"travel","keywords":["building","office building"]},{"id":":japanese_post_office:","symbol":"🏣","group":"travel","keywords":["Japanese","Japanese post office","post"]},{"id":":post_office:","symbol":"🏤","group":"travel","keywords":["European","post","post office"]},{"id":":hospital:","symbol":"🏥","group":"travel","keywords":["doctor","hospital","medicine"]},{"id":":bank:","symbol":"🏦","group":"travel","keywords":["bank","building"]},{"id":":hotel:","symbol":"🏨","group":"travel","keywords":["building","hotel"]},{"id":":love_hotel:","symbol":"🏩","group":"travel","keywords":["hotel","love"]},{"id":":convenience_store:","symbol":"🏪","group":"travel","keywords":["convenience","store"]},{"id":":school:","symbol":"🏫","group":"travel","keywords":["building","school"]},{"id":":department_store:","symbol":"🏬","group":"travel","keywords":["department","store"]},{"id":":factory:","symbol":"🏭","group":"travel","keywords":["building","factory"]},{"id":":japanese_castle:","symbol":"🏯","group":"travel","keywords":["castle","Japanese"]},{"id":":castle:","symbol":"🏰","group":"travel","keywords":["castle","European"]},{"id":":wedding:","symbol":"💒","group":"travel","keywords":["chapel","romance","wedding"]},{"id":":tokyo_tower:","symbol":"🗼","group":"travel","keywords":["Tokyo","tower"]},{"id":":statue_of_liberty:","symbol":"🗽","group":"travel","keywords":["liberty","statue","Statue of Liberty"]},{"id":":church:","symbol":"⛪","group":"travel","keywords":["Christian","church","cross","religion"]},{"id":":mosque:","symbol":"🕌","group":"travel","keywords":["islam","mosque","Muslim","religion"]},{"id":":synagogue:","symbol":"🕍","group":"travel","keywords":["Jew","Jewish","religion","synagogue","temple"]},{"id":":shinto_shrine:","symbol":"⛩","group":"travel","keywords":["religion","shinto","shrine"]},{"id":":kaaba:","symbol":"🕋","group":"travel","keywords":["islam","kaaba","Muslim","religion"]},{"id":":fountain:","symbol":"⛲","group":"travel","keywords":["fountain"]},{"id":":tent:","symbol":"⛺","group":"travel","keywords":["camping","tent"]},{"id":":foggy:","symbol":"🌁","group":"travel","keywords":["fog","foggy"]},{"id":":night_with_stars:","symbol":"🌃","group":"travel","keywords":["night","night with stars","star"]},{"id":":cityscape:","symbol":"🏙","group":"travel","keywords":["city","cityscape"]},{"id":":sunrise_over_mountains:","symbol":"🌄","group":"travel","keywords":["morning","mountain","sun","sunrise","sunrise over mountains"]},{"id":":sunrise:","symbol":"🌅","group":"travel","keywords":["morning","sun","sunrise"]},{"id":":cityscape_at_dusk:","symbol":"🌆","group":"travel","keywords":["city","cityscape at dusk","dusk","evening","landscape","sunset"]},{"id":":sunset:","symbol":"🌇","group":"travel","keywords":["dusk","sun","sunset"]},{"id":":bridge_at_night:","symbol":"🌉","group":"travel","keywords":["bridge","bridge at night","night"]},{"id":":hot_springs:","symbol":"♨","group":"travel","keywords":["hot","hotsprings","springs","steaming"]},{"id":":milky_way:","symbol":"🌌","group":"travel","keywords":["milky way","space"]},{"id":":carousel_horse:","symbol":"🎠","group":"travel","keywords":["carousel","horse"]},{"id":":ferris_wheel:","symbol":"🎡","group":"travel","keywords":["amusement park","ferris","wheel"]},{"id":":roller_coaster:","symbol":"🎢","group":"travel","keywords":["amusement park","coaster","roller"]},{"id":":barber_pole:","symbol":"💈","group":"travel","keywords":["barber","haircut","pole"]},{"id":":circus_tent:","symbol":"🎪","group":"travel","keywords":["circus","tent"]},{"id":":locomotive:","symbol":"🚂","group":"travel","keywords":["engine","locomotive","railway","steam","train"]},{"id":":railway_car:","symbol":"🚃","group":"travel","keywords":["car","electric","railway","train","tram","trolleybus"]},{"id":":high-speed_train:","symbol":"🚄","group":"travel","keywords":["high-speed train","railway","shinkansen","speed","train"]},{"id":":bullet_train:","symbol":"🚅","group":"travel","keywords":["bullet","railway","shinkansen","speed","train"]},{"id":":train:","symbol":"🚆","group":"travel","keywords":["railway","train"]},{"id":":metro:","symbol":"🚇","group":"travel","keywords":["metro","subway"]},{"id":":light_rail:","symbol":"🚈","group":"travel","keywords":["light rail","railway"]},{"id":":station:","symbol":"🚉","group":"travel","keywords":["railway","station","train"]},{"id":":tram:","symbol":"🚊","group":"travel","keywords":["tram","trolleybus"]},{"id":":monorail:","symbol":"🚝","group":"travel","keywords":["monorail","vehicle"]},{"id":":mountain_railway:","symbol":"🚞","group":"travel","keywords":["car","mountain","railway"]},{"id":":tram_car:","symbol":"🚋","group":"travel","keywords":["car","tram","trolleybus"]},{"id":":bus:","symbol":"🚌","group":"travel","keywords":["bus","vehicle"]},{"id":":oncoming_bus:","symbol":"🚍","group":"travel","keywords":["bus","oncoming"]},{"id":":trolleybus:","symbol":"🚎","group":"travel","keywords":["bus","tram","trolley","trolleybus"]},{"id":":minibus:","symbol":"🚐","group":"travel","keywords":["bus","minibus"]},{"id":":ambulance:","symbol":"🚑","group":"travel","keywords":["ambulance","vehicle"]},{"id":":fire_engine:","symbol":"🚒","group":"travel","keywords":["engine","fire","truck"]},{"id":":police_car:","symbol":"🚓","group":"travel","keywords":["car","patrol","police"]},{"id":":oncoming_police_car:","symbol":"🚔","group":"travel","keywords":["car","oncoming","police"]},{"id":":taxi:","symbol":"🚕","group":"travel","keywords":["taxi","vehicle"]},{"id":":oncoming_taxi:","symbol":"🚖","group":"travel","keywords":["oncoming","taxi"]},{"id":":automobile:","symbol":"🚗","group":"travel","keywords":["automobile","car"]},{"id":":oncoming_automobile:","symbol":"🚘","group":"travel","keywords":["automobile","car","oncoming"]},{"id":":sport_utility_vehicle:","symbol":"🚙","group":"travel","keywords":["recreational","sport utility","sport utility vehicle"]},{"id":":delivery_truck:","symbol":"🚚","group":"travel","keywords":["delivery","truck"]},{"id":":articulated_lorry:","symbol":"🚛","group":"travel","keywords":["articulated lorry","lorry","semi","truck"]},{"id":":tractor:","symbol":"🚜","group":"travel","keywords":["tractor","vehicle"]},{"id":":bicycle:","symbol":"🚲","group":"travel","keywords":["bicycle","bike"]},{"id":":kick_scooter:","symbol":"🛴","group":"travel","keywords":["kick","scooter"]},{"id":":motor_scooter:","symbol":"🛵","group":"travel","keywords":["motor","scooter"]},{"id":":bus_stop:","symbol":"🚏","group":"travel","keywords":["bus","busstop","stop"]},{"id":":motorway:","symbol":"🛣","group":"travel","keywords":["highway","motorway","road"]},{"id":":railway_track:","symbol":"🛤","group":"travel","keywords":["railway","railway track","train"]},{"id":":oil_drum:","symbol":"🛢","group":"travel","keywords":["drum","oil"]},{"id":":fuel_pump:","symbol":"⛽","group":"travel","keywords":["diesel","fuel","fuelpump","gas","pump","station"]},{"id":":police_car_light:","symbol":"🚨","group":"travel","keywords":["beacon","car","light","police","revolving"]},{"id":":horizontal_traffic_light:","symbol":"🚥","group":"travel","keywords":["horizontal traffic light","light","signal","traffic"]},{"id":":vertical_traffic_light:","symbol":"🚦","group":"travel","keywords":["light","signal","traffic","vertical traffic light"]},{"id":":stop_sign:","symbol":"🛑","group":"travel","keywords":["octagonal","sign","stop"]},{"id":":construction:","symbol":"🚧","group":"travel","keywords":["barrier","construction"]},{"id":":anchor:","symbol":"⚓","group":"travel","keywords":["anchor","ship","tool"]},{"id":":sailboat:","symbol":"⛵","group":"travel","keywords":["boat","resort","sailboat","sea","yacht"]},{"id":":canoe:","symbol":"🛶","group":"travel","keywords":["boat","canoe"]},{"id":":speedboat:","symbol":"🚤","group":"travel","keywords":["boat","speedboat"]},{"id":":passenger_ship:","symbol":"🛳","group":"travel","keywords":["passenger","ship"]},{"id":":ferry:","symbol":"⛴","group":"travel","keywords":["boat","ferry","passenger"]},{"id":":motor_boat:","symbol":"🛥","group":"travel","keywords":["boat","motor boat","motorboat"]},{"id":":ship:","symbol":"🚢","group":"travel","keywords":["boat","passenger","ship"]},{"id":":airplane:","symbol":"✈","group":"travel","keywords":["aeroplane","airplane"]},{"id":":small_airplane:","symbol":"🛩","group":"travel","keywords":["aeroplane","airplane","small airplane"]},{"id":":airplane_departure:","symbol":"🛫","group":"travel","keywords":["aeroplane","airplane","check-in","departure","departures"]},{"id":":airplane_arrival:","symbol":"🛬","group":"travel","keywords":["aeroplane","airplane","airplane arrival","arrivals","arriving","landing"]},{"id":":seat:","symbol":"💺","group":"travel","keywords":["chair","seat"]},{"id":":helicopter:","symbol":"🚁","group":"travel","keywords":["helicopter","vehicle"]},{"id":":suspension_railway:","symbol":"🚟","group":"travel","keywords":["railway","suspension"]},{"id":":mountain_cableway:","symbol":"🚠","group":"travel","keywords":["cable","gondola","mountain","mountain cableway"]},{"id":":aerial_tramway:","symbol":"🚡","group":"travel","keywords":["aerial","cable","car","gondola","tramway"]},{"id":":satellite:","symbol":"🛰","group":"travel","keywords":["satellite","space"]},{"id":":rocket:","symbol":"🚀","group":"travel","keywords":["rocket","space"]},{"id":":flying_saucer:","symbol":"🛸","group":"travel","keywords":["flying saucer","UFO"]},{"id":":bellhop_bell:","symbol":"🛎","group":"travel","keywords":["bell","bellhop","hotel"]},{"id":":hourglass_done:","symbol":"⌛","group":"travel","keywords":["hourglass done","sand","timer"]},{"id":":hourglass_not_done:","symbol":"⏳","group":"travel","keywords":["hourglass","hourglass not done","sand","timer"]},{"id":":watch:","symbol":"⌚","group":"travel","keywords":["clock","watch"]},{"id":":alarm_clock:","symbol":"⏰","group":"travel","keywords":["alarm","clock"]},{"id":":stopwatch:","symbol":"⏱","group":"travel","keywords":["clock","stopwatch"]},{"id":":timer_clock:","symbol":"⏲","group":"travel","keywords":["clock","timer"]},{"id":":mantelpiece_clock:","symbol":"🕰","group":"travel","keywords":["clock","mantelpiece clock"]},{"id":":twelve_o’clock:","symbol":"🕛","group":"travel","keywords":["00","12","12:00","clock","o’clock","twelve"]},{"id":":twelve-thirty:","symbol":"🕧","group":"travel","keywords":["12","12:30","clock","thirty","twelve","twelve-thirty"]},{"id":":one_o’clock:","symbol":"🕐","group":"travel","keywords":["00","1","1:00","clock","o’clock","one"]},{"id":":one-thirty:","symbol":"🕜","group":"travel","keywords":["1","1:30","clock","one","one-thirty","thirty"]},{"id":":two_o’clock:","symbol":"🕑","group":"travel","keywords":["00","2","2:00","clock","o’clock","two"]},{"id":":two-thirty:","symbol":"🕝","group":"travel","keywords":["2","2:30","clock","thirty","two","two-thirty"]},{"id":":three_o’clock:","symbol":"🕒","group":"travel","keywords":["00","3","3:00","clock","o’clock","three"]},{"id":":three-thirty:","symbol":"🕞","group":"travel","keywords":["3","3:30","clock","thirty","three","three-thirty"]},{"id":":four_o’clock:","symbol":"🕓","group":"travel","keywords":["00","4","4:00","clock","four","o’clock"]},{"id":":four-thirty:","symbol":"🕟","group":"travel","keywords":["4","4:30","clock","four","four-thirty","thirty"]},{"id":":five_o’clock:","symbol":"🕔","group":"travel","keywords":["00","5","5:00","clock","five","o’clock"]},{"id":":five-thirty:","symbol":"🕠","group":"travel","keywords":["5","5:30","clock","five","five-thirty","thirty"]},{"id":":six_o’clock:","symbol":"🕕","group":"travel","keywords":["00","6","6:00","clock","o’clock","six"]},{"id":":six-thirty:","symbol":"🕡","group":"travel","keywords":["6","6:30","clock","six","six-thirty","thirty"]},{"id":":seven_o’clock:","symbol":"🕖","group":"travel","keywords":["00","7","7:00","clock","o’clock","seven"]},{"id":":seven-thirty:","symbol":"🕢","group":"travel","keywords":["7","7:30","clock","seven","seven-thirty","thirty"]},{"id":":eight_o’clock:","symbol":"🕗","group":"travel","keywords":["00","8","8:00","clock","eight","o’clock"]},{"id":":eight-thirty:","symbol":"🕣","group":"travel","keywords":["8","8:30","clock","eight","eight-thirty","thirty"]},{"id":":nine_o’clock:","symbol":"🕘","group":"travel","keywords":["00","9","9:00","clock","nine","o’clock"]},{"id":":nine-thirty:","symbol":"🕤","group":"travel","keywords":["9","9:30","clock","nine","nine-thirty","thirty"]},{"id":":ten_o’clock:","symbol":"🕙","group":"travel","keywords":["00","10","10:00","clock","o’clock","ten"]},{"id":":ten-thirty:","symbol":"🕥","group":"travel","keywords":["10","10:30","clock","ten","ten-thirty","thirty"]},{"id":":eleven_o’clock:","symbol":"🕚","group":"travel","keywords":["00","11","11:00","clock","eleven","o’clock"]},{"id":":eleven-thirty:","symbol":"🕦","group":"travel","keywords":["11","11:30","clock","eleven","eleven-thirty","thirty"]},{"id":":new_moon:","symbol":"🌑","group":"travel","keywords":["dark","moon","new moon"]},{"id":":waxing_crescent_moon:","symbol":"🌒","group":"travel","keywords":["crescent","moon","waxing"]},{"id":":first_quarter_moon:","symbol":"🌓","group":"travel","keywords":["first quarter moon","moon","quarter"]},{"id":":waxing_gibbous_moon:","symbol":"🌔","group":"travel","keywords":["gibbous","moon","waxing"]},{"id":":full_moon:","symbol":"🌕","group":"travel","keywords":["full","moon"]},{"id":":waning_gibbous_moon:","symbol":"🌖","group":"travel","keywords":["gibbous","moon","waning"]},{"id":":last_quarter_moon:","symbol":"🌗","group":"travel","keywords":["last quarter moon","moon","quarter"]},{"id":":waning_crescent_moon:","symbol":"🌘","group":"travel","keywords":["crescent","moon","waning"]},{"id":":crescent_moon:","symbol":"🌙","group":"travel","keywords":["crescent","moon"]},{"id":":new_moon_face:","symbol":"🌚","group":"travel","keywords":["face","moon","new moon face"]},{"id":":first_quarter_moon_face:","symbol":"🌛","group":"travel","keywords":["face","first quarter moon face","moon","quarter"]},{"id":":last_quarter_moon_face:","symbol":"🌜","group":"travel","keywords":["face","last quarter moon face","moon","quarter"]},{"id":":thermometer:","symbol":"🌡","group":"travel","keywords":["thermometer","weather"]},{"id":":sun:","symbol":"☀","group":"travel","keywords":["bright","rays","sun","sunny"]},{"id":":full_moon_face:","symbol":"🌝","group":"travel","keywords":["bright","face","full","moon"]},{"id":":sun_with_face:","symbol":"🌞","group":"travel","keywords":["bright","face","sun","sun with face"]},{"id":":star:","symbol":"⭐","group":"travel","keywords":["star"]},{"id":":glowing_star:","symbol":"🌟","group":"travel","keywords":["glittery","glow","glowing star","shining","sparkle","star"]},{"id":":shooting_star:","symbol":"🌠","group":"travel","keywords":["falling","shooting","star"]},{"id":":cloud:","symbol":"☁️","group":"travel","keywords":["cloud","weather"]},{"id":":sun_behind_cloud:","symbol":"⛅","group":"travel","keywords":["cloud","sun","sun behind cloud"]},{"id":":cloud_with_lightning_and_rain:","symbol":"⛈️","group":"travel","keywords":["cloud","cloud with lightning and rain","rain","thunder"]},{"id":":sun_behind_small_cloud:","symbol":"🌤","group":"travel","keywords":["cloud","sun","sun behind small cloud"]},{"id":":sun_behind_large_cloud:","symbol":"🌥","group":"travel","keywords":["cloud","sun","sun behind large cloud"]},{"id":":sun_behind_rain_cloud:","symbol":"🌦","group":"travel","keywords":["cloud","rain","sun","sun behind rain cloud"]},{"id":":cloud_with_rain:","symbol":"🌧","group":"travel","keywords":["cloud","cloud with rain","rain"]},{"id":":cloud_with_snow:","symbol":"🌨","group":"travel","keywords":["cloud","cloud with snow","cold","snow"]},{"id":":cloud_with_lightning:","symbol":"🌩","group":"travel","keywords":["cloud","cloud with lightning","lightning"]},{"id":":tornado:","symbol":"🌪","group":"travel","keywords":["cloud","tornado","whirlwind"]},{"id":":fog:","symbol":"🌫","group":"travel","keywords":["cloud","fog"]},{"id":":wind_face:","symbol":"🌬","group":"travel","keywords":["blow","cloud","face","wind"]},{"id":":cyclone:","symbol":"🌀","group":"travel","keywords":["cyclone","dizzy","hurricane","twister","typhoon"]},{"id":":rainbow:","symbol":"🌈","group":"travel","keywords":["rain","rainbow"]},{"id":":closed_umbrella:","symbol":"🌂","group":"travel","keywords":["closed umbrella","clothing","rain","umbrella"]},{"id":":umbrella:","symbol":"☂","group":"travel","keywords":["clothing","rain","umbrella"]},{"id":":umbrella_with_rain_drops:","symbol":"☔","group":"travel","keywords":["clothing","drop","rain","umbrella","umbrella with rain drops"]},{"id":":umbrella_on_ground:","symbol":"⛱","group":"travel","keywords":["rain","sun","umbrella","umbrella on ground"]},{"id":":high_voltage:","symbol":"⚡","group":"travel","keywords":["danger","electric","high voltage","lightning","voltage","zap"]},{"id":":snowflake:","symbol":"❄","group":"travel","keywords":["cold","snow","snowflake"]},{"id":":snowman:","symbol":"☃","group":"travel","keywords":["cold","snow","snowman"]},{"id":":snowman_without_snow:","symbol":"⛄","group":"travel","keywords":["cold","snow","snowman","snowman without snow"]},{"id":":comet:","symbol":"☄","group":"travel","keywords":["comet","space"]},{"id":":fire:","symbol":"🔥","group":"travel","keywords":["fire","flame","tool"]},{"id":":droplet:","symbol":"💧","group":"travel","keywords":["cold","comic","drop","droplet","sweat"]},{"id":":water_wave:","symbol":"🌊","group":"travel","keywords":["ocean","water","wave"]},{"id":":jack-o-lantern:","symbol":"🎃","group":"activities","keywords":["celebration","halloween","jack","jack-o-lantern","lantern"]},{"id":":christmas_tree:","symbol":"🎄","group":"activities","keywords":["celebration","Christmas","tree"]},{"id":":fireworks:","symbol":"🎆","group":"activities","keywords":["celebration","fireworks"]},{"id":":sparkler:","symbol":"🎇","group":"activities","keywords":["celebration","fireworks","sparkle","sparkler"]},{"id":":sparkles:","symbol":"✨","group":"activities","keywords":["sparkle","sparkles","star"]},{"id":":balloon:","symbol":"🎈","group":"activities","keywords":["balloon","celebration"]},{"id":":party_popper:","symbol":"🎉","group":"activities","keywords":["celebration","party","popper","tada"]},{"id":":confetti_ball:","symbol":"🎊","group":"activities","keywords":["ball","celebration","confetti"]},{"id":":tanabata_tree:","symbol":"🎋","group":"activities","keywords":["banner","celebration","Japanese","tanabata tree","tree"]},{"id":":pine_decoration:","symbol":"🎍","group":"activities","keywords":["bamboo","celebration","Japanese","pine","pine decoration"]},{"id":":japanese_dolls:","symbol":"🎎","group":"activities","keywords":["celebration","doll","festival","Japanese","Japanese dolls"]},{"id":":carp_streamer:","symbol":"🎏","group":"activities","keywords":["carp","celebration","streamer"]},{"id":":wind_chime:","symbol":"🎐","group":"activities","keywords":["bell","celebration","chime","wind"]},{"id":":moon_viewing_ceremony:","symbol":"🎑","group":"activities","keywords":["celebration","ceremony","moon","moon viewing ceremony"]},{"id":":ribbon:","symbol":"🎀","group":"activities","keywords":["celebration","ribbon"]},{"id":":wrapped_gift:","symbol":"🎁","group":"activities","keywords":["box","celebration","gift","present","wrapped"]},{"id":":reminder_ribbon:","symbol":"🎗","group":"activities","keywords":["celebration","reminder","ribbon"]},{"id":":admission_tickets:","symbol":"🎟","group":"activities","keywords":["admission","admission tickets","ticket"]},{"id":":ticket:","symbol":"🎫","group":"activities","keywords":["admission","ticket"]},{"id":":military_medal:","symbol":"🎖","group":"activities","keywords":["celebration","medal","military"]},{"id":":trophy:","symbol":"🏆","group":"activities","keywords":["prize","trophy"]},{"id":":sports_medal:","symbol":"🏅","group":"activities","keywords":["medal","sports medal"]},{"id":":1st_place_medal:","symbol":"🥇","group":"activities","keywords":["1st place medal","first","gold","medal"]},{"id":":2nd_place_medal:","symbol":"🥈","group":"activities","keywords":["2nd place medal","medal","second","silver"]},{"id":":3rd_place_medal:","symbol":"🥉","group":"activities","keywords":["3rd place medal","bronze","medal","third"]},{"id":":soccer_ball:","symbol":"⚽","group":"activities","keywords":["ball","football","soccer"]},{"id":":baseball:","symbol":"⚾","group":"activities","keywords":["ball","baseball"]},{"id":":basketball:","symbol":"🏀","group":"activities","keywords":["ball","basketball","hoop"]},{"id":":volleyball:","symbol":"🏐","group":"activities","keywords":["ball","game","volleyball"]},{"id":":american_football:","symbol":"🏈","group":"activities","keywords":["american","ball","football"]},{"id":":rugby_football:","symbol":"🏉","group":"activities","keywords":["ball","football","rugby"]},{"id":":tennis:","symbol":"🎾","group":"activities","keywords":["ball","racquet","tennis"]},{"id":":bowling:","symbol":"🎳","group":"activities","keywords":["ball","bowling","game"]},{"id":":cricket_game:","symbol":"🏏","group":"activities","keywords":["ball","bat","cricket game","game"]},{"id":":field_hockey:","symbol":"🏑","group":"activities","keywords":["ball","field","game","hockey","stick"]},{"id":":ice_hockey:","symbol":"🏒","group":"activities","keywords":["game","hockey","ice","puck","stick"]},{"id":":ping_pong:","symbol":"🏓","group":"activities","keywords":["ball","bat","game","paddle","ping pong","table tennis"]},{"id":":badminton:","symbol":"🏸","group":"activities","keywords":["badminton","birdie","game","racquet","shuttlecock"]},{"id":":boxing_glove:","symbol":"🥊","group":"activities","keywords":["boxing","glove"]},{"id":":martial_arts_uniform:","symbol":"🥋","group":"activities","keywords":["judo","karate","martial arts","martial arts uniform","taekwondo","uniform"]},{"id":":goal_net:","symbol":"🥅","group":"activities","keywords":["goal","net"]},{"id":":flag_in_hole:","symbol":"⛳","group":"activities","keywords":["flag in hole","golf","hole"]},{"id":":ice_skate:","symbol":"⛸","group":"activities","keywords":["ice","skate"]},{"id":":fishing_pole:","symbol":"🎣","group":"activities","keywords":["fish","fishing pole","pole"]},{"id":":running_shirt:","symbol":"🎽","group":"activities","keywords":["athletics","running","sash","shirt"]},{"id":":skis:","symbol":"🎿","group":"activities","keywords":["ski","skis","snow"]},{"id":":sled:","symbol":"🛷","group":"activities","keywords":["sled","sledge","sleigh",""]},{"id":":curling_stone:","symbol":"🥌","group":"activities","keywords":["curling stone","game","rock"]},{"id":":direct_hit:","symbol":"🎯","group":"activities","keywords":["bullseye","dart","direct hit","game","hit","target"]},{"id":":pool_8_ball:","symbol":"🎱","group":"activities","keywords":["8","ball","billiard","eight","game","pool 8 ball"]},{"id":":crystal_ball:","symbol":"🔮","group":"activities","keywords":["ball","crystal","fairy tale","fantasy","fortune","tool"]},{"id":":video_game:","symbol":"🎮","group":"activities","keywords":["controller","game","video game"]},{"id":":joystick:","symbol":"🕹","group":"activities","keywords":["game","joystick","video game"]},{"id":":slot_machine:","symbol":"🎰","group":"activities","keywords":["game","slot","slot machine"]},{"id":":game_die:","symbol":"🎲","group":"activities","keywords":["dice","die","game"]},{"id":":spade_suit:","symbol":"♠","group":"activities","keywords":["card","game","spade suit"]},{"id":":heart_suit:","symbol":"♥","group":"activities","keywords":["card","game","heart suit"]},{"id":":diamond_suit:","symbol":"♦","group":"activities","keywords":["card","diamond suit","game"]},{"id":":club_suit:","symbol":"♣","group":"activities","keywords":["card","club suit","game"]},{"id":":joker:","symbol":"🃏","group":"activities","keywords":["card","game","joker","wildcard"]},{"id":":mahjong_red_dragon:","symbol":"🀄","group":"activities","keywords":["game","mahjong","mahjong red dragon","red"]},{"id":":flower_playing_cards:","symbol":"🎴","group":"activities","keywords":["card","flower","flower playing cards","game","Japanese","playing"]},{"id":":performing_arts:","symbol":"🎭","group":"activities","keywords":["art","mask","performing","performing arts","theater","theatre"]},{"id":":framed_picture:","symbol":"🖼","group":"activities","keywords":["art","frame","framed picture","museum","painting","picture"]},{"id":":artist_palette:","symbol":"🎨","group":"activities","keywords":["art","artist palette","museum","painting","palette"]},{"id":":muted_speaker:","symbol":"🔇","group":"objects","keywords":["mute","muted speaker","quiet","silent","speaker"]},{"id":":speaker_low_volume:","symbol":"🔈","group":"objects","keywords":["soft","speaker low volume"]},{"id":":speaker_medium_volume:","symbol":"🔉","group":"objects","keywords":["medium","speaker medium volume"]},{"id":":speaker_high_volume:","symbol":"🔊","group":"objects","keywords":["loud","speaker high volume"]},{"id":":loudspeaker:","symbol":"📢","group":"objects","keywords":["loud","loudspeaker","public address"]},{"id":":megaphone:","symbol":"📣","group":"objects","keywords":["cheering","megaphone"]},{"id":":postal_horn:","symbol":"📯","group":"objects","keywords":["horn","post","postal"]},{"id":":bell:","symbol":"🔔","group":"objects","keywords":["bell"]},{"id":":bell_with_slash:","symbol":"🔕","group":"objects","keywords":["bell","bell with slash","forbidden","mute","quiet","silent"]},{"id":":musical_score:","symbol":"🎼","group":"objects","keywords":["music","musical score","score"]},{"id":":musical_note:","symbol":"🎵","group":"objects","keywords":["music","musical note","note"]},{"id":":musical_notes:","symbol":"🎶","group":"objects","keywords":["music","musical notes","note","notes"]},{"id":":studio_microphone:","symbol":"🎙","group":"objects","keywords":["mic","microphone","music","studio"]},{"id":":level_slider:","symbol":"🎚","group":"objects","keywords":["level","music","slider"]},{"id":":control_knobs:","symbol":"🎛","group":"objects","keywords":["control","knobs","music"]},{"id":":microphone:","symbol":"🎤","group":"objects","keywords":["karaoke","mic","microphone"]},{"id":":headphone:","symbol":"🎧","group":"objects","keywords":["earbud","headphone"]},{"id":":radio:","symbol":"📻","group":"objects","keywords":["radio","video"]},{"id":":saxophone:","symbol":"🎷","group":"objects","keywords":["instrument","music","sax","saxophone"]},{"id":":guitar:","symbol":"🎸","group":"objects","keywords":["guitar","instrument","music"]},{"id":":musical_keyboard:","symbol":"🎹","group":"objects","keywords":["instrument","keyboard","music","musical keyboard","piano"]},{"id":":trumpet:","symbol":"🎺","group":"objects","keywords":["instrument","music","trumpet"]},{"id":":violin:","symbol":"🎻","group":"objects","keywords":["instrument","music","violin"]},{"id":":drum:","symbol":"🥁","group":"objects","keywords":["drum","drumsticks","music"]},{"id":":mobile_phone:","symbol":"📱","group":"objects","keywords":["cell","mobile","phone","telephone"]},{"id":":mobile_phone_with_arrow:","symbol":"📲","group":"objects","keywords":["arrow","cell","mobile","mobile phone with arrow","phone","receive"]},{"id":":telephone:","symbol":"☎","group":"objects","keywords":["phone","telephone"]},{"id":":telephone_receiver:","symbol":"📞","group":"objects","keywords":["phone","receiver","telephone"]},{"id":":pager:","symbol":"📟","group":"objects","keywords":["pager"]},{"id":":fax_machine:","symbol":"📠","group":"objects","keywords":["fax","fax machine"]},{"id":":battery:","symbol":"🔋","group":"objects","keywords":["battery"]},{"id":":electric_plug:","symbol":"🔌","group":"objects","keywords":["electric","electricity","plug"]},{"id":":laptop_computer:","symbol":"💻","group":"objects","keywords":["computer","laptop computer","pc","personal"]},{"id":":desktop_computer:","symbol":"🖥","group":"objects","keywords":["computer","desktop"]},{"id":":printer:","symbol":"🖨","group":"objects","keywords":["computer","printer"]},{"id":":keyboard:","symbol":"⌨","group":"objects","keywords":["computer","keyboard"]},{"id":":computer_mouse:","symbol":"🖱","group":"objects","keywords":["computer","computer mouse"]},{"id":":trackball:","symbol":"🖲","group":"objects","keywords":["computer","trackball"]},{"id":":computer_disk:","symbol":"💽","group":"objects","keywords":["computer","disk","minidisk","optical"]},{"id":":floppy_disk:","symbol":"💾","group":"objects","keywords":["computer","disk","floppy"]},{"id":":optical_disk:","symbol":"💿","group":"objects","keywords":["cd","computer","disk","optical"]},{"id":":dvd:","symbol":"📀","group":"objects","keywords":["blu-ray","computer","disk","dvd","optical"]},{"id":":movie_camera:","symbol":"🎥","group":"objects","keywords":["camera","cinema","movie"]},{"id":":film_frames:","symbol":"🎞","group":"objects","keywords":["cinema","film","frames","movie"]},{"id":":film_projector:","symbol":"📽","group":"objects","keywords":["cinema","film","movie","projector","video"]},{"id":":clapper_board:","symbol":"🎬","group":"objects","keywords":["clapper","clapper board","movie"]},{"id":":television:","symbol":"📺","group":"objects","keywords":["television","tv","video"]},{"id":":camera:","symbol":"📷","group":"objects","keywords":["camera","video"]},{"id":":camera_with_flash:","symbol":"📸","group":"objects","keywords":["camera","camera with flash","flash","video"]},{"id":":video_camera:","symbol":"📹","group":"objects","keywords":["camera","video"]},{"id":":videocassette:","symbol":"📼","group":"objects","keywords":["tape","vhs","video","videocassette"]},{"id":":magnifying_glass_tilted_left:","symbol":"🔍","group":"objects","keywords":["glass","magnifying","magnifying glass tilted left","search","tool"]},{"id":":magnifying_glass_tilted_right:","symbol":"🔎","group":"objects","keywords":["glass","magnifying","magnifying glass tilted right","search","tool"]},{"id":":candle:","symbol":"🕯","group":"objects","keywords":["candle","light"]},{"id":":light_bulb:","symbol":"💡","group":"objects","keywords":["bulb","comic","electric","idea","light"]},{"id":":flashlight:","symbol":"🔦","group":"objects","keywords":["electric","flashlight","light","tool","torch"]},{"id":":red_paper_lantern:","symbol":"🏮","group":"objects","keywords":["bar","lantern","light","red","red paper lantern"]},{"id":":notebook_with_decorative_cover:","symbol":"📔","group":"objects","keywords":["book","cover","decorated","notebook","notebook with decorative cover"]},{"id":":closed_book:","symbol":"📕","group":"objects","keywords":["book","closed"]},{"id":":open_book:","symbol":"📖","group":"objects","keywords":["book","open"]},{"id":":green_book:","symbol":"📗","group":"objects","keywords":["book","green"]},{"id":":blue_book:","symbol":"📘","group":"objects","keywords":["blue","book"]},{"id":":orange_book:","symbol":"📙","group":"objects","keywords":["book","orange"]},{"id":":books:","symbol":"📚","group":"objects","keywords":["book","books"]},{"id":":notebook:","symbol":"📓","group":"objects","keywords":["notebook"]},{"id":":ledger:","symbol":"📒","group":"objects","keywords":["ledger","notebook"]},{"id":":page_with_curl:","symbol":"📃","group":"objects","keywords":["curl","document","page","page with curl"]},{"id":":scroll:","symbol":"📜","group":"objects","keywords":["paper","scroll"]},{"id":":page_facing_up:","symbol":"📄","group":"objects","keywords":["document","page","page facing up"]},{"id":":newspaper:","symbol":"📰","group":"objects","keywords":["news","newspaper","paper"]},{"id":":rolled-up_newspaper:","symbol":"🗞","group":"objects","keywords":["news","newspaper","paper","rolled","rolled-up newspaper"]},{"id":":bookmark_tabs:","symbol":"📑","group":"objects","keywords":["bookmark","mark","marker","tabs"]},{"id":":bookmark:","symbol":"🔖","group":"objects","keywords":["bookmark","mark"]},{"id":":label:","symbol":"🏷","group":"objects","keywords":["label"]},{"id":":money_bag:","symbol":"💰","group":"objects","keywords":["bag","dollar","money","moneybag"]},{"id":":yen_banknote:","symbol":"💴","group":"objects","keywords":["banknote","bill","currency","money","note","yen"]},{"id":":dollar_banknote:","symbol":"💵","group":"objects","keywords":["banknote","bill","currency","dollar","money","note"]},{"id":":euro_banknote:","symbol":"💶","group":"objects","keywords":["banknote","bill","currency","euro","money","note"]},{"id":":pound_banknote:","symbol":"💷","group":"objects","keywords":["banknote","bill","currency","money","note","pound"]},{"id":":money_with_wings:","symbol":"💸","group":"objects","keywords":["banknote","bill","fly","money","money with wings","wings"]},{"id":":credit_card:","symbol":"💳","group":"objects","keywords":["card","credit","money"]},{"id":":chart_increasing_with_yen:","symbol":"💹","group":"objects","keywords":["chart","chart increasing with yen","graph","growth","money","yen"]},{"id":":currency_exchange:","symbol":"💱","group":"objects","keywords":["bank","currency","exchange","money"]},{"id":":heavy_dollar_sign:","symbol":"💲","group":"objects","keywords":["currency","dollar","heavy dollar sign","money"]},{"id":":envelope:","symbol":"✉","group":"objects","keywords":["email","envelope","letter"]},{"id":":e-mail:","symbol":"📧","group":"objects","keywords":["e-mail","email","letter","mail"]},{"id":":incoming_envelope:","symbol":"📨","group":"objects","keywords":["e-mail","email","envelope","incoming","letter","receive"]},{"id":":envelope_with_arrow:","symbol":"📩","group":"objects","keywords":["arrow","e-mail","email","envelope","envelope with arrow","outgoing"]},{"id":":outbox_tray:","symbol":"📤","group":"objects","keywords":["box","letter","mail","outbox","sent","tray"]},{"id":":inbox_tray:","symbol":"📥","group":"objects","keywords":["box","inbox","letter","mail","receive","tray"]},{"id":":package:","symbol":"📦","group":"objects","keywords":["box","package","parcel"]},{"id":":closed_mailbox_with_raised_flag:","symbol":"📫","group":"objects","keywords":["closed","closed mailbox with raised flag","mail","mailbox","postbox"]},{"id":":closed_mailbox_with_lowered_flag:","symbol":"📪","group":"objects","keywords":["closed","closed mailbox with lowered flag","lowered","mail","mailbox","postbox"]},{"id":":open_mailbox_with_raised_flag:","symbol":"📬","group":"objects","keywords":["mail","mailbox","open","open mailbox with raised flag","postbox"]},{"id":":open_mailbox_with_lowered_flag:","symbol":"📭","group":"objects","keywords":["lowered","mail","mailbox","open","open mailbox with lowered flag","postbox"]},{"id":":postbox:","symbol":"📮","group":"objects","keywords":["mail","mailbox","postbox"]},{"id":":ballot_box_with_ballot:","symbol":"🗳","group":"objects","keywords":["ballot","ballot box with ballot","box"]},{"id":":pencil:","symbol":"✏","group":"objects","keywords":["pencil"]},{"id":":black_nib:","symbol":"✒","group":"objects","keywords":["black nib","nib","pen"]},{"id":":fountain_pen:","symbol":"🖋","group":"objects","keywords":["fountain","pen"]},{"id":":pen:","symbol":"🖊","group":"objects","keywords":["ballpoint","pen"]},{"id":":paintbrush:","symbol":"🖌","group":"objects","keywords":["paintbrush","painting"]},{"id":":crayon:","symbol":"🖍","group":"objects","keywords":["crayon"]},{"id":":memo:","symbol":"📝","group":"objects","keywords":["memo","pencil"]},{"id":":briefcase:","symbol":"💼","group":"objects","keywords":["briefcase"]},{"id":":file_folder:","symbol":"📁","group":"objects","keywords":["file","folder"]},{"id":":open_file_folder:","symbol":"📂","group":"objects","keywords":["file","folder","open"]},{"id":":card_index_dividers:","symbol":"🗂","group":"objects","keywords":["card","dividers","index"]},{"id":":calendar:","symbol":"📅","group":"objects","keywords":["calendar","date"]},{"id":":tear-off_calendar:","symbol":"📆","group":"objects","keywords":["calendar","tear-off calendar"]},{"id":":spiral_notepad:","symbol":"🗒","group":"objects","keywords":["note","pad","spiral","spiral notepad"]},{"id":":spiral_calendar:","symbol":"🗓","group":"objects","keywords":["calendar","pad","spiral"]},{"id":":card_index:","symbol":"📇","group":"objects","keywords":["card","index","rolodex"]},{"id":":chart_increasing:","symbol":"📈","group":"objects","keywords":["chart","chart increasing","graph","growth","trend","upward"]},{"id":":chart_decreasing:","symbol":"📉","group":"objects","keywords":["chart","chart decreasing","down","graph","trend"]},{"id":":bar_chart:","symbol":"📊","group":"objects","keywords":["bar","chart","graph"]},{"id":":clipboard:","symbol":"📋","group":"objects","keywords":["clipboard"]},{"id":":pushpin:","symbol":"📌","group":"objects","keywords":["pin","pushpin"]},{"id":":round_pushpin:","symbol":"📍","group":"objects","keywords":["pin","pushpin","round pushpin"]},{"id":":paperclip:","symbol":"📎","group":"objects","keywords":["paperclip"]},{"id":":linked_paperclips:","symbol":"🖇","group":"objects","keywords":["link","linked paperclips","paperclip"]},{"id":":straight_ruler:","symbol":"📏","group":"objects","keywords":["ruler","straight edge","straight ruler"]},{"id":":triangular_ruler:","symbol":"📐","group":"objects","keywords":["ruler","set","triangle","triangular ruler"]},{"id":":scissors:","symbol":"✂","group":"objects","keywords":["cutting","scissors","tool"]},{"id":":card_file_box:","symbol":"🗃","group":"objects","keywords":["box","card","file"]},{"id":":file_cabinet:","symbol":"🗄","group":"objects","keywords":["cabinet","file","filing"]},{"id":":wastebasket:","symbol":"🗑","group":"objects","keywords":["wastebasket"]},{"id":":locked:","symbol":"🔒","group":"objects","keywords":["closed","locked"]},{"id":":unlocked:","symbol":"🔓","group":"objects","keywords":["lock","open","unlock","unlocked"]},{"id":":locked_with_pen:","symbol":"🔏","group":"objects","keywords":["ink","lock","locked with pen","nib","pen","privacy"]},{"id":":locked_with_key:","symbol":"🔐","group":"objects","keywords":["closed","key","lock","locked with key","secure"]},{"id":":key:","symbol":"🔑","group":"objects","keywords":["key","lock","password"]},{"id":":old_key:","symbol":"🗝","group":"objects","keywords":["clue","key","lock","old"]},{"id":":hammer:","symbol":"🔨","group":"objects","keywords":["hammer","tool"]},{"id":":pick:","symbol":"⛏","group":"objects","keywords":["mining","pick","tool"]},{"id":":hammer_and_pick:","symbol":"⚒","group":"objects","keywords":["hammer","hammer and pick","pick","tool"]},{"id":":hammer_and_wrench:","symbol":"🛠","group":"objects","keywords":["hammer","hammer and wrench","spanner","tool","wrench"]},{"id":":dagger:","symbol":"🗡","group":"objects","keywords":["dagger","knife","weapon"]},{"id":":crossed_swords:","symbol":"⚔","group":"objects","keywords":["crossed","swords","weapon"]},{"id":":pistol:","symbol":"🔫","group":"objects","keywords":["gun","handgun","pistol","revolver","tool","weapon"]},{"id":":bow_and_arrow:","symbol":"🏹","group":"objects","keywords":["archer","arrow","bow","bow and arrow","Sagittarius","zodiac"]},{"id":":shield:","symbol":"🛡","group":"objects","keywords":["shield","weapon"]},{"id":":wrench:","symbol":"🔧","group":"objects","keywords":["spanner","tool","wrench"]},{"id":":nut_and_bolt:","symbol":"🔩","group":"objects","keywords":["bolt","nut","nut and bolt","tool"]},{"id":":gear:","symbol":"⚙","group":"objects","keywords":["cog","cogwheel","gear","tool"]},{"id":":clamp:","symbol":"🗜","group":"objects","keywords":["clamp","compress","tool","vice"]},{"id":":balance_scale:","symbol":"⚖","group":"objects","keywords":["balance","justice","Libra","scale","zodiac"]},{"id":":link:","symbol":"🔗","group":"objects","keywords":["link"]},{"id":":chains:","symbol":"⛓","group":"objects","keywords":["chain","chains"]},{"id":":alembic:","symbol":"⚗","group":"objects","keywords":["alembic","chemistry","tool"]},{"id":":microscope:","symbol":"🔬","group":"objects","keywords":["microscope","science","tool"]},{"id":":telescope:","symbol":"🔭","group":"objects","keywords":["science","telescope","tool"]},{"id":":satellite_antenna:","symbol":"📡","group":"objects","keywords":["antenna","dish","satellite"]},{"id":":syringe:","symbol":"💉","group":"objects","keywords":["medicine","needle","shot","sick","syringe"]},{"id":":pill:","symbol":"💊","group":"objects","keywords":["doctor","medicine","pill","sick"]},{"id":":door:","symbol":"🚪","group":"objects","keywords":["door"]},{"id":":bed:","symbol":"🛏","group":"objects","keywords":["bed","hotel","sleep"]},{"id":":couch_and_lamp:","symbol":"🛋","group":"objects","keywords":["couch","couch and lamp","hotel","lamp"]},{"id":":toilet:","symbol":"🚽","group":"objects","keywords":["toilet"]},{"id":":shower:","symbol":"🚿","group":"objects","keywords":["shower","water"]},{"id":":bathtub:","symbol":"🛁","group":"objects","keywords":["bath","bathtub"]},{"id":":shopping_cart:","symbol":"🛒","group":"objects","keywords":["cart","shopping","trolley"]},{"id":":cigarette:","symbol":"🚬","group":"objects","keywords":["cigarette","smoking"]},{"id":":coffin:","symbol":"⚰","group":"objects","keywords":["coffin","death"]},{"id":":funeral_urn:","symbol":"⚱","group":"objects","keywords":["ashes","death","funeral","urn"]},{"id":":moai:","symbol":"🗿","group":"objects","keywords":["face","moai","moyai","statue"]},{"id":":atm_sign:","symbol":"🏧","group":"symbols","keywords":["atm","ATM sign","automated","bank","teller"]},{"id":":litter_in_bin_sign:","symbol":"🚮","group":"symbols","keywords":["litter","litter bin","litter in bin sign"]},{"id":":potable_water:","symbol":"🚰","group":"symbols","keywords":["drinking","potable","water"]},{"id":":wheelchair_symbol:","symbol":"♿","group":"symbols","keywords":["access","wheelchair symbol"]},{"id":":men’s_room:","symbol":"🚹","group":"symbols","keywords":["lavatory","man","men’s room","restroom","wc"]},{"id":":women’s_room:","symbol":"🚺","group":"symbols","keywords":["lavatory","restroom","wc","woman","women’s room"]},{"id":":restroom:","symbol":"🚻","group":"symbols","keywords":["lavatory","restroom","WC"]},{"id":":baby_symbol:","symbol":"🚼","group":"symbols","keywords":["baby","baby symbol","changing"]},{"id":":water_closet:","symbol":"🚾","group":"symbols","keywords":["closet","lavatory","restroom","water","wc"]},{"id":":passport_control:","symbol":"🛂","group":"symbols","keywords":["control","passport"]},{"id":":customs:","symbol":"🛃","group":"symbols","keywords":["customs"]},{"id":":baggage_claim:","symbol":"🛄","group":"symbols","keywords":["baggage","claim"]},{"id":":left_luggage:","symbol":"🛅","group":"symbols","keywords":["baggage","left luggage","locker","luggage"]},{"id":":warning:","symbol":"⚠","group":"symbols","keywords":["warning"]},{"id":":children_crossing:","symbol":"🚸","group":"symbols","keywords":["child","children crossing","crossing","pedestrian","traffic"]},{"id":":no_entry:","symbol":"⛔","group":"symbols","keywords":["entry","forbidden","no","not","prohibited","traffic"]},{"id":":prohibited:","symbol":"🚫","group":"symbols","keywords":["entry","forbidden","no","not","prohibited"]},{"id":":no_bicycles:","symbol":"🚳","group":"symbols","keywords":["bicycle","bike","forbidden","no","no bicycles","prohibited"]},{"id":":no_smoking:","symbol":"🚭","group":"symbols","keywords":["forbidden","no","not","prohibited","smoking"]},{"id":":no_littering:","symbol":"🚯","group":"symbols","keywords":["forbidden","litter","no","no littering","not","prohibited"]},{"id":":non-potable_water:","symbol":"🚱","group":"symbols","keywords":["non-drinking","non-potable","water"]},{"id":":no_pedestrians:","symbol":"🚷","group":"symbols","keywords":["forbidden","no","no pedestrians","not","pedestrian","prohibited"]},{"id":":no_mobile_phones:","symbol":"📵","group":"symbols","keywords":["cell","forbidden","mobile","no","no mobile phones","phone"]},{"id":":no_one_under_eighteen:","symbol":"🔞","group":"symbols","keywords":["18","age restriction","eighteen","no one under eighteen","prohibited","underage"]},{"id":":radioactive:","symbol":"☢","group":"symbols","keywords":["radioactive","sign"]},{"id":":biohazard:","symbol":"☣","group":"symbols","keywords":["biohazard","sign"]},{"id":":up_arrow:","symbol":"⬆","group":"symbols","keywords":["arrow","cardinal","direction","north","up arrow"]},{"id":":up-right_arrow:","symbol":"↗","group":"symbols","keywords":["arrow","direction","intercardinal","northeast","up-right arrow"]},{"id":":right_arrow:","symbol":"➡","group":"symbols","keywords":["arrow","cardinal","direction","east","right arrow"]},{"id":":down-right_arrow:","symbol":"↘","group":"symbols","keywords":["arrow","direction","down-right arrow","intercardinal","southeast"]},{"id":":down_arrow:","symbol":"⬇","group":"symbols","keywords":["arrow","cardinal","direction","down","south"]},{"id":":down-left_arrow:","symbol":"↙","group":"symbols","keywords":["arrow","direction","down-left arrow","intercardinal","southwest"]},{"id":":left_arrow:","symbol":"⬅","group":"symbols","keywords":["arrow","cardinal","direction","left arrow","west"]},{"id":":up-left_arrow:","symbol":"↖","group":"symbols","keywords":["arrow","direction","intercardinal","northwest","up-left arrow"]},{"id":":up-down_arrow:","symbol":"↕","group":"symbols","keywords":["arrow","up-down arrow"]},{"id":":left-right_arrow:","symbol":"↔","group":"symbols","keywords":["arrow","left-right arrow"]},{"id":":right_arrow_curving_left:","symbol":"↩","group":"symbols","keywords":["arrow","right arrow curving left"]},{"id":":left_arrow_curving_right:","symbol":"↪","group":"symbols","keywords":["arrow","left arrow curving right"]},{"id":":right_arrow_curving_up:","symbol":"⤴","group":"symbols","keywords":["arrow","right arrow curving up"]},{"id":":right_arrow_curving_down:","symbol":"⤵","group":"symbols","keywords":["arrow","down","right arrow curving down"]},{"id":":clockwise_vertical_arrows:","symbol":"🔃","group":"symbols","keywords":["arrow","clockwise","clockwise vertical arrows","reload"]},{"id":":counterclockwise_arrows_button:","symbol":"🔄","group":"symbols","keywords":["anticlockwise","arrow","counterclockwise","counterclockwise arrows button","withershins"]},{"id":":back_arrow:","symbol":"🔙","group":"symbols","keywords":["arrow","back","BACK arrow"]},{"id":":end_arrow:","symbol":"🔚","group":"symbols","keywords":["arrow","end","END arrow"]},{"id":":on!_arrow:","symbol":"🔛","group":"symbols","keywords":["arrow","mark","on","ON! arrow"]},{"id":":soon_arrow:","symbol":"🔜","group":"symbols","keywords":["arrow","soon","SOON arrow"]},{"id":":top_arrow:","symbol":"🔝","group":"symbols","keywords":["arrow","top","TOP arrow","up"]},{"id":":place_of_worship:","symbol":"🛐","group":"symbols","keywords":["place of worship","religion","worship"]},{"id":":atom_symbol:","symbol":"⚛","group":"symbols","keywords":["atheist","atom","atom symbol"]},{"id":":om:","symbol":"🕉","group":"symbols","keywords":["Hindu","om","religion"]},{"id":":star_of_david:","symbol":"✡","group":"symbols","keywords":["David","Jew","Jewish","religion","star","star of David"]},{"id":":wheel_of_dharma:","symbol":"☸","group":"symbols","keywords":["Buddhist","dharma","religion","wheel","wheel of dharma"]},{"id":":yin_yang:","symbol":"☯","group":"symbols","keywords":["religion","tao","taoist","yang","yin"]},{"id":":latin_cross:","symbol":"✝","group":"symbols","keywords":["Christian","cross","latin cross","religion"]},{"id":":orthodox_cross:","symbol":"☦","group":"symbols","keywords":["Christian","cross","orthodox cross","religion"]},{"id":":star_and_crescent:","symbol":"☪","group":"symbols","keywords":["islam","Muslim","religion","star and crescent"]},{"id":":peace_symbol:","symbol":"☮","group":"symbols","keywords":["peace","peace symbol"]},{"id":":menorah:","symbol":"🕎","group":"symbols","keywords":["candelabrum","candlestick","menorah","religion"]},{"id":":dotted_six-pointed_star:","symbol":"🔯","group":"symbols","keywords":["dotted six-pointed star","fortune","star"]},{"id":":aries:","symbol":"♈","group":"symbols","keywords":["Aries","ram","zodiac"]},{"id":":taurus:","symbol":"♉","group":"symbols","keywords":["bull","ox","Taurus","zodiac"]},{"id":":gemini:","symbol":"♊","group":"symbols","keywords":["Gemini","twins","zodiac"]},{"id":":cancer:","symbol":"♋","group":"symbols","keywords":["Cancer","crab","zodiac"]},{"id":":leo:","symbol":"♌","group":"symbols","keywords":["Leo","lion","zodiac"]},{"id":":virgo:","symbol":"♍","group":"symbols","keywords":["Virgo","zodiac"]},{"id":":libra:","symbol":"♎","group":"symbols","keywords":["balance","justice","Libra","scales","zodiac"]},{"id":":scorpio:","symbol":"♏","group":"symbols","keywords":["Scorpio","scorpion","scorpius","zodiac"]},{"id":":sagittarius:","symbol":"♐","group":"symbols","keywords":["archer","Sagittarius","zodiac"]},{"id":":capricorn:","symbol":"♑","group":"symbols","keywords":["Capricorn","goat","zodiac"]},{"id":":aquarius:","symbol":"♒","group":"symbols","keywords":["Aquarius","bearer","water","zodiac"]},{"id":":pisces:","symbol":"♓","group":"symbols","keywords":["fish","Pisces","zodiac"]},{"id":":ophiuchus:","symbol":"⛎","group":"symbols","keywords":["bearer","Ophiuchus","serpent","snake","zodiac"]},{"id":":shuffle_tracks_button:","symbol":"🔀","group":"symbols","keywords":["arrow","crossed","shuffle tracks button"]},{"id":":repeat_button:","symbol":"🔁","group":"symbols","keywords":["arrow","clockwise","repeat","repeat button"]},{"id":":repeat_single_button:","symbol":"🔂","group":"symbols","keywords":["arrow","clockwise","once","repeat single button"]},{"id":":play_button:","symbol":"▶","group":"symbols","keywords":["arrow","play","play button","right","triangle"]},{"id":":fast-forward_button:","symbol":"⏩","group":"symbols","keywords":["arrow","double","fast","fast-forward button","forward"]},{"id":":next_track_button:","symbol":"⏭","group":"symbols","keywords":["arrow","next scene","next track","next track button","triangle"]},{"id":":play_or_pause_button:","symbol":"⏯","group":"symbols","keywords":["arrow","pause","play","play or pause button","right","triangle"]},{"id":":reverse_button:","symbol":"◀","group":"symbols","keywords":["arrow","left","reverse","reverse button","triangle"]},{"id":":fast_reverse_button:","symbol":"⏪","group":"symbols","keywords":["arrow","double","fast reverse button","rewind"]},{"id":":last_track_button:","symbol":"⏮","group":"symbols","keywords":["arrow","last track button","previous scene","previous track","triangle"]},{"id":":upwards_button:","symbol":"🔼","group":"symbols","keywords":["arrow","button","red","upwards button"]},{"id":":fast_up_button:","symbol":"⏫","group":"symbols","keywords":["arrow","double","fast up button"]},{"id":":downwards_button:","symbol":"🔽","group":"symbols","keywords":["arrow","button","down","downwards button","red"]},{"id":":fast_down_button:","symbol":"⏬","group":"symbols","keywords":["arrow","double","down","fast down button"]},{"id":":pause_button:","symbol":"⏸","group":"symbols","keywords":["bar","double","pause","pause button","vertical"]},{"id":":stop_button:","symbol":"⏹","group":"symbols","keywords":["square","stop","stop button"]},{"id":":record_button:","symbol":"⏺","group":"symbols","keywords":["circle","record","record button"]},{"id":":eject_button:","symbol":"⏏","group":"symbols","keywords":["eject","eject button"]},{"id":":cinema:","symbol":"🎦","group":"symbols","keywords":["camera","cinema","film","movie"]},{"id":":dim_button:","symbol":"🔅","group":"symbols","keywords":["brightness","dim","dim button","low"]},{"id":":bright_button:","symbol":"🔆","group":"symbols","keywords":["bright","bright button","brightness"]},{"id":":antenna_bars:","symbol":"📶","group":"symbols","keywords":["antenna","antenna bars","bar","cell","mobile","phone"]},{"id":":vibration_mode:","symbol":"📳","group":"symbols","keywords":["cell","mobile","mode","phone","telephone","vibration"]},{"id":":mobile_phone_off:","symbol":"📴","group":"symbols","keywords":["cell","mobile","off","phone","telephone"]},{"id":":female_sign:","symbol":"♀","group":"symbols","keywords":["female sign","woman"]},{"id":":male_sign:","symbol":"♂","group":"symbols","keywords":["male sign","man"]},{"id":":medical_symbol:","symbol":"⚕","group":"symbols","keywords":["aesculapius","medical symbol","medicine","staff"]},{"id":":recycling_symbol:","symbol":"♻","group":"symbols","keywords":["recycle","recycling symbol"]},{"id":":fleur-de-lis:","symbol":"⚜","group":"symbols","keywords":["fleur-de-lis"]},{"id":":trident_emblem:","symbol":"🔱","group":"symbols","keywords":["anchor","emblem","ship","tool","trident"]},{"id":":name_badge:","symbol":"📛","group":"symbols","keywords":["badge","name"]},{"id":":japanese_symbol_for_beginner:","symbol":"🔰","group":"symbols","keywords":["beginner","chevron","Japanese","Japanese symbol for beginner","leaf"]},{"id":":heavy_large_circle:","symbol":"⭕","group":"symbols","keywords":["circle","heavy large circle","o"]},{"id":":white_heavy_check_mark:","symbol":"✅","group":"symbols","keywords":["check","mark","white heavy check mark"]},{"id":":ballot_box_with_check:","symbol":"☑","group":"symbols","keywords":["ballot","ballot box with check","box","check"]},{"id":":heavy_check_mark:","symbol":"✔","group":"symbols","keywords":["check","heavy check mark","mark"]},{"id":":heavy_multiplication_x:","symbol":"✖","group":"symbols","keywords":["cancel","heavy multiplication x","multiplication","multiply","x"]},{"id":":cross_mark:","symbol":"❌","group":"symbols","keywords":["cancel","cross mark","mark","multiplication","multiply","x"]},{"id":":cross_mark_button:","symbol":"❎","group":"symbols","keywords":["cross mark button","mark","square"]},{"id":":heavy_plus_sign:","symbol":"➕","group":"symbols","keywords":["heavy plus sign","math","plus"]},{"id":":heavy_minus_sign:","symbol":"➖","group":"symbols","keywords":["heavy minus sign","math","minus"]},{"id":":heavy_division_sign:","symbol":"➗","group":"symbols","keywords":["division","heavy division sign","math"]},{"id":":curly_loop:","symbol":"➰","group":"symbols","keywords":["curl","curly loop","loop"]},{"id":":double_curly_loop:","symbol":"➿","group":"symbols","keywords":["curl","double","double curly loop","loop"]},{"id":":part_alternation_mark:","symbol":"〽","group":"symbols","keywords":["mark","part","part alternation mark"]},{"id":":eight-spoked_asterisk:","symbol":"✳","group":"symbols","keywords":["asterisk","eight-spoked asterisk"]},{"id":":eight-pointed_star:","symbol":"✴","group":"symbols","keywords":["eight-pointed star","star"]},{"id":":sparkle:","symbol":"❇","group":"symbols","keywords":["sparkle"]},{"id":":double_exclamation_mark:","symbol":"‼","group":"symbols","keywords":["bangbang","double exclamation mark","exclamation","mark","punctuation"]},{"id":":exclamation_question_mark:","symbol":"⁉","group":"symbols","keywords":["exclamation","interrobang","mark","punctuation","question"]},{"id":":question_mark:","symbol":"❓","group":"symbols","keywords":["mark","punctuation","question"]},{"id":":white_question_mark:","symbol":"❔","group":"symbols","keywords":["mark","outlined","punctuation","question","white question mark"]},{"id":":white_exclamation_mark:","symbol":"❕","group":"symbols","keywords":["exclamation","mark","outlined","punctuation","white exclamation mark"]},{"id":":exclamation_mark:","symbol":"❗","group":"symbols","keywords":["exclamation","mark","punctuation"]},{"id":":wavy_dash:","symbol":"〰","group":"symbols","keywords":["dash","punctuation","wavy"]},{"id":":copyright:","symbol":"©","group":"symbols","keywords":["copyright"]},{"id":":registered:","symbol":"®","group":"symbols","keywords":["registered"]},{"id":":trade_mark:","symbol":"™","group":"symbols","keywords":["mark","tm","trade mark","trademark"]},{"id":":keycap_#:","symbol":"#️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_*:","symbol":"*️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_0:","symbol":"0️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_1:","symbol":"1️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_2:","symbol":"2️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_3:","symbol":"3️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_4:","symbol":"4️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_5:","symbol":"5️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_6:","symbol":"6️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_7:","symbol":"7️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_8:","symbol":"8️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_9:","symbol":"9️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_10:","symbol":"🔟","group":"symbols","keywords":["keycap"]},{"id":":hundred_points:","symbol":"💯","group":"symbols","keywords":["100","full","hundred","hundred points","score"]},{"id":":input_latin_uppercase:","symbol":"🔠","group":"symbols","keywords":["ABCD","input","latin","letters","uppercase"]},{"id":":input_latin_lowercase:","symbol":"🔡","group":"symbols","keywords":["abcd","input","latin","letters","lowercase"]},{"id":":input_numbers:","symbol":"🔢","group":"symbols","keywords":["1234","input","numbers"]},{"id":":input_symbols:","symbol":"🔣","group":"symbols","keywords":["〒♪&%","input","input symbols"]},{"id":":input_latin_letters:","symbol":"🔤","group":"symbols","keywords":["abc","alphabet","input","latin","letters"]},{"id":":a_button_(blood_type):","symbol":"🅰","group":"symbols","keywords":["a","A button (blood type)","blood type"]},{"id":":ab_button_(blood_type):","symbol":"🆎","group":"symbols","keywords":["ab","AB button (blood type)","blood type"]},{"id":":b_button_(blood_type):","symbol":"🅱","group":"symbols","keywords":["b","B button (blood type)","blood type"]},{"id":":cl_button:","symbol":"🆑","group":"symbols","keywords":["cl","CL button"]},{"id":":cool_button:","symbol":"🆒","group":"symbols","keywords":["cool","COOL button"]},{"id":":free_button:","symbol":"🆓","group":"symbols","keywords":["free","FREE button"]},{"id":":information:","symbol":"ℹ","group":"symbols","keywords":["i","information"]},{"id":":id_button:","symbol":"🆔","group":"symbols","keywords":["id","ID button","identity"]},{"id":":circled_m:","symbol":"Ⓜ","group":"symbols","keywords":["circle","circled M","m"]},{"id":":new_button:","symbol":"🆕","group":"symbols","keywords":["new","NEW button"]},{"id":":ng_button:","symbol":"🆖","group":"symbols","keywords":["ng","NG button"]},{"id":":o_button_(blood_type):","symbol":"🅾","group":"symbols","keywords":["blood type","o","O button (blood type)"]},{"id":":ok_button:","symbol":"🆗","group":"symbols","keywords":["OK","OK button"]},{"id":":p_button:","symbol":"🅿","group":"symbols","keywords":["P button","parking"]},{"id":":sos_button:","symbol":"🆘","group":"symbols","keywords":["help","sos","SOS button"]},{"id":":up!_button:","symbol":"🆙","group":"symbols","keywords":["mark","up","UP! button"]},{"id":":vs_button:","symbol":"🆚","group":"symbols","keywords":["versus","vs","VS button"]},{"id":":japanese_“here”_button:","symbol":"🈁","group":"symbols","keywords":["“here”","Japanese","Japanese “here” button","katakana","ココ"]},{"id":":japanese_“service_charge”_button:","symbol":"🈂","group":"symbols","keywords":["“service charge”","Japanese","Japanese “service charge” button","katakana","サ"]},{"id":":japanese_“monthly_amount”_button:","symbol":"🈷","group":"symbols","keywords":["“monthly amount”","ideograph","Japanese","Japanese “monthly amount” button","月"]},{"id":":japanese_“not_free_of_charge”_button:","symbol":"🈶","group":"symbols","keywords":["“not free of charge”","ideograph","Japanese","Japanese “not free of charge” button","有"]},{"id":":japanese_“reserved”_button:","symbol":"🈯","group":"symbols","keywords":["“reserved”","ideograph","Japanese","Japanese “reserved” button","指"]},{"id":":japanese_“bargain”_button:","symbol":"🉐","group":"symbols","keywords":["“bargain”","ideograph","Japanese","Japanese “bargain” button","得"]},{"id":":japanese_“discount”_button:","symbol":"🈹","group":"symbols","keywords":["“discount”","ideograph","Japanese","Japanese “discount” button","割"]},{"id":":japanese_“free_of_charge”_button:","symbol":"🈚","group":"symbols","keywords":["“free of charge”","ideograph","Japanese","Japanese “free of charge” button","無"]},{"id":":japanese_“prohibited”_button:","symbol":"🈲","group":"symbols","keywords":["“prohibited”","ideograph","Japanese","Japanese “prohibited” button","禁"]},{"id":":japanese_“acceptable”_button:","symbol":"🉑","group":"symbols","keywords":["“acceptable”","ideograph","Japanese","Japanese “acceptable” button","可"]},{"id":":japanese_“application”_button:","symbol":"🈸","group":"symbols","keywords":["“application”","ideograph","Japanese","Japanese “application” button","申"]},{"id":":japanese_“passing_grade”_button:","symbol":"🈴","group":"symbols","keywords":["“passing grade”","ideograph","Japanese","Japanese “passing grade” button","合"]},{"id":":japanese_“vacancy”_button:","symbol":"🈳","group":"symbols","keywords":["“vacancy”","ideograph","Japanese","Japanese “vacancy” button","空"]},{"id":":japanese_“congratulations”_button:","symbol":"㊗","group":"symbols","keywords":["“congratulations”","ideograph","Japanese","Japanese “congratulations” button","祝"]},{"id":":japanese_“secret”_button:","symbol":"㊙","group":"symbols","keywords":["“secret”","ideograph","Japanese","Japanese “secret” button","秘"]},{"id":":japanese_“open_for_business”_button:","symbol":"🈺","group":"symbols","keywords":["“open for business”","ideograph","Japanese","Japanese “open for business” button","営"]},{"id":":japanese_“no_vacancy”_button:","symbol":"🈵","group":"symbols","keywords":["“no vacancy”","ideograph","Japanese","Japanese “no vacancy” button","満"]},{"id":":red_circle:","symbol":"🔴","group":"symbols","keywords":["circle","geometric","red"]},{"id":":blue_circle:","symbol":"🔵","group":"symbols","keywords":["blue","circle","geometric"]},{"id":":white_circle:","symbol":"⚪","group":"symbols","keywords":["circle","geometric","white circle"]},{"id":":black_circle:","symbol":"⚫","group":"symbols","keywords":["black circle","circle","geometric"]},{"id":":white_large_square:","symbol":"⬜","group":"symbols","keywords":["geometric","square","white large square"]},{"id":":black_large_square:","symbol":"⬛","group":"symbols","keywords":["black large square","geometric","square"]},{"id":":black_medium_square:","symbol":"◼","group":"symbols","keywords":["black medium square","geometric","square"]},{"id":":white_medium_square:","symbol":"◻","group":"symbols","keywords":["geometric","square","white medium square"]},{"id":":white_medium-small_square:","symbol":"◽","group":"symbols","keywords":["geometric","square","white medium-small square"]},{"id":":black_medium-small_square:","symbol":"◾","group":"symbols","keywords":["black medium-small square","geometric","square"]},{"id":":white_small_square:","symbol":"▫","group":"symbols","keywords":["geometric","square","white small square"]},{"id":":black_small_square:","symbol":"▪","group":"symbols","keywords":["black small square","geometric","square"]},{"id":":large_orange_diamond:","symbol":"🔶","group":"symbols","keywords":["diamond","geometric","large orange diamond","orange"]},{"id":":large_blue_diamond:","symbol":"🔷","group":"symbols","keywords":["blue","diamond","geometric","large blue diamond"]},{"id":":small_orange_diamond:","symbol":"🔸","group":"symbols","keywords":["diamond","geometric","orange","small orange diamond"]},{"id":":small_blue_diamond:","symbol":"🔹","group":"symbols","keywords":["blue","diamond","geometric","small blue diamond"]},{"id":":red_triangle_pointed_up:","symbol":"🔺","group":"symbols","keywords":["geometric","red","red triangle pointed up"]},{"id":":red_triangle_pointed_down:","symbol":"🔻","group":"symbols","keywords":["down","geometric","red","red triangle pointed down"]},{"id":":diamond_with_a_dot:","symbol":"💠","group":"symbols","keywords":["comic","diamond","diamond with a dot","geometric","inside"]},{"id":":radio_button:","symbol":"🔘","group":"symbols","keywords":["button","geometric","radio"]},{"id":":black_square_button:","symbol":"🔲","group":"symbols","keywords":["black square button","button","geometric","square"]},{"id":":white_square_button:","symbol":"🔳","group":"symbols","keywords":["button","geometric","outlined","square","white square button"]},{"id":":chequered_flag:","symbol":"🏁","group":"flags","keywords":["checkered","chequered","chequered flag","racing"]},{"id":":triangular_flag:","symbol":"🚩","group":"flags","keywords":["post","triangular flag"]},{"id":":crossed_flags:","symbol":"🎌","group":"flags","keywords":["celebration","cross","crossed","crossed flags","Japanese"]},{"id":":black_flag:","symbol":"🏴","group":"flags","keywords":["black flag","waving"]},{"id":":white_flag:","symbol":"🏳","group":"flags","keywords":["waving","white flag"]},{"id":":rainbow_flag:","symbol":"🏳️‍🌈","group":"flags","keywords":["rainbow","rainbow flag"]},{"id":":flag_ascension_island:","symbol":"🇦🇨","group":"flags","keywords":["flag"]},{"id":":flag_andorra:","symbol":"🇦🇩","group":"flags","keywords":["flag"]},{"id":":flag_united_arab_emirates:","symbol":"🇦🇪","group":"flags","keywords":["flag"]},{"id":":flag_afghanistan:","symbol":"🇦🇫","group":"flags","keywords":["flag"]},{"id":":flag_antigua_&_barbuda:","symbol":"🇦🇬","group":"flags","keywords":["flag"]},{"id":":flag_anguilla:","symbol":"🇦🇮","group":"flags","keywords":["flag"]},{"id":":flag_albania:","symbol":"🇦🇱","group":"flags","keywords":["flag"]},{"id":":flag_armenia:","symbol":"🇦🇲","group":"flags","keywords":["flag"]},{"id":":flag_angola:","symbol":"🇦🇴","group":"flags","keywords":["flag"]},{"id":":flag_antarctica:","symbol":"🇦🇶","group":"flags","keywords":["flag"]},{"id":":flag_argentina:","symbol":"🇦🇷","group":"flags","keywords":["flag"]},{"id":":flag_american_samoa:","symbol":"🇦🇸","group":"flags","keywords":["flag"]},{"id":":flag_austria:","symbol":"🇦🇹","group":"flags","keywords":["flag"]},{"id":":flag_australia:","symbol":"🇦🇺","group":"flags","keywords":["flag"]},{"id":":flag_aruba:","symbol":"🇦🇼","group":"flags","keywords":["flag"]},{"id":":flag_åland_islands:","symbol":"🇦🇽","group":"flags","keywords":["flag"]},{"id":":flag_azerbaijan:","symbol":"🇦🇿","group":"flags","keywords":["flag"]},{"id":":flag_bosnia_&_herzegovina:","symbol":"🇧🇦","group":"flags","keywords":["flag"]},{"id":":flag_barbados:","symbol":"🇧🇧","group":"flags","keywords":["flag"]},{"id":":flag_bangladesh:","symbol":"🇧🇩","group":"flags","keywords":["flag"]},{"id":":flag_belgium:","symbol":"🇧🇪","group":"flags","keywords":["flag"]},{"id":":flag_burkina_faso:","symbol":"🇧🇫","group":"flags","keywords":["flag"]},{"id":":flag_bulgaria:","symbol":"🇧🇬","group":"flags","keywords":["flag"]},{"id":":flag_bahrain:","symbol":"🇧🇭","group":"flags","keywords":["flag"]},{"id":":flag_burundi:","symbol":"🇧🇮","group":"flags","keywords":["flag"]},{"id":":flag_benin:","symbol":"🇧🇯","group":"flags","keywords":["flag"]},{"id":":flag_st._barthélemy:","symbol":"🇧🇱","group":"flags","keywords":["flag"]},{"id":":flag_bermuda:","symbol":"🇧🇲","group":"flags","keywords":["flag"]},{"id":":flag_brunei:","symbol":"🇧🇳","group":"flags","keywords":["flag"]},{"id":":flag_bolivia:","symbol":"🇧🇴","group":"flags","keywords":["flag"]},{"id":":flag_caribbean_netherlands:","symbol":"🇧🇶","group":"flags","keywords":["flag"]},{"id":":flag_brazil:","symbol":"🇧🇷","group":"flags","keywords":["flag"]},{"id":":flag_bahamas:","symbol":"🇧🇸","group":"flags","keywords":["flag"]},{"id":":flag_bhutan:","symbol":"🇧🇹","group":"flags","keywords":["flag"]},{"id":":flag_bouvet_island:","symbol":"🇧🇻","group":"flags","keywords":["flag"]},{"id":":flag_botswana:","symbol":"🇧🇼","group":"flags","keywords":["flag"]},{"id":":flag_belarus:","symbol":"🇧🇾","group":"flags","keywords":["flag"]},{"id":":flag_belize:","symbol":"🇧🇿","group":"flags","keywords":["flag"]},{"id":":flag_canada:","symbol":"🇨🇦","group":"flags","keywords":["flag"]},{"id":":flag_cocos_(keeling)_islands:","symbol":"🇨🇨","group":"flags","keywords":["flag"]},{"id":":flag_congo_-_kinshasa:","symbol":"🇨🇩","group":"flags","keywords":["flag"]},{"id":":flag_central_african_republic:","symbol":"🇨🇫","group":"flags","keywords":["flag"]},{"id":":flag_congo_-_brazzaville:","symbol":"🇨🇬","group":"flags","keywords":["flag"]},{"id":":flag_switzerland:","symbol":"🇨🇭","group":"flags","keywords":["flag"]},{"id":":flag_côte_d’ivoire:","symbol":"🇨🇮","group":"flags","keywords":["flag"]},{"id":":flag_cook_islands:","symbol":"🇨🇰","group":"flags","keywords":["flag"]},{"id":":flag_chile:","symbol":"🇨🇱","group":"flags","keywords":["flag"]},{"id":":flag_cameroon:","symbol":"🇨🇲","group":"flags","keywords":["flag"]},{"id":":flag_china:","symbol":"🇨🇳","group":"flags","keywords":["flag"]},{"id":":flag_colombia:","symbol":"🇨🇴","group":"flags","keywords":["flag"]},{"id":":flag_clipperton_island:","symbol":"🇨🇵","group":"flags","keywords":["flag"]},{"id":":flag_costa_rica:","symbol":"🇨🇷","group":"flags","keywords":["flag"]},{"id":":flag_cuba:","symbol":"🇨🇺","group":"flags","keywords":["flag"]},{"id":":flag_cape_verde:","symbol":"🇨🇻","group":"flags","keywords":["flag"]},{"id":":flag_curaçao:","symbol":"🇨🇼","group":"flags","keywords":["flag"]},{"id":":flag_christmas_island:","symbol":"🇨🇽","group":"flags","keywords":["flag"]},{"id":":flag_cyprus:","symbol":"🇨🇾","group":"flags","keywords":["flag"]},{"id":":flag_czechia:","symbol":"🇨🇿","group":"flags","keywords":["flag"]},{"id":":flag_germany:","symbol":"🇩🇪","group":"flags","keywords":["flag"]},{"id":":flag_diego_garcia:","symbol":"🇩🇬","group":"flags","keywords":["flag"]},{"id":":flag_djibouti:","symbol":"🇩🇯","group":"flags","keywords":["flag"]},{"id":":flag_denmark:","symbol":"🇩🇰","group":"flags","keywords":["flag"]},{"id":":flag_dominica:","symbol":"🇩🇲","group":"flags","keywords":["flag"]},{"id":":flag_dominican_republic:","symbol":"🇩🇴","group":"flags","keywords":["flag"]},{"id":":flag_algeria:","symbol":"🇩🇿","group":"flags","keywords":["flag"]},{"id":":flag_ceuta_&_melilla:","symbol":"🇪🇦","group":"flags","keywords":["flag"]},{"id":":flag_ecuador:","symbol":"🇪🇨","group":"flags","keywords":["flag"]},{"id":":flag_estonia:","symbol":"🇪🇪","group":"flags","keywords":["flag"]},{"id":":flag_egypt:","symbol":"🇪🇬","group":"flags","keywords":["flag"]},{"id":":flag_western_sahara:","symbol":"🇪🇭","group":"flags","keywords":["flag"]},{"id":":flag_eritrea:","symbol":"🇪🇷","group":"flags","keywords":["flag"]},{"id":":flag_spain:","symbol":"🇪🇸","group":"flags","keywords":["flag"]},{"id":":flag_ethiopia:","symbol":"🇪🇹","group":"flags","keywords":["flag"]},{"id":":flag_european_union:","symbol":"🇪🇺","group":"flags","keywords":["flag"]},{"id":":flag_finland:","symbol":"🇫🇮","group":"flags","keywords":["flag"]},{"id":":flag_fiji:","symbol":"🇫🇯","group":"flags","keywords":["flag"]},{"id":":flag_falkland_islands:","symbol":"🇫🇰","group":"flags","keywords":["flag"]},{"id":":flag_micronesia:","symbol":"🇫🇲","group":"flags","keywords":["flag"]},{"id":":flag_faroe_islands:","symbol":"🇫🇴","group":"flags","keywords":["flag"]},{"id":":flag_france:","symbol":"🇫🇷","group":"flags","keywords":["flag"]},{"id":":flag_gabon:","symbol":"🇬🇦","group":"flags","keywords":["flag"]},{"id":":flag_united_kingdom:","symbol":"🇬🇧","group":"flags","keywords":["flag"]},{"id":":flag_grenada:","symbol":"🇬🇩","group":"flags","keywords":["flag"]},{"id":":flag_georgia:","symbol":"🇬🇪","group":"flags","keywords":["flag"]},{"id":":flag_french_guiana:","symbol":"🇬🇫","group":"flags","keywords":["flag"]},{"id":":flag_guernsey:","symbol":"🇬🇬","group":"flags","keywords":["flag"]},{"id":":flag_ghana:","symbol":"🇬🇭","group":"flags","keywords":["flag"]},{"id":":flag_gibraltar:","symbol":"🇬🇮","group":"flags","keywords":["flag"]},{"id":":flag_greenland:","symbol":"🇬🇱","group":"flags","keywords":["flag"]},{"id":":flag_gambia:","symbol":"🇬🇲","group":"flags","keywords":["flag"]},{"id":":flag_guinea:","symbol":"🇬🇳","group":"flags","keywords":["flag"]},{"id":":flag_guadeloupe:","symbol":"🇬🇵","group":"flags","keywords":["flag"]},{"id":":flag_equatorial_guinea:","symbol":"🇬🇶","group":"flags","keywords":["flag"]},{"id":":flag_greece:","symbol":"🇬🇷","group":"flags","keywords":["flag"]},{"id":":flag_south_georgia_&_south_sandwich_islands:","symbol":"🇬🇸","group":"flags","keywords":["flag"]},{"id":":flag_guatemala:","symbol":"🇬🇹","group":"flags","keywords":["flag"]},{"id":":flag_guam:","symbol":"🇬🇺","group":"flags","keywords":["flag"]},{"id":":flag_guinea-bissau:","symbol":"🇬🇼","group":"flags","keywords":["flag"]},{"id":":flag_guyana:","symbol":"🇬🇾","group":"flags","keywords":["flag"]},{"id":":flag_hong_kong_sar_china:","symbol":"🇭🇰","group":"flags","keywords":["flag"]},{"id":":flag_heard_&_mcdonald_islands:","symbol":"🇭🇲","group":"flags","keywords":["flag"]},{"id":":flag_honduras:","symbol":"🇭🇳","group":"flags","keywords":["flag"]},{"id":":flag_croatia:","symbol":"🇭🇷","group":"flags","keywords":["flag"]},{"id":":flag_haiti:","symbol":"🇭🇹","group":"flags","keywords":["flag"]},{"id":":flag_hungary:","symbol":"🇭🇺","group":"flags","keywords":["flag"]},{"id":":flag_canary_islands:","symbol":"🇮🇨","group":"flags","keywords":["flag"]},{"id":":flag_indonesia:","symbol":"🇮🇩","group":"flags","keywords":["flag"]},{"id":":flag_ireland:","symbol":"🇮🇪","group":"flags","keywords":["flag"]},{"id":":flag_israel:","symbol":"🇮🇱","group":"flags","keywords":["flag"]},{"id":":flag_isle_of_man:","symbol":"🇮🇲","group":"flags","keywords":["flag"]},{"id":":flag_india:","symbol":"🇮🇳","group":"flags","keywords":["flag"]},{"id":":flag_british_indian_ocean_territory:","symbol":"🇮🇴","group":"flags","keywords":["flag"]},{"id":":flag_iraq:","symbol":"🇮🇶","group":"flags","keywords":["flag"]},{"id":":flag_iran:","symbol":"🇮🇷","group":"flags","keywords":["flag"]},{"id":":flag_iceland:","symbol":"🇮🇸","group":"flags","keywords":["flag"]},{"id":":flag_italy:","symbol":"🇮🇹","group":"flags","keywords":["flag"]},{"id":":flag_jersey:","symbol":"🇯🇪","group":"flags","keywords":["flag"]},{"id":":flag_jamaica:","symbol":"🇯🇲","group":"flags","keywords":["flag"]},{"id":":flag_jordan:","symbol":"🇯🇴","group":"flags","keywords":["flag"]},{"id":":flag_japan:","symbol":"🇯🇵","group":"flags","keywords":["flag"]},{"id":":flag_kenya:","symbol":"🇰🇪","group":"flags","keywords":["flag"]},{"id":":flag_kyrgyzstan:","symbol":"🇰🇬","group":"flags","keywords":["flag"]},{"id":":flag_cambodia:","symbol":"🇰🇭","group":"flags","keywords":["flag"]},{"id":":flag_kiribati:","symbol":"🇰🇮","group":"flags","keywords":["flag"]},{"id":":flag_comoros:","symbol":"🇰🇲","group":"flags","keywords":["flag"]},{"id":":flag_st._kitts_&_nevis:","symbol":"🇰🇳","group":"flags","keywords":["flag"]},{"id":":flag_north_korea:","symbol":"🇰🇵","group":"flags","keywords":["flag"]},{"id":":flag_south_korea:","symbol":"🇰🇷","group":"flags","keywords":["flag"]},{"id":":flag_kuwait:","symbol":"🇰🇼","group":"flags","keywords":["flag"]},{"id":":flag_cayman_islands:","symbol":"🇰🇾","group":"flags","keywords":["flag"]},{"id":":flag_kazakhstan:","symbol":"🇰🇿","group":"flags","keywords":["flag"]},{"id":":flag_laos:","symbol":"🇱🇦","group":"flags","keywords":["flag"]},{"id":":flag_lebanon:","symbol":"🇱🇧","group":"flags","keywords":["flag"]},{"id":":flag_st._lucia:","symbol":"🇱🇨","group":"flags","keywords":["flag"]},{"id":":flag_liechtenstein:","symbol":"🇱🇮","group":"flags","keywords":["flag"]},{"id":":flag_sri_lanka:","symbol":"🇱🇰","group":"flags","keywords":["flag"]},{"id":":flag_liberia:","symbol":"🇱🇷","group":"flags","keywords":["flag"]},{"id":":flag_lesotho:","symbol":"🇱🇸","group":"flags","keywords":["flag"]},{"id":":flag_lithuania:","symbol":"🇱🇹","group":"flags","keywords":["flag"]},{"id":":flag_luxembourg:","symbol":"🇱🇺","group":"flags","keywords":["flag"]},{"id":":flag_latvia:","symbol":"🇱🇻","group":"flags","keywords":["flag"]},{"id":":flag_libya:","symbol":"🇱🇾","group":"flags","keywords":["flag"]},{"id":":flag_morocco:","symbol":"🇲🇦","group":"flags","keywords":["flag"]},{"id":":flag_monaco:","symbol":"🇲🇨","group":"flags","keywords":["flag"]},{"id":":flag_moldova:","symbol":"🇲🇩","group":"flags","keywords":["flag"]},{"id":":flag_montenegro:","symbol":"🇲🇪","group":"flags","keywords":["flag"]},{"id":":flag_st._martin:","symbol":"🇲🇫","group":"flags","keywords":["flag"]},{"id":":flag_madagascar:","symbol":"🇲🇬","group":"flags","keywords":["flag"]},{"id":":flag_marshall_islands:","symbol":"🇲🇭","group":"flags","keywords":["flag"]},{"id":":flag_macedonia:","symbol":"🇲🇰","group":"flags","keywords":["flag"]},{"id":":flag_mali:","symbol":"🇲🇱","group":"flags","keywords":["flag"]},{"id":":flag_myanmar_(burma):","symbol":"🇲🇲","group":"flags","keywords":["flag"]},{"id":":flag_mongolia:","symbol":"🇲🇳","group":"flags","keywords":["flag"]},{"id":":flag_macau_sar_china:","symbol":"🇲🇴","group":"flags","keywords":["flag"]},{"id":":flag_northern_mariana_islands:","symbol":"🇲🇵","group":"flags","keywords":["flag"]},{"id":":flag_martinique:","symbol":"🇲🇶","group":"flags","keywords":["flag"]},{"id":":flag_mauritania:","symbol":"🇲🇷","group":"flags","keywords":["flag"]},{"id":":flag_montserrat:","symbol":"🇲🇸","group":"flags","keywords":["flag"]},{"id":":flag_malta:","symbol":"🇲🇹","group":"flags","keywords":["flag"]},{"id":":flag_mauritius:","symbol":"🇲🇺","group":"flags","keywords":["flag"]},{"id":":flag_maldives:","symbol":"🇲🇻","group":"flags","keywords":["flag"]},{"id":":flag_malawi:","symbol":"🇲🇼","group":"flags","keywords":["flag"]},{"id":":flag_mexico:","symbol":"🇲🇽","group":"flags","keywords":["flag"]},{"id":":flag_malaysia:","symbol":"🇲🇾","group":"flags","keywords":["flag"]},{"id":":flag_mozambique:","symbol":"🇲🇿","group":"flags","keywords":["flag"]},{"id":":flag_namibia:","symbol":"🇳🇦","group":"flags","keywords":["flag"]},{"id":":flag_new_caledonia:","symbol":"🇳🇨","group":"flags","keywords":["flag"]},{"id":":flag_niger:","symbol":"🇳🇪","group":"flags","keywords":["flag"]},{"id":":flag_norfolk_island:","symbol":"🇳🇫","group":"flags","keywords":["flag"]},{"id":":flag_nigeria:","symbol":"🇳🇬","group":"flags","keywords":["flag"]},{"id":":flag_nicaragua:","symbol":"🇳🇮","group":"flags","keywords":["flag"]},{"id":":flag_netherlands:","symbol":"🇳🇱","group":"flags","keywords":["flag"]},{"id":":flag_norway:","symbol":"🇳🇴","group":"flags","keywords":["flag"]},{"id":":flag_nepal:","symbol":"🇳🇵","group":"flags","keywords":["flag"]},{"id":":flag_nauru:","symbol":"🇳🇷","group":"flags","keywords":["flag"]},{"id":":flag_niue:","symbol":"🇳🇺","group":"flags","keywords":["flag"]},{"id":":flag_new_zealand:","symbol":"🇳🇿","group":"flags","keywords":["flag"]},{"id":":flag_oman:","symbol":"🇴🇲","group":"flags","keywords":["flag"]},{"id":":flag_panama:","symbol":"🇵🇦","group":"flags","keywords":["flag"]},{"id":":flag_peru:","symbol":"🇵🇪","group":"flags","keywords":["flag"]},{"id":":flag_french_polynesia:","symbol":"🇵🇫","group":"flags","keywords":["flag"]},{"id":":flag_papua_new_guinea:","symbol":"🇵🇬","group":"flags","keywords":["flag"]},{"id":":flag_philippines:","symbol":"🇵🇭","group":"flags","keywords":["flag"]},{"id":":flag_pakistan:","symbol":"🇵🇰","group":"flags","keywords":["flag"]},{"id":":flag_poland:","symbol":"🇵🇱","group":"flags","keywords":["flag"]},{"id":":flag_st._pierre_&_miquelon:","symbol":"🇵🇲","group":"flags","keywords":["flag"]},{"id":":flag_pitcairn_islands:","symbol":"🇵🇳","group":"flags","keywords":["flag"]},{"id":":flag_puerto_rico:","symbol":"🇵🇷","group":"flags","keywords":["flag"]},{"id":":flag_palestinian_territories:","symbol":"🇵🇸","group":"flags","keywords":["flag"]},{"id":":flag_portugal:","symbol":"🇵🇹","group":"flags","keywords":["flag"]},{"id":":flag_palau:","symbol":"🇵🇼","group":"flags","keywords":["flag"]},{"id":":flag_paraguay:","symbol":"🇵🇾","group":"flags","keywords":["flag"]},{"id":":flag_qatar:","symbol":"🇶🇦","group":"flags","keywords":["flag"]},{"id":":flag_réunion:","symbol":"🇷🇪","group":"flags","keywords":["flag"]},{"id":":flag_romania:","symbol":"🇷🇴","group":"flags","keywords":["flag"]},{"id":":flag_serbia:","symbol":"🇷🇸","group":"flags","keywords":["flag"]},{"id":":flag_russia:","symbol":"🇷🇺","group":"flags","keywords":["flag"]},{"id":":flag_rwanda:","symbol":"🇷🇼","group":"flags","keywords":["flag"]},{"id":":flag_saudi_arabia:","symbol":"🇸🇦","group":"flags","keywords":["flag"]},{"id":":flag_solomon_islands:","symbol":"🇸🇧","group":"flags","keywords":["flag"]},{"id":":flag_seychelles:","symbol":"🇸🇨","group":"flags","keywords":["flag"]},{"id":":flag_sudan:","symbol":"🇸🇩","group":"flags","keywords":["flag"]},{"id":":flag_sweden:","symbol":"🇸🇪","group":"flags","keywords":["flag"]},{"id":":flag_singapore:","symbol":"🇸🇬","group":"flags","keywords":["flag"]},{"id":":flag_st._helena:","symbol":"🇸🇭","group":"flags","keywords":["flag"]},{"id":":flag_slovenia:","symbol":"🇸🇮","group":"flags","keywords":["flag"]},{"id":":flag_svalbard_&_jan_mayen:","symbol":"🇸🇯","group":"flags","keywords":["flag"]},{"id":":flag_slovakia:","symbol":"🇸🇰","group":"flags","keywords":["flag"]},{"id":":flag_sierra_leone:","symbol":"🇸🇱","group":"flags","keywords":["flag"]},{"id":":flag_san_marino:","symbol":"🇸🇲","group":"flags","keywords":["flag"]},{"id":":flag_senegal:","symbol":"🇸🇳","group":"flags","keywords":["flag"]},{"id":":flag_somalia:","symbol":"🇸🇴","group":"flags","keywords":["flag"]},{"id":":flag_suriname:","symbol":"🇸🇷","group":"flags","keywords":["flag"]},{"id":":flag_south_sudan:","symbol":"🇸🇸","group":"flags","keywords":["flag"]},{"id":":flag_são_tomé_&_príncipe:","symbol":"🇸🇹","group":"flags","keywords":["flag"]},{"id":":flag_el_salvador:","symbol":"🇸🇻","group":"flags","keywords":["flag"]},{"id":":flag_sint_maarten:","symbol":"🇸🇽","group":"flags","keywords":["flag"]},{"id":":flag_syria:","symbol":"🇸🇾","group":"flags","keywords":["flag"]},{"id":":flag_swaziland:","symbol":"🇸🇿","group":"flags","keywords":["flag"]},{"id":":flag_tristan_da_cunha:","symbol":"🇹🇦","group":"flags","keywords":["flag"]},{"id":":flag_turks_&_caicos_islands:","symbol":"🇹🇨","group":"flags","keywords":["flag"]},{"id":":flag_chad:","symbol":"🇹🇩","group":"flags","keywords":["flag"]},{"id":":flag_french_southern_territories:","symbol":"🇹🇫","group":"flags","keywords":["flag"]},{"id":":flag_togo:","symbol":"🇹🇬","group":"flags","keywords":["flag"]},{"id":":flag_thailand:","symbol":"🇹🇭","group":"flags","keywords":["flag"]},{"id":":flag_tajikistan:","symbol":"🇹🇯","group":"flags","keywords":["flag"]},{"id":":flag_tokelau:","symbol":"🇹🇰","group":"flags","keywords":["flag"]},{"id":":flag_timor-leste:","symbol":"🇹🇱","group":"flags","keywords":["flag"]},{"id":":flag_turkmenistan:","symbol":"🇹🇲","group":"flags","keywords":["flag"]},{"id":":flag_tunisia:","symbol":"🇹🇳","group":"flags","keywords":["flag"]},{"id":":flag_tonga:","symbol":"🇹🇴","group":"flags","keywords":["flag"]},{"id":":flag_turkey:","symbol":"🇹🇷","group":"flags","keywords":["flag"]},{"id":":flag_trinidad_&_tobago:","symbol":"🇹🇹","group":"flags","keywords":["flag"]},{"id":":flag_tuvalu:","symbol":"🇹🇻","group":"flags","keywords":["flag"]},{"id":":flag_taiwan:","symbol":"🇹🇼","group":"flags","keywords":["flag"]},{"id":":flag_tanzania:","symbol":"🇹🇿","group":"flags","keywords":["flag"]},{"id":":flag_ukraine:","symbol":"🇺🇦","group":"flags","keywords":["flag"]},{"id":":flag_uganda:","symbol":"🇺🇬","group":"flags","keywords":["flag"]},{"id":":flag_u.s._outlying_islands:","symbol":"🇺🇲","group":"flags","keywords":["flag"]},{"id":":flag_united_nations:","symbol":"🇺🇳","group":"flags","keywords":["flag"]},{"id":":flag_united_states:","symbol":"🇺🇸","group":"flags","keywords":["flag"]},{"id":":flag_uruguay:","symbol":"🇺🇾","group":"flags","keywords":["flag"]},{"id":":flag_uzbekistan:","symbol":"🇺🇿","group":"flags","keywords":["flag"]},{"id":":flag_vatican_city:","symbol":"🇻🇦","group":"flags","keywords":["flag"]},{"id":":flag_st._vincent_&_grenadines:","symbol":"🇻🇨","group":"flags","keywords":["flag"]},{"id":":flag_venezuela:","symbol":"🇻🇪","group":"flags","keywords":["flag"]},{"id":":flag_british_virgin_islands:","symbol":"🇻🇬","group":"flags","keywords":["flag"]},{"id":":flag_u.s._virgin_islands:","symbol":"🇻🇮","group":"flags","keywords":["flag"]},{"id":":flag_vietnam:","symbol":"🇻🇳","group":"flags","keywords":["flag"]},{"id":":flag_vanuatu:","symbol":"🇻🇺","group":"flags","keywords":["flag"]},{"id":":flag_wallis_&_futuna:","symbol":"🇼🇫","group":"flags","keywords":["flag"]},{"id":":flag_samoa:","symbol":"🇼🇸","group":"flags","keywords":["flag"]},{"id":":flag_kosovo:","symbol":"🇽🇰","group":"flags","keywords":["flag"]},{"id":":flag_yemen:","symbol":"🇾🇪","group":"flags","keywords":["flag"]},{"id":":flag_mayotte:","symbol":"🇾🇹","group":"flags","keywords":["flag"]},{"id":":flag_south_africa:","symbol":"🇿🇦","group":"flags","keywords":["flag"]},{"id":":flag_zambia:","symbol":"🇿🇲","group":"flags","keywords":["flag"]},{"id":":flag_zimbabwe:","symbol":"🇿🇼","group":"flags","keywords":["flag"]},{"id":":flag_england:","symbol":"🏴󠁧󠁢󠁥󠁮󠁧󠁿","group":"flags","keywords":["flag"]},{"id":":flag_scotland:","symbol":"🏴󠁧󠁢󠁳󠁣󠁴󠁿","group":"flags","keywords":["flag"]},{"id":":flag_wales:","symbol":"🏴󠁧󠁢󠁷󠁬󠁳󠁿","group":"flags","keywords":["flag"]}]');const LS={autosave:{waitingTime:5e3,save:e=>async function(e){const t=Date.now(),o=e.config.get(RS),i=await e.getData();i||console.warn("Trying to save snapshot but data is not defined.");const n={timestamp:t,hash:TS(i),content:i},s=PS(o),r=s?.items||[];r.find((e=>n.hash===e.hash))||r.push(n);try{const e=xS.compress(JSON.stringify({items:r,updatedAt:t}));localStorage.setItem(o,e)}catch(t){Np(e,"notifications").addError("Failed to save CKEditor data to localStorage: "+t.toString())}return!0}(e)},heading:{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"}]},toolbar:{},OPMacroEmbeddedTable:{toolbar:["opEditEmbeddedTableQuery"]},OPMacroWpButton:{toolbar:["opEditWpMacroButton"]},OPWikiIncludePage:{toolbar:["opEditWikiIncludeMacroButton"]},OPCodeBlock:{toolbar:["opEditCodeBlock"]},OPChildPages:{toolbar:["opEditChildPagesMacroButton"]},image:{insert:{type:"inline"},resizeUnit:"px",resizeOptions:[{name:"imageResize:original",value:null,icon:"original"},{name:"imageResize:50",value:"50",icon:"medium"},{name:"imageResize:75",value:"75",icon:"large"}],toolbar:["toggleImageCaption","imageTextAlternative","|","imageStyle:inline","imageStyle:block","|","imageResize:original"]},table:{contentToolbar:["tableColumn","tableRow","mergeTableCells","tableProperties","tableCellProperties"]},mention:{feeds:[{marker:"@",feed:function(e){const t=this;let o=Fp(t);if(o&&"Activity::Comment"===o._type){const e=o.$embedded.workPackage;e&&(o=e)}if(!o||"WorkPackage"!==o._type)return[];if(t.config.get("disabledMentions").includes("user"))return[];const i=Bp(t).api.v3.principals(o,e),n=Mp(t),s=window.OpenProject.urlRoot;return new Promise(((e,t)=>{_k(i,{responseKind:"json",query:{select:"elements/_type,elements/id,elements/name"}}).then((e=>e.json)).then((t=>{e(_.uniqBy(t._embedded.elements,(e=>e.id)).map((e=>{const t=e._type.toLowerCase(),o=`@${e.name}`,i=`@${e.id}`,r=e.id,a=n.services.apiV3Service[`${t}s`].segment;return{type:t,id:i,text:o,link:`${s}/${a}/${r}`,idNumber:r,name:e.name}})))})).catch((e=>{console.error("Error fetching user mentions:",e),t(e)}))}))},itemRenderer:NS,minimumCharacters:0},{marker:"###",feed:MS("###"),itemRenderer:NS,minimumCharacters:1},{marker:"##",feed:MS("##"),itemRenderer:NS,minimumCharacters:1},{marker:"#",feed:MS("#"),itemRenderer:NS,minimumCharacters:1},{marker:":",feed:function(e){return new Promise(((t,o)=>{const i=BS.filter((t=>function(e,t,o){if(t.includes(e))return!0;if(0!==o.length)for(let t=0;t({id:e.id,name:e.id.replace(/:/g,""),text:e.symbol,type:"emoji"})));t(i)}))},itemRenderer:function(e){const t=document.createElement("span");return t.classList.add("mention-list-item"),t.textContent=`${e.text} ${e.name}`,t},minimumCharacters:1}]},language:"en",licenseKey:"GPL"};function zS(e){return(t,o)=>{const i=o.openProject.context;o.removePlugins=o.removePlugins||[];const n=i.resource;if(n&&n.canAddAttachments||o.removePlugins.push(...DS.map((e=>e.pluginName))),!1===i.macros&&(o.openProject.disableAllMacros=!0,o.removePlugins.push(...VS.map((e=>e.pluginName)))),Array.isArray(i.macros)){const e=VS.filter((e=>-1===i.macros.indexOf(e.pluginName)));o.removePlugins.push(...e)}o.disabledMentions=[];const s=i.disabledMentions;return Array.isArray(s)&&(o.disabledMentions=s),e.create(t,o).then((e=>e))}}class jS extends dg{}class qS extends dg{}window.OPConstrainedEditor=jS,window.OPClassicEditor=qS,window.OPEditorWatchdog=cc,qS.createCustomized=zS(qS),qS.builtinPlugins=FS,qS.defaultConfig=Object.assign({},LS),qS.defaultConfig.toolbar={items:["heading","|","bold","italic","strikethrough","code","insertCodeBlock","link","bulletedList","numberedList","todoList","imageUpload","blockQuote","|","insertTable","macroList","|","opContentRevisions","undo","redo","openProjectShowFormattingHelp","|","pageBreak","|","preview","opShowSource"]},jS.createCustomized=zS(jS),jS.builtinPlugins=FS,jS.defaultConfig=Object.assign({},LS),jS.defaultConfig.toolbar={items:["bold","italic","strikethrough","code","insertCodeBlock","link","bulletedList","numberedList","todoList","imageUpload","blockQuote","|","opContentRevisions","undo","redo","openProjectShowFormattingHelp","preview","opShowSource"]}})(),i=i.default})())); //# sourceMappingURL=ckeditor.js.map \ No newline at end of file diff --git a/frontend/src/vendor/ckeditor/ckeditor.js.map b/frontend/src/vendor/ckeditor/ckeditor.js.map index 9e2c3c13fc7..35db9d25f90 100644 --- a/frontend/src/vendor/ckeditor/ckeditor.js.map +++ b/frontend/src/vendor/ckeditor/ckeditor.js.map @@ -1 +1 @@ -{"version":3,"file":"ckeditor.js","mappings":"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IC,Y8BrHJ,6R9BsHIC,gB+BtHJ,8O/BuHIC,agCvHJ,0QhCwHIC,gBiCxHJ,sPjCyHIC,iBkCzHJ,sPlC0HIC,iBmC1HJ,mzBnC2HIC,eoC3HJ,kzBpC4HIC,gBqC5HJ,iuBrC6HIC,gBsC7HJ,+tBtC8HIC,iBuC9HJ,+tBvC+HIC,OwC/HJ,ifxCgIIC,QyChIJ,+LzCiIIl+E,M0CjIJ,mZ1CkIIm+E,kB2ClIJ,gL3CmIIC,c4CnIJ,gZ5CoIIC,K6CpIJ,6U7CqIIC,K8CrIJ,6U9CsIIC,a+CtIJ,gc/CuIIC,agDvIJ,6ZhDwIIC,SiDxIJ,6mBjDyIIC,UkDzIJ,ivBlD0IIC,YmD1IJ,6cnD2IIC,SoD3IJ,kQpD4IIC,SqD5IJ,+uBrD6IIC,SsD7IJ,u7BtD8IIC,SuD9IJ,gWvD+IIC,SwD/IJ,0pBxDgJIC,SyDhJJ,03BzDiJIC,e0DjJJ,6F1DkJIp0D,K2DlJJ,kpB3DmJIq0D,O4DnJJ,wY5DoJIC,Q6DpJJ,sY7DqJIC,M8DrJJ,qU9DsJIzyG,O+DtJJ,srB/DuJIrT,OgEvJJ,ifhEwJI+lH,SiExJJ,6XjEyJIC,ekEzJJ,wOlE0JIvlF,MmE1JJ,4jBCgDe,MAAMwlF,WAAuB/rF,GAMxC,WAAA9mB,CAAY8yG,EAAe,IACvBlxG,MAAMkxG,EAAc,CAGhB1rF,WAAY,YAGhBvxB,KAAK4N,GAAG,OAAO,CAACiG,EAAK4gB,EAAMvhC,KACvB8M,KAAKk9G,gCAAgCzoF,EAAMvhC,EAAM,IAGrD8M,KAAK4N,GAAG,UAAU,CAACiG,EAAK4gB,KAChBA,EAAKvlC,SAAW8Q,KAAKm9G,gBACrB1oF,EAAKvlC,QAAQ6H,QACjB,IAEJiJ,KAAKm9G,eAAiB,IAC1B,CAKA,OAAAl3F,GACIjmB,KAAKV,KAAIm1B,GAAQA,EAAKxO,WAC1B,CAQA,SAAAm3F,CAAUC,GACNr9G,KAAKm9G,eAAiBE,EAEtB,IAAK,MAAM5oF,KAAQz0B,KACfA,KAAKk9G,gCAAgCzoF,EAE7C,CAuCA,QAAA3kB,IAAYC,GACR,IAAKA,EAAOtf,SAAyBsf,EAwE9BgF,OAAMhiB,GAAiB,iBAALA,IAlErB,MAAM,IAAI,EAAc,0CAA2Ci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,YAAa,CAAC,GAAI,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,cAAe,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,eAAgB,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,eAAgB,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EA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CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,YAAa,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,UAAW,CAAC,KAAM,UAAW,CAAC,EAAG,UAAW,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,eAAgB,CAAC,EAAG,YAAa,CAAC,EAAG,yBAA0B,CAAC,EAAG,UAAW,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,SAAU,CAAC,EAAG,UAAW,CAAC,EAAG,WAAY,CAAC,EAAG,WAAY,CAAC,EAAG,YAAa,CAAC,EAAG,YAAa,CAAC,EAAG,WA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","sources":["webpack://OPEditor/webpack/universalModuleDefinition","webpack://OPEditor/webpack/runtime/create fake namespace object","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenu.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/toolbar.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/editorui/editorui.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/dropdown.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/theme/list.css","webpack://OPEditor/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/globals/globals.css","webpack://OPEditor/./node_modules/color-convert/index.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dialog/dialog.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageplaceholder.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenulistitembutton.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/theme/placeholder.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadloader.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imagecustomresizeform.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenulistitem.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/theme/widget.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadicon.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/theme/liststyles.css","webpack://OPEditor/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-mention/theme/mention.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-block-quote/theme/blockquote.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageinsert.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/input/input.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/arialiveannouncer/arialiveannouncer.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/collapsible/collapsible.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/form.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/theme/listproperties.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/highlightedtext/highlightedtext.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/theme/widgetresize.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/theme/linkform.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/listdropdown.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/autocomplete/autocomplete.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tableselection.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorselector/colorselector.css","webpack://OPEditor/./node_modules/lz-string/libs/lz-string.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imagecaption.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorpicker/colorpicker.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/listitembutton.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/fakepanel.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/theme/linkimage.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tableproperties.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/icon/icon.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tablecolumnresize.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageresize.css","webpack://OPEditor/./node_modules/style-loader/dist/runtime/singletonStyleDomAPI.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/colorinput.css","webpack://OPEditor/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/label/label.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/tooltip/tooltip.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenulistitem.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubar.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/formheader/formheader.css","webpack://OPEditor/./node_modules/style-loader/dist/runtime/setAttributesWithAttributesAndNonce.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenupanel.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenubutton.css","webpack://OPEditor/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenulistitembutton.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-page-break/theme/pagebreak.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/theme/todolist.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/search/search.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonpanel.css","webpack://OPEditor/./node_modules/color-convert/conversions.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenubutton.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tableform.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/spinner/spinner.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/formrow.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/list/list.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-heading/theme/heading.css","webpack://OPEditor/./node_modules/css-loader/dist/runtime/api.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/theme/renderer.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenu.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tablecellproperties.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/theme/widgettypearound.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/splitbutton.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-mention/theme/mentionui.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenupanel.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/stickypanel.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tablecaption.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/theme/link.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadprogress.css","webpack://OPEditor/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/theme/documentlist.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imagestyle.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorgrid/colorgrid.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/theme/linkactions.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dialog/dialogactions.css","webpack://OPEditor/./node_modules/color-name/index.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/textarea/textarea.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/textalternativeform.css","webpack://OPEditor/./node_modules/color-convert/route.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/image.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/inserttable.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tableediting.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/button.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/theme/code.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/theme/clipboard.css","webpack://OPEditor/./node_modules/markdown-it-task-lists/index.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/editorui/accessibilityhelp.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/switchbutton.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonrotator.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/table.css","webpack://OPEditor/webpack/bootstrap","webpack://OPEditor/webpack/runtime/compat get default export","webpack://OPEditor/webpack/runtime/define property getters","webpack://OPEditor/webpack/runtime/hasOwnProperty shorthand","webpack://OPEditor/webpack/runtime/make namespace object","webpack://OPEditor/webpack/runtime/jsonp chunk loading","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/global.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/env.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/fastdiff.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/diff.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/spy.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/eventinfo.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/uid.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/priorities.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/inserttopriorityarray.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/ckeditorerror.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/version.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/emittermixin.js","webpack://OPEditor/./node_modules/lodash-es/isObject.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/observablemixin.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/count.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/comparearrays.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/isiterable.js","webpack://OPEditor/./node_modules/lodash-es/_freeGlobal.js","webpack://OPEditor/./node_modules/lodash-es/_root.js","webpack://OPEditor/./node_modules/lodash-es/_Symbol.js","webpack://OPEditor/./node_modules/lodash-es/_getRawTag.js","webpack://OPEditor/./node_modules/lodash-es/_objectToString.js","webpack://OPEditor/./node_modules/lodash-es/_baseGetTag.js","webpack://OPEditor/./node_modules/lodash-es/isArray.js","webpack://OPEditor/./node_modules/lodash-es/isObjectLike.js","webpack://OPEditor/./node_modules/lodash-es/isString.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/createelement.js","webpack://OPEditor/./node_modules/lodash-es/_overArg.js","webpack://OPEditor/./node_modules/lodash-es/_getPrototype.js","webpack://OPEditor/./node_modules/lodash-es/isPlainObject.js","webpack://OPEditor/./node_modules/lodash-es/_listCacheClear.js","webpack://OPEditor/./node_modules/lodash-es/eq.js","webpack://OPEditor/./node_modules/lodash-es/_assocIndexOf.js","webpack://OPEditor/./node_modules/lodash-es/_listCacheDelete.js","webpack://OPEditor/./node_modules/lodash-es/_listCacheGet.js","webpack://OPEditor/./node_modules/lodash-es/_listCacheHas.js","webpack://OPEditor/./node_modules/lodash-es/_listCacheSet.js","webpack://OPEditor/./node_modules/lodash-es/_ListCache.js","webpack://OPEditor/./node_modules/lodash-es/_stackClear.js","webpack://OPEditor/./node_modules/lodash-es/_stackDelete.js","webpack://OPEditor/./node_modules/lodash-es/_stackGet.js","webpack://OPEditor/./node_modules/lodash-es/_stackHas.js","webpack://OPEditor/./node_modules/lodash-es/isFunction.js","webpack://OPEditor/./node_modules/lodash-es/_coreJsData.js","webpack://OPEditor/./node_modules/lodash-es/_isMasked.js","webpack://OPEditor/./node_modules/lodash-es/_toSource.js","webpack://OPEditor/./node_modules/lodash-es/_baseIsNative.js","webpack://OPEditor/./node_modules/lodash-es/_getValue.js","webpack://OPEditor/./node_modules/lodash-es/_getNative.js","webpack://OPEditor/./node_modules/lodash-es/_Map.js","webpack://OPEditor/./node_modules/lodash-es/_nativeCreate.js","webpack://OPEditor/./node_modules/lodash-es/_hashClear.js","webpack://OPEditor/./node_modules/lodash-es/_hashDelete.js","webpack://OPEditor/./node_modules/lodash-es/_hashGet.js","webpack://OPEditor/./node_modules/lodash-es/_hashHas.js","webpack://OPEditor/./node_modules/lodash-es/_hashSet.js","webpack://OPEditor/./node_modules/lodash-es/_Hash.js","webpack://OPEditor/./node_modules/lodash-es/_mapCacheClear.js","webpack://OPEditor/./node_modules/lodash-es/_isKeyable.js","webpack://OPEditor/./node_modules/lodash-es/_getMapData.js","webpack://OPEditor/./node_modules/lodash-es/_mapCacheDelete.js","webpack://OPEditor/./node_modules/lodash-es/_mapCacheGet.js","webpack://OPEditor/./node_modules/lodash-es/_mapCacheHas.js","webpack://OPEditor/./node_modules/lodash-es/_mapCacheSet.js","webpack://OPEditor/./node_modules/lodash-es/_MapCache.js","webpack://OPEditor/./node_modules/lodash-es/_stackSet.js","webpack://OPEditor/./node_modules/lodash-es/_Stack.js","webpack://OPEditor/./node_modules/lodash-es/_arrayEach.js","webpack://OPEditor/./node_modules/lodash-es/_defineProperty.js","webpack://OPEditor/./node_modules/lodash-es/_baseAssignValue.js","webpack://OPEditor/./node_modules/lodash-es/_assignValue.js","webpack://OPEditor/./node_modules/lodash-es/_copyObject.js","webpack://OPEditor/./node_modules/lodash-es/_baseTimes.js","webpack://OPEditor/./node_modules/lodash-es/_baseIsArguments.js","webpack://OPEditor/./node_modules/lodash-es/isArguments.js","webpack://OPEditor/./node_modules/lodash-es/stubFalse.js","webpack://OPEditor/./node_modules/lodash-es/isBuffer.js","webpack://OPEditor/./node_modules/lodash-es/_isIndex.js","webpack://OPEditor/./node_modules/lodash-es/isLength.js","webpack://OPEditor/./node_modules/lodash-es/_baseIsTypedArray.js","webpack://OPEditor/./node_modules/lodash-es/_baseUnary.js","webpack://OPEditor/./node_modules/lodash-es/_nodeUtil.js","webpack://OPEditor/./node_modules/lodash-es/isTypedArray.js","webpack://OPEditor/./node_modules/lodash-es/_arrayLikeKeys.js","webpack://OPEditor/./node_modules/lodash-es/_isPrototype.js","webpack://OPEditor/./node_modules/lodash-es/_nativeKeys.js","webpack://OPEditor/./node_modules/lodash-es/_baseKeys.js","webpack://OPEditor/./node_modules/lodash-es/isArrayLike.js","webpack://OPEditor/./node_modules/lodash-es/keys.js","webpack://OPEditor/./node_modules/lodash-es/_baseAssign.js","webpack://OPEditor/./node_modules/lodash-es/_nativeKeysIn.js","webpack://OPEditor/./node_modules/lodash-es/_baseKeysIn.js","webpack://OPEditor/./node_modules/lodash-es/keysIn.js","webpack://OPEditor/./node_modules/lodash-es/_baseAssignIn.js","webpack://OPEditor/./node_modules/lodash-es/_cloneBuffer.js","webpack://OPEditor/./node_modules/lodash-es/_copyArray.js","webpack://OPEditor/./node_modules/lodash-es/_arrayFilter.js","webpack://OPEditor/./node_modules/lodash-es/stubArray.js","webpack://OPEditor/./node_modules/lodash-es/_getSymbols.js","webpack://OPEditor/./node_modules/lodash-es/_copySymbols.js","webpack://OPEditor/./node_modules/lodash-es/_arrayPush.js","webpack://OPEditor/./node_modules/lodash-es/_getSymbolsIn.js","webpack://OPEditor/./node_modules/lodash-es/_copySymbolsIn.js","webpack://OPEditor/./node_modules/lodash-es/_baseGetAllKeys.js","webpack://OPEditor/./node_modules/lodash-es/_getAllKeys.js","webpack://OPEditor/./node_modules/lodash-es/_getAllKeysIn.js","webpack://OPEditor/./node_modules/lodash-es/_DataView.js","webpack://OPEditor/./node_modules/lodash-es/_Promise.js","webpack://OPEditor/./node_modules/lodash-es/_Set.js","webpack://OPEditor/./node_modules/lodash-es/_WeakMap.js","webpack://OPEditor/./node_modules/lodash-es/_getTag.js","webpack://OPEditor/./node_modules/lodash-es/_initCloneArray.js","webpack://OPEditor/./node_modules/lodash-es/_Uint8Array.js","webpack://OPEditor/./node_modules/lodash-es/_cloneArrayBuffer.js","webpack://OPEditor/./node_modules/lodash-es/_cloneDataView.js","webpack://OPEditor/./node_modules/lodash-es/_cloneRegExp.js","webpack://OPEditor/./node_modules/lodash-es/_cloneSymbol.js","webpack://OPEditor/./node_modules/lodash-es/_cloneTypedArray.js","webpack://OPEditor/./node_modules/lodash-es/_initCloneByTag.js","webpack://OPEditor/./node_modules/lodash-es/_baseCreate.js","webpack://OPEditor/./node_modules/lodash-es/_initCloneObject.js","webpack://OPEditor/./node_modules/lodash-es/_baseIsMap.js","webpack://OPEditor/./node_modules/lodash-es/isMap.js","webpack://OPEditor/./node_modules/lodash-es/_baseIsSet.js","webpack://OPEditor/./node_modules/lodash-es/isSet.js","webpack://OPEditor/./node_modules/lodash-es/_baseClone.js","webpack://OPEditor/./node_modules/lodash-es/cloneDeepWith.js","webpack://OPEditor/./node_modules/lodash-es/isElement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/config.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/isnode.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/iswindow.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/emittermixin.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/getancestors.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/getborderwidths.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/getrangefrommouseevent.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/istext.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/isrange.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/getpositionedancestor.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/rect.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/resizeobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/setdatainelement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/tounit.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/indexof.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/insertat.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/iscomment.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/isvisible.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/position.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/remove.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/scroll.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/keyboard.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/toarray.js","webpack://OPEditor/./node_modules/lodash-es/_assignMergeValue.js","webpack://OPEditor/./node_modules/lodash-es/_baseFor.js","webpack://OPEditor/./node_modules/lodash-es/_createBaseFor.js","webpack://OPEditor/./node_modules/lodash-es/isArrayLikeObject.js","webpack://OPEditor/./node_modules/lodash-es/_safeGet.js","webpack://OPEditor/./node_modules/lodash-es/toPlainObject.js","webpack://OPEditor/./node_modules/lodash-es/_baseMergeDeep.js","webpack://OPEditor/./node_modules/lodash-es/_baseMerge.js","webpack://OPEditor/./node_modules/lodash-es/identity.js","webpack://OPEditor/./node_modules/lodash-es/_apply.js","webpack://OPEditor/./node_modules/lodash-es/_overRest.js","webpack://OPEditor/./node_modules/lodash-es/constant.js","webpack://OPEditor/./node_modules/lodash-es/_baseSetToString.js","webpack://OPEditor/./node_modules/lodash-es/_shortOut.js","webpack://OPEditor/./node_modules/lodash-es/_setToString.js","webpack://OPEditor/./node_modules/lodash-es/_baseRest.js","webpack://OPEditor/./node_modules/lodash-es/_isIterateeCall.js","webpack://OPEditor/./node_modules/lodash-es/_createAssigner.js","webpack://OPEditor/./node_modules/lodash-es/merge.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/translation-service.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/language.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/locale.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/collection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/first.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/focustracker.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/keystrokehandler.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/tomap.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/objecttomap.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/splicearray.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/delay.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/parsebase64encodedobject.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/unicode.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/plugin.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/command.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/plugincollection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/context.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/contextplugin.js","webpack://OPEditor/./node_modules/lodash-es/isSymbol.js","webpack://OPEditor/./node_modules/lodash-es/_isKey.js","webpack://OPEditor/./node_modules/lodash-es/memoize.js","webpack://OPEditor/./node_modules/lodash-es/_memoizeCapped.js","webpack://OPEditor/./node_modules/lodash-es/_stringToPath.js","webpack://OPEditor/./node_modules/lodash-es/_arrayMap.js","webpack://OPEditor/./node_modules/lodash-es/_baseToString.js","webpack://OPEditor/./node_modules/lodash-es/toString.js","webpack://OPEditor/./node_modules/lodash-es/_castPath.js","webpack://OPEditor/./node_modules/lodash-es/_toKey.js","webpack://OPEditor/./node_modules/lodash-es/_baseGet.js","webpack://OPEditor/./node_modules/lodash-es/get.js","webpack://OPEditor/./node_modules/lodash-es/_baseSet.js","webpack://OPEditor/./node_modules/lodash-es/set.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/theme/placeholder.css?b8f9","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/placeholder.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/typecheckable.js","webpack://OPEditor/./node_modules/lodash-es/clone.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/node.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/text.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/textproxy.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/conversion/viewconsumable.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/matcher.js","webpack://OPEditor/./node_modules/lodash-es/last.js","webpack://OPEditor/./node_modules/lodash-es/_baseSlice.js","webpack://OPEditor/./node_modules/lodash-es/_parent.js","webpack://OPEditor/./node_modules/lodash-es/_baseUnset.js","webpack://OPEditor/./node_modules/lodash-es/unset.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/stylesmap.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/tokenlist.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/element.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/containerelement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/editableelement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/rooteditableelement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/treewalker.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/position.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/range.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/selection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/documentselection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/bubblingeventinfo.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/bubblingemittermixin.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/document.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/attributeelement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/emptyelement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/uielement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/rawelement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/documentfragment.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/downcastwriter.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/filler.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/theme/renderer.css?d589","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/renderer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/domconverter.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/isvalidattributename.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/observer.js","webpack://OPEditor/./node_modules/lodash-es/assignIn.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/domeventdata.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/domeventobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/keyobserver.js","webpack://OPEditor/./node_modules/lodash-es/now.js","webpack://OPEditor/./node_modules/lodash-es/_trimmedEndIndex.js","webpack://OPEditor/./node_modules/lodash-es/_baseTrim.js","webpack://OPEditor/./node_modules/lodash-es/toNumber.js","webpack://OPEditor/./node_modules/lodash-es/debounce.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/fakeselectionobserver.js","webpack://OPEditor/./node_modules/lodash-es/_setCacheAdd.js","webpack://OPEditor/./node_modules/lodash-es/_setCacheHas.js","webpack://OPEditor/./node_modules/lodash-es/_SetCache.js","webpack://OPEditor/./node_modules/lodash-es/_arraySome.js","webpack://OPEditor/./node_modules/lodash-es/_cacheHas.js","webpack://OPEditor/./node_modules/lodash-es/_equalArrays.js","webpack://OPEditor/./node_modules/lodash-es/_mapToArray.js","webpack://OPEditor/./node_modules/lodash-es/_setToArray.js","webpack://OPEditor/./node_modules/lodash-es/_equalByTag.js","webpack://OPEditor/./node_modules/lodash-es/_equalObjects.js","webpack://OPEditor/./node_modules/lodash-es/_baseIsEqualDeep.js","webpack://OPEditor/./node_modules/lodash-es/_baseIsEqual.js","webpack://OPEditor/./node_modules/lodash-es/isEqualWith.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/mutationobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/focusobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/selectionobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/compositionobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/datatransfer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/inputobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/arrowkeysobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/tabobserver.js","webpack://OPEditor/./node_modules/lodash-es/cloneDeep.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/view.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/typecheckable.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/textproxy.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/treewalker.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/position.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/range.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/conversion/mapper.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/conversion/modelconsumable.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/conversion/downcastdispatcher.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/node.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/selection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/liverange.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/text.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/documentselection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/nodelist.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/element.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/conversion/conversionhelpers.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/conversion/downcasthelpers.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/utils/autoparagraphing.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/conversion/upcasthelpers.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/utils/selection-post-fixer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/controller/editingcontroller.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/schema.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/conversion/upcastdispatcher.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/dataprocessor/basichtmlwriter.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/dataprocessor/htmldataprocessor.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/controller/datacontroller.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/conversion/conversion.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/operation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/moveoperation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/insertoperation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/splitoperation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/mergeoperation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/markeroperation.js","webpack://OPEditor/./node_modules/lodash-es/isEqual.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/attributeoperation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/nooperation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/renameoperation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/rootattributeoperation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/rootoperation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/operationfactory.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/transform.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/liveposition.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/batch.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/differ.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/history.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/rootelement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/document.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/markercollection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/operation/detachoperation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/documentfragment.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/writer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/utils/deletecontent.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/utils/getselectedcontent.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/utils/insertcontent.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/utils/insertobject.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/utils/modifyselection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/model/model.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/clickobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/mouseobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/observer/touchobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/upcastwriter.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/styles/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/styles/background.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/styles/border.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-engine/src/view/styles/padding.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-watchdog/src/watchdog.js","webpack://OPEditor/./node_modules/lodash-es/throttle.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-watchdog/src/utils/getsubnodes.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-watchdog/src/utils/areconnectedthroughproperties.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-watchdog/src/editorwatchdog.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-watchdog/src/contextwatchdog.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/commandcollection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/editingkeystrokehandler.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/accessibility.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/editor/utils/editorusagedata.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/editor/editor.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/crc32.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/editor/utils/elementapimixin.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/pendingactions.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/cancel.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/index.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/bold.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/caption.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/check.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/cog.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/color-palette.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/eraser.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/history.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/image.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/image-upload.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/image-asset-manager.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/image-url.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/low-vision.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/text-alternative.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/loupe.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/previous-arrow.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/next-arrow.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/importexport.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/paragraph.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/plus.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/text.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/align-bottom.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/align-middle.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/align-top.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/align-left.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/align-center.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/align-right.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/align-justify.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-inline-left.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-center.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-inline-right.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-full-width.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-inline.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-left.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-right.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-size-custom.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-size-full.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-size-large.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-size-small.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/object-size-medium.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/pencil.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/pilcrow.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/quote.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/three-vertical-dots.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/drag-indicator.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/redo.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/undo.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/bulletedlist.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/numberedlist.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/todolist.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/codeblock.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/browse-files.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/heading1.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/heading2.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/heading3.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/heading4.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/heading5.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/heading6.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/horizontalline.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/html.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/indent.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/outdent.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/table.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/source.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/remove.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/bookmark.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/bookmark_inline.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/theme/icons/emoji.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/viewcollection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/template.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/globals/globals.css?9ffd","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/view.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/bindings/clickoutsidehandler.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/bindings/csstransitiondisablermixin.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/bindings/submithandler.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/bindings/addkeyboardhandlingforgrid.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/icon/icon.css?d134","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/icon/iconview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/button/buttonlabelview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/button.css?e9d2","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/button/buttonview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/formheader/formheader.css?0cda","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/formheader/formheaderview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/focuscycler.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/bindings/draggableviewmixin.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dialog/dialogactions.css?98ab","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dialog/dialogactionsview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dialog/dialogcontentview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dialog/dialog.css?d39a","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dialog/dialogview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dialog/dialog.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/listitembutton.css?0d4a","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/button/listitembuttonview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenulistitembutton.css?13a9","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/menubar/menubarmenulistitembuttonview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/label/label.css?8d4e","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/label/labelview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/editorui/accessibilityhelp/accessibilityhelpcontentview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/icons/accessibility.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/editorui/accessibilityhelp.css?98ae","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/editorui/accessibilityhelp/accessibilityhelp.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/editorui/bodycollection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/switchbutton.css?aaf0","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/button/switchbuttonview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/button/filedialogbuttonview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/icons/dropdown-arrow.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/collapsible/collapsible.css?6641","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/collapsible/collapsibleview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/colorgrid/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/colorgrid/colortileview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/icons/color-tile-check.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorgrid/colorgrid.css?2704","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/colorgrid/colorgridview.js","webpack://OPEditor/./node_modules/color-parse/index.mjs","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/colorpicker/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css?2832","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/labeledfield/labeledfieldview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/input/inputbase.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/input/input.css?edfa","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/input/inputview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/inputtext/inputtextview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/inputnumber/inputnumberview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/textarea/textarea.css?0f0e","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/dropdownpanelview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/dropdown.css?1880","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/dropdownview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenulistitembutton.css?f789","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenubutton.css?c731","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/menu/dropdownmenubuttonview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/list/listitemview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/list/listseparatorview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/list/listitemgroupview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/list/list.css?cbd7","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/list/listview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/menu/dropdownmenulistview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/menu/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenulistitem.css?4ede","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/menu/dropdownmenubehaviors.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonpanel.css?7831","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/panel/balloon/balloonpanelview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenupanel.css?9831","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/menu/dropdownmenunestedmenupanelview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenu.css?508e","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/menu/dropdownmenunestedmenuview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/toolbar/toolbarseparatorview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/toolbar/toolbarlinebreakview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/toolbar.css?0211","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/toolbar/toolbarview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/bindings/preventdefault.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/splitbutton.css?0497","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/button/splitbuttonview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css?347c","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/listdropdown.css?1a4d","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/dropdown/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/labeledfield/utils.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/utils/math.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/utils/convert.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/utils/compare.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/utils/dom.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/components/slider.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/components/hue.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/components/saturation.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/styles/color-picker.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/components/color-picker.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/styles/hue.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/styles/saturation.js","webpack://OPEditor/./node_modules/vanilla-colorful/lib/entrypoints/hex.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorpicker/colorpicker.css?53be","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/colorpicker/colorpickerview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/colorselector/documentcolorcollection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/colorselector/colorgridsfragmentview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/colorselector/colorpickerfragmentview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorselector/colorselector.css?0542","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/colorselector/colorselectorview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/componentfactory.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/tooltip/tooltip.css?a08c","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/tooltipmanager.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/badge/badge.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/editorui/poweredby.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/icons/project-logo.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/editorui/evaluationbadge.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/arialiveannouncer/arialiveannouncer.css?5c0d","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/arialiveannouncer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenulistitem.css?b7b4","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/menubar/menubarmenulistitemview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/menubar/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/editorui/editorui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/editorui/editorui.css?2a16","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/editorui/editoruiview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/editableui/editableuiview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/editableui/inline/inlineeditableuiview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/notification/notification.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/model.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonrotator.css?1baf","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/fakepanel.css?17b0","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/panel/balloon/contextualballoon.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/stickypanel.css?009d","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/search/text/searchtextqueryview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/search/searchinfoview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/search/searchresultsview.js","webpack://OPEditor/./node_modules/lodash-es/escapeRegExp.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/search/search.css?6651","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/search/text/searchtextview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/autocomplete/autocomplete.css?7561","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/autocomplete/autocompleteview.js","webpack://OPEditor/./node_modules/lodash-es/_basePropertyOf.js","webpack://OPEditor/./node_modules/lodash-es/_escapeHtmlChar.js","webpack://OPEditor/./node_modules/lodash-es/escape.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/highlightedtext/highlightedtext.css?87f2","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/spinner/spinner.css?f1a9","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css?45fd","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenubutton.css?b31e","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/menubar/menubarmenubuttonview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenupanel.css?c89b","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/menubar/menubarmenupanelview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenu.css?8588","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/menubar/menubarmenuview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/menubar/menubarmenulistview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/menubar/menubarmenulistitemfiledialogbuttonview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubar.css?a41b","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/src/menubar/menubarview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-editor-decoupled/src/decouplededitorui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-editor-decoupled/src/decouplededitoruiview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-editor-decoupled/src/decouplededitor.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-utils/src/dom/getdatafromelement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-core/src/editor/utils/securesourceelement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/src/highlightstack.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/src/widgettypearound/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/theme/icons/drag-handle.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/src/utils.js","webpack://OPEditor/./src/plugins/op-macro-toc-plugin.js","webpack://OPEditor/./src/plugins/op-macro-embedded-table/utils.js","webpack://OPEditor/./src/plugins/op-context/op-context.js","webpack://OPEditor/./src/plugins/op-macro-embedded-table/embedded-table-editing.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/utils/changebuffer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/inserttextcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/inserttextobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/input.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/deletecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/deleteobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/delete.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/typing.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/utils/getlasttextline.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/textwatcher.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/twostepcaretmovement.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/texttransformation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/utils/findattributerange.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-typing/src/utils/inlinehighlight.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-enter/src/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-enter/src/entercommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-enter/src/enterobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-enter/src/enter.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-enter/src/shiftentercommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-enter/src/shiftenter.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/theme/widgettypearound.css?abb1","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/src/widgettypearound/widgettypearound.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/theme/icons/return-arrow.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/src/verticalnavigation.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/theme/widget.css?47b7","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/src/widget.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/src/widgettoolbarrepository.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/src/widgetresize/resizerstate.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/src/widgetresize/sizeview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/src/widgetresize/resizer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/theme/widgetresize.css?24e6","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-widget/src/widgetresize.js","webpack://OPEditor/./src/helpers/create-toolbar-edit-button.js","webpack://OPEditor/./src/icons/edit.svg","webpack://OPEditor/./src/helpers/create-toolbar.js","webpack://OPEditor/./src/plugins/op-macro-embedded-table/embedded-table-toolbar.js","webpack://OPEditor/./src/plugins/op-macro-wp-button/utils.js","webpack://OPEditor/./src/plugins/op-macro-wp-button/op-macro-wp-button-editing.js","webpack://OPEditor/./src/plugins/op-macro-wp-button/op-macro-wp-button-toolbar.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-upload/src/filereader.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-upload/src/filerepository.js","webpack://OPEditor/./src/plugins/op-upload-resource-adapter.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/viewtoplaintext.js","webpack://OPEditor/./node_modules/lodash-es/_baseForOwn.js","webpack://OPEditor/./node_modules/lodash-es/_baseIsMatch.js","webpack://OPEditor/./node_modules/lodash-es/_isStrictComparable.js","webpack://OPEditor/./node_modules/lodash-es/_getMatchData.js","webpack://OPEditor/./node_modules/lodash-es/_matchesStrictComparable.js","webpack://OPEditor/./node_modules/lodash-es/_baseMatches.js","webpack://OPEditor/./node_modules/lodash-es/_baseHasIn.js","webpack://OPEditor/./node_modules/lodash-es/_hasPath.js","webpack://OPEditor/./node_modules/lodash-es/hasIn.js","webpack://OPEditor/./node_modules/lodash-es/_baseMatchesProperty.js","webpack://OPEditor/./node_modules/lodash-es/_baseProperty.js","webpack://OPEditor/./node_modules/lodash-es/_basePropertyDeep.js","webpack://OPEditor/./node_modules/lodash-es/property.js","webpack://OPEditor/./node_modules/lodash-es/_baseIteratee.js","webpack://OPEditor/./node_modules/lodash-es/mapValues.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardmarkersutils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboardpipeline.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/normalizeclipboarddata.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/utils/plaintexttohtml.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/lineview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdroptarget.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdropblocktoolbar.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/theme/clipboard.css?0a95","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/dragdrop.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/pasteplaintext.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-clipboard/src/clipboard.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-undo/src/basecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-undo/src/undocommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-undo/src/redocommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-undo/src/undoediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-undo/src/undoui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-undo/src/undo.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/image/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageutils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/autoimage.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagetextalternative/imagetextalternativecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagetextalternative/imagetextalternativeediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/textalternativeform.css?66f4","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css?7101","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagetextalternative/ui/textalternativeformview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/image/ui/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagetextalternative/imagetextalternativeui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagetextalternative.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/image/converters.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/image/imageloadobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/image/insertimagecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/image/replaceimagesourcecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/image/imageediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagesizeattributes.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/image/imagetypecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageplaceholder.css?d310","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/image/imageplaceholder.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/image/imageblockediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageinsert.css?2fb5","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageinsert/ui/imageinsertformview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageinsert/imageinsertui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/image.css?5c96","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/image/imageinlineediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagecaption/imagecaptionutils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagecaption/toggleimagecaptioncommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagecaption/imagecaptionediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagecaption/imagecaptionui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imagecaption.css?5152","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageupload/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageupload/imageuploadui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadprogress.css?72d0","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadicon.css?b791","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadloader.css?3f3f","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageupload/imageuploadprogress.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageupload/uploadimagecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageupload/imageuploadediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageupload.js","webpack://OPEditor/./node_modules/lodash-es/_baseEach.js","webpack://OPEditor/./node_modules/lodash-es/_createBaseEach.js","webpack://OPEditor/./node_modules/lodash-es/_baseMap.js","webpack://OPEditor/./node_modules/lodash-es/map.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageresize/resizeimagecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageresize/imageresizeediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageresize/imageresizebuttons.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageresize/imageresizehandles.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageresize/utils/tryparsedimensionwithunit.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageresize/utils/getselectedimageeditornodes.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imagecustomresizeform.css?6f6c","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageresize/ui/imagecustomresizeformview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageresize/imagecustomresizeui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageresize/utils/getselectedimagewidthinunits.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageresize/utils/getselectedimagepossibleresizerange.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imageresize.css?a8fb","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagestyle/imagestylecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagestyle/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagestyle/converters.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagestyle/imagestyleediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/theme/imagestyle.css?a152","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagestyle/imagestyleui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagetoolbar.js","webpack://OPEditor/./src/plugins/op-macro-child-pages/utils.js","webpack://OPEditor/./src/plugins/op-macro-child-pages/op-macro-child-pages-editing.js","webpack://OPEditor/./src/plugins/op-macro-child-pages/op-macro-child-pages-toolbar.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-select-all/src/selectallcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-select-all/src/selectallediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-select-all/src/selectallui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-select-all/theme/icons/select-all.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-select-all/src/selectall.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-adapter-ckfinder/src/uploadadapter.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-autoformat/src/blockautoformatediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-autoformat/src/inlineautoformatediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-autoformat/src/autoformat.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/attributecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold/boldediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold/boldui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/code/codeediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/theme/code.css?83c4","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/code/codeui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/theme/icons/code.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic/italicediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/theme/icons/italic.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic/italicui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough/strikethroughediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/theme/icons/strikethrough.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough/strikethroughui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquotecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquoteediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-block-quote/theme/blockquote.css?66ed","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquoteui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paragraph/src/paragraphcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paragraph/src/insertparagraphcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paragraph/src/paragraph.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-heading/src/headingcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-heading/src/headingediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-heading/theme/heading.css?2b0a","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-heading/src/headingui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-heading/src/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-heading/src/title.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/src/utils/automaticdecorators.js","webpack://OPEditor/./node_modules/lodash-es/_castSlice.js","webpack://OPEditor/./node_modules/lodash-es/_hasUnicode.js","webpack://OPEditor/./node_modules/lodash-es/_asciiToArray.js","webpack://OPEditor/./node_modules/lodash-es/_unicodeToArray.js","webpack://OPEditor/./node_modules/lodash-es/_stringToArray.js","webpack://OPEditor/./node_modules/lodash-es/upperFirst.js","webpack://OPEditor/./node_modules/lodash-es/_createCaseFirst.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/src/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/src/linkcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/src/unlinkcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/src/utils/manualdecorator.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/theme/link.css?4da5","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/src/linkediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/theme/linkform.css?837e","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/src/ui/linkformview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/theme/linkactions.css?b997","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/src/ui/linkactionsview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/theme/icons/unlink.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/theme/icons/link.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/src/linkui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/src/autolink.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/theme/linkimage.css?843b","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/utils/listwalker.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/utils/model.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/listindentcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/listcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/listmergecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/listsplitcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/listutils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/utils/view.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/utils/postfixers.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/converters.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/theme/documentlist.css?0954","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/theme/list.css?ef70","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/listediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list/listui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/list.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/listproperties/utils/style.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/theme/listproperties.css?c6ab","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/theme/liststyles.css?4c65","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/todolist/checktodolistcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/todolist/todocheckboxchangeobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/todolist/todolistediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/todolist/todolistui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/theme/todolist.css?1468","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-list/src/todolist.js","webpack://OPEditor/./src/icons/code-block.svg","webpack://OPEditor/./src/plugins/code-block/widget.js","webpack://OPEditor/./src/plugins/code-block/click-observer.js","webpack://OPEditor/./src/plugins/code-block/code-block-editing.js","webpack://OPEditor/./src/plugins/code-block/converters.js","webpack://OPEditor/./src/plugins/code-block/code-block-toolbar.js","webpack://OPEditor/./src/helpers/button-disabler.js","webpack://OPEditor/./node_modules/@rails/request.js/src/fetch_response.js","webpack://OPEditor/./node_modules/@rails/request.js/src/request_interceptor.js","webpack://OPEditor/./node_modules/@rails/request.js/src/lib/utils.js","webpack://OPEditor/./node_modules/@rails/request.js/src/fetch_request.js","webpack://OPEditor/./node_modules/@rails/request.js/src/verbs.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/converters/tableproperties.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/utils/common.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/converters/upcasttable.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablewalker.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/converters/downcast.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/inserttablecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/insertrowcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/insertcolumncommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/splitcellcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/utils/structure.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/mergecellcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/removerowcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/removecolumncommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/setheaderrowcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/setheadercolumncommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecolumnresize/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableutils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/mergecellscommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/selectrowcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/commands/selectcolumncommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/converters/table-layout-post-fixer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/converters/table-cell-paragraph-post-fixer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/converters/table-cell-refresh-handler.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tableediting.css?183a","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/converters/table-headings-refresh-handler.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/inserttable.css?8f02","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/ui/inserttableview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/icons/table-column.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/icons/table-row.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/icons/table-merge-cell.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tableselection.css?52d0","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableselection.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableclipboard.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablekeyboard.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablemouse/mouseeventsobserver.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablemouse.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/table.css?7a76","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/utils/ui/widget.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/colorinput.css?a66f","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/ui/colorinputview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/utils/ui/table-properties.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/formrow.css?e9c9","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/ui/formrowview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/form.css?9b02","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tableform.css?4fab","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tablecellproperties.css?861e","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/ui/tablecellpropertiesview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/utils/ui/contextualballoon.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/utils/table-properties.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/tablecellpropertiesui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/icons/table-cell-properties.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/commands/tablecellpropertycommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellwidth/commands/tablecellwidthcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellwidth/tablecellwidthediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/commands/tablecellpaddingcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/commands/tablecellheightcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/commands/tablecellbackgroundcolorcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/commands/tablecellverticalalignmentcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/commands/tablecellhorizontalalignmentcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/commands/tablecellborderstylecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/commands/tablecellbordercolorcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/commands/tablecellborderwidthcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties/tablecellpropertiesediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties/commands/tablepropertycommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties/commands/tablebackgroundcolorcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties/commands/tablebordercolorcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties/commands/tableborderstylecommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties/commands/tableborderwidthcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties/commands/tablewidthcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties/commands/tableheightcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties/commands/tablealignmentcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties/tablepropertiesediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tableproperties.css?db5b","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties/ui/tablepropertiesview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/icons/table-properties.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties/tablepropertiesui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tablecaption.css?b30e","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/theme/tablecolumnresize.css?9b35","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/utils.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/list.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/image.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/normalizers/mswordnormalizer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/bookmark.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/removemsattributes.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/br.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/normalizers/googledocsnormalizer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/removeboldwrapper.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/normalizers/googlesheetsnormalizer.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/removegooglesheetstag.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/removexmlns.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/removeinvalidtablewidth.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/removestyleblock.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/space.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/filters/parse.js","webpack://OPEditor/./node_modules/turndown-plugin-gfm/lib/turndown-plugin-gfm.es.js","webpack://OPEditor/./node_modules/turndown/lib/turndown.browser.es.js","webpack://OPEditor/./src/commonmark/utils/preprocessor.js","webpack://OPEditor/./src/commonmark/utils/page-breaks.js","webpack://OPEditor/./node_modules/mdurl/lib/decode.mjs","webpack://OPEditor/./node_modules/mdurl/lib/encode.mjs","webpack://OPEditor/./node_modules/mdurl/lib/format.mjs","webpack://OPEditor/./node_modules/mdurl/lib/parse.mjs","webpack://OPEditor/./node_modules/uc.micro/categories/P/regex.mjs","webpack://OPEditor/./node_modules/uc.micro/categories/S/regex.mjs","webpack://OPEditor/./node_modules/uc.micro/properties/Any/regex.mjs","webpack://OPEditor/./node_modules/uc.micro/categories/Cc/regex.mjs","webpack://OPEditor/./node_modules/uc.micro/categories/Cf/regex.mjs","webpack://OPEditor/./node_modules/uc.micro/categories/Z/regex.mjs","webpack://OPEditor/./node_modules/entities/lib/esm/generated/decode-data-html.js","webpack://OPEditor/./node_modules/entities/lib/esm/generated/decode-data-xml.js","webpack://OPEditor/./node_modules/entities/lib/esm/decode_codepoint.js","webpack://OPEditor/./node_modules/entities/lib/esm/decode.js","webpack://OPEditor/./node_modules/entities/lib/esm/generated/encode-html.js","webpack://OPEditor/./node_modules/entities/lib/esm/escape.js","webpack://OPEditor/./node_modules/entities/lib/esm/index.js","webpack://OPEditor/./node_modules/markdown-it/lib/common/utils.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/helpers/parse_link_label.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/helpers/parse_link_destination.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/helpers/parse_link_title.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/renderer.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/ruler.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/token.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_core/state_core.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_core/normalize.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_core/linkify.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_core/replacements.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_core/smartquotes.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/parser_core.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_core/block.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_core/inline.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_core/text_join.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/state_block.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/table.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/list.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/common/html_blocks.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/common/html_re.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/html_block.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/parser_block.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/code.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/fence.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/blockquote.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/hr.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/reference.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/heading.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/lheading.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_block/paragraph.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/state_inline.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/text.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/linkify.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/escape.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/strikethrough.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/emphasis.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/autolink.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/entity.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/parser_inline.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/newline.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/backticks.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/link.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/image.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/html_inline.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/rules_inline/fragments_join.mjs","webpack://OPEditor/./node_modules/linkify-it/index.mjs","webpack://OPEditor/./node_modules/linkify-it/lib/re.mjs","webpack://OPEditor/./node_modules/punycode.js/punycode.es6.js","webpack://OPEditor/./node_modules/markdown-it/lib/index.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/presets/default.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/presets/zero.mjs","webpack://OPEditor/./node_modules/markdown-it/lib/presets/commonmark.mjs","webpack://OPEditor/./src/commonmark/commonmarkdataprocessor.js","webpack://OPEditor/./src/commonmark/utils/fix-tasklist-whitespaces.js","webpack://OPEditor/./src/commonmark/utils/fix-breaks.js","webpack://OPEditor/./src/commonmark/utils/hoist-task-list-checkboxes.js","webpack://OPEditor/./src/icons/source.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-mention/src/mentioncommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-mention/src/mentionediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-mention/theme/mentionui.css?c111","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-mention/src/ui/mentionsview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-mention/src/ui/domwrapperview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-mention/src/ui/mentionlistitemview.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-mention/src/mentionui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-mention/theme/mention.css?d8de","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-page-break/src/pagebreakcommand.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-page-break/theme/pagebreak.css?7ae9","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-page-break/src/pagebreakediting.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-page-break/src/pagebreakui.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-page-break/theme/icons/pagebreak.svg","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-autosave/src/autosave.js","webpack://OPEditor/./src/plugins/op-content-revisions/utils.js","webpack://OPEditor/./src/plugins/op-content-revisions/storage.js","webpack://OPEditor/./src/plugins/op-content-revisions/ui.js","webpack://OPEditor/./src/icons/revisions.svg","webpack://OPEditor/./src/plugins/op-content-revisions/command.js","webpack://OPEditor/./src/plugins/op-content-revisions/op-content-revisions.js","webpack://OPEditor/./src/op-plugins.js","webpack://OPEditor/./src/plugins/op-macro-embedded-table/embedded-table-plugin.js","webpack://OPEditor/./src/plugins/op-macro-wp-button/op-macro-wp-button-plugin.js","webpack://OPEditor/./src/plugins/op-macro-child-pages/op-macro-child-pages-plugin.js","webpack://OPEditor/./src/plugins/op-upload-plugin.js","webpack://OPEditor/./src/plugins/op-attachment-listener-plugin.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-essentials/src/essentials.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/bold.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/code.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/italic.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-basic-styles/src/strikethrough.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-block-quote/src/blockquote.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-heading/src/heading.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageblock.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageinline.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagecaption.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imagestyle.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-image/src/imageresize.js","webpack://OPEditor/./src/plugins/op-image-attachment-lookup/op-image-attachment-lookup-plugin.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-link/src/link.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-page-break/src/pagebreak.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-mention/src/mention.js","webpack://OPEditor/./src/mentions/mentions-caster.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-paste-from-office/src/pastefromoffice.js","webpack://OPEditor/./src/plugins/op-help-link-plugin/op-help-link-plugin.js","webpack://OPEditor/./src/icons/help.svg","webpack://OPEditor/./src/plugins/op-preview.plugin.js","webpack://OPEditor/./src/icons/preview.svg","webpack://OPEditor/./src/plugins/op-source-code.plugin.js","webpack://OPEditor/./src/icons/wysiwyg.svg","webpack://OPEditor/./src/plugins/code-block/code-block.js","webpack://OPEditor/./src/commonmark/commonmark.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/table.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tabletoolbar.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tableproperties.js","webpack://OPEditor/./node_modules/@ckeditor/ckeditor5-table/src/tablecellproperties.js","webpack://OPEditor/./src/plugins/op-macro-list-plugin.js","webpack://OPEditor/./src/plugins/op-custom-css-classes-plugin.js","webpack://OPEditor/./src/mentions/work-package-mentions.js","webpack://OPEditor/./src/mentions/mentions-item-renderer.js","webpack://OPEditor/./src/op-ckeditor-config.js","webpack://OPEditor/./src/mentions/user-mentions.js","webpack://OPEditor/./src/mentions/emoji-mentions.js","webpack://OPEditor/./src/op-config-customizer.js","webpack://OPEditor/./src/op-ckeditor.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"OPEditor\"] = factory();\n\telse\n\t\troot[\"OPEditor\"] = factory();\n})(self, () => {\nreturn ","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-menu-bar__menu{display:block;font-size:inherit;position:relative}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level{max-width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenu.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenu.css\"],\"names\":[],\"mappings\":\"AAKA,sBACC,aAAc,CCCd,iBAAkB,CDAlB,iBACD,CCCC,kDACC,cACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-menu-bar__menu {\\n\\tdisplay: block;\\n\\tposition: relative;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-menu-bar__menu {\\n\\t/* Enable font size inheritance, which allows fluid UI scaling. */\\n\\tfont-size: inherit;\\n\\n\\t&.ck-menu-bar__menu_top-level {\\n\\t\\tmax-width: 100%;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-toolbar{align-items:center;display:flex;flex-flow:row nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-toolbar>.ck-toolbar__items{align-items:center;display:flex;flex-flow:row wrap;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{background:var(--ck-color-toolbar-background);border:1px solid var(--ck-color-toolbar-border);border-radius:0;padding:0 var(--ck-spacing-small)}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar .ck.ck-toolbar__separator{background:var(--ck-color-toolbar-border);height:var(--ck-icon-size);margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);min-width:1px;width:1px}.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-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{border-radius:0;margin:0;width:100%}.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.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-dropdown__panel{min-width:auto}.ck.ck-toolbar .ck-toolbar__nested-toolbar-dropdown>.ck-button>.ck-button__label{max-width:7em;width:auto}.ck.ck-toolbar:focus{outline:none}.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.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=rtl]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{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.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=ltr]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/toolbar.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/toolbar.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAOA,eAKC,kBAAmB,CAFnB,YAAa,CACb,oBAAqB,CCFrB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBD6CD,CA3CC,kCAGC,kBAAmB,CAFnB,YAAa,CACb,kBAAmB,CAEnB,WAED,CAEA,yCACC,oBAWD,CAJC,yGAEC,YACD,CAGD,uCACC,eACD,CAEA,sDACC,gBACD,CAEA,sDACC,qBACD,CAEA,sDACC,gBACD,CAGC,yFACC,YACD,CE/CF,eAGC,6CAA8C,CAE9C,+CAAgD,CCFhD,eAAgB,CDChB,iCAuGD,CCtGC,qEAEC,qCAED,CDFA,yCAIC,yCAA0C,CAH1C,0BAA2B,CAU3B,qCAAsC,CADtC,kCAAmC,CAPnC,aAAc,CADd,SAUD,CAEA,uCACC,QACD,CAGC,gEAEC,oCACD,CAIA,kEACC,YACD,CAGD,gHAIC,qCAAsC,CADtC,kCAED,CAEA,mCAEC,SAaD,CAVC,0DAQC,eAAgB,CAHhB,QAAS,CAHT,UAOD,CAGD,kCAEC,SAWD,CATC,uDAEC,QAMD,CAHC,yFACC,eACD,CASD,kFACC,mCACD,CAMA,wEACC,cACD,CAEA,iFACC,aAAc,CACd,UACD,CAGD,qBACC,YACD,CAEA,qCACC,QACD,CAaA,+FACC,cACD,CAEA,iJAEC,mCACD,CAEA,qHACC,aACD,CAIC,6JAEC,2BAA4B,CAD5B,wBAED,CAGA,2JAEC,4BAA6B,CAD7B,yBAED,CASD,8RACC,mCACD,CAWA,qHACC,cACD,CAIC,6JAEC,4BAA6B,CAD7B,yBAED,CAGA,2JAEC,2BAA4B,CAD5B,wBAED,CASD,8RACC,oCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../mixins/_unselectable.css\\\";\\n\\n.ck.ck-toolbar {\\n\\t@mixin ck-unselectable;\\n\\n\\tdisplay: flex;\\n\\tflex-flow: row nowrap;\\n\\talign-items: center;\\n\\n\\t& > .ck-toolbar__items {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-flow: row wrap;\\n\\t\\talign-items: center;\\n\\t\\tflex-grow: 1;\\n\\n\\t}\\n\\n\\t& .ck.ck-toolbar__separator {\\n\\t\\tdisplay: inline-block;\\n\\n\\t\\t/*\\n\\t\\t * A leading or trailing separator makes no sense (separates from nothing on one side).\\n\\t\\t * For instance, it can happen when toolbar items (also separators) are getting grouped one by one and\\n\\t\\t * moved to another toolbar in the dropdown.\\n\\t\\t */\\n\\t\\t&:first-child,\\n\\t\\t&:last-child {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-toolbar__line-break {\\n\\t\\tflex-basis: 100%;\\n\\t}\\n\\n\\t&.ck-toolbar_grouping > .ck-toolbar__items {\\n\\t\\tflex-wrap: nowrap;\\n\\t}\\n\\n\\t&.ck-toolbar_vertical > .ck-toolbar__items {\\n\\t\\tflex-direction: column;\\n\\t}\\n\\n\\t&.ck-toolbar_floating > .ck-toolbar__items {\\n\\t\\tflex-wrap: nowrap;\\n\\t}\\n\\n\\t& > .ck.ck-toolbar__grouped-dropdown {\\n\\t\\t& > .ck-dropdown__button .ck-dropdown__arrow {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Makes element unselectable.\\n */\\n@define-mixin ck-unselectable {\\n\\t-moz-user-select: none;\\n\\t-webkit-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-toolbar {\\n\\t@mixin ck-rounded-corners;\\n\\n\\tbackground: var(--ck-color-toolbar-background);\\n\\tpadding: 0 var(--ck-spacing-small);\\n\\tborder: 1px solid var(--ck-color-toolbar-border);\\n\\n\\t& .ck.ck-toolbar__separator {\\n\\t\\theight: var(--ck-icon-size);\\n\\t\\twidth: 1px;\\n\\t\\tmin-width: 1px;\\n\\t\\tbackground: var(--ck-color-toolbar-border);\\n\\n\\t\\t/*\\n\\t\\t * These margins make the separators look better in balloon toolbars (when aligned with the \\\"tip\\\").\\n\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/7493.\\n\\t\\t */\\n\\t\\tmargin-top: var(--ck-spacing-small);\\n\\t\\tmargin-bottom: var(--ck-spacing-small);\\n\\t}\\n\\n\\t& .ck-toolbar__line-break {\\n\\t\\theight: 0;\\n\\t}\\n\\n\\t& > .ck-toolbar__items {\\n\\t\\t& > *:not(.ck-toolbar__line-break) {\\n\\t\\t\\t/* (#11) Separate toolbar items. */\\n\\t\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t\\t}\\n\\n\\t\\t/* Don't display a separator after an empty items container, for instance,\\n\\t\\twhen all items were grouped */\\n\\t\\t&:empty + .ck.ck-toolbar__separator {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-toolbar__items > *:not(.ck-toolbar__line-break),\\n\\t& > .ck.ck-toolbar__grouped-dropdown {\\n\\t\\t/* Make sure items wrapped to the next line have v-spacing */\\n\\t\\tmargin-top: var(--ck-spacing-small);\\n\\t\\tmargin-bottom: var(--ck-spacing-small);\\n\\t}\\n\\n\\t&.ck-toolbar_vertical {\\n\\t\\t/* Items in a vertical toolbar span the entire width. */\\n\\t\\tpadding: 0;\\n\\n\\t\\t/* Specificity matters here. See https://github.com/ckeditor/ckeditor5-theme-lark/issues/168. */\\n\\t\\t& > .ck-toolbar__items > .ck {\\n\\t\\t\\t/* Items in a vertical toolbar should span the horizontal space. */\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t/* Items in a vertical toolbar should have no margin. */\\n\\t\\t\\tmargin: 0;\\n\\n\\t\\t\\t/* Items in a vertical toolbar span the entire width so rounded corners are pointless. */\\n\\t\\t\\tborder-radius: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-toolbar_compact {\\n\\t\\t/* No spacing around items. */\\n\\t\\tpadding: 0;\\n\\n\\t\\t& > .ck-toolbar__items > * {\\n\\t\\t\\t/* Compact toolbar items have no spacing between them. */\\n\\t\\t\\tmargin: 0;\\n\\n\\t\\t\\t/* \\\"Middle\\\" children should have no rounded corners. */\\n\\t\\t\\t&:not(:first-child):not(:last-child) {\\n\\t\\t\\t\\tborder-radius: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck.ck-toolbar__grouped-dropdown {\\n\\t\\t/*\\n\\t\\t * Dropdown button has asymmetric padding to fit the arrow.\\n\\t\\t * This button has no arrow so let's revert that padding back to normal.\\n\\t\\t */\\n\\t\\t& > .ck.ck-button.ck-dropdown__button {\\n\\t\\t\\tpadding-left: var(--ck-spacing-tiny);\\n\\t\\t}\\n\\t}\\n\\n\\t/* A drop-down containing the nested toolbar with configured items. */\\n\\t& .ck-toolbar__nested-toolbar-dropdown {\\n\\t\\t/* Prevent empty space in the panel when the dropdown label is visible and long but the toolbar has few items. */\\n\\t\\t& > .ck-dropdown__panel {\\n\\t\\t\\tmin-width: auto;\\n\\t\\t}\\n\\n\\t\\t& > .ck-button > .ck-button__label {\\n\\t\\t\\tmax-width: 7em;\\n\\t\\t\\twidth: auto;\\n\\t\\t}\\n\\t}\\n\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t.ck-toolbar-container & {\\n\\t\\tborder: 0;\\n\\t}\\n}\\n\\n/* stylelint-disable */\\n\\n/*\\n * Styles for RTL toolbars.\\n *\\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own \\\"dir\\\"\\n * because its parent is not controlled by the editor framework.\\n */\\n[dir=\\\"rtl\\\"] .ck.ck-toolbar,\\n.ck.ck-toolbar[dir=\\\"rtl\\\"] {\\n\\t& > .ck-toolbar__items > .ck {\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t&:not(.ck-toolbar_compact) > .ck-toolbar__items > .ck {\\n\\t\\t/* (#11) Separate toolbar items. */\\n\\t\\tmargin-left: var(--ck-spacing-small);\\n\\t}\\n\\n\\t& > .ck-toolbar__items > .ck:last-child {\\n\\t\\tmargin-left: 0;\\n\\t}\\n\\n\\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\\n\\t\\t/* No rounded corners on the right side of the first child. */\\n\\t\\t&:first-child {\\n\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t}\\n\\n\\t\\t/* No rounded corners on the left side of the last child. */\\n\\t\\t&:last-child {\\n\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\\n\\t& > .ck.ck-toolbar__separator {\\n\\t\\tmargin-left: var(--ck-spacing-small);\\n\\t}\\n\\n\\t/* Some spacing between the items and the separator before the grouped items dropdown. */\\n\\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\\n\\t\\tmargin-left: var(--ck-spacing-small);\\n\\t}\\n}\\n\\n/*\\n * Styles for LTR toolbars.\\n *\\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own \\\"dir\\\"\\n * because its parent is not controlled by the editor framework.\\n */\\n[dir=\\\"ltr\\\"] .ck.ck-toolbar,\\n.ck.ck-toolbar[dir=\\\"ltr\\\"] {\\n\\t& > .ck-toolbar__items > .ck:last-child {\\n\\t\\tmargin-right: 0;\\n\\t}\\n\\n\\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\\n\\t\\t/* No rounded corners on the right side of the first child. */\\n\\t\\t&:first-child {\\n\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t}\\n\\n\\t\\t/* No rounded corners on the left side of the last child. */\\n\\t\\t&:last-child {\\n\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\\n\\t& > .ck.ck-toolbar__separator {\\n\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t}\\n\\n\\t/* Some spacing between the items and the separator before the grouped items dropdown. */\\n\\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\\n\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t}\\n}\\n\\n/* stylelint-enable */\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `: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.ck-rounded-corners:not(.ck-editor__nested-editable){border-radius:var(--ck-border-radius)}.ck.ck-editor__editable.ck-focused:not(.ck-editor__nested-editable){border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck.ck-editor__editable_inline{border:1px solid transparent;overflow:auto;padding:0 var(--ck-spacing-standard)}.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-panel-background)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-panel-background)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/editorui.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAWA,MACC,0CACD,CAEA,yDCJC,eDWD,CCTC,yJAEC,qCAED,CDCA,oEEPA,2BAA2B,CCF3B,qCAA8B,CDC9B,YFWA,CAGD,+BAGC,4BAA6B,CAF7B,aAAc,CACd,oCA6BD,CA1BC,wCACC,eACD,CAEA,wCACC,gBACD,CAGA,4CACC,kCACD,CAGA,2CAKC,qCACD,CAGA,sDACC,kDACD,CAKA,gEACC,oDACD,CAIA,gEACC,iDACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_disabled.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n@import \\\"../../../mixins/_focus.css\\\";\\n@import \\\"../../mixins/_button.css\\\";\\n\\n:root {\\n\\t--ck-color-editable-blur-selection: hsl(0, 0%, 85%);\\n}\\n\\n.ck.ck-editor__editable:not(.ck-editor__nested-editable) {\\n\\t@mixin ck-rounded-corners;\\n\\n\\t&.ck-focused {\\n\\t\\t@mixin ck-focus-ring;\\n\\t\\t@mixin ck-box-shadow var(--ck-inner-shadow);\\n\\t}\\n}\\n\\n.ck.ck-editor__editable_inline {\\n\\toverflow: auto;\\n\\tpadding: 0 var(--ck-spacing-standard);\\n\\tborder: 1px solid transparent;\\n\\n\\t&[dir=\\\"ltr\\\"] {\\n\\t\\ttext-align: left;\\n\\t}\\n\\n\\t&[dir=\\\"rtl\\\"] {\\n\\t\\ttext-align: right;\\n\\t}\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/116 */\\n\\t& > *:first-child {\\n\\t\\tmargin-top: var(--ck-spacing-large);\\n\\t}\\n\\n\\t/* https://github.com/ckeditor/ckeditor5/issues/847 */\\n\\t& > *:last-child {\\n\\t\\t/*\\n\\t\\t * This value should match with the default margins of the block elements (like .media or .image)\\n\\t\\t * to avoid a content jumping when the fake selection container shows up (See https://github.com/ckeditor/ckeditor5/issues/9825).\\n\\t\\t */\\n\\t\\tmargin-bottom: var(--ck-spacing-large);\\n\\t}\\n\\n\\t/* https://github.com/ckeditor/ckeditor5/issues/6517 */\\n\\t&.ck-blurred ::selection {\\n\\t\\tbackground: var(--ck-color-editable-blur-selection);\\n\\t}\\n}\\n\\n/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/111 */\\n.ck.ck-balloon-panel.ck-toolbar-container[class*=\\\"arrow_n\\\"] {\\n\\t&::after {\\n\\t\\tborder-bottom-color: var(--ck-color-panel-background);\\n\\t}\\n}\\n\\n.ck.ck-balloon-panel.ck-toolbar-container[class*=\\\"arrow_s\\\"] {\\n\\t&::after {\\n\\t\\tborder-top-color: var(--ck-color-panel-background);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A visual style of focused element's border.\\n */\\n@define-mixin ck-focus-ring {\\n\\t/* Disable native outline. */\\n\\toutline: none;\\n\\tborder: var(--ck-focus-ring)\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `: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-dropdown__panel{display:none;max-width:var(--ck-dropdown-max-width);position:absolute;z-index:var(--ck-z-panel)}.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{bottom:auto;top:100%}.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-panel) + 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{margin-left:var(--ck-spacing-standard);right: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{overflow:hidden;text-overflow:ellipsis;width:7em}.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{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);border-radius:0;bottom:0;min-width:100%}.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}.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}.ck.ck-dropdown__panel:focus{outline:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/dropdown.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/dropdown.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,4BACD,CAEA,gBACC,oBAAqB,CACrB,iBA2ED,CAzEC,oCACC,mBAAoB,CACpB,2BACD,CAGA,+CACC,UACD,CAEA,oCACC,YAAa,CAEb,sCAAuC,CAEvC,iBAAkB,CAHlB,yBA4DD,CAvDC,+DACC,oBACD,CAEA,mSAKC,WACD,CAEA,mSAUC,WAAY,CADZ,QAED,CAEA,oHAEC,MACD,CAEA,oHAEC,OACD,CAEA,kHAGC,QAAS,CACT,0BACD,CAEA,sHAGC,QAAS,CACT,0BACD,CAEA,sHAGC,QAAS,CACT,0BACD,CAQF,mCACC,mCACD,CCpFA,MACC,sDACD,CAEA,gBAEC,iBA2ED,CAzEC,oCACC,mCACD,CAGC,8CAIC,sCAAuC,CAHvC,gCAID,CAIA,8CACC,+BAAgC,CAGhC,oCACD,CAGD,gDC/BA,kCDiCA,CAIE,mFAEC,oCACD,CAIA,mFAEC,qCACD,CAID,iEAEC,eAAgB,CAChB,sBAAuB,CAFvB,SAGD,CAGA,6EC1DD,kCD4DC,CAGA,qDACC,2BAA4B,CAC5B,4BACD,CAEA,sGACC,UACD,CAGA,yHAEC,eAKD,CAHC,qIE7EF,2CF+EE,CAKH,uBAIC,oDAAqD,CACrD,sDAAuD,CGvFvD,eAAgB,CHwFhB,QAAS,CAGT,cAuBD,CGhHC,qFAEC,qCAED,CH4ED,uBEpFC,oCFoHD,CAnBC,6CACC,wBACD,CAEA,6CACC,yBACD,CAEA,6CACC,2BACD,CAEA,6CACC,4BACD,CAEA,6BACC,YACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-dropdown-max-width: 75vw;\\n}\\n\\n.ck.ck-dropdown {\\n\\tdisplay: inline-block;\\n\\tposition: relative;\\n\\n\\t& .ck-dropdown__arrow {\\n\\t\\tpointer-events: none;\\n\\t\\tz-index: var(--ck-z-default);\\n\\t}\\n\\n\\t/* Dropdown button should span horizontally, e.g. in vertical toolbars */\\n\\t& .ck-button.ck-dropdown__button {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t& .ck-dropdown__panel {\\n\\t\\tdisplay: none;\\n\\t\\tz-index: var(--ck-z-panel);\\n\\t\\tmax-width: var(--ck-dropdown-max-width);\\n\\n\\t\\tposition: absolute;\\n\\n\\t\\t&.ck-dropdown__panel-visible {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_ne,\\n\\t\\t&.ck-dropdown__panel_nw,\\n\\t\\t&.ck-dropdown__panel_n,\\n\\t\\t&.ck-dropdown__panel_nmw,\\n\\t\\t&.ck-dropdown__panel_nme {\\n\\t\\t\\tbottom: 100%;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_se,\\n\\t\\t&.ck-dropdown__panel_sw,\\n\\t\\t&.ck-dropdown__panel_smw,\\n\\t\\t&.ck-dropdown__panel_sme,\\n\\t\\t&.ck-dropdown__panel_s {\\n\\t\\t\\t/*\\n\\t\\t\\t * Using transform: translate3d( 0, 100%, 0 ) causes blurry dropdown on Chrome 67-78+ on non-retina displays.\\n\\t\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/1053.\\n\\t\\t\\t */\\n\\t\\t\\ttop: 100%;\\n\\t\\t\\tbottom: auto;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_ne,\\n\\t\\t&.ck-dropdown__panel_se {\\n\\t\\t\\tleft: 0px;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_nw,\\n\\t\\t&.ck-dropdown__panel_sw {\\n\\t\\t\\tright: 0px;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_s,\\n\\t\\t&.ck-dropdown__panel_n {\\n\\t\\t\\t/* Positioning panels relative to the center of the button */\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_nmw,\\n\\t\\t&.ck-dropdown__panel_smw {\\n\\t\\t\\t/* Positioning panels relative to the middle-west of the button */\\n\\t\\t\\tleft: 75%;\\n\\t\\t\\ttransform: translateX(-75%);\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__panel_nme,\\n\\t\\t&.ck-dropdown__panel_sme {\\n\\t\\t\\t/* Positioning panels relative to the middle-east of the button */\\n\\t\\t\\tleft: 25%;\\n\\t\\t\\ttransform: translateX(-25%);\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\n * Toolbar dropdown panels should be always above the UI (eg. other dropdown panels) from the editor's content.\\n * See https://github.com/ckeditor/ckeditor5/issues/7874\\n */\\n.ck.ck-toolbar .ck-dropdown__panel {\\n\\tz-index: calc( var(--ck-z-panel) + 1 );\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_disabled.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n:root {\\n\\t--ck-dropdown-arrow-size: calc(0.5 * var(--ck-icon-size));\\n}\\n\\n.ck.ck-dropdown {\\n\\t/* Enable font size inheritance, which allows fluid UI scaling. */\\n\\tfont-size: inherit;\\n\\n\\t& .ck-dropdown__arrow {\\n\\t\\twidth: var(--ck-dropdown-arrow-size);\\n\\t}\\n\\n\\t@mixin ck-dir ltr {\\n\\t\\t& .ck-dropdown__arrow {\\n\\t\\t\\tright: var(--ck-spacing-standard);\\n\\n\\t\\t\\t/* A space to accommodate the triangle. */\\n\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-dir rtl {\\n\\t\\t& .ck-dropdown__arrow {\\n\\t\\t\\tleft: var(--ck-spacing-standard);\\n\\n\\t\\t\\t/* A space to accommodate the triangle. */\\n\\t\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-disabled .ck-dropdown__arrow {\\n\\t\\t@mixin ck-disabled;\\n\\t}\\n\\n\\t& .ck-button.ck-dropdown__button {\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t&:not(.ck-button_with-text) {\\n\\t\\t\\t\\t/* Make sure dropdowns with just an icon have the right inner spacing */\\n\\t\\t\\t\\tpadding-left: var(--ck-spacing-small);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t&:not(.ck-button_with-text) {\\n\\t\\t\\t\\t/* Make sure dropdowns with just an icon have the right inner spacing */\\n\\t\\t\\t\\tpadding-right: var(--ck-spacing-small);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* #23 */\\n\\t\\t& .ck-button__label {\\n\\t\\t\\twidth: 7em;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\\n\\t\\t&.ck-disabled .ck-button__label {\\n\\t\\t\\t@mixin ck-disabled;\\n\\t\\t}\\n\\n\\t\\t/* https://github.com/ckeditor/ckeditor5/issues/816 */\\n\\t\\t&.ck-on {\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t}\\n\\n\\t\\t&.ck-dropdown__button_label-width_auto .ck-button__label {\\n\\t\\t\\twidth: auto;\\n\\t\\t}\\n\\n\\t\\t/* https://github.com/ckeditor/ckeditor5/issues/8699 */\\n\\t\\t&.ck-off:active,\\n\\t\\t&.ck-on:active {\\n\\t\\t\\tbox-shadow: none;\\n\\n\\t\\t\\t&:focus {\\n\\t\\t\\t\\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-dropdown__panel {\\n\\t@mixin ck-rounded-corners;\\n\\t@mixin ck-drop-shadow;\\n\\n\\tbackground: var(--ck-color-dropdown-panel-background);\\n\\tborder: 1px solid var(--ck-color-dropdown-panel-border);\\n\\tbottom: 0;\\n\\n\\t/* Make sure the panel is at least as wide as the drop-down's button. */\\n\\tmin-width: 100%;\\n\\n\\t/* Disabled corner border radius to be consistent with the .dropdown__button\\n\\thttps://github.com/ckeditor/ckeditor5/issues/816 */\\n\\t&.ck-dropdown__panel_se {\\n\\t\\tborder-top-left-radius: 0;\\n\\t}\\n\\n\\t&.ck-dropdown__panel_sw {\\n\\t\\tborder-top-right-radius: 0;\\n\\t}\\n\\n\\t&.ck-dropdown__panel_ne {\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t}\\n\\n\\t&.ck-dropdown__panel_nw {\\n\\t\\tborder-bottom-right-radius: 0;\\n\\t}\\n\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A class which indicates that an element holding it is disabled.\\n */\\n@define-mixin ck-disabled {\\n\\topacity: var(--ck-disabled-opacity);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-content ol{list-style-type:decimal}.ck-content ol ol{list-style-type:lower-latin}.ck-content ol ol ol{list-style-type:lower-roman}.ck-content ol ol ol ol{list-style-type:upper-latin}.ck-content ol ol ol ol ol{list-style-type:upper-roman}.ck-content ul{list-style-type:disc}.ck-content ul ul{list-style-type:circle}.ck-content ul ul ul,.ck-content ul ul ul ul{list-style-type:square}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-list/theme/list.css\"],\"names\":[],\"mappings\":\"AAKA,eACC,uBAiBD,CAfC,kBACC,2BAaD,CAXC,qBACC,2BASD,CAPC,wBACC,2BAKD,CAHC,2BACC,2BACD,CAMJ,eACC,oBAaD,CAXC,kBACC,sBASD,CAJE,6CACC,sBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck-content ol {\\n\\tlist-style-type: decimal;\\n\\n\\t& ol {\\n\\t\\tlist-style-type: lower-latin;\\n\\n\\t\\t& ol {\\n\\t\\t\\tlist-style-type: lower-roman;\\n\\n\\t\\t\\t& ol {\\n\\t\\t\\t\\tlist-style-type: upper-latin;\\n\\n\\t\\t\\t\\t& ol {\\n\\t\\t\\t\\t\\tlist-style-type: upper-roman;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck-content ul {\\n\\tlist-style-type: disc;\\n\\n\\t& ul {\\n\\t\\tlist-style-type: circle;\\n\\n\\t\\t& ul {\\n\\t\\t\\tlist-style-type: square;\\n\\n\\t\\t\\t& ul {\\n\\t\\t\\t\\tlist-style-type: square;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-hidden{display:none!important}:root{--ck-z-default:1;--ck-z-panel:calc(var(--ck-z-default) + 999);--ck-z-dialog:9999}.ck-transitions-disabled,.ck-transitions-disabled *{transition:none!important}:root{--ck-powered-by-font-size:calc(var(--ck-font-size-base)*7.5/13);--ck-powered-by-line-height:calc(var(--ck-font-size-base)*10/13);--ck-powered-by-letter-spacing:calc(var(--ck-font-size-base)*-0.2/13);--ck-powered-by-padding-vertical:2px;--ck-powered-by-padding-horizontal:4px;--ck-powered-by-text-color:#4f4f4f;--ck-powered-by-border-radius:var(--ck-border-radius);--ck-powered-by-background:#fff;--ck-powered-by-border-color:var(--ck-color-focus-border);--ck-powered-by-svg-width:53;--ck-powered-by-svg-height:10;--ck-powered-by-icon-width:calc(var(--ck-font-size-base)*var(--ck-powered-by-svg-width)/13);--ck-powered-by-icon-height:calc(var(--ck-font-size-base)*var(--ck-powered-by-svg-height)/13)}.ck.ck-balloon-panel.ck-powered-by-balloon{--ck-border-radius:var(--ck-powered-by-border-radius);background:var(--ck-powered-by-background);box-shadow:none;min-height:unset;z-index:calc(var(--ck-z-panel) - 1)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by{line-height:var(--ck-powered-by-line-height)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by a{align-items:center;cursor:pointer;display:flex;filter:grayscale(80%);line-height:var(--ck-powered-by-line-height);opacity:.66;padding:var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-powered-by__label{color:var(--ck-powered-by-text-color);cursor:pointer;font-size:var(--ck-powered-by-font-size);font-weight:700;letter-spacing:var(--ck-powered-by-letter-spacing);line-height:normal;margin-right:4px;padding-left:2px;text-transform:uppercase}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by .ck-icon{cursor:pointer;display:block;height:var(--ck-powered-by-icon-height);width:var(--ck-powered-by-icon-width)}.ck.ck-balloon-panel.ck-powered-by-balloon .ck.ck-powered-by:hover a{filter:grayscale(0);opacity:1}.ck.ck-balloon-panel.ck-powered-by-balloon[class*=position_inside]{border-color:transparent}.ck.ck-balloon-panel.ck-powered-by-balloon[class*=position_border]{border:var(--ck-focus-ring);border-color:var(--ck-powered-by-border-color)}:root{--ck-evaluation-badge-font-size:calc(var(--ck-font-size-base)*7.5/13);--ck-evaluation-badge-line-height:calc(var(--ck-font-size-base)*7.5/13);--ck-evaluation-badge-letter-spacing:calc(var(--ck-font-size-base)*-0.2/13);--ck-evaluation-badge-padding-vertical:2px;--ck-evaluation-badge-padding-horizontal:4px;--ck-evaluation-badge-text-color:#4f4f4f;--ck-evaluation-badge-border-radius:var(--ck-border-radius);--ck-evaluation-badge-background:#fff;--ck-evaluation-badge-border-color:var(--ck-color-focus-border)}.ck.ck-balloon-panel.ck-evaluation-badge-balloon{--ck-border-radius:var(--ck-evaluation-badge-border-radius);background:var(--ck-evaluation-badge-background);box-shadow:none;min-height:unset;z-index:calc(var(--ck-z-panel) - 1)}.ck.ck-balloon-panel.ck-evaluation-badge-balloon .ck.ck-evaluation-badge{line-height:var(--ck-evaluation-badge-line-height);padding:var(--ck-evaluation-badge-padding-vertical) var(--ck-evaluation-badge-padding-horizontal)}.ck.ck-balloon-panel.ck-evaluation-badge-balloon .ck.ck-evaluation-badge .ck-evaluation-badge__label{color:var(--ck-evaluation-badge-text-color);display:block;font-size:var(--ck-evaluation-badge-font-size);font-weight:700;letter-spacing:var(--ck-evaluation-badge-letter-spacing);line-height:normal;padding:0 2px;text-transform:uppercase}.ck.ck-balloon-panel.ck-evaluation-badge-balloon[class*=position_inside]{border-color:transparent}.ck.ck-balloon-panel.ck-evaluation-badge-balloon[class*=position_border]{border:var(--ck-focus-ring);border-color:var(--ck-evaluation-badge-border-color)}:root{--ck-color-base-foreground:#fafafa;--ck-color-base-background:#fff;--ck-color-base-border:#ccced1;--ck-color-base-action:#53a336;--ck-color-base-focus:#6cb5f9;--ck-color-base-text:#333;--ck-color-base-active:#2977ff;--ck-color-base-active-focus:#0d65ff;--ck-color-base-error:#db3700;--ck-color-focus-border-coordinates:218,81.8%,56.9%;--ck-color-focus-border:hsl(var(--ck-color-focus-border-coordinates));--ck-color-focus-outer-shadow:#cae1fc;--ck-color-focus-disabled-shadow:rgba(119,186,248,.3);--ck-color-focus-error-shadow:rgba(255,64,31,.3);--ck-color-text:var(--ck-color-base-text);--ck-color-shadow-drop:rgba(0,0,0,.15);--ck-color-shadow-drop-active:rgba(0,0,0,.2);--ck-color-shadow-inner:rgba(0,0,0,.1);--ck-color-button-default-background:transparent;--ck-color-button-default-hover-background:#f0f0f0;--ck-color-button-default-active-background:#f0f0f0;--ck-color-button-default-disabled-background:transparent;--ck-color-button-on-background:#f0f7ff;--ck-color-button-on-hover-background:#dbecff;--ck-color-button-on-active-background:#dbecff;--ck-color-button-on-disabled-background:#f0f2f4;--ck-color-button-on-color:#2977ff;--ck-color-button-action-background:var(--ck-color-base-action);--ck-color-button-action-hover-background:#4d9d30;--ck-color-button-action-active-background:#4d9d30;--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:#939393;--ck-color-switch-button-off-hover-background:#7d7d7d;--ck-color-switch-button-on-background:var(--ck-color-button-action-background);--ck-color-switch-button-on-hover-background:#4d9d30;--ck-color-switch-button-inner-background:var(--ck-color-base-background);--ck-color-switch-button-inner-shadow:rgba(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-dialog-background:var(--ck-custom-background);--ck-color-dialog-form-header-border:var(--ck-custom-border);--ck-color-input-background:var(--ck-color-base-background);--ck-color-input-border:var(--ck-color-base-border);--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:var(--ck-color-base-border);--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-button-on-color);--ck-color-list-button-on-background-focus:var(--ck-color-button-on-color);--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-background);--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,176,255,.1);--ck-color-link-fake-selection:rgba(31,176,255,.3);--ck-color-highlight-background:#ff0;--ck-color-light-red:#fcc;--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-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{background:transparent;border:0;box-sizing:border-box;height:auto;margin:0;padding:0;position:static;text-decoration:none;transition:none;vertical-align:middle;width:auto;word-wrap:break-word}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset_all{border-collapse:collapse;color:var(--ck-color-text);cursor:auto;float:none;font:normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);text-align:left;white-space:nowrap}.ck-reset_all .ck-rtl :not(.ck-reset_all-excluded *){text-align:right}.ck-reset_all iframe:not(.ck-reset_all-excluded *){vertical-align:inherit}.ck-reset_all textarea:not(.ck-reset_all-excluded *){white-space:pre-wrap}.ck-reset_all input[type=password]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text]:not(.ck-reset_all-excluded *),.ck-reset_all textarea:not(.ck-reset_all-excluded *){cursor:text}.ck-reset_all input[type=password][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all textarea[disabled]:not(.ck-reset_all-excluded *){cursor:default}.ck-reset_all fieldset:not(.ck-reset_all-excluded *){border:2px groove #dfdee3;padding:10px}.ck-reset_all button:not(.ck-reset_all-excluded *)::-moz-focus-inner{border:0;padding: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)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_hidden.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_zindex.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_transition.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_poweredby.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/globals/_evaluationbadge.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_colors.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_disabled.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_focus.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_fonts.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_reset.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_rounded.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_shadow.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_spacing.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A class which hides an element in DOM.\\n */\\n.ck-hidden {\\n\\t/* Override selector specificity. Otherwise, all elements with some display\\n\\tstyle defined will override this one, which is not a desired result. */\\n\\tdisplay: none !important;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-z-default: 1;\\n\\t--ck-z-panel: calc( var(--ck-z-default) + 999 );\\n\\t--ck-z-dialog: 9999;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A class that disables all transitions of the element and its children.\\n */\\n.ck-transitions-disabled,\\n.ck-transitions-disabled * {\\n\\ttransition: none !important;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t/* where 7.5(px) is the font size of the powered by label and 13(px) is the base font size. */\\n\\t--ck-powered-by-font-size: calc(var(--ck-font-size-base) * 7.5 / 13);\\n\\t/* where 10(px) is the line height of the powered by label and 13(px) is the base font size. */\\n\\t--ck-powered-by-line-height: calc(var(--ck-font-size-base) * 10 / 13);\\n\\t/* where -0.2(px) is the letter spacing of the powered by label and 13(px) is the base font size. */\\n\\t--ck-powered-by-letter-spacing: calc(var(--ck-font-size-base) * -0.2 / 13);\\n\\t--ck-powered-by-padding-vertical: 2px;\\n\\t--ck-powered-by-padding-horizontal: 4px;\\n\\t--ck-powered-by-text-color: hsl(0, 0%, 31%);\\n\\t--ck-powered-by-border-radius: var(--ck-border-radius);\\n\\t--ck-powered-by-background: hsl(0, 0%, 100%);\\n\\t--ck-powered-by-border-color: var(--ck-color-focus-border);\\n\\n\\t--ck-powered-by-svg-width: 53;\\n\\t--ck-powered-by-svg-height: 10;\\n\\t--ck-powered-by-icon-width: calc(var(--ck-font-size-base) * var(--ck-powered-by-svg-width) / 13);\\n\\t--ck-powered-by-icon-height: calc(var(--ck-font-size-base) * var(--ck-powered-by-svg-height) / 13);\\n}\\n\\n.ck.ck-balloon-panel.ck-powered-by-balloon {\\n\\t--ck-border-radius: var(--ck-powered-by-border-radius);\\n\\n\\tbox-shadow: none;\\n\\tbackground: var(--ck-powered-by-background);\\n\\tmin-height: unset;\\n\\tz-index: calc( var(--ck-z-panel) - 1 );\\n\\n\\t& .ck.ck-powered-by {\\n\\t\\tline-height: var(--ck-powered-by-line-height);\\n\\n\\t\\t& a {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\topacity: .66;\\n\\t\\t\\tfilter: grayscale(80%);\\n\\t\\t\\tline-height: var(--ck-powered-by-line-height);\\n\\t\\t\\tpadding: var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal);\\n\\t\\t}\\n\\n\\t\\t& .ck-powered-by__label {\\n\\t\\t\\tfont-size: var(--ck-powered-by-font-size);\\n\\t\\t\\tletter-spacing: var(--ck-powered-by-letter-spacing);\\n\\t\\t\\tpadding-left: 2px;\\n\\t\\t\\ttext-transform: uppercase;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-right: 4px;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tline-height: normal;\\n\\t\\t\\tcolor: var(--ck-powered-by-text-color);\\n\\n\\t\\t}\\n\\n\\t\\t& .ck-icon {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twidth: var(--ck-powered-by-icon-width);\\n\\t\\t\\theight: var(--ck-powered-by-icon-height);\\n\\t\\t}\\n\\n\\t\\t&:hover {\\n\\t\\t\\t& a {\\n\\t\\t\\t\\tfilter: grayscale(0%);\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"position_inside\\\"] {\\n\\t\\tborder-color: transparent;\\n\\t}\\n\\n\\t&[class*=\\\"position_border\\\"] {\\n\\t\\tborder: var(--ck-focus-ring);\\n\\t\\tborder-color: var(--ck-powered-by-border-color);\\n\\t}\\n}\\n\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t/* where 7.5(px) is the font size of the evaluation badge label and 13(px) is the base font size. */\\n\\t--ck-evaluation-badge-font-size: calc(var(--ck-font-size-base) * 7.5 / 13);\\n\\t/* where 7.5(px) is the line height of the evaluation badge label and 13(px) is the base font size. */\\n\\t--ck-evaluation-badge-line-height: calc(var(--ck-font-size-base) * 7.5 / 13);\\n\\t/* where -0.2(px) is the letter spacing of the evaluation badge label and 13(px) is the base font size. */\\n\\t--ck-evaluation-badge-letter-spacing: calc(var(--ck-font-size-base) * -0.2 / 13);\\n\\t--ck-evaluation-badge-padding-vertical: 2px;\\n\\t--ck-evaluation-badge-padding-horizontal: 4px;\\n\\t--ck-evaluation-badge-text-color: hsl(0, 0%, 31%);\\n\\t--ck-evaluation-badge-border-radius: var(--ck-border-radius);\\n\\t--ck-evaluation-badge-background: hsl(0, 0%, 100%);\\n\\t--ck-evaluation-badge-border-color: var(--ck-color-focus-border);\\n}\\n\\n.ck.ck-balloon-panel.ck-evaluation-badge-balloon {\\n\\t--ck-border-radius: var(--ck-evaluation-badge-border-radius);\\n\\n\\tbox-shadow: none;\\n\\tbackground: var(--ck-evaluation-badge-background);\\n\\tmin-height: unset;\\n\\tz-index: calc( var(--ck-z-panel) - 1 );\\n\\n\\t& .ck.ck-evaluation-badge {\\n\\t\\tline-height: var(--ck-evaluation-badge-line-height);\\n\\t\\tpadding: var(--ck-evaluation-badge-padding-vertical) var(--ck-evaluation-badge-padding-horizontal);\\n\\n\\t\\t& .ck-evaluation-badge__label {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tpadding: 0 2px;\\n\\t\\t\\tfont-size: var(--ck-evaluation-badge-font-size);\\n\\t\\t\\tletter-spacing: var(--ck-evaluation-badge-letter-spacing);\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tline-height: normal;\\n\\t\\t\\ttext-transform: uppercase;\\n\\t\\t\\tcolor: var(--ck-evaluation-badge-text-color);\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"position_inside\\\"] {\\n\\t\\tborder-color: transparent;\\n\\t}\\n\\n\\t&[class*=\\\"position_border\\\"] {\\n\\t\\tborder: var(--ck-focus-ring);\\n\\t\\tborder-color: var(--ck-evaluation-badge-border-color);\\n\\t}\\n}\\n\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-color-base-foreground: \\t\\t\\t\\t\\t\\t\\t\\thsl(0, 0%, 98%);\\n\\t--ck-color-base-background: \\t\\t\\t\\t\\t\\t\\t\\thsl(0, 0%, 100%);\\n\\t--ck-color-base-border: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(220, 6%, 81%);\\n\\t--ck-color-base-action: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(104, 50.2%, 42.5%);\\n\\t--ck-color-base-focus: \\t\\t\\t\\t\\t\\t\\t\\t\\t\\thsl(209, 92%, 70%);\\n\\t--ck-color-base-text: \\t\\t\\t\\t\\t\\t\\t\\t\\t\\thsl(0, 0%, 20%);\\n\\t--ck-color-base-active: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(218.1, 100%, 58%);\\n\\t--ck-color-base-active-focus:\\t\\t\\t\\t\\t\\t\\t\\thsl(218.2, 100%, 52.5%);\\n\\t--ck-color-base-error:\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thsl(15, 100%, 43%);\\n\\n\\t/* -- Generic colors ------------------------------------------------------------------------ */\\n\\n\\t--ck-color-focus-border-coordinates: \\t\\t\\t\\t\\t\\t218, 81.8%, 56.9%;\\n\\t--ck-color-focus-border: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(var(--ck-color-focus-border-coordinates));\\n\\t--ck-color-focus-outer-shadow:\\t\\t\\t\\t\\t\\t\\t\\thsl(212.4, 89.3%, 89%);\\n\\t--ck-color-focus-disabled-shadow:\\t\\t\\t\\t\\t\\t\\thsla(209, 90%, 72%,.3);\\n\\t--ck-color-focus-error-shadow:\\t\\t\\t\\t\\t\\t\\t\\thsla(9,100%,56%,.3);\\n\\t--ck-color-text: \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-text);\\n\\t--ck-color-shadow-drop: \\t\\t\\t\\t\\t\\t\\t\\t\\thsla(0, 0%, 0%, 0.15);\\n\\t--ck-color-shadow-drop-active:\\t\\t\\t\\t\\t\\t\\t\\thsla(0, 0%, 0%, 0.2);\\n\\t--ck-color-shadow-inner: \\t\\t\\t\\t\\t\\t\\t\\t\\thsla(0, 0%, 0%, 0.1);\\n\\n\\t/* -- Buttons ------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-button-default-background: \\t\\t\\t\\t\\t\\ttransparent;\\n\\t--ck-color-button-default-hover-background: \\t\\t\\t\\thsl(0, 0%, 94.1%);\\n\\t--ck-color-button-default-active-background: \\t\\t\\t\\thsl(0, 0%, 94.1%);\\n\\t--ck-color-button-default-disabled-background: \\t\\t\\t\\ttransparent;\\n\\n\\t--ck-color-button-on-background: \\t\\t\\t\\t\\t\\t\\thsl(212, 100%, 97.1%);\\n\\t--ck-color-button-on-hover-background: \\t\\t\\t\\t\\t\\thsl(211.7, 100%, 92.9%);\\n\\t--ck-color-button-on-active-background: \\t\\t\\t\\t\\thsl(211.7, 100%, 92.9%);\\n\\t--ck-color-button-on-disabled-background: \\t\\t\\t\\t\\thsl(211, 15%, 95%);\\n\\t--ck-color-button-on-color:\\t\\t\\t\\t\\t\\t\\t\\t\\thsl(218.1, 100%, 58%);\\n\\n\\n\\t--ck-color-button-action-background: \\t\\t\\t\\t\\t\\tvar(--ck-color-base-action);\\n\\t--ck-color-button-action-hover-background: \\t\\t\\t\\t\\thsl(104, 53.2%, 40.2%);\\n\\t--ck-color-button-action-active-background: \\t\\t\\t\\thsl(104, 53.2%, 40.2%);\\n\\t--ck-color-button-action-disabled-background: \\t\\t\\t\\thsl(104, 44%, 58%);\\n\\t--ck-color-button-action-text: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\n\\t--ck-color-button-save: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(120, 100%, 27%);\\n\\t--ck-color-button-cancel: \\t\\t\\t\\t\\t\\t\\t\\t\\thsl(15, 100%, 43%);\\n\\n\\t--ck-color-switch-button-off-background:\\t\\t\\t\\t\\thsl(0, 0%, 57.6%);\\n\\t--ck-color-switch-button-off-hover-background:\\t\\t\\t\\thsl(0, 0%, 49%);\\n\\t--ck-color-switch-button-on-background:\\t\\t\\t\\t\\t\\tvar(--ck-color-button-action-background);\\n\\t--ck-color-switch-button-on-hover-background:\\t\\t\\t\\thsl(104, 53.2%, 40.2%);\\n\\t--ck-color-switch-button-inner-background:\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-switch-button-inner-shadow:\\t\\t\\t\\t\\t\\thsla(0, 0%, 0%, 0.1);\\n\\n\\t/* -- Dropdown ------------------------------------------------------------------------------ */\\n\\n\\t--ck-color-dropdown-panel-background: \\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-dropdown-panel-border: \\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-border);\\n\\n\\t/* -- Dialog -------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-dialog-background: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-custom-background);\\n\\t--ck-color-dialog-form-header-border: \\t\\t\\t\\t\\t\\tvar(--ck-custom-border);\\n\\n\\t/* -- Input --------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-input-background: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-input-border: \\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-border);\\n\\t--ck-color-input-error-border:\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-error);\\n\\t--ck-color-input-text: \\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-text);\\n\\t--ck-color-input-disabled-background: \\t\\t\\t\\t\\t\\thsl(0, 0%, 95%);\\n\\t--ck-color-input-disabled-border: \\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-border);\\n\\t--ck-color-input-disabled-text: \\t\\t\\t\\t\\t\\t\\thsl(0, 0%, 46%);\\n\\n\\t/* -- List ---------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-list-background: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-list-button-hover-background: \\t\\t\\t\\t\\tvar(--ck-color-button-default-hover-background);\\n\\t--ck-color-list-button-on-background: \\t\\t\\t\\t\\t\\tvar(--ck-color-button-on-color);\\n\\t--ck-color-list-button-on-background-focus: \\t\\t\\t\\tvar(--ck-color-button-on-color);\\n\\t--ck-color-list-button-on-text:\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\n\\t/* -- Panel --------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-panel-background: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-panel-border: \\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-border);\\n\\n\\t/* -- Toolbar ------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-toolbar-background: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\t--ck-color-toolbar-border: \\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-border);\\n\\n\\t/* -- Tooltip ------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-tooltip-background: \\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-text);\\n\\t--ck-color-tooltip-text: \\t\\t\\t\\t\\t\\t\\t\\t\\tvar(--ck-color-base-background);\\n\\n\\t/* -- Engine -------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-engine-placeholder-text: \\t\\t\\t\\t\\t\\thsl(0, 0%, 44%);\\n\\n\\t/* -- Upload -------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-upload-bar-background:\\t\\t \\t\\t\\t\\t\\thsl(209, 92%, 70%);\\n\\n\\t/* -- Link -------------------------------------------------------------------------------- */\\n\\n\\t--ck-color-link-default:\\t\\t\\t\\t\\t\\t\\t\\t\\thsl(240, 100%, 47%);\\n\\t--ck-color-link-selected-background:\\t\\t\\t\\t\\t\\thsla(201, 100%, 56%, 0.1);\\n\\t--ck-color-link-fake-selection:\\t\\t\\t\\t\\t\\t\\t\\thsla(201, 100%, 56%, 0.3);\\n\\n\\t/* -- Search result highlight ---------------------------------------------------------------- */\\n\\n\\t--ck-color-highlight-background:\\t\\t\\t\\t\\t\\t\\thsl(60, 100%, 50%);\\n\\n\\t/* -- Generic colors ------------------------------------------------------------------------- */\\n\\n\\t--ck-color-light-red:\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thsl(0, 100%, 90%);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t/**\\n\\t * An opacity value of disabled UI item.\\n\\t */\\n\\t--ck-disabled-opacity: .5;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t/**\\n\\t * The geometry of the of focused element's outer shadow.\\n\\t */\\n\\t--ck-focus-outer-shadow-geometry: 0 0 0 3px;\\n\\n\\t/**\\n\\t * A visual style of focused element's outer shadow.\\n\\t */\\n\\t--ck-focus-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);\\n\\n\\t/**\\n\\t * A visual style of focused element's outer shadow (when disabled).\\n\\t */\\n\\t--ck-focus-disabled-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);\\n\\n\\t/**\\n\\t * A visual style of focused element's outer shadow (when has errors).\\n\\t */\\n\\t--ck-focus-error-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);\\n\\n\\t/**\\n\\t * A visual style of focused element's border or outline.\\n\\t */\\n\\t--ck-focus-ring: 1px solid var(--ck-color-focus-border);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-font-size-base: 13px;\\n\\t--ck-line-height-base: 1.84615;\\n\\t--ck-font-face: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\\n\\n\\t--ck-font-size-tiny: 0.7em;\\n\\t--ck-font-size-small: 0.75em;\\n\\t--ck-font-size-normal: 1em;\\n\\t--ck-font-size-big: 1.4em;\\n\\t--ck-font-size-large: 1.8em;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t/* This is super-important. This is **manually** adjusted so a button without an icon\\n\\tis never smaller than a button with icon, additionally making sure that text-less buttons\\n\\tare perfect squares. The value is also shared by other components which should stay \\\"in-line\\\"\\n\\twith buttons. */\\n\\t--ck-ui-component-min-height: 2.3em;\\n}\\n\\n/**\\n * Resets an element, ignoring its children.\\n */\\n.ck.ck-reset,\\n.ck.ck-reset_all,\\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\\n\\tbox-sizing: border-box;\\n\\twidth: auto;\\n\\theight: auto;\\n\\tposition: static;\\n\\n\\t/* Do not include inheritable rules here. */\\n\\tmargin: 0;\\n\\tpadding: 0;\\n\\tborder: 0;\\n\\tbackground: transparent;\\n\\ttext-decoration: none;\\n\\tvertical-align: middle;\\n\\ttransition: none;\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/105 */\\n\\tword-wrap: break-word;\\n}\\n\\n/**\\n * Resets an element AND its children.\\n */\\n.ck.ck-reset_all,\\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\\n\\t/* These are rule inherited by all children elements. */\\n\\tborder-collapse: collapse;\\n\\tfont: normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);\\n\\tcolor: var(--ck-color-text);\\n\\ttext-align: left;\\n\\twhite-space: nowrap;\\n\\tcursor: auto;\\n\\tfloat: none;\\n}\\n\\n.ck-reset_all {\\n\\t& .ck-rtl *:not(.ck-reset_all-excluded *) {\\n\\t\\ttext-align: right;\\n\\t}\\n\\n\\t& iframe:not(.ck-reset_all-excluded *) {\\n\\t\\t/* For IE */\\n\\t\\tvertical-align: inherit;\\n\\t}\\n\\n\\t& textarea:not(.ck-reset_all-excluded *) {\\n\\t\\twhite-space: pre-wrap;\\n\\t}\\n\\n\\t& textarea:not(.ck-reset_all-excluded *),\\n\\t& input[type=\\\"text\\\"]:not(.ck-reset_all-excluded *),\\n\\t& input[type=\\\"password\\\"]:not(.ck-reset_all-excluded *) {\\n\\t\\tcursor: text;\\n\\t}\\n\\n\\t& textarea[disabled]:not(.ck-reset_all-excluded *),\\n\\t& input[type=\\\"text\\\"][disabled]:not(.ck-reset_all-excluded *),\\n\\t& input[type=\\\"password\\\"][disabled]:not(.ck-reset_all-excluded *) {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t& fieldset:not(.ck-reset_all-excluded *) {\\n\\t\\tpadding: 10px;\\n\\t\\tborder: 2px groove hsl(255, 7%, 88%);\\n\\t}\\n\\n\\t& button:not(.ck-reset_all-excluded *)::-moz-focus-inner {\\n\\t\\t/* See http://stackoverflow.com/questions/5517744/remove-extra-button-spacing-padding-in-firefox */\\n\\t\\tpadding: 0;\\n\\t\\tborder: 0\\n\\t}\\n}\\n\\n/**\\n * Default UI rules for RTL languages.\\n */\\n.ck[dir=\\\"rtl\\\"],\\n.ck[dir=\\\"rtl\\\"] .ck {\\n\\ttext-align: right;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Default border-radius value.\\n */\\n:root{\\n\\t--ck-border-radius: 2px;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t/**\\n\\t * A visual style of element's inner shadow (i.e. input).\\n\\t */\\n\\t--ck-inner-shadow: 2px 2px 3px var(--ck-color-shadow-inner) inset;\\n\\n\\t/**\\n\\t * A visual style of element's drop shadow (i.e. panel).\\n\\t */\\n\\t--ck-drop-shadow: 0 1px 2px 1px var(--ck-color-shadow-drop);\\n\\n\\t/**\\n\\t * A visual style of element's active shadow (i.e. comment or suggestion).\\n\\t */\\n\\t--ck-drop-shadow-active: 0 3px 6px 1px var(--ck-color-shadow-drop-active);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-spacing-unit: \\t\\t\\t\\t\\t\\t0.6em;\\n\\t--ck-spacing-large: \\t\\t\\t\\t\\tcalc(var(--ck-spacing-unit) * 1.5);\\n\\t--ck-spacing-standard: \\t\\t\\t\\t\\tvar(--ck-spacing-unit);\\n\\t--ck-spacing-medium: \\t\\t\\t\\t\\tcalc(var(--ck-spacing-unit) * 0.8);\\n\\t--ck-spacing-small: \\t\\t\\t\\t\\tcalc(var(--ck-spacing-unit) * 0.5);\\n\\t--ck-spacing-tiny: \\t\\t\\t\\t\\t\\tcalc(var(--ck-spacing-unit) * 0.3);\\n\\t--ck-spacing-extra-tiny: \\t\\t\\t\\tcalc(var(--ck-spacing-unit) * 0.16);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-vertical-form .ck-button:after{bottom:-1px;content:\"\";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:\"\";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.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-width)*.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-number,.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:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){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}[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)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/responsive-form/responsiveform.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AAQC,mCAMC,WAAY,CALZ,UAAW,CAEX,iBAAkB,CAClB,UAAW,CACX,QAAS,CAHT,OAAQ,CAKR,SACD,CAEA,yCACC,YACD,CCdA,oCDoBE,wCAMC,WAAY,CALZ,UAAW,CAEX,iBAAkB,CAClB,UAAW,CACX,QAAS,CAHT,OAAQ,CAKR,SACD,CAEA,8CACC,YACD,CC9BF,CCAD,qDACC,kDACD,CAEA,uBACC,+BAoED,CAlEC,6BAEC,YACD,CASC,uGACC,sCACD,CDvBD,oCCMD,uBAqBE,SAAU,CACV,oCA+CF,CA7CE,8CACC,wDAYD,CAVC,4HAEC,WAAY,CACZ,UACD,CAGA,4EACC,kBACD,CAKA,0DACC,kDACD,CAGD,iGAIC,eAAgB,CADhB,kCAAmC,CADnC,kCAmBD,CAfC,yHACC,gDACD,CC5DF,0ODmEG,aCjEH,CDmEG,+IACC,kDACD,CDrEH\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck-vertical-form .ck-button {\\n\\t&::after {\\n\\t\\tcontent: \\\"\\\";\\n\\t\\twidth: 0;\\n\\t\\tposition: absolute;\\n\\t\\tright: -1px;\\n\\t\\ttop: -1px;\\n\\t\\tbottom: -1px;\\n\\t\\tz-index: 1;\\n\\t}\\n\\n\\t&:focus::after {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n.ck.ck-responsive-form {\\n\\t@mixin ck-media-phone {\\n\\t\\t& .ck-button {\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\t\\twidth: 0;\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tright: -1px;\\n\\t\\t\\t\\ttop: -1px;\\n\\t\\t\\t\\tbottom: -1px;\\n\\t\\t\\t\\tz-index: 1;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:focus::after {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-media-phone {\\n\\t@media screen and (max-width: 600px) {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck-vertical-form > .ck-button:nth-last-child(2)::after {\\n\\tborder-right: 1px solid var(--ck-color-base-border);\\n}\\n\\n.ck.ck-responsive-form {\\n\\tpadding: var(--ck-spacing-large);\\n\\n\\t&:focus {\\n\\t\\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t@mixin ck-dir ltr {\\n\\t\\t& > :not(:first-child) {\\n\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-dir rtl {\\n\\t\\t& > :not(:last-child) {\\n\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\tpadding: 0;\\n\\t\\twidth: calc(.8 * var(--ck-input-width));\\n\\n\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) 0;\\n\\n\\t\\t\\t& .ck-input-text,\\n\\t\\t\\t& .ck-input-number {\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\n\\t\\t\\t/* Let the long error messages wrap in the narrow form. */\\n\\t\\t\\t& .ck-labeled-field-view__error {\\n\\t\\t\\t\\twhite-space: normal;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* Styles for two last buttons in the form (save&cancel, edit&unlink, etc.). */\\n\\t\\t& > .ck-button:nth-last-child(2) {\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tborder-right: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t& > .ck-button:nth-last-child(1),\\n\\t\\t& > .ck-button:nth-last-child(2) {\\n\\t\\t\\tpadding: var(--ck-spacing-standard);\\n\\t\\t\\tmargin-top: var(--ck-spacing-large);\\n\\t\\t\\tborder-radius: 0;\\n\\n\\t\\t\\t&:not(:focus) {\\n\\t\\t\\t\\tborder-top: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tmargin-left: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tmargin-left: 0;\\n\\n\\t\\t\\t\\t&:last-of-type {\\n\\t\\t\\t\\t\\tborder-right: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-dialog-overlay{bottom:0;left:0;overscroll-behavior:none;position:fixed;right:0;top:0;user-select:none}.ck.ck-dialog-overlay.ck-dialog-overlay__transparent{animation:none;background:none;pointer-events:none}.ck.ck-dialog{overscroll-behavior:none;position:absolute;width:fit-content}.ck.ck-dialog .ck.ck-form__header{flex-shrink:0}.ck.ck-dialog:not(.ck-dialog_modal) .ck.ck-form__header .ck-form__header__label{cursor:grab}.ck.ck-dialog-overlay.ck-dialog-overlay__transparent .ck.ck-dialog{pointer-events:all}:root{--ck-dialog-overlay-background-color:rgba(0,0,0,.5);--ck-dialog-drop-shadow:0px 0px 6px 2px rgba(0,0,0,.15);--ck-dialog-max-width:100vw;--ck-dialog-max-height:90vh;--ck-color-dialog-background:var(--ck-color-base-background);--ck-color-dialog-form-header-border:var(--ck-color-base-border)}.ck.ck-dialog-overlay{animation:ck-dialog-fade-in .3s;background:var(--ck-dialog-overlay-background-color);z-index:var(--ck-z-dialog)}.ck.ck-dialog{border-radius:0;--ck-drop-shadow:var(--ck-dialog-drop-shadow);background:var(--ck-color-dialog-background);border:1px solid var(--ck-color-base-border);max-height:var(--ck-dialog-max-height);max-width:var(--ck-dialog-max-width);overscroll-behavior:contain}.ck-rounded-corners .ck.ck-dialog,.ck.ck-dialog.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dialog{box-shadow:var(--ck-drop-shadow),0 0}.ck.ck-dialog .ck.ck-form__header{border-bottom:1px solid var(--ck-color-dialog-form-header-border)}.ck-dialog-scroll-locked{overflow:hidden}@keyframes ck-dialog-fade-in{0%{background:transparent}to{background:var(--ck-dialog-overlay-background-color)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dialog/dialog.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dialog/dialog.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAKA,sBAKC,QAAS,CACT,MAAO,CAJP,wBAAyB,CAEzB,cAAe,CAGf,OAAQ,CACR,KAAM,CAPN,gBAcD,CALC,qDAEC,cAAe,CACf,eAAgB,CAFhB,mBAGD,CAGD,cACC,wBAAyB,CAEzB,iBAAkB,CADlB,iBAiBD,CAdC,kCACC,aACD,CAIC,gFACC,WACD,CAGD,mEACC,kBACD,CC/BD,MACC,mDAA2D,CAC3D,uDAA8D,CAC9D,2BAA4B,CAC5B,2BAA4B,CAC5B,4DAA6D,CAC7D,gEACD,CAEA,sBACC,+BAAgC,CAChC,oDAAqD,CACrD,0BACD,CAEA,cCbC,eAAgB,CDiBhB,6CAA8C,CAE9C,4CAA6C,CAG7C,4CAA6C,CAF7C,sCAAuC,CACvC,oCAAqC,CAErC,2BAKD,CC1BC,mEAEC,qCAED,CDOD,cEfC,oCF8BD,CAHC,kCACC,iEACD,CAGD,yBACC,eACD,CAEA,6BACC,GACC,sBACD,CAEA,GACC,oDACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-dialog-overlay {\\n\\tuser-select: none;\\n\\toverscroll-behavior: none;\\n\\n\\tposition: fixed;\\n\\tbottom: 0;\\n\\tleft: 0;\\n\\tright: 0;\\n\\ttop: 0;\\n\\n\\t&.ck-dialog-overlay__transparent {\\n\\t\\tpointer-events: none;\\n\\t\\tanimation: none;\\n\\t\\tbackground: none;\\n\\t}\\n}\\n\\n.ck.ck-dialog {\\n\\toverscroll-behavior: none;\\n\\twidth: fit-content;\\n\\tposition: absolute;\\n\\n\\t& .ck.ck-form__header {\\n\\t\\tflex-shrink: 0;\\n\\t}\\n\\n\\t/* Modals should not be draggable. */\\n\\t&:not(.ck-dialog_modal) {\\n\\t\\t& .ck.ck-form__header .ck-form__header__label {\\n\\t\\t\\tcursor: grab;\\n\\t\\t}\\n\\t}\\n\\n\\t.ck.ck-dialog-overlay.ck-dialog-overlay__transparent & {\\n\\t\\tpointer-events: all;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n:root {\\n\\t--ck-dialog-overlay-background-color: hsla( 0, 0%, 0%, .5 );\\n\\t--ck-dialog-drop-shadow: 0px 0px 6px 2px hsl(0deg 0% 0% / 15%);\\n\\t--ck-dialog-max-width: 100vw;\\n\\t--ck-dialog-max-height: 90vh;\\n\\t--ck-color-dialog-background: var(--ck-color-base-background);\\n\\t--ck-color-dialog-form-header-border: var(--ck-color-base-border);\\n}\\n\\n.ck.ck-dialog-overlay {\\n\\tanimation: ck-dialog-fade-in .3s;\\n\\tbackground: var(--ck-dialog-overlay-background-color);\\n\\tz-index: var(--ck-z-dialog);\\n}\\n\\n.ck.ck-dialog {\\n\\t@mixin ck-rounded-corners;\\n\\t@mixin ck-drop-shadow;\\n\\n\\t--ck-drop-shadow: var(--ck-dialog-drop-shadow);\\n\\n\\tbackground: var(--ck-color-dialog-background);\\n\\tmax-height: var(--ck-dialog-max-height);\\n\\tmax-width: var(--ck-dialog-max-width);\\n\\tborder: 1px solid var(--ck-color-base-border);\\n\\toverscroll-behavior: contain;\\n\\n\\t& .ck.ck-form__header {\\n\\t\\tborder-bottom: 1px solid var(--ck-color-dialog-form-header-border);\\n\\t}\\n}\\n\\n.ck-dialog-scroll-locked {\\n\\toverflow: hidden;\\n}\\n\\n@keyframes ck-dialog-fade-in {\\n\\t0% {\\n\\t\\tbackground: hsla( 0, 0%, 0%, 0 );\\n\\t}\\n\\n\\t100% {\\n\\t\\tbackground: var(--ck-dialog-overlay-background-color);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-editor__editable img.image_placeholder{background-size:100% 100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageplaceholder.css\"],\"names\":[],\"mappings\":\"AAMC,8CACC,yBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-editor__editable {\\n\\t& img.image_placeholder {\\n\\t\\tbackground-size: 100% 100%;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-button.ck-dropdown-menu-list__nested-menu__item__button{border-radius:0}.ck-button.ck-dropdown-menu-list__nested-menu__item__button>.ck-spinner-container,.ck-button.ck-dropdown-menu-list__nested-menu__item__button>.ck-spinner-container .ck-spinner{--ck-toolbar-spinner-size:20px}.ck-button.ck-dropdown-menu-list__nested-menu__item__button>.ck-spinner-container{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}.ck-button.ck-dropdown-menu-list__nested-menu__item__button:focus{border-color:transparent;box-shadow:none}.ck-button.ck-dropdown-menu-list__nested-menu__item__button:focus:not(.ck-on){background:var(--ck-color-button-default-hover-background)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/menu/dropdownmenulistitembutton.css\"],\"names\":[],\"mappings\":\"AAQA,4DACC,eA0BD,CAxBC,gLAGC,8BACD,CAEA,kFAEC,4CAA+C,CAC/C,oCACD,CAMA,kEACC,wBAAyB,CACzB,eAKD,CAHC,8EACC,0DACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/*\\n * List item buttons.\\n */\\n.ck-button.ck-dropdown-menu-list__nested-menu__item__button {\\n\\tborder-radius: 0;\\n\\n\\t& > .ck-spinner-container,\\n\\t& > .ck-spinner-container .ck-spinner {\\n\\t\\t/* These styles correspond to .ck-icon so that the spinner seamlessly replaces the icon. */\\n\\t\\t--ck-toolbar-spinner-size: 20px;\\n\\t}\\n\\n\\t& > .ck-spinner-container {\\n\\t\\t/* These margins are the same as for .ck-icon. */\\n\\t\\tmargin-left: calc(-1 * var(--ck-spacing-small));\\n\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t}\\n\\n\\t/*\\n\\t * Hovered items automatically get focused. Default focus styles look odd\\n\\t * while moving across a huge list of items so let's get rid of them\\n\\t */\\n\\t&:focus {\\n\\t\\tborder-color: transparent;\\n\\t\\tbox-shadow: none;\\n\\n\\t\\t&:not(.ck-on) {\\n\\t\\t\\tbackground: var(--ck-color-button-default-hover-background);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck .ck-placeholder,.ck.ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{content:attr(data-placeholder);left:0;pointer-events:none;position:absolute;right:0}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-reset_all .ck-placeholder{position:relative}@media (forced-colors:active){.ck .ck-placeholder,.ck.ck-placeholder{forced-color-adjust:preserve-parent-color}}.ck .ck-placeholder:before,.ck.ck-placeholder:before{cursor:text}@media (forced-colors:none){.ck .ck-placeholder:before,.ck.ck-placeholder:before{color:var(--ck-color-engine-placeholder-text)}}@media (forced-colors:active){.ck .ck-placeholder:before,.ck.ck-placeholder:before{font-style:italic;margin-left:1px}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-engine/theme/placeholder.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-engine/placeholder.css\"],\"names\":[],\"mappings\":\"AAMA,uCAEC,iBAWD,CATC,qDAIC,8BAA+B,CAF/B,MAAO,CAKP,mBAAoB,CANpB,iBAAkB,CAElB,OAKD,CAKA,wCACC,YACD,CAQD,iCACC,iBACD,CC7BC,8BACC,uCCOA,yCDLA,CACD,CCOA,qDACC,WAmBD,CDvBA,4BACC,qDCMC,6CDJD,CACD,CAZA,8BACC,qDCsBC,iBAAkB,CAMlB,eD1BD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/* See ckeditor/ckeditor5#936. */\\n.ck.ck-placeholder,\\n.ck .ck-placeholder {\\n\\tposition: relative;\\n\\n\\t&::before {\\n\\t\\tposition: absolute;\\n\\t\\tleft: 0;\\n\\t\\tright: 0;\\n\\t\\tcontent: attr(data-placeholder);\\n\\n\\t\\t/* See ckeditor/ckeditor5#469. */\\n\\t\\tpointer-events: none;\\n\\t}\\n}\\n\\n/* See ckeditor/ckeditor5#1987. */\\n.ck.ck-read-only .ck-placeholder {\\n\\t&::before {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\\n/*\\n * Rules for the `ck-placeholder` are loaded before the rules for `ck-reset_all` in the base CKEditor 5 DLL build.\\n * This fix overwrites the incorrectly set `position: static` from `ck-reset_all`.\\n * See https://github.com/ckeditor/ckeditor5/issues/11418.\\n */\\n.ck.ck-reset_all .ck-placeholder {\\n\\tposition: relative;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-media-forced-colors {\\n\\t@media (forced-colors: active) {\\n\\t\\t& {\\n\\t\\t\\t@mixin-content;\\n\\t\\t}\\n\\t}\\n}\\n\\n@define-mixin ck-media-default-colors {\\n\\t@media (forced-colors: none) {\\n\\t\\t& {\\n\\t\\t\\t@mixin-content;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css\\\";\\n\\n/* See ckeditor/ckeditor5#936. */\\n.ck.ck-placeholder, .ck .ck-placeholder {\\n\\t@mixin ck-media-forced-colors {\\n\\t\\t/*\\n\\t\\t * This is needed for Edge on Windows to use the right color for the placeholder content (::before).\\n\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/14907.\\n\\t\\t */\\n\\t\\tforced-color-adjust: preserve-parent-color;\\n\\t}\\n\\n\\t&::before {\\n\\t\\tcursor: text;\\n\\n\\t\\t@mixin ck-media-default-colors {\\n\\t\\t\\tcolor: var(--ck-color-engine-placeholder-text);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-media-forced-colors {\\n\\t\\t\\t/*\\n\\t\\t\\t * In the high contrast mode there is no telling between regular and placeholder text. Using\\n\\t\\t\\t * italic text to address that issue. See https://github.com/ckeditor/ckeditor5/issues/14907.\\n\\t\\t\\t */\\n\\t\\t\\tfont-style: italic;\\n\\n\\t\\t\\t/*\\n\\t\\t\\t * Without this margin, the caret will not show up and blink when the user puts the selection\\n\\t\\t\\t * in the placeholder (Edge on Windows). See https://github.com/ckeditor/ckeditor5/issues/14907.\\n\\t\\t\\t */\\n\\t\\t\\tmargin-left: 1px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck .ck-upload-placeholder-loader{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0}.ck .ck-upload-placeholder-loader:before{content:\"\";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px;--ck-upload-placeholder-image-aspect-ratio:2.8}.ck .ck-image-upload-placeholder{margin:0;width:100%}.ck .ck-image-upload-placeholder.image-inline{width:calc(var(--ck-upload-placeholder-loader-size)*2*var(--ck-upload-placeholder-image-aspect-ratio))}.ck .ck-image-upload-placeholder img{aspect-ratio:var(--ck-upload-placeholder-image-aspect-ratio)}.ck .ck-upload-placeholder-loader{height:100%;width:100%}.ck .ck-upload-placeholder-loader:before{animation:ck-upload-placeholder-loader 1s linear infinite;border-radius:50%;border-right:2px solid transparent;border-top:3px solid var(--ck-color-upload-placeholder-loader);height:var(--ck-upload-placeholder-loader-size);width:var(--ck-upload-placeholder-loader-size)}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadloader.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadloader.css\"],\"names\":[],\"mappings\":\"AAKA,kCAGC,kBAAmB,CADnB,YAAa,CAEb,sBAAuB,CAEvB,MAAO,CALP,iBAAkB,CAIlB,KAOD,CAJC,yCACC,UAAW,CACX,iBACD,CCXD,MACC,4CAAqD,CACrD,wCAAyC,CACzC,8CACD,CAEA,iCAGC,QAAS,CADT,UAgBD,CAbC,8CACC,sGACD,CAEA,qCAOC,4DACD,CAGD,kCAEC,WAAY,CADZ,UAWD,CARC,yCAMC,yDAA0D,CAH1D,iBAAkB,CAElB,kCAAmC,CADnC,8DAA+D,CAF/D,+CAAgD,CADhD,8CAMD,CAGD,wCACC,GACC,uBACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck .ck-upload-placeholder-loader {\\n\\tposition: absolute;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\ttop: 0;\\n\\tleft: 0;\\n\\n\\t&::before {\\n\\t\\tcontent: '';\\n\\t\\tposition: relative;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-color-upload-placeholder-loader: hsl(0, 0%, 70%);\\n\\t--ck-upload-placeholder-loader-size: 32px;\\n\\t--ck-upload-placeholder-image-aspect-ratio: 2.8;\\n}\\n\\n.ck .ck-image-upload-placeholder {\\n\\t/* We need to control the full width of the SVG gray background. */\\n\\twidth: 100%;\\n\\tmargin: 0;\\n\\n\\t&.image-inline {\\n\\t\\twidth: calc( 2 * var(--ck-upload-placeholder-loader-size) * var(--ck-upload-placeholder-image-aspect-ratio) );\\n\\t}\\n\\n\\t& img {\\n\\t\\t/*\\n\\t\\t * This is an arbitrary aspect for a 1x1 px GIF to display to the user. Not too tall, not too short.\\n\\t\\t * There's nothing special about this number except that it should make the image placeholder look like\\n\\t\\t * a real image during this short period after the upload started and before the image was read from the\\n\\t\\t * file system (and a rich preview was loaded).\\n\\t\\t */\\n\\t\\taspect-ratio: var(--ck-upload-placeholder-image-aspect-ratio);\\n\\t}\\n}\\n\\n.ck .ck-upload-placeholder-loader {\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\n\\t&::before {\\n\\t\\twidth: var(--ck-upload-placeholder-loader-size);\\n\\t\\theight: var(--ck-upload-placeholder-loader-size);\\n\\t\\tborder-radius: 50%;\\n\\t\\tborder-top: 3px solid var(--ck-color-upload-placeholder-loader);\\n\\t\\tborder-right: 2px solid transparent;\\n\\t\\tanimation: ck-upload-placeholder-loader 1s linear infinite;\\n\\t}\\n}\\n\\n@keyframes ck-upload-placeholder-loader {\\n\\tto {\\n\\t\\ttransform: rotate( 360deg );\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-image-custom-resize-form{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-image-custom-resize-form .ck-labeled-field-view{display:inline-block}.ck.ck-image-custom-resize-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-image-custom-resize-form{flex-wrap:wrap}.ck.ck-image-custom-resize-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-image-custom-resize-form .ck-button{flex-basis:50%}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imagecustomresizeform.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\"],\"names\":[],\"mappings\":\"AAOA,gCAIC,sBAAuB,CAHvB,YAAa,CACb,kBAAmB,CACnB,gBAsBD,CAnBC,uDACC,oBACD,CAEA,0CACC,YACD,CCbA,oCDCD,gCAeE,cAUF,CARE,uDACC,eACD,CAEA,2CACC,cACD,CCtBD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck.ck-image-custom-resize-form {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\talign-items: flex-start;\\n\\n\\t& .ck-labeled-field-view {\\n\\t\\tdisplay: inline-block;\\n\\t}\\n\\n\\t& .ck-label {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\tflex-wrap: wrap;\\n\\n\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\tflex-basis: 100%;\\n\\t\\t}\\n\\n\\t\\t& .ck-button {\\n\\t\\t\\tflex-basis: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-media-phone {\\n\\t@media screen and (max-width: 600px) {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-menu-bar-menu-item-min-width:18em}.ck.ck-menu-bar__menu .ck.ck-menu-bar__menu__item{min-width:var(--ck-menu-bar-menu-item-min-width)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenulistitem.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,sCACD,CAEA,kDACC,gDACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-menu-bar-menu-item-min-width: 18em;\\n}\\n\\n.ck.ck-menu-bar__menu .ck.ck-menu-bar__menu__item {\\n\\tmin-width: var(--ck-menu-bar-menu-item-min-width);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `: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);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);color:var(--ck-color-resizer-tooltip-text);display:block;font-size:var(--ck-font-size-tiny);height:var(--ck-resizer-tooltip-height);line-height:var(--ck-resizer-tooltip-height);padding:0 var(--ck-spacing-small)}.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{left:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{right:var(--ck-resizer-tooltip-offset);top: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{left:50%;top:calc(var(--ck-resizer-tooltip-height)*-1);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-color:transparent;outline-style:solid;outline-width:var(--ck-widget-outline-thickness);transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}@media (prefers-reduced-motion:reduce){.ck .ck-widget{transition:none}}.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{box-shadow:var(--ck-inner-shadow),0 0}@media (forced-colors:none){.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{background-color:var(--ck-color-widget-editable-focus-background)}}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused:not(td,th),.ck .ck-editor__nested-editable:focus:not(td,th){border:var(--ck-focus-ring);outline:none}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{background-color:transparent;border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;box-sizing:border-box;left:calc(0px - var(--ck-widget-outline-thickness));opacity:0;padding:4px;top:0;transform:translateY(-100%);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)}@media (prefers-reduced-motion:reduce){.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{transition:none}}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{color:var(--ck-color-widget-drag-handler-icon-color);height:var(--ck-widget-handler-icon-size);width:var(--ck-widget-handler-icon-size)}.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)}@media (prefers-reduced-motion:reduce){.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{transition:none}}.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{background-color:var(--ck-color-widget-hover-border);opacity:1}.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{background-color:var(--ck-color-focus-border);opacity:1}.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:hover>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle:hover,.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{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-widget/theme/widget.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widget.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,+CAAgD,CAChD,6CAAsD,CACtD,uCAAgD,CAEhD,kDAAmD,CACnD,gCAAiC,CACjC,kEACD,CAOA,8DAEC,iBAqBD,CAnBC,4EACC,iBAOD,CALC,qFAGC,aACD,CASD,iLACC,kBACD,CAGD,kBACC,qDAAsD,CAEtD,qDAAsD,CACtD,6CAA8C,CAF9C,0CAA2C,CAI3C,aAAc,CADd,kCAAmC,CAGnC,uCAAwC,CACxC,4CAA6C,CAF7C,iCAsCD,CAlCC,8NAKC,iBACD,CAEA,0CAEC,qCAAsC,CADtC,oCAED,CAEA,2CAEC,sCAAuC,CADvC,oCAED,CAEA,8CACC,uCAAwC,CACxC,sCACD,CAEA,6CACC,uCAAwC,CACxC,qCACD,CAGA,8CAEC,QAAS,CADT,6CAAgD,CAEhD,yBACD,CChFD,MACC,iCAAkC,CAClC,kCAAmC,CACnC,4CAA6C,CAC7C,wCAAyC,CAEzC,wCAAiD,CACjD,sCAAkD,CAClD,2EAA4E,CAC5E,yEACD,CAEA,eAGC,yBAA0B,CAD1B,mBAAoB,CADpB,gDAAiD,CAGjD,6GAcD,CAZC,uCAND,eAOE,eAWF,CAVC,CAEA,0EAEC,6EACD,CAEA,qBACC,iDACD,CAGD,gCACC,4BAoBD,CAhBC,yGCrCA,qCDoDA,CE/CA,4BACC,yGFmCC,iEEjCD,CACD,CFwCC,+HG/CD,2BAA2B,CAD3B,YHkDC,CAKD,4EAKC,4BAA6B,CAa7B,iEAAkE,CAhBlE,qBAAsB,CAoBtB,mDAAoD,CAhBpD,SAAU,CALV,WAAY,CAsBZ,KAAM,CAFN,2BAA4B,CAT5B,6SAwCD,CA3BC,uCAzBD,4EA0BE,eA0BF,CAzBC,CAEA,qFAIC,oDAAqD,CADrD,yCAA0C,CAD1C,wCAeD,CAVC,kHACC,SAAU,CAGV,+DAKD,CAHC,uCAND,kHAOE,eAEF,CADC,CAKF,wHACC,SACD,CAID,kFAEC,oDAAqD,CADrD,SAED,CAKC,oMAEC,6CAA8C,CAD9C,SAOD,CAHC,gRACC,SACD,CAOH,qFACC,SAAU,CACV,oDACD,CAGA,gDAEC,eAkBD,CAhBC,yEAOC,iCACD,CAGC,gOAEC,gDACD,CAOD,wIAEC,mDAQD,CALE,ghBAEC,gDACD,CAKH,yKAOC,yDACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-color-resizer: var(--ck-color-focus-border);\\n\\t--ck-color-resizer-tooltip-background: hsl(0, 0%, 15%);\\n\\t--ck-color-resizer-tooltip-text: hsl(0, 0%, 95%);\\n\\n\\t--ck-resizer-border-radius: var(--ck-border-radius);\\n\\t--ck-resizer-tooltip-offset: 10px;\\n\\t--ck-resizer-tooltip-height: calc(var(--ck-spacing-small) * 2 + 10px);\\n}\\n\\n.ck .ck-widget {\\n\\t/* This is neccessary for type around UI to be positioned properly. */\\n\\tposition: relative;\\n}\\n\\n.ck .ck-widget.ck-widget_with-selection-handle {\\n\\t/* Make the widget wrapper a relative positioning container for the drag handle. */\\n\\tposition: relative;\\n\\n\\t& .ck-widget__selection-handle {\\n\\t\\tposition: absolute;\\n\\n\\t\\t& .ck-icon {\\n\\t\\t\\t/* Make sure the icon in not a subject to font-size or line-height to avoid\\n\\t\\t\\tunnecessary spacing around it. */\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Show the selection handle on mouse hover over the widget, but not for nested widgets. */\\n\\t&:hover > .ck-widget__selection-handle {\\n\\t\\tvisibility: visible;\\n\\t}\\n\\n\\t/* Show the selection handle when the widget is selected, but not for nested widgets. */\\n\\t&.ck-widget_selected > .ck-widget__selection-handle {\\n\\t\\tvisibility: visible;\\n\\t}\\n}\\n\\n.ck .ck-size-view {\\n\\tbackground: var(--ck-color-resizer-tooltip-background);\\n\\tcolor: var(--ck-color-resizer-tooltip-text);\\n\\tborder: 1px solid var(--ck-color-resizer-tooltip-text);\\n\\tborder-radius: var(--ck-resizer-border-radius);\\n\\tfont-size: var(--ck-font-size-tiny);\\n\\tdisplay: block;\\n\\tpadding: 0 var(--ck-spacing-small);\\n\\theight: var(--ck-resizer-tooltip-height);\\n\\tline-height: var(--ck-resizer-tooltip-height);\\n\\n\\t&.ck-orientation-top-left,\\n\\t&.ck-orientation-top-right,\\n\\t&.ck-orientation-bottom-right,\\n\\t&.ck-orientation-bottom-left,\\n\\t&.ck-orientation-above-center {\\n\\t\\tposition: absolute;\\n\\t}\\n\\n\\t&.ck-orientation-top-left {\\n\\t\\ttop: var(--ck-resizer-tooltip-offset);\\n\\t\\tleft: var(--ck-resizer-tooltip-offset);\\n\\t}\\n\\n\\t&.ck-orientation-top-right {\\n\\t\\ttop: var(--ck-resizer-tooltip-offset);\\n\\t\\tright: var(--ck-resizer-tooltip-offset);\\n\\t}\\n\\n\\t&.ck-orientation-bottom-right {\\n\\t\\tbottom: var(--ck-resizer-tooltip-offset);\\n\\t\\tright: var(--ck-resizer-tooltip-offset);\\n\\t}\\n\\n\\t&.ck-orientation-bottom-left {\\n\\t\\tbottom: var(--ck-resizer-tooltip-offset);\\n\\t\\tleft: var(--ck-resizer-tooltip-offset);\\n\\t}\\n\\n\\t/* Class applied if the widget is too small to contain the size label */\\n\\t&.ck-orientation-above-center {\\n\\t\\ttop: calc(var(--ck-resizer-tooltip-height) * -1);\\n\\t\\tleft: 50%;\\n\\t\\ttransform: translate(-50%);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../mixins/_focus.css\\\";\\n@import \\\"../mixins/_shadow.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css\\\";\\n\\n:root {\\n\\t--ck-widget-outline-thickness: 3px;\\n\\t--ck-widget-handler-icon-size: 16px;\\n\\t--ck-widget-handler-animation-duration: 200ms;\\n\\t--ck-widget-handler-animation-curve: ease;\\n\\n\\t--ck-color-widget-blurred-border: hsl(0, 0%, 87%);\\n\\t--ck-color-widget-hover-border: hsl(43, 100%, 62%);\\n\\t--ck-color-widget-editable-focus-background: var(--ck-color-base-background);\\n\\t--ck-color-widget-drag-handler-icon-color: var(--ck-color-base-background);\\n}\\n\\n.ck .ck-widget {\\n\\toutline-width: var(--ck-widget-outline-thickness);\\n\\toutline-style: solid;\\n\\toutline-color: transparent;\\n\\ttransition: outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\\n\\n\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\ttransition: none;\\n\\t}\\n\\n\\t&.ck-widget_selected,\\n\\t&.ck-widget_selected:hover {\\n\\t\\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border);\\n\\t}\\n\\n\\t&:hover {\\n\\t\\toutline-color: var(--ck-color-widget-hover-border);\\n\\t}\\n}\\n\\n.ck .ck-editor__nested-editable {\\n\\tborder: 1px solid transparent;\\n\\n\\t/* The :focus style is applied before .ck-editor__nested-editable_focused class is rendered in the view.\\n\\tThese styles show a different border for a blink of an eye, so `:focus` need to have same styles applied. */\\n\\t&.ck-editor__nested-editable_focused,\\n\\t&:focus {\\n\\t\\t@mixin ck-box-shadow var(--ck-inner-shadow);\\n\\t\\t@mixin ck-media-default-colors {\\n\\t\\t\\tbackground-color: var(--ck-color-widget-editable-focus-background);\\n\\t\\t}\\n\\n\\t\\t/**\\n\\t\\t * Focus border should not be applied to table cells because it overrides the default table cell border color.\\n\\t\\t * In other words - in some scenarios, the part of the table cell border has focus color style, which is not expected behavior\\n\\t\\t * because it should be the same as the table cell border color.\\n\\t\\t */\\n\\t\\t&:not(td, th) {\\n\\t\\t\\t@mixin ck-focus-ring;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck .ck-widget.ck-widget_with-selection-handle {\\n\\t& .ck-widget__selection-handle {\\n\\t\\tpadding: 4px;\\n\\t\\tbox-sizing: border-box;\\n\\n\\t\\t/* Background and opacity will be animated as the handler shows up or the widget gets selected. */\\n\\t\\tbackground-color: transparent;\\n\\t\\topacity: 0;\\n\\n\\t\\t/* Transition:\\n\\t\\t * background-color for the .ck-widget_selected state change,\\n\\t\\t * visibility for hiding the handler,\\n\\t\\t * opacity for the proper look of the icon when the handler disappears. */\\n\\t\\ttransition:\\n\\t\\t\\tbackground-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\\n\\t\\t\\tvisibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\\n\\t\\t\\topacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\\n\\n\\t\\t/* Make only top corners round. */\\n\\t\\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\\n\\n\\t\\t/* Place the drag handler outside the widget wrapper. */\\n\\t\\ttransform: translateY(-100%);\\n\\t\\tleft: calc(0px - var(--ck-widget-outline-thickness));\\n\\t\\ttop: 0;\\n\\n\\t\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\t\\ttransition: none;\\n\\t\\t}\\n\\n\\t\\t& .ck-icon {\\n\\t\\t\\t/* Make sure the dimensions of the icon are independent of the fon-size of the content. */\\n\\t\\t\\twidth: var(--ck-widget-handler-icon-size);\\n\\t\\t\\theight: var(--ck-widget-handler-icon-size);\\n\\t\\t\\tcolor: var(--ck-color-widget-drag-handler-icon-color);\\n\\n\\t\\t\\t/* The \\\"selected\\\" part of the icon is invisible by default */\\n\\t\\t\\t& .ck-icon__selected-indicator {\\n\\t\\t\\t\\topacity: 0;\\n\\n\\t\\t\\t\\t/* Note: The animation is longer on purpose. Simply feels better. */\\n\\t\\t\\t\\ttransition: opacity 300ms var(--ck-widget-handler-animation-curve);\\n\\n\\t\\t\\t\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\t\\t\\t\\ttransition: none;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* Advertise using the look of the icon that once clicked the handler, the widget will be selected. */\\n\\t\\t&:hover .ck-icon .ck-icon__selected-indicator {\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Show the selection handler on mouse hover over the widget, but not for nested widgets. */\\n\\t&:hover > .ck-widget__selection-handle {\\n\\t\\topacity: 1;\\n\\t\\tbackground-color: var(--ck-color-widget-hover-border);\\n\\t}\\n\\n\\t/* Show the selection handler when the widget is selected, but not for nested widgets. */\\n\\t&.ck-widget_selected,\\n\\t&.ck-widget_selected:hover {\\n\\t\\t& > .ck-widget__selection-handle {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tbackground-color: var(--ck-color-focus-border);\\n\\n\\t\\t\\t/* When the widget is selected, notify the user using the proper look of the icon. */\\n\\t\\t\\t& .ck-icon .ck-icon__selected-indicator {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n/* In a RTL environment, align the selection handler to the right side of the widget */\\n/* stylelint-disable-next-line no-descending-specificity */\\n.ck[dir=\\\"rtl\\\"] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle {\\n\\tleft: auto;\\n\\tright: calc(0px - var(--ck-widget-outline-thickness));\\n}\\n\\n/* https://github.com/ckeditor/ckeditor5/issues/6415 */\\n.ck.ck-editor__editable.ck-read-only .ck-widget {\\n\\t/* Prevent the :hover outline from showing up because of the used outline-color transition. */\\n\\ttransition: none;\\n\\n\\t&:not(.ck-widget_selected) {\\n\\t\\t/* Disable visual effects of hover/active widget when CKEditor is in readOnly mode.\\n\\t\\t * See: https://github.com/ckeditor/ckeditor5/issues/1261\\n\\t\\t *\\n\\t\\t * Leave the unit because this custom property is used in calc() by other features.\\n\\t\\t * See: https://github.com/ckeditor/ckeditor5/issues/6775\\n\\t\\t */\\n\\t\\t--ck-widget-outline-thickness: 0px;\\n\\t}\\n\\n\\t&.ck-widget_with-selection-handle {\\n\\t\\t& .ck-widget__selection-handle,\\n\\t\\t& .ck-widget__selection-handle:hover {\\n\\t\\t\\tbackground: var(--ck-color-widget-blurred-border);\\n\\t\\t}\\n\\t}\\n}\\n\\n/* Style the widget when it's selected but the editable it belongs to lost focus. */\\n/* stylelint-disable-next-line no-descending-specificity */\\n.ck.ck-editor__editable.ck-blurred .ck-widget {\\n\\t&.ck-widget_selected,\\n\\t&.ck-widget_selected:hover {\\n\\t\\toutline-color: var(--ck-color-widget-blurred-border);\\n\\n\\t\\t&.ck-widget_with-selection-handle {\\n\\t\\t\\t& > .ck-widget__selection-handle,\\n\\t\\t\\t& > .ck-widget__selection-handle:hover {\\n\\t\\t\\t\\tbackground: var(--ck-color-widget-blurred-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-editor__editable > .ck-widget.ck-widget_with-selection-handle:first-child,\\n.ck.ck-editor__editable blockquote > .ck-widget.ck-widget_with-selection-handle:first-child {\\n\\t/* Do not crop selection handler if a widget is a first-child in the blockquote or in the root editable.\\n\\tIn fact, anything with overflow: hidden.\\n\\thttps://github.com/ckeditor/ckeditor5-block-quote/issues/28\\n\\thttps://github.com/ckeditor/ckeditor5-widget/issues/44\\n\\thttps://github.com/ckeditor/ckeditor5-widget/issues/66 */\\n\\tmargin-top: calc(1em + var(--ck-widget-handler-icon-size));\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-media-forced-colors {\\n\\t@media (forced-colors: active) {\\n\\t\\t& {\\n\\t\\t\\t@mixin-content;\\n\\t\\t}\\n\\t}\\n}\\n\\n@define-mixin ck-media-default-colors {\\n\\t@media (forced-colors: none) {\\n\\t\\t& {\\n\\t\\t\\t@mixin-content;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A visual style of focused element's border.\\n */\\n@define-mixin ck-focus-ring {\\n\\t/* Disable native outline. */\\n\\toutline: none;\\n\\tborder: var(--ck-focus-ring)\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-image-upload-complete-icon{border-radius:50%;display:block;position:absolute;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);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{animation-delay:0ms,3s;animation-duration:.5s,.5s;animation-fill-mode:forwards,forwards;animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;background:var(--ck-color-image-upload-icon-background);font-size:calc(1px*var(--ck-image-upload-icon-size));height:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size));opacity:0;overflow:hidden;width:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size))}.ck-image-upload-complete-icon:after{animation-delay:.5s;animation-duration:.5s;animation-fill-mode:forwards;animation-name:ck-upload-complete-icon-check;border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);box-sizing:border-box;height:0;left:25%;opacity:0;top:50%;transform:scaleX(-1) rotate(135deg);transform-origin:left top;width:0}@media (prefers-reduced-motion:reduce){.ck-image-upload-complete-icon{animation-duration:0ms}.ck-image-upload-complete-icon:after{animation:none;height:.45em;opacity:1;width:.3em}}@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%{height:0;opacity:1;width:0}33%{height:0;width:.3em}to{height:.45em;opacity:1;width:.3em}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadicon.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadicon.css\"],\"names\":[],\"mappings\":\"AAKA,+BAUC,iBAAkB,CATlB,aAAc,CACd,iBAAkB,CAOlB,sCAAwC,CADxC,oCAAsC,CAGtC,SAMD,CAJC,qCACC,UAAW,CACX,iBACD,CChBD,MACC,iCAA8C,CAC9C,+CAA4D,CAG5D,8BAA+B,CAC/B,gCAAiC,CACjC,4DACD,CAEA,+BAWC,sBAA4B,CAN5B,0BAAgC,CADhC,qCAAuC,CADvC,wEAA0E,CAD1E,uDAAwD,CAMxD,oDAAuD,CAWvD,oFAAuF,CAlBvF,SAAU,CAgBV,eAAgB,CAChB,mFAqCD,CAjCC,qCAgBC,mBAAsB,CADtB,sBAAyB,CAEzB,4BAA6B,CAH7B,4CAA6C,CAF7C,sFAAuF,CADvF,oFAAqF,CASrF,qBAAsB,CAdtB,QAAS,CAJT,QAAS,CAGT,SAAU,CADV,OAAQ,CAKR,mCAAoC,CACpC,yBAA0B,CAH1B,OAcD,CAEA,uCA7CD,+BA8CE,sBASF,CAPE,qCACC,cAAe,CAGf,YAAc,CAFd,SAAU,CACV,UAED,CACD,CAGD,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,wCACC,GACC,SACD,CAEA,GACC,SACD,CACD,CAEA,yCACC,GAGC,QAAS,CAFT,SAAU,CACV,OAED,CACA,IAEC,QAAS,CADT,UAED,CACA,GAGC,YAAc,CAFd,SAAU,CACV,UAED,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck-image-upload-complete-icon {\\n\\tdisplay: block;\\n\\tposition: absolute;\\n\\n\\t/*\\n\\t * Smaller images should have the icon closer to the border.\\n\\t * Match the icon position with the linked image indicator brought by the link image feature.\\n\\t */\\n\\ttop: min(var(--ck-spacing-medium), 6%);\\n\\tright: min(var(--ck-spacing-medium), 6%);\\n\\tborder-radius: 50%;\\n\\tz-index: 1;\\n\\n\\t&::after {\\n\\t\\tcontent: \\\"\\\";\\n\\t\\tposition: absolute;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-color-image-upload-icon: hsl(0, 0%, 100%);\\n\\t--ck-color-image-upload-icon-background: hsl(120, 100%, 27%);\\n\\n\\t/* Match the icon size with the linked image indicator brought by the link image feature. */\\n\\t--ck-image-upload-icon-size: 20;\\n\\t--ck-image-upload-icon-width: 2px;\\n\\t--ck-image-upload-icon-is-visible: clamp(0px, 100% - 50px, 1px);\\n}\\n\\n.ck-image-upload-complete-icon {\\n\\topacity: 0;\\n\\tbackground: var(--ck-color-image-upload-icon-background);\\n\\tanimation-name: ck-upload-complete-icon-show, ck-upload-complete-icon-hide;\\n\\tanimation-fill-mode: forwards, forwards;\\n\\tanimation-duration: 500ms, 500ms;\\n\\n\\t/* To make animation scalable. */\\n\\tfont-size: calc(1px * var(--ck-image-upload-icon-size));\\n\\n\\t/* Hide completed upload icon after 3 seconds. */\\n\\tanimation-delay: 0ms, 3000ms;\\n\\n\\t/*\\n\\t * Use CSS math to simulate container queries.\\n\\t * https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\\n\\t */\\n\\toverflow: hidden;\\n\\twidth: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\\n\\theight: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\\n\\n\\t/* This is check icon element made from border-width mixed with animations. */\\n\\t&::after {\\n\\t\\t/* Because of border transformation we need to \\\"hard code\\\" left position. */\\n\\t\\tleft: 25%;\\n\\n\\t\\ttop: 50%;\\n\\t\\topacity: 0;\\n\\t\\theight: 0;\\n\\t\\twidth: 0;\\n\\n\\t\\ttransform: scaleX(-1) rotate(135deg);\\n\\t\\ttransform-origin: left top;\\n\\t\\tborder-top: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\\n\\t\\tborder-right: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\\n\\n\\t\\tanimation-name: ck-upload-complete-icon-check;\\n\\t\\tanimation-duration: 500ms;\\n\\t\\tanimation-delay: 500ms;\\n\\t\\tanimation-fill-mode: forwards;\\n\\n\\t\\t/* #1095. While reset is not providing proper box-sizing for pseudoelements, we need to handle it. */\\n\\t\\tbox-sizing: border-box;\\n\\t}\\n\\n\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\tanimation-duration: 0ms;\\n\\n\\t\\t&::after {\\n\\t\\t\\tanimation: none;\\n\\t\\t\\topacity: 1;\\n\\t\\t\\twidth: 0.3em;\\n\\t\\t\\theight: 0.45em;\\n\\t\\t}\\n\\t}\\n}\\n\\n@keyframes ck-upload-complete-icon-show {\\n\\tfrom {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\tto {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n@keyframes ck-upload-complete-icon-hide {\\n\\tfrom {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\tto {\\n\\t\\topacity: 0;\\n\\t}\\n}\\n\\n@keyframes ck-upload-complete-icon-check {\\n\\t0% {\\n\\t\\topacity: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t}\\n\\t33% {\\n\\t\\twidth: 0.3em;\\n\\t\\theight: 0;\\n\\t}\\n\\t100% {\\n\\t\\topacity: 1;\\n\\t\\twidth: 0.3em;\\n\\t\\theight: 0.45em;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-list-styles-list{display:grid}:root{--ck-list-style-button-size:44px}.ck.ck-list-styles-list{column-gap:var(--ck-spacing-medium);grid-template-columns:repeat(3,auto);padding:var(--ck-spacing-large);row-gap:var(--ck-spacing-medium)}.ck.ck-list-styles-list .ck-button{box-sizing:content-box;margin:0;padding:0}.ck.ck-list-styles-list .ck-button,.ck.ck-list-styles-list .ck-button .ck-icon{height:var(--ck-list-style-button-size);width:var(--ck-list-style-button-size)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-list/theme/liststyles.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-list/liststyles.css\"],\"names\":[],\"mappings\":\"AAKA,wBACC,YACD,CCFA,MACC,gCACD,CAEA,wBAGC,mCAAoC,CAFpC,oCAAwC,CAGxC,+BAAgC,CAFhC,gCA4BD,CAxBC,mCAiBC,sBAAuB,CAPvB,QAAS,CANT,SAmBD,CAJC,+EAhBA,uCAAwC,CADxC,sCAoBA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-list-styles-list {\\n\\tdisplay: grid;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-list-style-button-size: 44px;\\n}\\n\\n.ck.ck-list-styles-list {\\n\\tgrid-template-columns: repeat( 3, auto );\\n\\trow-gap: var(--ck-spacing-medium);\\n\\tcolumn-gap: var(--ck-spacing-medium);\\n\\tpadding: var(--ck-spacing-large);\\n\\n\\t& .ck-button {\\n\\t\\t/* Make the button look like a thumbnail (the icon \\\"takes it all\\\"). */\\n\\t\\twidth: var(--ck-list-style-button-size);\\n\\t\\theight: var(--ck-list-style-button-size);\\n\\t\\tpadding: 0;\\n\\n\\t\\t/*\\n\\t\\t * Buttons are aligned by the grid so disable default button margins to not collide with the\\n\\t\\t * gaps in the grid.\\n\\t\\t */\\n\\t\\tmargin: 0;\\n\\n\\t\\t/*\\n\\t\\t * Make sure the button border (which is displayed on focus, BTW) does not steal pixels\\n\\t\\t * from the button dimensions and, as a result, decrease the size of the icon\\n\\t\\t * (which becomes blurry as it scales down).\\n\\t\\t */\\n\\t\\tbox-sizing: content-box;\\n\\n\\t\\t& .ck-icon {\\n\\t\\t\\twidth: var(--ck-list-style-button-size);\\n\\t\\t\\theight: var(--ck-list-style-button-size);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-color-mention-background:rgba(153,0,48,.1);--ck-color-mention-text:#990030}.ck-content .mention{background:var(--ck-color-mention-background);color:var(--ck-color-mention-text)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-mention/mention.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,+CAAwD,CACxD,+BACD,CAEA,qBACC,6CAA8C,CAC9C,kCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-color-mention-background: hsla(341, 100%, 30%, 0.1);\\n\\t--ck-color-mention-text: hsl(341, 100%, 30%);\\n}\\n\\n.ck-content .mention {\\n\\tbackground: var(--ck-color-mention-background);\\n\\tcolor: var(--ck-color-mention-text);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-content blockquote{border-left:5px solid #ccc;font-style:italic;margin-left:0;margin-right:0;overflow:hidden;padding-left:1.5em;padding-right:1.5em}.ck-content[dir=rtl] blockquote{border-left:0;border-right:5px solid #ccc}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-block-quote/theme/blockquote.css\"],\"names\":[],\"mappings\":\"AAKA,uBAWC,0BAAsC,CADtC,iBAAkB,CAFlB,aAAc,CACd,cAAe,CAPf,eAAgB,CAIhB,kBAAmB,CADnB,mBAOD,CAEA,gCACC,aAAc,CACd,2BACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck-content blockquote {\\n\\t/* See #12 */\\n\\toverflow: hidden;\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-block-quote/issues/15 */\\n\\tpadding-right: 1.5em;\\n\\tpadding-left: 1.5em;\\n\\n\\tmargin-left: 0;\\n\\tmargin-right: 0;\\n\\tfont-style: italic;\\n\\tborder-left: solid 5px hsl(0, 0%, 80%);\\n}\\n\\n.ck-content[dir=\\\"rtl\\\"] blockquote {\\n\\tborder-left: 0;\\n\\tborder-right: solid 5px hsl(0, 0%, 80%);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-image-insert-url{padding:var(--ck-spacing-large) var(--ck-spacing-large) 0;width:400px}.ck.ck-image-insert-url .ck-image-insert-url__action-row{display:grid;grid-template-columns:repeat(2,1fr)}:root{--ck-image-insert-insert-by-url-width:250px}.ck.ck-image-insert-url{--ck-input-width:100%}.ck.ck-image-insert-url .ck-image-insert-url__action-row{grid-column-gap:var(--ck-spacing-large);margin-top:var(--ck-spacing-large)}.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button-cancel,.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button-save{justify-content:center;min-width:auto}.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}.ck.ck-image-insert-form>.ck.ck-button{display:block;width:100%}[dir=ltr] .ck.ck-image-insert-form>.ck.ck-button{text-align:left}[dir=rtl] .ck.ck-image-insert-form>.ck.ck-button{text-align:right}.ck.ck-image-insert-form>.ck.ck-collapsible{min-width:var(--ck-image-insert-insert-by-url-width)}.ck.ck-image-insert-form>.ck.ck-collapsible:not(:first-child){border-top:1px solid var(--ck-color-base-border)}.ck.ck-image-insert-form>.ck.ck-collapsible:not(:last-child){border-bottom:1px solid var(--ck-color-base-border)}.ck.ck-image-insert-form>.ck.ck-image-insert-url{min-width:var(--ck-image-insert-insert-by-url-width);padding:var(--ck-spacing-large)}.ck.ck-image-insert-form:focus{outline:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageinsert.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageinsert.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AAKA,wBAEC,yDAA0D,CAD1D,WAOD,CAJC,yDACC,YAAa,CACb,mCACD,CCLD,MACC,2CACD,CAEA,wBACC,qBAgBD,CAdC,yDACC,uCAAwC,CACxC,kCAWD,CATC,oJAEC,sBAAuB,CACvB,cACD,CAEA,sFACC,0BACD,CAKD,uCACC,aAAc,CACd,UASD,CCpCA,iDD8BE,eC5BF,CAFA,iDDkCE,gBChCF,CDoCA,4CASC,oDACD,CATC,8DACC,gDACD,CAEA,6DACC,mDACD,CAMD,iDACC,oDAAqD,CACrD,+BACD,CAEA,+BACC,YACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-image-insert-url {\\n\\twidth: 400px;\\n\\tpadding: var(--ck-spacing-large) var(--ck-spacing-large) 0;\\n\\n\\t& .ck-image-insert-url__action-row {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-template-columns: repeat(2, 1fr);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n:root {\\n\\t--ck-image-insert-insert-by-url-width: 250px;\\n}\\n\\n.ck.ck-image-insert-url {\\n\\t--ck-input-width: 100%;\\n\\n\\t& .ck-image-insert-url__action-row {\\n\\t\\tgrid-column-gap: var(--ck-spacing-large);\\n\\t\\tmargin-top: var(--ck-spacing-large);\\n\\n\\t\\t& .ck-button-save,\\n\\t\\t& .ck-button-cancel {\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\tmin-width: auto;\\n\\t\\t}\\n\\n\\t\\t& .ck-button .ck-button__label {\\n\\t\\t\\tcolor: var(--ck-color-text);\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-image-insert-form {\\n\\t& > .ck.ck-button {\\n\\t\\tdisplay: block;\\n\\t\\twidth: 100%;\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\ttext-align: right;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck.ck-collapsible {\\n\\t\\t&:not(:first-child) {\\n\\t\\t\\tborder-top: 1px solid var(--ck-color-base-border);\\n\\t\\t}\\n\\n\\t\\t&:not(:last-child) {\\n\\t\\t\\tborder-bottom: 1px solid var(--ck-color-base-border);\\n\\t\\t}\\n\\n\\t\\tmin-width: var(--ck-image-insert-insert-by-url-width);\\n\\t}\\n\\n\\t/* This is the case when there are no other integrations configured than insert by URL */\\n\\t& > .ck.ck-image-insert-url {\\n\\t\\tmin-width: var(--ck-image-insert-insert-by-url-width);\\n\\t\\tpadding: var(--ck-spacing-large);\\n\\t}\\n\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-input-width:18em;--ck-input-text-width:var(--ck-input-width)}.ck.ck-input{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);border-radius:0;min-height:var(--ck-ui-component-min-height);min-width:var(--ck-input-width);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}.ck-rounded-corners .ck.ck-input,.ck.ck-input.ck-rounded-corners{border-radius:var(--ck-border-radius)}@media (prefers-reduced-motion:reduce){.ck.ck-input{transition:none}}.ck.ck-input:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-input[readonly]{background:var(--ck-color-input-disabled-background);border:1px solid var(--ck-color-input-disabled-border);color:var(--ck-color-input-disabled-text)}.ck.ck-input[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input.ck-error{animation:ck-input-shake .3s ease both;border-color:var(--ck-color-input-error-border)}@media (prefers-reduced-motion:reduce){.ck.ck-input.ck-error{animation:none}}.ck.ck-input.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/input/input.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AASA,MACC,qBAAsB,CAGtB,2CACD,CAEA,aAGC,2CAA4C,CAC5C,6CAA8C,CCT9C,eAAgB,CDchB,4CAA6C,CAH7C,+BAAgC,CADhC,6DAA8D,CAO9D,4DAkCD,CCjDC,iEAEC,qCAED,CDaA,uCAdD,aAeE,eA+BF,CA9BC,CAEA,mBEvBA,2BAA2B,CCF3B,2CAA8B,CDC9B,YF2BA,CAEA,uBAEC,oDAAqD,CADrD,sDAAuD,CAEvD,yCAMD,CAJC,6BGnCD,oDHsCC,CAGD,sBAEC,sCAAuC,CADvC,+CAUD,CAPC,uCAJD,sBAKE,cAMF,CALC,CAEA,4BGjDD,iDHmDC,CAIF,0BACC,IACC,0BACD,CAEA,IACC,yBACD,CAEA,IACC,0BACD,CAEA,IACC,yBACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_focus.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n\\n:root {\\n\\t--ck-input-width: 18em;\\n\\n\\t/* Backward compatibility. */\\n\\t--ck-input-text-width: var(--ck-input-width);\\n}\\n\\n.ck.ck-input {\\n\\t@mixin ck-rounded-corners;\\n\\n\\tbackground: var(--ck-color-input-background);\\n\\tborder: 1px solid var(--ck-color-input-border);\\n\\tpadding: var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);\\n\\tmin-width: var(--ck-input-width);\\n\\n\\t/* This is important to stay of the same height as surrounding buttons */\\n\\tmin-height: var(--ck-ui-component-min-height);\\n\\n\\t/* Apply some smooth transition to the box-shadow and border. */\\n\\ttransition: box-shadow .1s ease-in-out, border .1s ease-in-out;\\n\\n\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\ttransition: none;\\n\\t}\\n\\n\\t&:focus {\\n\\t\\t@mixin ck-focus-ring;\\n\\t\\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\\n\\t}\\n\\n\\t&[readonly] {\\n\\t\\tborder: 1px solid var(--ck-color-input-disabled-border);\\n\\t\\tbackground: var(--ck-color-input-disabled-background);\\n\\t\\tcolor: var(--ck-color-input-disabled-text);\\n\\n\\t\\t&:focus {\\n\\t\\t\\t/* The read-only input should have a slightly less visible shadow when focused. */\\n\\t\\t\\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-error {\\n\\t\\tborder-color: var(--ck-color-input-error-border);\\n\\t\\tanimation: ck-input-shake .3s ease both;\\n\\n\\t\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\t\\tanimation: none;\\n\\t\\t}\\n\\n\\t\\t&:focus {\\n\\t\\t\\t@mixin ck-box-shadow var(--ck-focus-error-outer-shadow);\\n\\t\\t}\\n\\t}\\n}\\n\\n@keyframes ck-input-shake {\\n\\t20% {\\n\\t\\ttransform: translateX(-2px);\\n\\t}\\n\\n\\t40% {\\n\\t\\ttransform: translateX(2px);\\n\\t}\\n\\n\\t60% {\\n\\t\\ttransform: translateX(-1px);\\n\\t}\\n\\n\\t80% {\\n\\t\\ttransform: translateX(1px);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A visual style of focused element's border.\\n */\\n@define-mixin ck-focus-ring {\\n\\t/* Disable native outline. */\\n\\toutline: none;\\n\\tborder: var(--ck-focus-ring)\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-aria-live-announcer{left:-10000px;position:absolute;top:-10000px}.ck.ck-aria-live-region-list{list-style-type:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/arialiveannouncer/arialiveannouncer.css\"],\"names\":[],\"mappings\":\"AAKA,2BAEC,aAAc,CADd,iBAAkB,CAElB,YACD,CAEA,6BACC,oBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-aria-live-announcer {\\n\\tposition: absolute;\\n\\tleft: -10000px;\\n\\ttop: -10000px;\\n}\\n\\n.ck.ck-aria-live-region-list {\\n\\tlist-style-type: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-collapsible.ck-collapsible_collapsed>.ck-collapsible__children{display:none}:root{--ck-collapsible-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-collapsible>.ck.ck-button{border-radius:0;color:inherit;font-weight:700;width:100%}.ck.ck-collapsible>.ck.ck-button:focus{background:transparent}.ck.ck-collapsible>.ck.ck-button:active,.ck.ck-collapsible>.ck.ck-button:hover:not(:focus),.ck.ck-collapsible>.ck.ck-button:not(:focus){background:transparent;border-color:transparent;box-shadow:none}.ck.ck-collapsible>.ck.ck-button>.ck-icon{margin-right:var(--ck-spacing-medium);width:var(--ck-collapsible-arrow-size)}.ck.ck-collapsible>.ck-collapsible__children{padding:var(--ck-spacing-medium) var(--ck-spacing-large) var(--ck-spacing-large)}.ck.ck-collapsible.ck-collapsible_collapsed>.ck.ck-button .ck-icon{transform:rotate(-90deg)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/collapsible/collapsible.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/collapsible/collapsible.css\"],\"names\":[],\"mappings\":\"AAMC,sEACC,YACD,CCHD,MACC,yDACD,CAGC,iCAGC,eAAgB,CAChB,aAAc,CAFd,eAAiB,CADjB,UAmBD,CAdC,uCACC,sBACD,CAEA,wIACC,sBAAuB,CACvB,wBAAyB,CACzB,eACD,CAEA,0CACC,qCAAsC,CACtC,sCACD,CAGD,6CACC,gFACD,CAGC,mEACC,wBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-collapsible.ck-collapsible_collapsed {\\n\\t& > .ck-collapsible__children {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-collapsible-arrow-size: calc(0.5 * var(--ck-icon-size));\\n}\\n\\n.ck.ck-collapsible {\\n\\t& > .ck.ck-button {\\n\\t\\twidth: 100%;\\n\\t\\tfont-weight: bold;\\n\\t\\tborder-radius: 0;\\n\\t\\tcolor: inherit;\\n\\n\\t\\t&:focus {\\n\\t\\t\\tbackground: transparent;\\n\\t\\t}\\n\\n\\t\\t&:active, &:not(:focus), &:hover:not(:focus) {\\n\\t\\t\\tbackground: transparent;\\n\\t\\t\\tborder-color: transparent;\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t& > .ck-icon {\\n\\t\\t\\tmargin-right: var(--ck-spacing-medium);\\n\\t\\t\\twidth: var(--ck-collapsible-arrow-size);\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-collapsible__children {\\n\\t\\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large) var(--ck-spacing-large);\\n\\t}\\n\\n\\t&.ck-collapsible_collapsed {\\n\\t\\t& > .ck.ck-button .ck-icon {\\n\\t\\t\\ttransform: rotate(-90deg);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/form.css\"],\"names\":[],\"mappings\":\"AAKA,YACC,mCAyBD,CAvBC,kBAEC,YACD,CAEA,8BACC,cAAe,CACf,OACD,CAEA,4BACC,cAWD,CARE,6DACC,4CACD,CAEA,mEACC,UACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-form {\\n\\tpadding: 0 0 var(--ck-spacing-large);\\n\\n\\t&:focus {\\n\\t\\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t& .ck.ck-input-text {\\n\\t\\tmin-width: 100%;\\n\\t\\twidth: 0;\\n\\t}\\n\\n\\t& .ck.ck-dropdown {\\n\\t\\tmin-width: 100%;\\n\\n\\t\\t& .ck-dropdown__button {\\n\\t\\t\\t&:not(:focus) {\\n\\t\\t\\t\\tborder: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-button__label {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-list-properties.ck-list-properties_without-styles{padding:var(--ck-spacing-large)}.ck.ck-list-properties.ck-list-properties_without-styles>*{min-width:14em}.ck.ck-list-properties.ck-list-properties_without-styles>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-list-styles-list{grid-template-columns:repeat(4,auto)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible{border-top:1px solid var(--ck-color-base-border)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*{width:100%}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties .ck.ck-numbered-list-properties__start-index .ck-input{min-width:auto;width:100%}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order{background:transparent;margin-bottom:calc(var(--ck-spacing-tiny)*-1);padding-left:0;padding-right:0}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:active,.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:hover{background:none;border-color:transparent;box-shadow:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-list/listproperties.css\"],\"names\":[],\"mappings\":\"AAOC,yDACC,+BASD,CAPC,2DACC,cAKD,CAHC,6DACC,qCACD,CASD,wFACC,oCACD,CAGA,mFACC,gDAWD,CARE,+GACC,UAKD,CAHC,iHACC,qCACD,CAMJ,8EACC,cAAe,CACf,UACD,CAEA,uEACC,sBAAuB,CAGvB,6CAAgD,CAFhD,cAAe,CACf,eAQD,CALC,2JAGC,eAAgB,CADhB,wBAAyB,CADzB,eAGD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-list-properties {\\n\\t/* When there are no list styles and there is no collapsible. */\\n\\t&.ck-list-properties_without-styles {\\n\\t\\tpadding: var(--ck-spacing-large);\\n\\n\\t\\t& > * {\\n\\t\\t\\tmin-width: 14em;\\n\\n\\t\\t\\t& + * {\\n\\t\\t\\t\\tmargin-top: var(--ck-spacing-standard);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * When the numbered list property fields (start at, reversed) should be displayed,\\n\\t * more horizontal space is needed. Reconfigure the style grid to create that space.\\n\\t */\\n\\t&.ck-list-properties_with-numbered-properties {\\n\\t\\t& > .ck-list-styles-list {\\n\\t\\t\\tgrid-template-columns: repeat( 4, auto );\\n\\t\\t}\\n\\n\\t\\t/* When list styles are rendered and property fields are in a collapsible. */\\n\\t\\t& > .ck-collapsible {\\n\\t\\t\\tborder-top: 1px solid var(--ck-color-base-border);\\n\\n\\t\\t\\t& > .ck-collapsible__children {\\n\\t\\t\\t\\t& > * {\\n\\t\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t\\t& + * {\\n\\t\\t\\t\\t\\t\\tmargin-top: var(--ck-spacing-standard);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck.ck-numbered-list-properties__start-index .ck-input {\\n\\t\\tmin-width: auto;\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t& .ck.ck-numbered-list-properties__reversed-order {\\n\\t\\tbackground: transparent;\\n\\t\\tpadding-left: 0;\\n\\t\\tpadding-right: 0;\\n\\t\\tmargin-bottom: calc(-1 * var(--ck-spacing-tiny));\\n\\n\\t\\t&:active, &:hover {\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t\\tborder-color: transparent;\\n\\t\\t\\tbackground: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-highlighted-text mark{background:var(--ck-color-highlight-background);font-size:inherit;font-weight:inherit;line-height:inherit;vertical-align:initial}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/highlightedtext/highlightedtext.css\"],\"names\":[],\"mappings\":\"AAKA,6BACC,+CAAgD,CAIhD,iBAAkB,CAFlB,mBAAoB,CACpB,mBAAoB,CAFpB,sBAID\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-highlighted-text mark {\\n\\tbackground: var(--ck-color-highlight-background);\\n\\tvertical-align: initial;\\n\\tfont-weight: inherit;\\n\\tline-height: inherit;\\n\\tfont-size: inherit;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;left:0;pointer-events:none;position:absolute;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{pointer-events:all;position:absolute}.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{background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius);height:var(--ck-resizer-size);width:var(--ck-resizer-size)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{left:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{right:var(--ck-resizer-offset);top: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)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-widget/theme/widgetresize.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widgetresize.css\"],\"names\":[],\"mappings\":\"AAKA,4BAEC,iBACD,CAEA,wBACC,YAAa,CAMb,MAAO,CAFP,mBAAoB,CAHpB,iBAAkB,CAMlB,KACD,CAGC,2EACC,aACD,CAGD,gCAIC,kBAAmB,CAHnB,iBAcD,CATC,4IAEC,kBACD,CAEA,4IAEC,kBACD,CCpCD,MACC,sBAAuB,CAGvB,yDAAiE,CACjE,6BACD,CAEA,wBACC,yCACD,CAEA,gCAGC,uCAAwC,CACxC,gDAA6D,CAC7D,6CAA8C,CAH9C,6BAA8B,CAD9B,4BAyBD,CAnBC,oEAEC,6BAA8B,CAD9B,4BAED,CAEA,qEAEC,8BAA+B,CAD/B,4BAED,CAEA,wEACC,+BAAgC,CAChC,8BACD,CAEA,uEACC,+BAAgC,CAChC,6BACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck .ck-widget_with-resizer {\\n\\t/* Make the widget wrapper a relative positioning container for the drag handle. */\\n\\tposition: relative;\\n}\\n\\n.ck .ck-widget__resizer {\\n\\tdisplay: none;\\n\\tposition: absolute;\\n\\n\\t/* The wrapper itself should not interfere with the pointer device, only the handles should. */\\n\\tpointer-events: none;\\n\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.ck-focused .ck-widget_with-resizer.ck-widget_selected {\\n\\t& > .ck-widget__resizer {\\n\\t\\tdisplay: block;\\n\\t}\\n}\\n\\n.ck .ck-widget__resizer__handle {\\n\\tposition: absolute;\\n\\n\\t/* Resizers are the only UI elements that should interfere with a pointer device. */\\n\\tpointer-events: all;\\n\\n\\t&.ck-widget__resizer__handle-top-left,\\n\\t&.ck-widget__resizer__handle-bottom-right {\\n\\t\\tcursor: nwse-resize;\\n\\t}\\n\\n\\t&.ck-widget__resizer__handle-top-right,\\n\\t&.ck-widget__resizer__handle-bottom-left {\\n\\t\\tcursor: nesw-resize;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-resizer-size: 10px;\\n\\n\\t/* Set the resizer with a 50% offset. */\\n\\t--ck-resizer-offset: calc( ( var(--ck-resizer-size) / -2 ) - 2px);\\n\\t--ck-resizer-border-width: 1px;\\n}\\n\\n.ck .ck-widget__resizer {\\n\\toutline: 1px solid var(--ck-color-resizer);\\n}\\n\\n.ck .ck-widget__resizer__handle {\\n\\twidth: var(--ck-resizer-size);\\n\\theight: var(--ck-resizer-size);\\n\\tbackground: var(--ck-color-focus-border);\\n\\tborder: var(--ck-resizer-border-width) solid hsl(0, 0%, 100%);\\n\\tborder-radius: var(--ck-resizer-border-radius);\\n\\n\\t&.ck-widget__resizer__handle-top-left {\\n\\t\\ttop: var(--ck-resizer-offset);\\n\\t\\tleft: var(--ck-resizer-offset);\\n\\t}\\n\\n\\t&.ck-widget__resizer__handle-top-right {\\n\\t\\ttop: var(--ck-resizer-offset);\\n\\t\\tright: var(--ck-resizer-offset);\\n\\t}\\n\\n\\t&.ck-widget__resizer__handle-bottom-right {\\n\\t\\tbottom: var(--ck-resizer-offset);\\n\\t\\tright: var(--ck-resizer-offset);\\n\\t}\\n\\n\\t&.ck-widget__resizer__handle-bottom-left {\\n\\t\\tbottom: var(--ck-resizer-offset);\\n\\t\\tleft: var(--ck-resizer-offset);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-link-form{align-items:flex-start;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{min-width:var(--ck-input-width);padding:0}.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{border-radius:0;margin:0;padding:var(--ck-spacing-standard);width:50%}.ck.ck-link-form_layout-vertical>.ck-button:not(:focus){border-top:1px solid var(--ck-color-base-border)}[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:0 var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkform.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkform.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AAOA,iBAEC,sBAAuB,CADvB,YAkBD,CAfC,2BACC,YACD,CCPA,oCDCD,iBASE,cAUF,CARE,wCACC,eACD,CAEA,4BACC,cACD,CChBD,CDwBD,iCACC,aAYD,CALE,wHAEC,mCACD,CEhCF,iCAEC,+BAAgC,CADhC,SAgDD,CA7CC,wDACC,8EAMD,CAJC,uEACC,WAAY,CACZ,UACD,CAGD,4CAIC,eAAgB,CAFhB,QAAS,CADT,kCAAmC,CAEnC,SAkBD,CAfC,wDACC,gDACD,CC1BD,4GDiCE,aC/BF,CDiCE,mEACC,kDACD,CAKF,6CACC,gCAUD,CARC,wEACC,SAAU,CACV,UAKD,CAHC,8EACC,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck.ck-link-form {\\n\\tdisplay: flex;\\n\\talign-items: flex-start;\\n\\n\\t& .ck-label {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\tflex-wrap: wrap;\\n\\n\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\tflex-basis: 100%;\\n\\t\\t}\\n\\n\\t\\t& .ck-button {\\n\\t\\t\\tflex-basis: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\n * Style link form differently when manual decorators are available.\\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\\n */\\n.ck.ck-link-form_layout-vertical {\\n\\tdisplay: block;\\n\\n\\t/*\\n\\t * Whether the form is in the responsive mode or not, if there are decorator buttons\\n\\t * keep the top margin of action buttons medium.\\n\\t */\\n\\t& .ck-button {\\n\\t\\t&.ck-button-save,\\n\\t\\t&.ck-button-cancel {\\n\\t\\t\\tmargin-top: var(--ck-spacing-medium);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-media-phone {\\n\\t@media screen and (max-width: 600px) {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n/*\\n * Style link form differently when manual decorators are available.\\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\\n */\\n.ck.ck-link-form_layout-vertical {\\n\\tpadding: 0;\\n\\tmin-width: var(--ck-input-width);\\n\\n\\t& .ck-labeled-field-view {\\n\\t\\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small);\\n\\n\\t\\t& .ck-input-text {\\n\\t\\t\\tmin-width: 0;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-button {\\n\\t\\tpadding: var(--ck-spacing-standard);\\n\\t\\tmargin: 0;\\n\\t\\twidth: 50%;\\n\\t\\tborder-radius: 0;\\n\\n\\t\\t&:not(:focus) {\\n\\t\\t\\tborder-top: 1px solid var(--ck-color-base-border);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tmargin-left: 0;\\n\\n\\t\\t\\t&:last-of-type {\\n\\t\\t\\t\\tborder-right: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/* Using additional `.ck` class for stronger CSS specificity than `.ck.ck-link-form > :not(:first-child)`. */\\n\\t& .ck.ck-list {\\n\\t\\tmargin: 0 var(--ck-spacing-large);\\n\\n\\t\\t& .ck-button.ck-switchbutton {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-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}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/listdropdown.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAOA,6CCIC,eDqBD,CCnBC,iIAEC,qCAAsC,CDJtC,wBCMD,CDAC,mFCND,eDYC,CCVD,6MAEC,qCAAsC,CDKpC,2BAA4B,CAC5B,4BAA6B,CAF7B,wBCFH,CDQC,kFCdD,eDmBC,CCjBD,2MAEC,qCAAsC,CDYpC,wBAAyB,CACzB,yBCXH\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n\\n.ck.ck-dropdown > .ck-dropdown__panel > .ck-list {\\n\\t/* Disabled radius of top-left border to be consistent with .dropdown__button\\n\\thttps://github.com/ckeditor/ckeditor5/issues/816 */\\n\\t@mixin ck-rounded-corners {\\n\\t\\tborder-top-left-radius: 0;\\n\\t}\\n\\n\\t/* Make sure the button belonging to the first/last child of the list goes well with the\\n\\tborder radius of the entire panel. */\\n\\t& .ck-list__item {\\n\\t\\t&:first-child > .ck-button {\\n\\t\\t\\t@mixin ck-rounded-corners {\\n\\t\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&:last-child > .ck-button {\\n\\t\\t\\t@mixin ck-rounded-corners {\\n\\t\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-autocomplete{position:relative}.ck.ck-autocomplete>.ck-search__results{position:absolute;z-index:var(--ck-z-panel)}.ck.ck-autocomplete>.ck-search__results.ck-search__results_n{bottom:100%}.ck.ck-autocomplete>.ck-search__results.ck-search__results_s{bottom:auto;top:100%}.ck.ck-autocomplete>.ck-search__results{background:var(--ck-color-base-background);border:1px solid var(--ck-color-dropdown-panel-border);border-radius:0;max-height:200px;min-width:auto;overflow-y:auto}.ck-rounded-corners .ck.ck-autocomplete>.ck-search__results,.ck.ck-autocomplete>.ck-search__results.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-autocomplete>.ck-search__results{box-shadow:var(--ck-drop-shadow),0 0}.ck.ck-autocomplete>.ck-search__results.ck-search__results_n{border-bottom-left-radius:0;border-bottom-right-radius:0;margin-bottom:-1px}.ck.ck-autocomplete>.ck-search__results.ck-search__results_s{border-top-left-radius:0;border-top-right-radius:0;margin-top:-1px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/autocomplete/autocomplete.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/autocomplete/autocomplete.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAKA,oBACC,iBAeD,CAbC,wCACC,iBAAkB,CAClB,yBAUD,CARC,6DACC,WACD,CAEA,6DAEC,WAAY,CADZ,QAED,CCVD,wCAMC,0CAA2C,CAC3C,sDAAuD,CCLxD,eAAgB,CDEf,gBAAiB,CAIjB,cAAe,CAHf,eAoBD,CCrBA,uHAEC,qCAED,CDRA,wCEAA,oCFyBA,CAfC,6DACC,2BAA4B,CAC5B,4BAA6B,CAG7B,kBACD,CAEA,6DACC,wBAAyB,CACzB,yBAA0B,CAG1B,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-autocomplete {\\n\\tposition: relative;\\n\\n\\t& > .ck-search__results {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: var(--ck-z-panel);\\n\\n\\t\\t&.ck-search__results_n {\\n\\t\\t\\tbottom: 100%;\\n\\t\\t}\\n\\n\\t\\t&.ck-search__results_s {\\n\\t\\t\\ttop: 100%;\\n\\t\\t\\tbottom: auto;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\\\";\\n@import \\\"@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\\\";\\n\\n.ck.ck-autocomplete {\\n\\t& > .ck-search__results {\\n\\t\\t@mixin ck-rounded-corners;\\n\\t\\t@mixin ck-drop-shadow;\\n\\n\\t\\tmax-height: 200px;\\n\\t\\toverflow-y: auto;\\n\\t\\tbackground: var(--ck-color-base-background);\\n\\t\\tborder: 1px solid var(--ck-color-dropdown-panel-border);\\n\\t\\tmin-width: auto;\\n\\n\\t\\t&.ck-search__results_n {\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\n\\t\\t\\t/* Prevent duplicated borders between the input and the results pane. */\\n\\t\\t\\tmargin-bottom: -1px;\\n\\t\\t}\\n\\n\\t\\t&.ck-search__results_s {\\n\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\tborder-top-right-radius: 0;\\n\\n\\t\\t\\t/* Prevent duplicated borders between the input and the results pane. */\\n\\t\\t\\tmargin-top: -1px;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-table-selected-cell-background:rgba(158,207,250,.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{box-shadow:unset;caret-color:transparent;outline:unset;position:relative}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{background-color:var(--ck-table-selected-cell-background);bottom:0;content:\"\";left:0;pointer-events:none;position:absolute;right:0;top: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}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableselection.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,wDACD,CAGC,0IAKC,gBAAiB,CAFjB,uBAAwB,CACxB,aAAc,CAFd,iBAiCD,CA3BC,sJAGC,yDAA0D,CAK1D,QAAS,CAPT,UAAW,CAKX,MAAO,CAJP,mBAAoB,CAEpB,iBAAkB,CAGlB,OAAQ,CAFR,KAID,CAEA,wTAEC,4BACD,CAMA,gKACC,aAKD,CAHC,0NACC,YACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-table-selected-cell-background: hsla(208, 90%, 80%, .3);\\n}\\n\\n.ck.ck-editor__editable .table table {\\n\\t& td.ck-editor__editable_selected,\\n\\t& th.ck-editor__editable_selected {\\n\\t\\tposition: relative;\\n\\t\\tcaret-color: transparent;\\n\\t\\toutline: unset;\\n\\t\\tbox-shadow: unset;\\n\\n\\t\\t/* https://github.com/ckeditor/ckeditor5/issues/6446 */\\n\\t\\t&:after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tpointer-events: none;\\n\\t\\t\\tbackground-color: var(--ck-table-selected-cell-background);\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\tbottom: 0;\\n\\t\\t}\\n\\n\\t\\t& ::selection,\\n\\t\\t&:focus {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\n\\t\\t/*\\n\\t\\t * To reduce the amount of noise, all widgets in the table selection have no outline and no selection handle.\\n\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/9491.\\n\\t\\t */\\n\\t\\t& .ck-widget {\\n\\t\\t\\toutline: unset;\\n\\n\\t\\t\\t& > .ck-widget__selection-handle {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{align-items:center;display:flex}[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{justify-content:flex-start}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar{display:flex;flex-direction:row;justify-content:space-around}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-cancel,.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar .ck-button-save{flex:1}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker,.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__remove-color{width:100%}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard)}.ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker:not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-color-selector .ck-color-grids-fragment .ck-button.ck-color-selector__color-picker .ck.ck-icon{margin-left:var(--ck-spacing-standard)}.ck.ck-color-selector .ck-color-grids-fragment label.ck.ck-color-grid__label{font-weight:unset}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker{padding:8px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker{height:100px;min-width:180px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation){border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue){border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius)}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(hue-pointer),.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-picker .hex-color-picker::part(saturation-pointer){height:15px;width:15px}.ck.ck-color-selector .ck-color-picker-fragment .ck.ck-color-selector_action-bar{padding:0 8px 8px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorselector/colorselector.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorselector/colorselector.css\"],\"names\":[],\"mappings\":\"AAUE,oLAGC,kBAAmB,CADnB,YAMD,CCZD,wMDUG,0BCRH,CDeC,iFACC,YAAa,CACb,kBAAmB,CACnB,4BAMD,CAJC,oMAEC,MACD,CErBD,oLAEC,UACD,CAEA,0FAEC,2BAA4B,CAC5B,4BAA6B,CAF7B,qEAiBD,CAbC,sGACC,gDACD,CDhBF,gHCoBI,uCDlBJ,CAFA,gHCwBI,sCDtBJ,CC2BC,6EACC,iBACD,CAKA,oEACC,WAoBD,CAlBC,sFACC,YAAa,CACb,eAeD,CAbC,wGACC,iEACD,CAEA,iGACC,iEACD,CAEA,yNAGC,WAAY,CADZ,UAED,CAIF,iFACC,iBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-color-selector {\\n\\t/* View fragment with color grids. */\\n\\t& .ck-color-grids-fragment {\\n\\t\\t& .ck-button.ck-color-selector__remove-color,\\n\\t\\t& .ck-button.ck-color-selector__color-picker {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/* View fragment with a color picker. */\\n\\t& .ck-color-picker-fragment {\\n\\t\\t& .ck.ck-color-selector_action-bar {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: row;\\n\\t\\t\\tjustify-content: space-around;\\n\\n\\t\\t\\t& .ck-button-save,\\n\\t\\t\\t& .ck-button-cancel {\\n\\t\\t\\t\\tflex: 1\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-color-selector {\\n\\t/* View fragment with color grids. */\\n\\t& .ck-color-grids-fragment {\\n\\t\\t& .ck-button.ck-color-selector__remove-color,\\n\\t\\t& .ck-button.ck-color-selector__color-picker {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t& .ck-button.ck-color-selector__color-picker {\\n\\t\\t\\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\n\\t\\t\\t&:not(:focus) {\\n\\t\\t\\t\\tborder-top: 1px solid var(--ck-color-base-border);\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck.ck-icon {\\n\\t\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\t\\tmargin-right: var(--ck-spacing-standard);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t& label.ck.ck-color-grid__label {\\n\\t\\t\\tfont-weight: unset;\\n\\t\\t}\\n\\t}\\n\\n\\t/* View fragment with a color picker. */\\n\\t& .ck-color-picker-fragment {\\n\\t\\t& .ck.ck-color-picker {\\n\\t\\t\\tpadding: 8px;\\n\\n\\t\\t\\t& .hex-color-picker {\\n\\t\\t\\t\\theight: 100px;\\n\\t\\t\\t\\tmin-width: 180px;\\n\\n\\t\\t\\t\\t&::part(saturation) {\\n\\t\\t\\t\\t\\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&::part(hue) {\\n\\t\\t\\t\\t\\tborder-radius: 0 0 var(--ck-border-radius) var(--ck-border-radius);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&::part(saturation-pointer),\\n\\t\\t\\t\\t&::part(hue-pointer) {\\n\\t\\t\\t\\t\\twidth: 15px;\\n\\t\\t\\t\\t\\theight: 15px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t& .ck.ck-color-selector_action-bar {\\n\\t\\t\\tpadding: 0 8px 8px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.5\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n} else if( typeof angular !== 'undefined' && angular != null ) {\n angular.module('LZString', [])\n .factory('LZString', function () {\n return LZString;\n });\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-color-image-caption-background:#f7f7f7;--ck-color-image-caption-text:#333;--ck-color-image-caption-highlighted-background:#fd0}.ck-content .image>figcaption{background-color:var(--ck-color-image-caption-background);caption-side:bottom;color:var(--ck-color-image-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;word-break:break-word}@media (forced-colors:active){.ck-content .image>figcaption{background-color:unset;color:unset}}@media (forced-colors:none){.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:ck-image-caption-highlight .6s ease-out}}@media (prefers-reduced-motion:reduce){.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:none}}@keyframes ck-image-caption-highlight{0%{background-color:var(--ck-color-image-caption-highlighted-background)}to{background-color:var(--ck-color-image-caption-background)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imagecaption.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css\"],\"names\":[],\"mappings\":\"AAOA,MACC,2CAAoD,CACpD,kCAA8C,CAC9C,oDACD,CAGA,8BAKC,yDAA0D,CAH1D,mBAAoB,CAEpB,wCAAyC,CAHzC,qBAAsB,CAMtB,eAAgB,CAChB,mBAAoB,CAFpB,YAAa,CAHb,qBAYD,CAJC,8BAXD,8BAYE,sBAAuB,CACvB,WAEF,CADC,CCdA,4BACC,qEDmBA,iDCjBA,CACD,CDmBA,uCALD,qEAME,cAEF,CADC,CAGD,sCACC,GACC,qEACD,CAEA,GACC,yDACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css\\\";\\n\\n:root {\\n\\t--ck-color-image-caption-background: hsl(0, 0%, 97%);\\n\\t--ck-color-image-caption-text: hsl(0, 0%, 20%);\\n\\t--ck-color-image-caption-highlighted-background: hsl(52deg 100% 50%);\\n}\\n\\n/* Content styles */\\n.ck-content .image > figcaption {\\n\\tdisplay: table-caption;\\n\\tcaption-side: bottom;\\n\\tword-break: break-word;\\n\\tcolor: var(--ck-color-image-caption-text);\\n\\tbackground-color: var(--ck-color-image-caption-background);\\n\\tpadding: .6em;\\n\\tfont-size: .75em;\\n\\toutline-offset: -1px;\\n\\n\\t/* Improve placeholder rendering in high-constrast mode (https://github.com/ckeditor/ckeditor5/issues/14907). */\\n\\t@media (forced-colors: active) {\\n\\t\\tbackground-color: unset;\\n\\t\\tcolor: unset;\\n\\t}\\n}\\n\\n/* Editing styles */\\n.ck.ck-editor__editable .image > figcaption.image__caption_highlighted {\\n\\t@mixin ck-media-default-colors {\\n\\t\\tanimation: ck-image-caption-highlight .6s ease-out;\\n\\t}\\n\\n\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\tanimation: none;\\n\\t}\\n}\\n\\n@keyframes ck-image-caption-highlight {\\n\\t0% {\\n\\t\\tbackground-color: var(--ck-color-image-caption-highlighted-background);\\n\\t}\\n\\n\\t100% {\\n\\t\\tbackground-color: var(--ck-color-image-caption-background);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-media-forced-colors {\\n\\t@media (forced-colors: active) {\\n\\t\\t& {\\n\\t\\t\\t@mixin-content;\\n\\t\\t}\\n\\t}\\n}\\n\\n@define-mixin ck-media-default-colors {\\n\\t@media (forced-colors: none) {\\n\\t\\t& {\\n\\t\\t\\t@mixin-content;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.color-picker-hex-input{width:max-content}.color-picker-hex-input .ck.ck-input{min-width:unset}.ck.ck-color-picker__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;margin:var(--ck-spacing-large) 0 0;width:unset}.ck.ck-color-picker__row .ck.ck-labeled-field-view{padding-top:unset}.ck.ck-color-picker__row .ck.ck-input-text{width:unset}.ck.ck-color-picker__row .ck-color-picker__hash-view{padding-right:var(--ck-spacing-medium);padding-top:var(--ck-spacing-tiny)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorpicker/colorpicker.css\"],\"names\":[],\"mappings\":\"AAKA,wBACC,iBAKD,CAHC,qCACC,eACD,CAGD,yBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAA8B,CAC9B,kCAAmC,CACnC,WAcD,CAZC,mDACC,iBACD,CAEA,2CACC,WACD,CAEA,qDAEC,sCAAuC,CADvC,kCAED\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.color-picker-hex-input {\\n\\twidth: max-content;\\n\\n\\t& .ck.ck-input {\\n\\t\\tmin-width: unset;\\n\\t}\\n}\\n\\n.ck.ck-color-picker__row {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\tjustify-content: space-between;\\n\\tmargin: var(--ck-spacing-large) 0 0;\\n\\twidth: unset;\\n\\n\\t& .ck.ck-labeled-field-view {\\n\\t\\tpadding-top: unset;\\n\\t}\\n\\n\\t& .ck.ck-input-text {\\n\\t\\twidth: unset;\\n\\t}\\n\\n\\t& .ck-color-picker__hash-view {\\n\\t\\tpadding-top: var(--ck-spacing-tiny);\\n\\t\\tpadding-right: var(--ck-spacing-medium);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-list-item-button{border-radius:0;min-height:unset;width:100%}[dir=ltr] .ck.ck-list-item-button{text-align:left}[dir=rtl] .ck.ck-list-item-button{text-align:right}[dir=ltr] .ck.ck-list-item-button.ck-list-item-button_toggleable{padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-list-item-button.ck-list-item-button_toggleable{padding-right:var(--ck-spacing-small)}.ck.ck-list-item-button .ck-list-item-button__check-holder{display:inline-flex;height:.9em;width:.9em}[dir=ltr] .ck.ck-list-item-button .ck-list-item-button__check-holder{margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-list-item-button .ck-list-item-button__check-holder{margin-left:var(--ck-spacing-small)}.ck.ck-list-item-button .ck-list-item-button__check-icon{height:100%}.ck.ck-button.ck-list-item-button{padding:var(--ck-spacing-tiny) calc(var(--ck-spacing-standard)*2)}.ck.ck-button.ck-list-item-button,.ck.ck-button.ck-list-item-button.ck-on{background:var(--ck-color-list-background);color:var(--ck-color-text)}[dir=ltr] .ck.ck-button.ck-list-item-button:has(.ck-list-item-button__check-holder){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-list-item-button:has(.ck-list-item-button__check-holder){padding-right:var(--ck-spacing-small)}.ck.ck-button.ck-list-item-button.ck-button.ck-on:hover,.ck.ck-button.ck-list-item-button.ck-on:hover,.ck.ck-button.ck-list-item-button.ck-on:not(.ck-list-item-button_toggleable),.ck.ck-button.ck-list-item-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-button.ck-list-item-button.ck-button.ck-on:hover:not(.ck-disabled),.ck.ck-button.ck-list-item-button.ck-on:hover:not(.ck-disabled),.ck.ck-button.ck-list-item-button.ck-on:not(.ck-list-item-button_toggleable):not(.ck-disabled),.ck.ck-button.ck-list-item-button:hover:not(.ck-disabled):not(.ck-disabled){color:var(--ck-color-text)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/listitembutton.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/listitembutton.css\"],\"names\":[],\"mappings\":\"AAOA,wBAGC,eAAgB,CAFhB,gBAAiB,CACjB,UAsCD,CCzCC,kCDOC,eCLD,CAFA,kCDWC,gBCTD,CAFA,iEDgBE,oCCdF,CAFA,iEDoBE,qCClBF,CDsBA,2DACC,mBAAoB,CAEpB,WAAY,CADZ,UAUD,CCpCA,qED8BE,oCC5BF,CAFA,qEDkCE,mCChCF,CDoCA,yDACC,WACD,CEvCD,kCACC,iEAiCD,CA/BC,0EAEC,0CAA2C,CAC3C,0BACD,CDRA,oFCYE,oCDVF,CAFA,oFCgBE,qCDdF,CCuBA,6OAIC,uDAKD,CAHC,qTACC,0BACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../mixins/_dir.css\\\";\\n\\n.ck.ck-list-item-button {\\n\\tmin-height: unset;\\n\\twidth: 100%;\\n\\tborder-radius: 0;\\n\\n\\t@mixin ck-dir ltr {\\n\\t\\ttext-align: left;\\n\\t}\\n\\n\\t@mixin ck-dir rtl {\\n\\t\\ttext-align: right;\\n\\t}\\n\\n\\t&.ck-list-item-button_toggleable {\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tpadding-left: var(--ck-spacing-small);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tpadding-right: var(--ck-spacing-small);\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-list-item-button__check-holder {\\n\\t\\tdisplay: inline-flex;\\n\\t\\twidth: .9em;\\n\\t\\theight: .9em;\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tmargin-left: var(--ck-spacing-small);\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-list-item-button__check-icon {\\n\\t\\theight: 100%;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-button.ck-list-item-button {\\n\\tpadding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard));\\n\\n\\t&,\\n\\t&.ck-on {\\n\\t\\tbackground: var(--ck-color-list-background);\\n\\t\\tcolor: var(--ck-color-text);\\n\\t}\\n\\n\\t&:has(.ck-list-item-button__check-holder) {\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tpadding-left: var(--ck-spacing-small);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tpadding-right: var(--ck-spacing-small);\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * `.ck-on` class and background styling is overridden for `ck-button` in many places.\\n\\t * This is a workaround to make sure that the background is not overridden and uses similar\\n\\t * selector specificity as the other overrides.\\n\\t */\\n\\t&:hover:not(.ck-disabled),\\n\\t&.ck-button.ck-on:hover,\\n\\t&.ck-on:not(.ck-list-item-button_toggleable),\\n\\t&.ck-on:hover {\\n\\t\\tbackground: var(--ck-color-list-button-hover-background);\\n\\n\\t\\t&:not(.ck-disabled) {\\n\\t\\t\\tcolor: var(--ck-color-text);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-panel) - 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{background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);box-shadow:var(--ck-drop-shadow),0 0;height:100%;min-height:15px;width: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}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/fakepanel.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/fakepanel.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAKA,mBACC,iBAAkB,CAGlB,mCACD,CAEA,uBACC,iBACD,CAEA,mCACC,SACD,CAEA,oCACC,SACD,CCfA,MACC,6CAA8C,CAC9C,2CACD,CAGA,uBAKC,2CAA4C,CAC5C,6CAA8C,CAC9C,qCAAsC,CCXtC,oCAA8B,CDc9B,WAAY,CAPZ,eAAgB,CAMhB,UAED,CAEA,mCACC,0DAA2D,CAC3D,uDACD,CAEA,oCACC,kEAAqE,CACrE,+DACD,CACA,oCACC,kEAAqE,CACrE,+DACD,CAGA,yIAGC,4CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck .ck-fake-panel {\\n\\tposition: absolute;\\n\\n\\t/* Fake panels should be placed under main balloon content. */\\n\\tz-index: calc(var(--ck-z-panel) - 1);\\n}\\n\\n.ck .ck-fake-panel div {\\n\\tposition: absolute;\\n}\\n\\n.ck .ck-fake-panel div:nth-child( 1 ) {\\n\\tz-index: 2;\\n}\\n\\n.ck .ck-fake-panel div:nth-child( 2 ) {\\n\\tz-index: 1;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_shadow.css\\\";\\n\\n:root {\\n\\t--ck-balloon-fake-panel-offset-horizontal: 6px;\\n\\t--ck-balloon-fake-panel-offset-vertical: 6px;\\n}\\n\\n/* Let's use `.ck-balloon-panel` appearance. See: balloonpanel.css. */\\n.ck .ck-fake-panel div {\\n\\t@mixin ck-drop-shadow;\\n\\n\\tmin-height: 15px;\\n\\n\\tbackground: var(--ck-color-panel-background);\\n\\tborder: 1px solid var(--ck-color-panel-border);\\n\\tborder-radius: var(--ck-border-radius);\\n\\n\\twidth: 100%;\\n\\theight: 100%;\\n}\\n\\n.ck .ck-fake-panel div:nth-child( 1 ) {\\n\\tmargin-left: var(--ck-balloon-fake-panel-offset-horizontal);\\n\\tmargin-top: var(--ck-balloon-fake-panel-offset-vertical);\\n}\\n\\n.ck .ck-fake-panel div:nth-child( 2 ) {\\n\\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 2);\\n\\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 2);\\n}\\n.ck .ck-fake-panel div:nth-child( 3 ) {\\n\\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 3);\\n\\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 3);\\n}\\n\\n/* If balloon is positioned above element, we need to move fake panel to the top. */\\n.ck .ck-balloon-panel_arrow_s + .ck-fake-panel,\\n.ck .ck-balloon-panel_arrow_se + .ck-fake-panel,\\n.ck .ck-balloon-panel_arrow_sw + .ck-fake-panel {\\n\\t--ck-balloon-fake-panel-offset-vertical: -6px;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzUuNzUgMCAwIDEtLjIxNy4yMDYgNS4yNTEgNS4yNTEgMCAwIDEtOC41MDMtNS45NTUuNy43IDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NHptNS40OTQtNS4zMzVhLjc1Ljc1IDAgMCAxLS4xMi4yNzRsLTEuMTQ3IDEuNjM5YS43NS43NSAwIDEgMS0xLjIyOC0uODZsLjg2LTEuMjNhMy43NSAzLjc1IDAgMCAwLTYuMTQ0LTQuMzAxbC0uODYgMS4yMjlhLjc1Ljc1IDAgMCAxLTEuMjI5LS44NmwxLjE0OC0xLjY0YS43NS43NSAwIDAgMSAuMjE3LS4yMDYgNS4yNTEgNS4yNTEgMCAwIDEgOC41MDMgNS45NTVtLTQuNTYzLTIuNTMyYS43NS43NSAwIDAgMSAuMTg0IDEuMDQ1bC0zLjE1NSA0LjUwNWEuNzUuNzUgMCAxIDEtMS4yMjktLjg2bDMuMTU1LTQuNTA2YS43NS43NSAwIDAgMSAxLjA0NS0uMTg0Ii8+PC9zdmc+\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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{background-color:rgba(0,0,0,.4);background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-position:50%;background-repeat:no-repeat;background-size:14px;border-radius:100%;content:\"\";height:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size));overflow:hidden;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);width:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkimage.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkimage.css\"],\"names\":[],\"mappings\":\"AASE,+FACC,aAAc,CACd,iBACD,CCPF,MAEC,sCAAuC,CACvC,oEACD,CAME,+FAUC,+BAAqC,CACrC,wDAA+3B,CAG/3B,uBAA2B,CAD3B,2BAA4B,CAD5B,oBAAqB,CAGrB,kBAAmB,CAdnB,UAAW,CAsBX,oGAAuG,CAFvG,eAAgB,CAbhB,sCAAwC,CADxC,oCAAsC,CAetC,mGAED\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-editor__editable {\\n\\t/* Linked image indicator */\\n\\t& figure.image > a,\\n\\t& a span.image-inline {\\n\\t\\t&::after {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tposition: absolute;\\n\\t\\t}\\n\\t}\\n}\\n\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t/* Match the icon size with the upload indicator brought by the image upload feature. */\\n\\t--ck-link-image-indicator-icon-size: 20;\\n\\t--ck-link-image-indicator-icon-is-visible: clamp(0px, 100% - 50px, 1px);\\n}\\n\\n.ck.ck-editor__editable {\\n\\t/* Linked image indicator */\\n\\t& figure.image > a,\\n\\t& a span.image-inline {\\n\\t\\t&::after {\\n\\t\\t\\tcontent: \\\"\\\";\\n\\n\\t\\t\\t/*\\n\\t\\t\\t * Smaller images should have the icon closer to the border.\\n\\t\\t\\t * Match the icon position with the upload indicator brought by the image upload feature.\\n\\t\\t\\t */\\n\\t\\t\\ttop: min(var(--ck-spacing-medium), 6%);\\n\\t\\t\\tright: min(var(--ck-spacing-medium), 6%);\\n\\n\\t\\t\\tbackground-color: hsla(0, 0%, 0%, .4);\\n\\t\\t\\tbackground-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+\\\");\\n\\t\\t\\tbackground-size: 14px;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tborder-radius: 100%;\\n\\n\\t\\t\\t/*\\n\\t\\t\\t* Use CSS math to simulate container queries.\\n\\t\\t\\t* https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\\n\\t\\t\\t*/\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twidth: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\\n\\t\\t\\theight: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-content:baseline;flex-basis:0;flex-wrap:wrap}.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}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tableproperties.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableproperties.css\"],\"names\":[],\"mappings\":\"AAOE,mFAGC,sBAAuB,CADvB,YAAa,CADb,cAOD,CAHC,qHACC,gBACD,CCTH,6BACC,WAmBD,CAhBE,mFACC,mBAAoB,CACpB,SAYD,CAVC,kGACC,eAAgB,CAGhB,qCAKD,CAHC,uHACC,UACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-table-properties-form {\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-properties-form__alignment-row {\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\tflex-basis: 0;\\n\\t\\t\\talign-content: baseline;\\n\\n\\t\\t\\t& .ck.ck-toolbar .ck-toolbar__items {\\n\\t\\t\\t\\tflex-wrap: nowrap;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-table-properties-form {\\n\\twidth: 320px;\\n\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-properties-form__alignment-row {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t& .ck.ck-toolbar {\\n\\t\\t\\t\\tbackground: none;\\n\\n\\t\\t\\t\\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\\n\\t\\t\\t\\tmargin-top: var(--ck-spacing-standard);\\n\\n\\t\\t\\t\\t& .ck-toolbar__items > * {\\n\\t\\t\\t\\t\\twidth: 40px;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal));--ck-icon-font-size:.8333350694em}.ck.ck-icon{font-size:var(--ck-icon-font-size);height:var(--ck-icon-size);width:var(--ck-icon-size)}.ck.ck-icon,.ck.ck-icon *{cursor:inherit}.ck.ck-icon.ck-icon_inherit-color,.ck.ck-icon.ck-icon_inherit-color *{color:inherit}.ck.ck-icon.ck-icon_inherit-color :not([fill]){fill:currentColor}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/icon/icon.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/icon/icon.css\"],\"names\":[],\"mappings\":\"AAKA,YACC,qBACD,CCFA,MACC,0EAA6E,CAC7E,iCACD,CAEA,YAKC,kCAAmC,CAHnC,0BAA2B,CAD3B,yBA2BD,CAlBC,0BAFA,cAKA,CAMC,sEACC,aAMD,CAJC,+CAEC,iBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-icon {\\n\\tvertical-align: middle;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-icon-size: calc(var(--ck-line-height-base) * var(--ck-font-size-normal));\\n\\t--ck-icon-font-size: .8333350694em;\\n}\\n\\n.ck.ck-icon {\\n\\twidth: var(--ck-icon-size);\\n\\theight: var(--ck-icon-size);\\n\\n\\t/* Multiplied by the height of the line in \\\"px\\\" should give SVG \\\"viewport\\\" dimensions */\\n\\tfont-size: var(--ck-icon-font-size);\\n\\n\\t/* Inherit cursor style (#5). */\\n\\tcursor: inherit;\\n\\n\\t& * {\\n\\t\\t/* Inherit cursor style (#5). */\\n\\t\\tcursor: inherit;\\n\\t}\\n\\n\\t/* Allows dynamic coloring of an icon by inheriting its color from the parent. */\\n\\t&.ck-icon_inherit-color {\\n\\t\\tcolor: inherit;\\n\\n\\t\\t& * {\\n\\t\\t\\tcolor: inherit;\\n\\n\\t\\t\\t&:not([fill]) {\\n\\t\\t\\t\\t/* Needed by FF. */\\n\\t\\t\\t\\tfill: currentColor;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-color-selector-column-resizer-hover:var(--ck-color-base-active);--ck-table-column-resizer-width:7px;--ck-table-column-resizer-position-offset:calc(var(--ck-table-column-resizer-width)*-0.5 - 0.5px)}.ck-content .table .ck-table-resized{table-layout:fixed}.ck-content .table table{overflow:hidden}.ck-content .table td,.ck-content .table th{overflow-wrap:break-word;position:relative}.ck.ck-editor__editable .table .ck-table-column-resizer{bottom:0;cursor:col-resize;position:absolute;right:var(--ck-table-column-resizer-position-offset);top:0;user-select:none;width:var(--ck-table-column-resizer-width);z-index:var(--ck-z-default)}.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer,.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer{display:none}.ck.ck-editor__editable .table .ck-table-column-resizer:hover,.ck.ck-editor__editable .table .ck-table-column-resizer__active{background-color:var(--ck-color-selector-column-resizer-hover);bottom:-999999px;opacity:.25;top:-999999px}.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer{left:var(--ck-table-column-resizer-position-offset);right:unset}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tablecolumnresize.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,oEAAqE,CACrE,mCAAoC,CAIpC,iGACD,CAEA,qCACC,kBACD,CAEA,yBACC,eACD,CAEA,4CAIC,wBAAyB,CACzB,iBACD,CAEA,wDAGC,QAAS,CAGT,iBAAkB,CALlB,iBAAkB,CAGlB,oDAAqD,CAFrD,KAAM,CAKN,gBAAiB,CAFjB,0CAA2C,CAG3C,2BACD,CAQA,qJACC,YACD,CAEA,8HAEC,8DAA+D,CAO/D,gBAAiB,CANjB,WAAa,CAKb,aAED,CAEA,iEACC,mDAAoD,CACpD,WACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-color-selector-column-resizer-hover: var(--ck-color-base-active);\\n\\t--ck-table-column-resizer-width: 7px;\\n\\n\\t/* The offset used for absolute positioning of the resizer element, so that it is placed exactly above the cell border.\\n\\t The value is: minus half the width of the resizer decreased additionaly by the half the width of the border (0.5px). */\\n\\t--ck-table-column-resizer-position-offset: calc(var(--ck-table-column-resizer-width) * -0.5 - 0.5px);\\n}\\n\\n.ck-content .table .ck-table-resized {\\n\\ttable-layout: fixed;\\n}\\n\\n.ck-content .table table {\\n\\toverflow: hidden;\\n}\\n\\n.ck-content .table td,\\n.ck-content .table th {\\n\\t/* To prevent text overflowing beyond its cell when columns are resized by resize handler\\n\\t(https://github.com/ckeditor/ckeditor5/pull/14379#issuecomment-1589460978). */\\n\\toverflow-wrap: break-word;\\n\\tposition: relative;\\n}\\n\\n.ck.ck-editor__editable .table .ck-table-column-resizer {\\n\\tposition: absolute;\\n\\ttop: 0;\\n\\tbottom: 0;\\n\\tright: var(--ck-table-column-resizer-position-offset);\\n\\twidth: var(--ck-table-column-resizer-width);\\n\\tcursor: col-resize;\\n\\tuser-select: none;\\n\\tz-index: var(--ck-z-default);\\n}\\n\\n.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer {\\n\\tdisplay: none;\\n}\\n\\n/* The resizer elements, which are extended to an extremely high height, break the drag & drop feature in Chrome. To make it work again,\\n all resizers must be hidden while the table is dragged. */\\n.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer {\\n\\tdisplay: none;\\n}\\n\\n.ck.ck-editor__editable .table .ck-table-column-resizer:hover,\\n.ck.ck-editor__editable .table .ck-table-column-resizer__active {\\n\\tbackground-color: var(--ck-color-selector-column-resizer-hover);\\n\\topacity: 0.25;\\n\\t/* The resizer element resides in each cell so to occupy the entire height of the table, which is unknown from a CSS point of view,\\n\\t it is extended to an extremely high height. Even for screens with a very high pixel density, the resizer will fulfill its role as\\n\\t it should, i.e. for a screen of 476 ppi the total height of the resizer will take over 350 sheets of A4 format, which is totally\\n\\t unrealistic height for a single table. */\\n\\ttop: -999999px;\\n\\tbottom: -999999px;\\n}\\n\\n.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer {\\n\\tleft: var(--ck-table-column-resizer-position-offset);\\n\\tright: unset;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-content img.image_resized{height:auto}.ck-content .image.image_resized{box-sizing:border-box;display:block;max-width:100%}.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}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageresize.css\"],\"names\":[],\"mappings\":\"AAMA,8BACC,WACD,CAEA,iCAQC,qBAAsB,CADtB,aAAc,CANd,cAkBD,CATC,qCAEC,UACD,CAEA,4CAEC,aACD,CAQC,sHACC,cACD,CAIF,oFACC,uCACD,CAEA,oFACC,sCACD,CAEA,oEACC,SACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/* Preserve aspect ratio of the resized image after introducing image height attribute. */\\n.ck-content img.image_resized {\\n\\theight: auto;\\n}\\n\\n.ck-content .image.image_resized {\\n\\tmax-width: 100%;\\n\\t/*\\n\\tThe `
      ` element for resized images must not use `display:table` as browsers do not support `max-width` for it well.\\n\\tSee https://stackoverflow.com/questions/4019604/chrome-safari-ignoring-max-width-in-table/14420691#14420691 for more.\\n\\tFortunately, since we control the width, there is no risk that the image will look bad.\\n\\t*/\\n\\tdisplay: block;\\n\\tbox-sizing: border-box;\\n\\n\\t& img {\\n\\t\\t/* For resized images it is the `
      ` element that determines the image width. */\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t& > figcaption {\\n\\t\\t/* The `
      ` element uses `display:block`, so `
      ` also has to. */\\n\\t\\tdisplay: block;\\n\\t}\\n}\\n\\n.ck.ck-editor__editable {\\n\\t/* The resized inline image nested in the table should respect its parent size.\\n\\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\\n\\t& td,\\n\\t& th {\\n\\t\\t& .image-inline.image_resized img {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\\n[dir=\\\"ltr\\\"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\\n\\tmargin-right: var(--ck-spacing-standard);\\n}\\n\\n[dir=\\\"rtl\\\"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\\n\\tmargin-left: var(--ck-spacing-standard);\\n}\\n\\n.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label {\\n\\twidth: 4em;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/* istanbul ignore next */\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join(\"\\n\");\n };\n}();\n\n/* istanbul ignore next */\nfunction apply(styleElement, index, remove, obj) {\n var css;\n if (remove) {\n css = \"\";\n } else {\n css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n }\n\n // For old IE\n /* istanbul ignore if */\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = styleElement.childNodes;\n if (childNodes[index]) {\n styleElement.removeChild(childNodes[index]);\n }\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index]);\n } else {\n styleElement.appendChild(cssNode);\n }\n }\n}\nvar singletonData = {\n singleton: null,\n singletonCounter: 0\n};\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") return {\n update: function update() {},\n remove: function remove() {}\n };\n\n // eslint-disable-next-line no-undef,no-use-before-define\n var styleIndex = singletonData.singletonCounter++;\n var styleElement =\n // eslint-disable-next-line no-undef,no-use-before-define\n singletonData.singleton || (\n // eslint-disable-next-line no-undef,no-use-before-define\n singletonData.singleton = options.insertStyleElement(options));\n return {\n update: function update(obj) {\n apply(styleElement, styleIndex, false, obj);\n },\n remove: function remove(obj) {\n apply(styleElement, styleIndex, true, obj);\n }\n };\n}\nmodule.exports = domAPI;","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-input-color{display:flex;flex-direction:row-reverse;width:100%}.ck.ck-input-color>input.ck.ck-input-text{flex-grow:1;min-width:auto}.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{overflow:hidden;position:relative}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{display:block;position:absolute}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-input-color>.ck.ck-input-text:focus{z-index: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-bottom-left-radius:0;border-top-left-radius:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-left:1px solid transparent}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button:not(:focus){border-right:1px solid transparent}.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:1px solid var(--ck-color-input-border);border-radius:0;height:20px;width:20px}.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>.ck.ck-input-color__button__preview__no-color-indicator{background:red;border-radius:2px;height:150%;left:50%;top:-30%;transform:rotate(45deg);transform-origin:50%;width:8%}.ck.ck-input-color .ck.ck-input-color__remove-color{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);width:100%}.ck.ck-input-color .ck.ck-input-color__remove-color:not(:focus){border-bottom:1px solid var(--ck-color-input-border)}[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-left:var(--ck-spacing-standard);margin-right:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-table/theme/colorinput.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/colorinput.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAKA,mBAEC,YAAa,CACb,0BAA2B,CAF3B,UAgCD,CA5BC,0CAEC,WAAY,CADZ,cAED,CAEA,sCACC,cAMD,CAHC,kFACC,YACD,CAGD,8CAEC,YAWD,CATC,kFAEC,eAAgB,CADhB,iBAOD,CAJC,0IAEC,aAAc,CADd,iBAED,CC7BF,+CCME,4BAA6B,CAD7B,yBDHF,CAFA,+CCWE,2BAA4B,CAD5B,wBDRF,CCcC,2CACC,SACD,CAIA,wEACC,SA0CD,CDjED,kFC2BG,2BAA4B,CAD5B,wBDxBH,CC2BG,8FACC,iCACD,CD/BH,kFCoCG,4BAA6B,CAD7B,yBDjCH,CCoCG,8FACC,kCACD,CAGD,oFACC,oDACD,CAEA,4GAKC,6CAA8C,CC/CjD,eAAgB,CD8Cb,WAAY,CADZ,UAcD,CCzDF,+PAEC,qCAED,CD2CG,oKAKC,cAA6B,CAC7B,iBAAkB,CAHlB,WAAY,CADZ,QAAS,CADT,QAAS,CAMT,uBAAwB,CACxB,oBAAqB,CAJrB,QAKD,CAKH,oDAIC,2BAA4B,CAC5B,4BAA6B,CAH7B,qEAAwE,CADxE,UA0BD,CApBC,gEACC,oDACD,CD7ED,8DCgFE,yBD9EF,CAFA,8DCoFE,wBDlFF,CCqFC,gEACC,uCAMD,CD9FD,0EC4FG,sCAAuC,CADvC,cDzFH\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-input-color {\\n\\twidth: 100%;\\n\\tdisplay: flex;\\n\\tflex-direction: row-reverse;\\n\\n\\t& > input.ck.ck-input-text {\\n\\t\\tmin-width: auto;\\n\\t\\tflex-grow: 1;\\n\\t}\\n\\n\\t& > div.ck.ck-dropdown {\\n\\t\\tmin-width: auto;\\n\\n\\t\\t/* This dropdown has no arrow but a color preview instead. */\\n\\t\\t& > .ck-input-color__button .ck-dropdown__arrow {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck.ck-input-color__button {\\n\\t\\t/* Resolving issue with misaligned buttons on Safari (see #10589) */\\n\\t\\tdisplay: flex;\\n\\n\\t\\t& .ck.ck-input-color__button__preview {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\toverflow: hidden;\\n\\n\\t\\t\\t& > .ck.ck-input-color__button__preview__no-color-indicator {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n@import \\\"../mixins/_rounded.css\\\";\\n\\n.ck.ck-input-color {\\n\\t& > .ck.ck-input-text {\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t}\\n\\n\\t\\t/* Make sure the focused input is always on top of the dropdown button so its\\n\\t\\t outline and border are never cropped (also when the input is read-only). */\\n\\t\\t&:focus {\\n\\t\\t\\tz-index: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck.ck-dropdown {\\n\\t\\t& > .ck.ck-button.ck-input-color__button {\\n\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t\\t\\tborder-bottom-left-radius: 0;\\n\\n\\t\\t\\t\\t&:not(:focus) {\\n\\t\\t\\t\\t\\tborder-left: 1px solid transparent;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t\\t\\tborder-bottom-right-radius: 0;\\n\\n\\t\\t\\t\\t&:not(:focus) {\\n\\t\\t\\t\\t\\tborder-right: 1px solid transparent;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&.ck-disabled {\\n\\t\\t\\t\\tbackground: var(--ck-color-input-disabled-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > .ck.ck-input-color__button__preview {\\n\\t\\t\\t\\t@mixin ck-rounded-corners;\\n\\n\\t\\t\\t\\twidth: 20px;\\n\\t\\t\\t\\theight: 20px;\\n\\t\\t\\t\\tborder: 1px solid var(--ck-color-input-border);\\n\\n\\t\\t\\t\\t& > .ck.ck-input-color__button__preview__no-color-indicator {\\n\\t\\t\\t\\t\\ttop: -30%;\\n\\t\\t\\t\\t\\tleft: 50%;\\n\\t\\t\\t\\t\\theight: 150%;\\n\\t\\t\\t\\t\\twidth: 8%;\\n\\t\\t\\t\\t\\tbackground: hsl(0, 100%, 50%);\\n\\t\\t\\t\\t\\tborder-radius: 2px;\\n\\t\\t\\t\\t\\ttransform: rotate(45deg);\\n\\t\\t\\t\\t\\ttransform-origin: 50%;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck.ck-input-color__remove-color {\\n\\t\\twidth: 100%;\\n\\t\\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\\n\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t\\tborder-bottom-right-radius: 0;\\n\\n\\t\\t&:not(:focus) {\\n\\t\\t\\tborder-bottom: 1px solid var(--ck-color-input-border);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tborder-top-right-radius: 0;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tborder-top-left-radius: 0;\\n\\t\\t}\\n\\n\\t\\t& .ck.ck-icon {\\n\\t\\t\\tmargin-right: var(--ck-spacing-standard);\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tmargin-right: 0;\\n\\t\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/label/label.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/label/label.css\"],\"names\":[],\"mappings\":\"AAKA,aACC,aACD,CAEA,mBACC,YACD,CCNA,aACC,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-label {\\n\\tdisplay: block;\\n}\\n\\n.ck.ck-voice-label {\\n\\tdisplay: none;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-label {\\n\\tfont-weight: bold;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-balloon-panel.ck-tooltip{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;z-index:calc(var(--ck-z-dialog) + 100);--ck-balloon-border-width:0px;--ck-balloon-arrow-offset:0px;--ck-balloon-arrow-half-width:4px;--ck-balloon-arrow-height:4px;--ck-tooltip-text-padding:4px;--ck-color-panel-background:var(--ck-color-tooltip-background);box-shadow:none;padding:0 var(--ck-spacing-medium)}.ck.ck-balloon-panel.ck-tooltip .ck-tooltip__text{color:var(--ck-color-tooltip-text);font-size:.9em;line-height:1.5}.ck.ck-balloon-panel.ck-tooltip.ck-tooltip_multi-line .ck-tooltip__text{display:inline-block;max-width:200px;padding:var(--ck-tooltip-text-padding) 0;white-space:break-spaces}.ck.ck-balloon-panel.ck-tooltip:before{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/tooltip/tooltip.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/tooltip/tooltip.css\"],\"names\":[],\"mappings\":\"AAOA,gCCEC,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBAAgB,CDFhB,sCAAyC,CEFzC,6BAA8B,CAC9B,6BAA8B,CAC9B,iCAAkC,CAClC,6BAA8B,CAC9B,6BAA8B,CAC9B,8DAA+D,CAkB/D,eAAgB,CAhBhB,kCFJD,CEMC,kDAGC,kCAAmC,CAFnC,cAAe,CACf,eAED,CAEA,wEAEC,oBAAqB,CAErB,eAAgB,CADhB,wCAAyC,CAFzC,wBAID,CAMA,uCACC,YACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../mixins/_unselectable.css\\\";\\n\\n.ck.ck-balloon-panel.ck-tooltip {\\n\\t@mixin ck-unselectable;\\n\\n\\tz-index: calc( var(--ck-z-dialog) + 100 );\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Makes element unselectable.\\n */\\n@define-mixin ck-unselectable {\\n\\t-moz-user-select: none;\\n\\t-webkit-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n\\n.ck.ck-balloon-panel.ck-tooltip {\\n\\t--ck-balloon-border-width: 0px;\\n\\t--ck-balloon-arrow-offset: 0px;\\n\\t--ck-balloon-arrow-half-width: 4px;\\n\\t--ck-balloon-arrow-height: 4px;\\n\\t--ck-tooltip-text-padding: 4px;\\n\\t--ck-color-panel-background: var(--ck-color-tooltip-background);\\n\\n\\tpadding: 0 var(--ck-spacing-medium);\\n\\n\\t& .ck-tooltip__text {\\n\\t\\tfont-size: .9em;\\n\\t\\tline-height: 1.5;\\n\\t\\tcolor: var(--ck-color-tooltip-text);\\n\\t}\\n\\n\\t&.ck-tooltip_multi-line .ck-tooltip__text {\\n\\t\\twhite-space: break-spaces;\\n\\t\\tdisplay: inline-block;\\n\\t\\tpadding: var(--ck-tooltip-text-padding) 0;\\n\\t\\tmax-width: 200px;\\n\\t}\\n\\n\\t/* Reset balloon panel styles */\\n\\tbox-shadow: none;\\n\\n\\t/* Hide the default shadow of the .ck-balloon-panel tip */\\n\\t&::before {\\n\\t\\tdisplay: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-dropdown-menu-menu-item-min-width:18em}.ck.ck-dropdown-menu-list__nested-menu__item{min-width:var(--ck-dropdown-menu-menu-item-min-width)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/menu/dropdownmenulistitem.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,2CACD,CAEA,6CACC,qDACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-dropdown-menu-menu-item-min-width: 18em;\\n}\\n\\n.ck.ck-dropdown-menu-list__nested-menu__item {\\n\\tmin-width: var(--ck-dropdown-menu-menu-item-min-width);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-menu-bar{background:var(--ck-color-base-background);border:1px solid var(--ck-color-toolbar-border);display:flex;flex-wrap:wrap;gap:var(--ck-spacing-small);justify-content:flex-start;padding:var(--ck-spacing-small);width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubar.css\"],\"names\":[],\"mappings\":\"AAKA,gBAIC,0CAA2C,CAG3C,+CAAgD,CANhD,YAAa,CACb,cAAe,CAIf,2BAA4B,CAH5B,0BAA2B,CAE3B,+BAAgC,CAGhC,UACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-menu-bar {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: flex-start;\\n\\tbackground: var(--ck-color-base-background);\\n\\tpadding: var(--ck-spacing-small);\\n\\tgap: var(--ck-spacing-small);\\n\\tborder: 1px solid var(--ck-color-toolbar-border);\\n\\twidth: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-form__header{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__header h2.ck-form__header__label{flex-grow:1}:root{--ck-form-header-height:44px}.ck.ck-form__header{border-bottom:1px solid var(--ck-color-base-border);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);padding:var(--ck-spacing-small) var(--ck-spacing-large)}[dir=ltr] .ck.ck-form__header>.ck-icon{margin-right:var(--ck-spacing-medium)}[dir=rtl] .ck.ck-form__header>.ck-icon{margin-left:var(--ck-spacing-medium)}.ck.ck-form__header .ck-form__header__label{--ck-font-size-base:15px;font-weight:700}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/formheader/formheader.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/formheader/formheader.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AAKA,oBAIC,kBAAmB,CAHnB,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CAEjB,6BAKD,CAHC,8CACC,WACD,CCPD,MACC,4BACD,CAEA,oBAIC,mDAAoD,CAFpD,mCAAoC,CACpC,wCAAyC,CAFzC,uDAmBD,CCzBC,uCDaE,qCCXF,CAFA,uCDiBE,oCCfF,CDmBA,4CACC,wBAAyB,CACzB,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-form__header {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\talign-items: center;\\n\\tjustify-content: space-between;\\n\\n\\t& h2.ck-form__header__label {\\n\\t\\tflex-grow: 1;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n:root {\\n\\t--ck-form-header-height: 44px;\\n}\\n\\n.ck.ck-form__header {\\n\\tpadding: var(--ck-spacing-small) var(--ck-spacing-large);\\n\\theight: var(--ck-form-header-height);\\n\\tline-height: var(--ck-form-header-height);\\n\\tborder-bottom: 1px solid var(--ck-color-base-border);\\n\\n\\t& > .ck-icon {\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tmargin-right: var(--ck-spacing-medium);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tmargin-left: var(--ck-spacing-medium);\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-form__header__label {\\n\\t\\t--ck-font-size-base: 15px;\\n\\t\\tfont-weight: bold;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement, attributes) {\n Object.keys(attributes).forEach(function (key) {\n styleElement.setAttribute(key, attributes[key]);\n });\n}\nmodule.exports = setAttributesWithoutAttributes;","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-menu-bar-menu-max-width:75vw;--ck-menu-bar-nested-menu-horizontal-offset:5px}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel{max-width:var(--ck-menu-bar-menu-max-width);position:absolute;z-index:var(--ck-z-panel)}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw{bottom:100%}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw{bottom:auto;top:100%}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se{left:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw{right:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es{left:calc(100% - var(--ck-menu-bar-nested-menu-horizontal-offset))}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es{top:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en{bottom:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws{right:calc(100% - var(--ck-menu-bar-nested-menu-horizontal-offset))}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws{top:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn{bottom:0}:root{--ck-menu-bar-menu-panel-max-width:75vw}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);border-radius:0;bottom:0;height:fit-content;max-width:var(--ck-menu-bar-menu-panel-max-width)}.ck-rounded-corners .ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel{box-shadow:var(--ck-drop-shadow),0 0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_es,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_se{border-top-left-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_sw,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ws{border-top-right-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_en,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_ne{border-bottom-left-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_nw,.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel.ck-menu-bar__menu__panel_position_wn{border-bottom-right-radius:0}.ck.ck-menu-bar__menu>.ck.ck-menu-bar__menu__panel:focus{outline:none}.ck.ck-menu-bar .ck-list-item-button:active,.ck.ck-menu-bar .ck-list-item-button:focus{border-color:transparent;box-shadow:none}.ck.ck-menu-bar.ck-menu-bar_focus-border-enabled .ck-list-item-button:active,.ck.ck-menu-bar.ck-menu-bar_focus-border-enabled .ck-list-item-button:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none;position:relative;z-index:2}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenupanel.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenupanel.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,iCAAkC,CAClC,+CACD,CAEA,mDAEC,2CAA4C,CAC5C,iBAAkB,CAFlB,yBAkDD,CA9CC,gLAEC,WACD,CAEA,gLAGC,WAAY,CADZ,QAED,CAEA,gLAEC,MACD,CAEA,gLAEC,OACD,CAEA,gLAEC,kEACD,CAEA,wFACC,KACD,CAEA,wFACC,QACD,CAEA,gLAEC,mEACD,CAEA,wFACC,KACD,CAEA,wFACC,QACD,CCnDD,MACC,uCACD,CAEA,mDAIC,oDAAqD,CACrD,sDAAuD,CCPvD,eAAgB,CDQhB,QAAS,CACT,kBAAmB,CACnB,iDA0BD,CClCC,6IAEC,qCAED,CDJD,mDEJC,oCFsCD,CAvBC,gLAEC,wBACD,CAEA,gLAEC,yBACD,CAEA,gLAEC,2BACD,CAEA,gLAEC,4BACD,CAEA,yDACC,YACD,CAKC,uFAEC,wBAAyB,CACzB,eACD,CAIA,yJGhDD,2BAA2B,CDF3B,2CAA8B,CCC9B,YAAa,CHoDX,iBAAkB,CAClB,SAID\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-menu-bar-menu-max-width: 75vw;\\n\\t--ck-menu-bar-nested-menu-horizontal-offset: 5px;\\n}\\n\\n.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel {\\n\\tz-index: var(--ck-z-panel);\\n\\tmax-width: var(--ck-menu-bar-menu-max-width);\\n\\tposition: absolute;\\n\\n\\t&.ck-menu-bar__menu__panel_position_ne,\\n\\t&.ck-menu-bar__menu__panel_position_nw {\\n\\t\\tbottom: 100%;\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_se,\\n\\t&.ck-menu-bar__menu__panel_position_sw {\\n\\t\\ttop: 100%;\\n\\t\\tbottom: auto;\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_ne,\\n\\t&.ck-menu-bar__menu__panel_position_se {\\n\\t\\tleft: 0px;\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_nw,\\n\\t&.ck-menu-bar__menu__panel_position_sw {\\n\\t\\tright: 0px;\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_es,\\n\\t&.ck-menu-bar__menu__panel_position_en {\\n\\t\\tleft: calc( 100% - var(--ck-menu-bar-nested-menu-horizontal-offset) );\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_es {\\n\\t\\ttop: 0px;\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_en {\\n\\t\\tbottom: 0px;\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_ws,\\n\\t&.ck-menu-bar__menu__panel_position_wn {\\n\\t\\tright: calc( 100% - var(--ck-menu-bar-nested-menu-horizontal-offset) );\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_ws {\\n\\t\\ttop: 0px;\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_wn {\\n\\t\\tbottom: 0px;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n@import \\\"../../../mixins/_focus.css\\\";\\n\\n:root {\\n\\t--ck-menu-bar-menu-panel-max-width: 75vw;\\n}\\n\\n.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel {\\n\\t@mixin ck-rounded-corners;\\n\\t@mixin ck-drop-shadow;\\n\\n\\tbackground: var(--ck-color-dropdown-panel-background);\\n\\tborder: 1px solid var(--ck-color-dropdown-panel-border);\\n\\tbottom: 0;\\n\\theight: fit-content;\\n\\tmax-width: var(--ck-menu-bar-menu-panel-max-width);\\n\\n\\t/* Corner border radius consistent with the button. */\\n\\t&.ck-menu-bar__menu__panel_position_es,\\n\\t&.ck-menu-bar__menu__panel_position_se {\\n\\t\\tborder-top-left-radius: 0;\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_ws,\\n\\t&.ck-menu-bar__menu__panel_position_sw {\\n\\t\\tborder-top-right-radius: 0;\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_en,\\n\\t&.ck-menu-bar__menu__panel_position_ne {\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t}\\n\\n\\t&.ck-menu-bar__menu__panel_position_wn,\\n\\t&.ck-menu-bar__menu__panel_position_nw {\\n\\t\\tborder-bottom-right-radius: 0;\\n\\t}\\n\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n}\\n\\n.ck.ck-menu-bar {\\n\\t& .ck-list-item-button {\\n\\t\\t&:focus,\\n\\t\\t&:active {\\n\\t\\t\\tborder-color: transparent;\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-menu-bar_focus-border-enabled .ck-list-item-button {\\n\\t\\t&:focus,\\n\\t\\t&:active {\\n\\t\\t\\t/* Fix truncated shadows due to rendering order. */\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tz-index: 2;\\n\\n\\t\\t\\t@mixin ck-focus-ring;\\n\\t\\t\\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A visual style of focused element's border.\\n */\\n@define-mixin ck-focus-ring {\\n\\t/* Disable native outline. */\\n\\toutline: none;\\n\\tborder: var(--ck-focus-ring)\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button{border-radius:0;padding:var(--ck-spacing-tiny) calc(var(--ck-spacing-standard)*2);width:100%}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button:focus{border-color:transparent;box-shadow:none}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button:focus:not(.ck-on){background:var(--ck-color-button-default-hover-background)}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-button__label{flex-grow:1;overflow:hidden;text-overflow:ellipsis}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button.ck-disabled>.ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button.ck-icon-spacing:not(:has(.ck-button__icon))>.ck-button__label{margin-left:calc(var(--ck-icon-size) - var(--ck-spacing-small))}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{margin-right:calc(var(--ck-spacing-small)*-1);transform:rotate(-90deg)}[dir=rtl] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{margin-left:calc(var(--ck-spacing-small)*-1);transform:rotate(90deg)}.ck.ck-button.ck-dropdown-menu-list__nested-menu__button.ck-disabled>.ck-dropdown-menu-list__nested-menu__button__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=ltr] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{margin-left:var(--ck-spacing-standard);right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-dropdown-menu-list__nested-menu__button>.ck-dropdown-menu-list__nested-menu__button__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenubutton.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/menu/dropdownmenubutton.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AAKA,kGACC,mBAAoB,CACpB,2BACD,CCIA,yDAGC,eAAgB,CADhB,iEAAoE,CADpE,UA2ED,CAvEC,+DACC,wBAAyB,CACzB,eAKD,CAHC,2EACC,0DACD,CAGD,2EACC,WAAY,CACZ,eAAgB,CAChB,sBACD,CAEA,uFCvBA,kCDyBA,CAGA,uHACC,+DACD,CAEA,4GACC,mCAeD,CEnDA,sHF0CE,6CAAgD,CAHhD,wBErCF,CAFA,sHFiDE,4CAA+C,CAH/C,uBE5CF,CFmDA,wHClDA,kCDoDA,CAGC,6FACC,oCACD,CAEA,sHAIC,sCAAuC,CAHvC,gCAID,CAIA,6FACC,qCACD,CAEA,sHACC,+BAAgC,CAGhC,oCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-dropdown-menu-list__nested-menu__button > .ck-dropdown-menu-list__nested-menu__button__arrow {\\n\\tpointer-events: none;\\n\\tz-index: var(--ck-z-default);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../../mixins/_disabled.css\\\";\\n@import \\\"../../../mixins/_button.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n/*\\n * All menu buttons.\\n */\\n.ck.ck-button.ck-dropdown-menu-list__nested-menu__button {\\n\\twidth: 100%;\\n\\tpadding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard));\\n\\tborder-radius: 0;\\n\\n\\t&:focus {\\n\\t\\tborder-color: transparent;\\n\\t\\tbox-shadow: none;\\n\\n\\t\\t&:not(.ck-on) {\\n\\t\\t\\tbackground: var(--ck-color-button-default-hover-background);\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-button__label {\\n\\t\\tflex-grow: 1;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&.ck-disabled > .ck-button__label {\\n\\t\\t@mixin ck-disabled;\\n\\t}\\n\\n\\t/* Spacing in buttons that miss the icon. */\\n\\t&.ck-icon-spacing:not(:has(.ck-button__icon)) > .ck-button__label {\\n\\t\\tmargin-left: calc(var(--ck-icon-size) - var(--ck-spacing-small));\\n\\t}\\n\\n\\t& > .ck-dropdown-menu-list__nested-menu__button__arrow {\\n\\t\\twidth: var(--ck-dropdown-arrow-size);\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\ttransform: rotate(-90deg);\\n\\n\\t\\t\\t/* Nudge the arrow gently to the right because its center of gravity is to the left */\\n\\t\\t\\tmargin-right: calc(-1 * var(--ck-spacing-small));\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\ttransform: rotate(90deg);\\n\\n\\t\\t\\t/* Nudge the arrow gently to the left because its center of gravity is to the right (after rotation). */\\n\\t\\t\\tmargin-left: calc(-1 * var(--ck-spacing-small));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-disabled > .ck-dropdown-menu-list__nested-menu__button__arrow {\\n\\t\\t@mixin ck-disabled;\\n\\t}\\n\\n\\t@mixin ck-dir ltr {\\n\\t\\t&:not(.ck-button_with-text) {\\n\\t\\t\\tpadding-left: var(--ck-spacing-small);\\n\\t\\t}\\n\\n\\t\\t& > .ck-dropdown-menu-list__nested-menu__button__arrow {\\n\\t\\t\\tright: var(--ck-spacing-standard);\\n\\n\\t\\t\\t/* A space to accommodate the triangle. */\\n\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-dir rtl {\\n\\t\\t&:not(.ck-button_with-text) {\\n\\t\\t\\tpadding-right: var(--ck-spacing-small);\\n\\t\\t}\\n\\n\\t\\t& > .ck-dropdown-menu-list__nested-menu__button__arrow {\\n\\t\\t\\tleft: var(--ck-spacing-standard);\\n\\n\\t\\t\\t/* A space to accommodate the triangle. */\\n\\t\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A class which indicates that an element holding it is disabled.\\n */\\n@define-mixin ck-disabled {\\n\\topacity: var(--ck-disabled-opacity);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button{border-radius:0}.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container,.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container .ck-spinner{--ck-toolbar-spinner-size:20px}.ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container{font-size:var(--ck-icon-font-size)}[dir=ltr] .ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container{margin-right:var(--ck-spacing-medium)}[dir=rtl] .ck.ck-menu-bar__menu .ck-button.ck-menu-bar__menu__item__button>.ck-spinner-container{margin-left:var(--ck-spacing-medium)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenulistitembutton.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AAWC,iEACC,eAoBD,CAlBC,0LAGC,8BACD,CAEA,uFAEC,kCASD,CCzBD,iGDmBG,qCCjBH,CAFA,iGDuBG,oCCrBH\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-menu-bar__menu {\\n\\t/*\\n\\t * List item buttons.\\n\\t */\\n\\t& .ck-button.ck-menu-bar__menu__item__button {\\n\\t\\tborder-radius: 0;\\n\\n\\t\\t& > .ck-spinner-container,\\n\\t\\t& > .ck-spinner-container .ck-spinner {\\n\\t\\t\\t/* These styles correspond to .ck-icon so that the spinner seamlessly replaces the icon. */\\n\\t\\t\\t--ck-toolbar-spinner-size: 20px;\\n\\t\\t}\\n\\n\\t\\t& > .ck-spinner-container {\\n\\t\\t\\t/* This ensures margins corresponding to the .ck-icon. */\\n\\t\\t\\tfont-size: var(--ck-icon-font-size);\\n\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tmargin-right: var(--ck-spacing-medium);\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tmargin-left: var(--ck-spacing-medium);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-content .page-break{align-items:center;clear:both;display:flex;justify-content:center;padding:5px 0;position:relative}.ck-content .page-break:after{border-bottom:2px dashed #c4c4c4;content:\"\";position:absolute;width:100%}.ck-content .page-break__label{background:#fff;border:1px solid #c4c4c4;border-radius:2px;box-shadow:2px 2px 1px rgba(0,0,0,.15);color:#333;display:block;font-family:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;font-size:.75em;font-weight:700;padding:.3em .6em;position:relative;text-transform:uppercase;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}@media print{.ck-content .page-break{padding:0}.ck-content .page-break:after{display:none}.ck-content :has(+.page-break){margin-bottom:0}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-page-break/theme/pagebreak.css\"],\"names\":[],\"mappings\":\"AAKA,wBAKC,kBAAmB,CAHnB,UAAW,CAEX,YAAa,CAEb,sBAAuB,CAHvB,aAAc,CAFd,iBAaD,CANC,8BAGC,gCAAyC,CAFzC,UAAW,CACX,iBAAkB,CAElB,UACD,CAGD,+BAYC,eAA4B,CAN5B,wBAAiC,CACjC,iBAAkB,CAMlB,sCAA6C,CAF7C,UAAsB,CAPtB,aAAc,CAId,qDAA0D,CAC1D,eAAiB,CACjB,eAAiB,CAPjB,iBAAkB,CAFlB,iBAAkB,CAIlB,wBAAyB,CAWzB,wBAAyB,CACzB,qBAAsB,CACtB,oBAAqB,CACrB,gBAAiB,CAjBjB,SAkBD,CAGA,aACC,wBACC,SAKD,CAHC,8BACC,YACD,CASD,+BACC,eACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck-content .page-break {\\n\\tposition: relative;\\n\\tclear: both;\\n\\tpadding: 5px 0;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\n\\t&::after {\\n\\t\\tcontent: '';\\n\\t\\tposition: absolute;\\n\\t\\tborder-bottom: 2px dashed hsl(0, 0%, 77%);\\n\\t\\twidth: 100%;\\n\\t}\\n}\\n\\n.ck-content .page-break__label {\\n\\tposition: relative;\\n\\tz-index: 1;\\n\\tpadding: .3em .6em;\\n\\tdisplay: block;\\n\\ttext-transform: uppercase;\\n\\tborder: 1px solid hsl(0, 0%, 77%);\\n\\tborder-radius: 2px;\\n\\tfont-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\\n\\tfont-size: 0.75em;\\n\\tfont-weight: bold;\\n\\tcolor: hsl(0, 0%, 20%);\\n\\tbackground: hsl(0, 0%, 100%);\\n\\tbox-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);\\n\\n\\t/* Disable the possibility to select the label text by the user. */\\n\\t-webkit-user-select: none;\\n\\t-moz-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none;\\n}\\n\\n/* Do not show the page break element inside the print preview window. */\\n@media print {\\n\\t.ck-content .page-break {\\n\\t\\tpadding: 0;\\n\\n\\t\\t&::after {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * From time to time placing page-break directly after a block element with margin causes appending a new blank page in pagination mode.\\n\\t * Removing margin-bottom from the block element fixes that issue and the margin is not being moved to the next blank page.\\n\\t *\\n\\t * Keep this in sync with the pagination plugins.\\n\\t */\\n\\t.ck-content *:has(+ .page-break) {\\n\\t\\tmargin-bottom: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-todo-list-checkmark-size:16px}.ck-content .todo-list{list-style:none}.ck-content .todo-list li{margin-bottom:5px;position:relative}.ck-content .todo-list li .todo-list{margin-top:5px}.ck-content .todo-list .todo-list__label>input{-webkit-appearance:none;border:0;display:inline-block;height:var(--ck-todo-list-checkmark-size);left:-25px;margin-left:0;margin-right:-15px;position:relative;right:0;vertical-align:middle;width:var(--ck-todo-list-checkmark-size)}.ck-content[dir=rtl] .todo-list .todo-list__label>input{left:0;margin-left:-15px;margin-right:0;right:-25px}.ck-content .todo-list .todo-list__label>input:before{border:1px solid #333;border-radius:2px;box-sizing:border-box;content:\"\";display:block;height:100%;position:absolute;transition:box-shadow .25s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.ck-content .todo-list .todo-list__label>input:before{transition:none}}.ck-content .todo-list .todo-list__label>input:after{border-color:transparent;border-style:solid;border-width:0 calc(var(--ck-todo-list-checkmark-size)/8) calc(var(--ck-todo-list-checkmark-size)/8) 0;box-sizing:content-box;content:\"\";display:block;height:calc(var(--ck-todo-list-checkmark-size)/2.6);left:calc(var(--ck-todo-list-checkmark-size)/3);pointer-events:none;position:absolute;top:calc(var(--ck-todo-list-checkmark-size)/5.3);transform:rotate(45deg);width:calc(var(--ck-todo-list-checkmark-size)/5.3)}.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}.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type=checkbox]{position:absolute}.ck-editor__editable.ck-content .todo-list .todo-list__label>input,.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input{cursor:pointer}.ck-editor__editable.ck-content .todo-list .todo-list__label>input:hover:before,.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input:hover:before{box-shadow:0 0 0 5px rgba(0,0,0,.1)}.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input{-webkit-appearance:none;border:0;display:inline-block;height:var(--ck-todo-list-checkmark-size);left:-25px;margin-left:0;margin-right:-15px;position:relative;right:0;vertical-align:middle;width:var(--ck-todo-list-checkmark-size)}.ck-editor__editable.ck-content[dir=rtl] .todo-list .todo-list__label>span[contenteditable=false]>input{left:0;margin-left:-15px;margin-right:0;right:-25px}.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input:before{border:1px solid #333;border-radius:2px;box-sizing:border-box;content:\"\";display:block;height:100%;position:absolute;transition:box-shadow .25s ease-in-out;width:100%}@media (prefers-reduced-motion:reduce){.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input:before{transition:none}}.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input:after{border-color:transparent;border-style:solid;border-width:0 calc(var(--ck-todo-list-checkmark-size)/8) calc(var(--ck-todo-list-checkmark-size)/8) 0;box-sizing:content-box;content:\"\";display:block;height:calc(var(--ck-todo-list-checkmark-size)/2.6);left:calc(var(--ck-todo-list-checkmark-size)/3);pointer-events:none;position:absolute;top:calc(var(--ck-todo-list-checkmark-size)/5.3);transform:rotate(45deg);width:calc(var(--ck-todo-list-checkmark-size)/5.3)}.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input[checked]:before{background:#26ab33;border-color:#26ab33}.ck-editor__editable.ck-content .todo-list .todo-list__label>span[contenteditable=false]>input[checked]:after{border-color:#fff}.ck-editor__editable.ck-content .todo-list .todo-list__label.todo-list__label_without-description input[type=checkbox]{position:absolute}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-list/theme/todolist.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,kCACD,CA4EA,uBACC,eAwBD,CAtBC,0BAEC,iBAAkB,CADlB,iBAMD,CAHC,qCACC,cACD,CAIA,+CAtFD,uBAAwB,CAQxB,QAAS,CAPT,oBAAqB,CAGrB,yCAA0C,CAO1C,UAAW,CAGX,aAAc,CAFd,kBAAmB,CAVnB,iBAAkB,CAWlB,OAAQ,CARR,qBAAsB,CAFtB,wCAqFC,CAvED,wDACC,MAAO,CAGP,iBAAkB,CAFlB,cAAe,CACf,WAED,CAEA,sDAOC,qBAAiC,CACjC,iBAAkB,CALlB,qBAAsB,CACtB,UAAW,CAHX,aAAc,CAKd,WAAY,CAJZ,iBAAkB,CAOlB,sCAAwC,CAJxC,UASD,CAHC,uCAXD,sDAYE,eAEF,CADC,CAGD,qDAaC,wBAAyB,CADzB,kBAAmB,CAEnB,sGAA+G,CAX/G,sBAAuB,CAEvB,UAAW,CAJX,aAAc,CAUd,mDAAwD,CAHxD,+CAAoD,CAJpD,mBAAoB,CAFpB,iBAAkB,CAOlB,gDAAqD,CAMrD,uBAAwB,CALxB,kDAMD,CAGC,+DACC,kBAA8B,CAC9B,oBACD,CAEA,8DACC,iBACD,CAwBA,wEACC,qBACD,CAEA,mGACC,iBACD,CAYD,kKAEC,cAKD,CAHC,4LACC,mCACD,CAMD,+FAxHA,uBAAwB,CAQxB,QAAS,CAPT,oBAAqB,CAGrB,yCAA0C,CAO1C,UAAW,CAGX,aAAc,CAFd,kBAAmB,CAVnB,iBAAkB,CAWlB,OAAQ,CARR,qBAAsB,CAFtB,wCAuHA,CAzGA,wGACC,MAAO,CAGP,iBAAkB,CAFlB,cAAe,CACf,WAED,CAEA,sGAOC,qBAAiC,CACjC,iBAAkB,CALlB,qBAAsB,CACtB,UAAW,CAHX,aAAc,CAKd,WAAY,CAJZ,iBAAkB,CAOlB,sCAAwC,CAJxC,UASD,CAHC,uCAXD,sGAYE,eAEF,CADC,CAGD,qGAaC,wBAAyB,CADzB,kBAAmB,CAEnB,sGAA+G,CAX/G,sBAAuB,CAEvB,UAAW,CAJX,aAAc,CAUd,mDAAwD,CAHxD,+CAAoD,CAJpD,mBAAoB,CAFpB,iBAAkB,CAOlB,gDAAqD,CAMrD,uBAAwB,CALxB,kDAMD,CAGC,+GACC,kBAA8B,CAC9B,oBACD,CAEA,8GACC,iBACD,CA2DA,uHACC,iBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-todo-list-checkmark-size: 16px;\\n}\\n\\n@define-mixin todo-list-checkbox {\\n\\t-webkit-appearance: none;\\n\\tdisplay: inline-block;\\n\\tposition: relative;\\n\\twidth: var(--ck-todo-list-checkmark-size);\\n\\theight: var(--ck-todo-list-checkmark-size);\\n\\tvertical-align: middle;\\n\\n\\t/* Needed on iOS */\\n\\tborder: 0;\\n\\n\\t/* LTR styles */\\n\\tleft: -25px;\\n\\tmargin-right: -15px;\\n\\tright: 0;\\n\\tmargin-left: 0;\\n\\n\\t/* RTL styles */\\n\\t[dir=rtl]& {\\n\\t\\tleft: 0;\\n\\t\\tmargin-right: 0;\\n\\t\\tright: -25px;\\n\\t\\tmargin-left: -15px;\\n\\t}\\n\\n\\t&::before {\\n\\t\\tdisplay: block;\\n\\t\\tposition: absolute;\\n\\t\\tbox-sizing: border-box;\\n\\t\\tcontent: '';\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\tborder: 1px solid hsl(0, 0%, 20%);\\n\\t\\tborder-radius: 2px;\\n\\t\\ttransition: 250ms ease-in-out box-shadow;\\n\\n\\t\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\t\\ttransition: none;\\n\\t\\t}\\n\\t}\\n\\n\\t&::after {\\n\\t\\tdisplay: block;\\n\\t\\tposition: absolute;\\n\\t\\tbox-sizing: content-box;\\n\\t\\tpointer-events: none;\\n\\t\\tcontent: '';\\n\\n\\t\\t/* Calculate tick position, size and border-width proportional to the checkmark size. */\\n\\t\\tleft: calc( var(--ck-todo-list-checkmark-size) / 3 );\\n\\t\\ttop: calc( var(--ck-todo-list-checkmark-size) / 5.3 );\\n\\t\\twidth: calc( var(--ck-todo-list-checkmark-size) / 5.3 );\\n\\t\\theight: calc( var(--ck-todo-list-checkmark-size) / 2.6 );\\n\\t\\tborder-style: solid;\\n\\t\\tborder-color: transparent;\\n\\t\\tborder-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0;\\n\\t\\ttransform: rotate(45deg);\\n\\t}\\n\\n\\t&[checked] {\\n\\t\\t&::before {\\n\\t\\t\\tbackground: hsl(126, 64%, 41%);\\n\\t\\t\\tborder-color: hsl(126, 64%, 41%);\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tborder-color: hsl(0, 0%, 100%);\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\n * To-do list content styles.\\n */\\n.ck-content .todo-list {\\n\\tlist-style: none;\\n\\n\\t& li {\\n\\t\\tposition: relative;\\n\\t\\tmargin-bottom: 5px;\\n\\n\\t\\t& .todo-list {\\n\\t\\t\\tmargin-top: 5px;\\n\\t\\t}\\n\\t}\\n\\n\\t& .todo-list__label {\\n\\t\\t& > input {\\n\\t\\t\\t@mixin todo-list-checkbox;\\n\\t\\t}\\n\\n\\t\\t& .todo-list__label__description {\\n\\t\\t\\tvertical-align: middle;\\n\\t\\t}\\n\\n\\t\\t&.todo-list__label_without-description input[type=checkbox] {\\n\\t\\t\\tposition: absolute;\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\n * To-do list editing view styles.\\n */\\n.ck-editor__editable.ck-content .todo-list .todo-list__label {\\n\\t/*\\n\\t * To-do list should be interactive only during the editing\\n\\t * (https://github.com/ckeditor/ckeditor5/issues/2090).\\n\\t */\\n\\t& > input,\\n\\t& > span[contenteditable=false] > input {\\n\\t\\tcursor: pointer;\\n\\n\\t\\t&:hover::before {\\n\\t\\t\\tbox-shadow: 0 0 0 5px hsla(0, 0%, 0%, 0.1);\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Document Lists - editing view has an additional span around checkbox.\\n\\t */\\n\\t& > span[contenteditable=false] > input {\\n\\t\\t@mixin todo-list-checkbox;\\n\\t}\\n\\n\\t&.todo-list__label_without-description {\\n\\t\\t& input[type=checkbox] {\\n\\t\\t\\tposition: absolute;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-search>.ck-labeled-field-view>.ck-labeled-field-view__input-wrapper>.ck-icon{position:absolute;top:50%;transform:translateY(-50%)}[dir=ltr] .ck.ck-search>.ck-labeled-field-view>.ck-labeled-field-view__input-wrapper>.ck-icon{left:var(--ck-spacing-medium)}[dir=rtl] .ck.ck-search>.ck-labeled-field-view>.ck-labeled-field-view__input-wrapper>.ck-icon{right:var(--ck-spacing-medium)}.ck.ck-search>.ck-labeled-field-view .ck-search__reset{position:absolute;top:50%;transform:translateY(-50%)}.ck.ck-search>.ck-search__results>.ck-search__info>span:first-child{display:block}.ck.ck-search>.ck-search__results>.ck-search__info:not(.ck-hidden)~*{display:none}:root{--ck-search-field-view-horizontal-spacing:calc(var(--ck-icon-size) + var(--ck-spacing-medium))}.ck.ck-search>.ck-labeled-field-view .ck-input{width:100%}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon{--ck-labeled-field-label-default-position-x:var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon>.ck-labeled-field-view__input-wrapper>.ck-icon{opacity:.5;pointer-events:none}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon .ck-input{width:100%}[dir=ltr] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon .ck-input,[dir=rtl] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-icon .ck-input:not(.ck-input-text_empty){padding-left:var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset{--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset.ck-labeled-field-view_empty{--ck-labeled-field-empty-unfocused-max-width:100% - var(--ck-search-field-view-horizontal-spacing) - var(--ck-spacing-medium)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset{background:none;min-height:auto;min-width:auto;opacity:.5;padding:0}[dir=ltr] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset{right:var(--ck-spacing-medium)}[dir=rtl] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset{left:var(--ck-spacing-medium)}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-search__reset:hover{opacity:1}.ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-input{width:100%}[dir=ltr] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-input:not(.ck-input-text_empty),[dir=rtl] .ck.ck-search>.ck-labeled-field-view.ck-search__query_with-reset .ck-input{padding-right:var(--ck-search-field-view-horizontal-spacing)}.ck.ck-search>.ck-search__results{min-width:100%}.ck.ck-search>.ck-search__results>.ck-search__info{padding:var(--ck-spacing-medium) var(--ck-spacing-large);width:100%}.ck.ck-search>.ck-search__results>.ck-search__info *{white-space:normal}.ck.ck-search>.ck-search__results>.ck-search__info>span:first-child{font-weight:700}.ck.ck-search>.ck-search__results>.ck-search__info>span:last-child{margin-top:var(--ck-spacing-medium)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/search/search.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/search/search.css\"],\"names\":[],\"mappings\":\"AASE,oFACC,iBAAkB,CAClB,OAAQ,CACR,0BASD,CCfD,8FDSG,6BCPH,CAFA,8FDaG,8BCXH,CDeC,uDACC,iBAAkB,CAClB,OAAQ,CACR,0BACD,CAKC,oEACC,aACD,CAGA,qEACC,YACD,CEhCH,MACC,8FACD,CAIE,+CACC,UACD,CAEA,gEACC,0FAoBD,CAlBC,+GACC,UAAW,CACX,mBACD,CAEA,0EACC,UAWD,CAJE,kMACC,2DACD,CAKH,iEACC,sGAwCD,CAtCC,6FACC,6HACD,CAEA,mFAIC,eAAgB,CAFhB,eAAgB,CADhB,cAAe,CAIf,UAAW,CACX,SAaD,CD5DF,6FCkDI,8BDhDJ,CAFA,6FCsDI,6BDpDJ,CCuDG,yFACC,SACD,CAGD,2EACC,UAWD,CD1EF,oMCwEI,4DDtEJ,CC4EA,kCACC,cAkBD,CAhBC,mDAEC,wDAAyD,CADzD,UAcD,CAXC,qDACC,kBACD,CAEA,oEACC,eACD,CAEA,mEACC,mCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-search {\\n\\t& > .ck-labeled-field-view {\\n\\t\\t& > .ck-labeled-field-view__input-wrapper > .ck-icon {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 50%;\\n\\t\\t\\ttransform: translateY(-50%);\\n\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tleft: var(--ck-spacing-medium);\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tright: var(--ck-spacing-medium);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t& .ck-search__reset {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 50%;\\n\\t\\t\\ttransform: translateY(-50%);\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-search__results {\\n\\t\\t& > .ck-search__info {\\n\\t\\t\\t& > span:first-child {\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t}\\n\\n\\t\\t\\t/* Hide the filtered view when nothing was found */\\n\\t\\t\\t&:not(.ck-hidden) ~ * {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n:root {\\n\\t--ck-search-field-view-horizontal-spacing: calc(var(--ck-icon-size) + var(--ck-spacing-medium));\\n}\\n\\n.ck.ck-search {\\n\\t& > .ck-labeled-field-view {\\n\\t\\t& .ck-input {\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\n\\t\\t&.ck-search__query_with-icon {\\n\\t\\t\\t--ck-labeled-field-label-default-position-x: var(--ck-search-field-view-horizontal-spacing);\\n\\n\\t\\t\\t& > .ck-labeled-field-view__input-wrapper > .ck-icon {\\n\\t\\t\\t\\topacity: .5;\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-input {\\n\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\t\\tpadding-left: var(--ck-search-field-view-horizontal-spacing);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\t\\t&:not(.ck-input-text_empty) {\\n\\t\\t\\t\\t\\t\\tpadding-left: var(--ck-search-field-view-horizontal-spacing);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&.ck-search__query_with-reset {\\n\\t\\t\\t--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-search-field-view-horizontal-spacing);\\n\\n\\t\\t\\t&.ck-labeled-field-view_empty {\\n\\t\\t\\t\\t--ck-labeled-field-empty-unfocused-max-width: 100% - var(--ck-search-field-view-horizontal-spacing) - var(--ck-spacing-medium);\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-search__reset {\\n\\t\\t\\t\\tmin-width: auto;\\n\\t\\t\\t\\tmin-height: auto;\\n\\n\\t\\t\\t\\tbackground: none;\\n\\t\\t\\t\\topacity: .5;\\n\\t\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\t\\tright: var(--ck-spacing-medium);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\t\\tleft: var(--ck-spacing-medium);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:hover {\\n\\t\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-input {\\n\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\t\\t&:not(.ck-input-text_empty) {\\n\\t\\t\\t\\t\\t\\tpadding-right: var(--ck-search-field-view-horizontal-spacing);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\t\\tpadding-right: var(--ck-search-field-view-horizontal-spacing);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-search__results {\\n\\t\\tmin-width: 100%;\\n\\n\\t\\t& > .ck-search__info {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large);\\n\\n\\t\\t\\t& * {\\n\\t\\t\\t\\twhite-space: normal;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > span:first-child {\\n\\t\\t\\t\\tfont-weight: bold;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > span:last-child {\\n\\t\\t\\t\\tmargin-top: var(--ck-spacing-medium);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `: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-panel)}.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-border-width:1px;--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{background:var(--ck-color-panel-background);border:var(--ck-balloon-border-width) solid var(--ck-color-panel-border);border-radius:0;min-height:15px}.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}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{border-style:solid;height:0;width:0}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-width:0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_n]:before{border-color:transparent transparent var(--ck-color-panel-border) transparent;margin-top:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_n]:after{border-color:transparent transparent var(--ck-color-panel-background) transparent;margin-top:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-width:var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-color:var(--ck-color-panel-border) transparent transparent;filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow));margin-bottom:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_s]:after{border-color:var(--ck-color-panel-background) transparent transparent transparent;margin-bottom:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_e]:after,.ck.ck-balloon-panel[class*=arrow_e]:before{border-width:var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_e]:before{border-color:transparent transparent transparent var(--ck-color-panel-border);margin-right:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_e]:after{border-color:transparent transparent transparent var(--ck-color-panel-background);margin-right:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_w]:after,.ck.ck-balloon-panel[class*=arrow_w]:before{border-width:var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0}.ck.ck-balloon-panel[class*=arrow_w]:before{border-color:transparent var(--ck-color-panel-border) transparent transparent;margin-left:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_w]:after{border-color:transparent var(--ck-color-panel-background) transparent transparent;margin-left:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.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{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);right:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%;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)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:before{margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);right:calc(var(--ck-balloon-arrow-height)*-1);top:50%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:before{left:calc(var(--ck-balloon-arrow-height)*-1);margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);top:50%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonpanel.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonpanel.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAKA,MAEC,8DACD,CAEA,qBACC,YAAa,CACb,iBAAkB,CAElB,yBAyCD,CAtCE,+GAEC,UAAW,CACX,iBACD,CAEA,wDACC,6CACD,CAEA,uDACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAIA,4CACC,6CACD,CAEA,2CACC,uDACD,CAGD,8CACC,aACD,CC9CD,MACC,6BAA8B,CAC9B,6BAA8B,CAC9B,8BAA+B,CAC/B,iCAAkC,CAClC,oEACD,CAEA,qBAMC,2CAA4C,CAC5C,wEAAyE,CCZzE,eAAgB,CDShB,eA0LD,CCjMC,iFAEC,qCAED,CDDD,qBEPC,oCFqMD,CApLE,+GAIC,kBAAmB,CADnB,QAAS,CADT,OAGD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,kDACD,CAEA,2CACC,iFAAkF,CAClF,gFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,iEAAkE,CAClE,uDAAwD,CACxD,qDACD,CAEA,2CACC,iFAAkF,CAClF,mFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,oDACD,CAEA,2CACC,iFAAkF,CAClF,kFACD,CAIA,uFAEC,mHACD,CAEA,4CACC,6EAA8E,CAC9E,mDACD,CAEA,2CACC,iFAAkF,CAClF,iFACD,CAIA,yGAEC,QAAS,CACT,uDAA0D,CAC1D,2CACD,CAIA,2GAEC,+CAAkD,CAClD,2CACD,CAIA,2GAEC,gDAAmD,CACnD,2CACD,CAIA,yGAIC,8CAAiD,CAFjD,QAAS,CACT,uDAED,CAIA,2GAGC,8CAAiD,CADjD,+CAED,CAIA,2GAGC,8CAAiD,CADjD,gDAED,CAIA,6GAIC,8CAAiD,CADjD,uDAA0D,CAD1D,SAGD,CAIA,6GAIC,8CAAiD,CAFjD,QAAS,CACT,sDAED,CAIA,6GAGC,uDAA0D,CAD1D,SAAU,CAEV,2CACD,CAIA,6GAEC,QAAS,CACT,sDAAyD,CACzD,2CACD,CAIA,yGAGC,sDAAyD,CADzD,6CAAgD,CAEhD,OACD,CAIA,yGAEC,4CAA+C,CAC/C,sDAAyD,CACzD,OACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t/* Make sure the balloon arrow does not float over its children. */\\n\\t--ck-balloon-panel-arrow-z-index: calc(var(--ck-z-default) - 3);\\n}\\n\\n.ck.ck-balloon-panel {\\n\\tdisplay: none;\\n\\tposition: absolute;\\n\\n\\tz-index: var(--ck-z-panel);\\n\\n\\t&.ck-balloon-panel_with-arrow {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\tposition: absolute;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tz-index: var(--ck-balloon-panel-arrow-z-index);\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_n\\\"] {\\n\\t\\t&::before {\\n\\t\\t\\tz-index: var(--ck-balloon-panel-arrow-z-index);\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_s\\\"] {\\n\\t\\t&::before {\\n\\t\\t\\tz-index: var(--ck-balloon-panel-arrow-z-index);\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_visible {\\n\\t\\tdisplay: block;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n\\n:root {\\n\\t--ck-balloon-border-width: 1px;\\n\\t--ck-balloon-arrow-offset: 2px;\\n\\t--ck-balloon-arrow-height: 10px;\\n\\t--ck-balloon-arrow-half-width: 8px;\\n\\t--ck-balloon-arrow-drop-shadow: 0 2px 2px var(--ck-color-shadow-drop);\\n}\\n\\n.ck.ck-balloon-panel {\\n\\t@mixin ck-rounded-corners;\\n\\t@mixin ck-drop-shadow;\\n\\n\\tmin-height: 15px;\\n\\n\\tbackground: var(--ck-color-panel-background);\\n\\tborder: var(--ck-balloon-border-width) solid var(--ck-color-panel-border);\\n\\n\\t&.ck-balloon-panel_with-arrow {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\twidth: 0;\\n\\t\\t\\theight: 0;\\n\\t\\t\\tborder-style: solid;\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_n\\\"] {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tborder-width: 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width);\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tborder-color: transparent transparent var(--ck-color-panel-border) transparent;\\n\\t\\t\\tmargin-top: calc( -1 * var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tborder-color: transparent transparent var(--ck-color-panel-background) transparent;\\n\\t\\t\\tmargin-top: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_s\\\"] {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tborder-width: var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width);\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tborder-color: var(--ck-color-panel-border) transparent transparent;\\n\\t\\t\\tfilter: drop-shadow(var(--ck-balloon-arrow-drop-shadow));\\n\\t\\t\\tmargin-bottom: calc( -1 * var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tborder-color: var(--ck-color-panel-background) transparent transparent transparent;\\n\\t\\t\\tmargin-bottom: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_e\\\"] {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tborder-width: var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height);\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tborder-color: transparent transparent transparent var(--ck-color-panel-border);\\n\\t\\t\\tmargin-right: calc( -1 * var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tborder-color: transparent transparent transparent var(--ck-color-panel-background);\\n\\t\\t\\tmargin-right: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\t}\\n\\n\\t&[class*=\\\"arrow_w\\\"] {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tborder-width: var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0;\\n\\t\\t}\\n\\n\\t\\t&::before {\\n\\t\\t\\tborder-color: transparent var(--ck-color-panel-border) transparent transparent;\\n\\t\\t\\tmargin-left: calc( -1 * var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\n\\t\\t&::after {\\n\\t\\t\\tborder-color: transparent var(--ck-color-panel-background) transparent transparent;\\n\\t\\t\\tmargin-left: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_n {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_nw {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_ne {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tright: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_s {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_sw {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_se {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tright: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_sme {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tright: 25%;\\n\\t\\t\\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_smw {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: 25%;\\n\\t\\t\\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_nme {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tright: 25%;\\n\\t\\t\\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_nmw {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: 25%;\\n\\t\\t\\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_e {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tright: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t\\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: 50%;\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-balloon-panel_arrow_w {\\n\\t\\t&::before,\\n\\t\\t&::after {\\n\\t\\t\\tleft: calc(-1 * var(--ck-balloon-arrow-height));\\n\\t\\t\\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\\n\\t\\t\\ttop: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-menu-bar__menu>.ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-menu-bar__menu>.ck-menu-bar__menu__button{width:100%}.ck.ck-menu-bar__menu>.ck-menu-bar__menu__button>.ck-button__label{flex-grow:1;overflow:hidden;text-overflow:ellipsis}.ck.ck-menu-bar__menu>.ck-menu-bar__menu__button.ck-disabled>.ck-button__label{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-menu-bar__menu>.ck-menu-bar__menu__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-menu-bar__menu>.ck-menu-bar__menu__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button{min-height:unset;padding:var(--ck-spacing-small) var(--ck-spacing-medium)}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button .ck-button__label{line-height:unset;overflow:visible;width:unset}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-menu-bar__menu.ck-menu-bar__menu_top-level>.ck-menu-bar__menu__button .ck-icon{display:none}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button{border-radius:0}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{margin-left:var(--ck-spacing-standard);margin-right:calc(var(--ck-spacing-small)*-1);transform:rotate(-90deg)}[dir=rtl] .ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button>.ck-menu-bar__menu__button__arrow{left:var(--ck-spacing-standard);margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small);transform:rotate(90deg)}.ck.ck-menu-bar__menu:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button.ck-disabled>.ck-menu-bar__menu__button__arrow{opacity:var(--ck-disabled-opacity)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/menubar/menubarmenubutton.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenubutton.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AAMC,mFACC,mBAAoB,CACpB,2BACD,CCIA,iDACC,UAuBD,CArBC,mEACC,WAAY,CACZ,eAAgB,CAChB,sBACD,CAEA,+ECbD,kCDeC,CAGC,qFACC,oCACD,CAIA,qFACC,qCACD,CAOF,6EAEC,gBAAiB,CADjB,wDAsBD,CAnBC,+FAEC,iBAAkB,CAMlB,gBAAiB,CAPjB,WAQD,CAEA,mFACC,2BAA4B,CAC5B,4BACD,CAEA,sFACC,YACD,CAMD,mFACC,eA+BD,CA7BC,qHACC,mCAuBD,CE3FD,+HF0EG,sCAAuC,CAGvC,6CAAgD,CANhD,wBErEH,CAFA,+HFmFG,+BAAgC,CAMhC,4CAA+C,CAH/C,oCAAqC,CALrC,uBE/EH,CF2FC,iIC1FD,kCD4FC\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-menu-bar__menu {\\n\\t& > .ck-menu-bar__menu__button > .ck-menu-bar__menu__button__arrow {\\n\\t\\tpointer-events: none;\\n\\t\\tz-index: var(--ck-z-default);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_disabled.css\\\";\\n@import \\\"../../mixins/_button.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-menu-bar__menu {\\n\\t/*\\n\\t * All menu buttons.\\n\\t */\\n\\t& > .ck-menu-bar__menu__button {\\n\\t\\twidth: 100%;\\n\\n\\t\\t& > .ck-button__label {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t&.ck-disabled > .ck-button__label {\\n\\t\\t\\t@mixin ck-disabled;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t&:not(.ck-button_with-text) {\\n\\t\\t\\t\\tpadding-left: var(--ck-spacing-small);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t&:not(.ck-button_with-text) {\\n\\t\\t\\t\\tpadding-right: var(--ck-spacing-small);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Top-level menu buttons only.\\n\\t */\\n\\t&.ck-menu-bar__menu_top-level > .ck-menu-bar__menu__button {\\n\\t\\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\\n\\t\\tmin-height: unset;\\n\\n\\t\\t& .ck-button__label {\\n\\t\\t\\twidth: unset;\\n\\t\\t\\tline-height: unset;\\n\\n\\t\\t\\t/*\\n\\t\\t\\t * Top-level buttons don't use ellipsis and overflow: hidden clips descenders.\\n\\t\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/17422.\\n\\t\\t\\t */\\n\\t\\t\\toverflow: visible;\\n\\t\\t}\\n\\n\\t\\t&.ck-on {\\n\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t}\\n\\n\\t\\t& .ck-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Sub-menu buttons.\\n\\t */\\n\\t&:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button {\\n\\t\\tborder-radius: 0;\\n\\n\\t\\t& > .ck-menu-bar__menu__button__arrow {\\n\\t\\t\\twidth: var(--ck-dropdown-arrow-size);\\n\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\ttransform: rotate(-90deg);\\n\\n\\t\\t\\t\\t/* A space to accommodate the triangle. */\\n\\t\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\n\\t\\t\\t\\t/* Nudge the arrow gently to the right because its center of gravity is to the left */\\n\\t\\t\\t\\tmargin-right: calc(-1 * var(--ck-spacing-small));\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\ttransform: rotate(90deg);\\n\\n\\t\\t\\t\\tleft: var(--ck-spacing-standard);\\n\\n\\t\\t\\t\\t/* A space to accommodate the triangle. */\\n\\t\\t\\t\\tmargin-right: var(--ck-spacing-small);\\n\\n\\t\\t\\t\\t/* Nudge the arrow gently to the left because its center of gravity is to the right (after rotation). */\\n\\t\\t\\t\\tmargin-left: calc(-1 * var(--ck-spacing-small));\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&.ck-disabled > .ck-menu-bar__menu__button__arrow {\\n\\t\\t\\t@mixin ck-disabled;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A class which indicates that an element holding it is disabled.\\n */\\n@define-mixin ck-disabled {\\n\\topacity: var(--ck-disabled-opacity);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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{align-items:center;flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{align-items:center;display:flex;flex-direction:column-reverse}.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{bottom:calc(var(--ck-table-properties-error-arrow-size)*-1);left:50%;position:absolute;transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:\"\";left:50%;position:absolute;top:calc(var(--ck-table-properties-error-arrow-size)*-1);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{max-width:80px;min-width:80px;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{animation:ck-table-form-labeled-view-status-appear .15s ease both;background:var(--ck-color-base-error);border-radius:0;color:var(--ck-color-base-background);min-width:var(--ck-table-properties-min-error-width);padding:var(--ck-spacing-small) var(--ck-spacing-medium);text-align:center}.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:after{border-color:transparent transparent var(--ck-color-base-error) transparent;border-style:solid;border-width:0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size)}@media (prefers-reduced-motion:reduce){.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:none}}.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}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tableform.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableform.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAWE,wHACC,cACD,CAEA,8DAEC,kBAAmB,CADnB,cAgBD,CAbC,qFAGC,kBAAmB,CAFnB,YAAa,CACb,6BAMD,CAEA,sMACC,WACD,CAIF,4CAEC,iBAoBD,CAlBC,8EAGC,2DAAgE,CADhE,QAAS,CADT,iBAAkB,CAGlB,8BAA+B,CAG/B,SAUD,CAPC,oFACC,UAAW,CAGX,QAAS,CAFT,iBAAkB,CAClB,wDAA6D,CAE7D,0BACD,CChDH,MACC,0CAA2C,CAC3C,2CACD,CAMI,2FACC,kCAAmC,CACnC,iBACD,CAGD,8KAIC,cAAe,CADf,cAAe,CADf,UAGD,CAGD,8DACC,SAcD,CAZC,yMAEC,QACD,CAEA,iGACC,mBAAoB,CACpB,oBAAqB,CACrB,wCAAyC,CACzC,6CAA8C,CAC9C,gCACD,CAIF,4CACC,sCA6BD,CA3BC,8EAgBC,iEAAkE,CAblE,qCAAsC,CC3CxC,eAAgB,CD4Cd,qCAAsC,CAEtC,oDAAqD,CADrD,wDAAyD,CAEzD,iBAcD,CC3DD,mMAEC,qCAED,CD4CE,oFACC,2EAA4E,CAE5E,kBAAmB,CADnB,kJAED,CAIA,uCAlBD,8EAmBE,cAEF,CADC,CAID,6GACC,YACD,CAIF,oDACC,GACC,SACD,CAEA,GACC,SACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-table-form {\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-form__border-row {\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t}\\n\\n\\t\\t&.ck-table-form__background-row {\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t}\\n\\n\\t\\t&.ck-table-form__dimensions-row {\\n\\t\\t\\tflex-wrap: wrap;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tflex-direction: column-reverse;\\n\\t\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t\\t& .ck.ck-dropdown {\\n\\t\\t\\t\\t\\tflex-grow: 0;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-table-form__dimension-operator {\\n\\t\\t\\t\\tflex-grow: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck.ck-labeled-field-view {\\n\\t\\t/* Allow absolute positioning of the status (error) balloons. */\\n\\t\\tposition: relative;\\n\\n\\t\\t& .ck.ck-labeled-field-view__status {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\tbottom: calc( -1 * var(--ck-table-properties-error-arrow-size) );\\n\\t\\t\\ttransform: translate(-50%,100%);\\n\\n\\t\\t\\t/* Make sure the balloon status stays on top of other form elements. */\\n\\t\\t\\tz-index: 1;\\n\\n\\t\\t\\t/* The arrow pointing towards the field. */\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: calc( -1 * var(--ck-table-properties-error-arrow-size) );\\n\\t\\t\\t\\tleft: 50%;\\n\\t\\t\\t\\ttransform: translateX( -50% );\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../mixins/_rounded.css\\\";\\n\\n:root {\\n\\t--ck-table-properties-error-arrow-size: 6px;\\n\\t--ck-table-properties-min-error-width: 150px;\\n}\\n\\n.ck.ck-table-form {\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-form__border-row {\\n\\t\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\t\\t& > .ck-label {\\n\\t\\t\\t\\t\\tfont-size: var(--ck-font-size-tiny);\\n\\t\\t\\t\\t\\ttext-align: center;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-table-form__border-style,\\n\\t\\t\\t& .ck-table-form__border-width {\\n\\t\\t\\t\\twidth: 80px;\\n\\t\\t\\t\\tmin-width: 80px;\\n\\t\\t\\t\\tmax-width: 80px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&.ck-table-form__dimensions-row {\\n\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t& .ck-table-form__dimensions-row__width,\\n\\t\\t\\t& .ck-table-form__dimensions-row__height {\\n\\t\\t\\t\\tmargin: 0\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-table-form__dimension-operator {\\n\\t\\t\\t\\talign-self: flex-end;\\n\\t\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\t\\theight: var(--ck-ui-component-min-height);\\n\\t\\t\\t\\tline-height: var(--ck-ui-component-min-height);\\n\\t\\t\\t\\tmargin: 0 var(--ck-spacing-small);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck.ck-labeled-field-view {\\n\\t\\tpadding-top: var(--ck-spacing-standard);\\n\\n\\t\\t& .ck.ck-labeled-field-view__status {\\n\\t\\t\\t@mixin ck-rounded-corners;\\n\\n\\t\\t\\tbackground: var(--ck-color-base-error);\\n\\t\\t\\tcolor: var(--ck-color-base-background);\\n\\t\\t\\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\\n\\t\\t\\tmin-width: var(--ck-table-properties-min-error-width);\\n\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\t/* The arrow pointing towards the field. */\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tborder-color: transparent transparent var(--ck-color-base-error) transparent;\\n\\t\\t\\t\\tborder-width: 0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size);\\n\\t\\t\\t\\tborder-style: solid;\\n\\t\\t\\t}\\n\\n\\t\\t\\tanimation: ck-table-form-labeled-view-status-appear .15s ease both;\\n\\n\\t\\t\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\t\\t\\tanimation: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/* Hide the error balloon when the field is blurred. Makes the experience much more clear. */\\n\\t\\t& .ck-input.ck-error:not(:focus) + .ck.ck-labeled-field-view__status {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n@keyframes ck-table-form-labeled-view-status-appear {\\n\\t0% {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t100% {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-spinner-container{display:block;position:relative}.ck.ck-spinner{left:0;margin:0 auto;position:absolute;right:0;top:50%;transform:translateY(-50%);z-index:1}:root{--ck-toolbar-spinner-size:18px}.ck.ck-spinner-container{animation:ck-spinner-rotate 1.5s linear infinite;height:var(--ck-toolbar-spinner-size);width:var(--ck-toolbar-spinner-size)}@media (prefers-reduced-motion:reduce){.ck.ck-spinner-container{animation-duration:3s}}.ck.ck-spinner{border:2px solid var(--ck-color-text);border-radius:50%;border-top:2px solid transparent;height:var(--ck-toolbar-spinner-size);width:var(--ck-toolbar-spinner-size)}@keyframes ck-spinner-rotate{to{transform:rotate(1turn)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/spinner/spinner.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/spinner/spinner.css\"],\"names\":[],\"mappings\":\"AASA,yBACC,aAAc,CACd,iBACD,CAEA,eAGC,MAAO,CAEP,aAAc,CAJd,iBAAkB,CAGlB,OAAQ,CAFR,OAAQ,CAIR,0BAA2B,CAC3B,SACD,CCjBA,MACC,8BACD,CAEA,yBAGC,gDAAiD,CADjD,qCAAsC,CADtC,oCAOD,CAHC,uCALD,yBAME,qBAEF,CADC,CAGD,eAKC,qCAA6B,CAF7B,iBAAkB,CAElB,gCAA6B,CAH7B,qCAAsC,CADtC,oCAKD,CAEA,6BACC,GACC,uBACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-toolbar-spinner-size: 18px;\\n}\\n\\n.ck.ck-spinner-container {\\n\\tdisplay: block;\\n\\tposition: relative;\\n}\\n\\n.ck.ck-spinner {\\n\\tposition: absolute;\\n\\ttop: 50%;\\n\\tleft: 0;\\n\\tright: 0;\\n\\tmargin: 0 auto;\\n\\ttransform: translateY(-50%);\\n\\tz-index: 1;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-toolbar-spinner-size: 18px;\\n}\\n\\n.ck.ck-spinner-container {\\n\\twidth: var(--ck-toolbar-spinner-size);\\n\\theight: var(--ck-toolbar-spinner-size);\\n\\tanimation: 1.5s infinite ck-spinner-rotate linear;\\n\\n\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\tanimation-duration: 3s;\\n\\t}\\n}\\n\\n.ck.ck-spinner {\\n\\twidth: var(--ck-toolbar-spinner-size);\\n\\theight: var(--ck-toolbar-spinner-size);\\n\\tborder-radius: 50%;\\n\\tborder: 2px solid var(--ck-color-text);\\n\\tborder-top-color: transparent;\\n}\\n\\n@keyframes ck-spinner-rotate {\\n\\tto {\\n\\t\\ttransform: rotate(360deg)\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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{min-width:100%;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)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-table/theme/formrow.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/formrow.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AAKA,iBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAaD,CAVC,iCACC,WACD,CAGC,wHAEC,sBACD,CCbF,iBACC,4DA2BD,CC7BC,6CDQG,mCCNH,CAFA,6CDYG,oCCVH,CDeA,2BAEC,cAAe,CADf,UAED,CAEA,2CACC,kCAKD,CAHC,wEACC,0BACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-form__row {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\tjustify-content: space-between;\\n\\n\\t/* Ignore labels that work as fieldset legends */\\n\\t& > *:not(.ck-label) {\\n\\t\\tflex-grow: 1;\\n\\t}\\n\\n\\t&.ck-table-form__action-row {\\n\\t\\t& .ck-button-save,\\n\\t\\t& .ck-button-cancel {\\n\\t\\t\\tjustify-content: center;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-form__row {\\n\\tpadding: var(--ck-spacing-standard) var(--ck-spacing-large) 0;\\n\\n\\t/* Ignore labels that work as fieldset legends */\\n\\t& > *:not(.ck-label) {\\n\\t\\t& + * {\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tmargin-left: var(--ck-spacing-large);\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tmargin-right: var(--ck-spacing-large);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-label {\\n\\t\\twidth: 100%;\\n\\t\\tmin-width: 100%;\\n\\t}\\n\\n\\t&.ck-table-form__action-row {\\n\\t\\tmargin-top: var(--ck-spacing-large);\\n\\n\\t\\t& .ck-button .ck-button__label {\\n\\t\\t\\tcolor: var(--ck-color-text);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-list{display:flex;flex-direction:column;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.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{background:var(--ck-color-list-background);border-radius:0;list-style-type:none;padding:var(--ck-spacing-small) 0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list__item{cursor:default;min-width:15em}.ck.ck-list__item>.ck-button:not(.ck-list-item-button){border-radius:0;min-height:unset;padding:var(--ck-spacing-tiny) calc(var(--ck-spacing-standard)*2);width:100%}[dir=ltr] .ck.ck-list__item>.ck-button:not(.ck-list-item-button){text-align:left}[dir=rtl] .ck.ck-list__item>.ck-button:not(.ck-list-item-button){text-align:right}.ck.ck-list__item>.ck-button:not(.ck-list-item-button) .ck-button__label{line-height:calc(var(--ck-line-height-base)*var(--ck-font-size-base))}.ck.ck-list__item>.ck-button:not(.ck-list-item-button):active{box-shadow:none}.ck.ck-list__item>.ck-button.ck-on:not(.ck-list-item-button){background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item>.ck-button.ck-on:not(.ck-list-item-button):active{box-shadow:none}.ck.ck-list__item>.ck-button.ck-on:not(.ck-list-item-button):hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item>.ck-button.ck-on:not(.ck-list-item-button):focus:not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item>.ck-button:not(.ck-list-item-button):hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item>.ck-button.ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item>.ck-button.ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck-list .ck-list__group{padding-top:var(--ck-spacing-medium)}.ck-list .ck-list__group:first-child{padding-top:0}:not(.ck-hidden)~.ck-list .ck-list__group{border-top:1px solid var(--ck-color-base-border)}.ck-list .ck-list__group>.ck-label{font-size:11px;font-weight:700;padding:var(--ck-spacing-medium) var(--ck-spacing-large) 0}.ck.ck-list__separator{background:var(--ck-color-base-border);height:1px;margin:var(--ck-spacing-small) 0;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/list/list.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/list/list.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AAOA,YAGC,YAAa,CACb,qBAAsB,CCFtB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBDaD,CAZC,2DAEC,aACD,CAKA,kCACC,iBAAkB,CAClB,2BACD,CEdD,YAIC,0CAA2C,CCH3C,eAAgB,CDEhB,oBAAqB,CAIrB,iCACD,CCLC,+DAEC,qCAED,CDGD,kBACC,cAAe,CAGf,cA4DD,CA1DC,uDAIC,eAAgB,CAFhB,gBAAiB,CADjB,iEAAoE,CAEpE,UAwCD,CE/DA,iEF2BE,eEzBF,CAFA,iEF+BE,gBE7BF,CFgCC,yEAEC,qEACD,CAEA,8DACC,eACD,CAEA,6DACC,oDAAqD,CACrD,yCAaD,CAXC,oEACC,eACD,CAEA,qFACC,0DACD,CAEA,qFACC,4CACD,CAGD,+EACC,uDACD,CAMA,mDACC,0CAA2C,CAC3C,aAMD,CAJC,2EACC,uDAAwD,CACxD,aACD,CAKH,yBACC,oCAiBD,CAdC,qCACC,aACD,CAGA,0CACC,gDACD,CAEA,mCACC,cAAe,CACf,eAAiB,CACjB,0DACD,CAGD,uBAGC,sCAAuC,CAFvC,UAAW,CAKX,gCAAiC,CAJjC,UAKD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../mixins/_unselectable.css\\\";\\n\\n.ck.ck-list {\\n\\t@mixin ck-unselectable;\\n\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t& .ck-list__item,\\n\\t& .ck-list__separator {\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t/* Make sure that whatever child of the list item gets focus, it remains on the\\n\\ttop. Thanks to that, styles like box-shadow, outline, etc. are not masked by\\n\\tadjacent list items. */\\n\\t& .ck-list__item > *:focus {\\n\\t\\tposition: relative;\\n\\t\\tz-index: var(--ck-z-default);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Makes element unselectable.\\n */\\n@define-mixin ck-unselectable {\\n\\t-moz-user-select: none;\\n\\t-webkit-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_disabled.css\\\";\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-list {\\n\\t@mixin ck-rounded-corners;\\n\\n\\tlist-style-type: none;\\n\\tbackground: var(--ck-color-list-background);\\n\\n\\t/* A spacing at the beginning and end of the list */\\n\\tpadding: var(--ck-spacing-small) 0;\\n}\\n\\n.ck.ck-list__item {\\n\\tcursor: default;\\n\\n\\t/* Almost as wide as menu bar items. */\\n\\tmin-width: 15em;\\n\\n\\t& > .ck-button:not(.ck-list-item-button) {\\n\\t\\tpadding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard));\\n\\t\\tmin-height: unset;\\n\\t\\twidth: 100%;\\n\\t\\tborder-radius: 0;\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\ttext-align: right;\\n\\t\\t}\\n\\n\\t\\t& .ck-button__label {\\n\\t\\t\\t/* https://github.com/ckeditor/ckeditor5-heading/issues/63 */\\n\\t\\t\\tline-height: calc(var(--ck-line-height-base) * var(--ck-font-size-base));\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t&.ck-on {\\n\\t\\t\\tbackground: var(--ck-color-list-button-on-background);\\n\\t\\t\\tcolor: var(--ck-color-list-button-on-text);\\n\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\tbox-shadow: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:hover:not(.ck-disabled) {\\n\\t\\t\\t\\tbackground: var(--ck-color-list-button-on-background-focus);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&:focus:not(.ck-disabled) {\\n\\t\\t\\t\\tborder-color: var(--ck-color-base-background);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&:hover:not(.ck-disabled) {\\n\\t\\t\\tbackground: var(--ck-color-list-button-hover-background);\\n\\t\\t}\\n\\t}\\n\\n\\t/* It's unnecessary to change the background/text of a switch toggle; it has different ways\\n\\tof conveying its state (like the switcher) */\\n\\t& > .ck-button.ck-switchbutton {\\n\\t\\t&.ck-on {\\n\\t\\t\\tbackground: var(--ck-color-list-background);\\n\\t\\t\\tcolor: inherit;\\n\\n\\t\\t\\t&:hover:not(.ck-disabled) {\\n\\t\\t\\t\\tbackground: var(--ck-color-list-button-hover-background);\\n\\t\\t\\t\\tcolor: inherit;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck-list .ck-list__group {\\n\\tpadding-top: var(--ck-spacing-medium);\\n\\n\\t/* Lists come with an inner vertical padding. Don't duplicate it. */\\n\\t&:first-child {\\n\\t\\tpadding-top: 0;\\n\\t}\\n\\n\\t/* The group should have a border when it's not the first item. */\\n\\t*:not(.ck-hidden) ~ & {\\n\\t\\tborder-top: 1px solid var(--ck-color-base-border);\\n\\t}\\n\\n\\t& > .ck-label {\\n\\t\\tfont-size: 11px;\\n\\t\\tfont-weight: bold;\\n\\t\\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large) 0;\\n\\t}\\n}\\n\\n.ck.ck-list__separator {\\n\\theight: 1px;\\n\\twidth: 100%;\\n\\tbackground: var(--ck-color-base-border);\\n\\n\\t/* Give the separator some air */\\n\\tmargin: var(--ck-spacing-small) 0;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-heading_heading1 .ck-button__label{font-size:20px}.ck.ck-heading_heading2 .ck-button__label{font-size:17px}.ck.ck-heading_heading3 .ck-button__label{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}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-heading/theme/heading.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-heading/heading.css\"],\"names\":[],\"mappings\":\"AAKA,0CACC,cACD,CAEA,0CACC,cACD,CAEA,0CACC,cACD,CAEA,+BACC,eACD,CCZC,2EACC,SACD,CAEA,uEACC,cACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-heading_heading1 .ck-button__label {\\n\\tfont-size: 20px;\\n}\\n\\n.ck.ck-heading_heading2 .ck-button__label {\\n\\tfont-size: 17px;\\n}\\n\\n.ck.ck-heading_heading3 .ck-button__label {\\n\\tfont-size: 14px;\\n}\\n\\n.ck[class*=\\\"ck-heading_heading\\\"] {\\n\\tfont-weight: bold;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/* Resize dropdown's button label. */\\n.ck.ck-dropdown.ck-heading-dropdown {\\n\\t& .ck-dropdown__button .ck-button__label {\\n\\t\\twidth: 8em;\\n\\t}\\n\\n\\t& .ck-dropdown__panel .ck-list__item {\\n\\t\\tmin-width: 18em;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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-labeled-field-label-default-position-x:var(--ck-spacing-medium);--ck-labeled-field-label-default-position-y:calc(var(--ck-font-size-base)*0.6);--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{background:var(--ck-color-labeled-field-label-background);font-weight:400;line-height:normal;max-width:100%;overflow:hidden;padding:0 calc(var(--ck-font-size-tiny)*.5);pointer-events:none;text-overflow:ellipsis;top:0;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);transform-origin:0 0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0;transform:translate(calc(var(--ck-spacing-medium)*-1),-6px) scale(.75);transform-origin:100% 0}@media (prefers-reduced-motion:reduce){.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transition:none}}.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)}.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder)>.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):not(.ck-error)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:transparent;max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));padding:0}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder)>.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):not(.ck-error)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-labeled-field-label-default-position-x),var(--ck-labeled-field-label-default-position-y)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder)>.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):not(.ck-error)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-labeled-field-label-default-position-x)*-1),var(--ck-labeled-field-label-default-position-y)) scale(1)}.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))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/labeledfield/labeledfieldview.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AAMC,mEACC,YAAa,CACb,iBACD,CAEA,uCACC,aAAc,CACd,iBACD,CCND,MACC,kEAAsE,CACtE,gFAAiF,CACjF,oEAAqE,CACrE,8EAAiF,CACjF,yEACD,CAEA,0BCLC,eDmHD,CCjHC,2FAEC,qCAED,CDEA,mEACC,UAwCD,CAtCC,gFAkBC,yDAA0D,CAG1D,eAAmB,CADnB,kBAAoB,CAOpB,cAAe,CAFf,eAAgB,CANhB,2CAA8C,CAH9C,mBAAoB,CAQpB,sBAAuB,CAvBvB,KAAQ,CA4BR,+JAQD,CErDD,0FFoBG,MAAS,CAGT,6DAA+D,CAF/D,oBEnBH,CAFA,0FF2BG,OAAU,CAEV,sEAA0E,CAD1E,uBE1BH,CFgDE,uCAlCD,gFAmCE,eAEF,CADC,CASD,mKACC,gCACD,CAGD,yDACC,mCAAoC,CACpC,kCAAmC,CAInC,kBAKD,CAHC,6FACC,gCACD,CAID,4OAEC,yCACD,CAIA,uWAaC,sBAAuB,CAFvB,iEAAkE,CAGlE,SACD,CEtGA,2XF0FE,+HExFF,CAFA,2XF8FE,wIE5FF,CFyGA,8FACC,sBACD,CAGA,yIACC,SACD,CAGA,kMACC,8HACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-labeled-field-view {\\n\\t& > .ck.ck-labeled-field-view__input-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t& .ck.ck-label {\\n\\t\\tdisplay: block;\\n\\t\\tposition: absolute;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n@import \\\"../../../mixins/_rounded.css\\\";\\n\\n:root {\\n\\t--ck-labeled-field-view-transition: .1s cubic-bezier(0, 0, 0.24, 0.95);\\n\\t--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-spacing-medium);\\n\\t--ck-labeled-field-label-default-position-x: var(--ck-spacing-medium);\\n\\t--ck-labeled-field-label-default-position-y: calc(0.6 * var(--ck-font-size-base));\\n\\t--ck-color-labeled-field-label-background: var(--ck-color-base-background);\\n}\\n\\n.ck.ck-labeled-field-view {\\n\\t@mixin ck-rounded-corners;\\n\\n\\t& > .ck.ck-labeled-field-view__input-wrapper {\\n\\t\\twidth: 100%;\\n\\n\\t\\t& > .ck.ck-label {\\n\\t\\t\\ttop: 0px;\\n\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tleft: 0px;\\n\\t\\t\\t\\ttransform-origin: 0 0;\\n\\t\\t\\t\\t/* By default, display the label scaled down above the field. */\\n\\t\\t\\t\\ttransform: translate(var(--ck-spacing-medium), -6px) scale(.75);\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tright: 0px;\\n\\t\\t\\t\\ttransform-origin: 100% 0;\\n\\t\\t\\t\\ttransform: translate(calc(-1 * var(--ck-spacing-medium)), -6px) scale(.75);\\n\\t\\t\\t}\\n\\n\\t\\t\\tpointer-events: none;\\n\\n\\t\\t\\tbackground: var(--ck-color-labeled-field-label-background);\\n\\t\\t\\tpadding: 0 calc(.5 * var(--ck-font-size-tiny));\\n\\t\\t\\tline-height: initial;\\n\\t\\t\\tfont-weight: normal;\\n\\n\\t\\t\\t/* Prevent overflow when the label is longer than the input */\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\n\\t\\t\\tmax-width: 100%;\\n\\n\\t\\t\\ttransition:\\n\\t\\t\\t\\ttransform var(--ck-labeled-field-view-transition),\\n\\t\\t\\t\\tpadding var(--ck-labeled-field-view-transition),\\n\\t\\t\\t\\tbackground var(--ck-labeled-field-view-transition);\\n\\n\\t\\t\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\t\\t\\ttransition: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-error {\\n\\t\\t& > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\\n\\t\\t\\tcolor: var(--ck-color-base-error);\\n\\t\\t}\\n\\n\\t\\t& .ck-input:not([readonly]) + .ck.ck-label {\\n\\t\\t\\tcolor: var(--ck-color-base-error);\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-labeled-field-view__status {\\n\\t\\tfont-size: var(--ck-font-size-small);\\n\\t\\tmargin-top: var(--ck-spacing-small);\\n\\n\\t\\t/* Let the info wrap to the next line to avoid stretching the layout horizontally.\\n\\t\\tThe status could be very long. */\\n\\t\\twhite-space: normal;\\n\\n\\t\\t&.ck-labeled-field-view__status_error {\\n\\t\\t\\tcolor: var(--ck-color-base-error);\\n\\t\\t}\\n\\t}\\n\\n\\t/* Disabled fields and fields that have no focus should fade out. */\\n\\t&.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,\\n\\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\\n\\t\\tcolor: var(--ck-color-input-disabled-text);\\n\\t}\\n\\n\\t/* Fields that are disabled or not focused and without a placeholder should have full-sized labels. */\\n\\t/* stylelint-disable-next-line no-descending-specificity */\\n\\t&.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,\\n\\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder):not(.ck-error) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\ttransform: translate(var(--ck-labeled-field-label-default-position-x), var(--ck-labeled-field-label-default-position-y)) scale(1);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\ttransform: translate(calc(-1 * var(--ck-labeled-field-label-default-position-x)), var(--ck-labeled-field-label-default-position-y)) scale(1);\\n\\t\\t}\\n\\n\\t\\t/* Compensate for the default translate position. */\\n\\t\\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width));\\n\\n\\t\\tbackground: transparent;\\n\\t\\tpadding: 0;\\n\\t}\\n\\n\\t/*------ DropdownView integration ----------------------------------------------------------------------------------- */\\n\\n\\t/* Make sure dropdown' background color in any of dropdown's state does not collide with labeled field. */\\n\\t& > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck.ck-button {\\n\\t\\tbackground: transparent;\\n\\t}\\n\\n\\t/* When the dropdown is \\\"empty\\\", the labeled field label replaces its label. */\\n\\t&.ck-labeled-field-view_empty > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck-button > .ck-button__label {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t/* Make sure the label of the empty, unfocused input does not cover the dropdown arrow. */\\n\\t&.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 {\\n\\t\\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard));\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-editor__editable span[data-ck-unsafe-element]{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-engine/theme/renderer.css\"],\"names\":[],\"mappings\":\"AAMA,qDACC,YACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/* Elements marked by the Renderer as hidden should be invisible in the editor. */\\n.ck.ck-editor__editable span[data-ck-unsafe-element] {\\n\\tdisplay: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-dropdown-menu-list__nested-menu{display:block}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenu.css\"],\"names\":[],\"mappings\":\"AAKA,uCACC,aACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-dropdown-menu-list__nested-menu {\\n\\tdisplay: block;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tablecellproperties.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tablecellproperties.css\"],\"names\":[],\"mappings\":\"AAOE,6FACC,cAiBD,CAdE,0HAEC,cACD,CAEA,yHAEC,cACD,CAEA,uHACC,WACD,CClBJ,kCACC,WAkBD,CAfE,2FACC,mBAAoB,CACpB,SAAU,CACV,SACD,CAGC,4GACC,eAAgB,CAGhB,qCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-table-cell-properties-form {\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-cell-properties-form__alignment-row {\\n\\t\\t\\tflex-wrap: wrap;\\n\\n\\t\\t\\t& .ck.ck-toolbar {\\n\\t\\t\\t\\t&:first-of-type {\\n\\t\\t\\t\\t\\t/* 4 buttons out of 7 (h-alignment + v-alignment) = 0.57 */\\n\\t\\t\\t\\t\\tflex-grow: 0.57;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t&:last-of-type {\\n\\t\\t\\t\\t\\t/* 3 buttons out of 7 (h-alignment + v-alignment) = 0.43 */\\n\\t\\t\\t\\t\\tflex-grow: 0.43;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t& .ck-button {\\n\\t\\t\\t\\t\\tflex-grow: 1;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-table-cell-properties-form {\\n\\twidth: 320px;\\n\\n\\t& .ck-form__row {\\n\\t\\t&.ck-table-cell-properties-form__padding-row {\\n\\t\\t\\talign-self: flex-end;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\twidth: 25%;\\n\\t\\t}\\n\\n\\t\\t&.ck-table-cell-properties-form__alignment-row {\\n\\t\\t\\t& .ck.ck-toolbar {\\n\\t\\t\\t\\tbackground: none;\\n\\n\\t\\t\\t\\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\\n\\t\\t\\t\\tmargin-top: var(--ck-spacing-standard);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck .ck-widget .ck-widget__type-around__button{display:block;overflow:hidden;position:absolute;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{left:50%;position:absolute;top:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{left:min(10%,30px);top:calc(var(--ck-widget-outline-thickness)*-.5);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-.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;left:1px;position:absolute;top:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;left:0;position:absolute;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{display:block;top:calc(var(--ck-widget-outline-thickness)*-1 - 1px)}.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{background:var(--ck-color-widget-type-around-button);border-radius:100px;height:var(--ck-widget-type-around-button-size);opacity:0;pointer-events:none;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);width:var(--ck-widget-type-around-button-size)}@media (prefers-reduced-motion:reduce){.ck .ck-widget .ck-widget__type-around__button{transition:none}}.ck .ck-widget .ck-widget__type-around__button svg{height:8px;margin-top:1px;transform:translate(-50%,-50%);transition:transform .5s ease;width:10px}@media (prefers-reduced-motion:reduce){.ck .ck-widget .ck-widget__type-around__button svg{transition:none}}.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}@media (prefers-reduced-motion:reduce){.ck .ck-widget .ck-widget__type-around__button:hover,.ck .ck-widget .ck-widget__type-around__button:hover svg line,.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:none}}.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{background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3));border-radius:100px;height:calc(var(--ck-widget-type-around-button-size) - 2px);width:calc(var(--ck-widget-type-around-button-size) - 2px)}.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{animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;background:var(--ck-color-base-text);height:1px;outline:1px solid hsla(0,0%,100%,.5);pointer-events:none}.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_selected.ck-widget_with-resizer>.ck-widget__resizer,.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_selected.ck-widget_with-resizer>.ck-widget__resizer,.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[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}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-widget/theme/widgettypearound.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widgettypearound.css\"],\"names\":[],\"mappings\":\"AASC,+CACC,aAAc,CAEd,eAAgB,CADhB,iBAAkB,CAElB,2BAwBD,CAtBC,mDAGC,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,qCACD,CAEA,qFAGC,kBAAoB,CADpB,gDAAoD,CAGpD,0BACD,CAEA,oFAEC,mDAAuD,CACvD,mBAAqB,CAErB,yBACD,CAUA,mLACC,UAAW,CACX,aAAc,CAGd,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,qCACD,CAMD,2EACC,YAAa,CAEb,MAAO,CADP,iBAAkB,CAElB,OACD,CAOA,iFACC,gDAAqD,CACrD,iDACD,CAKA,wHAEC,aAAc,CADd,qDAED,CAKA,uHACC,wDAA6D,CAC7D,aACD,CAoBD,mOACC,YACD,CC3GA,MACC,wCAAyC,CACzC,wEAAyE,CACzE,8EAA+E,CAC/E,2FAA4F,CAC5F,wDAAyD,CACzD,uDAAwD,CACxD,yEACD,CAgBC,+CAGC,oDAAqD,CACrD,mBAAoB,CAFpB,+CAAgD,CAVjD,SAAU,CACV,mBAAoB,CAYnB,uMAAyM,CAJzM,8CAwED,CAhEC,uCATD,+CAUE,eA+DF,CA9DC,CAEA,mDAEC,UAAW,CAGX,cAAe,CAFf,8BAA+B,CAC/B,6BAA8B,CAH9B,UAwBD,CAlBC,uCAPD,mDAQE,eAiBF,CAhBC,CAEA,qDACC,mBAAoB,CACpB,mBAAoB,CAEpB,SAAU,CACV,qDAAsD,CACtD,kBAAmB,CACnB,oBAAqB,CACrB,qBACD,CAEA,wDACC,kBACD,CAGD,qDAIC,6DA4BD,CAtBE,kEACC,oDACD,CAEA,8DACC,wDACD,CAGD,uCAQE,qLACC,cACD,CAEF,CASD,uKA7FD,SAAU,CACV,mBA8FC,CAOD,gGACC,0DACD,CAOA,uKAEC,2DAQD,CANC,mLAIC,uEAAkF,CADlF,mBAAoB,CADpB,2DAA4D,CAD5D,0DAID,CAOD,8GACC,gBACD,CAKA,mDAGC,mFAAoF,CAOpF,oCAAqC,CARrC,UAAW,CAOX,oCAAwC,CARxC,mBAUD,CAOC,6JAEC,yBACD,CAUA,yKACC,iDACD,CAMA,uOAxKD,SAAU,CACV,mBAyKC,CAoBA,6yBACC,SACD,CASF,uHACC,aAAc,CACd,iBACD,CAYG,iRAxNF,SAAU,CACV,mBAyNE,CAQH,kIACC,qEAKD,CAHC,wIACC,WACD,CAGD,4CACC,GACC,oBACD,CACA,OACC,mBACD,CACD,CAEA,gDACC,OACC,mBACD,CACA,OACC,mBACD,CACD,CAEA,8CACC,GACC,6HACD,CACA,IACC,6HACD,CACA,GACC,+HACD,CACD,CAEA,kDACC,GACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,IACC,SACD,CACA,GACC,SACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck .ck-widget {\\n\\t/*\\n\\t * Styles of the type around buttons\\n\\t */\\n\\t& .ck-widget__type-around__button {\\n\\t\\tdisplay: block;\\n\\t\\tposition: absolute;\\n\\t\\toverflow: hidden;\\n\\t\\tz-index: var(--ck-z-default);\\n\\n\\t\\t& svg {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 50%;\\n\\t\\t\\tleft: 50%;\\n\\t\\t\\tz-index: calc(var(--ck-z-default) + 2);\\n\\t\\t}\\n\\n\\t\\t&.ck-widget__type-around__button_before {\\n\\t\\t\\t/* Place it in the middle of the outline */\\n\\t\\t\\ttop: calc(-0.5 * var(--ck-widget-outline-thickness));\\n\\t\\t\\tleft: min(10%, 30px);\\n\\n\\t\\t\\ttransform: translateY(-50%);\\n\\t\\t}\\n\\n\\t\\t&.ck-widget__type-around__button_after {\\n\\t\\t\\t/* Place it in the middle of the outline */\\n\\t\\t\\tbottom: calc(-0.5 * var(--ck-widget-outline-thickness));\\n\\t\\t\\tright: min(10%, 30px);\\n\\n\\t\\t\\ttransform: translateY(50%);\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the buttons when:\\n\\t * - the widget is selected,\\n\\t * - or the button is being hovered (regardless of the widget state).\\n\\t */\\n\\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\\n\\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\\n\\t\\t&::after {\\n\\t\\t\\tcontent: \\\"\\\";\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 1px;\\n\\t\\t\\tleft: 1px;\\n\\t\\t\\tz-index: calc(var(--ck-z-default) + 1);\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the horizontal \\\"fake caret\\\" which is displayed when the user navigates using the keyboard.\\n\\t */\\n\\t& > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\\n\\t\\tdisplay: none;\\n\\t\\tposition: absolute;\\n\\t\\tleft: 0;\\n\\t\\tright: 0;\\n\\t}\\n\\n\\t/*\\n\\t * When the widget is hovered the \\\"fake caret\\\" would normally be narrower than the\\n\\t * extra outline displayed around the widget. Let's extend the \\\"fake caret\\\" to match\\n\\t * the full width of the widget.\\n\\t */\\n\\t&:hover > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\\n\\t\\tleft: calc( -1 * var(--ck-widget-outline-thickness) );\\n\\t\\tright: calc( -1 * var(--ck-widget-outline-thickness) );\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the horizontal \\\"fake caret\\\" when it should be displayed before the widget (backward keyboard navigation).\\n\\t */\\n\\t&.ck-widget_type-around_show-fake-caret_before > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\\n\\t\\ttop: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\\n\\t\\tdisplay: block;\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the horizontal \\\"fake caret\\\" when it should be displayed after the widget (forward keyboard navigation).\\n\\t */\\n\\t&.ck-widget_type-around_show-fake-caret_after > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\\n\\t\\tbottom: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\\n\\t\\tdisplay: block;\\n\\t}\\n}\\n\\n/*\\n * Integration with the read-only mode of the editor.\\n */\\n.ck.ck-editor__editable.ck-read-only .ck-widget__type-around {\\n\\tdisplay: none;\\n}\\n\\n/*\\n * Integration with the restricted editing mode (feature) of the editor.\\n */\\n.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around {\\n\\tdisplay: none;\\n}\\n\\n/*\\n * Integration with the #isEnabled property of the WidgetTypeAround plugin.\\n */\\n.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around {\\n\\tdisplay: none;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-widget-type-around-button-size: 20px;\\n\\t--ck-color-widget-type-around-button-active: var(--ck-color-focus-border);\\n\\t--ck-color-widget-type-around-button-hover: var(--ck-color-widget-hover-border);\\n\\t--ck-color-widget-type-around-button-blurred-editable: var(--ck-color-widget-blurred-border);\\n\\t--ck-color-widget-type-around-button-radar-start-alpha: 0;\\n\\t--ck-color-widget-type-around-button-radar-end-alpha: .3;\\n\\t--ck-color-widget-type-around-button-icon: var(--ck-color-base-background);\\n}\\n\\n@define-mixin ck-widget-type-around-button-visible {\\n\\topacity: 1;\\n\\tpointer-events: auto;\\n}\\n\\n@define-mixin ck-widget-type-around-button-hidden {\\n\\topacity: 0;\\n\\tpointer-events: none;\\n}\\n\\n.ck .ck-widget {\\n\\t/*\\n\\t * Styles of the type around buttons\\n\\t */\\n\\t& .ck-widget__type-around__button {\\n\\t\\twidth: var(--ck-widget-type-around-button-size);\\n\\t\\theight: var(--ck-widget-type-around-button-size);\\n\\t\\tbackground: var(--ck-color-widget-type-around-button);\\n\\t\\tborder-radius: 100px;\\n\\t\\ttransition: 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);\\n\\n\\t\\t@mixin ck-widget-type-around-button-hidden;\\n\\n\\t\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\t\\ttransition: none;\\n\\t\\t}\\n\\n\\t\\t& svg {\\n\\t\\t\\twidth: 10px;\\n\\t\\t\\theight: 8px;\\n\\t\\t\\ttransform: translate(-50%,-50%);\\n\\t\\t\\ttransition: transform .5s ease;\\n\\t\\t\\tmargin-top: 1px;\\n\\n\\t\\t\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\t\\t\\ttransition: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& * {\\n\\t\\t\\t\\tstroke-dasharray: 10;\\n\\t\\t\\t\\tstroke-dashoffset: 0;\\n\\n\\t\\t\\t\\tfill: none;\\n\\t\\t\\t\\tstroke: var(--ck-color-widget-type-around-button-icon);\\n\\t\\t\\t\\tstroke-width: 1.5px;\\n\\t\\t\\t\\tstroke-linecap: round;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& line {\\n\\t\\t\\t\\tstroke-dasharray: 7;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&:hover {\\n\\t\\t\\t/*\\n\\t\\t\\t * Display the \\\"sonar\\\" around the button when hovered.\\n\\t\\t\\t */\\n\\t\\t\\tanimation: ck-widget-type-around-button-sonar 1s ease infinite;\\n\\n\\t\\t\\t/*\\n\\t\\t\\t * Animate active button's icon.\\n\\t\\t\\t */\\n\\t\\t\\t& svg {\\n\\t\\t\\t\\t& polyline {\\n\\t\\t\\t\\t\\tanimation: ck-widget-type-around-arrow-dash 2s linear;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t& line {\\n\\t\\t\\t\\t\\tanimation: ck-widget-type-around-arrow-tip-dash 2s linear;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\t\\t\\tanimation: none;\\n\\n\\t\\t\\t\\t& svg {\\n\\t\\t\\t\\t\\t& polyline {\\n\\t\\t\\t\\t\\t\\tanimation: none;\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t& line {\\n\\t\\t\\t\\t\\t\\tanimation: none;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Show type around buttons when the widget gets selected or being hovered.\\n\\t */\\n\\t&.ck-widget_selected,\\n\\t&:hover {\\n\\t\\t& > .ck-widget__type-around > .ck-widget__type-around__button {\\n\\t\\t\\t@mixin ck-widget-type-around-button-visible;\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the buttons when the widget is NOT selected (but the buttons are visible\\n\\t * and still can be hovered).\\n\\t */\\n\\t&:not(.ck-widget_selected) > .ck-widget__type-around > .ck-widget__type-around__button {\\n\\t\\tbackground: var(--ck-color-widget-type-around-button-hover);\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the buttons when:\\n\\t * - the widget is selected,\\n\\t * - or the button is being hovered (regardless of the widget state).\\n\\t */\\n\\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\\n\\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\\n\\t\\tbackground: var(--ck-color-widget-type-around-button-active);\\n\\n\\t\\t&::after {\\n\\t\\t\\twidth: calc(var(--ck-widget-type-around-button-size) - 2px);\\n\\t\\t\\theight: calc(var(--ck-widget-type-around-button-size) - 2px);\\n\\t\\t\\tborder-radius: 100px;\\n\\t\\t\\tbackground: linear-gradient(135deg, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,.3) 100%);\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the \\\"before\\\" button when the widget has a selection handle. Because some space\\n\\t * is consumed by the handle, the button must be moved slightly to the right to let it breathe.\\n\\t */\\n\\t&.ck-widget_with-selection-handle > .ck-widget__type-around > .ck-widget__type-around__button_before {\\n\\t\\tmargin-left: 20px;\\n\\t}\\n\\n\\t/*\\n\\t * Styles for the horizontal \\\"fake caret\\\" which is displayed when the user navigates using the keyboard.\\n\\t */\\n\\t& .ck-widget__type-around__fake-caret {\\n\\t\\tpointer-events: none;\\n\\t\\theight: 1px;\\n\\t\\tanimation: ck-widget-type-around-fake-caret-pulse linear 1s infinite normal forwards;\\n\\n\\t\\t/*\\n\\t\\t * The semi-transparent-outline+background combo improves the contrast\\n\\t\\t * when the background underneath the fake caret is dark.\\n\\t\\t */\\n\\t\\toutline: solid 1px hsla(0, 0%, 100%, .5);\\n\\t\\tbackground: var(--ck-color-base-text);\\n\\t}\\n\\n\\t/*\\n\\t * Styles of the widget when the \\\"fake caret\\\" is blinking (e.g. upon keyboard navigation).\\n\\t * Despite the widget being physically selected in the model, its outline should disappear.\\n\\t */\\n\\t&.ck-widget_selected {\\n\\t\\t&.ck-widget_type-around_show-fake-caret_before,\\n\\t\\t&.ck-widget_type-around_show-fake-caret_after {\\n\\t\\t\\toutline-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-widget_type-around_show-fake-caret_before,\\n\\t&.ck-widget_type-around_show-fake-caret_after {\\n\\t\\t/*\\n\\t\\t * When the \\\"fake caret\\\" is visible we simulate that the widget is not selected\\n\\t\\t * (despite being physically selected), so the outline color should be for the\\n\\t\\t * unselected widget.\\n\\t\\t */\\n\\t\\t&.ck-widget_selected:hover {\\n\\t\\t\\toutline-color: var(--ck-color-widget-hover-border);\\n\\t\\t}\\n\\n\\t\\t/*\\n\\t\\t * Styles of the type around buttons when the \\\"fake caret\\\" is blinking (e.g. upon keyboard navigation).\\n\\t\\t * In this state, the type around buttons would collide with the fake carets so they should disappear.\\n\\t\\t */\\n\\t\\t& > .ck-widget__type-around > .ck-widget__type-around__button {\\n\\t\\t\\t@mixin ck-widget-type-around-button-hidden;\\n\\t\\t}\\n\\n\\t\\t/*\\n\\t\\t * Fake horizontal caret integration with the selection handle. When the caret is visible, simply\\n\\t\\t * hide the handle because it intersects with the caret (and does not make much sense anyway).\\n\\t\\t */\\n\\t\\t&.ck-widget_with-selection-handle {\\n\\t\\t\\t&.ck-widget_selected,\\n\\t\\t\\t&.ck-widget_selected:hover {\\n\\t\\t\\t\\t& > .ck-widget__selection-handle {\\n\\t\\t\\t\\t\\topacity: 0\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t/*\\n\\t\\t * Fake horizontal caret integration with the resize UI. When the caret is visible, simply\\n\\t\\t * hide the resize UI because it creates too much noise. It can be visible when the user\\n\\t\\t * hovers the widget, though.\\n\\t\\t */\\n\\t\\t&.ck-widget_selected.ck-widget_with-resizer > .ck-widget__resizer {\\n\\t\\t\\topacity: 0\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\n * Styles for the \\\"before\\\" button when the widget has a selection handle in an RTL environment.\\n * The selection handler is aligned to the right side of the widget so there is no need to create\\n * additional space for it next to the \\\"before\\\" button.\\n */\\n.ck[dir=\\\"rtl\\\"] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around > .ck-widget__type-around__button_before {\\n\\tmargin-left: 0;\\n\\tmargin-right: 20px;\\n}\\n\\n/*\\n * Hide type around buttons when the widget is selected as a child of a selected\\n * nested editable (e.g. mulit-cell table selection).\\n *\\n * See https://github.com/ckeditor/ckeditor5/issues/7263.\\n */\\n.ck-editor__nested-editable.ck-editor__editable_selected {\\n\\t& .ck-widget {\\n\\t\\t&.ck-widget_selected,\\n\\t\\t&:hover {\\n\\t\\t\\t& > .ck-widget__type-around > .ck-widget__type-around__button {\\n\\t\\t\\t\\t@mixin ck-widget-type-around-button-hidden;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n/*\\n * Styles for the buttons when the widget is selected but the user clicked outside of the editor (blurred the editor).\\n */\\n.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button:not(:hover) {\\n\\tbackground: var(--ck-color-widget-type-around-button-blurred-editable);\\n\\n\\t& svg * {\\n\\t\\tstroke: hsl(0,0%,60%);\\n\\t}\\n}\\n\\n@keyframes ck-widget-type-around-arrow-dash {\\n\\t0% {\\n\\t\\tstroke-dashoffset: 10;\\n\\t}\\n\\t20%, 100% {\\n\\t\\tstroke-dashoffset: 0;\\n\\t}\\n}\\n\\n@keyframes ck-widget-type-around-arrow-tip-dash {\\n\\t0%, 20% {\\n\\t\\tstroke-dashoffset: 7;\\n\\t}\\n\\t40%, 100% {\\n\\t\\tstroke-dashoffset: 0;\\n\\t}\\n}\\n\\n@keyframes ck-widget-type-around-button-sonar {\\n\\t0% {\\n\\t\\tbox-shadow: 0 0 0 0 hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\\n\\t}\\n\\t50% {\\n\\t\\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-end-alpha));\\n\\t}\\n\\t100% {\\n\\t\\tbox-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));\\n\\t}\\n}\\n\\n@keyframes ck-widget-type-around-fake-caret-pulse {\\n\\t0% {\\n\\t\\topacity: 1;\\n\\t}\\n\\t49% {\\n\\t\\topacity: 1;\\n\\t}\\n\\t50% {\\n\\t\\topacity: 0;\\n\\t}\\n\\t99% {\\n\\t\\topacity: 0;\\n\\t}\\n\\t100% {\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}: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-bottom-right-radius:unset;border-top-right-radius:unset}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-left-radius:unset;border-top-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-left-radius:unset;border-top-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-right-radius:unset;border-top-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton>.ck-splitbutton__arrow:not(:focus){border-bottom-width:0;border-top-width:0}.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}.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{background-color:var(--ck-color-split-button-hover-border);content:\"\";height:100%;position:absolute;width:1px}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:focus:after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:focus:after{--ck-color-split-button-hover-border:var(--ck-color-focus-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}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/splitbutton.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/splitbutton.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\"],\"names\":[],\"mappings\":\"AAKA,mBAEC,iBAKD,CAHC,iDACC,qCACD,CCJD,MACC,gDAAyD,CACzD,4CACD,CAQE,oIAGC,gCAAiC,CADjC,6BAED,CAEA,oIAGC,+BAAgC,CADhC,4BAED,CAGD,0CAGC,eAiBD,CAfC,oDAGC,+BAAgC,CADhC,4BAED,CAEA,oDAGC,gCAAiC,CADjC,6BAED,CAEA,8CACC,mCACD,CAKD,sDAEC,qBAAwB,CADxB,kBAED,CAIA,uCCnDA,eD6DA,CC3DA,qHAEC,qCAED,CD+CE,qKACC,2BACD,CAEA,mKACC,4BACD,CAUD,0KACC,wDACD,CAIA,8JAKC,0DAA2D,CAJ3D,UAAW,CAGX,WAAY,CAFZ,iBAAkB,CAClB,SAGD,CAGA,sIACC,iEACD,CAGC,kLACC,SACD,CAIA,kLACC,UACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-splitbutton {\\n\\t/* Enable font size inheritance, which allows fluid UI scaling. */\\n\\tfont-size: inherit;\\n\\n\\t& .ck-splitbutton__action:focus {\\n\\t\\tz-index: calc(var(--ck-z-default) + 1);\\n\\t}\\n}\\n\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n\\n:root {\\n\\t--ck-color-split-button-hover-background: hsl(0, 0%, 92%);\\n\\t--ck-color-split-button-hover-border: hsl(0, 0%, 70%);\\n}\\n\\n.ck.ck-splitbutton {\\n\\t/*\\n\\t * Note: ck-rounded and ck-dir mixins don't go together (because they both use @nest).\\n\\t */\\n\\t&:hover > .ck-splitbutton__action,\\n\\t&.ck-splitbutton_open > .ck-splitbutton__action {\\n\\t\\t[dir=\\\"ltr\\\"] & {\\n\\t\\t\\t/* Don't round the action button on the right side */\\n\\t\\t\\tborder-top-right-radius: unset;\\n\\t\\t\\tborder-bottom-right-radius: unset;\\n\\t\\t}\\n\\n\\t\\t[dir=\\\"rtl\\\"] & {\\n\\t\\t\\t/* Don't round the action button on the left side */\\n\\t\\t\\tborder-top-left-radius: unset;\\n\\t\\t\\tborder-bottom-left-radius: unset;\\n\\t\\t}\\n\\t}\\n\\n\\t& > .ck-splitbutton__arrow {\\n\\t\\t/* It's a text-less button and since the icon is positioned absolutely in such situation,\\n\\t\\tit must get some arbitrary min-width. */\\n\\t\\tmin-width: unset;\\n\\n\\t\\t[dir=\\\"ltr\\\"] & {\\n\\t\\t\\t/* Don't round the arrow button on the left side */\\n\\t\\t\\tborder-top-left-radius: unset;\\n\\t\\t\\tborder-bottom-left-radius: unset;\\n\\t\\t}\\n\\n\\t\\t[dir=\\\"rtl\\\"] & {\\n\\t\\t\\t/* Don't round the arrow button on the right side */\\n\\t\\t\\tborder-top-right-radius: unset;\\n\\t\\t\\tborder-bottom-right-radius: unset;\\n\\t\\t}\\n\\n\\t\\t& svg {\\n\\t\\t\\twidth: var(--ck-dropdown-arrow-size);\\n\\t\\t}\\n\\t}\\n\\n\\t/* Make sure the divider stretches 100% height of the button\\n\\thttps://github.com/ckeditor/ckeditor5/issues/10936 */\\n\\t& > .ck-splitbutton__arrow:not(:focus) {\\n\\t\\tborder-top-width: 0px;\\n\\t\\tborder-bottom-width: 0px;\\n\\t}\\n\\n\\t/* Don't round the bottom left and right corners of the buttons when \\\"open\\\"\\n\\thttps://github.com/ckeditor/ckeditor5/issues/816 */\\n\\t&.ck-splitbutton_open {\\n\\t\\t@mixin ck-rounded-corners {\\n\\t\\t\\t& > .ck-splitbutton__action {\\n\\t\\t\\t\\tborder-bottom-left-radius: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > .ck-splitbutton__arrow {\\n\\t\\t\\t\\tborder-bottom-right-radius: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/* When the split button is \\\"open\\\" (the arrow is on) or being hovered, it should get some styling\\n\\tas a whole. The background of both buttons should stand out and there should be a visual\\n\\tseparation between both buttons. */\\n\\t&.ck-splitbutton_open,\\n\\t&:hover {\\n\\t\\t/* When the split button hovered as a whole, not as individual buttons. */\\n\\t\\t& > .ck-button:not(.ck-on):not(.ck-disabled):not(:hover) {\\n\\t\\t\\tbackground: var(--ck-color-split-button-hover-background);\\n\\t\\t}\\n\\n\\t\\t/* Splitbutton separator needs to be set with the ::after pseudoselector\\n\\t\\tto display properly the borders on focus */\\n\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\twidth: 1px;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\tbackground-color: var(--ck-color-split-button-hover-border);\\n\\t\\t}\\n\\n\\t\\t/* Make sure the divider between the buttons looks fine when the button is focused */\\n\\t\\t& > .ck-splitbutton__arrow:focus::after {\\n\\t\\t\\t--ck-color-split-button-hover-border: var(--ck-color-focus-border);\\n\\t\\t}\\n\\n\\t\\t[dir=\\\"ltr\\\"] & {\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\\n\\t\\t\\t\\tleft: -1px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t[dir=\\\"rtl\\\"] & {\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\\n\\t\\t\\t\\tright: -1px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-mention-list-max-height:300px}.ck.ck-mentions{max-height:var(--ck-mention-list-max-height);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.ck.ck-mentions>.ck-list__item{flex-shrink:0;overflow:hidden}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-mention/theme/mentionui.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,kCACD,CAEA,gBACC,4CAA6C,CAM7C,iBAAkB,CAJlB,eAAgB,CAMhB,2BAQD,CAJC,+BAEC,aAAc,CADd,eAED\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-mention-list-max-height: 300px;\\n}\\n\\n.ck.ck-mentions {\\n\\tmax-height: var(--ck-mention-list-max-height);\\n\\n\\toverflow-y: auto;\\n\\n\\t/* Prevent unnecessary horizontal scrollbar in Safari\\n\\thttps://github.com/ckeditor/ckeditor5-mention/issues/41 */\\n\\toverflow-x: hidden;\\n\\n\\toverscroll-behavior: contain;\\n\\n\\t/* Prevent unnecessary vertical scrollbar in Safari\\n\\thttps://github.com/ckeditor/ckeditor5-mention/issues/41 */\\n\\t& > .ck-list__item {\\n\\t\\toverflow: hidden;\\n\\t\\tflex-shrink: 0;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel{max-height:314px;overflow-y:auto;position:absolute;z-index:calc(var(--ck-z-panel) + 1)}:root{--ck-dropdown-menu-menu-panel-max-width:75vw}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;box-shadow:var(--ck-drop-shadow),0 0;height:fit-content;max-width:var(--ck-dropdown-menu-menu-panel-max-width)}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel:after,.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel:before{display:none}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_es,.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_se{border-top-left-radius:0}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_sw,.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_ws{border-top-right-radius:0}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_en,.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_ne{border-bottom-left-radius:0}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_nw,.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-balloon-panel_wn{border-bottom-right-radius:0}.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel:focus{outline:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/menu/dropdownmenupanel.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/menu/dropdownmenupanel.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAKA,0DAEC,gBAAiB,CACjB,eAAgB,CAFhB,iBAAkB,CAGlB,mCACD,CCFA,MACC,4CACD,CAEA,0DAGC,oDAAqD,CACrD,sDAAuD,CACvD,QAAS,CCRT,oCAA8B,CDS9B,kBAAmB,CACnB,sDAgCD,CA7BC,iIAEC,YACD,CAGA,4JAEC,wBACD,CAEA,4JAEC,yBACD,CAEA,4JAEC,2BACD,CAEA,4JAEC,4BACD,CAEA,gEACC,YACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel {\\n\\tposition: absolute;\\n\\tmax-height: 314px; /* With the default settings, this is equal to 10 menu items. */\\n\\toverflow-y: auto;\\n\\tz-index: calc(var(--ck-z-panel) + 1);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../../mixins/_rounded.css\\\";\\n@import \\\"../../../../mixins/_shadow.css\\\";\\n\\n:root {\\n\\t--ck-dropdown-menu-menu-panel-max-width: 75vw;\\n}\\n\\n.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel {\\n\\t@mixin ck-drop-shadow;\\n\\n\\tbackground: var(--ck-color-dropdown-panel-background);\\n\\tborder: 1px solid var(--ck-color-dropdown-panel-border);\\n\\tbottom: 0;\\n\\theight: fit-content;\\n\\tmax-width: var(--ck-dropdown-menu-menu-panel-max-width);\\n\\n\\t/* Reset balloon styling */\\n\\t&::after,\\n\\t&::before {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t/* Corner border radius consistent with the button. */\\n\\t&.ck-balloon-panel_es,\\n\\t&.ck-balloon-panel_se {\\n\\t\\tborder-top-left-radius: 0;\\n\\t}\\n\\n\\t&.ck-balloon-panel_ws,\\n\\t&.ck-balloon-panel_sw {\\n\\t\\tborder-top-right-radius: 0;\\n\\t}\\n\\n\\t&.ck-balloon-panel_en,\\n\\t&.ck-balloon-panel_ne {\\n\\t\\tborder-bottom-left-radius: 0;\\n\\t}\\n\\n\\t&.ck-balloon-panel_wn,\\n\\t&.ck-balloon-panel_nw {\\n\\t\\tborder-bottom-right-radius: 0;\\n\\t}\\n\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{position:fixed;top:0;z-index:var(--ck-z-panel)}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{position:absolute;top:auto}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{border-top-left-radius:0;border-top-right-radius:0;border-width:0 1px 1px;box-shadow:var(--ck-drop-shadow),0 0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/stickypanel.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/stickypanel.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAMC,qDAEC,cAAe,CACf,KAAM,CAFN,yBAGD,CAEA,kEAEC,iBAAkB,CADlB,QAED,CCPA,qDAIC,wBAAyB,CACzB,yBAA0B,CAF1B,sBAAuB,CCFxB,oCDKA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-sticky-panel {\\n\\t& .ck-sticky-panel__content_sticky {\\n\\t\\tz-index: var(--ck-z-panel); /* #315 */\\n\\t\\tposition: fixed;\\n\\t\\ttop: 0;\\n\\t}\\n\\n\\t& .ck-sticky-panel__content_sticky_bottom-limit {\\n\\t\\ttop: auto;\\n\\t\\tposition: absolute;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_shadow.css\\\";\\n\\n.ck.ck-sticky-panel {\\n\\t& .ck-sticky-panel__content_sticky {\\n\\t\\t@mixin ck-drop-shadow;\\n\\n\\t\\tborder-width: 0 1px 1px;\\n\\t\\tborder-top-left-radius: 0;\\n\\t\\tborder-top-right-radius: 0;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-color-selector-caption-background:#f7f7f7;--ck-color-selector-caption-text:#333;--ck-color-selector-caption-highlighted-background:#fd0}.ck-content .table>figcaption{background-color:var(--ck-color-selector-caption-background);caption-side:top;color:var(--ck-color-selector-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;text-align:center;word-break:break-word}@media (forced-colors:active){.ck-content .table>figcaption{background-color:unset;color:unset}}@media (forced-colors:none){.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{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}@keyframes ck-table-caption-highlight{0%{background-color:var(--ck-color-selector-caption-highlighted-background)}to{background-color:var(--ck-color-selector-caption-background)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-table/theme/tablecaption.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css\"],\"names\":[],\"mappings\":\"AAOA,MACC,8CAAuD,CACvD,qCAAiD,CACjD,uDACD,CAGA,8BAMC,4DAA6D,CAJ7D,gBAAiB,CAGjB,2CAA4C,CAJ5C,qBAAsB,CAOtB,eAAgB,CAChB,mBAAoB,CAFpB,YAAa,CAHb,iBAAkB,CADlB,qBAaD,CCxBC,8BACC,8BDoBA,sBAAuB,CACvB,WCnBA,CACD,CAIA,4BDqBC,qEACC,iDACD,CCnBD,CDsBA,gEASC,eAAgB,CARhB,oBAAqB,CACrB,qBAAsB,CAQtB,sBAAuB,CAFvB,kBAGD,CAGD,sCACC,GACC,wEACD,CAEA,GACC,4DACD,CACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css\\\";\\n\\n:root {\\n\\t--ck-color-selector-caption-background: hsl(0, 0%, 97%);\\n\\t--ck-color-selector-caption-text: hsl(0, 0%, 20%);\\n\\t--ck-color-selector-caption-highlighted-background: hsl(52deg 100% 50%);\\n}\\n\\n/* Content styles */\\n.ck-content .table > figcaption {\\n\\tdisplay: table-caption;\\n\\tcaption-side: top;\\n\\tword-break: break-word;\\n\\ttext-align: center;\\n\\tcolor: var(--ck-color-selector-caption-text);\\n\\tbackground-color: var(--ck-color-selector-caption-background);\\n\\tpadding: .6em;\\n\\tfont-size: .75em;\\n\\toutline-offset: -1px;\\n\\n\\t/* Improve placeholder rendering in high-constrast mode (https://github.com/ckeditor/ckeditor5/issues/14907). */\\n\\t@mixin ck-media-forced-colors {\\n\\t\\tbackground-color: unset;\\n\\t\\tcolor: unset;\\n\\t}\\n}\\n\\n/* Editing styles */\\n.ck.ck-editor__editable .table > figcaption {\\n\\t@mixin ck-media-default-colors {\\n\\t\\t&.table__caption_highlighted {\\n\\t\\t\\tanimation: ck-table-caption-highlight .6s ease-out;\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-placeholder::before {\\n\\t\\tpadding-left: inherit;\\n\\t\\tpadding-right: inherit;\\n\\n\\t\\t/*\\n\\t\\t * Make sure the table caption placeholder doesn't overflow the placeholder area.\\n\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\\n\\t\\t */\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n}\\n\\n@keyframes ck-table-caption-highlight {\\n\\t0% {\\n\\t\\tbackground-color: var(--ck-color-selector-caption-highlighted-background);\\n\\t}\\n\\n\\t100% {\\n\\t\\tbackground-color: var(--ck-color-selector-caption-background);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-media-forced-colors {\\n\\t@media (forced-colors: active) {\\n\\t\\t& {\\n\\t\\t\\t@mixin-content;\\n\\t\\t}\\n\\t}\\n}\\n\\n@define-mixin ck-media-default-colors {\\n\\t@media (forced-colors: none) {\\n\\t\\t& {\\n\\t\\t\\t@mixin-content;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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{border-right:1px solid var(--ck-color-base-text);height:100%;margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/link.css\"],\"names\":[],\"mappings\":\"AAMA,sBACC,mDAMD,CAHC,wCACC,yFACD,CAOD,4BACC,8CACD,CAGA,sCAEC,gDAAiD,CADjD,WAAY,CAEZ,iBAAkB,CAClB,oCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/* Class added to span element surrounding currently selected link. */\\n.ck .ck-link_selected {\\n\\tbackground: var(--ck-color-link-selected-background);\\n\\n\\t/* Give linked inline images some outline to let the user know they are also part of the link. */\\n\\t& span.image-inline {\\n\\t\\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background);\\n\\t}\\n}\\n\\n/*\\n * Classes used by the \\\"fake visual selection\\\" displayed in the content when an input\\n * in the link UI has focus (the browser does not render the native selection in this state).\\n */\\n.ck .ck-fake-link-selection {\\n\\tbackground: var(--ck-color-link-fake-selection);\\n}\\n\\n/* A collapsed fake visual selection. */\\n.ck .ck-fake-link-selection_collapsed {\\n\\theight: 100%;\\n\\tborder-right: 1px solid var(--ck-color-base-text);\\n\\tmargin-right: -1px;\\n\\toutline: solid 1px hsla(0, 0%, 100%, .5);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{max-width:var(--ck-toolbar-dropdown-max-width);width:max-content}.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}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/toolbardropdown.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,oCACD,CAEA,4CAGC,8CAA+C,CAD/C,iBAQD,CAJE,6DACC,qCACD,CCZF,oCACC,QACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-toolbar-dropdown-max-width: 60vw;\\n}\\n\\n.ck.ck-toolbar-dropdown > .ck-dropdown__panel {\\n\\t/* https://github.com/ckeditor/ckeditor5/issues/5586 */\\n\\twidth: max-content;\\n\\tmax-width: var(--ck-toolbar-dropdown-max-width);\\n\\n\\t& .ck-button {\\n\\t\\t&:focus {\\n\\t\\t\\tz-index: calc(var(--ck-z-default) + 1);\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-toolbar-dropdown .ck-toolbar {\\n\\tborder: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-editor__editable .image,.ck.ck-editor__editable .image-inline{position:relative}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{left:0;position:absolute;top:0}.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}@media (prefers-reduced-motion:reduce){.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:none;opacity:1}}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{background:var(--ck-color-upload-bar-background);height:2px;transition:width .1s;width:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imageuploadprogress.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadprogress.css\"],\"names\":[],\"mappings\":\"AAMC,qEAEC,iBACD,CAGA,uGAIC,MAAO,CAFP,iBAAkB,CAClB,KAED,CCRC,yFACC,oBAMD,CAJC,uCAHD,yFAKE,cAAe,CADf,SAGF,CADC,CAKF,uGAIC,gDAAiD,CAFjD,UAAW,CAGX,oBAAuB,CAFvB,OAGD,CAGD,kBACC,GAAO,SAAY,CACnB,GAAO,SAAY,CACpB\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-editor__editable {\\n\\t& .image,\\n\\t& .image-inline {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t/* Upload progress bar. */\\n\\t& .image .ck-progress-bar,\\n\\t& .image-inline .ck-progress-bar {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-editor__editable {\\n\\t& .image,\\n\\t& .image-inline {\\n\\t\\t/* Showing animation. */\\n\\t\\t&.ck-appear {\\n\\t\\t\\tanimation: fadeIn 700ms;\\n\\n\\t\\t\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t\\tanimation: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/* Upload progress bar. */\\n\\t& .image .ck-progress-bar,\\n\\t& .image-inline .ck-progress-bar {\\n\\t\\theight: 2px;\\n\\t\\twidth: 0;\\n\\t\\tbackground: var(--ck-color-upload-bar-background);\\n\\t\\ttransition: width 100ms;\\n\\t}\\n}\\n\\n@keyframes fadeIn {\\n\\tfrom { opacity: 0; }\\n\\tto { opacity: 1; }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-editor__editable .ck-list-bogus-paragraph{display:block}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-list/theme/documentlist.css\"],\"names\":[],\"mappings\":\"AAKA,8CACC,aACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck-editor__editable .ck-list-bogus-paragraph {\\n\\tdisplay: block;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-image-style-spacing:1.5em;--ck-inline-image-style-spacing:calc(var(--ck-image-style-spacing)/2)}.ck-content .image.image-style-block-align-left,.ck-content .image.image-style-block-align-right{max-width:calc(100% - var(--ck-image-style-spacing))}.ck-content .image.image-style-align-left,.ck-content .image.image-style-align-right{clear:none}.ck-content .image.image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image.image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image.image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image.image-style-block-align-right{margin-left:auto;margin-right:0}.ck-content .image.image-style-block-align-left{margin-left:0;margin-right:auto}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content p+.image.image-style-align-left,.ck-content p+.image.image-style-align-right,.ck-content p+.image.image-style-side{margin-top:0}.ck-content .image-inline.image-style-align-left,.ck-content .image-inline.image-style-align-right{margin-bottom:var(--ck-inline-image-style-spacing);margin-top: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)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-image/theme/imagestyle.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,8BAA+B,CAC/B,qEACD,CAQE,iGAEC,oDACD,CAIA,qFAEC,UACD,CAEA,oCACC,WAAY,CACZ,yCAA0C,CAC1C,aACD,CAEA,0CACC,UAAW,CACX,0CACD,CAEA,2CACC,WAAY,CACZ,yCACD,CAEA,iDAEC,gBAAiB,CADjB,cAED,CAEA,gDACC,aAAc,CACd,iBACD,CAGD,sCACC,gBAAiB,CACjB,iBACD,CAEA,oCACC,UAAW,CACX,0CACD,CAEA,qCACC,WAAY,CACZ,yCACD,CAGA,+HAGC,YACD,CAGC,mGAGC,kDAAmD,CADnD,+CAED,CAEA,iDACC,iDACD,CAEA,kDACC,gDACD,CAUC,0lBAGC,qDAKD,CAHC,8nBACC,YACD,CAKD,oVAGC,2DACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-image-style-spacing: 1.5em;\\n\\t--ck-inline-image-style-spacing: calc(var(--ck-image-style-spacing) / 2);\\n}\\n\\n.ck-content {\\n\\t/* See: https://github.com/ckeditor/ckeditor5/issues/16317 */\\n\\t& .image {\\n\\t\\t/* Provides a minimal side margin for the left and right aligned images, so that the user has a visual feedback\\n\\t\\tconfirming successful application of the style if image width exceeds the editor's size.\\n\\t\\tSee https://github.com/ckeditor/ckeditor5/issues/9342 */\\n\\t\\t&.image-style-block-align-left,\\n\\t\\t&.image-style-block-align-right {\\n\\t\\t\\tmax-width: calc(100% - var(--ck-image-style-spacing));\\n\\t\\t}\\n\\n\\t\\t/* Allows displaying multiple floating images in the same line.\\n\\t\\tSee https://github.com/ckeditor/ckeditor5/issues/9183#issuecomment-804988132 */\\n\\t\\t&.image-style-align-left,\\n\\t\\t&.image-style-align-right {\\n\\t\\t\\tclear: none;\\n\\t\\t}\\n\\n\\t\\t&.image-style-side {\\n\\t\\t\\tfloat: right;\\n\\t\\t\\tmargin-left: var(--ck-image-style-spacing);\\n\\t\\t\\tmax-width: 50%;\\n\\t\\t}\\n\\n\\t\\t&.image-style-align-left {\\n\\t\\t\\tfloat: left;\\n\\t\\t\\tmargin-right: var(--ck-image-style-spacing);\\n\\t\\t}\\n\\n\\t\\t&.image-style-align-right {\\n\\t\\t\\tfloat: right;\\n\\t\\t\\tmargin-left: var(--ck-image-style-spacing);\\n\\t\\t}\\n\\n\\t\\t&.image-style-block-align-right {\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: auto;\\n\\t\\t}\\n\\n\\t\\t&.image-style-block-align-left {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tmargin-right: auto;\\n\\t\\t}\\n\\t}\\n\\n\\t& .image-style-align-center {\\n\\t\\tmargin-left: auto;\\n\\t\\tmargin-right: auto;\\n\\t}\\n\\n\\t& .image-style-align-left {\\n\\t\\tfloat: left;\\n\\t\\tmargin-right: var(--ck-image-style-spacing);\\n\\t}\\n\\n\\t& .image-style-align-right {\\n\\t\\tfloat: right;\\n\\t\\tmargin-left: var(--ck-image-style-spacing);\\n\\t}\\n\\n\\t/* Simulates margin collapsing with the preceding paragraph, which does not work for the floating elements. */\\n\\t& p + .image.image-style-align-left,\\n\\t& p + .image.image-style-align-right,\\n\\t& p + .image.image-style-side {\\n\\t\\tmargin-top: 0;\\n\\t}\\n\\n\\t& .image-inline {\\n\\t\\t&.image-style-align-left,\\n\\t\\t&.image-style-align-right {\\n\\t\\t\\tmargin-top: var(--ck-inline-image-style-spacing);\\n\\t\\t\\tmargin-bottom: var(--ck-inline-image-style-spacing);\\n\\t\\t}\\n\\n\\t\\t&.image-style-align-left {\\n\\t\\t\\tmargin-right: var(--ck-inline-image-style-spacing);\\n\\t\\t}\\n\\n\\t\\t&.image-style-align-right {\\n\\t\\t\\tmargin-left: var(--ck-inline-image-style-spacing);\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-splitbutton {\\n\\t/* The button should display as a regular drop-down if the action button\\n\\tis forced to fire the same action as the arrow button. */\\n\\t&.ck-splitbutton_flatten {\\n\\t\\t&:hover,\\n\\t\\t&.ck-splitbutton_open {\\n\\t\\t\\t& > .ck-splitbutton__action:not(.ck-disabled),\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled),\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\\n\\t\\t\\t\\tbackground-color: var(--ck-color-button-on-background);\\n\\n\\t\\t\\t\\t&::after {\\n\\t\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&.ck-splitbutton_open:hover {\\n\\t\\t\\t& > .ck-splitbutton__action:not(.ck-disabled),\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled),\\n\\t\\t\\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\\n\\t\\t\\t\\tbackground-color: var(--ck-color-button-on-hover-background);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#166fd4}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{transition:box-shadow .2s ease}@media (forced-colors:none){.ck.ck-color-grid__tile{border:0;height:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);padding:0;width:var(--ck-color-grid-tile-size)}.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.ck-color-selector__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.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: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)}}@media (forced-colors:active){.ck.ck-color-grid__tile{height:unset;min-height:unset;min-width:unset;padding:0 var(--ck-spacing-small);width:unset}.ck.ck-color-grid__tile .ck-button__label{display:inline-block}}@media (prefers-reduced-motion:reduce){.ck.ck-color-grid__tile{transition:none}}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile .ck.ck-icon{color:var(--ck-color-color-grid-check-icon);display:none}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/colorgrid/colorgrid.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorgrid/colorgrid.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css\"],\"names\":[],\"mappings\":\"AAKA,kBACC,YACD,CCCA,MACC,8BAA+B,CAK/B,wCACD,CAEA,kBACC,YAAa,CACb,WACD,CAEA,wBACC,8BAkED,CC3EC,4BACC,wBDgBA,QAAS,CAJT,qCAAsC,CAEtC,yCAA0C,CAD1C,wCAAyC,CAEzC,SAAU,CAJV,oCCTA,CDgBA,8HAIC,QACD,CAEA,+DACC,gDACD,CAEA,8BACC,8FACD,CAEA,gGAEC,iGACD,CCjCD,CAZA,8BACC,wBDqDA,YAAa,CAEb,gBAAiB,CADjB,eAAgB,CAEhB,iCAAkC,CAJlC,WClDA,CDwDA,0CACC,oBACD,CCzDD,CD4DA,uCAhDD,wBAiDE,eAkBF,CAjBC,CAEA,oCACC,YAAa,CACb,gBACD,CAEA,oCAEC,2CAA4C,CAD5C,YAED,CAGC,0CACC,aACD,CAIF,yBACC,oCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-color-grid {\\n\\tdisplay: grid;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css\\\";\\n\\n:root {\\n\\t--ck-color-grid-tile-size: 24px;\\n\\n\\t/* Not using global colors here because these may change but some colors in a pallette\\n\\t * require special treatment. For instance, this ensures no matter what the UI text color is,\\n\\t * the check icon will look good on the black color tile. */\\n\\t--ck-color-color-grid-check-icon: hsl(212, 81%, 46%);\\n}\\n\\n.ck.ck-color-grid {\\n\\tgrid-gap: 5px;\\n\\tpadding: 8px;\\n}\\n\\n.ck.ck-color-grid__tile {\\n\\ttransition: .2s ease box-shadow;\\n\\n\\t@mixin ck-media-default-colors {\\n\\t\\twidth: var(--ck-color-grid-tile-size);\\n\\t\\theight: var(--ck-color-grid-tile-size);\\n\\t\\tmin-width: var(--ck-color-grid-tile-size);\\n\\t\\tmin-height: var(--ck-color-grid-tile-size);\\n\\t\\tpadding: 0;\\n\\t\\tborder: 0;\\n\\n\\t\\t&.ck-on,\\n\\t\\t&:focus:not( .ck-disabled ),\\n\\t\\t&:hover:not( .ck-disabled ) {\\n\\t\\t\\t/* Disable the default .ck-button's border ring. */\\n\\t\\t\\tborder: 0;\\n\\t\\t}\\n\\n\\t\\t&.ck-color-selector__color-tile_bordered {\\n\\t\\t\\tbox-shadow: 0 0 0 1px var(--ck-color-base-border);\\n\\t\\t}\\n\\n\\t\\t&.ck-on {\\n\\t\\t\\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-base-text);\\n\\t\\t}\\n\\n\\t\\t&:focus:not( .ck-disabled ),\\n\\t\\t&:hover:not( .ck-disabled ) {\\n\\t\\t\\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * In high contrast mode, the colors are replaced with text labels.\\n\\t * See https://github.com/ckeditor/ckeditor5/issues/14907.\\n\\t */\\n\\t@mixin ck-media-forced-colors {\\n\\t\\twidth: unset;\\n\\t\\theight: unset;\\n\\t\\tmin-width: unset;\\n\\t\\tmin-height: unset;\\n\\t\\tpadding: 0 var(--ck-spacing-small);\\n\\n\\t\\t& .ck-button__label {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\n\\n\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\ttransition: none;\\n\\t}\\n\\n\\t&.ck-disabled {\\n\\t\\tcursor: unset;\\n\\t\\ttransition: unset;\\n\\t}\\n\\n\\t& .ck.ck-icon {\\n\\t\\tdisplay: none;\\n\\t\\tcolor: var(--ck-color-color-grid-check-icon);\\n\\t}\\n\\n\\t&.ck-on {\\n\\t\\t& .ck.ck-icon {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-color-grid__label {\\n\\tpadding: 0 var(--ck-spacing-standard);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-media-forced-colors {\\n\\t@media (forced-colors: active) {\\n\\t\\t& {\\n\\t\\t\\t@mixin-content;\\n\\t\\t}\\n\\t}\\n}\\n\\n@define-mixin ck-media-default-colors {\\n\\t@media (forced-colors: none) {\\n\\t\\t& {\\n\\t\\t\\t@mixin-content;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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{color:var(--ck-color-link-default);cursor:pointer;max-width:var(--ck-input-width);min-width:3em;padding:0 var(--ck-spacing-medium);text-align:center;text-overflow:ellipsis}.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{max-width:100%;min-width:0}[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}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-link/theme/linkactions.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkactions.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AAOA,oBACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,8CACC,oBAKD,CAHC,gEACC,eACD,CCXD,oCDCD,oBAcE,cAUF,CARE,8CACC,eACD,CAEA,8DACC,cACD,CCrBD,CCIA,wDACC,cAAe,CACf,eAmCD,CAjCC,0EAEC,kCAAmC,CAEnC,cAAe,CAIf,+BAAgC,CAChC,aAAc,CARd,kCAAmC,CASnC,iBAAkB,CAPlB,sBAYD,CAHC,gFACC,yBACD,CAGD,mPAIC,eACD,CAEA,+DACC,eACD,CAGC,gFACC,yBACD,CAWD,qHACC,sCACD,CDtDD,oCC0DC,wDACC,8DAMD,CAJC,0EAEC,cAAe,CADf,WAED,CChEF,gJDyEG,aCvEH,CFAA\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck.ck-link-actions {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\n\\t& .ck-link-actions__preview {\\n\\t\\tdisplay: inline-block;\\n\\n\\t\\t& .ck-button__label {\\n\\t\\t\\toverflow: hidden;\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\tflex-wrap: wrap;\\n\\n\\t\\t& .ck-link-actions__preview {\\n\\t\\t\\tflex-basis: 100%;\\n\\t\\t}\\n\\n\\t\\t& .ck-button:not(.ck-link-actions__preview) {\\n\\t\\t\\tflex-basis: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-media-phone {\\n\\t@media screen and (max-width: 600px) {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n@import \\\"../mixins/_focus.css\\\";\\n@import \\\"../mixins/_shadow.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck.ck-link-actions {\\n\\t& .ck-button.ck-link-actions__preview {\\n\\t\\tpadding-left: 0;\\n\\t\\tpadding-right: 0;\\n\\n\\t\\t& .ck-button__label {\\n\\t\\t\\tpadding: 0 var(--ck-spacing-medium);\\n\\t\\t\\tcolor: var(--ck-color-link-default);\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\tcursor: pointer;\\n\\n\\t\\t\\t/* Match the box model of the link editor form's input so the balloon\\n\\t\\t\\tdoes not change width when moving between actions and the form. */\\n\\t\\t\\tmax-width: var(--ck-input-width);\\n\\t\\t\\tmin-width: 3em;\\n\\t\\t\\ttext-align: center;\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\ttext-decoration: underline;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&,\\n\\t\\t&:hover,\\n\\t\\t&:focus,\\n\\t\\t&:active {\\n\\t\\t\\tbackground: none;\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\n\\t\\t&:focus {\\n\\t\\t\\t& .ck-button__label {\\n\\t\\t\\t\\ttext-decoration: underline;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-dir ltr {\\n\\t\\t& .ck-button:not(:first-child) {\\n\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-dir rtl {\\n\\t\\t& .ck-button:not(:last-child) {\\n\\t\\t\\tmargin-left: var(--ck-spacing-standard);\\n\\t\\t}\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\t& .ck-button.ck-link-actions__preview {\\n\\t\\t\\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\\n\\n\\t\\t\\t& .ck-button__label {\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\tmax-width: 100%;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t& .ck-button:not(.ck-link-actions__preview) {\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tmargin-left: 0;\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tmargin-left: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-dialog .ck.ck-dialog__actions{display:flex;justify-content:flex-end;padding:var(--ck-spacing-large)}.ck.ck-dialog .ck.ck-dialog__actions>*+*{margin-left:var(--ck-spacing-large)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/dialog/dialogactions.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dialog/dialogactions.css\"],\"names\":[],\"mappings\":\"AAMC,qCACC,YAAa,CACb,wBAAyB,CCDzB,+BDED,CCAC,yCACC,mCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-dialog {\\n\\t& .ck.ck-dialog__actions {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: flex-end;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-dialog {\\n\\t& .ck.ck-dialog__actions {\\n\\t\\tpadding: var(--ck-spacing-large);\\n\\n\\t\\t& > * + * {\\n\\t\\t\\tmargin-left: var(--ck-spacing-large);\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-textarea{overflow-x:hidden}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/textarea/textarea.css\"],\"names\":[],\"mappings\":\"AASA,aACC,iBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/*\\n * This fixes a problem in Firefox when the initial height of the complement does not match the number of rows.\\n * This bug is especially visible when rows=1.\\n */\\n.ck-textarea {\\n\\toverflow-x: hidden\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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%}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-image/theme/textalternativeform.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\"],\"names\":[],\"mappings\":\"AAOA,6BACC,YAAa,CACb,kBAAmB,CACnB,gBAqBD,CAnBC,oDACC,oBACD,CAEA,uCACC,YACD,CCZA,oCDCD,6BAcE,cAUF,CARE,oDACC,eACD,CAEA,wCACC,cACD,CCrBD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css\\\";\\n\\n.ck.ck-text-alternative-form {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: nowrap;\\n\\n\\t& .ck-labeled-field-view {\\n\\t\\tdisplay: inline-block;\\n\\t}\\n\\n\\t& .ck-label {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t@mixin ck-media-phone {\\n\\t\\tflex-wrap: wrap;\\n\\n\\t\\t& .ck-labeled-field-view {\\n\\t\\t\\tflex-basis: 100%;\\n\\t\\t}\\n\\n\\t\\t& .ck-button {\\n\\t\\t\\tflex-basis: 50%;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-media-phone {\\n\\t@media screen and (max-width: 600px) {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-content .image{clear:both;display:table;margin:.9em auto;min-width:50px;text-align:center}.ck-content .image img{display:block;height:auto;margin:0 auto;max-width:100%;min-width:100%}.ck-content .image-inline{align-items:flex-start;display:inline-flex;max-width:100%}.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{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}.ck.ck-editor__editable .image{z-index:1}.ck.ck-editor__editable .image.ck-widget_selected{z-index:2}.ck.ck-editor__editable .image-inline{z-index:1}.ck.ck-editor__editable .image-inline.ck-widget_selected{z-index:2}.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{display:none}.ck.ck-editor__editable .image-inline img{height:auto}.ck.ck-editor__editable td .image-inline img,.ck.ck-editor__editable th .image-inline img{max-width:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-image/theme/image.css\"],\"names\":[],\"mappings\":\"AAMC,mBAEC,UAAW,CADX,aAAc,CAOd,gBAAkB,CAGlB,cAAe,CARf,iBA2BD,CAjBC,uBAEC,aAAc,CAad,WAAY,CAVZ,aAAc,CAGd,cAAe,CAGf,cAKD,CAGD,0BAYC,sBAAuB,CANvB,mBAAoB,CAGpB,cAoBD,CAdC,kCACC,YACD,CAGA,gEAGC,WAAY,CACZ,aAAc,CAGd,cACD,CAUD,gEASC,eAAgB,CARhB,oBAAqB,CACrB,qBAAsB,CAQtB,sBAAuB,CAFvB,kBAGD,CAKA,+BACC,SASD,CAHC,kDACC,SACD,CAMD,sCACC,SAkBD,CAZC,yDACC,SAUD,CAHC,qEACC,YACD,CAMF,0CACC,WACD,CAMC,0FACC,cACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck-content {\\n\\t& .image {\\n\\t\\tdisplay: table;\\n\\t\\tclear: both;\\n\\t\\ttext-align: center;\\n\\n\\t\\t/* Make sure there is some space between the content and the image. Center image by default. */\\n\\t\\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\\n\\t \\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\\n\\t\\tmargin: 0.9em auto;\\n\\n\\t\\t/* Make sure the caption will be displayed properly (See: https://github.com/ckeditor/ckeditor5/issues/1870). */\\n\\t\\tmin-width: 50px;\\n\\n\\t\\t& img {\\n\\t\\t\\t/* Prevent unnecessary margins caused by line-height (see #44). */\\n\\t\\t\\tdisplay: block;\\n\\n\\t\\t\\t/* Center the image if its width is smaller than the content's width. */\\n\\t\\t\\tmargin: 0 auto;\\n\\n\\t\\t\\t/* Make sure the image never exceeds the size of the parent container (ckeditor/ckeditor5-ui#67). */\\n\\t\\t\\tmax-width: 100%;\\n\\n\\t\\t\\t/* Make sure the image is never smaller than the parent container (See: https://github.com/ckeditor/ckeditor5/issues/9300). */\\n\\t\\t\\tmin-width: 100%;\\n\\n\\t\\t\\t/* Keep proportions of the block image if the height is set and the image is wider than the editor width.\\n\\t\\t\\tSee https://github.com/ckeditor/ckeditor5/issues/14542. */\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n\\n\\t& .image-inline {\\n\\t\\t/*\\n\\t\\t * Normally, the .image-inline would have \\\"display: inline-block\\\" and \\\"img { width: 100% }\\\" (to follow the wrapper while resizing).\\n\\t\\t * Unfortunately, together with \\\"srcset\\\", it gets automatically stretched up to the width of the editing root.\\n\\t\\t * This strange behavior does not happen with inline-flex.\\n\\t\\t */\\n\\t\\tdisplay: inline-flex;\\n\\n\\t\\t/* While being resized, don't allow the image to exceed the width of the editing root. */\\n\\t\\tmax-width: 100%;\\n\\n\\t\\t/* This is required by Safari to resize images in a sensible way. Without this, the browser breaks the ratio. */\\n\\t\\talign-items: flex-start;\\n\\n\\t\\t/* When the picture is present it must act as a flex container to let the img resize properly */\\n\\t\\t& picture {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t}\\n\\n\\t\\t/* When the picture is present, it must act like a resizable img. */\\n\\t\\t& picture,\\n\\t\\t& img {\\n\\t\\t\\t/* This is necessary for the img to span the entire .image-inline wrapper and to resize properly. */\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t\\tflex-shrink: 1;\\n\\n\\t\\t\\t/* Prevents overflowing the editing root boundaries when an inline image is very wide. */\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-editor__editable {\\n\\t/*\\n\\t * Inhertit the content styles padding of the
      in case the integration overrides `text-align: center`\\n\\t * of `.image` (e.g. to the left/right). This ensures the placeholder stays at the padding just like the native\\n\\t * caret does, and not at the edge of
      .\\n\\t */\\n\\t& .image > figcaption.ck-placeholder::before {\\n\\t\\tpadding-left: inherit;\\n\\t\\tpadding-right: inherit;\\n\\n\\t\\t/*\\n\\t\\t * Make sure the image caption placeholder doesn't overflow the placeholder area.\\n\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\\n\\t\\t */\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t/*\\n\\t * See https://github.com/ckeditor/ckeditor5/issues/15115.\\n\\t */\\n\\t& .image {\\n\\t\\tz-index: 1;\\n\\n\\t\\t/*\\n\\t\\t * Make sure the selected image always stays on top of its siblings.\\n\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/9108.\\n\\t\\t */\\n\\t\\t&.ck-widget_selected {\\n\\t\\t\\tz-index: 2;\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * See https://github.com/ckeditor/ckeditor5/issues/15115.\\n\\t */\\n\\t& .image-inline {\\n\\t\\tz-index: 1;\\n\\n\\t\\t/*\\n\\t\\t * Make sure the selected inline image always stays on top of its siblings.\\n\\t\\t * See https://github.com/ckeditor/ckeditor5/issues/9108.\\n\\t\\t */\\n\\t\\t&.ck-widget_selected {\\n\\t\\t\\tz-index: 2;\\n\\n\\t\\t\\t/*\\n\\t\\t\\t * Make sure the native browser selection style is not displayed.\\n\\t\\t\\t * Inline image widgets have their own styles for the selected state and\\n\\t\\t\\t * leaving this up to the browser is asking for a visual collision.\\n\\t\\t\\t */\\n\\t\\t\\t& ::selection {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/* Keep proportions of the inline image if the height is set and the image is wider than the editor width.\\n\\tSee https://github.com/ckeditor/ckeditor5/issues/14542. */\\n\\t& .image-inline img {\\n\\t\\theight: auto;\\n\\t}\\n\\n\\t/* The inline image nested in the table should have its original size if not resized.\\n\\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\\n\\t& td,\\n\\t& th {\\n\\t\\t& .image-inline img {\\n\\t\\t\\tmax-width: none;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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{padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;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)}.ck .ck-insert-table-dropdown__label,.ck[dir=rtl] .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{border:1px solid var(--ck-color-base-border);border-radius:1px;margin:var(--ck-insert-table-dropdown-box-margin);min-height:var(--ck-insert-table-dropdown-box-height);min-width:var(--ck-insert-table-dropdown-box-width);outline:none;transition:none}@media (prefers-reduced-motion:reduce){.ck .ck-insert-table-dropdown-grid-box{transition:none}}.ck .ck-insert-table-dropdown-grid-box:focus{box-shadow:none}.ck .ck-insert-table-dropdown-grid-box.ck-on{background:var(--ck-color-focus-outer-shadow);border-color:var(--ck-color-focus-border)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-table/theme/inserttable.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/inserttable.css\"],\"names\":[],\"mappings\":\"AAKA,oCACC,YAAa,CACb,kBAAmB,CACnB,cACD,CCJA,MACC,uCAAwC,CACxC,0CAA2C,CAC3C,yCAA0C,CAC1C,yCACD,CAEA,oCAGC,yFAA0F,CAD1F,oJAED,CAEA,mFAEC,iBACD,CAEA,uCAIC,4CAA6C,CAC7C,iBAAkB,CAFlB,iDAAkD,CADlD,qDAAsD,CADtD,mDAAoD,CAKpD,YAAa,CACb,eAcD,CAZC,uCATD,uCAUE,eAWF,CAVC,CAEA,6CACC,eACD,CAEA,6CAEC,6CAA8C,CAD9C,yCAED\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck .ck-insert-table-dropdown__grid {\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\tflex-wrap: wrap;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-insert-table-dropdown-padding: 10px;\\n\\t--ck-insert-table-dropdown-box-height: 11px;\\n\\t--ck-insert-table-dropdown-box-width: 12px;\\n\\t--ck-insert-table-dropdown-box-margin: 1px;\\n}\\n\\n.ck .ck-insert-table-dropdown__grid {\\n\\t/* The width of a container should match 10 items in a row so there will be a 10x10 grid. */\\n\\twidth: calc(var(--ck-insert-table-dropdown-box-width) * 10 + var(--ck-insert-table-dropdown-box-margin) * 20 + var(--ck-insert-table-dropdown-padding) * 2);\\n\\tpadding: var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;\\n}\\n\\n.ck .ck-insert-table-dropdown__label,\\n.ck[dir=rtl] .ck-insert-table-dropdown__label {\\n\\ttext-align: center;\\n}\\n\\n.ck .ck-insert-table-dropdown-grid-box {\\n\\tmin-width: var(--ck-insert-table-dropdown-box-width);\\n\\tmin-height: var(--ck-insert-table-dropdown-box-height);\\n\\tmargin: var(--ck-insert-table-dropdown-box-margin);\\n\\tborder: 1px solid var(--ck-color-base-border);\\n\\tborder-radius: 1px;\\n\\toutline: none;\\n\\ttransition: none;\\n\\n\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\ttransition: none;\\n\\t}\\n\\n\\t&:focus {\\n\\t\\tbox-shadow: none;\\n\\t}\\n\\n\\t&.ck-on {\\n\\t\\tborder-color: var(--ck-color-focus-border);\\n\\t\\tbackground: var(--ck-color-focus-outer-shadow);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-color-selector-focused-cell-background:rgba(158,201,250,.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-selector-focused-cell-background);outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-table/tableediting.css\"],\"names\":[],\"mappings\":\"AAKA,MACC,gEACD,CAWE,8QAGC,2DAA4D,CAC5D,8CAA+C,CAC/C,mBACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-color-selector-focused-cell-background: hsla(212, 90%, 80%, .3);\\n}\\n\\n.ck-widget.table {\\n\\t& td,\\n\\t& th {\\n\\t\\t/**\\n\\t\\t * While setting outline is fine, the border should not be modified here\\n\\t\\t * because it overrides the default table cell border color which is not expected.\\n\\t\\t * So do not use `@mixin ck-focus-ring;` here, or any other border styles.\\n\\t\\t * See more: https://github.com/ckeditor/ckeditor5/issues/16979\\n\\t\\t */\\n\\t\\t&.ck-editor__nested-editable.ck-editor__nested-editable_focused,\\n\\t\\t&.ck-editor__nested-editable:focus {\\n\\t\\t\\t/* A very slight background to highlight the focused cell */\\n\\t\\t\\tbackground: var(--ck-color-selector-focused-cell-background);\\n\\t\\t\\toutline: 1px solid var(--ck-color-focus-border);\\n\\t\\t\\toutline-offset: -1px; /* progressive enhancement - no IE support */\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-button,a.ck.ck-button{align-items:center;display:inline-flex;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}[dir=ltr] .ck.ck-button,[dir=ltr] a.ck.ck-button{justify-content:left}[dir=rtl] .ck.ck-button,[dir=rtl] a.ck.ck-button{justify-content:right}.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,a.ck.ck-button{-webkit-appearance:none;background:var(--ck-color-button-default-background);border:1px solid transparent;border-radius:0;cursor:default;font-size:inherit;line-height:1;min-height:var(--ck-ui-component-min-height);min-width:var(--ck-ui-component-min-height);padding:var(--ck-spacing-tiny);text-align:center;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;vertical-align:middle;white-space:nowrap}.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)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.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)}@media (prefers-reduced-motion:reduce){.ck.ck-button,a.ck.ck-button{transition:none}}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.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{color:inherit;cursor:inherit;font-size:inherit;font-weight: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;opacity:.5}[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-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,.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__icon,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-right:var(--ck-spacing-medium)}[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-left:var(--ck-spacing-medium)}.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);color:var(--ck-color-button-on-color)}.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)}.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);color:var(--ck-color-button-action-text)}.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)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/button.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/button.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/mixins/_button.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css\"],\"names\":[],\"mappings\":\"AAQA,6BAMC,kBAAmB,CADnB,mBAAoB,CADpB,iBAAkB,CCHlB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBD0BD,CEhCC,iDFWC,oBETD,CAFA,iDFeC,qBEbD,CFgBA,iEACC,YACD,CAGC,yGACC,oBACD,CAID,iFACC,sBACD,CGzBD,6BA6BC,uBAAwB,CC7BxB,oDAAqC,CDuBrC,4BAA6B,CExB7B,eAAgB,CFOhB,cAAe,CAcf,iBAAkB,CAHlB,aAAc,CAJd,4CAA6C,CAD7C,2CAA4C,CAJ5C,8BAA+B,CAC/B,iBAAkB,CAiBlB,4DAA8D,CAnB9D,qBAAsB,CAFtB,kBAwID,CC1IE,6EACC,0DACD,CAEA,+EACC,2DACD,CAID,qDACC,6DACD,CCdA,wIAEC,qCAED,CF0BA,uCA/BD,6BAgCE,eA6GF,CA5GC,CAEA,oFGpCA,2BAA2B,CCF3B,2CAA8B,CDC9B,YHyCA,CAIC,kJAEC,aACD,CAGD,iEAIC,aAAc,CACd,cAAe,CAHf,iBAAkB,CAClB,mBAAoB,CAMpB,qBASD,CDzEA,qFCmEE,eDjEF,CAFA,qFCuEE,gBDrEF,CCyEA,yEACC,aAAc,CAUd,UACD,CDvFA,6FC+EE,mCD7EF,CAFA,6FCmFE,oCDjFF,CCyFC,oIIxFD,oDJ4FC,CAOA,gLKnGD,kCLqGC,CAEA,iGACC,UACD,CAGD,qEACC,yDAYD,CD5HA,2HCqHG,qCDnHH,CAFA,2HCyHG,oCDvHH,CC8HC,mHACC,WACD,CAID,yCChIA,+CAAqC,CDmIpC,qCACD,CCjIC,yFACC,qDACD,CAEA,2FACC,sDACD,CAID,iEACC,wDACD,CDuHA,2DACC,iCACD,CAEA,+DACC,mCACD,CAID,2CChJC,mDAAqC,CDoJrC,wCACD,CClJE,2FACC,yDACD,CAEA,6FACC,0DACD,CAID,mEACC,4DACD,CDwID,uCAEC,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../mixins/_unselectable.css\\\";\\n@import \\\"../../mixins/_dir.css\\\";\\n\\n.ck.ck-button,\\na.ck.ck-button {\\n\\t@mixin ck-unselectable;\\n\\n\\tposition: relative;\\n\\tdisplay: inline-flex;\\n\\talign-items: center;\\n\\n\\t@mixin ck-dir ltr {\\n\\t\\tjustify-content: left;\\n\\t}\\n\\n\\t@mixin ck-dir rtl {\\n\\t\\tjustify-content: right;\\n\\t}\\n\\n\\t& .ck-button__label {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t&.ck-button_with-text {\\n\\t\\t& .ck-button__label {\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\n\\n\\t/* Center the icon horizontally in a button without text. */\\n\\t&:not(.ck-button_with-text) {\\n\\t\\tjustify-content: center;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Makes element unselectable.\\n */\\n@define-mixin ck-unselectable {\\n\\t-moz-user-select: none;\\n\\t-webkit-user-select: none;\\n\\t-ms-user-select: none;\\n\\tuser-select: none\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_focus.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n@import \\\"../../../mixins/_disabled.css\\\";\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../mixins/_button.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n.ck.ck-button,\\na.ck.ck-button {\\n\\t@mixin ck-button-colors --ck-color-button-default;\\n\\t@mixin ck-rounded-corners;\\n\\n\\twhite-space: nowrap;\\n\\tcursor: default;\\n\\tvertical-align: middle;\\n\\tpadding: var(--ck-spacing-tiny);\\n\\ttext-align: center;\\n\\n\\t/* A very important piece of styling. Go to variable declaration to learn more. */\\n\\tmin-width: var(--ck-ui-component-min-height);\\n\\tmin-height: var(--ck-ui-component-min-height);\\n\\n\\t/* Normalize the height of the line. Removing this will break consistent height\\n\\tamong text and text-less buttons (with icons). */\\n\\tline-height: 1;\\n\\n\\t/* Enable font size inheritance, which allows fluid UI scaling. */\\n\\tfont-size: inherit;\\n\\n\\t/* Avoid flickering when the foucs border shows up. */\\n\\tborder: 1px solid transparent;\\n\\n\\t/* Apply some smooth transition to the box-shadow and border. */\\n\\ttransition: box-shadow .2s ease-in-out, border .2s ease-in-out;\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/189 */\\n\\t-webkit-appearance: none;\\n\\n\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\ttransition: none;\\n\\t}\\n\\n\\t&:active,\\n\\t&:focus {\\n\\t\\t@mixin ck-focus-ring;\\n\\t\\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\\n\\t}\\n\\n\\t/* Allow icon coloring using the text \\\"color\\\" property. */\\n\\t& .ck-button__icon {\\n\\t\\t& use,\\n\\t\\t& use * {\\n\\t\\t\\tcolor: inherit;\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-button__label {\\n\\t\\t/* Enable font size inheritance, which allows fluid UI scaling. */\\n\\t\\tfont-size: inherit;\\n\\t\\tfont-weight: inherit;\\n\\t\\tcolor: inherit;\\n\\t\\tcursor: inherit;\\n\\n\\t\\t/* Must be consistent with .ck-icon's vertical align. Otherwise, buttons with and\\n\\t\\twithout labels (but with icons) have different sizes in Chrome */\\n\\t\\tvertical-align: middle;\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\ttext-align: left;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\ttext-align: right;\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-button__keystroke {\\n\\t\\tcolor: inherit;\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tmargin-left: var(--ck-spacing-large);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tmargin-right: var(--ck-spacing-large);\\n\\t\\t}\\n\\n\\t\\topacity: .5;\\n\\t}\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\\n\\t&.ck-disabled {\\n\\t\\t&:active,\\n\\t\\t&:focus {\\n\\t\\t\\t/* The disabled button should have a slightly less visible shadow when focused. */\\n\\t\\t\\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\\n\\t\\t}\\n\\n\\t\\t& .ck-button__icon {\\n\\t\\t\\t@mixin ck-disabled;\\n\\t\\t}\\n\\n\\t\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\\n\\t\\t& .ck-button__label {\\n\\t\\t\\t@mixin ck-disabled;\\n\\t\\t}\\n\\n\\t\\t& .ck-button__keystroke {\\n\\t\\t\\topacity: .3;\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-button_with-text {\\n\\t\\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-standard);\\n\\n\\t\\t/* stylelint-disable-next-line no-descending-specificity */\\n\\t\\t& .ck-button__icon {\\n\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\tmargin-right: var(--ck-spacing-medium);\\n\\t\\t\\t}\\n\\n\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\tmargin-left: var(--ck-spacing-medium);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-button_with-keystroke {\\n\\t\\t/* stylelint-disable-next-line no-descending-specificity */\\n\\t\\t& .ck-button__label {\\n\\t\\t\\tflex-grow: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t/* A style of the button which is currently on, e.g. its feature is active. */\\n\\t&.ck-on {\\n\\t\\t@mixin ck-button-colors --ck-color-button-on;\\n\\n\\t\\tcolor: var(--ck-color-button-on-color);\\n\\t}\\n\\n\\t&.ck-button-save {\\n\\t\\tcolor: var(--ck-color-button-save);\\n\\t}\\n\\n\\t&.ck-button-cancel {\\n\\t\\tcolor: var(--ck-color-button-cancel);\\n\\t}\\n}\\n\\n/* A style of the button which handles the primary action. */\\n.ck.ck-button-action,\\na.ck.ck-button-action {\\n\\t@mixin ck-button-colors --ck-color-button-action;\\n\\n\\tcolor: var(--ck-color-button-action-text);\\n}\\n\\n.ck.ck-button-bold,\\na.ck.ck-button-bold {\\n\\tfont-weight: bold;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements a button of given background color.\\n *\\n * @param {String} $background - Background color of the button.\\n * @param {String} $border - Border color of the button.\\n */\\n@define-mixin ck-button-colors $prefix {\\n\\tbackground: var($(prefix)-background);\\n\\n\\t&:not(.ck-disabled) {\\n\\t\\t&:hover {\\n\\t\\t\\tbackground: var($(prefix)-hover-background);\\n\\t\\t}\\n\\n\\t\\t&:active {\\n\\t\\t\\tbackground: var($(prefix)-active-background);\\n\\t\\t}\\n\\t}\\n\\n\\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\\n\\t&.ck-disabled {\\n\\t\\tbackground: var($(prefix)-disabled-background);\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A visual style of focused element's border.\\n */\\n@define-mixin ck-focus-ring {\\n\\t/* Disable native outline. */\\n\\toutline: none;\\n\\tborder: var(--ck-focus-ring)\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A class which indicates that an element holding it is disabled.\\n */\\n@define-mixin ck-disabled {\\n\\topacity: var(--ck-disabled-opacity);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-content code{background-color:hsla(0,0%,78%,.3);border-radius:2px;padding:.15em}.ck.ck-editor__editable .ck-code_selected{background-color:hsla(0,0%,78%,.5)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-basic-styles/theme/code.css\"],\"names\":[],\"mappings\":\"AAKA,iBACC,kCAAuC,CAEvC,iBAAkB,CADlB,aAED,CAEA,0CACC,kCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck-content code {\\n\\tbackground-color: hsla(0, 0%, 78%, 0.3);\\n\\tpadding: .15em;\\n\\tborder-radius: 2px;\\n}\\n\\n.ck.ck-editor__editable .ck-code_selected {\\n\\tbackground-color: hsla(0, 0%, 78%, 0.5);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;pointer-events:none;position:relative}.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}.ck.ck-clipboard-drop-target-line{pointer-events:none;position:absolute}: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{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);margin-left:-1px;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{border-color:var(--ck-clipboard-drop-target-color) transparent transparent transparent;border-style:solid;border-width:calc(var(--ck-clipboard-drop-target-dot-height)) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5);content:\"\";display:block;height:0;left:50%;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);transform:translateX(-50%);width:0}.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}.ck.ck-clipboard-drop-target-line{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);height:0;margin-top:-1px}.ck.ck-clipboard-drop-target-line:before{border-style:solid;content:\"\";height:0;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-width)*-.5);width:0}[dir=ltr] .ck.ck-clipboard-drop-target-line:before{border-color:transparent transparent transparent var(--ck-clipboard-drop-target-color);border-width:calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5) var(--ck-clipboard-drop-target-dot-height);left:-1px}[dir=rtl] .ck.ck-clipboard-drop-target-line:before{border-color:transparent var(--ck-clipboard-drop-target-color) transparent transparent;border-width:calc(var(--ck-clipboard-drop-target-dot-width)*.5) var(--ck-clipboard-drop-target-dot-height) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0;right:-1px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-clipboard/theme/clipboard.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-clipboard/clipboard.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\"],\"names\":[],\"mappings\":\"AASC,8DACC,cAAe,CAEf,mBAAoB,CADpB,iBAOD,CAJC,mEACC,iBAAkB,CAClB,OACD,CAWA,qJACC,YACD,CAIF,kCAEC,mBAAoB,CADpB,iBAED,CC9BA,MACC,yCAA0C,CAC1C,yCAA0C,CAC1C,6DACD,CAOE,mEAIC,gDAAiD,CADjD,sDAAuD,CAFvD,2DAA8D,CAI9D,gBAAiB,CAHjB,wDAqBD,CAfC,yEAWC,sFAAuF,CAEvF,kBAAmB,CADnB,qKAA0K,CAX1K,UAAW,CAIX,aAAc,CAFd,QAAS,CAIT,QAAS,CADT,iBAAkB,CAElB,wDAA2D,CAE3D,0BAA2B,CAR3B,OAYD,CAOF,kEACC,gGACD,CAKA,gDACC,OAAS,CACT,sBACD,CAGD,kCAGC,gDAAiD,CADjD,sDAAuD,CADvD,QAAS,CAGT,eAwBD,CAtBC,yCAMC,kBAAmB,CALnB,UAAW,CAIX,QAAS,CAHT,iBAAkB,CAClB,uDAA0D,CAC1D,OAiBD,CCjFA,mDDwEE,sFAAuF,CADvF,+JAAoK,CAFpK,SCnEF,CAFA,mDD+EE,sFAAuF,CADvF,+JAAmK,CAFnK,UC1EF\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-editor__editable {\\n\\t/*\\n\\t * Vertical drop target (in text).\\n\\t */\\n\\t& .ck.ck-clipboard-drop-target-position {\\n\\t\\tdisplay: inline;\\n\\t\\tposition: relative;\\n\\t\\tpointer-events: none;\\n\\n\\t\\t& span {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\twidth: 0;\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles of the widget being dragged (its preview).\\n\\t */\\n\\t& .ck-widget:-webkit-drag {\\n\\t\\t& > .ck-widget__selection-handle {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t& > .ck-widget__type-around {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\t}\\n}\\n\\n.ck.ck-clipboard-drop-target-line {\\n\\tposition: absolute;\\n\\tpointer-events: none;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n:root {\\n\\t--ck-clipboard-drop-target-dot-width: 12px;\\n\\t--ck-clipboard-drop-target-dot-height: 8px;\\n\\t--ck-clipboard-drop-target-color: var(--ck-color-focus-border);\\n}\\n\\n.ck.ck-editor__editable {\\n\\t/*\\n\\t * Vertical drop target (in text).\\n\\t */\\n\\t& .ck.ck-clipboard-drop-target-position {\\n\\t\\t& span {\\n\\t\\t\\tbottom: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\\n\\t\\t\\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\\n\\t\\t\\tborder: 1px solid var(--ck-clipboard-drop-target-color);\\n\\t\\t\\tbackground: var(--ck-clipboard-drop-target-color);\\n\\t\\t\\tmargin-left: -1px;\\n\\n\\t\\t\\t/* The triangle above the marker */\\n\\t\\t\\t&::after {\\n\\t\\t\\t\\tcontent: '';\\n\\t\\t\\t\\twidth: 0;\\n\\t\\t\\t\\theight: 0;\\n\\n\\t\\t\\t\\tdisplay: block;\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tleft: 50%;\\n\\t\\t\\t\\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\\n\\n\\t\\t\\t\\ttransform: translateX(-50%);\\n\\t\\t\\t\\tborder-color: var(--ck-clipboard-drop-target-color) transparent transparent transparent;\\n\\t\\t\\t\\tborder-width: calc(var(--ck-clipboard-drop-target-dot-height)) calc(.5 * var(--ck-clipboard-drop-target-dot-width)) 0 calc(.5 * var(--ck-clipboard-drop-target-dot-width));\\n\\t\\t\\t\\tborder-style: solid;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t/*\\n\\t * Styles of the widget that it a drop target.\\n\\t */\\n\\t& .ck-widget.ck-clipboard-drop-target-range {\\n\\t\\toutline: var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color) !important;\\n\\t}\\n\\n\\t/*\\n\\t * Styles of the widget being dragged (its preview).\\n\\t */\\n\\t& .ck-widget:-webkit-drag {\\n\\t\\tzoom: 0.6;\\n\\t\\toutline: none !important;\\n\\t}\\n}\\n\\n.ck.ck-clipboard-drop-target-line {\\n\\theight: 0;\\n\\tborder: 1px solid var(--ck-clipboard-drop-target-color);\\n\\tbackground: var(--ck-clipboard-drop-target-color);\\n\\tmargin-top: -1px;\\n\\n\\t&::before {\\n\\t\\tcontent: '';\\n\\t\\tposition: absolute;\\n\\t\\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-width));\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tborder-style: solid;\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\tleft: -1px;\\n\\n\\t\\t\\tborder-width: calc(.5 * var(--ck-clipboard-drop-target-dot-width)) 0 calc(.5 * var(--ck-clipboard-drop-target-dot-width)) var(--ck-clipboard-drop-target-dot-height);\\n\\t\\t\\tborder-color: transparent transparent transparent var(--ck-clipboard-drop-target-color);\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\tright: -1px;\\n\\n\\t\\t\\tborder-width:calc(.5 * var(--ck-clipboard-drop-target-dot-width)) var(--ck-clipboard-drop-target-dot-height) calc(.5 * var(--ck-clipboard-drop-target-dot-width)) 0;\\n\\t\\t\\tborder-color: transparent var(--ck-clipboard-drop-target-color) transparent transparent;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Markdown-it plugin to render GitHub-style task lists; see\n//\n// https://github.com/blog/1375-task-lists-in-gfm-issues-pulls-comments\n// https://github.com/blog/1825-task-lists-in-all-markdown-documents\n\nvar disableCheckboxes = true;\nvar useLabelWrapper = false;\nvar useLabelAfter = false;\n\nmodule.exports = function(md, options) {\n\tif (options) {\n\t\tdisableCheckboxes = !options.enabled;\n\t\tuseLabelWrapper = !!options.label;\n\t\tuseLabelAfter = !!options.labelAfter;\n\t}\n\n\tmd.core.ruler.after('inline', 'github-task-lists', function(state) {\n\t\tvar tokens = state.tokens;\n\t\tfor (var i = 2; i < tokens.length; i++) {\n\t\t\tif (isTodoItem(tokens, i)) {\n\t\t\t\ttodoify(tokens[i], state.Token);\n\t\t\t\tattrSet(tokens[i-2], 'class', 'task-list-item' + (!disableCheckboxes ? ' enabled' : ''));\n\t\t\t\tattrSet(tokens[parentToken(tokens, i-2)], 'class', 'contains-task-list');\n\t\t\t}\n\t\t}\n\t});\n};\n\nfunction attrSet(token, name, value) {\n\tvar index = token.attrIndex(name);\n\tvar attr = [name, value];\n\n\tif (index < 0) {\n\t\ttoken.attrPush(attr);\n\t} else {\n\t\ttoken.attrs[index] = attr;\n\t}\n}\n\nfunction parentToken(tokens, index) {\n\tvar targetLevel = tokens[index].level - 1;\n\tfor (var i = index - 1; i >= 0; i--) {\n\t\tif (tokens[i].level === targetLevel) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction isTodoItem(tokens, index) {\n\treturn isInline(tokens[index]) &&\n\t isParagraph(tokens[index - 1]) &&\n\t isListItem(tokens[index - 2]) &&\n\t startsWithTodoMarkdown(tokens[index]);\n}\n\nfunction todoify(token, TokenConstructor) {\n\ttoken.children.unshift(makeCheckbox(token, TokenConstructor));\n\ttoken.children[1].content = token.children[1].content.slice(3);\n\ttoken.content = token.content.slice(3);\n\n\tif (useLabelWrapper) {\n\t\tif (useLabelAfter) {\n\t\t\ttoken.children.pop();\n\n\t\t\t// Use large random number as id property of the checkbox.\n\t\t\tvar id = 'task-item-' + Math.ceil(Math.random() * (10000 * 1000) - 1000);\n\t\t\ttoken.children[0].content = token.children[0].content.slice(0, -1) + ' id=\"' + id + '\">';\n\t\t\ttoken.children.push(afterLabel(token.content, id, TokenConstructor));\n\t\t} else {\n\t\t\ttoken.children.unshift(beginLabel(TokenConstructor));\n\t\t\ttoken.children.push(endLabel(TokenConstructor));\n\t\t}\n\t}\n}\n\nfunction makeCheckbox(token, TokenConstructor) {\n\tvar checkbox = new TokenConstructor('html_inline', '', 0);\n\tvar disabledAttr = disableCheckboxes ? ' disabled=\"\" ' : '';\n\tif (token.content.indexOf('[ ] ') === 0) {\n\t\tcheckbox.content = '';\n\t} else if (token.content.indexOf('[x] ') === 0 || token.content.indexOf('[X] ') === 0) {\n\t\tcheckbox.content = '';\n\t}\n\treturn checkbox;\n}\n\n// these next two functions are kind of hacky; probably should really be a\n// true block-level token with .tag=='label'\nfunction beginLabel(TokenConstructor) {\n\tvar token = new TokenConstructor('html_inline', '', 0);\n\ttoken.content = '';\n\treturn token;\n}\n\nfunction afterLabel(content, id, TokenConstructor) {\n\tvar token = new TokenConstructor('html_inline', '', 0);\n\ttoken.content = '';\n\ttoken.attrs = [{for: id}];\n\treturn token;\n}\n\nfunction isInline(token) { return token.type === 'inline'; }\nfunction isParagraph(token) { return token.type === 'paragraph_open'; }\nfunction isListItem(token) { return token.type === 'list_item_open'; }\n\nfunction startsWithTodoMarkdown(token) {\n\t// leading whitespace in a list item is already trimmed off by markdown-it\n\treturn token.content.indexOf('[ ] ') === 0 || token.content.indexOf('[x] ') === 0 || token.content.indexOf('[X] ') === 0;\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--ck-accessibility-help-dialog-max-width:600px;--ck-accessibility-help-dialog-max-height:400px;--ck-accessibility-help-dialog-border-color:#ccced1;--ck-accessibility-help-dialog-code-background-color:#ededed;--ck-accessibility-help-dialog-kbd-shadow-color:#9c9c9c}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content{border:1px solid transparent;max-height:var(--ck-accessibility-help-dialog-max-height);max-width:var(--ck-accessibility-help-dialog-max-width);overflow:auto;padding:var(--ck-spacing-large);user-select:text}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content *{white-space:normal}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content .ck-label{display:none}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h3{font-size:1.2em;font-weight:700}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h4{font-size:1em;font-weight:700}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h3,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content h4,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content p,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content table{margin:1em 0}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl{border-bottom:none;border-top:1px solid var(--ck-accessibility-help-dialog-border-color);display:grid;grid-template-columns:2fr 1fr}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dd,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dt{border-bottom:1px solid var(--ck-accessibility-help-dialog-border-color);padding:.4em 0}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dt{grid-column-start:1}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content dl dd{grid-column-start:2;text-align:right}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content code,.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd{background:var(--ck-accessibility-help-dialog-code-background-color);border-radius:2px;display:inline-block;font-size:.9em;line-height:1;padding:.4em;text-align:center;vertical-align:middle}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content code{font-family:monospace}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd{box-shadow:0 1px 1px var(--ck-accessibility-help-dialog-kbd-shadow-color);margin:0 1px;min-width:1.8em}.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content kbd+kbd{margin-left:2px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/accessibilityhelp.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_focus.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css\"],\"names\":[],\"mappings\":\"AAQA,MACC,8CAA+C,CAC/C,+CAAgD,CAChD,mDAA8D,CAC9D,4DAAyE,CACzE,uDACD,CAEA,wEAOC,4BAA6B,CAJ7B,yDAA0D,CAD1D,uDAAwD,CAExD,aAAc,CAHd,+BAAgC,CAIhC,gBAgFD,CA5EC,8ECdA,2BAA2B,CCF3B,2CAA8B,CDC9B,YDkBA,CAEA,0EACC,kBACD,CAGA,kFACC,YACD,CAEA,2EAEC,eAAgB,CADhB,eAED,CAEA,2EAEC,aAAc,CADd,eAED,CAEA,8SAIC,YACD,CAEA,2EAIC,kBAAmB,CADnB,qEAAsE,CAFtE,YAAa,CACb,6BAiBD,CAbC,4JACC,wEAAyE,CACzE,cACD,CAEA,8EACC,mBACD,CAEA,8EACC,mBAAoB,CACpB,gBACD,CAGD,yJAEC,oEAAqE,CAIrE,iBAAkB,CALlB,oBAAqB,CAOrB,cAAe,CAHf,aAAc,CAFd,YAAa,CAIb,iBAAkB,CAHlB,qBAKD,CAEA,6EACC,qBACD,CAEA,4EAEC,yEAA4E,CAC5E,YAAa,CAFb,eAOD,CAHC,gFACC,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_focus.css\\\";\\n@import \\\"../../../mixins/_shadow.css\\\";\\n\\n:root {\\n\\t--ck-accessibility-help-dialog-max-width: 600px;\\n\\t--ck-accessibility-help-dialog-max-height: 400px;\\n\\t--ck-accessibility-help-dialog-border-color: hsl(220, 6%, 81%);\\n\\t--ck-accessibility-help-dialog-code-background-color: hsl(0deg 0% 92.94%);\\n\\t--ck-accessibility-help-dialog-kbd-shadow-color: hsl(0deg 0% 61%);\\n}\\n\\n.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content {\\n\\tpadding: var(--ck-spacing-large);\\n\\tmax-width: var(--ck-accessibility-help-dialog-max-width);\\n\\tmax-height: var(--ck-accessibility-help-dialog-max-height);\\n\\toverflow: auto;\\n\\tuser-select: text;\\n\\n\\tborder: 1px solid transparent;\\n\\n\\t&:focus {\\n\\t\\t@mixin ck-focus-ring;\\n\\t\\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\\n\\t}\\n\\n\\t* {\\n\\t\\twhite-space: normal;\\n\\t}\\n\\n\\t/* Hide the main label of the content container. */\\n\\t& .ck-label {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t& h3 {\\n\\t\\tfont-weight: bold;\\n\\t\\tfont-size: 1.2em;\\n\\t}\\n\\n\\t& h4 {\\n\\t\\tfont-weight: bold;\\n\\t\\tfont-size: 1em;\\n\\t}\\n\\n\\t& p,\\n\\t& h3,\\n\\t& h4,\\n\\t& table {\\n\\t\\tmargin: 1em 0;\\n\\t}\\n\\n\\t& dl {\\n\\t\\tdisplay: grid;\\n\\t\\tgrid-template-columns: 2fr 1fr;\\n\\t\\tborder-top: 1px solid var(--ck-accessibility-help-dialog-border-color);\\n\\t\\tborder-bottom: none;\\n\\n\\t\\t& dt, & dd {\\n\\t\\t\\tborder-bottom: 1px solid var(--ck-accessibility-help-dialog-border-color);\\n\\t\\t\\tpadding: .4em 0;\\n\\t\\t}\\n\\n\\t\\t& dt {\\n\\t\\t\\tgrid-column-start: 1;\\n\\t\\t}\\n\\n\\t\\t& dd {\\n\\t\\t\\tgrid-column-start: 2;\\n\\t\\t\\ttext-align: right;\\n\\t\\t}\\n\\t}\\n\\n\\t& kbd, & code {\\n\\t\\tdisplay: inline-block;\\n\\t\\tbackground: var(--ck-accessibility-help-dialog-code-background-color);\\n\\t\\tpadding: .4em;\\n\\t\\tvertical-align: middle;\\n\\t\\tline-height: 1;\\n\\t\\tborder-radius: 2px;\\n\\t\\ttext-align: center;\\n\\t\\tfont-size: .9em;\\n\\t}\\n\\n\\t& code {\\n\\t\\tfont-family: monospace;\\n\\t}\\n\\n\\t& kbd {\\n\\t\\tmin-width: 1.8em;\\n\\t\\tbox-shadow: 0px 1px 1px var(--ck-accessibility-help-dialog-kbd-shadow-color);\\n\\t\\tmargin: 0 1px;\\n\\n\\t\\t& + kbd {\\n\\t\\t\\tmargin-left: 2px;\\n\\t\\t}\\n\\t}\\n}\\n\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A visual style of focused element's border.\\n */\\n@define-mixin ck-focus-ring {\\n\\t/* Disable native outline. */\\n\\toutline: none;\\n\\tborder: var(--ck-focus-ring)\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A helper to combine multiple shadows.\\n */\\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\\n\\tbox-shadow: $shadowA, $shadowB;\\n}\\n\\n/**\\n * Gives an element a drop shadow so it looks like a floating panel.\\n */\\n@define-mixin ck-drop-shadow {\\n\\t@mixin ck-box-shadow var(--ck-drop-shadow);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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:calc(1.07692em + 1px);--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - 2px);--ck-switch-button-inner-hover-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton,.ck.ck-button.ck-switchbutton.ck-on:active,.ck.ck-button.ck-switchbutton.ck-on:focus,.ck.ck-button.ck-switchbutton.ck-on:hover,.ck.ck-button.ck-switchbutton:active,.ck.ck-button.ck-switchbutton:focus,.ck.ck-button.ck-switchbutton:hover{background:transparent;color:inherit}[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{background:var(--ck-color-switch-button-off-background);border:1px solid transparent;border-radius:0;transition:background .4s ease,box-shadow .2s ease-in-out,outline .2s ease-in-out;width:var(--ck-switch-button-toggle-width)}.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 .ck-button__toggle__inner{background:var(--ck-color-switch-button-inner-background);border-radius:0;height:var(--ck-switch-button-toggle-inner-size);transition:all .3s ease;width:var(--ck-switch-button-toggle-inner-size)}.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)*.5)}@media (prefers-reduced-motion:reduce){.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{transition:none}}.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:var(--ck-switch-button-inner-hover-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton:focus{border-color:transparent;box-shadow:none;outline:none}.ck.ck-button.ck-switchbutton:focus .ck-button__toggle{box-shadow:0 0 0 1px var(--ck-color-base-background),0 0 0 5px var(--ck-color-focus-outer-shadow);outline:var(--ck-focus-ring);outline-offset:1px}.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))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/button/switchbutton.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/switchbutton.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/mixins/_disabled.css\"],\"names\":[],\"mappings\":\"AASE,4HACC,aACD,CCCF,MAEC,8CAA+C,CAE/C,0DAAgE,CAChE,2HAIC,CACD,0FACD,CAOC,0QAEC,sBAAuB,CADvB,aAED,CC3BA,0DDgCE,4CC9BF,CAFA,0DDqCE,2CCnCF,CDuCA,iDAkBC,uDAAwD,CAFxD,4BAA6B,CEpD9B,eAAgB,CFmDf,iFAAsF,CAEtF,0CA2BD,CE9EA,yIAEC,qCAED,CDXA,2DD8CE,gBC5CF,CAFA,2DDmDE,iBCjDF,CD2DC,2EAOC,yDAA0D,CE/D5D,eAAgB,CF8Dd,gDAAiD,CAIjD,uBAA0B,CAL1B,+CAUD,CErED,6LAEC,qCAAsC,CFsDpC,8CEpDH,CF8DE,uCAZD,2EAaE,eAEF,CADC,CAGD,uDACC,6DAKD,CAHC,iFACC,qDACD,CAIF,6DGpFA,kCHsFA,CAGA,oCACC,wBAAyB,CAEzB,eAAgB,CADhB,YAQD,CALC,uDACC,iGAAmG,CAEnG,4BAA6B,CAD7B,kBAED,CAKA,uDACC,sDAkBD,CAhBC,6DACC,4DACD,CC/GF,2FDsHI,2DCpHJ,CAFA,2FD0HI,oECxHJ\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-button.ck-switchbutton {\\n\\t& .ck-button__toggle {\\n\\t\\tdisplay: block;\\n\\n\\t\\t& .ck-button__toggle__inner {\\n\\t\\t\\tdisplay: block;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@import \\\"../../../mixins/_rounded.css\\\";\\n@import \\\"../../../mixins/_disabled.css\\\";\\n@import \\\"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\\\";\\n\\n/* Note: To avoid rendering issues (aliasing) but to preserve the responsive nature\\nof the component, floating–point numbers have been used which, for the default font size\\n(see: --ck-font-size-base), will generate simple integers. */\\n:root {\\n\\t/* 34px at 13px font-size */\\n\\t--ck-switch-button-toggle-width: 2.6153846154em;\\n\\t/* 14px at 13px font-size */\\n\\t--ck-switch-button-toggle-inner-size: calc(1.0769230769em + 1px);\\n\\t--ck-switch-button-translation: calc(\\n\\t\\tvar(--ck-switch-button-toggle-width) -\\n\\t\\tvar(--ck-switch-button-toggle-inner-size) -\\n\\t\\t2px /* Border */\\n\\t);\\n\\t--ck-switch-button-inner-hover-shadow: 0 0 0 5px var(--ck-color-switch-button-inner-shadow);\\n}\\n\\n.ck.ck-button.ck-switchbutton {\\n\\t/* Unlike a regular button, the switch button text color and background should never change.\\n\\t * Changing toggle switch (background, outline) is enough to carry the information about the\\n\\t * state of the entire component (https://github.com/ckeditor/ckeditor5/issues/12519)\\n\\t */\\n\\t&, &:hover, &:focus, &:active, &.ck-on:hover, &.ck-on:focus, &.ck-on:active {\\n\\t\\tcolor: inherit;\\n\\t\\tbackground: transparent;\\n\\t}\\n\\n\\t& .ck-button__label {\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t/* Separate the label from the switch */\\n\\t\\t\\tmargin-right: calc(2 * var(--ck-spacing-large));\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t/* Separate the label from the switch */\\n\\t\\t\\tmargin-left: calc(2 * var(--ck-spacing-large));\\n\\t\\t}\\n\\t}\\n\\n\\t& .ck-button__toggle {\\n\\t\\t@mixin ck-rounded-corners;\\n\\n\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t/* Make sure the toggle is always to the right as far as possible. */\\n\\t\\t\\tmargin-left: auto;\\n\\t\\t}\\n\\n\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t/* Make sure the toggle is always to the left as far as possible. */\\n\\t\\t\\tmargin-right: auto;\\n\\t\\t}\\n\\n\\t\\t/* Apply some smooth transition to the box-shadow and border. */\\n\\t\\t/* Gently animate the background color of the toggle switch */\\n\\t\\ttransition: background 400ms ease, box-shadow .2s ease-in-out, outline .2s ease-in-out;\\n\\t\\tborder: 1px solid transparent;\\n\\t\\twidth: var(--ck-switch-button-toggle-width);\\n\\t\\tbackground: var(--ck-color-switch-button-off-background);\\n\\n\\t\\t& .ck-button__toggle__inner {\\n\\t\\t\\t@mixin ck-rounded-corners {\\n\\t\\t\\t\\tborder-radius: calc(.5 * var(--ck-border-radius));\\n\\t\\t\\t}\\n\\n\\t\\t\\twidth: var(--ck-switch-button-toggle-inner-size);\\n\\t\\t\\theight: var(--ck-switch-button-toggle-inner-size);\\n\\t\\t\\tbackground: var(--ck-color-switch-button-inner-background);\\n\\n\\t\\t\\t/* Gently animate the inner part of the toggle switch */\\n\\t\\t\\ttransition: all 300ms ease;\\n\\n\\t\\t\\t@media (prefers-reduced-motion: reduce) {\\n\\t\\t\\t\\ttransition: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&:hover {\\n\\t\\t\\tbackground: var(--ck-color-switch-button-off-hover-background);\\n\\n\\t\\t\\t& .ck-button__toggle__inner {\\n\\t\\t\\t\\tbox-shadow: var(--ck-switch-button-inner-hover-shadow);\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&.ck-disabled .ck-button__toggle {\\n\\t\\t@mixin ck-disabled;\\n\\t}\\n\\n\\t/* Overriding default .ck-button:focus styles + an outline around the toogle */\\n\\t&:focus {\\n\\t\\tborder-color: transparent;\\n\\t\\toutline: none;\\n\\t\\tbox-shadow: none;\\n\\n\\t\\t& .ck-button__toggle {\\n\\t\\t\\tbox-shadow: 0 0 0 1px var(--ck-color-base-background), 0 0 0 5px var(--ck-color-focus-outer-shadow);\\n\\t\\t\\toutline-offset: 1px;\\n\\t\\t\\toutline: var(--ck-focus-ring);\\n\\t\\t}\\n\\t}\\n\\n\\t/* stylelint-disable-next-line no-descending-specificity */\\n\\t&.ck-on {\\n\\t\\t& .ck-button__toggle {\\n\\t\\t\\tbackground: var(--ck-color-switch-button-on-background);\\n\\n\\t\\t\\t&:hover {\\n\\t\\t\\t\\tbackground: var(--ck-color-switch-button-on-hover-background);\\n\\t\\t\\t}\\n\\n\\t\\t\\t& .ck-button__toggle__inner {\\n\\t\\t\\t\\t/*\\n\\t\\t\\t\\t* Move the toggle switch to the right. It will be animated.\\n\\t\\t\\t\\t*/\\n\\t\\t\\t\\t@mixin ck-dir ltr {\\n\\t\\t\\t\\t\\ttransform: translateX( var( --ck-switch-button-translation ) );\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t@mixin ck-dir rtl {\\n\\t\\t\\t\\t\\ttransform: translateX( calc( -1 * var( --ck-switch-button-translation ) ) );\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n@define-mixin ck-dir $direction {\\n\\t[dir=\\\"$(direction)\\\"] & {\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * Implements rounded corner interface for .ck-rounded-corners class.\\n *\\n * @see $ck-border-radius\\n */\\n@define-mixin ck-rounded-corners {\\n\\tborder-radius: 0;\\n\\n\\t.ck-rounded-corners &,\\n\\t&.ck-rounded-corners {\\n\\t\\tborder-radius: var(--ck-border-radius);\\n\\t\\t@mixin-content;\\n\\t}\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n/**\\n * A class which indicates that an element holding it is disabled.\\n */\\n@define-mixin ck-disabled {\\n\\topacity: var(--ck-disabled-opacity);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck .ck-balloon-rotator__navigation{align-items:center;display:flex;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-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-left:var(--ck-spacing-small);margin-right:var(--ck-spacing-standard)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonrotator.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonrotator.css\"],\"names\":[],\"mappings\":\"AAKA,oCAEC,kBAAmB,CADnB,YAAa,CAEb,sBACD,CAKA,6CACC,sBACD,CCXA,oCACC,6CAA8C,CAC9C,sDAAuD,CACvD,iCAgBD,CAbC,sCAGC,qCAAsC,CAFtC,oCAAqC,CACrC,kCAED,CAGA,iEAIC,mCAAoC,CAHpC,uCAID,CAMA,2DACC,eACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck .ck-balloon-rotator__navigation {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\\n/* Buttons inside a toolbar should be centered when rotator bar is wider.\\n * See: https://github.com/ckeditor/ckeditor5-ui/issues/495\\n */\\n.ck .ck-balloon-rotator__content .ck-toolbar {\\n\\tjustify-content: center;\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck .ck-balloon-rotator__navigation {\\n\\tbackground: var(--ck-color-toolbar-background);\\n\\tborder-bottom: 1px solid var(--ck-color-toolbar-border);\\n\\tpadding: 0 var(--ck-spacing-small);\\n\\n\\t/* Let's keep similar appearance to `ck-toolbar`. */\\n\\t& > * {\\n\\t\\tmargin-right: var(--ck-spacing-small);\\n\\t\\tmargin-top: var(--ck-spacing-small);\\n\\t\\tmargin-bottom: var(--ck-spacing-small);\\n\\t}\\n\\n\\t/* Gives counter more breath than buttons. */\\n\\t& .ck-balloon-rotator__counter {\\n\\t\\tmargin-right: var(--ck-spacing-standard);\\n\\n\\t\\t/* We need to use smaller margin because of previous button's right margin. */\\n\\t\\tmargin-left: var(--ck-spacing-small);\\n\\t}\\n}\\n\\n.ck .ck-balloon-rotator__content {\\n\\n\\t/* Disable default annotation shadow inside rotator with fake panels. */\\n\\t& .ck.ck-annotation-wrapper {\\n\\t\\tbox-shadow: none;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.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)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css\",\"webpack://./node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/blocktoolbar.css\"],\"names\":[],\"mappings\":\"AAKA,4BACC,iBAAkB,CAClB,2BACD,CCHA,MACC,oDAAqD,CACrD,yDACD,CAEA,4BACC,0CAA2C,CAC3C,sCACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck.ck-block-toolbar-button {\\n\\tposition: absolute;\\n\\tz-index: var(--ck-z-default);\\n}\\n\",\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n:root {\\n\\t--ck-color-block-toolbar-button: var(--ck-color-text);\\n\\t--ck-block-toolbar-button-size: var(--ck-font-size-normal);\\n}\\n\\n.ck.ck-block-toolbar-button {\\n\\tcolor: var(--ck-color-block-toolbar-button);\\n\\tfont-size: var(--ck-block-toolbar-size);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ck-content .table{display:table;margin:.9em auto}.ck-content .table table{border:1px double #b3b3b3;border-collapse:collapse;border-spacing:0;height:100%;width:100%}.ck-content .table table td,.ck-content .table table th{border:1px solid #bfbfbf;min-width:2em;padding:.4em}.ck-content .table table th{background:rgba(0,0,0,.05);font-weight:700}@media print{.ck-content .table table{height:auto}}.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%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@ckeditor/ckeditor5-table/theme/table.css\"],\"names\":[],\"mappings\":\"AAKA,mBAKC,aAAc,CADd,gBAiCD,CA9BC,yBAYC,yBAAkC,CAVlC,wBAAyB,CACzB,gBAAiB,CAKjB,WAAY,CADZ,UAsBD,CAfC,wDAQC,wBAAiC,CANjC,aAAc,CACd,YAMD,CAEA,4BAEC,0BAA+B,CAD/B,eAED,CAeF,aACC,yBACC,WACD,CACD,CAIA,+BACC,gBACD,CAEA,+BACC,eACD,CAEA,+CAKC,oBAAqB,CAMrB,UACD\",\"sourcesContent\":[\"/*\\n * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\\n */\\n\\n.ck-content .table {\\n\\t/* Give the table widget some air and center it horizontally */\\n\\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\\n\\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\\n\\tmargin: 0.9em auto;\\n\\tdisplay: table;\\n\\n\\t& table {\\n\\t\\t/* The table cells should have slight borders */\\n\\t\\tborder-collapse: collapse;\\n\\t\\tborder-spacing: 0;\\n\\n\\t\\t/* Table width and height are set on the parent
      . Make sure the table inside stretches\\n\\t\\tto the full dimensions of the container (https://github.com/ckeditor/ckeditor5/issues/6186). */\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\n\\t\\t/* The outer border of the table should be slightly darker than the inner lines.\\n\\t\\tAlso see https://github.com/ckeditor/ckeditor5-table/issues/50. */\\n\\t\\tborder: 1px double hsl(0, 0%, 70%);\\n\\n\\t\\t& td,\\n\\t\\t& th {\\n\\t\\t\\tmin-width: 2em;\\n\\t\\t\\tpadding: .4em;\\n\\n\\t\\t\\t/* The border is inherited from .ck-editor__nested-editable styles, so theoretically it's not necessary here.\\n\\t\\t\\tHowever, the border is a content style, so it should use .ck-content (so it works outside the editor).\\n\\t\\t\\tHence, the duplication. See https://github.com/ckeditor/ckeditor5/issues/6314 */\\n\\t\\t\\tborder: 1px solid hsl(0, 0%, 75%);\\n\\t\\t}\\n\\n\\t\\t& th {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tbackground: hsla(0, 0%, 0%, 5%);\\n\\t\\t}\\n\\t}\\n}\\n\\n/**\\n * Expanding the table to the full height of the parent container is necessary because tables\\n * are rendered inside
      elements, which is kinda buggy in table height calculation.\\n * While setting `height: 100%` fixes the issue in the editing mode described here:\\n * https://github.com/ckeditor/ckeditor5/issues/6186\\n *\\n * it's causing another issue with the table height in the print preview mode here:\\n * https://github.com/ckeditor/ckeditor5/issues/16856\\n *\\n * For now, resetting the height to `initial` in the print mode works as a workaround.\\n */\\n@media print {\\n\\t.ck-content .table table {\\n\\t\\theight: initial;\\n\\t}\\n}\\n\\n/* Text alignment of the table header should match the editor settings and override the native browser styling,\\nwhen content is available outside the editor. See https://github.com/ckeditor/ckeditor5/issues/6638 */\\n.ck-content[dir=\\\"rtl\\\"] .table th {\\n\\ttext-align: right;\\n}\\n\\n.ck-content[dir=\\\"ltr\\\"] .table th {\\n\\ttext-align: left;\\n}\\n\\n.ck-editor__editable .ck-table-bogus-paragraph {\\n\\t/*\\n\\t * Use display:inline-block to force Chrome/Safari to limit text mutations to this element.\\n\\t * See https://github.com/ckeditor/ckeditor5/issues/6062.\\n\\t */\\n\\tdisplay: inline-block;\\n\\n\\t/*\\n\\t * Inline HTML elements nested in the span should always be dimensioned in relation to the whole cell width.\\n\\t * See https://github.com/ckeditor/ckeditor5/issues/9117.\\n\\t */\\n\\twidth: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// no jsonp function","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * A helper (module) giving an access to the global DOM objects such as `window` and\n * `document`. Accessing these objects using this helper allows easy and bulletproof\n * testing, i.e. stubbing native properties:\n *\n * ```ts\n * import { global } from 'ckeditor5/utils';\n *\n * // This stub will work for any code using global module.\n * testUtils.sinon.stub( global, 'window', {\n * \tinnerWidth: 10000\n * } );\n *\n * console.log( global.window.innerWidth );\n * ```\n */\nlet globalVar; // named globalVar instead of global: https://github.com/ckeditor/ckeditor5/issues/12971\n// In some environments window and document API might not be available.\ntry {\n globalVar = { window, document };\n}\ncatch (e) {\n // It's not possible to mock a window object to simulate lack of a window object without writing extremely convoluted code.\n /* istanbul ignore next -- @preserve */\n // Let's cast it to not change module's API.\n // We only handle this so loading editor in environments without window and document doesn't fail.\n // For better DX we shouldn't introduce mixed types and require developers to check the type manually.\n // This module should not be used on purpose in any environment outside browser.\n globalVar = { window: {}, document: {} };\n}\nexport default globalVar;\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/* globals navigator:false */\n/**\n * @module utils/env\n */\nimport global from './dom/global.js';\n/**\n * Safely returns `userAgent` from browser's navigator API in a lower case.\n * If navigator API is not available it will return an empty string.\n */\nexport function getUserAgent() {\n // In some environments navigator API might not be available.\n try {\n return navigator.userAgent.toLowerCase();\n }\n catch (e) {\n return '';\n }\n}\nconst userAgent = /* #__PURE__ */ getUserAgent();\n/**\n * A namespace containing environment and browser information.\n */\nconst env = {\n isMac: /* #__PURE__ */ isMac(userAgent),\n isWindows: /* #__PURE__ */ isWindows(userAgent),\n isGecko: /* #__PURE__ */ isGecko(userAgent),\n isSafari: /* #__PURE__ */ isSafari(userAgent),\n isiOS: /* #__PURE__ */ isiOS(userAgent),\n isAndroid: /* #__PURE__ */ isAndroid(userAgent),\n isBlink: /* #__PURE__ */ isBlink(userAgent),\n get isMediaForcedColors() {\n return isMediaForcedColors();\n },\n get isMotionReduced() {\n return isMotionReduced();\n },\n features: {\n isRegExpUnicodePropertySupported: /* #__PURE__ */ isRegExpUnicodePropertySupported()\n }\n};\nexport default env;\n/**\n * Checks if User Agent represented by the string is running on Macintosh.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is running on Macintosh or not.\n */\nexport function isMac(userAgent) {\n return userAgent.indexOf('macintosh') > -1;\n}\n/**\n * Checks if User Agent represented by the string is running on Windows.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is running on Windows or not.\n */\nexport function isWindows(userAgent) {\n return userAgent.indexOf('windows') > -1;\n}\n/**\n * Checks if User Agent represented by the string is Firefox (Gecko).\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is Firefox or not.\n */\nexport function isGecko(userAgent) {\n return !!userAgent.match(/gecko\\/\\d+/);\n}\n/**\n * Checks if User Agent represented by the string is Safari.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is Safari or not.\n */\nexport function isSafari(userAgent) {\n return userAgent.indexOf(' applewebkit/') > -1 && userAgent.indexOf('chrome') === -1;\n}\n/**\n * Checks if User Agent represented by the string is running in iOS.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is running in iOS or not.\n */\nexport function isiOS(userAgent) {\n // \"Request mobile site\" || \"Request desktop site\".\n return !!userAgent.match(/iphone|ipad/i) || (isMac(userAgent) && navigator.maxTouchPoints > 0);\n}\n/**\n * Checks if User Agent represented by the string is Android mobile device.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is Safari or not.\n */\nexport function isAndroid(userAgent) {\n return userAgent.indexOf('android') > -1;\n}\n/**\n * Checks if User Agent represented by the string is Blink engine.\n *\n * @param userAgent **Lowercase** `navigator.userAgent` string.\n * @returns Whether User Agent is Blink engine or not.\n */\nexport function isBlink(userAgent) {\n // The Edge browser before switching to the Blink engine used to report itself as Chrome (and \"Edge/\")\n // but after switching to the Blink it replaced \"Edge/\" with \"Edg/\".\n return userAgent.indexOf('chrome/') > -1 && userAgent.indexOf('edge/') < 0;\n}\n/**\n * Checks if the current environment supports ES2018 Unicode properties like `\\p{P}` or `\\p{L}`.\n * More information about unicode properties might be found\n * [in Unicode Standard Annex #44](https://www.unicode.org/reports/tr44/#GC_Values_Table).\n */\nexport function isRegExpUnicodePropertySupported() {\n let isSupported = false;\n // Feature detection for Unicode properties. Added in ES2018. Currently Firefox does not support it.\n // See https://github.com/ckeditor/ckeditor5-mention/issues/44#issuecomment-487002174.\n try {\n // Usage of regular expression literal cause error during build (ckeditor/ckeditor5-dev#534).\n isSupported = 'ć'.search(new RegExp('[\\\\p{L}]', 'u')) === 0;\n }\n catch (error) {\n // Firefox throws a SyntaxError when the group is unsupported.\n }\n return isSupported;\n}\n/**\n * Checks if the user agent has enabled a forced colors mode (e.g. Windows High Contrast mode).\n *\n * Returns `false` in environments where `window` global object is not available.\n */\nexport function isMediaForcedColors() {\n return global.window.matchMedia ? global.window.matchMedia('(forced-colors: active)').matches : false;\n}\n/**\n * Checks if the user enabled \"prefers reduced motion\" setting in browser.\n *\n * Returns `false` in environments where `window` global object is not available.\n */\nexport function isMotionReduced() {\n return global.window.matchMedia ? global.window.matchMedia('(prefers-reduced-motion)').matches : false;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/fastdiff\n */\n/**\n * Finds positions of the first and last change in the given string/array and generates a set of changes:\n *\n * ```ts\n * fastDiff( '12a', '12xyza' );\n * // [ { index: 2, type: 'insert', values: [ 'x', 'y', 'z' ] } ]\n *\n * fastDiff( '12a', '12aa' );\n * // [ { index: 3, type: 'insert', values: [ 'a' ] } ]\n *\n * fastDiff( '12xyza', '12a' );\n * // [ { index: 2, type: 'delete', howMany: 3 } ]\n *\n * fastDiff( [ '1', '2', 'a', 'a' ], [ '1', '2', 'a' ] );\n * // [ { index: 3, type: 'delete', howMany: 1 } ]\n *\n * fastDiff( [ '1', '2', 'a', 'b', 'c', '3' ], [ '2', 'a', 'b' ] );\n * // [ { index: 0, type: 'insert', values: [ '2', 'a', 'b' ] }, { index: 3, type: 'delete', howMany: 6 } ]\n * ```\n *\n * Passed arrays can contain any type of data, however to compare them correctly custom comparator function\n * should be passed as a third parameter:\n *\n * ```ts\n * fastDiff( [ { value: 1 }, { value: 2 } ], [ { value: 1 }, { value: 3 } ], ( a, b ) => {\n * \treturn a.value === b.value;\n * } );\n * // [ { index: 1, type: 'insert', values: [ { value: 3 } ] }, { index: 2, type: 'delete', howMany: 1 } ]\n * ```\n *\n * The resulted set of changes can be applied to the input in order to transform it into the output, for example:\n *\n * ```ts\n * let input = '12abc3';\n * const output = '2ab';\n * const changes = fastDiff( input, output );\n *\n * changes.forEach( change => {\n * \tif ( change.type == 'insert' ) {\n * \t\tinput = input.substring( 0, change.index ) + change.values.join( '' ) + input.substring( change.index );\n * \t} else if ( change.type == 'delete' ) {\n * \t\tinput = input.substring( 0, change.index ) + input.substring( change.index + change.howMany );\n * \t}\n * } );\n *\n * // input equals output now\n * ```\n *\n * or in case of arrays:\n *\n * ```ts\n * let input = [ '1', '2', 'a', 'b', 'c', '3' ];\n * const output = [ '2', 'a', 'b' ];\n * const changes = fastDiff( input, output );\n *\n * changes.forEach( change => {\n * \tif ( change.type == 'insert' ) {\n * \t\tinput = input.slice( 0, change.index ).concat( change.values, input.slice( change.index ) );\n * \t} else if ( change.type == 'delete' ) {\n * \t\tinput = input.slice( 0, change.index ).concat( input.slice( change.index + change.howMany ) );\n * \t}\n * } );\n *\n * // input equals output now\n * ```\n *\n * By passing `true` as the fourth parameter (`atomicChanges`) the output of this function will become compatible with\n * the {@link module:utils/diff~diff `diff()`} function:\n *\n * ```ts\n * fastDiff( '12a', '12xyza', undefined, true );\n * // [ 'equal', 'equal', 'insert', 'insert', 'insert', 'equal' ]\n * ```\n *\n * The default output format of this function is compatible with the output format of\n * {@link module:utils/difftochanges~diffToChanges `diffToChanges()`}. The `diffToChanges()` input format is, in turn,\n * compatible with the output of {@link module:utils/diff~diff `diff()`}:\n *\n * ```ts\n * const a = '1234';\n * const b = '12xyz34';\n *\n * // Both calls will return the same results (grouped changes format).\n * fastDiff( a, b );\n * diffToChanges( diff( a, b ) );\n *\n * // Again, both calls will return the same results (atomic changes format).\n * fastDiff( a, b, undefined, true );\n * diff( a, b );\n * ```\n *\n * @typeParam T The type of array elements.\n * @typeParam AtomicChanges The type of `atomicChanges` parameter (selects the result type).\n * @param a Input array or string.\n * @param b Input array or string.\n * @param cmp Optional function used to compare array values, by default `===` (strict equal operator) is used.\n * @param atomicChanges Whether an array of `inset|delete|equal` operations should\n * be returned instead of changes set. This makes this function compatible with {@link module:utils/diff~diff `diff()`}.\n * Defaults to `false`.\n * @returns Array of changes. The elements are either {@link module:utils/diff~DiffResult} or {@link module:utils/difftochanges~Change},\n * depending on `atomicChanges` parameter.\n */\nexport default function fastDiff(a, b, cmp, atomicChanges) {\n // Set the comparator function.\n cmp = cmp || function (a, b) {\n return a === b;\n };\n // Convert the string (or any array-like object - eg. NodeList) to an array by using the slice() method because,\n // unlike Array.from(), it returns array of UTF-16 code units instead of the code points of a string.\n // One code point might be a surrogate pair of two code units. All text offsets are expected to be in code units.\n // See ckeditor/ckeditor5#3147.\n //\n // We need to make sure here that fastDiff() works identical to diff().\n const arrayA = Array.isArray(a) ? a : Array.prototype.slice.call(a);\n const arrayB = Array.isArray(b) ? b : Array.prototype.slice.call(b);\n // Find first and last change.\n const changeIndexes = findChangeBoundaryIndexes(arrayA, arrayB, cmp);\n // Transform into changes array.\n const result = atomicChanges ?\n changeIndexesToAtomicChanges(changeIndexes, arrayB.length) :\n changeIndexesToChanges(arrayB, changeIndexes);\n return result;\n}\n/**\n * Finds position of the first and last change in the given arrays. For example:\n *\n * ```ts\n * const indexes = findChangeBoundaryIndexes( [ '1', '2', '3', '4' ], [ '1', '3', '4', '2', '4' ] );\n * console.log( indexes ); // { firstIndex: 1, lastIndexOld: 3, lastIndexNew: 4 }\n * ```\n *\n * The above indexes means that in the first array the modified part is `1[23]4` and in the second array it is `1[342]4`.\n * Based on such indexes, array with `insert`/`delete` operations which allows transforming first value into the second one\n * can be generated.\n */\nfunction findChangeBoundaryIndexes(arr1, arr2, cmp) {\n // Find the first difference between passed values.\n const firstIndex = findFirstDifferenceIndex(arr1, arr2, cmp);\n // If arrays are equal return -1 indexes object.\n if (firstIndex === -1) {\n return { firstIndex: -1, lastIndexOld: -1, lastIndexNew: -1 };\n }\n // Remove the common part of each value and reverse them to make it simpler to find the last difference between them.\n const oldArrayReversed = cutAndReverse(arr1, firstIndex);\n const newArrayReversed = cutAndReverse(arr2, firstIndex);\n // Find the first difference between reversed values.\n // It should be treated as \"how many elements from the end the last difference occurred\".\n //\n // For example:\n //\n // \t\t\t\tinitial\t->\tafter cut\t-> reversed:\n // oldValue:\t'321ba'\t->\t'21ba'\t\t-> 'ab12'\n // newValue:\t'31xba'\t->\t'1xba'\t\t-> 'abx1'\n // lastIndex:\t\t\t\t\t\t\t-> 2\n //\n // So the last change occurred two characters from the end of the arrays.\n const lastIndex = findFirstDifferenceIndex(oldArrayReversed, newArrayReversed, cmp);\n // Use `lastIndex` to calculate proper offset, starting from the beginning (`lastIndex` kind of starts from the end).\n const lastIndexOld = arr1.length - lastIndex;\n const lastIndexNew = arr2.length - lastIndex;\n return { firstIndex, lastIndexOld, lastIndexNew };\n}\n/**\n * Returns a first index on which given arrays differ. If both arrays are the same, -1 is returned.\n */\nfunction findFirstDifferenceIndex(arr1, arr2, cmp) {\n for (let i = 0; i < Math.max(arr1.length, arr2.length); i++) {\n if (arr1[i] === undefined || arr2[i] === undefined || !cmp(arr1[i], arr2[i])) {\n return i;\n }\n }\n return -1; // Return -1 if arrays are equal.\n}\n/**\n * Returns a copy of the given array with `howMany` elements removed starting from the beginning and in reversed order.\n *\n * @param arr Array to be processed.\n * @param howMany How many elements from array beginning to remove.\n * @returns Shortened and reversed array.\n */\nfunction cutAndReverse(arr, howMany) {\n return arr.slice(howMany).reverse();\n}\n/**\n * Generates changes array based on change indexes from `findChangeBoundaryIndexes` function. This function will\n * generate array with 0 (no changes), 1 (deletion or insertion) or 2 records (insertion and deletion).\n *\n * @param newArray New array for which change indexes were calculated.\n * @param changeIndexes Change indexes object from `findChangeBoundaryIndexes` function.\n * @returns Array of changes compatible with {@link module:utils/difftochanges~diffToChanges} format.\n */\nfunction changeIndexesToChanges(newArray, changeIndexes) {\n const result = [];\n const { firstIndex, lastIndexOld, lastIndexNew } = changeIndexes;\n // Order operations as 'insert', 'delete' array to keep compatibility with {@link module:utils/difftochanges~diffToChanges}\n // in most cases. However, 'diffToChanges' does not stick to any order so in some cases\n // (for example replacing '12345' with 'abcd') it will generate 'delete', 'insert' order.\n if (lastIndexNew - firstIndex > 0) {\n result.push({\n index: firstIndex,\n type: 'insert',\n values: newArray.slice(firstIndex, lastIndexNew)\n });\n }\n if (lastIndexOld - firstIndex > 0) {\n result.push({\n index: firstIndex + (lastIndexNew - firstIndex),\n type: 'delete',\n howMany: lastIndexOld - firstIndex\n });\n }\n return result;\n}\n/**\n * Generates array with set `equal|insert|delete` operations based on change indexes from `findChangeBoundaryIndexes` function.\n *\n * @param changeIndexes Change indexes object from `findChangeBoundaryIndexes` function.\n * @param newLength Length of the new array on which `findChangeBoundaryIndexes` calculated change indexes.\n * @returns Array of changes compatible with {@link module:utils/diff~diff} format.\n */\nfunction changeIndexesToAtomicChanges(changeIndexes, newLength) {\n const { firstIndex, lastIndexOld, lastIndexNew } = changeIndexes;\n // No changes.\n if (firstIndex === -1) {\n return Array(newLength).fill('equal');\n }\n let result = [];\n if (firstIndex > 0) {\n result = result.concat(Array(firstIndex).fill('equal'));\n }\n if (lastIndexNew - firstIndex > 0) {\n result = result.concat(Array(lastIndexNew - firstIndex).fill('insert'));\n }\n if (lastIndexOld - firstIndex > 0) {\n result = result.concat(Array(lastIndexOld - firstIndex).fill('delete'));\n }\n if (lastIndexNew < newLength) {\n result = result.concat(Array(newLength - lastIndexNew).fill('equal'));\n }\n return result;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/diff\n */\nimport fastDiff from './fastdiff.js';\n// The following code is based on the \"O(NP) Sequence Comparison Algorithm\"\n// by Sun Wu, Udi Manber, Gene Myers, Webb Miller.\n/**\n * Calculates the difference between two arrays or strings producing an array containing a list of changes\n * necessary to transform input into output.\n *\n * ```ts\n * diff( 'aba', 'acca' ); // [ 'equal', 'insert', 'insert', 'delete', 'equal' ]\n * ```\n *\n * This function is based on the \"O(NP) Sequence Comparison Algorithm\" by Sun Wu, Udi Manber, Gene Myers, Webb Miller.\n * Unfortunately, while it gives the most precise results, its to complex for longer strings/arrow (above 200 items).\n * Therefore, `diff()` automatically switches to {@link module:utils/fastdiff~fastDiff `fastDiff()`} when detecting\n * such a scenario. The return formats of both functions are identical.\n *\n * @param a Input array or string.\n * @param b Output array or string.\n * @param cmp Optional function used to compare array values, by default === is used.\n * @returns Array of changes.\n */\nexport default function diff(a, b, cmp) {\n // Set the comparator function.\n cmp = cmp || function (a, b) {\n return a === b;\n };\n const aLength = a.length;\n const bLength = b.length;\n // Perform `fastDiff` for longer strings/arrays (see #269).\n if (aLength > 200 || bLength > 200 || aLength + bLength > 300) {\n return diff.fastDiff(a, b, cmp, true);\n }\n // Temporary action type statics.\n let _insert, _delete;\n // Swapped the arrays to use the shorter one as the first one.\n if (bLength < aLength) {\n const tmp = a;\n a = b;\n b = tmp;\n // We swap the action types as well.\n _insert = 'delete';\n _delete = 'insert';\n }\n else {\n _insert = 'insert';\n _delete = 'delete';\n }\n const m = a.length;\n const n = b.length;\n const delta = n - m;\n // Edit scripts, for each diagonal.\n const es = {};\n // Furthest points, the furthest y we can get on each diagonal.\n const fp = {};\n function snake(k) {\n // We use -1 as an alternative below to handle initial values ( instead of filling the fp with -1 first ).\n // Furthest points (y) on the diagonal below k.\n const y1 = (fp[k - 1] !== undefined ? fp[k - 1] : -1) + 1;\n // Furthest points (y) on the diagonal above k.\n const y2 = fp[k + 1] !== undefined ? fp[k + 1] : -1;\n // The way we should go to get further.\n const dir = y1 > y2 ? -1 : 1;\n // Clone previous changes array (if any).\n if (es[k + dir]) {\n es[k] = es[k + dir].slice(0);\n }\n // Create changes array.\n if (!es[k]) {\n es[k] = [];\n }\n // Push the action.\n es[k].push(y1 > y2 ? _insert : _delete);\n // Set the beginning coordinates.\n let y = Math.max(y1, y2);\n let x = y - k;\n // Traverse the diagonal as long as the values match.\n while (x < m && y < n && cmp(a[x], b[y])) {\n x++;\n y++;\n // Push no change action.\n es[k].push('equal');\n }\n return y;\n }\n let p = 0;\n let k;\n // Traverse the graph until we reach the end of the longer string.\n do {\n // Updates furthest points and edit scripts for diagonals below delta.\n for (k = -p; k < delta; k++) {\n fp[k] = snake(k);\n }\n // Updates furthest points and edit scripts for diagonals above delta.\n for (k = delta + p; k > delta; k--) {\n fp[k] = snake(k);\n }\n // Updates furthest point and edit script for the delta diagonal.\n // note that the delta diagonal is the one which goes through the sink (m, n).\n fp[delta] = snake(delta);\n p++;\n } while (fp[delta] !== n);\n // Return the final list of edit changes.\n // We remove the first item that represents the action for the injected nulls.\n return es[delta].slice(1);\n}\n// Store the API in static property to easily overwrite it in tests.\n// Too bad dependency injection does not work in Webpack + ES 6 (const) + Babel.\ndiff.fastDiff = fastDiff;\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/spy\n */\n/**\n * Creates a spy function (ala Sinon.js) that can be used to inspect call to it.\n *\n * The following are the present features:\n *\n * * spy.called: property set to `true` if the function has been called at least once.\n *\n * @returns The spy function.\n */\nfunction spy() {\n return function spy() {\n spy.called = true;\n };\n}\nexport default spy;\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/eventinfo\n */\nimport spy from './spy.js';\n/**\n * The event object passed to event callbacks. It is used to provide information about the event as well as a tool to\n * manipulate it.\n */\nexport default class EventInfo {\n /**\n * @param source The emitter.\n * @param name The event name.\n */\n constructor(source, name) {\n this.source = source;\n this.name = name;\n this.path = [];\n // The following methods are defined in the constructor because they must be re-created per instance.\n this.stop = spy();\n this.off = spy();\n }\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/uid\n */\n/**\n * A hash table of hex numbers to avoid using toString() in uid() which is costly.\n * [ '00', '01', '02', ..., 'fe', 'ff' ]\n */\nconst HEX_NUMBERS = new Array(256).fill('')\n .map((_, index) => ('0' + (index).toString(16)).slice(-2));\n/**\n * Returns a unique id. The id starts with an \"e\" character and a randomly generated string of\n * 32 alphanumeric characters.\n *\n * **Note**: The characters the unique id is built from correspond to the hex number notation\n * (from \"0\" to \"9\", from \"a\" to \"f\"). In other words, each id corresponds to an \"e\" followed\n * by 16 8-bit numbers next to each other.\n *\n * @returns An unique id string.\n */\nexport default function uid() {\n // Let's create some positive random 32bit integers first.\n const [r1, r2, r3, r4] = crypto.getRandomValues(new Uint32Array(4));\n // Make sure that id does not start with number.\n return 'e' +\n HEX_NUMBERS[r1 >> 0 & 0xFF] +\n HEX_NUMBERS[r1 >> 8 & 0xFF] +\n HEX_NUMBERS[r1 >> 16 & 0xFF] +\n HEX_NUMBERS[r1 >> 24 & 0xFF] +\n HEX_NUMBERS[r2 >> 0 & 0xFF] +\n HEX_NUMBERS[r2 >> 8 & 0xFF] +\n HEX_NUMBERS[r2 >> 16 & 0xFF] +\n HEX_NUMBERS[r2 >> 24 & 0xFF] +\n HEX_NUMBERS[r3 >> 0 & 0xFF] +\n HEX_NUMBERS[r3 >> 8 & 0xFF] +\n HEX_NUMBERS[r3 >> 16 & 0xFF] +\n HEX_NUMBERS[r3 >> 24 & 0xFF] +\n HEX_NUMBERS[r4 >> 0 & 0xFF] +\n HEX_NUMBERS[r4 >> 8 & 0xFF] +\n HEX_NUMBERS[r4 >> 16 & 0xFF] +\n HEX_NUMBERS[r4 >> 24 & 0xFF];\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * Provides group of constants to use instead of hardcoding numeric priority values.\n */\nconst priorities = {\n get(priority = 'normal') {\n if (typeof priority != 'number') {\n return this[priority] || this.normal;\n }\n else {\n return priority;\n }\n },\n highest: 100000,\n high: 1000,\n normal: 0,\n low: -1000,\n lowest: -100000\n};\nexport default priorities;\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\nimport priorities from './priorities.js';\n/**\n * Inserts any object with priority at correct index by priority so registered objects are always sorted from highest to lowest priority.\n *\n * @param objects Array of objects with priority to insert object to.\n * @param objectToInsert Object with `priority` property.\n */\nexport default function insertToPriorityArray(objects, objectToInsert) {\n const priority = priorities.get(objectToInsert.priority);\n // Binary search for better performance in large tables.\n let left = 0;\n let right = objects.length;\n while (left < right) {\n const mid = (left + right) >> 1; // Use bitwise operator for faster floor division by 2.\n const midPriority = priorities.get(objects[mid].priority);\n if (midPriority < priority) {\n right = mid;\n }\n else {\n left = mid + 1;\n }\n }\n objects.splice(left, 0, objectToInsert);\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/ckeditorerror\n */\n/* globals console */\n/**\n * URL to the documentation with error codes.\n */\nexport const DOCUMENTATION_URL = 'https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html';\n/**\n * The CKEditor error class.\n *\n * You should throw `CKEditorError` when:\n *\n * * An unexpected situation occurred and the editor (most probably) will not work properly. Such exception will be handled\n * by the {@link module:watchdog/watchdog~Watchdog watchdog} (if it is integrated),\n * * If the editor is incorrectly integrated or the editor API is used in the wrong way. This way you will give\n * feedback to the developer as soon as possible. Keep in mind that for common integration issues which should not\n * stop editor initialization (like missing upload adapter, wrong name of a toolbar component) we use\n * {@link module:utils/ckeditorerror~logWarning `logWarning()`} and\n * {@link module:utils/ckeditorerror~logError `logError()`}\n * to improve developers experience and let them see the a working editor as soon as possible.\n *\n * ```ts\n * /**\n * * Error thrown when a plugin cannot be loaded due to JavaScript errors, lack of plugins with a given name, etc.\n * *\n * * @error plugin-load\n * * @param pluginName The name of the plugin that could not be loaded.\n * * @param moduleName The name of the module which tried to load this plugin.\n * *\\/\n * throw new CKEditorError( 'plugin-load', {\n * \tpluginName: 'foo',\n * \tmoduleName: 'bar'\n * } );\n * ```\n */\nexport default class CKEditorError extends Error {\n /**\n * Creates an instance of the CKEditorError class.\n *\n * @param errorName The error id in an `error-name` format. A link to this error documentation page will be added\n * to the thrown error's `message`.\n * @param context A context of the error by which the {@link module:watchdog/watchdog~Watchdog watchdog}\n * is able to determine which editor crashed. It should be an editor instance or a property connected to it. It can be also\n * a `null` value if the editor should not be restarted in case of the error (e.g. during the editor initialization).\n * The error context should be checked using the `areConnectedThroughProperties( editor, context )` utility\n * to check if the object works as the context.\n * @param data Additional data describing the error. A stringified version of this object\n * will be appended to the error message, so the data are quickly visible in the console. The original\n * data object will also be later available under the {@link #data} property.\n */\n constructor(errorName, context, data) {\n super(getErrorMessage(errorName, data));\n this.name = 'CKEditorError';\n this.context = context;\n this.data = data;\n }\n /**\n * Checks if the error is of the `CKEditorError` type.\n */\n is(type) {\n return type === 'CKEditorError';\n }\n /**\n * A utility that ensures that the thrown error is a {@link module:utils/ckeditorerror~CKEditorError} one.\n * It is useful when combined with the {@link module:watchdog/watchdog~Watchdog} feature, which can restart the editor in case\n * of a {@link module:utils/ckeditorerror~CKEditorError} error.\n *\n * @param err The error to rethrow.\n * @param context An object connected through properties with the editor instance. This context will be used\n * by the watchdog to verify which editor should be restarted.\n */\n static rethrowUnexpectedError(err, context) {\n if (err.is && err.is('CKEditorError')) {\n throw err;\n }\n /**\n * An unexpected error occurred inside the CKEditor 5 codebase. This error will look like the original one\n * to make the debugging easier.\n *\n * This error is only useful when the editor is initialized using the {@link module:watchdog/watchdog~Watchdog} feature.\n * In case of such error (or any {@link module:utils/ckeditorerror~CKEditorError} error) the watchdog should restart the editor.\n *\n * @error unexpected-error\n */\n const error = new CKEditorError(err.message, context);\n // Restore the original stack trace to make the error look like the original one.\n // See https://github.com/ckeditor/ckeditor5/issues/5595 for more details.\n error.stack = err.stack;\n throw error;\n }\n}\n/**\n * Logs a warning to the console with a properly formatted message and adds a link to the documentation.\n * Use whenever you want to log a warning to the console.\n *\n * ```ts\n * /**\n * * There was a problem processing the configuration of the toolbar. The item with the given\n * * name does not exist, so it was omitted when rendering the toolbar.\n * *\n * * @error toolbarview-item-unavailable\n * * @param {String} name The name of the component.\n * *\\/\n * logWarning( 'toolbarview-item-unavailable', { name } );\n * ```\n *\n * See also {@link module:utils/ckeditorerror~CKEditorError} for an explanation when to throw an error and when to log\n * a warning or an error to the console.\n *\n * @param errorName The error name to be logged.\n * @param data Additional data to be logged.\n */\nexport function logWarning(errorName, data) {\n console.warn(...formatConsoleArguments(errorName, data));\n}\n/**\n * Logs an error to the console with a properly formatted message and adds a link to the documentation.\n * Use whenever you want to log an error to the console.\n *\n * ```ts\n * /**\n * * There was a problem processing the configuration of the toolbar. The item with the given\n * * name does not exist, so it was omitted when rendering the toolbar.\n * *\n * * @error toolbarview-item-unavailable\n * * @param {String} name The name of the component.\n * *\\/\n * logError( 'toolbarview-item-unavailable', { name } );\n * ```\n *\n * **Note**: In most cases logging a warning using {@link module:utils/ckeditorerror~logWarning} is enough.\n *\n * See also {@link module:utils/ckeditorerror~CKEditorError} for an explanation when to use each method.\n *\n * @param errorName The error name to be logged.\n * @param data Additional data to be logged.\n */\nexport function logError(errorName, data) {\n console.error(...formatConsoleArguments(errorName, data));\n}\n/**\n * Returns formatted link to documentation message.\n */\nfunction getLinkToDocumentationMessage(errorName) {\n return `\\nRead more: ${DOCUMENTATION_URL}#error-${errorName}`;\n}\n/**\n * Returns formatted error message.\n */\nfunction getErrorMessage(errorName, data) {\n const processedObjects = new WeakSet();\n const circularReferencesReplacer = (key, value) => {\n if (typeof value === 'object' && value !== null) {\n if (processedObjects.has(value)) {\n return `[object ${value.constructor.name}]`;\n }\n processedObjects.add(value);\n }\n return value;\n };\n const stringifiedData = data ? ` ${JSON.stringify(data, circularReferencesReplacer)}` : '';\n const documentationLink = getLinkToDocumentationMessage(errorName);\n return errorName + stringifiedData + documentationLink;\n}\n/**\n * Returns formatted console error arguments.\n */\nfunction formatConsoleArguments(errorName, data) {\n const documentationMessage = getLinkToDocumentationMessage(errorName);\n return data ? [errorName, data, documentationMessage] : [errorName, documentationMessage];\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/version\n */\nimport CKEditorError from './ckeditorerror.js';\nconst version = '44.3.0';\nexport default version;\n// The second argument is not a month. It is `monthIndex` and starts from `0`.\nexport const releaseDate = new Date(2025, 2, 5);\n/* istanbul ignore next -- @preserve */\nif (globalThis.CKEDITOR_VERSION) {\n /**\n * This error is thrown when, due to a mistake in the way CKEditor 5 was installed,\n * imported, or initialized, some of its modules were evaluated and executed twice.\n * Duplicate modules inevitably lead to runtime errors and increased bundle size.\n *\n * # Check dependency versions\n *\n * First, make sure that you use the latest version of all CKEditor 5 dependencies.\n * Depending on the installation method, you should check the versions of the `ckeditor5`,\n * `ckeditor5-premium-features`, or `@ckeditor/ckeditor5-` packages. If you cannot update\n * to the latest version, ensure that all the CKEditor 5 packages are\n * in the same version.\n *\n * If you use third-party plugins, make sure to update them, too. If they are incompatible\n * with the version of CKEditor 5 you use, you may need to downgrade the CKEditor 5 packages\n * (which we do not recommend). Ask the plugin's author to upgrade the dependencies,\n * or fork their project and update it yourself.\n *\n * # Check imports\n *\n * The next step is to look at how you import CKEditor 5 into your project.\n *\n * **The {@glink updating/nim-migration/migration-to-new-installation-methods new installation methods}\n * are designed to prevent module duplication, so if you are not using them yet, you should consider\n * updating your project**. However, several legacy installation methods are still supported for backward\n * compatibility, and mixing them may result in module duplication.\n *\n * These are the most common import methods of the CKEditor 5 packages.\n *\n * - **New installation methods (NIM)** – Imports from the `ckeditor5` and `ckeditor5-premium-features` packages.\n * - **Optimized build** for the new installation methods – Imports from the `@ckeditor/ckeditor5-/dist/index.js`.\n * - **Predefined builds** (legacy) – Imports from the `@ckeditor/ckeditor5-build-` packages.\n * - **Default imports** (legacy) – Imports from the `@ckeditor/ckeditor5-` packages (default export).\n * - **`src`** (legacy) – Imports from the `@ckeditor/ckeditor5-/src/*`.\n * - **DLL builds** (legacy) – Imports from the `ckeditor5/build/` and `@ckeditor/ckeditor5-/build/*`.\n *\n * The best way to avoid duplicate modules is to avoid mixing these installation methods. For example, if you use imports\n * specific to the optimized build, you should use them for all CKEditor 5 packages. In addition, since\n * the Predefined and DLL builds already include the core of the editor, they cannot be used with other types of imports.\n *\n * Here is a matrix showing which installation methods are compatible with each other:\n *\n * | | NIM | Optimized build | Predefined builds | Default imports | `src` | DLL builds |\n * |------------------|-----|-----------------|-------------------|-----------------|-------|------------|\n * | NIM | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |\n * | Optimized builds | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |\n * | Predefined build | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |\n * | Default imports | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ |\n * | `src` | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ |\n * | DLL builds | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |\n *\n * If you use any third-party plugins, make sure the way you import them is compatible with\n * the way you import CKEditor 5.\n *\n *
      \n * New installation methods and optimized builds\n *\n * If you use the {@glink updating/nim-migration/migration-to-new-installation-methods new installation methods},\n * you should only import code from the `ckeditor5` and `ckeditor5-premium-features` packages.\n * Do not import code from the `@ckeditor/ckeditor5-` packages unless you follow\n * the {@glink getting-started/setup/optimizing-build-size Optimizing build size} guide and the imports from\n * the `@ckeditor/ckeditor5-` packages end with `/dist/index.js`.\n *\n * If you use a CDN, ensure that some files are not included twice in your project.\n *\n * Examples of valid and invalid import paths:\n *\n * ```js\n * import { ClassicEditor, Highlight } from 'ckeditor5'; // ✅\n * import { Highlight } from '@ckeditor/ckeditor5-highlight/dist/index.js'; // ✅\n * import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight.js'; // ❌\n * import { Highlight } from '@ckeditor/ckeditor5-highlight'; // ❌\n * import '@ckeditor/ckeditor5-highlight/build/highlight.js'; // ❌\n * ```\n *
      \n *\n *
      \n * (Legacy) Predefined builds\n *\n * If you use the {@glink getting-started/legacy/installation-methods/predefined-builds Predefined builds},\n * you cannot import any additional plugins. These builds already include the editor's core\n * and selected plugins and importing additional ones will cause some modules to be bundled and loaded twice.\n *\n * Examples of valid and invalid import paths:\n *\n * ```js\n * import ClassicEditor from '@ckeditor/ckeditor5-build-classic'; // ✅\n * import { Highlight } from 'ckeditor5'; // ❌\n * import { Highlight } from '@ckeditor/ckeditor5-highlight/dist/index.js'; // ❌\n * import { Highlight } from '@ckeditor/ckeditor5-highlight'; // ❌\n * import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight'; // ❌\n * import '@ckeditor/ckeditor5-highlight/build/highlight'; // ❌\n * ```\n *\n * If you are missing some features from the\n * {@glink getting-started/legacy/installation-methods/predefined-builds#plugins-included-in-the-predefined-builds list of plugins},\n * you should switch to the {@glink updating/nim-migration/migration-to-new-installation-methods new installation methods}\n * which do not have this limitation.\n * If you cannot migrate to the new installation methods, try the\n * {@glink getting-started/legacy/installation-methods/predefined-builds#superbuild superbuild} instead.\n * This build contains all the editor features.\n *
      \n *\n *
      \n * (Legacy) Default imports and `src` imports\n *\n * If you use the {@glink getting-started/legacy/installation-methods/quick-start-other legacy customized installation}\n * method, you should only import code from the `@ckeditor/ckeditor5-` packages. While you can import code from\n * the `@ckeditor/ckeditor5-/src/*` files, it is not recommended as it can make migration to the new installation\n * methods more difficult.\n *\n * If you use this installation method, you should not import code from the `ckeditor5`, `ckeditor5-premium-features`,\n * or `@ckeditor/ckeditor5-build-` packages.\n *\n * Examples of valid and invalid import paths:\n *\n * ```js\n * import { ClassicEditor } from '@ckeditor/ckeditor5-editor-classic'; // ✅\n * import { Highlight } from '@ckeditor/ckeditor5-highlight'; // ✅\n * import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight.js'; // ✅ (not recommended)\n * import { Highlight } from 'ckeditor5'; // ❌\n * import { Highlight } from '@ckeditor/ckeditor5-highlight/dist/index.js'; // ❌\n * import '@ckeditor/ckeditor5-highlight/build/highlight'; // ❌\n * ```\n *
      \n *\n *
      \n * (Legacy) DLL builds\n *\n * If you are using the {@glink getting-started/legacy/advanced/alternative-setups/dll-builds legacy DLL builds},\n * you should not import any non-DLL modules.\n *\n * Examples of valid and invalid import paths:\n *\n * ```js\n * import 'ckeditor5/build/ckeditor5-dll.js';// ✅\n * import '@ckeditor/ckeditor5-editor-classic/build/editor-classic.js';// ✅\n * import '@ckeditor/ckeditor5-highlight/build/highlight.js';// ✅\n * import { Highlight } from 'ckeditor5'; // ❌\n * import { Highlight } from '@ckeditor/ckeditor5-highlight/dist/index.js'; // ❌\n * import { Highlight } from '@ckeditor/ckeditor5-highlight'; // ❌\n * import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight.js'; // ❌\n * ```\n *
      \n *\n * # Reinstall `node_modules`\n *\n * Usually, npm and other package managers deduplicate all packages - for example, `ckeditor5` is only installed once\n * in `node_modules/`. However, it is known to fail to do so occasionally.\n *\n * To rule out this possibility, you can try the following:\n *\n * 1. Remove the `node_modules` directory.\n * 2. Remove the `package-lock.json`, `yarn.lock`, or `pnpm-lock.yaml` files (depending on the package manager used).\n * 3. Run `npm install` to reinstall all packages.\n * 4. Run `npm ls` to check how many times packages like `@ckeditor/ckeditor5-core` are installed.\n * If they are installed more than once, verify which package causes that.\n *\n * @error ckeditor-duplicated-modules\n */\n throw new CKEditorError('ckeditor-duplicated-modules', null);\n}\nelse {\n globalThis.CKEDITOR_VERSION = version;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/emittermixin\n */\nimport EventInfo from './eventinfo.js';\nimport uid from './uid.js';\nimport priorities from './priorities.js';\nimport insertToPriorityArray from './inserttopriorityarray.js';\n// To check if component is loaded more than once.\nimport './version.js';\nimport CKEditorError from './ckeditorerror.js';\nconst _listeningTo = Symbol('listeningTo');\nconst _emitterId = Symbol('emitterId');\nconst _delegations = Symbol('delegations');\nconst defaultEmitterClass = /* #__PURE__ */ EmitterMixin(Object);\nexport default function EmitterMixin(base) {\n if (!base) {\n return defaultEmitterClass;\n }\n class Mixin extends base {\n on(event, callback, options) {\n this.listenTo(this, event, callback, options);\n }\n once(event, callback, options) {\n let wasFired = false;\n const onceCallback = (event, ...args) => {\n // Ensure the callback is called only once even if the callback itself leads to re-firing the event\n // (which would call the callback again).\n if (!wasFired) {\n wasFired = true;\n // Go off() at the first call.\n event.off();\n // Go with the original callback.\n callback.call(this, event, ...args);\n }\n };\n // Make a similar on() call, simply replacing the callback.\n this.listenTo(this, event, onceCallback, options);\n }\n off(event, callback) {\n this.stopListening(this, event, callback);\n }\n listenTo(emitter, event, callback, options = {}) {\n let emitterInfo, eventCallbacks;\n // _listeningTo contains a list of emitters that this object is listening to.\n // This list has the following format:\n //\n // _listeningTo: {\n // emitterId: {\n // emitter: emitter,\n // callbacks: {\n // event1: [ callback1, callback2, ... ]\n // ....\n // }\n // },\n // ...\n // }\n if (!this[_listeningTo]) {\n this[_listeningTo] = {};\n }\n const emitters = this[_listeningTo];\n if (!_getEmitterId(emitter)) {\n _setEmitterId(emitter);\n }\n const emitterId = _getEmitterId(emitter);\n if (!(emitterInfo = emitters[emitterId])) {\n emitterInfo = emitters[emitterId] = {\n emitter,\n callbacks: {}\n };\n }\n if (!(eventCallbacks = emitterInfo.callbacks[event])) {\n eventCallbacks = emitterInfo.callbacks[event] = [];\n }\n eventCallbacks.push(callback);\n // Finally register the callback to the event.\n addEventListener(this, emitter, event, callback, options);\n }\n stopListening(emitter, event, callback) {\n const emitters = this[_listeningTo];\n let emitterId = emitter && _getEmitterId(emitter);\n const emitterInfo = (emitters && emitterId) ? emitters[emitterId] : undefined;\n const eventCallbacks = (emitterInfo && event) ? emitterInfo.callbacks[event] : undefined;\n // Stop if nothing has been listened.\n if (!emitters || (emitter && !emitterInfo) || (event && !eventCallbacks)) {\n return;\n }\n // All params provided. off() that single callback.\n if (callback) {\n removeEventListener(this, emitter, event, callback);\n // We must remove callbacks as well in order to prevent memory leaks.\n // See https://github.com/ckeditor/ckeditor5/pull/8480\n const index = eventCallbacks.indexOf(callback);\n if (index !== -1) {\n if (eventCallbacks.length === 1) {\n delete emitterInfo.callbacks[event];\n }\n else {\n removeEventListener(this, emitter, event, callback);\n }\n }\n }\n // Only `emitter` and `event` provided. off() all callbacks for that event.\n else if (eventCallbacks) {\n while ((callback = eventCallbacks.pop())) {\n removeEventListener(this, emitter, event, callback);\n }\n delete emitterInfo.callbacks[event];\n }\n // Only `emitter` provided. off() all events for that emitter.\n else if (emitterInfo) {\n for (event in emitterInfo.callbacks) {\n this.stopListening(emitter, event);\n }\n delete emitters[emitterId];\n }\n // No params provided. off() all emitters.\n else {\n for (emitterId in emitters) {\n this.stopListening(emitters[emitterId].emitter);\n }\n delete this[_listeningTo];\n }\n }\n fire(eventOrInfo, ...args) {\n try {\n const eventInfo = eventOrInfo instanceof EventInfo ? eventOrInfo : new EventInfo(this, eventOrInfo);\n const event = eventInfo.name;\n let callbacks = getCallbacksForEvent(this, event);\n // Record that the event passed this emitter on its path.\n eventInfo.path.push(this);\n // Handle event listener callbacks first.\n if (callbacks) {\n // Copying callbacks array is the easiest and most secure way of preventing infinite loops, when event callbacks\n // are added while processing other callbacks. Previous solution involved adding counters (unique ids) but\n // failed if callbacks were added to the queue before currently processed callback.\n // If this proves to be too inefficient, another method is to change `.on()` so callbacks are stored if same\n // event is currently processed. Then, `.fire()` at the end, would have to add all stored events.\n callbacks = callbacks.slice();\n for (let i = 0; i < callbacks.length; i++) {\n const fn = callbacks[i].callback;\n fn.call(this, eventInfo, ...args);\n // Remove the callback from future requests if off() has been called.\n if (eventInfo.off.called) {\n // Remove the called mark for the next calls.\n delete eventInfo.off.called;\n this._removeEventListener(event, fn);\n }\n // Do not execute next callbacks if stop() was called.\n if (eventInfo.stop.called) {\n break;\n }\n }\n }\n // Delegate event to other emitters if needed.\n const delegations = this[_delegations];\n if (delegations) {\n const destinations = delegations.get(event);\n const passAllDestinations = delegations.get('*');\n if (destinations) {\n fireDelegatedEvents(destinations, eventInfo, args);\n }\n if (passAllDestinations) {\n fireDelegatedEvents(passAllDestinations, eventInfo, args);\n }\n }\n return eventInfo.return;\n }\n catch (err) {\n // @if CK_DEBUG // throw err;\n /* istanbul ignore next -- @preserve */\n CKEditorError.rethrowUnexpectedError(err, this);\n }\n }\n delegate(...events) {\n return {\n to: (emitter, nameOrFunction) => {\n if (!this[_delegations]) {\n this[_delegations] = new Map();\n }\n // Originally there was a for..of loop which unfortunately caused an error in Babel that didn't allow\n // build an application. See: https://github.com/ckeditor/ckeditor5-react/issues/40.\n events.forEach(eventName => {\n const destinations = this[_delegations].get(eventName);\n if (!destinations) {\n this[_delegations].set(eventName, new Map([[emitter, nameOrFunction]]));\n }\n else {\n destinations.set(emitter, nameOrFunction);\n }\n });\n }\n };\n }\n stopDelegating(event, emitter) {\n if (!this[_delegations]) {\n return;\n }\n if (!event) {\n this[_delegations].clear();\n }\n else if (!emitter) {\n this[_delegations].delete(event);\n }\n else {\n const destinations = this[_delegations].get(event);\n if (destinations) {\n destinations.delete(emitter);\n }\n }\n }\n _addEventListener(event, callback, options) {\n createEventNamespace(this, event);\n const lists = getCallbacksListsForNamespace(this, event);\n const priority = priorities.get(options.priority);\n const callbackDefinition = {\n callback,\n priority\n };\n // Add the callback to all callbacks list.\n for (const callbacks of lists) {\n // Add the callback to the list in the right priority position.\n insertToPriorityArray(callbacks, callbackDefinition);\n }\n }\n _removeEventListener(event, callback) {\n const lists = getCallbacksListsForNamespace(this, event);\n for (const callbacks of lists) {\n for (let i = 0; i < callbacks.length; i++) {\n if (callbacks[i].callback == callback) {\n // Remove the callback from the list (fixing the next index).\n callbacks.splice(i, 1);\n i--;\n }\n }\n }\n }\n }\n return Mixin;\n}\n// Backward compatibility with `mix`\n([\n 'on', 'once', 'off', 'listenTo',\n 'stopListening', 'fire', 'delegate', 'stopDelegating',\n '_addEventListener', '_removeEventListener'\n]).forEach(key => {\n EmitterMixin[key] = defaultEmitterClass.prototype[key];\n});\n/**\n * Checks if `listeningEmitter` listens to an emitter with given `listenedToEmitterId` and if so, returns that emitter.\n * If not, returns `null`.\n *\n * @internal\n * @param listeningEmitter An emitter that listens.\n * @param listenedToEmitterId Unique emitter id of emitter listened to.\n */\nexport function _getEmitterListenedTo(listeningEmitter, listenedToEmitterId) {\n const listeningTo = listeningEmitter[_listeningTo];\n if (listeningTo && listeningTo[listenedToEmitterId]) {\n return listeningTo[listenedToEmitterId].emitter;\n }\n return null;\n}\n/**\n * Sets emitter's unique id.\n *\n * **Note:** `_emitterId` can be set only once.\n *\n * @internal\n * @param emitter An emitter for which id will be set.\n * @param id Unique id to set. If not passed, random unique id will be set.\n */\nexport function _setEmitterId(emitter, id) {\n if (!emitter[_emitterId]) {\n emitter[_emitterId] = id || uid();\n }\n}\n/**\n * Returns emitter's unique id.\n *\n * @internal\n * @param emitter An emitter which id will be returned.\n */\nexport function _getEmitterId(emitter) {\n return emitter[_emitterId];\n}\n/**\n * Gets the internal `_events` property of the given object.\n * `_events` property store all lists with callbacks for registered event names.\n * If there were no events registered on the object, empty `_events` object is created.\n */\nfunction getEvents(source) {\n if (!source._events) {\n Object.defineProperty(source, '_events', {\n value: {}\n });\n }\n return source._events;\n}\n/**\n * Creates event node for generic-specific events relation architecture.\n */\nfunction makeEventNode() {\n return {\n callbacks: [],\n childEvents: []\n };\n}\n/**\n * Creates an architecture for generic-specific events relation.\n * If needed, creates all events for given eventName, i.e. if the first registered event\n * is foo:bar:abc, it will create foo:bar:abc, foo:bar and foo event and tie them together.\n * It also copies callbacks from more generic events to more specific events when\n * specific events are created.\n */\nfunction createEventNamespace(source, eventName) {\n const events = getEvents(source);\n // First, check if the event we want to add to the structure already exists.\n if (events[eventName]) {\n // If it exists, we don't have to do anything.\n return;\n }\n // In other case, we have to create the structure for the event.\n // Note, that we might need to create intermediate events too.\n // I.e. if foo:bar:abc is being registered and we only have foo in the structure,\n // we need to also register foo:bar.\n // Currently processed event name.\n let name = eventName;\n // Name of the event that is a child event for currently processed event.\n let childEventName = null;\n // Array containing all newly created specific events.\n const newEventNodes = [];\n // While loop can't check for ':' index because we have to handle generic events too.\n // In each loop, we truncate event name, going from the most specific name to the generic one.\n // I.e. foo:bar:abc -> foo:bar -> foo.\n while (name !== '') {\n if (events[name]) {\n // If the currently processed event name is already registered, we can be sure\n // that it already has all the structure created, so we can break the loop here\n // as no more events need to be registered.\n break;\n }\n // If this event is not yet registered, create a new object for it.\n events[name] = makeEventNode();\n // Add it to the array with newly created events.\n newEventNodes.push(events[name]);\n // Add previously processed event name as a child of this event.\n if (childEventName) {\n events[name].childEvents.push(childEventName);\n }\n childEventName = name;\n // If `.lastIndexOf()` returns -1, `.substr()` will return '' which will break the loop.\n name = name.substr(0, name.lastIndexOf(':'));\n }\n if (name !== '') {\n // If name is not empty, we found an already registered event that was a parent of the\n // event we wanted to register.\n // Copy that event's callbacks to newly registered events.\n for (const node of newEventNodes) {\n node.callbacks = events[name].callbacks.slice();\n }\n // Add last newly created event to the already registered event.\n events[name].childEvents.push(childEventName);\n }\n}\n/**\n * Gets an array containing callbacks list for a given event and it's more specific events.\n * I.e. if given event is foo:bar and there is also foo:bar:abc event registered, this will\n * return callback list of foo:bar and foo:bar:abc (but not foo).\n */\nfunction getCallbacksListsForNamespace(source, eventName) {\n const eventNode = getEvents(source)[eventName];\n if (!eventNode) {\n return [];\n }\n let callbacksLists = [eventNode.callbacks];\n for (let i = 0; i < eventNode.childEvents.length; i++) {\n const childCallbacksLists = getCallbacksListsForNamespace(source, eventNode.childEvents[i]);\n callbacksLists = callbacksLists.concat(childCallbacksLists);\n }\n return callbacksLists;\n}\n/**\n * Get the list of callbacks for a given event, but only if there any callbacks have been registered.\n * If there are no callbacks registered for given event, it checks if this is a specific event and looks\n * for callbacks for it's more generic version.\n */\nfunction getCallbacksForEvent(source, eventName) {\n if (!source._events) {\n return null;\n }\n let currentEventName = eventName;\n do {\n const event = source._events[currentEventName];\n if (event && event.callbacks && event.callbacks.length) {\n return event.callbacks;\n }\n const colonIndex = currentEventName.lastIndexOf(':');\n currentEventName = colonIndex > -1 ? currentEventName.substring(0, colonIndex) : '';\n } while (currentEventName);\n return null;\n}\n/**\n * Fires delegated events for given map of destinations.\n *\n * @param destinations A map containing `[ {@link module:utils/emittermixin~Emitter}, \"event name\" ]` pair destinations.\n * @param eventInfo The original event info object.\n * @param fireArgs Arguments the original event was fired with.\n */\nfunction fireDelegatedEvents(destinations, eventInfo, fireArgs) {\n for (let [emitter, name] of destinations) {\n if (!name) {\n name = eventInfo.name;\n }\n else if (typeof name == 'function') {\n name = name(eventInfo.name);\n }\n const delegatedInfo = new EventInfo(eventInfo.source, name);\n delegatedInfo.path = [...eventInfo.path];\n emitter.fire(delegatedInfo, ...fireArgs);\n }\n}\n/**\n * Helper for registering event callback on the emitter.\n */\nfunction addEventListener(listener, emitter, event, callback, options) {\n if (emitter._addEventListener) {\n emitter._addEventListener(event, callback, options);\n }\n else {\n // Allow listening on objects that do not implement Emitter interface.\n // This is needed in some tests that are using mocks instead of the real objects with EmitterMixin mixed.\n (listener._addEventListener).call(emitter, event, callback, options);\n }\n}\n/**\n * Helper for removing event callback from the emitter.\n */\nfunction removeEventListener(listener, emitter, event, callback) {\n if (emitter._removeEventListener) {\n emitter._removeEventListener(event, callback);\n }\n else {\n // Allow listening on objects that do not implement Emitter interface.\n // This is needed in some tests that are using mocks instead of the real objects with EmitterMixin mixed.\n listener._removeEventListener.call(emitter, event, callback);\n }\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/* eslint-disable @typescript-eslint/unified-signatures */\n/**\n * @module utils/observablemixin\n */\nimport EmitterMixin from './emittermixin.js';\nimport CKEditorError from './ckeditorerror.js';\nimport { isObject } from 'lodash-es';\nconst observablePropertiesSymbol = Symbol('observableProperties');\nconst boundObservablesSymbol = Symbol('boundObservables');\nconst boundPropertiesSymbol = Symbol('boundProperties');\nconst decoratedMethods = Symbol('decoratedMethods');\nconst decoratedOriginal = Symbol('decoratedOriginal');\nconst defaultObservableClass = /* #__PURE__ */ ObservableMixin(/* #__PURE__ */ EmitterMixin());\nexport default function ObservableMixin(base) {\n if (!base) {\n return defaultObservableClass;\n }\n class Mixin extends base {\n set(name, value) {\n // If the first parameter is an Object, iterate over its properties.\n if (isObject(name)) {\n Object.keys(name).forEach(property => {\n this.set(property, name[property]);\n }, this);\n return;\n }\n initObservable(this);\n const properties = this[observablePropertiesSymbol];\n if ((name in this) && !properties.has(name)) {\n /**\n * Cannot override an existing property.\n *\n * This error is thrown when trying to {@link module:utils/observablemixin~Observable#set set} a property with\n * a name of an already existing property. For example:\n *\n * ```ts\n * let observable = new Model();\n * observable.property = 1;\n * observable.set( 'property', 2 );\t\t\t// throws\n *\n * observable.set( 'property', 1 );\n * observable.set( 'property', 2 );\t\t\t// ok, because this is an existing property.\n * ```\n *\n * @error observable-set-cannot-override\n */\n throw new CKEditorError('observable-set-cannot-override', this);\n }\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n get() {\n return properties.get(name);\n },\n set(value) {\n const oldValue = properties.get(name);\n // Fire `set` event before the new value will be set to make it possible\n // to override observable property without affecting `change` event.\n // See https://github.com/ckeditor/ckeditor5-utils/issues/171.\n let newValue = this.fire(`set:${name}`, name, value, oldValue);\n if (newValue === undefined) {\n newValue = value;\n }\n // Allow undefined as an initial value like A.define( 'x', undefined ) (#132).\n // Note: When properties map has no such own property, then its value is undefined.\n if (oldValue !== newValue || !properties.has(name)) {\n properties.set(name, newValue);\n this.fire(`change:${name}`, name, newValue, oldValue);\n }\n }\n });\n this[name] = value;\n }\n bind(...bindProperties) {\n if (!bindProperties.length || !isStringArray(bindProperties)) {\n /**\n * All properties must be strings.\n *\n * @error observable-bind-wrong-properties\n */\n throw new CKEditorError('observable-bind-wrong-properties', this);\n }\n if ((new Set(bindProperties)).size !== bindProperties.length) {\n /**\n * Properties must be unique.\n *\n * @error observable-bind-duplicate-properties\n */\n throw new CKEditorError('observable-bind-duplicate-properties', this);\n }\n initObservable(this);\n const boundProperties = this[boundPropertiesSymbol];\n bindProperties.forEach(propertyName => {\n if (boundProperties.has(propertyName)) {\n /**\n * Cannot bind the same property more than once.\n *\n * @error observable-bind-rebind\n */\n throw new CKEditorError('observable-bind-rebind', this);\n }\n });\n const bindings = new Map();\n bindProperties.forEach(a => {\n const binding = { property: a, to: [] };\n boundProperties.set(a, binding);\n bindings.set(a, binding);\n });\n return {\n to: bindTo,\n toMany: bindToMany,\n _observable: this,\n _bindProperties: bindProperties,\n _to: [],\n _bindings: bindings\n };\n }\n unbind(...unbindProperties) {\n // Nothing to do here if not inited yet.\n if (!(this[observablePropertiesSymbol])) {\n return;\n }\n const boundProperties = this[boundPropertiesSymbol];\n const boundObservables = this[boundObservablesSymbol];\n if (unbindProperties.length) {\n if (!isStringArray(unbindProperties)) {\n /**\n * Properties must be strings.\n *\n * @error observable-unbind-wrong-properties\n */\n throw new CKEditorError('observable-unbind-wrong-properties', this);\n }\n unbindProperties.forEach(propertyName => {\n const binding = boundProperties.get(propertyName);\n // Nothing to do if the binding is not defined\n if (!binding) {\n return;\n }\n binding.to.forEach(([toObservable, toProperty]) => {\n const toProperties = boundObservables.get(toObservable);\n const toPropertyBindings = toProperties[toProperty];\n toPropertyBindings.delete(binding);\n if (!toPropertyBindings.size) {\n delete toProperties[toProperty];\n }\n if (!Object.keys(toProperties).length) {\n boundObservables.delete(toObservable);\n this.stopListening(toObservable, 'change');\n }\n });\n boundProperties.delete(propertyName);\n });\n }\n else {\n boundObservables.forEach((bindings, boundObservable) => {\n this.stopListening(boundObservable, 'change');\n });\n boundObservables.clear();\n boundProperties.clear();\n }\n }\n decorate(methodName) {\n initObservable(this);\n const originalMethod = this[methodName];\n if (!originalMethod) {\n /**\n * Cannot decorate an undefined method.\n *\n * @error observablemixin-cannot-decorate-undefined\n * @param {Object} object The object which method should be decorated.\n * @param {String} methodName Name of the method which does not exist.\n */\n throw new CKEditorError('observablemixin-cannot-decorate-undefined', this, { object: this, methodName });\n }\n this.on(methodName, (evt, args) => {\n evt.return = originalMethod.apply(this, args);\n });\n this[methodName] = function (...args) {\n return this.fire(methodName, args);\n };\n this[methodName][decoratedOriginal] = originalMethod;\n if (!this[decoratedMethods]) {\n this[decoratedMethods] = [];\n }\n this[decoratedMethods].push(methodName);\n }\n // Override the EmitterMixin stopListening method to be able to clean (and restore) decorated methods.\n // This is needed in case of:\n // 1. Have x.foo() decorated.\n // 2. Call x.stopListening()\n // 3. Call x.foo(). Problem: nothing happens (the original foo() method is not executed)\n stopListening(emitter, event, callback) {\n // Removing all listeners so let's clean the decorated methods to the original state.\n if (!emitter && this[decoratedMethods]) {\n for (const methodName of this[decoratedMethods]) {\n this[methodName] = this[methodName][decoratedOriginal];\n }\n delete this[decoratedMethods];\n }\n super.stopListening(emitter, event, callback);\n }\n }\n return Mixin;\n}\n// Backward compatibility with `mix`\n([\n 'set', 'bind', 'unbind', 'decorate',\n 'on', 'once', 'off', 'listenTo',\n 'stopListening', 'fire', 'delegate', 'stopDelegating',\n '_addEventListener', '_removeEventListener'\n]).forEach(key => {\n ObservableMixin[key] = defaultObservableClass.prototype[key];\n});\n// Init symbol properties needed for the observable mechanism to work.\nfunction initObservable(observable) {\n // Do nothing if already inited.\n if (observable[observablePropertiesSymbol]) {\n return;\n }\n // The internal hash containing the observable's state.\n Object.defineProperty(observable, observablePropertiesSymbol, {\n value: new Map()\n });\n // Map containing bindings to external observables. It shares the binding objects\n // (`{ observable: A, property: 'a', to: ... }`) with {@link module:utils/observablemixin~Observable#_boundProperties} and\n // it is used to observe external observables to update own properties accordingly.\n // See {@link module:utils/observablemixin~Observable#bind}.\n //\n //\t\tA.bind( 'a', 'b', 'c' ).to( B, 'x', 'y', 'x' );\n //\t\tconsole.log( A._boundObservables );\n //\n //\t\t\tMap( {\n //\t\t\t\tB: {\n //\t\t\t\t\tx: Set( [\n //\t\t\t\t\t\t{ observable: A, property: 'a', to: [ [ B, 'x' ] ] },\n //\t\t\t\t\t\t{ observable: A, property: 'c', to: [ [ B, 'x' ] ] }\n //\t\t\t\t\t] ),\n //\t\t\t\t\ty: Set( [\n //\t\t\t\t\t\t{ observable: A, property: 'b', to: [ [ B, 'y' ] ] },\n //\t\t\t\t\t] )\n //\t\t\t\t}\n //\t\t\t} )\n //\n //\t\tA.bind( 'd' ).to( B, 'z' ).to( C, 'w' ).as( callback );\n //\t\tconsole.log( A._boundObservables );\n //\n //\t\t\tMap( {\n //\t\t\t\tB: {\n //\t\t\t\t\tx: Set( [\n //\t\t\t\t\t\t{ observable: A, property: 'a', to: [ [ B, 'x' ] ] },\n //\t\t\t\t\t\t{ observable: A, property: 'c', to: [ [ B, 'x' ] ] }\n //\t\t\t\t\t] ),\n //\t\t\t\t\ty: Set( [\n //\t\t\t\t\t\t{ observable: A, property: 'b', to: [ [ B, 'y' ] ] },\n //\t\t\t\t\t] ),\n //\t\t\t\t\tz: Set( [\n //\t\t\t\t\t\t{ observable: A, property: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n //\t\t\t\t\t] )\n //\t\t\t\t},\n //\t\t\t\tC: {\n //\t\t\t\t\tw: Set( [\n //\t\t\t\t\t\t{ observable: A, property: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n //\t\t\t\t\t] )\n //\t\t\t\t}\n //\t\t\t} )\n //\n Object.defineProperty(observable, boundObservablesSymbol, {\n value: new Map()\n });\n // Object that stores which properties of this observable are bound and how. It shares\n // the binding objects (`{ observable: A, property: 'a', to: ... }`) with\n // {@link module:utils/observablemixin~Observable#_boundObservables}. This data structure is\n // a reverse of {@link module:utils/observablemixin~Observable#_boundObservables} and it is helpful for\n // {@link module:utils/observablemixin~Observable#unbind}.\n //\n // See {@link module:utils/observablemixin~Observable#bind}.\n //\n //\t\tA.bind( 'a', 'b', 'c' ).to( B, 'x', 'y', 'x' );\n //\t\tconsole.log( A._boundProperties );\n //\n //\t\t\tMap( {\n //\t\t\t\ta: { observable: A, property: 'a', to: [ [ B, 'x' ] ] },\n //\t\t\t\tb: { observable: A, property: 'b', to: [ [ B, 'y' ] ] },\n //\t\t\t\tc: { observable: A, property: 'c', to: [ [ B, 'x' ] ] }\n //\t\t\t} )\n //\n //\t\tA.bind( 'd' ).to( B, 'z' ).to( C, 'w' ).as( callback );\n //\t\tconsole.log( A._boundProperties );\n //\n //\t\t\tMap( {\n //\t\t\t\ta: { observable: A, property: 'a', to: [ [ B, 'x' ] ] },\n //\t\t\t\tb: { observable: A, property: 'b', to: [ [ B, 'y' ] ] },\n //\t\t\t\tc: { observable: A, property: 'c', to: [ [ B, 'x' ] ] },\n //\t\t\t\td: { observable: A, property: 'd', to: [ [ B, 'z' ], [ C, 'w' ] ], callback: callback }\n //\t\t\t} )\n Object.defineProperty(observable, boundPropertiesSymbol, {\n value: new Map()\n });\n}\n/**\n * A chaining for {@link module:utils/observablemixin~Observable#bind} providing `.to()` interface.\n *\n * @param args Arguments of the `.to( args )` binding.\n */\nfunction bindTo(...args) {\n const parsedArgs = parseBindToArgs(...args);\n const bindingsKeys = Array.from(this._bindings.keys());\n const numberOfBindings = bindingsKeys.length;\n // Eliminate A.bind( 'x' ).to( B, C )\n if (!parsedArgs.callback && parsedArgs.to.length > 1) {\n /**\n * Binding multiple observables only possible with callback.\n *\n * @error observable-bind-to-no-callback\n */\n throw new CKEditorError('observable-bind-to-no-callback', this);\n }\n // Eliminate A.bind( 'x', 'y' ).to( B, callback )\n if (numberOfBindings > 1 && parsedArgs.callback) {\n /**\n * Cannot bind multiple properties and use a callback in one binding.\n *\n * @error observable-bind-to-extra-callback\n */\n throw new CKEditorError('observable-bind-to-extra-callback', this);\n }\n parsedArgs.to.forEach(to => {\n // Eliminate A.bind( 'x', 'y' ).to( B, 'a' )\n if (to.properties.length && to.properties.length !== numberOfBindings) {\n /**\n * The number of properties must match.\n *\n * @error observable-bind-to-properties-length\n */\n throw new CKEditorError('observable-bind-to-properties-length', this);\n }\n // When no to.properties specified, observing source properties instead i.e.\n // A.bind( 'x', 'y' ).to( B ) -> Observe B.x and B.y\n if (!to.properties.length) {\n to.properties = this._bindProperties;\n }\n });\n this._to = parsedArgs.to;\n // Fill {@link BindChain#_bindings} with callback. When the callback is set there's only one binding.\n if (parsedArgs.callback) {\n this._bindings.get(bindingsKeys[0]).callback = parsedArgs.callback;\n }\n attachBindToListeners(this._observable, this._to);\n // Update observable._boundProperties and observable._boundObservables.\n updateBindToBound(this);\n // Set initial values of bound properties.\n this._bindProperties.forEach(propertyName => {\n updateBoundObservableProperty(this._observable, propertyName);\n });\n}\n/**\n * Binds to an attribute in a set of iterable observables.\n */\nfunction bindToMany(observables, attribute, callback) {\n if (this._bindings.size > 1) {\n /**\n * Binding one attribute to many observables only possible with one attribute.\n *\n * @error observable-bind-to-many-not-one-binding\n */\n throw new CKEditorError('observable-bind-to-many-not-one-binding', this);\n }\n this.to(\n // Bind to #attribute of each observable...\n ...getBindingTargets(observables, attribute), \n // ...using given callback to parse attribute values.\n callback);\n}\n/**\n * Returns an array of binding components for\n * {@link Observable#bind} from a set of iterable observables.\n */\nfunction getBindingTargets(observables, attribute) {\n const observableAndAttributePairs = observables.map(observable => [observable, attribute]);\n // Merge pairs to one-dimension array of observables and attributes.\n return Array.prototype.concat.apply([], observableAndAttributePairs);\n}\n/**\n * Check if all entries of the array are of `String` type.\n */\nfunction isStringArray(arr) {\n return arr.every(a => typeof a == 'string');\n}\n/**\n * Parses and validates {@link Observable#bind}`.to( args )` arguments and returns\n * an object with a parsed structure. For example\n *\n * ```ts\n * A.bind( 'x' ).to( B, 'a', C, 'b', call );\n * ```\n *\n * becomes\n *\n * ```ts\n * {\n * \tto: [\n * \t\t{ observable: B, properties: [ 'a' ] },\n * \t\t{ observable: C, properties: [ 'b' ] },\n * \t],\n * \tcallback: call\n * }\n *\n * @param args Arguments of {@link Observable#bind}`.to( args )`.\n */\nfunction parseBindToArgs(...args) {\n // Eliminate A.bind( 'x' ).to()\n if (!args.length) {\n /**\n * Invalid argument syntax in `to()`.\n *\n * @error observable-bind-to-parse-error\n */\n throw new CKEditorError('observable-bind-to-parse-error', null);\n }\n const parsed = { to: [] };\n let lastObservable;\n if (typeof args[args.length - 1] == 'function') {\n parsed.callback = args.pop();\n }\n args.forEach(a => {\n if (typeof a == 'string') {\n lastObservable.properties.push(a);\n }\n else if (typeof a == 'object') {\n lastObservable = { observable: a, properties: [] };\n parsed.to.push(lastObservable);\n }\n else {\n throw new CKEditorError('observable-bind-to-parse-error', null);\n }\n });\n return parsed;\n}\n/**\n * Synchronizes {@link module:utils/observable#_boundObservables} with {@link Binding}.\n *\n * @param binding A binding to store in {@link Observable#_boundObservables}.\n * @param toObservable A observable, which is a new component of `binding`.\n * @param toPropertyName A name of `toObservable`'s property, a new component of the `binding`.\n */\nfunction updateBoundObservables(observable, binding, toObservable, toPropertyName) {\n const boundObservables = observable[boundObservablesSymbol];\n const bindingsToObservable = boundObservables.get(toObservable);\n const bindings = bindingsToObservable || {};\n if (!bindings[toPropertyName]) {\n bindings[toPropertyName] = new Set();\n }\n // Pass the binding to a corresponding Set in `observable._boundObservables`.\n bindings[toPropertyName].add(binding);\n if (!bindingsToObservable) {\n boundObservables.set(toObservable, bindings);\n }\n}\n/**\n * Synchronizes {@link Observable#_boundProperties} and {@link Observable#_boundObservables}\n * with {@link BindChain}.\n *\n * Assuming the following binding being created\n *\n * ```ts\n * A.bind( 'a', 'b' ).to( B, 'x', 'y' );\n * ```\n *\n * the following bindings were initialized by {@link Observable#bind} in {@link BindChain#_bindings}:\n *\n * ```ts\n * {\n * \ta: { observable: A, property: 'a', to: [] },\n * \tb: { observable: A, property: 'b', to: [] },\n * }\n * ```\n *\n * Iterate over all bindings in this chain and fill their `to` properties with\n * corresponding to( ... ) arguments (components of the binding), so\n *\n * ```ts\n * {\n * \ta: { observable: A, property: 'a', to: [ B, 'x' ] },\n * \tb: { observable: A, property: 'b', to: [ B, 'y' ] },\n * }\n * ```\n *\n * Then update the structure of {@link Observable#_boundObservables} with updated\n * binding, so it becomes:\n *\n * ```ts\n * Map( {\n * \tB: {\n * \t\tx: Set( [\n * \t\t\t{ observable: A, property: 'a', to: [ [ B, 'x' ] ] }\n * \t\t] ),\n * \t\ty: Set( [\n * \t\t\t{ observable: A, property: 'b', to: [ [ B, 'y' ] ] },\n * \t\t] )\n * \t}\n * } )\n * ```\n *\n * @param chain The binding initialized by {@link Observable#bind}.\n */\nfunction updateBindToBound(chain) {\n let toProperty;\n chain._bindings.forEach((binding, propertyName) => {\n // Note: For a binding without a callback, this will run only once\n // like in A.bind( 'x', 'y' ).to( B, 'a', 'b' )\n // TODO: ES6 destructuring.\n chain._to.forEach(to => {\n toProperty = to.properties[binding.callback ? 0 : chain._bindProperties.indexOf(propertyName)];\n binding.to.push([to.observable, toProperty]);\n updateBoundObservables(chain._observable, binding, to.observable, toProperty);\n });\n });\n}\n/**\n * Updates an property of a {@link Observable} with a value\n * determined by an entry in {@link Observable#_boundProperties}.\n *\n * @param observable A observable which property is to be updated.\n * @param propertyName An property to be updated.\n */\nfunction updateBoundObservableProperty(observable, propertyName) {\n const boundProperties = observable[boundPropertiesSymbol];\n const binding = boundProperties.get(propertyName);\n let propertyValue;\n // When a binding with callback is created like\n //\n // \t\tA.bind( 'a' ).to( B, 'b', C, 'c', callback );\n //\n // collect B.b and C.c, then pass them to callback to set A.a.\n if (binding.callback) {\n propertyValue = binding.callback.apply(observable, binding.to.map(to => to[0][to[1]]));\n }\n else {\n propertyValue = binding.to[0];\n propertyValue = propertyValue[0][propertyValue[1]];\n }\n if (Object.prototype.hasOwnProperty.call(observable, propertyName)) {\n observable[propertyName] = propertyValue;\n }\n else {\n observable.set(propertyName, propertyValue);\n }\n}\n/**\n * Starts listening to changes in {@link BindChain._to} observables to update\n * {@link BindChain._observable} {@link BindChain._bindProperties}. Also sets the\n * initial state of {@link BindChain._observable}.\n *\n * @param chain The chain initialized by {@link Observable#bind}.\n */\nfunction attachBindToListeners(observable, toBindings) {\n toBindings.forEach(to => {\n const boundObservables = observable[boundObservablesSymbol];\n let bindings;\n // If there's already a chain between the observables (`observable` listens to\n // `to.observable`), there's no need to create another `change` event listener.\n if (!boundObservables.get(to.observable)) {\n observable.listenTo(to.observable, 'change', (evt, propertyName) => {\n bindings = boundObservables.get(to.observable)[propertyName];\n // Note: to.observable will fire for any property change, react\n // to changes of properties which are bound only.\n if (bindings) {\n bindings.forEach(binding => {\n updateBoundObservableProperty(observable, binding.property);\n });\n }\n });\n }\n });\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/count\n */\n/**\n * Returns the number of items return by the iterator.\n *\n * ```ts\n * count( [ 1, 2, 3, 4, 5 ] ); // 5;\n * ```\n *\n * @param iterable Any iterable.\n * @returns Number of items returned by that iterable.\n */\nexport default function count(iterable) {\n let count = 0;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const _ of iterable) {\n count++;\n }\n return count;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/comparearrays\n */\n/**\n * Compares how given arrays relate to each other. One array can be: same as another array, prefix of another array\n * or completely different. If arrays are different, first index at which they differ is returned. Otherwise,\n * a flag specifying the relation is returned. Flags are negative numbers, so whenever a number >= 0 is returned\n * it means that arrays differ.\n *\n * ```ts\n * compareArrays( [ 0, 2 ], [ 0, 2 ] );\t\t// 'same'\n * compareArrays( [ 0, 2 ], [ 0, 2, 1 ] );\t\t// 'prefix'\n * compareArrays( [ 0, 2 ], [ 0 ] );\t\t\t// 'extension'\n * compareArrays( [ 0, 2 ], [ 1, 2 ] );\t\t// 0\n * compareArrays( [ 0, 2 ], [ 0, 1 ] );\t\t// 1\n * ```\n *\n * @param a Array that is compared.\n * @param b Array to compare with.\n * @returns How array `a` is related to `b`.\n */\nexport default function compareArrays(a, b) {\n const minLen = Math.min(a.length, b.length);\n for (let i = 0; i < minLen; i++) {\n if (a[i] != b[i]) {\n // The arrays are different.\n return i;\n }\n }\n // Both arrays were same at all points.\n if (a.length == b.length) {\n // If their length is also same, they are the same.\n return 'same';\n }\n else if (a.length < b.length) {\n // Compared array is shorter so it is a prefix of the other array.\n return 'prefix';\n }\n else {\n // Compared array is longer so it is an extension of the other array.\n return 'extension';\n }\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/isiterable\n */\n/**\n * Checks if value implements iterator interface.\n *\n * @param value The value to check.\n * @returns True if value implements iterator interface.\n */\nexport default function isIterable(value) {\n return !!(value && value[Symbol.iterator]);\n}\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isArray from './isArray.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nexport default isString;\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/createelement\n */\nimport isIterable from '../isiterable.js';\nimport { isString } from 'lodash-es';\n/**\n * Creates an HTML or SVG element with attributes and children elements.\n *\n * ```ts\n * createElement( document, 'p' ); //

      \n * createElement( document, 'mask', { xmlns: 'http://www.w3.org/2000/svg' } ); // \n * ```\n *\n * @param doc Document used to create the element.\n * @param name Name of the element.\n * @param attributes Object where keys represent attribute keys and values represent attribute values.\n * @param children Child or any iterable of children. Strings will be automatically turned into Text nodes.\n * @returns HTML or SVG element.\n */\nexport default function createElement(doc, name, attributes = {}, children = []) {\n const namespace = attributes && attributes.xmlns;\n const element = namespace ? doc.createElementNS(namespace, name) : doc.createElement(name);\n for (const key in attributes) {\n element.setAttribute(key, attributes[key]);\n }\n if (isString(children) || !isIterable(children)) {\n children = [children];\n }\n for (let child of children) {\n if (isString(child)) {\n child = doc.createTextNode(child);\n }\n element.appendChild(child);\n }\n return element;\n}\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\nfunction cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n}\n\nexport default cloneDeepWith;\n","import isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\n\n/**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\nfunction isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n}\n\nexport default isElement;\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/config\n */\nimport { isPlainObject, isElement, cloneDeepWith } from 'lodash-es';\n/**\n * Handles a configuration dictionary.\n *\n * @typeParam Cfg A type of the configuration dictionary.\n */\nexport default class Config {\n /**\n * Creates an instance of the {@link ~Config} class.\n *\n * @param configurations The initial configurations to be set. Usually, provided by the user.\n * @param defaultConfigurations The default configurations. Usually, provided by the system.\n */\n constructor(configurations, defaultConfigurations) {\n this._config = Object.create(null);\n // Set default configuration.\n if (defaultConfigurations) {\n // Clone the configuration to make sure that the properties will not be shared\n // between editors and make the watchdog feature work correctly.\n this.define(cloneConfig(defaultConfigurations));\n }\n // Set initial configuration.\n if (configurations) {\n this._setObjectToTarget(this._config, configurations);\n }\n }\n set(name, value) {\n this._setToTarget(this._config, name, value);\n }\n define(name, value) {\n const isDefine = true;\n this._setToTarget(this._config, name, value, isDefine);\n }\n /**\n * Gets the value for a configuration entry.\n *\n * ```ts\n * config.get( 'name' );\n * ```\n *\n * Deep configurations can be retrieved by separating each part with a dot.\n *\n * ```ts\n * config.get( 'toolbar.collapsed' );\n * ```\n *\n * @param name The configuration name. Configuration names are case-sensitive.\n * @returns The configuration value or `undefined` if the configuration entry was not found.\n */\n get(name) {\n return this._getFromSource(this._config, name);\n }\n /**\n * Iterates over all top level configuration names.\n */\n *names() {\n for (const name of Object.keys(this._config)) {\n yield name;\n }\n }\n /**\n * Saves passed configuration to the specified target (nested object).\n *\n * @param target Nested config object.\n * @param name The configuration name or an object from which take properties as\n * configuration entries. Configuration names are case-sensitive.\n * @param value The configuration value. Used if a name is passed.\n * @param isDefine Define if passed configuration should overwrite existing one.\n */\n _setToTarget(target, name, value, isDefine = false) {\n // In case of an object, iterate through it and call `_setToTarget` again for each property.\n if (isPlainObject(name)) {\n this._setObjectToTarget(target, name, isDefine);\n return;\n }\n // The configuration name should be split into parts if it has dots. E.g. `resize.width` -> [`resize`, `width`].\n const parts = name.split('.');\n // Take the name of the configuration out of the parts. E.g. `resize.width` -> `width`.\n name = parts.pop();\n // Iterate over parts to check if currently stored configuration has proper structure.\n for (const part of parts) {\n // If there is no object for specified part then create one.\n if (!isPlainObject(target[part])) {\n target[part] = Object.create(null);\n }\n // Nested object becomes a target.\n target = target[part];\n }\n // In case of value is an object.\n if (isPlainObject(value)) {\n // We take care of proper config structure.\n if (!isPlainObject(target[name])) {\n target[name] = Object.create(null);\n }\n target = target[name];\n // And iterate through this object calling `_setToTarget` again for each property.\n this._setObjectToTarget(target, value, isDefine);\n return;\n }\n // Do nothing if we are defining configuration for non empty name.\n if (isDefine && typeof target[name] != 'undefined') {\n return;\n }\n target[name] = value;\n }\n /**\n * Get specified configuration from specified source (nested object).\n *\n * @param source level of nested object.\n * @param name The configuration name. Configuration names are case-sensitive.\n * @returns The configuration value or `undefined` if the configuration entry was not found.\n */\n _getFromSource(source, name) {\n // The configuration name should be split into parts if it has dots. E.g. `resize.width` -> [`resize`, `width`].\n const parts = name.split('.');\n // Take the name of the configuration out of the parts. E.g. `resize.width` -> `width`.\n name = parts.pop();\n // Iterate over parts to check if currently stored configuration has proper structure.\n for (const part of parts) {\n if (!isPlainObject(source[part])) {\n source = null;\n break;\n }\n // Nested object becomes a source.\n source = source[part];\n }\n // Always returns undefined for non existing configuration.\n return source ? cloneConfig(source[name]) : undefined;\n }\n /**\n * Iterates through passed object and calls {@link #_setToTarget} method with object key and value for each property.\n *\n * @param target Nested config object.\n * @param configuration Configuration data set\n * @param isDefine Defines if passed configuration is default configuration or not.\n */\n _setObjectToTarget(target, configuration, isDefine) {\n Object.keys(configuration).forEach(key => {\n this._setToTarget(target, key, configuration[key], isDefine);\n });\n }\n}\n/**\n * Clones configuration object or value.\n */\nfunction cloneConfig(source) {\n return cloneDeepWith(source, leaveItemReferences);\n}\n/**\n * A customized function for cloneDeepWith.\n * In case if it's a DOM Element it will leave references to DOM Elements instead of cloning them.\n * If it's a function it will leave reference to actuall function.\n */\nfunction leaveItemReferences(value) {\n return isElement(value) || typeof value === 'function' ? value : undefined;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/isnode\n */\n/**\n * Checks if the object is a native DOM Node.\n */\nexport default function isNode(obj) {\n if (obj) {\n if (obj.defaultView) {\n return obj instanceof obj.defaultView.Document;\n }\n else if (obj.ownerDocument && obj.ownerDocument.defaultView) {\n return obj instanceof obj.ownerDocument.defaultView.Node;\n }\n }\n return false;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/iswindow\n */\n/**\n * Checks if the object is a native DOM Window.\n */\nexport default function isWindow(obj) {\n const stringifiedObject = Object.prototype.toString.apply(obj);\n // Returns `true` for the `window` object in browser environments.\n if (stringifiedObject == '[object Window]') {\n return true;\n }\n // Returns `true` for the `window` object in the Electron environment.\n if (stringifiedObject == '[object global]') {\n return true;\n }\n return false;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/emittermixin\n */\nimport EmitterMixin, { _getEmitterListenedTo, _setEmitterId } from '../emittermixin.js';\nimport uid from '../uid.js';\nimport isNode from './isnode.js';\nimport isWindow from './iswindow.js';\nconst defaultEmitterClass = /* #__PURE__ */ DomEmitterMixin(/* #__PURE__ */ EmitterMixin());\nexport default function DomEmitterMixin(base) {\n if (!base) {\n return defaultEmitterClass;\n }\n class Mixin extends base {\n listenTo(emitter, event, callback, options = {}) {\n // Check if emitter is an instance of DOM Node. If so, use corresponding ProxyEmitter (or create one if not existing).\n if (isNode(emitter) || isWindow(emitter)) {\n const proxyOptions = {\n capture: !!options.useCapture,\n passive: !!options.usePassive\n };\n const proxyEmitter = this._getProxyEmitter(emitter, proxyOptions) || new ProxyEmitter(emitter, proxyOptions);\n this.listenTo(proxyEmitter, event, callback, options);\n }\n else {\n // Execute parent class method with Emitter (or ProxyEmitter) instance.\n super.listenTo(emitter, event, callback, options);\n }\n }\n stopListening(emitter, event, callback) {\n // Check if the emitter is an instance of DOM Node. If so, forward the call to the corresponding ProxyEmitters.\n if (isNode(emitter) || isWindow(emitter)) {\n const proxyEmitters = this._getAllProxyEmitters(emitter);\n for (const proxy of proxyEmitters) {\n this.stopListening(proxy, event, callback);\n }\n }\n else {\n // Execute parent class method with Emitter (or ProxyEmitter) instance.\n super.stopListening(emitter, event, callback);\n }\n }\n /**\n * Retrieves ProxyEmitter instance for given DOM Node residing in this Host and given options.\n *\n * @param node DOM Node of the ProxyEmitter.\n * @param options Additional options.\n * @param options.useCapture Indicates that events of this type will be dispatched to the registered\n * listener before being dispatched to any EventTarget beneath it in the DOM tree.\n * @param options.usePassive Indicates that the function specified by listener will never call preventDefault()\n * and prevents blocking browser's main thread by this event handler.\n * @returns ProxyEmitter instance bound to the DOM Node.\n */\n _getProxyEmitter(node, options) {\n return _getEmitterListenedTo(this, getProxyEmitterId(node, options));\n }\n /**\n * Retrieves all the ProxyEmitter instances for given DOM Node residing in this Host.\n *\n * @param node DOM Node of the ProxyEmitter.\n */\n _getAllProxyEmitters(node) {\n return [\n { capture: false, passive: false },\n { capture: false, passive: true },\n { capture: true, passive: false },\n { capture: true, passive: true }\n ].map(options => this._getProxyEmitter(node, options)).filter(proxy => !!proxy);\n }\n }\n return Mixin;\n}\n// Backward compatibility with `mix`\n([\n '_getProxyEmitter', '_getAllProxyEmitters',\n 'on', 'once', 'off', 'listenTo',\n 'stopListening', 'fire', 'delegate', 'stopDelegating',\n '_addEventListener', '_removeEventListener'\n]).forEach(key => {\n DomEmitterMixin[key] = defaultEmitterClass.prototype[key];\n});\n/**\n * Creates a ProxyEmitter instance. Such an instance is a bridge between a DOM Node firing events\n * and any Host listening to them. It is backwards compatible with {@link module:utils/emittermixin~Emitter#on}.\n * There is a separate instance for each combination of modes (useCapture & usePassive). The mode is concatenated with\n * UID stored in HTMLElement to give each instance unique identifier.\n *\n * listenTo( click, ... )\n * +-----------------------------------------+\n * | stopListening( ... ) |\n * +----------------------------+ | addEventListener( click, ... )\n * | Host | | +---------------------------------------------+\n * +----------------------------+ | | removeEventListener( click, ... ) |\n * | _listeningTo: { | +----------v-------------+ |\n * | UID+mode: { | | ProxyEmitter | |\n * | emitter: ProxyEmitter, | +------------------------+ +------------v----------+\n * | callbacks: { | | events: { | | Node (HTMLElement) |\n * | click: [ callbacks ] | | click: [ callbacks ] | +-----------------------+\n * | } | | }, | | data-ck-expando: UID |\n * | } | | _domNode: Node, | +-----------------------+\n * | } | | _domListeners: {}, | |\n * | +------------------------+ | | _emitterId: UID+mode | |\n * | | DomEmitterMixin | | +--------------^---------+ |\n * | +------------------------+ | | | |\n * +--------------^-------------+ | +---------------------------------------------+\n * | | click (DOM Event)\n * +-----------------------------------------+\n * fire( click, DOM Event )\n */\nclass ProxyEmitter extends /* #__PURE__ */ EmitterMixin() {\n /**\n * @param node DOM Node that fires events.\n * @param options Additional options.\n * @param options.useCapture Indicates that events of this type will be dispatched to the registered\n * listener before being dispatched to any EventTarget beneath it in the DOM tree.\n * @param options.usePassive Indicates that the function specified by listener will never call preventDefault()\n * and prevents blocking browser's main thread by this event handler.\n */\n constructor(node, options) {\n super();\n // Set emitter ID to match DOM Node \"expando\" property.\n _setEmitterId(this, getProxyEmitterId(node, options));\n // Remember the DOM Node this ProxyEmitter is bound to.\n this._domNode = node;\n // And given options.\n this._options = options;\n }\n /**\n * Registers a callback function to be executed when an event is fired.\n *\n * It attaches a native DOM listener to the DOM Node. When fired,\n * a corresponding Emitter event will also fire with DOM Event object as an argument.\n *\n * **Note**: This is automatically called by the\n * {@link module:utils/emittermixin~Emitter#listenTo `Emitter#listenTo()`}.\n *\n * @param event The name of the event.\n */\n attach(event) {\n // If the DOM Listener for given event already exist it is pointless\n // to attach another one.\n if (this._domListeners && this._domListeners[event]) {\n return;\n }\n const domListener = this._createDomListener(event);\n // Attach the native DOM listener to DOM Node.\n this._domNode.addEventListener(event, domListener, this._options);\n if (!this._domListeners) {\n this._domListeners = {};\n }\n // Store the native DOM listener in this ProxyEmitter. It will be helpful\n // when stopping listening to the event.\n this._domListeners[event] = domListener;\n }\n /**\n * Stops executing the callback on the given event.\n *\n * **Note**: This is automatically called by the\n * {@link module:utils/emittermixin~Emitter#stopListening `Emitter#stopListening()`}.\n *\n * @param event The name of the event.\n */\n detach(event) {\n let events;\n // Remove native DOM listeners which are orphans. If no callbacks\n // are awaiting given event, detach native DOM listener from DOM Node.\n // See: {@link attach}.\n if (this._domListeners[event] && (!(events = this._events[event]) || !events.callbacks.length)) {\n this._domListeners[event].removeListener();\n }\n }\n /**\n * Adds callback to emitter for given event.\n *\n * @internal\n * @param event The name of the event.\n * @param callback The function to be called on event.\n * @param options Additional options.\n */\n _addEventListener(event, callback, options) {\n this.attach(event);\n EmitterMixin().prototype._addEventListener.call(this, event, callback, options);\n }\n /**\n * Removes callback from emitter for given event.\n *\n * @internal\n * @param event The name of the event.\n * @param callback The function to stop being called.\n */\n _removeEventListener(event, callback) {\n EmitterMixin().prototype._removeEventListener.call(this, event, callback);\n this.detach(event);\n }\n /**\n * Creates a native DOM listener callback. When the native DOM event\n * is fired it will fire corresponding event on this ProxyEmitter.\n * Note: A native DOM Event is passed as an argument.\n *\n * @param event The name of the event.\n * @returns The DOM listener callback.\n */\n _createDomListener(event) {\n const domListener = (domEvt) => {\n this.fire(event, domEvt);\n };\n // Supply the DOM listener callback with a function that will help\n // detach it from the DOM Node, when it is no longer necessary.\n // See: {@link detach}.\n domListener.removeListener = () => {\n this._domNode.removeEventListener(event, domListener, this._options);\n delete this._domListeners[event];\n };\n return domListener;\n }\n}\n/**\n * Gets an unique DOM Node identifier. The identifier will be set if not defined.\n *\n * @returns UID for given DOM Node.\n */\nfunction getNodeUID(node) {\n return node['data-ck-expando'] || (node['data-ck-expando'] = uid());\n}\n/**\n * Gets id of the ProxyEmitter for the given node.\n */\nfunction getProxyEmitterId(node, options) {\n let id = getNodeUID(node);\n for (const option of Object.keys(options).sort()) {\n if (options[option]) {\n id += '-' + option;\n }\n }\n return id;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/* globals Node */\n/**\n * @module utils/dom/getancestors\n */\n/**\n * Returns all ancestors of given DOM node, starting from the top-most (root). Includes the given node itself. If the\n * node is a part of `DocumentFragment` that `DocumentFragment` will be returned. In contrary, if the node is\n * appended to a `Document`, that `Document` will not be returned (algorithms operating on DOM tree care for `Document#documentElement`\n * at most, which will be returned).\n *\n * @param node DOM node.\n * @returns Array of given `node` parents.\n */\nexport default function getAncestors(node) {\n const nodes = [];\n let currentNode = node;\n // We are interested in `Node`s `DocumentFragment`s only.\n while (currentNode && currentNode.nodeType != Node.DOCUMENT_NODE) {\n nodes.unshift(currentNode);\n currentNode = currentNode.parentNode;\n }\n return nodes;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/getborderwidths\n */\n/**\n * Returns an object containing CSS border widths of a specified HTML element.\n *\n * @param element An element which has CSS borders.\n * @returns An object containing `top`, `left`, `right` and `bottom` properties\n * with numerical values of the `border-[top,left,right,bottom]-width` CSS styles.\n */\nexport default function getBorderWidths(element) {\n // Call getComputedStyle on the window the element document belongs to.\n const style = element.ownerDocument.defaultView.getComputedStyle(element);\n return {\n top: parseInt(style.borderTopWidth, 10),\n right: parseInt(style.borderRightWidth, 10),\n bottom: parseInt(style.borderBottomWidth, 10),\n left: parseInt(style.borderLeftWidth, 10)\n };\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/getrangefrommouseevent\n */\n/**\n * Returns a DOM range from a given point specified by a mouse event.\n *\n * @param domEvent The mouse event.\n * @returns The DOM range.\n */\nexport default function getRangeFromMouseEvent(domEvent) {\n if (!domEvent.target) {\n return null;\n }\n const domDoc = domEvent.target.ownerDocument;\n const x = domEvent.clientX;\n const y = domEvent.clientY;\n let domRange = null;\n // Webkit & Blink.\n if (domDoc.caretRangeFromPoint && domDoc.caretRangeFromPoint(x, y)) {\n domRange = domDoc.caretRangeFromPoint(x, y);\n }\n // FF.\n else if (domEvent.rangeParent) {\n domRange = domDoc.createRange();\n domRange.setStart(domEvent.rangeParent, domEvent.rangeOffset);\n domRange.collapse(true);\n }\n return domRange;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/istext\n */\n/**\n * Checks if the object is a native DOM Text node.\n */\nexport default function isText(obj) {\n return Object.prototype.toString.call(obj) == '[object Text]';\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/isrange\n */\n/**\n * Checks if the object is a native DOM Range.\n */\nexport default function isRange(obj) {\n return Object.prototype.toString.apply(obj) == '[object Range]';\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/getpositionedancestor\n */\nimport global from './global.js';\n/**\n * For a given element, returns the nearest ancestor element which CSS position is not \"static\".\n *\n * @param element The native DOM element to be checked.\n */\nexport default function getPositionedAncestor(element) {\n if (!element || !element.parentNode) {\n return null;\n }\n if (element.offsetParent === global.document.body) {\n return null;\n }\n return element.offsetParent;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/rect\n */\nimport isRange from './isrange.js';\nimport isWindow from './iswindow.js';\nimport getBorderWidths from './getborderwidths.js';\nimport isText from './istext.js';\nimport getPositionedAncestor from './getpositionedancestor.js';\nimport global from './global.js';\nconst rectProperties = ['top', 'right', 'bottom', 'left', 'width', 'height'];\n/**\n * A helper class representing a `ClientRect` object, e.g. value returned by\n * the native `object.getBoundingClientRect()` method. Provides a set of methods\n * to manipulate the rect and compare it against other rect instances.\n */\nexport default class Rect {\n /**\n * Creates an instance of rect.\n *\n * ```ts\n * // Rect of an HTMLElement.\n * const rectA = new Rect( document.body );\n *\n * // Rect of a DOM Range.\n * const rectB = new Rect( document.getSelection().getRangeAt( 0 ) );\n *\n * // Rect of a window (web browser viewport).\n * const rectC = new Rect( window );\n *\n * // Rect out of an object.\n * const rectD = new Rect( { top: 0, right: 10, bottom: 10, left: 0, width: 10, height: 10 } );\n *\n * // Rect out of another Rect instance.\n * const rectE = new Rect( rectD );\n *\n * // Rect out of a ClientRect.\n * const rectF = new Rect( document.body.getClientRects().item( 0 ) );\n * ```\n *\n * **Note**: By default a rect of an HTML element includes its CSS borders and scrollbars (if any)\n * ant the rect of a `window` includes scrollbars too. Use {@link #excludeScrollbarsAndBorders}\n * to get the inner part of the rect.\n *\n * @param source A source object to create the rect.\n */\n constructor(source) {\n const isSourceRange = isRange(source);\n Object.defineProperty(this, '_source', {\n // If the source is a Rect instance, copy it's #_source.\n value: source._source || source,\n writable: true,\n enumerable: false\n });\n if (isDomElement(source) || isSourceRange) {\n // The `Rect` class depends on `getBoundingClientRect` and `getClientRects` DOM methods. If the source\n // of a rect in an HTML element or a DOM range but it does not belong to any rendered DOM tree, these methods\n // will fail to obtain the geometry and the rect instance makes little sense to the features using it.\n // To get rid of this warning make sure the source passed to the constructor is a descendant of `window.document.body`.\n // @if CK_DEBUG // const sourceNode = isSourceRange ? source.startContainer : source;\n // @if CK_DEBUG // if ( !sourceNode.ownerDocument || !sourceNode.ownerDocument.body.contains( sourceNode ) ) {\n // @if CK_DEBUG // \tconsole.warn(\n // @if CK_DEBUG // \t\t'rect-source-not-in-dom: The source of this rect does not belong to any rendered DOM tree.',\n // @if CK_DEBUG // \t\t{ source } );\n // @if CK_DEBUG // }\n if (isSourceRange) {\n const rangeRects = Rect.getDomRangeRects(source);\n copyRectProperties(this, Rect.getBoundingRect(rangeRects));\n }\n else {\n copyRectProperties(this, source.getBoundingClientRect());\n }\n }\n else if (isWindow(source)) {\n const { innerWidth, innerHeight } = source;\n copyRectProperties(this, {\n top: 0,\n right: innerWidth,\n bottom: innerHeight,\n left: 0,\n width: innerWidth,\n height: innerHeight\n });\n }\n else {\n copyRectProperties(this, source);\n }\n }\n /**\n * Returns a clone of the rect.\n *\n * @returns A cloned rect.\n */\n clone() {\n return new Rect(this);\n }\n /**\n * Moves the rect so that its upper–left corner lands in desired `[ x, y ]` location.\n *\n * @param x Desired horizontal location.\n * @param y Desired vertical location.\n * @returns A rect which has been moved.\n */\n moveTo(x, y) {\n this.top = y;\n this.right = x + this.width;\n this.bottom = y + this.height;\n this.left = x;\n return this;\n }\n /**\n * Moves the rect in–place by a dedicated offset.\n *\n * @param x A horizontal offset.\n * @param y A vertical offset\n * @returns A rect which has been moved.\n */\n moveBy(x, y) {\n this.top += y;\n this.right += x;\n this.left += x;\n this.bottom += y;\n return this;\n }\n /**\n * Returns a new rect a a result of intersection with another rect.\n */\n getIntersection(anotherRect) {\n const rect = {\n top: Math.max(this.top, anotherRect.top),\n right: Math.min(this.right, anotherRect.right),\n bottom: Math.min(this.bottom, anotherRect.bottom),\n left: Math.max(this.left, anotherRect.left),\n width: 0,\n height: 0\n };\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n if (rect.width < 0 || rect.height < 0) {\n return null;\n }\n else {\n const newRect = new Rect(rect);\n newRect._source = this._source;\n return newRect;\n }\n }\n /**\n * Returns the area of intersection with another rect.\n *\n * @returns Area of intersection.\n */\n getIntersectionArea(anotherRect) {\n const rect = this.getIntersection(anotherRect);\n if (rect) {\n return rect.getArea();\n }\n else {\n return 0;\n }\n }\n /**\n * Returns the area of the rect.\n */\n getArea() {\n return this.width * this.height;\n }\n /**\n * Returns a new rect, a part of the original rect, which is actually visible to the user and is relative to the,`body`,\n * e.g. an original rect cropped by parent element rects which have `overflow` set in CSS\n * other than `\"visible\"`.\n *\n * If there's no such visible rect, which is when the rect is limited by one or many of\n * the ancestors, `null` is returned.\n *\n * **Note**: This method does not consider the boundaries of the viewport (window).\n * To get a rect cropped by all ancestors and the viewport, use an intersection such as:\n *\n * ```ts\n * const visibleInViewportRect = new Rect( window ).getIntersection( new Rect( source ).getVisible() );\n * ```\n *\n * @returns A visible rect instance or `null`, if there's none.\n */\n getVisible() {\n const source = this._source;\n let visibleRect = this.clone();\n // There's no ancestor to crop with the overflow.\n if (isBody(source)) {\n return visibleRect;\n }\n let child = source;\n let parent = source.parentNode || source.commonAncestorContainer;\n let absolutelyPositionedChildElement;\n // Check the ancestors all the way up to the .\n while (parent && !isBody(parent)) {\n const isParentOverflowVisible = getElementOverflow(parent) === 'visible';\n if (child instanceof HTMLElement && getElementPosition(child) === 'absolute') {\n absolutelyPositionedChildElement = child;\n }\n const parentElementPosition = getElementPosition(parent);\n // The child will be cropped only if it has `position: absolute` and the parent has `position: relative` + some overflow.\n // Otherwise there's no chance of visual clipping and the parent can be skipped\n // https://github.com/ckeditor/ckeditor5/issues/14107.\n //\n // condition: isParentOverflowVisible\n // \t\t+---------------------------+\n //\t\t| #parent\t\t\t\t\t|\n //\t\t| (overflow: visible)\t\t|\n //\t\t|\t\t\t\t+-----------+---------------+\n //\t\t|\t\t\t\t| child\t\t\t\t\t\t|\n //\t\t|\t\t\t\t+-----------+---------------+\n //\t\t+---------------------------+\n //\n // condition: absolutelyPositionedChildElement && parentElementPosition === 'relative' && isParentOverflowVisible\n // \t\t+---------------------------+\n //\t\t| parent\t\t\t\t\t|\n //\t\t| (position: relative;)\t\t|\n //\t\t| (overflow: visible;)\t\t|\n //\t\t|\t\t\t\t+-----------+---------------+\n //\t\t|\t\t\t\t| child \t\t\t\t\t|\n //\t\t|\t\t\t\t| (position: absolute;)\t\t|\n //\t\t|\t\t\t\t+-----------+---------------+\n //\t\t+---------------------------+\n //\n // condition: absolutelyPositionedChildElement && parentElementPosition !== 'relative'\n // \t\t+---------------------------+\n //\t\t| parent\t\t\t\t\t|\n //\t\t| (position: static;)\t\t|\n //\t\t|\t\t\t\t+-----------+---------------+\n //\t\t|\t\t\t\t| child \t\t\t\t\t|\n //\t\t|\t\t\t\t| (position: absolute;)\t\t|\n //\t\t|\t\t\t\t+-----------+---------------+\n //\t\t+---------------------------+\n if (isParentOverflowVisible ||\n absolutelyPositionedChildElement && ((parentElementPosition === 'relative' && isParentOverflowVisible) ||\n parentElementPosition !== 'relative')) {\n child = parent;\n parent = parent.parentNode;\n continue;\n }\n const parentRect = new Rect(parent);\n const intersectionRect = visibleRect.getIntersection(parentRect);\n if (intersectionRect) {\n if (intersectionRect.getArea() < visibleRect.getArea()) {\n // Reduce the visible rect to the intersection.\n visibleRect = intersectionRect;\n }\n }\n else {\n // There's no intersection, the rect is completely invisible.\n return null;\n }\n child = parent;\n parent = parent.parentNode;\n }\n return visibleRect;\n }\n /**\n * Checks if all property values ({@link #top}, {@link #left}, {@link #right},\n * {@link #bottom}, {@link #width} and {@link #height}) are the equal in both rect\n * instances.\n *\n * @param anotherRect A rect instance to compare with.\n * @returns `true` when Rects are equal. `false` otherwise.\n */\n isEqual(anotherRect) {\n for (const prop of rectProperties) {\n if (this[prop] !== anotherRect[prop]) {\n return false;\n }\n }\n return true;\n }\n /**\n * Checks whether a rect fully contains another rect instance.\n *\n * @param anotherRect\n * @returns `true` if contains, `false` otherwise.\n */\n contains(anotherRect) {\n const intersectRect = this.getIntersection(anotherRect);\n return !!(intersectRect && intersectRect.isEqual(anotherRect));\n }\n /**\n * Recalculates screen coordinates to coordinates relative to the positioned ancestor offset.\n */\n toAbsoluteRect() {\n const { scrollX, scrollY } = global.window;\n const absoluteRect = this.clone().moveBy(scrollX, scrollY);\n if (isDomElement(absoluteRect._source)) {\n const positionedAncestor = getPositionedAncestor(absoluteRect._source);\n if (positionedAncestor) {\n shiftRectToCompensatePositionedAncestor(absoluteRect, positionedAncestor);\n }\n }\n return absoluteRect;\n }\n /**\n * Excludes scrollbars and CSS borders from the rect.\n *\n * * Borders are removed when {@link #_source} is an HTML element.\n * * Scrollbars are excluded from HTML elements and the `window`.\n *\n * @returns A rect which has been updated.\n */\n excludeScrollbarsAndBorders() {\n const source = this._source;\n let scrollBarWidth, scrollBarHeight, direction;\n if (isWindow(source)) {\n scrollBarWidth = source.innerWidth - source.document.documentElement.clientWidth;\n scrollBarHeight = source.innerHeight - source.document.documentElement.clientHeight;\n direction = source.getComputedStyle(source.document.documentElement).direction;\n }\n else {\n const borderWidths = getBorderWidths(source);\n scrollBarWidth = source.offsetWidth - source.clientWidth - borderWidths.left - borderWidths.right;\n scrollBarHeight = source.offsetHeight - source.clientHeight - borderWidths.top - borderWidths.bottom;\n direction = source.ownerDocument.defaultView.getComputedStyle(source).direction;\n this.left += borderWidths.left;\n this.top += borderWidths.top;\n this.right -= borderWidths.right;\n this.bottom -= borderWidths.bottom;\n this.width = this.right - this.left;\n this.height = this.bottom - this.top;\n }\n this.width -= scrollBarWidth;\n if (direction === 'ltr') {\n this.right -= scrollBarWidth;\n }\n else {\n this.left += scrollBarWidth;\n }\n this.height -= scrollBarHeight;\n this.bottom -= scrollBarHeight;\n return this;\n }\n /**\n * Returns an array of rects of the given native DOM Range.\n *\n * @param range A native DOM range.\n * @returns DOM Range rects.\n */\n static getDomRangeRects(range) {\n const rects = [];\n // Safari does not iterate over ClientRectList using for...of loop.\n const clientRects = Array.from(range.getClientRects());\n if (clientRects.length) {\n for (const rect of clientRects) {\n rects.push(new Rect(rect));\n }\n }\n // If there's no client rects for the Range, use parent container's bounding rect\n // instead and adjust rect's width to simulate the actual geometry of such range.\n // https://github.com/ckeditor/ckeditor5-utils/issues/153\n // https://github.com/ckeditor/ckeditor5-ui/issues/317\n else {\n let startContainer = range.startContainer;\n if (isText(startContainer)) {\n startContainer = startContainer.parentNode;\n }\n const rect = new Rect(startContainer.getBoundingClientRect());\n rect.right = rect.left;\n rect.width = 0;\n rects.push(rect);\n }\n return rects;\n }\n /**\n * Returns a bounding rectangle that contains all the given `rects`.\n *\n * @param rects A list of rectangles that should be contained in the result rectangle.\n * @returns Bounding rectangle or `null` if no `rects` were given.\n */\n static getBoundingRect(rects) {\n const boundingRectData = {\n left: Number.POSITIVE_INFINITY,\n top: Number.POSITIVE_INFINITY,\n right: Number.NEGATIVE_INFINITY,\n bottom: Number.NEGATIVE_INFINITY,\n width: 0,\n height: 0\n };\n let rectangleCount = 0;\n for (const rect of rects) {\n rectangleCount++;\n boundingRectData.left = Math.min(boundingRectData.left, rect.left);\n boundingRectData.top = Math.min(boundingRectData.top, rect.top);\n boundingRectData.right = Math.max(boundingRectData.right, rect.right);\n boundingRectData.bottom = Math.max(boundingRectData.bottom, rect.bottom);\n }\n if (rectangleCount == 0) {\n return null;\n }\n boundingRectData.width = boundingRectData.right - boundingRectData.left;\n boundingRectData.height = boundingRectData.bottom - boundingRectData.top;\n return new Rect(boundingRectData);\n }\n}\n/**\n * Acquires all the rect properties from the passed source.\n */\nfunction copyRectProperties(rect, source) {\n for (const p of rectProperties) {\n rect[p] = source[p];\n }\n}\n/**\n * Checks if provided object is a HTML element.\n */\nfunction isBody(value) {\n if (!isDomElement(value)) {\n return false;\n }\n return value === value.ownerDocument.body;\n}\n/**\n * Checks if provided object \"looks like\" a DOM Element and has API required by `Rect` class.\n */\nfunction isDomElement(value) {\n // Note: earlier we used `isElement()` from lodash library, however that function is less performant because\n // it makes complicated checks to make sure that given value is a DOM element.\n return value !== null && typeof value === 'object' && value.nodeType === 1 && typeof value.getBoundingClientRect === 'function';\n}\n/**\n * Returns the value of the `position` style of an `HTMLElement`.\n */\nfunction getElementPosition(element) {\n return element instanceof HTMLElement ? element.ownerDocument.defaultView.getComputedStyle(element).position : 'static';\n}\n/**\n * Returns the value of the `overflow` style of an `HTMLElement` or a `Range`.\n */\nfunction getElementOverflow(element) {\n return element instanceof HTMLElement ? element.ownerDocument.defaultView.getComputedStyle(element).overflow : 'visible';\n}\n/**\n * For a given absolute Rect coordinates object and a positioned element ancestor, it updates its\n * coordinates that make up for the position and the scroll of the ancestor.\n *\n * This is necessary because while Rects (and DOMRects) are relative to the browser's viewport, their coordinates\n * are used in real–life to position elements with `position: absolute`, which are scoped by any positioned\n * (and scrollable) ancestors.\n */\nfunction shiftRectToCompensatePositionedAncestor(rect, positionedElementAncestor) {\n const ancestorPosition = new Rect(positionedElementAncestor);\n const ancestorBorderWidths = getBorderWidths(positionedElementAncestor);\n let moveX = 0;\n let moveY = 0;\n // (https://github.com/ckeditor/ckeditor5-ui-default/issues/126)\n // If there's some positioned ancestor of the panel, then its `Rect` must be taken into\n // consideration. `Rect` is always relative to the viewport while `position: absolute` works\n // with respect to that positioned ancestor.\n moveX -= ancestorPosition.left;\n moveY -= ancestorPosition.top;\n // (https://github.com/ckeditor/ckeditor5-utils/issues/139)\n // If there's some positioned ancestor of the panel, not only its position must be taken into\n // consideration (see above) but also its internal scrolls. Scroll have an impact here because `Rect`\n // is relative to the viewport (it doesn't care about scrolling), while `position: absolute`\n // must compensate that scrolling.\n moveX += positionedElementAncestor.scrollLeft;\n moveY += positionedElementAncestor.scrollTop;\n // (https://github.com/ckeditor/ckeditor5-utils/issues/139)\n // If there's some positioned ancestor of the panel, then its `Rect` includes its CSS `borderWidth`\n // while `position: absolute` positioning does not consider it.\n // E.g. `{ position: absolute, top: 0, left: 0 }` means upper left corner of the element,\n // not upper-left corner of its border.\n moveX -= ancestorBorderWidths.left;\n moveY -= ancestorBorderWidths.top;\n rect.moveBy(moveX, moveY);\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/resizeobserver\n */\nimport global from './global.js';\n/**\n * A helper class which instances allow performing custom actions when native DOM elements are resized.\n *\n * ```ts\n * const editableElement = editor.editing.view.getDomRoot();\n *\n * const observer = new ResizeObserver( editableElement, entry => {\n * \tconsole.log( 'The editable element has been resized in DOM.' );\n * \tconsole.log( entry.target ); // -> editableElement\n * \tconsole.log( entry.contentRect.width ); // -> e.g. '423px'\n * } );\n * ```\n *\n * It uses the [native DOM resize observer](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver)\n * under the hood.\n */\nclass ResizeObserver {\n /**\n * Creates an instance of the `ResizeObserver` class.\n *\n * @param element A DOM element that is to be observed for resizing. Note that\n * the element must be visible (i.e. not detached from DOM) for the observer to work.\n * @param callback A function called when the observed element was resized. It passes\n * the [`ResizeObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry)\n * object with information about the resize event.\n */\n constructor(element, callback) {\n // **Note**: For the maximum performance, this class ensures only a single instance of the native\n // observer is used no matter how many instances of this class were created.\n if (!ResizeObserver._observerInstance) {\n ResizeObserver._createObserver();\n }\n this._element = element;\n this._callback = callback;\n ResizeObserver._addElementCallback(element, callback);\n ResizeObserver._observerInstance.observe(element);\n }\n /**\n * The element observed by this observer.\n */\n get element() {\n return this._element;\n }\n /**\n * Destroys the observer which disables the `callback` passed to the {@link #constructor}.\n */\n destroy() {\n ResizeObserver._deleteElementCallback(this._element, this._callback);\n }\n /**\n * Registers a new resize callback for the DOM element.\n */\n static _addElementCallback(element, callback) {\n if (!ResizeObserver._elementCallbacks) {\n ResizeObserver._elementCallbacks = new Map();\n }\n let callbacks = ResizeObserver._elementCallbacks.get(element);\n if (!callbacks) {\n callbacks = new Set();\n ResizeObserver._elementCallbacks.set(element, callbacks);\n }\n callbacks.add(callback);\n }\n /**\n * Removes a resize callback from the DOM element. If no callbacks are left\n * for the element, it removes the element from the native observer.\n */\n static _deleteElementCallback(element, callback) {\n const callbacks = ResizeObserver._getElementCallbacks(element);\n // Remove the element callback. Check if exist first in case someone\n // called destroy() twice.\n if (callbacks) {\n callbacks.delete(callback);\n // If no callbacks left for the element, also remove the element.\n if (!callbacks.size) {\n ResizeObserver._elementCallbacks.delete(element);\n ResizeObserver._observerInstance.unobserve(element);\n }\n }\n if (ResizeObserver._elementCallbacks && !ResizeObserver._elementCallbacks.size) {\n ResizeObserver._observerInstance = null;\n ResizeObserver._elementCallbacks = null;\n }\n }\n /**\n * Returns are registered resize callbacks for the DOM element.\n */\n static _getElementCallbacks(element) {\n if (!ResizeObserver._elementCallbacks) {\n return null;\n }\n return ResizeObserver._elementCallbacks.get(element);\n }\n /**\n * Creates the single native observer shared across all `ResizeObserver` instances.\n */\n static _createObserver() {\n ResizeObserver._observerInstance = new global.window.ResizeObserver(entries => {\n for (const entry of entries) {\n const callbacks = ResizeObserver._getElementCallbacks(entry.target);\n if (callbacks) {\n for (const callback of callbacks) {\n callback(entry);\n }\n }\n }\n });\n }\n}\n/**\n * The single native observer instance shared across all {@link module:utils/dom/resizeobserver~ResizeObserver} instances.\n */\nResizeObserver._observerInstance = null;\n/**\n * A mapping of native DOM elements and their callbacks shared across all\n * {@link module:utils/dom/resizeobserver~ResizeObserver} instances.\n */\nResizeObserver._elementCallbacks = null;\nexport default ResizeObserver;\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/setdatainelement\n */\n/* globals HTMLTextAreaElement */\n/**\n * Sets data in a given element.\n *\n * @param el The element in which the data will be set.\n * @param data The data string.\n */\nexport default function setDataInElement(el, data) {\n if (el instanceof HTMLTextAreaElement) {\n el.value = data;\n }\n el.innerHTML = data;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/tounit\n */\n/**\n * Returns a helper function, which adds a desired trailing\n * `unit` to the passed value.\n *\n * @param unit An unit like \"px\" or \"em\".\n */\nexport default function toUnit(unit) {\n return value => value + unit;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/indexof\n */\n/**\n * Returns index of the node in the parent element.\n *\n * @param node Node which index is tested.\n * @returns Index of the node in the parent element. Returns 0 if node has no parent.\n */\nexport default function indexOf(node) {\n let index = 0;\n while (node.previousSibling) {\n node = node.previousSibling;\n index++;\n }\n return index;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/insertat\n */\n/**\n * Inserts node to the parent at given index.\n *\n * @param parentElement Parent element.\n * @param index Insertions index.\n * @param nodeToInsert Node to insert.\n */\nexport default function insertAt(parentElement, index, nodeToInsert) {\n parentElement.insertBefore(nodeToInsert, parentElement.childNodes[index] || null);\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/* globals Node */\n/**\n * @module utils/dom/iscomment\n */\n/**\n * Checks whether the object is a native DOM Comment node.\n */\nexport default function isComment(obj) {\n return obj && obj.nodeType === Node.COMMENT_NODE;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/isvisible\n */\nimport isText from './istext.js';\n/**\n * Checks whether the element is visible to the user in DOM:\n *\n * * connected to the root of the document,\n * * has no `display: none`,\n * * has no ancestors with `display: none`.\n *\n * **Note**: This helper does not check whether the element is hidden by cropping, overflow, etc..\n * To check that, use {@link module:utils/dom/rect~Rect} instead.\n */\nexport default function isVisible(element) {\n if (!element) {\n return false;\n }\n if (isText(element)) {\n return isVisible(element.parentElement);\n }\n if (element.getClientRects) {\n return !!(element.getClientRects().length);\n }\n return false;\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/position\n */\nimport global from './global.js';\nimport Rect from './rect.js';\nimport getPositionedAncestor from './getpositionedancestor.js';\nimport { isFunction } from 'lodash-es';\n// @if CK_DEBUG_POSITION // const {\n// @if CK_DEBUG_POSITION // \tdefault: RectDrawer,\n// @if CK_DEBUG_POSITION // \tdiagonalStylesBlack,\n// @if CK_DEBUG_POSITION // \tdiagonalStylesGreen,\n// @if CK_DEBUG_POSITION // \tdiagonalStylesRed\n// @if CK_DEBUG_POSITION // } = require( '@ckeditor/ckeditor5-utils/tests/_utils/rectdrawer' );\n// @if CK_DEBUG_POSITION // const TARGET_RECT_STYLE = {\n// @if CK_DEBUG_POSITION // \toutlineWidth: '2px', outlineStyle: 'dashed', outlineColor: 'blue', outlineOffset: '2px'\n// @if CK_DEBUG_POSITION // };\n// @if CK_DEBUG_POSITION // const VISIBLE_TARGET_RECT_STYLE = {\n// @if CK_DEBUG_POSITION //\t\t...diagonalStylesBlack,\n// @if CK_DEBUG_POSITION //\t\topacity: '1',\n// @if CK_DEBUG_POSITION //\t\tbackgroundColor: '#00000033',\n// @if CK_DEBUG_POSITION //\t\toutlineWidth: '2px'\n// @if CK_DEBUG_POSITION // };\n// @if CK_DEBUG_POSITION // const VIEWPORT_RECT_STYLE = {\n// @if CK_DEBUG_POSITION // \toutlineWidth: '2px',\n// @if CK_DEBUG_POSITION // \toutlineOffset: '-2px',\n// @if CK_DEBUG_POSITION // \toutlineStyle: 'solid',\n// @if CK_DEBUG_POSITION // \toutlineColor: 'red'\n// @if CK_DEBUG_POSITION // };\n// @if CK_DEBUG_POSITION // const VISIBLE_LIMITER_RECT_STYLE = {\n// @if CK_DEBUG_POSITION // \t...diagonalStylesGreen,\n// @if CK_DEBUG_POSITION // \toutlineWidth: '2px',\n// @if CK_DEBUG_POSITION // \toutlineOffset: '-2px'\n// @if CK_DEBUG_POSITION // };\n// @if CK_DEBUG_POSITION // const ELEMENT_RECT_STYLE = {\n// @if CK_DEBUG_POSITION // \toutlineWidth: '2px', outlineColor: 'orange', outlineOffset: '-2px'\n// @if CK_DEBUG_POSITION // };\n// @if CK_DEBUG_POSITION // const CHOSEN_POSITION_RECT_STYLE = {\n// @if CK_DEBUG_POSITION // \topacity: .5, outlineColor: 'magenta', backgroundColor: 'magenta'\n// @if CK_DEBUG_POSITION // };\n/**\n * Calculates the `position: absolute` coordinates of a given element so it can be positioned with respect to the\n * target in the visually most efficient way, taking various restrictions like viewport or limiter geometry\n * into consideration.\n *\n * **Note**: If there are no position coordinates found that meet the requirements (arguments of this helper),\n * `null` is returned.\n *\n * ```ts\n * // The element which is to be positioned.\n * const element = document.body.querySelector( '#toolbar' );\n *\n * // A target to which the element is positioned relatively.\n * const target = document.body.querySelector( '#container' );\n *\n * // Finding the optimal coordinates for the positioning.\n * const { left, top, name } = getOptimalPosition( {\n * \telement: element,\n * \ttarget: target,\n *\n * \t// The algorithm will chose among these positions to meet the requirements such\n * \t// as \"limiter\" element or \"fitInViewport\", set below. The positions are considered\n * \t// in the order of the array.\n * \tpositions: [\n * \t\t//\n * \t \t//\t[ Target ]\n * \t\t//\t+-----------------+\n * \t\t//\t| Element |\n * \t\t//\t+-----------------+\n * \t\t//\n * \t\ttargetRect => ( {\n * \t\t\ttop: targetRect.bottom,\n * \t\t\tleft: targetRect.left,\n * \t\t\tname: 'mySouthEastPosition'\n * \t\t} ),\n *\n * \t\t//\n * \t\t//\t+-----------------+\n * \t\t//\t| Element |\n * \t\t//\t+-----------------+\n * \t\t//\t[ Target ]\n * \t\t//\n * \t\t( targetRect, elementRect ) => ( {\n * \t\t\ttop: targetRect.top - elementRect.height,\n * \t\t\tleft: targetRect.left,\n * \t\t\tname: 'myNorthEastPosition'\n * \t\t} )\n * \t],\n *\n * \t// Find a position such guarantees the element remains within visible boundaries of .\n * \tlimiter: document.body,\n *\n * \t// Find a position such guarantees the element remains within visible boundaries of the browser viewport.\n * \tfitInViewport: true\n * } );\n *\n * // The best position which fits into document.body and the viewport. May be useful\n * // to set proper class on the `element`.\n * console.log( name ); // -> \"myNorthEastPosition\"\n *\n * // Using the absolute coordinates which has been found to position the element\n * // as in the diagram depicting the \"myNorthEastPosition\" position.\n * element.style.top = top;\n * element.style.left = left;\n * ```\n *\n * @param options The input data and configuration of the helper.\n */\nexport function getOptimalPosition({ element, target, positions, limiter, fitInViewport, viewportOffsetConfig }) {\n // If the {@link module:utils/dom/position~Options#target} is a function, use what it returns.\n // https://github.com/ckeditor/ckeditor5-utils/issues/157\n if (isFunction(target)) {\n target = target();\n }\n // If the {@link module:utils/dom/position~Options#limiter} is a function, use what it returns.\n // https://github.com/ckeditor/ckeditor5-ui/issues/260\n if (isFunction(limiter)) {\n limiter = limiter();\n }\n const positionedElementAncestor = getPositionedAncestor(element);\n const constrainedViewportRect = getConstrainedViewportRect(viewportOffsetConfig);\n const elementRect = new Rect(element);\n const visibleTargetRect = getVisibleViewportIntersectionRect(target, constrainedViewportRect);\n let bestPosition;\n // @if CK_DEBUG_POSITION // const targetRect = new Rect( target );\n // @if CK_DEBUG_POSITION // RectDrawer.clear();\n // @if CK_DEBUG_POSITION // RectDrawer.draw( targetRect, TARGET_RECT_STYLE, 'Target' );\n // @if CK_DEBUG_POSITION // if ( constrainedViewportRect ) {\n // @if CK_DEBUG_POSITION //\t\tRectDrawer.draw( constrainedViewportRect, VIEWPORT_RECT_STYLE, 'Viewport' );\n // @if CK_DEBUG_POSITION // }\n // If the target got cropped by ancestors or went off the screen, positioning does not make any sense.\n if (!visibleTargetRect || !constrainedViewportRect.getIntersection(visibleTargetRect)) {\n return null;\n }\n // @if CK_DEBUG_POSITION //\tRectDrawer.draw( visibleTargetRect, VISIBLE_TARGET_RECT_STYLE, 'VisTgt' );\n const positionOptions = {\n targetRect: visibleTargetRect,\n elementRect,\n positionedElementAncestor,\n viewportRect: constrainedViewportRect\n };\n // If there are no limits, just grab the very first position and be done with that drama.\n if (!limiter && !fitInViewport) {\n bestPosition = new PositionObject(positions[0], positionOptions);\n }\n else {\n if (limiter) {\n const visibleLimiterRect = getVisibleViewportIntersectionRect(limiter, constrainedViewportRect);\n if (visibleLimiterRect) {\n positionOptions.limiterRect = visibleLimiterRect;\n // @if CK_DEBUG_POSITION // RectDrawer.draw( visibleLimiterRect, VISIBLE_LIMITER_RECT_STYLE, 'VisLim' );\n }\n }\n // If there's no best position found, i.e. when all intersections have no area because\n // rects have no width or height, then just return `null`\n bestPosition = getBestPosition(positions, positionOptions);\n }\n return bestPosition;\n}\n/**\n * Returns intersection of visible source `Rect` with Viewport `Rect`. In case when source `Rect` is not visible\n * or there is no intersection between source `Rect` and Viewport `Rect`, `null` will be returned.\n */\nfunction getVisibleViewportIntersectionRect(source, viewportRect) {\n const visibleSourceRect = new Rect(source).getVisible();\n if (!visibleSourceRect) {\n return null;\n }\n return visibleSourceRect.getIntersection(viewportRect);\n}\n/**\n * Returns a viewport `Rect` shrunk by the viewport offset config from all sides.\n */\nfunction getConstrainedViewportRect(viewportOffsetConfig) {\n viewportOffsetConfig = Object.assign({ top: 0, bottom: 0, left: 0, right: 0 }, viewportOffsetConfig);\n const viewportRect = new Rect(global.window);\n viewportRect.top += viewportOffsetConfig.top;\n viewportRect.height -= viewportOffsetConfig.top;\n viewportRect.bottom -= viewportOffsetConfig.bottom;\n viewportRect.height -= viewportOffsetConfig.bottom;\n return viewportRect;\n}\n/**\n * For a given array of positioning functions, returns such that provides the best\n * fit of the `elementRect` into the `limiterRect` and `viewportRect`.\n */\nfunction getBestPosition(positions, options) {\n const { elementRect } = options;\n // This is when element is fully visible.\n const elementRectArea = elementRect.getArea();\n const positionInstances = positions\n .map(positioningFunction => new PositionObject(positioningFunction, options))\n // Some positioning functions may return `null` if they don't want to participate.\n .filter(position => !!position.name);\n let maxFitFactor = 0;\n let bestPosition = null;\n for (const position of positionInstances) {\n const { limiterIntersectionArea, viewportIntersectionArea } = position;\n // If a such position is found that element is fully contained by the limiter then, obviously,\n // there will be no better one, so finishing.\n if (limiterIntersectionArea === elementRectArea) {\n // @if CK_DEBUG_POSITION //\tRectDrawer.draw( position._rect, CHOSEN_POSITION_RECT_STYLE, [\n // @if CK_DEBUG_POSITION //\t\tposition.name,\n // @if CK_DEBUG_POSITION //\t\t'100% fit',\n // @if CK_DEBUG_POSITION //\t].join( '\\n' ) );\n return position;\n }\n // To maximize both viewport and limiter intersection areas we use distance on _viewportIntersectionArea\n // and _limiterIntersectionArea plane (without sqrt because we are looking for max value).\n const fitFactor = viewportIntersectionArea ** 2 + limiterIntersectionArea ** 2;\n // @if CK_DEBUG_POSITION //\tRectDrawer.draw( position._rect, { opacity: .4 }, [\n // @if CK_DEBUG_POSITION //\t\tposition.name,\n // @if CK_DEBUG_POSITION //\t\t'Vi=' + Math.round( viewportIntersectionArea ),\n // @if CK_DEBUG_POSITION //\t\t'Li=' + Math.round( limiterIntersectionArea )\n // @if CK_DEBUG_POSITION //\t].join( '\\n' ) );\n if (fitFactor > maxFitFactor) {\n maxFitFactor = fitFactor;\n bestPosition = position;\n }\n }\n // @if CK_DEBUG_POSITION // if ( bestPosition ) {\n // @if CK_DEBUG_POSITION // \tRectDrawer.draw( bestPosition._rect, CHOSEN_POSITION_RECT_STYLE );\n // @if CK_DEBUG_POSITION // }\n return bestPosition;\n}\n/**\n * A position class which instances are created and used by the {@link module:utils/dom/position~getOptimalPosition} helper.\n *\n * {@link module:utils/dom/position~Position#top} and {@link module:utils/dom/position~Position#left} properties of the position instance\n * translate directly to the `top` and `left` properties in CSS \"`position: absolute` coordinate system\". If set on the positioned element\n * in DOM, they will make it display it in the right place in the viewport.\n */\nclass PositionObject {\n /**\n * Creates an instance of the {@link module:utils/dom/position~PositionObject} class.\n *\n * @param positioningFunction function The function that defines the expected\n * coordinates the positioned element should move to.\n * @param options options object.\n * @param options.elementRect The positioned element rect.\n * @param options.targetRect The target element rect.\n * @param options.viewportRect The viewport rect.\n * @param options.limiterRect The limiter rect.\n * @param options.positionedElementAncestor Nearest element ancestor element which CSS position is not \"static\".\n */\n constructor(positioningFunction, options) {\n const positioningFunctionOutput = positioningFunction(options.targetRect, options.elementRect, options.viewportRect, options.limiterRect);\n // Nameless position for a function that didn't participate.\n if (!positioningFunctionOutput) {\n return;\n }\n const { left, top, name, config } = positioningFunctionOutput;\n this.name = name;\n this.config = config;\n this._positioningFunctionCoordinates = { left, top };\n this._options = options;\n }\n /**\n * The left value in pixels in the CSS `position: absolute` coordinate system.\n * Set it on the positioned element in DOM to move it to the position.\n */\n get left() {\n return this._absoluteRect.left;\n }\n /**\n * The top value in pixels in the CSS `position: absolute` coordinate system.\n * Set it on the positioned element in DOM to move it to the position.\n */\n get top() {\n return this._absoluteRect.top;\n }\n /**\n * An intersection area between positioned element and limiter within viewport constraints.\n */\n get limiterIntersectionArea() {\n const limiterRect = this._options.limiterRect;\n if (limiterRect) {\n return limiterRect.getIntersectionArea(this._rect);\n }\n return 0;\n }\n /**\n * An intersection area between positioned element and viewport.\n */\n get viewportIntersectionArea() {\n const viewportRect = this._options.viewportRect;\n return viewportRect.getIntersectionArea(this._rect);\n }\n /**\n * An already positioned element rect. A clone of the element rect passed to the constructor\n * but placed in the viewport according to the positioning function.\n */\n get _rect() {\n if (this._cachedRect) {\n return this._cachedRect;\n }\n this._cachedRect = this._options.elementRect.clone().moveTo(this._positioningFunctionCoordinates.left, this._positioningFunctionCoordinates.top);\n return this._cachedRect;\n }\n /**\n * An already absolutely positioned element rect. See ({@link #_rect}).\n */\n get _absoluteRect() {\n if (this._cachedAbsoluteRect) {\n return this._cachedAbsoluteRect;\n }\n this._cachedAbsoluteRect = this._rect.toAbsoluteRect();\n return this._cachedAbsoluteRect;\n }\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/remove\n */\n/**\n * Removes given node from parent.\n *\n * @param node Node to remove.\n */\nexport default function remove(node) {\n const parent = node.parentNode;\n if (parent) {\n parent.removeChild(node);\n }\n}\n","/**\n * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options\n */\n/**\n * @module utils/dom/scroll\n */\nimport isRange from './isrange.js';\nimport Rect from './rect.js';\nimport isText from './istext.js';\n/**\n * Makes any page `HTMLElement` or `Range` (`target`) visible inside the browser viewport.\n * This helper will scroll all `target` ancestors and the web browser viewport to reveal the target to\n * the user. If the `target` is already visible, nothing will happen.\n *\n * @param options Additional configuration of the scrolling behavior.\n * @param options.target A target, which supposed to become visible to the user.\n * @param options.viewportOffset An offset from the edge of the viewport (in pixels)\n * the `target` will be moved by if the viewport is scrolled. It enhances the user experience\n * by keeping the `target` some distance from the edge of the viewport and thus making it easier to\n * read or edit by the user.\n * @param options.ancestorOffset An offset from the boundary of scrollable ancestors (if any)\n * the `target` will be moved by if the viewport is scrolled. It enhances the user experience\n * by keeping the `target` some distance from the edge of the ancestors and thus making it easier to\n * read or edit by the user.\n * @param options.alignToTop When set `true`, the helper will make sure the `target` is scrolled up\n * to the top boundary of the viewport and/or scrollable ancestors if scrolled up. When not set\n * (default), the `target` will be revealed by scrolling as little as possible. This option will\n * not affect `targets` that must be scrolled down because they will appear at the top of the boundary\n * anyway.\n *\n * ```\n * scrollViewportToShowTarget() with scrollViewportToShowTarget() with\n * Initial state alignToTop unset (default) alignToTop = true\n *\n * ┌────────────────────────────────┬─┐ ┌────────────────────────────────┬─┐ ┌────────────────────────────────┬─┐\n * │ │▲│ │ │▲│ │ [ Target to be revealed ] │▲│\n * │ │ │ │ │ │ │ │ │\n * │ │█│ │ │ │ │ │ │\n * │ │█│ │ │ │ │ │ │\n * │ │ │ │ │█│ │ │ │\n * │ │ │ │ │█│ │ │█│\n * │ │ │ │ │ │ │ │█│\n * │ │▼│ │ [ Target to be revealed ] │▼│ │ │▼│\n * └────────────────────────────────┴─┘ └────────────────────────────────┴─┘ └────────────────────────────────┴─┘\n *\n *\n * [ Target to be revealed ]\n *```\n *\n * @param options.forceScroll When set `true`, the `target` will be aligned to the top of the viewport\n * and scrollable ancestors whether it is already visible or not. This option will only work when `alignToTop`\n * is `true`\n */\nexport function scrollViewportToShowTarget({ target, viewportOffset = 0, ancestorOffset = 0, alignToTop, forceScroll }) {\n const targetWindow = getWindow(target);\n let currentWindow = targetWindow;\n let currentFrame = null;\n viewportOffset = normalizeViewportOffset(viewportOffset);\n // Iterate over all windows, starting from target's parent window up to window#top.\n while (currentWindow) {\n let firstAncestorToScroll;\n // Let's scroll target's ancestors first to reveal it. Then, once the ancestor scrolls\n // settled down, the algorithm can eventually scroll the viewport of the current window.\n //\n // Note: If the current window is target's **original** window (e.g. the first one),\n // start scrolling the closest parent of the target. If not, scroll the closest parent\n // of an iframe that resides in the current window.\n if (currentWindow == targetWindow) {\n firstAncestorToScroll = getParentElement(target);\n }\n else {\n firstAncestorToScroll = getParentElement(currentFrame);\n }\n // Scroll the target's ancestors first. Once done, scrolling the viewport is easy.\n scrollAncestorsToShowRect({\n parent: firstAncestorToScroll,\n getRect: () => {\n // Note: If the target does not belong to the current window **directly**,\n // i.e. it resides in an iframe belonging to the window, obtain the target's rect\n // in the coordinates of the current window. By default, a Rect returns geometry\n // relative to the current window's viewport. To make it work in a parent window,\n // it must be shifted.\n return getRectRelativeToWindow(target, currentWindow);\n },\n alignToTop,\n ancestorOffset,\n forceScroll\n });\n // Obtain the rect of the target after it has been scrolled within its ancestors.\n // It's time to scroll the viewport.\n let targetRect = getRectRelativeToWindow(target, currentWindow);\n // Detect situation where the target is higher than the first scrollable ancestor.\n // In such case scrolling the viewport to reveal the target might be malfunctioning because\n // the target `.top` position is lower than the ancestor's `.top` position. If it's large enough it can be negative.\n // It causes the `scrollWindowToShowRect` to scroll the viewport to the negative top position which is not possible\n // and leads to the viewport being scrolled to the absolute top of the document. To prevent this, the target's rect\n // must be shifted to the ancestor's top position. It should not affect the target's visibility because the ancestor\n // is already scrolled to reveal the target.\n // See more: https://github.com/ckeditor/ckeditor5/issues/17079\n const ancestorWindowRelativeRect = getRectRelativeToWindow(firstAncestorToScroll, currentWindow);\n if (targetRect.height > ancestorWindowRelativeRect.height) {\n const ancestorTargetIntersection = targetRect.getIntersection(ancestorWindowRelativeRect);\n if (ancestorTargetIntersection) {\n targetRect = ancestorTargetIntersection;\n }\n }\n scrollWindowToShowRect({\n window: currentWindow,\n rect: targetRect,\n viewportOffset,\n alignToTop,\n forceScroll\n });\n if (currentWindow.parent != currentWindow) {\n // Keep the reference to the