diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 6203d87bc..75c9d0dca 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,4 +1,4 @@ # These are supported funding model platforms -github: [zadam] -custom: ["https://paypal.me/za4am"] +github: [eliandoran] +custom: ["https://paypal.me/eliandoran"] diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 000000000..25cd18724 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,100 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL Advanced" + +on: + push: + branches: [ "develop" ] + pull_request: + branches: [ "develop" ] + schedule: + - cron: '20 7 * * 0' + +jobs: + analyze: + name: Analyze (${{ matrix.language }}) + # Runner size impacts CodeQL analysis time. To learn more, please see: + # - https://gh.io/recommended-hardware-resources-for-running-codeql + # - https://gh.io/supported-runners-and-hardware-resources + # - https://gh.io/using-larger-runners (GitHub.com only) + # Consider using larger runners or machines with greater resources for possible analysis time improvements. + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + permissions: + # required for all workflows + security-events: write + + # required to fetch internal or private CodeQL packs + packages: read + + # only required for workflows in private repositories + actions: read + contents: read + + strategy: + fail-fast: false + matrix: + include: + - language: actions + build-mode: none + - language: javascript-typescript + build-mode: none + # CodeQL supports the following values keywords for 'language': 'actions', 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' + # Use `c-cpp` to analyze code written in C, C++ or both + # Use 'java-kotlin' to analyze code written in Java, Kotlin or both + # Use 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both + # To learn more about changing the languages that are analyzed or customizing the build mode for your analysis, + # see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning. + # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize how + # your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + # Add any setup steps before running the `github/codeql-action/init` action. + # This includes steps like installing compilers or runtimes (`actions/setup-node` + # or others). This is typically only required for manual builds. + # - name: Setup runtime (example) + # uses: actions/setup-example@v1 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v3 + with: + languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + # If the analyze step fails for one of the languages you are analyzing with + # "We were unable to automatically build your code", modify the matrix above + # to set the build mode to "manual" for that language. Then modify this step + # to build your code. + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + - if: matrix.build-mode == 'manual' + shell: bash + run: | + echo 'If you are using a "manual" build mode for one or more of the' \ + 'languages you are analyzing, replace this with the commands to build' \ + 'your code, for example:' + echo ' make bootstrap' + echo ' make release' + exit 1 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v3 + with: + category: "/language:${{matrix.language}}" diff --git a/README.md b/README.md index 265e10543..1ae82efbd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # TriliumNext Notes -![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/notes) ![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/triliumnext/notes/total) +![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/notes) ![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/triliumnext/notes/total) [English](./README.md) | [Chinese](./README-ZH_CN.md) | [Russian](./README.ru.md) | [Japanese](./README.ja.md) | [Italian](./README.it.md) | [Spanish](./README.es.md) diff --git a/bin/tpl/anonymize-database.sql b/bin/tpl/anonymize-database.sql index bc2b431d6..6309d5236 100644 --- a/bin/tpl/anonymize-database.sql +++ b/bin/tpl/anonymize-database.sql @@ -14,7 +14,8 @@ UPDATE attributes SET name = 'name', value = 'value' WHERE type = 'label' 'widget', 'noteInfoWidgetDisabled', 'linkMapWidgetDisabled', 'revisionsWidgetDisabled', 'whatLinksHereWidgetDisabled', 'similarNotesWidgetDisabled', 'workspace', 'workspaceIconClass', 'workspaceTabBackgroundColor', 'workspaceCalendarRoot', 'workspaceTemplate', 'searchHome', 'workspaceInbox', - 'workspaceSearchHome', 'sqlConsoleHome', 'datePattern', 'pageSize', 'viewType', 'mapRootNoteId', + 'workspaceSearchHome', 'sqlConsoleHome', 'datePattern', 'weekPattern', 'enableWeekNote', 'monthPattern', + 'quarterPattern', 'yearPattern', 'enableQuarterNote', 'pageSize', 'viewType', 'mapRootNoteId', 'bookmarkFolder', 'sorted', 'sortDirection', 'sortFoldersFirst', 'sortNatural', 'sortLocale', 'top', 'fullContentWidth', 'shareHiddenFromTree', 'shareExternalLink', 'shareOmitDefaultCss', 'shareRoot', 'shareDescription', 'shareRaw', 'shareDisallowRobotIndexing', 'shareIndex', 'displayRelations', 'hideRelations', 'titleTemplate', @@ -31,7 +32,8 @@ UPDATE attributes SET name = 'name' WHERE type = 'relation' 'widget', 'noteInfoWidgetDisabled', 'linkMapWidgetDisabled', 'revisionsWidgetDisabled', 'whatLinksHereWidgetDisabled', 'similarNotesWidgetDisabled', 'workspace', 'workspaceIconClass', 'workspaceTabBackgroundColor', 'workspaceCalendarRoot', 'workspaceTemplate', 'searchHome', 'workspaceInbox', - 'workspaceSearchHome', 'sqlConsoleHome', 'datePattern', 'pageSize', 'viewType', 'mapRootNoteId', + 'workspaceSearchHome', 'sqlConsoleHome', 'datePattern', 'weekPattern', 'enableWeekNote', 'monthPattern', + 'quarterPattern', 'yearPattern', 'enableQuarterNote', 'pageSize', 'viewType', 'mapRootNoteId', 'bookmarkFolder', 'sorted', 'sortDirection', 'sortFoldersFirst', 'sortNatural', 'sortLocale', 'top', 'fullContentWidth', 'shareHiddenFromTree', 'shareExternalLink', 'shareOmitDefaultCss', 'shareRoot', 'shareDescription', 'shareRaw', 'shareDisallowRobotIndexing', 'shareIndex', 'displayRelations', 'hideRelations', 'titleTemplate', diff --git a/db/demo.zip b/db/demo.zip index 74d4e8c32..b44f44fb4 100644 Binary files a/db/demo.zip and b/db/demo.zip differ diff --git a/demo/!!!meta.json b/demo/!!!meta.json index f3d4a363e..4899c4606 100644 --- a/demo/!!!meta.json +++ b/demo/!!!meta.json @@ -147,7 +147,7 @@ "title": "Inbox", "notePosition": 10, "prefix": null, - "isExpanded": false, + "isExpanded": true, "type": "text", "mime": "text/html", "attributes": [ @@ -219,7 +219,22 @@ "isExpanded": false, "type": "text", "mime": "text/html", - "attributes": [], + "attributes": [ + { + "type": "relation", + "name": "includeNoteLink", + "value": "ZWCYra81yOFO", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "_help_nBAXQFj20hS1", + "isInheritable": false, + "position": 20 + } + ], "format": "html", "dataFileName": "The Last Question.html", "attachments": [], diff --git a/demo/root/Trilium Demo.html b/demo/root/Trilium Demo.html index cd12b4bd1..59ef348b7 100644 --- a/demo/root/Trilium Demo.html +++ b/demo/root/Trilium Demo.html @@ -18,22 +18,28 @@ height="150">

Welcome to TriliumNext Notes! +

This is initial "demo" document provided by TriliumNext by default to showcase some of its features and also give you some ideas how you might structure your notes. You can play with it, modify note content and tree structure as you wish.

If you need any help, visit TriliumNext website: https://github.com/TriliumNext +

-

Cleanup

+

Cleanup

+

Once you're finished with experimenting and want to cleanup these pages, you can simply delete them all.

-

Formatting

+

Formatting

+

TriliumNext supports classic formatting like italic, bold, bold and italic. Of course you can add links like this one pointing to google.com +

Lists

Ordered: +

  1. First Item
  2. @@ -48,6 +54,7 @@

Unordered: +

diff --git a/demo/root/Trilium Demo/Formatting examples/Math.html b/demo/root/Trilium Demo/Formatting examples/Math.html index 54a28f3ff..e646e00b4 100644 --- a/demo/root/Trilium Demo/Formatting examples/Math.html +++ b/demo/root/Trilium Demo/Formatting examples/Math.html @@ -15,7 +15,9 @@

\(% \f is defined as #1f(#2) using the macro \f\relax{x} = \int_{-\infty}^\infty     \f\hat\xi\,e^{2 \pi i \xi x}     \,d\xi\)Some math examples:

\[\displaystyle \frac{1}{\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {1+\frac{e^{-6\pi}} {1+\frac{e^{-8\pi}} {1+\cdots} } } }\] +

Another:

\[\displaystyle \left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)\] +

Inline math is also possible: \(c^2 = a^2 + b^2\) 

 

diff --git a/demo/root/Trilium Demo/Inbox/The Last Question.html b/demo/root/Trilium Demo/Inbox/The Last Question.html index 4e7605891..57cc8dff5 100644 --- a/demo/root/Trilium Demo/Inbox/The Last Question.html +++ b/demo/root/Trilium Demo/Inbox/The Last Question.html @@ -21,8 +21,7 @@ class="include-note" data-note-id="ZWCYra81yOFO" data-box-size="medium"> 

This page demonstrates two things:

diff --git a/demo/root/Trilium Demo/Journal.html b/demo/root/Trilium Demo/Journal.html index faac301b5..629b4870f 100644 --- a/demo/root/Trilium Demo/Journal.html +++ b/demo/root/Trilium Demo/Journal.html @@ -14,6 +14,7 @@

You can read some explanation on how this journal works here: https://github.com/zadam/trilium/wiki/Day-notes +

diff --git a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Chichén Itzá, Mexico.html b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Chichén Itzá, Mexico.html index ab44bd638..3992ceed9 100644 --- a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Chichén Itzá, Mexico.html +++ b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Chichén Itzá, Mexico.html @@ -24,14 +24,17 @@ [1] +

  1. ^ +
  2. diff --git a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Christ the Redeemer, Brazil.html b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Christ the Redeemer, Brazil.html index 3e1f1e905..cbaae70da 100644 --- a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Christ the Redeemer, Brazil.html +++ b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Christ the Redeemer, Brazil.html @@ -26,13 +26,16 @@ been brought to its knees.[1] +

    1. ^ +
    2. diff --git a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Machu Picchu, Peru.html b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Machu Picchu, Peru.html index 5e9817e5b..929103047 100644 --- a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Machu Picchu, Peru.html +++ b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Machu Picchu, Peru.html @@ -22,13 +22,16 @@ around 1450 in polished drystone walls.[1] +

      1. ^ +
      2. diff --git a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Petra, Jordan.html b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Petra, Jordan.html index 1396c2691..55e0adafa 100644 --- a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Petra, Jordan.html +++ b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/Petra, Jordan.html @@ -23,13 +23,16 @@ by earthquakes.[1] +

        1. ^ +
        2. diff --git a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Colosseum, Rome, Italy.html b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Colosseum, Rome, Italy.html index 650a6623c..c9abd680d 100644 --- a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Colosseum, Rome, Italy.html +++ b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Colosseum, Rome, Italy.html @@ -26,14 +26,17 @@ [1] +

          1. ^ +
          2. diff --git a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Great Wall of China.html b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Great Wall of China.html index 1f5d5886f..ccedb8388 100644 --- a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Great Wall of China.html +++ b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Great Wall of China.html @@ -23,14 +23,17 @@ [1] +

            1. ^ +
            2. diff --git a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Taj Mahal, India.html b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Taj Mahal, India.html index 0d692392a..755184be0 100644 --- a/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Taj Mahal, India.html +++ b/demo/root/Trilium Demo/Note Types/Geo Map (The Seven Wonders of the World)/The Taj Mahal, India.html @@ -23,13 +23,16 @@ the complex.[1] +

              1. ^ +
              2. diff --git a/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html b/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html index 9cda89645..65b1819f2 100644 --- a/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html +++ b/demo/root/Trilium Demo/Scripting examples/Task manager/Done/Buy a board game for Alice.html @@ -18,6 +18,7 @@ width="209" height="300">

                Maybe CodeNames? https://boardgamegeek.com/boardgame/178900/codenames +

                diff --git a/demo/root/Trilium Demo/Tech/node.js/Intro.html b/demo/root/Trilium Demo/Tech/Node.js/Intro.html similarity index 100% rename from demo/root/Trilium Demo/Tech/node.js/Intro.html rename to demo/root/Trilium Demo/Tech/Node.js/Intro.html diff --git a/demo/root/Trilium Demo/Tech/node.js/Overview.html b/demo/root/Trilium Demo/Tech/Node.js/Overview.html similarity index 100% rename from demo/root/Trilium Demo/Tech/node.js/Overview.html rename to demo/root/Trilium Demo/Tech/Node.js/Overview.html diff --git a/demo/root/Trilium Demo/Tech/node.js/Overview/History.html b/demo/root/Trilium Demo/Tech/Node.js/Overview/History.html similarity index 100% rename from demo/root/Trilium Demo/Tech/node.js/Overview/History.html rename to demo/root/Trilium Demo/Tech/Node.js/Overview/History.html diff --git a/demo/root/Trilium Demo/Tech/node.js/Overview/Industry support.html b/demo/root/Trilium Demo/Tech/Node.js/Overview/Industry support.html similarity index 100% rename from demo/root/Trilium Demo/Tech/node.js/Overview/Industry support.html rename to demo/root/Trilium Demo/Tech/Node.js/Overview/Industry support.html diff --git a/demo/root/Trilium Demo/Tech/node.js/Overview/Platform architecture.html b/demo/root/Trilium Demo/Tech/Node.js/Overview/Platform architecture.html similarity index 99% rename from demo/root/Trilium Demo/Tech/node.js/Overview/Platform architecture.html rename to demo/root/Trilium Demo/Tech/Node.js/Overview/Platform architecture.html index 1a977bccc..4b51ab5be 100644 --- a/demo/root/Trilium Demo/Tech/node.js/Overview/Platform architecture.html +++ b/demo/root/Trilium Demo/Tech/Node.js/Overview/Platform architecture.html @@ -20,6 +20,7 @@ href="https://en.wikipedia.org/wiki/Node.js#cite_note-b1-31">[31]Developers can create scalable servers without using threading, by using a simplified model of event-driven programming that uses callbacks to signal the completion of a task.[31] +

                diff --git a/demo/root/Trilium Demo/Tech/node.js/Releases.html b/demo/root/Trilium Demo/Tech/Node.js/Releases.html similarity index 100% rename from demo/root/Trilium Demo/Tech/node.js/Releases.html rename to demo/root/Trilium Demo/Tech/Node.js/Releases.html diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json index ee524ea75..0ea953d4c 100644 --- a/docs/User Guide/!!!meta.json +++ b/docs/User Guide/!!!meta.json @@ -1,6 +1,6 @@ { "formatVersion": 2, - "appVersion": "0.92.5-beta", + "appVersion": "0.92.7", "files": [ { "isClone": false, @@ -571,26 +571,6 @@ "format": "markdown", "dataFileName": "Multi-Factor Authentication.md", "attachments": [] - }, - { - "isClone": false, - "noteId": "KaM3TfD7mP78", - "notePath": [ - "pOsGYCXsbNQG", - "Otzi9La2YAUX", - "WOcw2SLH6tbX", - "KaM3TfD7mP78" - ], - "title": "Reverse proxy setup", - "notePosition": 120, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "dataFileName": "Reverse proxy setup.md", - "attachments": [] } ] }, @@ -609,47 +589,26 @@ "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "676Ekdv73T7I", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "SDHWNDsB68aJ", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "imageLink", - "value": "qGTyyKX4TceE", - "isInheritable": false, - "position": 30 - }, { "type": "relation", "name": "internalLink", "value": "l2VkvOwUNfZj", "isInheritable": false, - "position": 40 + "position": 10 }, { "type": "relation", "name": "internalLink", "value": "poXkQfguuA0U", "isInheritable": false, - "position": 50 + "position": 20 }, { "type": "relation", "name": "internalLink", "value": "vZWERwf8U3nx", "isInheritable": false, - "position": 60 + "position": 30 }, { "type": "label", @@ -657,11 +616,26 @@ "value": "synchronization", "isInheritable": false, "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-sync", + "isInheritable": false, + "position": 70 } ], "format": "markdown", "dataFileName": "Synchronization.md", "attachments": [ + { + "attachmentId": "PU4LVfX4MaMD", + "title": "sync-in-progress.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Synchronization_sync-in-pr.png" + }, { "attachmentId": "s3fKDqHslToK", "title": "image.png", @@ -669,6 +643,22 @@ "mime": "image/jpg", "position": 10, "dataFileName": "Synchronization_image.png" + }, + { + "attachmentId": "wlHlhXqZ0i1S", + "title": "sync-config.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Synchronization_sync-confi.png" + }, + { + "attachmentId": "x0t06ATHph6b", + "title": "sync-init.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Synchronization_sync-init.png" } ] }, @@ -687,40 +677,26 @@ "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "TFAiJIXJFfqv", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "fi37V32TNyzm", - "isInheritable": false, - "position": 20 - }, { "type": "relation", "name": "internalLink", "value": "bwg0e8ewQMak", "isInheritable": false, - "position": 30 + "position": 10 }, { "type": "relation", "name": "internalLink", "value": "WOcw2SLH6tbX", "isInheritable": false, - "position": 40 + "position": 20 }, { "type": "relation", "name": "internalLink", "value": "CdNpE2pqjmI6", "isInheritable": false, - "position": 50 + "position": 30 }, { "type": "label", @@ -728,11 +704,35 @@ "value": "mobile-frontend", "isInheritable": false, "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-mobile-alt", + "isInheritable": false, + "position": 60 } ], "format": "markdown", "dataFileName": "Mobile Frontend.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "CyswsZZ3GwtQ", + "title": "mobile-tablet.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Mobile Frontend_mobile-tab.png" + }, + { + "attachmentId": "txzBbmMtgsrx", + "title": "mobile-smartphone.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Mobile Frontend_mobile-sma.png" + } + ] }, { "isClone": false, @@ -864,24 +864,31 @@ { "type": "relation", "name": "internalLink", - "value": "Gzjqa934BdH4", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "tAassRL4RSQL", + "value": "Gzjqa934BdH4", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "cbkrhQjrkKrh", + "value": "tAassRL4RSQL", "isInheritable": false, "position": 30 }, + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 40 + }, { "type": "label", "name": "shareAlias", @@ -1053,7 +1060,7 @@ { "type": "relation", "name": "internalLink", - "value": "_lbSettings", + "value": "4TIF1oA4VQRO", "isInheritable": false, "position": 50 }, @@ -1178,40 +1185,26 @@ "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "sLZ7Bcq9p8E9", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "qL7381ZG0lMK", - "isInheritable": false, - "position": 20 - }, { "type": "relation", "name": "internalLink", "value": "A9Oc6YKKc65v", "isInheritable": false, - "position": 30 + "position": 10 }, { "type": "relation", "name": "internalLink", "value": "IakOLONlIfGI", "isInheritable": false, - "position": 40 + "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "ivYnonVFBxbQ", + "value": "YtSN43OrfzaA", "isInheritable": false, - "position": 50 + "position": 30 }, { "type": "label", @@ -1232,12 +1225,12 @@ "dataFileName": "Note Tree.md", "attachments": [ { - "attachmentId": "Bp5BCJRntpyt", - "title": "image.png", + "attachmentId": "AF3on7rb7R59", + "title": "drag-and-drop.gif", "role": "image", - "mime": "image/jpg", + "mime": "image/gif", "position": 10, - "dataFileName": "Note Tree_image.png" + "dataFileName": "Note Tree_drag-and-drop.gif" }, { "attachmentId": "DYf7wm3Yv6EC", @@ -1245,7 +1238,242 @@ "role": "image", "mime": "image/jpg", "position": 10, - "dataFileName": "1_Note Tree_image.png" + "dataFileName": "Note Tree_image.png" + }, + { + "attachmentId": "m0KuVBZvGyzW", + "title": "move-note-with-keyboard.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Note Tree_move-note-with-k.gif" + } + ], + "dirFileName": "Note Tree", + "children": [ + { + "isClone": false, + "noteId": "YtSN43OrfzaA", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "oPVyFC7WL2Lp", + "YtSN43OrfzaA" + ], + "title": "Note tree contextual menu", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "yTjUdsOi4CIE", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OR8WJ7Iz9K4U", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "KC1HB96bqqHX", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bwg0e8ewQMak", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "mHbBMPDPkVV5", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "eIg8jdvaoNNd", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ivYnonVFBxbQ", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "TBwsyfadTA18", + "isInheritable": false, + "position": 100 + }, + { + "type": "relation", + "name": "internalLink", + "value": "0vhv7lsOLy82", + "isInheritable": false, + "position": 110 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 120 + }, + { + "type": "relation", + "name": "internalLink", + "value": "aGlEvb9hyDhS", + "isInheritable": false, + "position": 130 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wArbEsdSae6g", + "isInheritable": false, + "position": 140 + }, + { + "type": "relation", + "name": "internalLink", + "value": "3seOhtN8uLIY", + "isInheritable": false, + "position": 150 + }, + { + "type": "relation", + "name": "internalLink", + "value": "KSZ04uQ2D1St", + "isInheritable": false, + "position": 160 + }, + { + "type": "relation", + "name": "internalLink", + "value": "r5JGHN99bVKn", + "isInheritable": false, + "position": 170 + }, + { + "type": "relation", + "name": "internalLink", + "value": "W8vYD3Q1zjCR", + "isInheritable": false, + "position": 180 + }, + { + "type": "relation", + "name": "internalLink", + "value": "QEAPj01N5f7w", + "isInheritable": false, + "position": 190 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-menu", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Note tree contextual menu.md", + "attachments": [ + { + "attachmentId": "8DX1hysz3JRh", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Note tree contextual menu_.png" + }, + { + "attachmentId": "GQv4tBf9VSON", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Note tree contextual menu_.png" + } + ] + }, + { + "isClone": false, + "noteId": "yTjUdsOi4CIE", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "oPVyFC7WL2Lp", + "yTjUdsOi4CIE" + ], + "title": "Multiple selection", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "ivYnonVFBxbQ", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-list-plus", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Multiple selection.md", + "attachments": [ + { + "attachmentId": "puanbWdFSfUM", + "title": "image.png", + "role": "image", + "mime": "image/jpg", + "position": 10, + "dataFileName": "Multiple selection_image.png" + } + ] } ] }, @@ -1259,165 +1487,165 @@ "BlN9DFI679QC" ], "title": "Ribbon", - "notePosition": 40, + "notePosition": 50, "prefix": null, "isExpanded": false, "type": "text", "mime": "text/html", "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-dots-horizontal", - "isInheritable": false, - "position": 20 - }, { "type": "relation", "name": "internalLink", - "value": "KSZ04uQ2D1St", + "value": "4TIF1oA4VQRO", "isInheritable": false, - "position": 30 + "position": 10 }, { "type": "relation", "name": "internalLink", "value": "4FahAwuGTAwC", "isInheritable": false, - "position": 40 + "position": 20 }, { "type": "relation", "name": "internalLink", "value": "bwg0e8ewQMak", "isInheritable": false, - "position": 50 + "position": 30 }, { "type": "relation", "name": "internalLink", "value": "CoFPLs3dRlXc", "isInheritable": false, - "position": 60 + "position": 40 }, { "type": "relation", "name": "internalLink", "value": "xYmIYSP6wE3F", "isInheritable": false, - "position": 70 + "position": 50 }, { "type": "relation", "name": "internalLink", "value": "u3YFHC9tQlpm", "isInheritable": false, - "position": 80 - }, - { - "type": "relation", - "name": "internalLink", - "value": "WOcw2SLH6tbX", - "isInheritable": false, - "position": 90 + "position": 60 }, { "type": "relation", "name": "internalLink", "value": "R9pX4DGra2Vt", "isInheritable": false, - "position": 100 + "position": 70 }, { "type": "relation", "name": "internalLink", "value": "KC1HB96bqqHX", "isInheritable": false, - "position": 110 - }, - { - "type": "relation", - "name": "internalLink", - "value": "veGu4faJErEM", - "isInheritable": false, - "position": 120 - }, - { - "type": "relation", - "name": "internalLink", - "value": "nRhnJkTT8cPs", - "isInheritable": false, - "position": 130 + "position": 80 }, { "type": "relation", "name": "internalLink", "value": "zEY4DaJG4YT5", "isInheritable": false, - "position": 140 + "position": 90 }, { "type": "relation", "name": "internalLink", "value": "OFXdgB2nNk1F", "isInheritable": false, - "position": 150 + "position": 100 }, { "type": "relation", "name": "internalLink", "value": "bwZpz2ajCEwO", "isInheritable": false, - "position": 160 - }, - { - "type": "relation", - "name": "internalLink", - "value": "IakOLONlIfGI", - "isInheritable": false, - "position": 170 + "position": 110 }, { "type": "relation", "name": "internalLink", "value": "oPVyFC7WL2Lp", "isInheritable": false, - "position": 180 + "position": 120 + }, + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 130 }, { "type": "relation", "name": "internalLink", "value": "xWtq5NUHOwql", "isInheritable": false, - "position": 190 + "position": 140 }, { "type": "relation", "name": "internalLink", "value": "m1lbrzyKDaRB", "isInheritable": false, - "position": 200 + "position": 150 }, { "type": "relation", "name": "internalLink", "value": "wX4HbRucYSDD", "isInheritable": false, - "position": 210 - }, - { - "type": "relation", - "name": "internalLink", - "value": "4TIF1oA4VQRO", - "isInheritable": false, - "position": 220 + "position": 160 }, { "type": "relation", "name": "internalLink", "value": "l0tKav7yLHGF", "isInheritable": false, - "position": 230 + "position": 170 + }, + { + "type": "relation", + "name": "internalLink", + "value": "nRhnJkTT8cPs", + "isInheritable": false, + "position": 180 + }, + { + "type": "relation", + "name": "internalLink", + "value": "KSZ04uQ2D1St", + "isInheritable": false, + "position": 190 + }, + { + "type": "relation", + "name": "internalLink", + "value": "WOcw2SLH6tbX", + "isInheritable": false, + "position": 200 + }, + { + "type": "relation", + "name": "internalLink", + "value": "veGu4faJErEM", + "isInheritable": false, + "position": 210 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-dots-horizontal", + "isInheritable": false, + "position": 20 } ], "format": "markdown", @@ -1433,6 +1661,80 @@ } ] }, + { + "isClone": false, + "noteId": "3seOhtN8uLIY", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "3seOhtN8uLIY" + ], + "title": "Tabs", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "luNhaphA37EO", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "x0JgW8UqGXvq", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-dock-top", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Tabs.md", + "attachments": [ + { + "attachmentId": "b4aCeUxoyA9k", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Tabs_image.png" + }, + { + "attachmentId": "bSaBdT5sH1S7", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Tabs_image.png" + }, + { + "attachmentId": "HffqAHhqe69i", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Tabs_image.png" + } + ] + }, { "isClone": false, "noteId": "xYmIYSP6wE3F", @@ -1443,7 +1745,7 @@ "xYmIYSP6wE3F" ], "title": "Launch Bar", - "notePosition": 80, + "notePosition": 110, "prefix": null, "isExpanded": false, "type": "text", @@ -1526,34 +1828,6 @@ } ] }, - { - "isClone": false, - "noteId": "Ms1nauBra7gq", - "notePath": [ - "pOsGYCXsbNQG", - "gh7bpGYxajRS", - "Vc8PjrjAGuOp", - "Ms1nauBra7gq" - ], - "title": "Quick search", - "notePosition": 90, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-search-alt-2", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Quick search.md", - "attachments": [] - }, { "isClone": false, "noteId": "8YBEPzcpUgxw", @@ -1564,7 +1838,7 @@ "8YBEPzcpUgxw" ], "title": "Note buttons", - "notePosition": 100, + "notePosition": 130, "prefix": null, "isExpanded": false, "type": "text", @@ -1629,12 +1903,47 @@ "4TIF1oA4VQRO" ], "title": "Options", - "notePosition": 110, + "notePosition": 140, "prefix": null, "isExpanded": false, "type": "text", "mime": "text/html", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "x3i7MxGccDuM", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "3seOhtN8uLIY", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 50 + }, { "type": "label", "name": "iconClass", @@ -1645,7 +1954,324 @@ ], "format": "markdown", "dataFileName": "Options.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "FZZUANQuZlhe", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Options_image.png" + }, + { + "attachmentId": "IJPuSn5cWjTO", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Options_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "luNhaphA37EO", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "luNhaphA37EO" + ], + "title": "Split View", + "notePosition": 150, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OR8WJ7Iz9K4U", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "3seOhtN8uLIY", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-dock-right", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Split View.md", + "attachments": [ + { + "attachmentId": "9plNhrKyZaXM", + "title": "3_Split View_image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Split View_3_Split View_im.png" + }, + { + "attachmentId": "Lk0PrljxWYRp", + "title": "4_Split View_image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Split View_4_Split View_im.png" + }, + { + "attachmentId": "Lt1OZVfsht6I", + "title": "Split View_image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Split View_Split View_imag.png" + }, + { + "attachmentId": "qm9Dn3TD1w4k", + "title": "2_Split View_image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Split View_2_Split View_im.png" + }, + { + "attachmentId": "UFITv6o2d4QN", + "title": "1_Split View_image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Split View_1_Split View_im.png" + } + ] + }, + { + "isClone": false, + "noteId": "XpOYSgsLkTJy", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "XpOYSgsLkTJy" + ], + "title": "Floating buttons", + "notePosition": 160, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "CoFPLs3dRlXc", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "s1aBHPd79XYj", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "grjYqerjn243", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-rectangle", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Floating buttons.md", + "attachments": [ + { + "attachmentId": "drdKIHK5GzfU", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Floating buttons_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "RnaPdbciOfeq", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "RnaPdbciOfeq" + ], + "title": "Right Sidebar", + "notePosition": 170, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BFvAtE74rbP6", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "AxshuNRegLAv", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "luNhaphA37EO", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "3seOhtN8uLIY", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-dock-right", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Right Sidebar.md", + "attachments": [ + { + "attachmentId": "ze9MwXmOPhp0", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Right Sidebar_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "r5JGHN99bVKn", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "Vc8PjrjAGuOp", + "r5JGHN99bVKn" + ], + "title": "Recent Changes", + "notePosition": 180, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OR8WJ7Iz9K4U", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "YtSN43OrfzaA", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-history", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Recent Changes.md", + "attachments": [ + { + "attachmentId": "3HsqEVy53S2H", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Recent Changes_image.png" + }, + { + "attachmentId": "dxoiP89lrRn6", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Recent Changes_image.png" + } + ] } ] }, @@ -1674,14 +2300,14 @@ { "type": "relation", "name": "internalLink", - "value": "6f9hih2hXXZk", + "value": "grjYqerjn243", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "s1aBHPd79XYj", "isInheritable": false, "position": 30 }, @@ -1695,14 +2321,14 @@ { "type": "relation", "name": "internalLink", - "value": "iRwzGnHPzonm", + "value": "HcABDtFCkbFN", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "GTwFsgaA0lCt", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 60 }, @@ -1716,17 +2342,24 @@ { "type": "relation", "name": "internalLink", - "value": "ODY7qQn5m2FT", + "value": "r5JGHN99bVKn", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "CoFPLs3dRlXc", + "value": "ODY7qQn5m2FT", "isInheritable": false, "position": 90 }, + { + "type": "relation", + "name": "internalLink", + "value": "CoFPLs3dRlXc", + "isInheritable": false, + "position": 100 + }, { "type": "label", "name": "shareAlias", @@ -1763,20 +2396,6 @@ "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "iuAfnapzpRCB", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "R1L2vUshJD82", - "isInheritable": false, - "position": 20 - }, { "type": "label", "name": "shareAlias", @@ -1794,7 +2413,24 @@ ], "format": "markdown", "dataFileName": "Note Icons.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "6tSmLB1aFql6", + "title": "note-icon-gallery.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Note Icons_note-icon-galle.png" + }, + { + "attachmentId": "QBMBQvrXn6G5", + "title": "note-icon-change.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Note Icons_note-icon-chang.png" + } + ] }, { "isClone": false, @@ -1833,6 +2469,27 @@ "isInheritable": false, "position": 30 }, + { + "type": "relation", + "name": "internalLink", + "value": "W8vYD3Q1zjCR", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "8YBEPzcpUgxw", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 60 + }, { "type": "label", "name": "shareAlias", @@ -1868,19 +2525,12 @@ "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "BqvIJUHkWrvH", - "isInheritable": false, - "position": 10 - }, { "type": "relation", "name": "internalLink", "value": "A9Oc6YKKc65v", "isInheritable": false, - "position": 20 + "position": 10 }, { "type": "label", @@ -1899,7 +2549,62 @@ ], "format": "markdown", "dataFileName": "Cloning Notes.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "3n837NZNUg0t", + "title": "create-clone.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Cloning Notes_create-clone.gif" + } + ], + "dirFileName": "Cloning Notes", + "children": [ + { + "isClone": false, + "noteId": "TBwsyfadTA18", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "IakOLONlIfGI", + "TBwsyfadTA18" + ], + "title": "Branch prefix", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "IakOLONlIfGI", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-rename", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Branch prefix.md", + "attachments": [] + } + ] }, { "isClone": false, @@ -1919,24 +2624,17 @@ "attributes": [ { "type": "relation", - "name": "imageLink", - "value": "zaUtPWl8NcCt", + "name": "internalLink", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 10 }, - { - "type": "relation", - "name": "internalLink", - "value": "wX4HbRucYSDD", - "isInheritable": false, - "position": 20 - }, { "type": "relation", "name": "internalLink", "value": "zEY4DaJG4YT5", "isInheritable": false, - "position": 30 + "position": 20 }, { "type": "label", @@ -1955,7 +2653,16 @@ ], "format": "markdown", "dataFileName": "Protected Notes.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "NISgqIUKwaxr", + "title": "protecting-note.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Protected Notes_protecting.gif" + } + ] }, { "isClone": false, @@ -1975,31 +2682,24 @@ "attributes": [ { "type": "relation", - "name": "imageLink", - "value": "1fkGrskxHx5u", + "name": "internalLink", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "bwZpz2ajCEwO", "isInheritable": false, "position": 20 }, - { - "type": "relation", - "name": "internalLink", - "value": "bwZpz2ajCEwO", - "isInheritable": false, - "position": 30 - }, { "type": "relation", "name": "internalLink", "value": "eIg8jdvaoNNd", "isInheritable": false, - "position": 40 + "position": 30 }, { "type": "label", @@ -2018,7 +2718,16 @@ ], "format": "markdown", "dataFileName": "Archived Notes.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "ke9mcD9x5Jg4", + "title": "hide-archived.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Archived Notes_hide-archiv.png" + } + ] }, { "isClone": false, @@ -2036,19 +2745,12 @@ "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "MA2uvkVloWXl", - "isInheritable": false, - "position": 10 - }, { "type": "relation", "name": "internalLink", "value": "zEY4DaJG4YT5", "isInheritable": false, - "position": 20 + "position": 10 }, { "type": "label", @@ -2067,7 +2769,16 @@ ], "format": "markdown", "dataFileName": "Note Revisions.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "1TA1nUFZzprY", + "title": "note-revisions.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Note Revisions_note-revisi.png" + } + ] }, { "isClone": false, @@ -2092,6 +2803,13 @@ "isInheritable": false, "position": 10 }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 20 + }, { "type": "label", "name": "shareAlias", @@ -2127,6 +2845,27 @@ "type": "text", "mime": "text/html", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wy8So3yZZlH9", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "4TIF1oA4VQRO", + "isInheritable": false, + "position": 30 + }, { "type": "label", "name": "iconClass", @@ -2193,6 +2932,34 @@ "isInheritable": false, "position": 30 }, + { + "type": "relation", + "name": "internalLink", + "value": "4TIF1oA4VQRO", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "XpOYSgsLkTJy", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "s1aBHPd79XYj", + "isInheritable": false, + "position": 70 + }, { "type": "label", "name": "shareAlias", @@ -2210,7 +2977,247 @@ ], "format": "markdown", "dataFileName": "Read-Only Notes.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "dUmc6vYfoQgZ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Read-Only Notes_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "0ESUbbAxVnoK", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "0ESUbbAxVnoK" + ], + "title": "Note List", + "notePosition": 140, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GTwFsgaA0lCt", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "W8vYD3Q1zjCR", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xWbu3jpNWapp", + "isInheritable": false, + "position": 70 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-grid", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Note List.md", + "attachments": [ + { + "attachmentId": "1SA0UPq471jp", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Note List_image.png" + }, + { + "attachmentId": "2xoejxffj82c", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Note List_image.png" + }, + { + "attachmentId": "mppVaDhlClF7", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Note List_image.png" + } + ], + "dirFileName": "Note List", + "children": [ + { + "isClone": false, + "noteId": "xWbu3jpNWapp", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "BFs8mudNFgCS", + "0ESUbbAxVnoK", + "xWbu3jpNWapp" + ], + "title": "Calendar View", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-calendar", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Calendar View.md", + "attachments": [ + { + "attachmentId": "37CfbqKYcOtd", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Calendar View_image.png" + }, + { + "attachmentId": "akAHcIEcGnWR", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Calendar View_image.png" + }, + { + "attachmentId": "AU7dnIevWPrz", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Calendar View_image.png" + }, + { + "attachmentId": "COiR1tnE86i1", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_Calendar View_image.png" + }, + { + "attachmentId": "fOdCNTs2BuI0", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_Calendar View_image.png" + }, + { + "attachmentId": "HfBu0m3WXtn2", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_Calendar View_image.png" + }, + { + "attachmentId": "ho00OJTNrxVI", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "6_Calendar View_image.png" + }, + { + "attachmentId": "irfNX8n4159U", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "7_Calendar View_image.png" + }, + { + "attachmentId": "KF56rdNuOwWd", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "8_Calendar View_image.png" + }, + { + "attachmentId": "oBWr5GL6cUAZ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "9_Calendar View_image.png" + }, + { + "attachmentId": "oS6yUoQtfhpg", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "10_Calendar View_image.png" + }, + { + "attachmentId": "u2c09UpZghff", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "11_Calendar View_image.png" + } + ] + } + ] } ] }, @@ -2308,18 +3315,11 @@ "attributes": [ { "type": "relation", - "name": "imageLink", - "value": "snfWRIih71MM", + "name": "internalLink", + "value": "F1r9QtzQLZqm", "isInheritable": false, "position": 10 }, - { - "type": "relation", - "name": "imageLink", - "value": "wpFu8PhUu7e7", - "isInheritable": false, - "position": 20 - }, { "type": "label", "name": "shareAlias", @@ -2348,6 +3348,138 @@ } ] }, + { + "isClone": false, + "noteId": "Ms1nauBra7gq", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "Ms1nauBra7gq" + ], + "title": "Quick search", + "notePosition": 40, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "F1r9QtzQLZqm", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "eIg8jdvaoNNd", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "x0JgW8UqGXvq", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-search-alt-2", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Quick search.md", + "attachments": [ + { + "attachmentId": "H0XlRahnnWbd", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Quick search_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "F1r9QtzQLZqm", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "F1r9QtzQLZqm" + ], + "title": "Jump to Note", + "notePosition": 50, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-send", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Jump to Note.md", + "attachments": [ + { + "attachmentId": "P9veX5eFZdPp", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Jump to Note_image.png" + }, + { + "attachmentId": "xA1F6kynr4YU", + "title": "recent-notes.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Jump to Note_recent-notes.gif" + }, + { + "attachmentId": "y8yxomaf1Gkz", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Jump to Note_image.png" + } + ] + }, { "isClone": false, "noteId": "eIg8jdvaoNNd", @@ -2358,7 +3490,7 @@ "eIg8jdvaoNNd" ], "title": "Search", - "notePosition": 40, + "notePosition": 60, "prefix": null, "isExpanded": false, "type": "text", @@ -2378,6 +3510,83 @@ "isInheritable": false, "position": 20 }, + { + "type": "relation", + "name": "internalLink", + "value": "OR8WJ7Iz9K4U", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ivYnonVFBxbQ", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "YtSN43OrfzaA", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "m523cpzocqaD", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 100 + }, + { + "type": "relation", + "name": "internalLink", + "value": "MKmLg5x6xkor", + "isInheritable": false, + "position": 110 + }, + { + "type": "relation", + "name": "internalLink", + "value": "qzNzp9LYQyPT", + "isInheritable": false, + "position": 120 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 130 + }, { "type": "label", "name": "shareAlias", @@ -2395,7 +3604,16 @@ ], "format": "markdown", "dataFileName": "Search.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "WkhcA4FN7sGX", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Search_image.png" + } + ] }, { "isClone": false, @@ -2407,26 +3625,12 @@ "u3YFHC9tQlpm" ], "title": "Bookmarks", - "notePosition": 50, + "notePosition": 70, "prefix": null, "isExpanded": false, "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "sag6ww9q4pgW", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "HEtnpiQrEvjl", - "isInheritable": false, - "position": 20 - }, { "type": "label", "name": "shareAlias", @@ -2444,7 +3648,24 @@ ], "format": "markdown", "dataFileName": "Bookmarks.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "99dD0P74W8QJ", + "title": "bookmark-folder.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Bookmarks_bookmark-folder.png" + }, + { + "attachmentId": "9dX71aLlSl9R", + "title": "bookmarks.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Bookmarks_bookmarks.gif" + } + ] }, { "isClone": false, @@ -2456,7 +3677,7 @@ "OR8WJ7Iz9K4U" ], "title": "Note Hoisting", - "notePosition": 60, + "notePosition": 80, "prefix": null, "isExpanded": false, "type": "text", @@ -2464,24 +3685,17 @@ "attributes": [ { "type": "relation", - "name": "imageLink", - "value": "AiBOf1LIykMC", + "name": "internalLink", + "value": "MMiBEQljMQh2", "isInheritable": false, "position": 10 }, - { - "type": "relation", - "name": "internalLink", - "value": "MMiBEQljMQh2", - "isInheritable": false, - "position": 20 - }, { "type": "relation", "name": "internalLink", "value": "9sRHySam5fXb", "isInheritable": false, - "position": 30 + "position": 20 }, { "type": "label", @@ -2500,7 +3714,16 @@ ], "format": "markdown", "dataFileName": "Note Hoisting.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "wGJxetzAtPe0", + "title": "note-hoisting.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Note Hoisting_note-hoistin.gif" + } + ] }, { "isClone": false, @@ -2511,8 +3734,8 @@ "wArbEsdSae6g", "9sRHySam5fXb" ], - "title": "Workspace", - "notePosition": 70, + "title": "Workspaces", + "notePosition": 90, "prefix": null, "isExpanded": false, "type": "text", @@ -2525,6 +3748,13 @@ "isInheritable": false, "position": 10 }, + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 20 + }, { "type": "label", "name": "shareAlias", @@ -2541,7 +3771,7 @@ } ], "format": "markdown", - "dataFileName": "Workspace.md", + "dataFileName": "Workspaces.md", "attachments": [ { "attachmentId": "V4TIsmtBh8P7", @@ -2549,7 +3779,7 @@ "role": "image", "mime": "image/jpg", "position": 10, - "dataFileName": "Workspace_image.png" + "dataFileName": "Workspaces_image.png" }, { "attachmentId": "vZSH2mOKzWBx", @@ -2557,7 +3787,7 @@ "role": "image", "mime": "image/jpg", "position": 10, - "dataFileName": "1_Workspace_image.png" + "dataFileName": "1_Workspaces_image.png" } ] }, @@ -2571,12 +3801,19 @@ "xWtq5NUHOwql" ], "title": "Similar Notes", - "notePosition": 80, + "notePosition": 100, "prefix": null, "isExpanded": false, "type": "text", "mime": "text/html", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 10 + }, { "type": "label", "name": "iconClass", @@ -2587,7 +3824,81 @@ ], "format": "markdown", "dataFileName": "Similar Notes.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "0JOeCYHahqJS", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Similar Notes_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "McngOG2jbUWX", + "notePath": [ + "pOsGYCXsbNQG", + "gh7bpGYxajRS", + "wArbEsdSae6g", + "McngOG2jbUWX" + ], + "title": "Search in note", + "notePosition": 110, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "MI26XDLSAlCD", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "8YBEPzcpUgxw", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-search-alt-2", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Search in note.md", + "attachments": [ + { + "attachmentId": "vEq0g2DHEh3O", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Search in note_image.png" + } + ] } ] }, @@ -2689,40 +4000,26 @@ "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "zaQnUsJTbvjr", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "uVF9DAmAmEWC", - "isInheritable": false, - "position": 20 - }, { "type": "relation", "name": "internalLink", "value": "6f9hih2hXXZk", "isInheritable": false, - "position": 30 + "position": 10 }, { "type": "relation", "name": "internalLink", "value": "zEY4DaJG4YT5", "isInheritable": false, - "position": 40 + "position": 20 }, { "type": "relation", "name": "internalLink", "value": "VbjZvtUek0Ln", "isInheritable": false, - "position": 50 + "position": 30 }, { "type": "label", @@ -2742,6 +4039,22 @@ "format": "markdown", "dataFileName": "Themes.md", "attachments": [ + { + "attachmentId": "0IuNvWkls2sX", + "title": "dark-theme.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Themes_dark-theme.png" + }, + { + "attachmentId": "HvcI7pb2pZJQ", + "title": "steel-blue.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Themes_steel-blue.png" + }, { "attachmentId": "rwK3vuBgh7sY", "title": "image.png", @@ -2835,32 +4148,11 @@ "attributes": [ { "type": "relation", - "name": "imageLink", - "value": "Y9mwMwSGAaSb", + "name": "internalLink", + "value": "NwBbFdNZ9h7O", "isInheritable": false, "position": 10 }, - { - "type": "relation", - "name": "imageLink", - "value": "xMQSqWySvWBZ", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "imageLink", - "value": "QUqKzK4LHMVA", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "imageLink", - "value": "e3qPZSsTbUZP", - "isInheritable": false, - "position": 40 - }, { "type": "label", "name": "shareAlias", @@ -2878,7 +4170,40 @@ ], "format": "markdown", "dataFileName": "Markdown.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "eF5PfSUArlEl", + "title": "markdown-file-import.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Markdown_markdown-file-imp.gif" + }, + { + "attachmentId": "lHeoBedkdNGi", + "title": "markdown-export-subtree.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Markdown_markdown-export-s.gif" + }, + { + "attachmentId": "p8I5seD7NUiV", + "title": "markdown-export-note.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Markdown_markdown-export-n.gif" + }, + { + "attachmentId": "tWIrcy00loZK", + "title": "markdown-inline-import.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Markdown_markdown-inline-i.gif" + } + ] }, { "isClone": false, @@ -3164,6 +4489,132 @@ "type": "text", "mime": "text/html", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "QEAPj01N5f7w", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "4FahAwuGTAwC", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "m523cpzocqaD", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iRwzGnHPzonm", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bdUJEHsAPYQR", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "HcABDtFCkbFN", + "isInheritable": false, + "position": 100 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 110 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GTwFsgaA0lCt", + "isInheritable": false, + "position": 120 + }, + { + "type": "relation", + "name": "internalLink", + "value": "s1aBHPd79XYj", + "isInheritable": false, + "position": 130 + }, + { + "type": "relation", + "name": "internalLink", + "value": "grjYqerjn243", + "isInheritable": false, + "position": 140 + }, + { + "type": "relation", + "name": "internalLink", + "value": "1vHRoWCEjj0L", + "isInheritable": false, + "position": 150 + }, + { + "type": "relation", + "name": "internalLink", + "value": "gBbsAeiuUxI5", + "isInheritable": false, + "position": 160 + }, + { + "type": "relation", + "name": "internalLink", + "value": "81SGnPGMk7Xc", + "isInheritable": false, + "position": 170 + }, + { + "type": "relation", + "name": "internalLink", + "value": "W8vYD3Q1zjCR", + "isInheritable": false, + "position": 180 + }, { "type": "label", "name": "iconClass", @@ -3173,7 +4624,17 @@ } ], "format": "markdown", - "attachments": [], + "dataFileName": "Note Types.md", + "attachments": [ + { + "attachmentId": "CRt4gLIroyZ9", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Note Types_image.png" + } + ], "dirFileName": "Note Types", "children": [ { @@ -3191,54 +4652,33 @@ "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "FtmPLgGmgZVC", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "oRWfJLUbb7j7", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 30 - }, { "type": "relation", "name": "internalLink", "value": "CoFPLs3dRlXc", "isInheritable": false, - "position": 40 + "position": 10 }, { "type": "relation", "name": "internalLink", "value": "S6Xx8QIWTV66", "isInheritable": false, - "position": 50 + "position": 20 }, { "type": "relation", "name": "internalLink", "value": "QxEyIjRBizuC", "isInheritable": false, - "position": 60 + "position": 30 }, { "type": "relation", "name": "internalLink", "value": "UYuUB1ZekNQU", "isInheritable": false, - "position": 70 + "position": 40 }, { "type": "label", @@ -3272,6 +4712,22 @@ "format": "markdown", "dataFileName": "Text.md", "attachments": [ + { + "attachmentId": "9OteFf78TKbK", + "title": "math.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Text_math.gif" + }, + { + "attachmentId": "iC7LrVe7NOvH", + "title": "text-notes-formatting-block.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Text_text-notes-formatting.png" + }, { "attachmentId": "lHWL7KkEhmM3", "title": "image.png", @@ -3281,12 +4737,12 @@ "dataFileName": "Text_image.png" }, { - "attachmentId": "yGknq3nsWpef", - "title": "bx-edit-alt.svg", + "attachmentId": "NYg91yVPC7cz", + "title": "text-notes-formatting-inline.png", "role": "image", - "mime": "image/svg+xml", + "mime": "image/png", "position": 10, - "dataFileName": "Text_bx-edit-alt.svg" + "dataFileName": "1_Text_text-notes-formatting.png" } ], "dirFileName": "Text", @@ -3373,6 +4829,43 @@ } ] }, + { + "isClone": false, + "noteId": "2x0ZAX9ePtzV", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "2x0ZAX9ePtzV" + ], + "title": "Cut to subnote", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-cut", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Cut to subnote.md", + "attachments": [ + { + "attachmentId": "eFVU3SiVi9Bi", + "title": "cut-to-subnote.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Cut to subnote_cut-to-subn.gif" + } + ] + }, { "isClone": false, "noteId": "UYuUB1ZekNQU", @@ -3383,7 +4876,7 @@ "UYuUB1ZekNQU" ], "title": "Developer-specific formatting", - "notePosition": 30, + "notePosition": 40, "prefix": null, "isExpanded": false, "type": "text", @@ -3573,7 +5066,7 @@ "nRhnJkTT8cPs" ], "title": "Formatting toolbar", - "notePosition": 40, + "notePosition": 50, "prefix": null, "isExpanded": false, "type": "text", @@ -3638,6 +5131,71 @@ } ] }, + { + "isClone": false, + "noteId": "AxshuNRegLAv", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "AxshuNRegLAv" + ], + "title": "Highlights list", + "notePosition": 60, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "RnaPdbciOfeq", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "XpOYSgsLkTJy", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BFvAtE74rbP6", + "isInheritable": false, + "position": 40 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-highlight", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Highlights list.md", + "attachments": [ + { + "attachmentId": "lDcgRFQO5hDE", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Highlights list_image.png" + } + ] + }, { "isClone": false, "noteId": "mT0HEkOsz6i1", @@ -3648,7 +5206,7 @@ "mT0HEkOsz6i1" ], "title": "Images", - "notePosition": 50, + "notePosition": 70, "prefix": null, "isExpanded": false, "type": "text", @@ -3774,6 +5332,134 @@ "position": 10, "dataFileName": "10_Images_image.png" } + ], + "dirFileName": "Images", + "children": [ + { + "isClone": false, + "noteId": "0Ofbk1aSuVRu", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "mT0HEkOsz6i1", + "0Ofbk1aSuVRu" + ], + "title": "Image references", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "grjYqerjn243", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "s1aBHPd79XYj", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "gBbsAeiuUxI5", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "XpOYSgsLkTJy", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "s8alTXmpFR61", + "isInheritable": false, + "position": 60 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-file-image", + "isInheritable": false, + "position": 80 + } + ], + "format": "markdown", + "dataFileName": "Image references.md", + "attachments": [ + { + "attachmentId": "6OgYPJ60Uz76", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Image references_image.png" + }, + { + "attachmentId": "72VNSgANtMVT", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Image references_image.png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "nBAXQFj20hS1", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "nBAXQFj20hS1" + ], + "title": "Include Note", + "notePosition": 80, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "nRhnJkTT8cPs", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Include Note.md", + "attachments": [ + { + "attachmentId": "GoLuBbQUYIQE", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Include Note_image.png" + } ] }, { @@ -3786,32 +5472,18 @@ "QEAPj01N5f7w" ], "title": "Links", - "notePosition": 60, + "notePosition": 90, "prefix": null, "isExpanded": false, "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "N6O1qfBGcbFH", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "dPcRcDZwyGAO", - "isInheritable": false, - "position": 20 - }, { "type": "relation", "name": "internalLink", "value": "BCkXAVs63Ttv", "isInheritable": false, - "position": 30 + "position": 10 }, { "type": "label", @@ -3830,7 +5502,24 @@ ], "format": "markdown", "dataFileName": "Links.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "74XnfiCk2y9N", + "title": "create-link-to-note.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Links_create-link-to-note.gif" + }, + { + "attachmentId": "TGdayl3Caj0R", + "title": "create-external-link.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Links_create-external-link.gif" + } + ] }, { "isClone": false, @@ -3842,7 +5531,7 @@ "S6Xx8QIWTV66" ], "title": "Lists", - "notePosition": 70, + "notePosition": 100, "prefix": null, "isExpanded": false, "type": "text", @@ -3908,6 +5597,64 @@ "dataFileName": "5_Lists_image.png" } ] + }, + { + "isClone": false, + "noteId": "BFvAtE74rbP6", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "iPIMuisry3hd", + "BFvAtE74rbP6" + ], + "title": "Table of contents", + "notePosition": 110, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "RnaPdbciOfeq", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "XpOYSgsLkTJy", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-heading", + "isInheritable": false, + "position": 30 + } + ], + "format": "markdown", + "dataFileName": "Table of contents.md", + "attachments": [ + { + "attachmentId": "DL6PJX71Fk3S", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Table of contents_image.png" + } + ] } ] }, @@ -3929,35 +5676,35 @@ { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "iPIMuisry3hd", + "value": "4TIF1oA4VQRO", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "QxEyIjRBizuC", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "BlN9DFI679QC", + "value": "iPIMuisry3hd", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "4TIF1oA4VQRO", + "value": "QxEyIjRBizuC", "isInheritable": false, "position": 50 }, @@ -4002,198 +5749,6 @@ "position": 10, "dataFileName": "1_Code_image.png" } - ], - "dirFileName": "Code", - "children": [ - { - "isClone": false, - "noteId": "CdNpE2pqjmI6", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "CdNpE2pqjmI6" - ], - "title": "Scripts", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "DVJl4l3T8EG2", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "6f9hih2hXXZk", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GLks18SNjxmC", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "wX4HbRucYSDD", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "RDslemsQ6gCp", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "5668rwcirq1t", - "isInheritable": false, - "position": 70 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GPERMystNGTB", - "isInheritable": false, - "position": 80 - }, - { - "type": "label", - "name": "shareAlias", - "value": "scripts", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Scripts.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "GLks18SNjxmC", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "GLks18SNjxmC" - ], - "title": "Script API", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "label", - "name": "shareAlias", - "value": "script-api", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Script API.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "GPERMystNGTB", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "GPERMystNGTB" - ], - "title": "Events", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "CdNpE2pqjmI6", - "isInheritable": false, - "position": 20 - }, - { - "type": "label", - "name": "shareAlias", - "value": "events", - "isInheritable": false, - "position": 30 - } - ], - "format": "markdown", - "dataFileName": "Events.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "MgibgPcfeuGz", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "6f9hih2hXXZk", - "MgibgPcfeuGz" - ], - "title": "Custom Widgets", - "notePosition": 50, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "3sCPPL0LEC1S", - "isInheritable": false, - "position": 10 - }, - { - "type": "label", - "name": "shareAlias", - "value": "custom-widget", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Custom Widgets.md", - "attachments": [] - } ] }, { @@ -4211,19 +5766,12 @@ "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "rVtYANyVhE9U", - "isInheritable": false, - "position": 10 - }, { "type": "relation", "name": "internalLink", "value": "9sRHySam5fXb", "isInheritable": false, - "position": 20 + "position": 10 }, { "type": "label", @@ -4242,7 +5790,16 @@ ], "format": "markdown", "dataFileName": "Saved Search.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "FHgW8mO3DAPR", + "title": "saved-search.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Saved Search_saved-search.gif" + } + ] }, { "isClone": false, @@ -4259,61 +5816,40 @@ "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "EH6qNioOHeyT", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "xeZPrfi77XPu", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "imageLink", - "value": "N98UhifxrVpZ", - "isInheritable": false, - "position": 30 - }, { "type": "relation", "name": "internalLink", "value": "BFs8mudNFgCS", "isInheritable": false, - "position": 40 + "position": 10 }, { "type": "relation", "name": "internalLink", "value": "zEY4DaJG4YT5", "isInheritable": false, - "position": 50 + "position": 20 }, { "type": "relation", "name": "internalLink", "value": "OFXdgB2nNk1F", "isInheritable": false, - "position": 60 + "position": 30 }, { "type": "relation", "name": "internalLink", "value": "wX4HbRucYSDD", "isInheritable": false, - "position": 70 + "position": 40 }, { "type": "relation", "name": "internalLink", "value": "BCkXAVs63Ttv", "isInheritable": false, - "position": 80 + "position": 50 }, { "type": "label", @@ -4333,13 +5869,37 @@ "format": "markdown", "dataFileName": "Relation Map.md", "attachments": [ + { + "attachmentId": "14cTNGCN2eRq", + "title": "relation-map-family-demo.gif", + "role": "image", + "mime": "image/gif", + "position": 10, + "dataFileName": "Relation Map_relation-map-.gif" + }, + { + "attachmentId": "OfRWMQ0nY400", + "title": "relation-map-family.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Relation Map_relation-map-.png" + }, + { + "attachmentId": "VdiG1uzPjw3q", + "title": "relation-map-dev-process.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Relation Map_relation-map-.png" + }, { "attachmentId": "x92CIQzusTuc", "title": "relation-map-dev-process-demo.gif", "role": "image", "mime": "image/gif", "position": 10, - "dataFileName": "Relation Map_relation-map-.gif" + "dataFileName": "1_Relation Map_relation-map-.gif" } ] }, @@ -4401,6 +5961,48 @@ "type": "text", "mime": "text/html", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "HcABDtFCkbFN", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R7abl2fc6Mxi", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6tZeKvSHEUiB", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 60 + }, { "type": "label", "name": "iconClass", @@ -4411,7 +6013,16 @@ ], "format": "markdown", "dataFileName": "Render Note.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "SeTpR7xEDMvQ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Render Note_image.png" + } + ] }, { "isClone": false, @@ -4435,6 +6046,20 @@ "isInheritable": false, "position": 10 }, + { + "type": "relation", + "name": "internalLink", + "value": "0ESUbbAxVnoK", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 30 + }, { "type": "label", "name": "shareAlias", @@ -4453,149 +6078,13 @@ "format": "markdown", "dataFileName": "Book.md", "attachments": [ - { - "attachmentId": "BmpgL4ol4jJo", - "title": "image.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Book_image.png" - }, { "attachmentId": "lpq3QC1C5LWg", "title": "image.png", "role": "image", "mime": "image/jpg", "position": 10, - "dataFileName": "1_Book_image.png" - } - ], - "dirFileName": "Book", - "children": [ - { - "isClone": false, - "noteId": "xWbu3jpNWapp", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "GTwFsgaA0lCt", - "xWbu3jpNWapp" - ], - "title": "Calendar View", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bx-calendar", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "dataFileName": "Calendar View.md", - "attachments": [ - { - "attachmentId": "37CfbqKYcOtd", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Calendar View_image.png" - }, - { - "attachmentId": "akAHcIEcGnWR", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "1_Calendar View_image.png" - }, - { - "attachmentId": "AU7dnIevWPrz", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Calendar View_image.png" - }, - { - "attachmentId": "COiR1tnE86i1", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "3_Calendar View_image.png" - }, - { - "attachmentId": "fOdCNTs2BuI0", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "4_Calendar View_image.png" - }, - { - "attachmentId": "HfBu0m3WXtn2", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "5_Calendar View_image.png" - }, - { - "attachmentId": "ho00OJTNrxVI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "6_Calendar View_image.png" - }, - { - "attachmentId": "irfNX8n4159U", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "7_Calendar View_image.png" - }, - { - "attachmentId": "KF56rdNuOwWd", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "8_Calendar View_image.png" - }, - { - "attachmentId": "oBWr5GL6cUAZ", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "9_Calendar View_image.png" - }, - { - "attachmentId": "oS6yUoQtfhpg", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "10_Calendar View_image.png" - }, - { - "attachmentId": "u2c09UpZghff", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "11_Calendar View_image.png" - } - ] + "dataFileName": "Book_image.png" } ] }, @@ -4616,15 +6105,15 @@ "attributes": [ { "type": "relation", - "name": "imageLink", - "value": "r44dpvA1xFu8", + "name": "internalLink", + "value": "XpOYSgsLkTJy", "isInheritable": false, "position": 10 }, { "type": "relation", - "name": "imageLink", - "value": "opAFABmyb3CU", + "name": "internalLink", + "value": "0Ofbk1aSuVRu", "isInheritable": false, "position": 20 }, @@ -4645,62 +6134,76 @@ ], "format": "markdown", "dataFileName": "Mermaid Diagrams.md", - "attachments": [], + "attachments": [ + { + "attachmentId": "EN4DhmgiSH6t", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Mermaid Diagrams_image.png" + }, + { + "attachmentId": "if9nzuWHt5KP", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_Mermaid Diagrams_image.png" + }, + { + "attachmentId": "TpPwoCFIePXm", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_Mermaid Diagrams_image.png" + } + ], "dirFileName": "Mermaid Diagrams", "children": [ { "isClone": false, - "noteId": "opAFABmyb3CU", + "noteId": "RH6yLjjWJHof", "notePath": [ "pOsGYCXsbNQG", "KSZ04uQ2D1St", "s1aBHPd79XYj", - "opAFABmyb3CU" + "RH6yLjjWJHof" ], - "title": "ELK on", - "notePosition": 10, + "title": "ELK layout", + "notePosition": 30, "prefix": null, "isExpanded": false, - "type": "mermaid", - "mime": "text/plain", - "attributes": [], - "dataFileName": "ELK on.txt", - "attachments": [ + "type": "text", + "mime": "text/html", + "attributes": [ { - "attachmentId": "biyznKlYQ7my", - "title": "mermaid-export.svg", - "role": "image", - "mime": "image/svg+xml", - "position": 10, - "dataFileName": "ELK on_mermaid-export.svg" + "type": "label", + "name": "iconClass", + "value": "bx bxs-network-chart", + "isInheritable": false, + "position": 10 } - ] - }, - { - "isClone": false, - "noteId": "r44dpvA1xFu8", - "notePath": [ - "pOsGYCXsbNQG", - "KSZ04uQ2D1St", - "s1aBHPd79XYj", - "r44dpvA1xFu8" ], - "title": "ELK off", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "mermaid", - "mime": "text/plain", - "attributes": [], - "dataFileName": "ELK off.txt", + "format": "markdown", + "dataFileName": "ELK layout.md", "attachments": [ { - "attachmentId": "rQI7SXljnpJM", - "title": "mermaid-export.svg", + "attachmentId": "DOY5C5S4vCs7", + "title": "ELK off.svg", "role": "image", "mime": "image/svg+xml", "position": 10, - "dataFileName": "ELK off_mermaid-export.svg" + "dataFileName": "ELK layout_ELK off.svg" + }, + { + "attachmentId": "E1ysxcfkmGBZ", + "title": "ELK on.svg", + "role": "image", + "mime": "image/svg+xml", + "position": 10, + "dataFileName": "ELK layout_ELK on.svg" } ] } @@ -4715,7 +6218,7 @@ "grjYqerjn243" ], "title": "Canvas", - "notePosition": 160, + "notePosition": 170, "prefix": null, "isExpanded": false, "type": "text", @@ -4751,12 +6254,19 @@ "1vHRoWCEjj0L" ], "title": "Web View", - "notePosition": 170, + "notePosition": 180, "prefix": null, "isExpanded": false, "type": "text", "mime": "text/html", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, { "type": "label", "name": "iconClass", @@ -4778,12 +6288,26 @@ "gBbsAeiuUxI5" ], "title": "Mind Map", - "notePosition": 180, + "notePosition": 190, "prefix": null, "isExpanded": false, "type": "text", "mime": "text/html", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "XpOYSgsLkTJy", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "0Ofbk1aSuVRu", + "isInheritable": false, + "position": 20 + }, { "type": "label", "name": "iconClass", @@ -4794,7 +6318,16 @@ ], "format": "markdown", "dataFileName": "Mind Map.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "Od9jIuQHijXH", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Mind Map_image.png" + } + ] }, { "isClone": false, @@ -4804,13 +6337,20 @@ "KSZ04uQ2D1St", "81SGnPGMk7Xc" ], - "title": "Geo map", - "notePosition": 190, + "title": "Geo Map", + "notePosition": 200, "prefix": null, "isExpanded": false, "type": "text", "mime": "text/html", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "XpOYSgsLkTJy", + "isInheritable": false, + "position": 10 + }, { "type": "label", "name": "iconClass", @@ -4820,7 +6360,7 @@ } ], "format": "markdown", - "dataFileName": "Geo map.md", + "dataFileName": "Geo Map.md", "attachments": [ { "attachmentId": "1f07O0Z25ZRr", @@ -4828,7 +6368,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "Geo map_image.png" + "dataFileName": "Geo Map_image.png" }, { "attachmentId": "3oh61qhNLu7D", @@ -4836,15 +6376,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "1_Geo map_image.png" - }, - { - "attachmentId": "6wUkw5RWE39e", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "2_Geo map_image.png" + "dataFileName": "1_Geo Map_image.png" }, { "attachmentId": "aCSNn9QlgHFi", @@ -4852,7 +6384,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "3_Geo map_image.png" + "dataFileName": "2_Geo Map_image.png" }, { "attachmentId": "aCuXZY7WV4li", @@ -4860,7 +6392,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "4_Geo map_image.png" + "dataFileName": "3_Geo Map_image.png" }, { "attachmentId": "agH6yREFgsoU", @@ -4868,7 +6400,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "5_Geo map_image.png" + "dataFileName": "4_Geo Map_image.png" }, { "attachmentId": "AHyDUM6R5HeG", @@ -4876,7 +6408,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "6_Geo map_image.png" + "dataFileName": "5_Geo Map_image.png" }, { "attachmentId": "CcjWLhE3KKfv", @@ -4884,7 +6416,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "7_Geo map_image.png" + "dataFileName": "6_Geo Map_image.png" }, { "attachmentId": "DapDey8gMiFc", @@ -4892,7 +6424,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "8_Geo map_image.png" + "dataFileName": "7_Geo Map_image.png" }, { "attachmentId": "fQy8R1vxKhwN", @@ -4900,7 +6432,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "9_Geo map_image.png" + "dataFileName": "8_Geo Map_image.png" }, { "attachmentId": "gJ4Yz80jxcbn", @@ -4908,7 +6440,15 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "10_Geo map_image.png" + "dataFileName": "9_Geo Map_image.png" + }, + { + "attachmentId": "I39BinT2gsN9", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "10_Geo Map_image.png" }, { "attachmentId": "IeXU8SLZU7Oz", @@ -4916,7 +6456,15 @@ "role": "image", "mime": "image/jpg", "position": 10, - "dataFileName": "Geo map_image.jpg" + "dataFileName": "Geo Map_image.jpg" + }, + { + "attachmentId": "Mb9kRm63MxjE", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "11_Geo Map_image.png" }, { "attachmentId": "Mx2xwNIk76ZS", @@ -4924,7 +6472,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "11_Geo map_image.png" + "dataFileName": "12_Geo Map_image.png" }, { "attachmentId": "oaahbsMRbqd2", @@ -4932,7 +6480,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "12_Geo map_image.png" + "dataFileName": "13_Geo Map_image.png" }, { "attachmentId": "pGf1p74KKGU4", @@ -4940,7 +6488,7 @@ "role": "image", "mime": "image/jpg", "position": 10, - "dataFileName": "13_Geo map_image.png" + "dataFileName": "14_Geo Map_image.png" }, { "attachmentId": "tfa1TRUatWEh", @@ -4948,15 +6496,7 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "14_Geo map_image.png" - }, - { - "attachmentId": "USbvJ38T4AKA", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "15_Geo map_image.png" + "dataFileName": "15_Geo Map_image.png" }, { "attachmentId": "x6yBLIsY2LSv", @@ -4964,7 +6504,15 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "16_Geo map_image.png" + "dataFileName": "16_Geo Map_image.png" + }, + { + "attachmentId": "yJMyBRYA3Kwi", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "17_Geo Map_image.png" }, { "attachmentId": "ZvTlu9WMd37z", @@ -4972,7 +6520,168 @@ "role": "image", "mime": "image/png", "position": 10, - "dataFileName": "17_Geo map_image.png" + "dataFileName": "18_Geo Map_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "W8vYD3Q1zjCR", + "notePath": [ + "pOsGYCXsbNQG", + "KSZ04uQ2D1St", + "W8vYD3Q1zjCR" + ], + "title": "File", + "notePosition": 210, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ODY7qQn5m2FT", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "mHbBMPDPkVV5", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "0vhv7lsOLy82", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "8YBEPzcpUgxw", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "0ESUbbAxVnoK", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iPIMuisry3hd", + "isInheritable": false, + "position": 100 + }, + { + "type": "relation", + "name": "internalLink", + "value": "0Ofbk1aSuVRu", + "isInheritable": false, + "position": 110 + }, + { + "type": "relation", + "name": "internalLink", + "value": "nBAXQFj20hS1", + "isInheritable": false, + "position": 120 + } + ], + "format": "markdown", + "dataFileName": "File.md", + "attachments": [ + { + "attachmentId": "82as0jgkDvVH", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "File_image.png" + }, + { + "attachmentId": "FoEnowwOhzLT", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "1_File_image.png" + }, + { + "attachmentId": "fZ7VMfQJWuLQ", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "2_File_image.png" + }, + { + "attachmentId": "hddkgf7kr9g4", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "3_File_image.png" + }, + { + "attachmentId": "hIg9g5pgsjS3", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "4_File_image.png" + }, + { + "attachmentId": "IC0j8LFCOKka", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "5_File_image.png" + }, + { + "attachmentId": "wNHX24feZRAl", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "6_File_image.png" } ] } @@ -5138,33 +6847,19 @@ "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "zIQ1XGaUbB7i", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "v8H3fXMFPki0", - "isInheritable": false, - "position": 20 - }, { "type": "relation", "name": "internalLink", "value": "tAassRL4RSQL", "isInheritable": false, - "position": 30 + "position": 10 }, { "type": "relation", "name": "internalLink", "value": "x59R8J8KV5Bp", "isInheritable": false, - "position": 40 + "position": 20 }, { "type": "label", @@ -5184,6 +6879,22 @@ "mime": "image/jpg", "position": 10, "dataFileName": "Error logs_image.png" + }, + { + "attachmentId": "krunYsa4JeyV", + "title": "error-logs-firefox-context-men.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Error logs_error-logs-fire.png" + }, + { + "attachmentId": "ReQzLPod6UtU", + "title": "error-logs-export-subtree.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Error logs_error-logs-expo.png" } ] }, @@ -5287,14 +6998,6 @@ "format": "markdown", "dataFileName": "Creating a custom theme.md", "attachments": [ - { - "attachmentId": "3kOhtnQHT9w0", - "title": "5_Creating%20a%20custom%20theme_im.png", - "role": "image", - "mime": "image/jpg", - "position": 10, - "dataFileName": "Creating a custom theme_5_.png" - }, { "attachmentId": "7M6PnFYlxR2t", "title": "3_Creating a custom theme_im.png", @@ -5333,7 +7036,7 @@ "role": "image", "mime": "image/jpg", "position": 10, - "dataFileName": "1_Creating a custom theme_5_.png" + "dataFileName": "Creating a custom theme_5_.png" }, { "attachmentId": "TMHEj1M3XFGO", @@ -5342,14 +7045,6 @@ "mime": "image/jpg", "position": 10, "dataFileName": "Creating a custom theme_2_.png" - }, - { - "attachmentId": "yJVfT7rjp4tI", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Creating a custom theme_im.png" } ] }, @@ -5454,321 +7149,6 @@ } ] }, - { - "isClone": false, - "noteId": "k2Gc17NbaAwb", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb" - ], - "title": "Developer Guides", - "notePosition": 260, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [ - { - "type": "label", - "name": "iconClass", - "value": "bx bxl-javascript", - "isInheritable": false, - "position": 10 - } - ], - "format": "markdown", - "attachments": [], - "dirFileName": "Developer Guides", - "children": [ - { - "isClone": false, - "noteId": "yIhgI5H7A2Sm", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "yIhgI5H7A2Sm" - ], - "title": "Frontend Basics", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GLks18SNjxmC", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "SynTBQiBsdYJ", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "frontend-basics", - "isInheritable": false, - "position": 30 - } - ], - "format": "markdown", - "dataFileName": "Frontend Basics.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "SynTBQiBsdYJ", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "SynTBQiBsdYJ" - ], - "title": "Widget Basics", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "zEY4DaJG4YT5", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "BFs8mudNFgCS", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "GLks18SNjxmC", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "shareAlias", - "value": "widget-basics", - "isInheritable": false, - "position": 20 - } - ], - "format": "markdown", - "dataFileName": "Widget Basics.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "es8OU2GuguFU", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "es8OU2GuguFU" - ], - "title": "Examples", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "attachments": [], - "dirFileName": "Examples", - "children": [ - { - "isClone": false, - "noteId": "7kZPMD0uFwkH", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "es8OU2GuguFU", - "7kZPMD0uFwkH" - ], - "title": "Downloading responses from Google Forms", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "dataFileName": "Downloading responses from Goo.md", - "attachments": [] - }, - { - "isClone": false, - "noteId": "DL92EjAaXT26", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "es8OU2GuguFU", - "DL92EjAaXT26" - ], - "title": "Using promoted attributes to configure scripts", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "dataFileName": "Using promoted attributes to c.md", - "attachments": [ - { - "attachmentId": "7P3jzVEa1mk7", - "title": "image.png", - "role": "image", - "mime": "image/png", - "position": 10, - "dataFileName": "Using promoted attributes .png" - } - ] - } - ] - }, - { - "isClone": false, - "noteId": "CXny4YWKsD7z", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z" - ], - "title": "REST API", - "notePosition": 40, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "attachments": [], - "dirFileName": "REST API", - "children": [ - { - "isClone": false, - "noteId": "cqCjxpN8NhbH", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "cqCjxpN8NhbH" - ], - "title": "ETAPI", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "attachments": [], - "dirFileName": "ETAPI", - "children": [ - { - "isClone": false, - "noteId": "9qPsTWBorUhQ", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "cqCjxpN8NhbH", - "9qPsTWBorUhQ" - ], - "title": "API Reference", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "webView", - "mime": "", - "attributes": [ - { - "type": "label", - "name": "webViewSrc", - "value": "/etapi/docs", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "API Reference.dat", - "attachments": [] - } - ] - }, - { - "isClone": false, - "noteId": "0vTSyvhPTAOz", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "0vTSyvhPTAOz" - ], - "title": "Internal API", - "notePosition": 20, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/html", - "attributes": [], - "format": "markdown", - "attachments": [], - "dirFileName": "Internal API", - "children": [ - { - "isClone": false, - "noteId": "z8O2VG4ZZJD7", - "notePath": [ - "pOsGYCXsbNQG", - "k2Gc17NbaAwb", - "CXny4YWKsD7z", - "0vTSyvhPTAOz", - "z8O2VG4ZZJD7" - ], - "title": "API Reference", - "notePosition": 10, - "prefix": null, - "isExpanded": false, - "type": "webView", - "mime": "", - "attributes": [ - { - "type": "label", - "name": "webViewSrc", - "value": "/api/docs", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "API Reference.dat", - "attachments": [] - } - ] - } - ] - } - ] - }, { "isClone": false, "noteId": "tC7s2alapj8V", @@ -5777,7 +7157,7 @@ "tC7s2alapj8V" ], "title": "Advanced Usage", - "notePosition": 300, + "notePosition": 310, "prefix": null, "isExpanded": false, "type": "text", @@ -5813,72 +7193,37 @@ { "type": "relation", "name": "internalLink", - "value": "R7abl2fc6Mxi", + "value": "HI6GBBIduIgv", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "l0tKav7yLHGF", + "value": "Cq5X6iKQop6R", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "p9kXRFAkwN4o", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "J5Ex1ZrMbyJ6", + "value": "OFXdgB2nNk1F", "isInheritable": false, "position": 40 }, - { - "type": "relation", - "name": "internalLink", - "value": "9sRHySam5fXb", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "u3YFHC9tQlpm", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "R9pX4DGra2Vt", - "isInheritable": false, - "position": 70 - }, - { - "type": "relation", - "name": "internalLink", - "value": "47ZrP6FNuoG8", - "isInheritable": false, - "position": 80 - }, - { - "type": "relation", - "name": "internalLink", - "value": "OFXdgB2nNk1F", - "isInheritable": false, - "position": 90 - }, { "type": "relation", "name": "internalLink", "value": "bwZpz2ajCEwO", "isInheritable": false, - "position": 100 + "position": 50 }, { "type": "label", @@ -5899,16 +7244,345 @@ "dataFileName": "Attributes.md", "attachments": [ { - "attachmentId": "P4eRVtGFoHh2", + "attachmentId": "4YqnV7iugVCJ", "title": "image.png", "role": "image", - "mime": "image/jpg", + "mime": "image/png", "position": 10, "dataFileName": "Attributes_image.png" } ], "dirFileName": "Attributes", "children": [ + { + "isClone": false, + "noteId": "HI6GBBIduIgv", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "zEY4DaJG4YT5", + "HI6GBBIduIgv" + ], + "title": "Labels", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R7abl2fc6Mxi", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bwZpz2ajCEwO", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "vZWERwf8U3nx", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GPERMystNGTB", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CoFPLs3dRlXc", + "isInheritable": false, + "position": 100 + }, + { + "type": "relation", + "name": "internalLink", + "value": "AlhDUqhENtH7", + "isInheritable": false, + "position": 110 + }, + { + "type": "relation", + "name": "internalLink", + "value": "pKK96zzmvBGf", + "isInheritable": false, + "position": 120 + }, + { + "type": "relation", + "name": "internalLink", + "value": "WFGzWeUK6arS", + "isInheritable": false, + "position": 130 + }, + { + "type": "relation", + "name": "internalLink", + "value": "0ESUbbAxVnoK", + "isInheritable": false, + "position": 140 + }, + { + "type": "relation", + "name": "internalLink", + "value": "J5Ex1ZrMbyJ6", + "isInheritable": false, + "position": 150 + }, + { + "type": "relation", + "name": "internalLink", + "value": "d3fAXQ2diepH", + "isInheritable": false, + "position": 160 + }, + { + "type": "relation", + "name": "internalLink", + "value": "MgibgPcfeuGz", + "isInheritable": false, + "position": 170 + }, + { + "type": "relation", + "name": "internalLink", + "value": "m523cpzocqaD", + "isInheritable": false, + "position": 180 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 190 + }, + { + "type": "relation", + "name": "internalLink", + "value": "u3YFHC9tQlpm", + "isInheritable": false, + "position": 200 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R9pX4DGra2Vt", + "isInheritable": false, + "position": 210 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iRwzGnHPzonm", + "isInheritable": false, + "position": 220 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BCkXAVs63Ttv", + "isInheritable": false, + "position": 230 + }, + { + "type": "relation", + "name": "internalLink", + "value": "47ZrP6FNuoG8", + "isInheritable": false, + "position": 240 + }, + { + "type": "relation", + "name": "internalLink", + "value": "KC1HB96bqqHX", + "isInheritable": false, + "position": 250 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BFvAtE74rbP6", + "isInheritable": false, + "position": 260 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bdUJEHsAPYQR", + "isInheritable": false, + "position": 270 + }, + { + "type": "relation", + "name": "internalLink", + "value": "AxshuNRegLAv", + "isInheritable": false, + "position": 280 + }, + { + "type": "relation", + "name": "internalLink", + "value": "81SGnPGMk7Xc", + "isInheritable": false, + "position": 290 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xWbu3jpNWapp", + "isInheritable": false, + "position": 300 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-hash", + "isInheritable": false, + "position": 40 + } + ], + "format": "markdown", + "dataFileName": "Labels.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "Cq5X6iKQop6R", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "zEY4DaJG4YT5", + "Cq5X6iKQop6R" + ], + "title": "Relations", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "HI6GBBIduIgv", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bwZpz2ajCEwO", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "HcABDtFCkbFN", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R9pX4DGra2Vt", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "KC1HB96bqqHX", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BlN9DFI679QC", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GPERMystNGTB", + "isInheritable": false, + "position": 90 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-transfer", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Relations.md", + "attachments": [] + }, { "isClone": false, "noteId": "bwZpz2ajCEwO", @@ -5919,7 +7593,7 @@ "bwZpz2ajCEwO" ], "title": "Attribute Inheritance", - "notePosition": 10, + "notePosition": 30, "prefix": null, "isExpanded": false, "type": "text", @@ -5928,10 +7602,24 @@ { "type": "relation", "name": "internalLink", - "value": "KC1HB96bqqHX", + "value": "HI6GBBIduIgv", "isInheritable": false, "position": 10 }, + { + "type": "relation", + "name": "internalLink", + "value": "Cq5X6iKQop6R", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "KC1HB96bqqHX", + "isInheritable": false, + "position": 30 + }, { "type": "label", "name": "shareAlias", @@ -5961,7 +7649,7 @@ "OFXdgB2nNk1F" ], "title": "Promoted Attributes", - "notePosition": 20, + "notePosition": 40, "prefix": null, "isExpanded": false, "type": "text", @@ -5981,13 +7669,6 @@ "isInheritable": false, "position": 20 }, - { - "type": "relation", - "name": "imageLink", - "value": "rxH2Dm1jn6YT", - "isInheritable": false, - "position": 30 - }, { "type": "label", "name": "shareAlias", @@ -6013,113 +7694,123 @@ "mime": "image/jpg", "position": 10, "dataFileName": "Promoted Attributes_image.png" + }, + { + "attachmentId": "Txf5Jdm2vqt2", + "title": "promoted-attributes.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Promoted Attributes_promot.png" } ] + } + ] + }, + { + "isClone": false, + "noteId": "KC1HB96bqqHX", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "KC1HB96bqqHX" + ], + "title": "Templates", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "bwZpz2ajCEwO", + "isInheritable": false, + "position": 10 }, { - "isClone": false, - "noteId": "KC1HB96bqqHX", - "notePath": [ - "pOsGYCXsbNQG", - "tC7s2alapj8V", - "zEY4DaJG4YT5", - "KC1HB96bqqHX" - ], - "title": "Template", - "notePosition": 30, - "prefix": null, - "isExpanded": false, - "type": "text", - "mime": "text/markdown", - "attributes": [ - { - "type": "relation", - "name": "internalLink", - "value": "bwZpz2ajCEwO", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "internalLink", - "value": "OFXdgB2nNk1F", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "internalLink", - "value": "xYjQUYhpbUEW", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "internalLink", - "value": "l0tKav7yLHGF", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "imageLink", - "value": "Y8kzZ5MSZLCC", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "imageLink", - "value": "uuGrYX41lWN0", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "9sRHySam5fXb", - "isInheritable": false, - "position": 70 - }, - { - "type": "relation", - "name": "internalLink", - "value": "wX4HbRucYSDD", - "isInheritable": false, - "position": 80 - }, - { - "type": "relation", - "name": "internalLink", - "value": "iRwzGnHPzonm", - "isInheritable": false, - "position": 90 - }, - { - "type": "relation", - "name": "internalLink", - "value": "47ZrP6FNuoG8", - "isInheritable": false, - "position": 100 - }, - { - "type": "label", - "name": "shareAlias", - "value": "template", - "isInheritable": false, - "position": 30 - }, - { - "type": "label", - "name": "iconClass", - "value": "bx bx-copy", - "isInheritable": false, - "position": 110 - } - ], - "format": "markdown", - "dataFileName": "Template.md", - "attachments": [] + "type": "relation", + "name": "internalLink", + "value": "OFXdgB2nNk1F", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYjQUYhpbUEW", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "47ZrP6FNuoG8", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "9sRHySam5fXb", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iRwzGnHPzonm", + "isInheritable": false, + "position": 80 + }, + { + "type": "label", + "name": "shareAlias", + "value": "template", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-copy", + "isInheritable": false, + "position": 110 + } + ], + "format": "markdown", + "dataFileName": "Templates.md", + "attachments": [ + { + "attachmentId": "65tzLidJl1uU", + "title": "template.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Templates_template.png" + }, + { + "attachmentId": "72yQHFCV84st", + "title": "template-create-instance-note.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Templates_template-create-.png" } ] }, @@ -6132,7 +7823,7 @@ "BCkXAVs63Ttv" ], "title": "Note Map (Link map, Tree map)", - "notePosition": 30, + "notePosition": 40, "prefix": null, "isExpanded": false, "type": "text", @@ -6165,6 +7856,13 @@ "value": "note-map", "isInheritable": false, "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-network-chart", + "isInheritable": false, + "position": 40 } ], "format": "markdown", @@ -6197,67 +7895,46 @@ "R9pX4DGra2Vt" ], "title": "Sharing", - "notePosition": 50, + "notePosition": 60, "prefix": null, "isExpanded": false, "type": "text", "mime": "text/markdown", "attributes": [ - { - "type": "relation", - "name": "imageLink", - "value": "5GcxcE9fP9xX", - "isInheritable": false, - "position": 10 - }, - { - "type": "relation", - "name": "imageLink", - "value": "Ky3qOJJMZ731", - "isInheritable": false, - "position": 20 - }, - { - "type": "relation", - "name": "imageLink", - "value": "lCtZz2Z59wPT", - "isInheritable": false, - "position": 30 - }, - { - "type": "relation", - "name": "imageLink", - "value": "jEQNvpyaXIWE", - "isInheritable": false, - "position": 40 - }, { "type": "relation", "name": "internalLink", "value": "WOcw2SLH6tbX", "isInheritable": false, - "position": 50 + "position": 10 }, { "type": "relation", "name": "internalLink", "value": "bwZpz2ajCEwO", "isInheritable": false, - "position": 60 + "position": 20 }, { "type": "relation", "name": "internalLink", "value": "6f9hih2hXXZk", "isInheritable": false, - "position": 70 + "position": 30 }, { "type": "relation", "name": "internalLink", "value": "Wy267RK4M69c", "isInheritable": false, - "position": 80 + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Qjt68inQ2bRj", + "isInheritable": false, + "position": 50 }, { "type": "label", @@ -6276,7 +7953,40 @@ ], "format": "markdown", "dataFileName": "Sharing.md", - "attachments": [], + "attachments": [ + { + "attachmentId": "2kLFcH6hel9i", + "title": "shared-list.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Sharing_shared-list.png" + }, + { + "attachmentId": "DFUCyGDOpqOt", + "title": "share-multiple-notes-web.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Sharing_share-multiple-not.png" + }, + { + "attachmentId": "Il8udowRLald", + "title": "share-single-note-web.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Sharing_share-single-note-.png" + }, + { + "attachmentId": "ShhsPSZVMQKx", + "title": "share-single-note.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Sharing_share-single-note.png" + } + ], "dirFileName": "Sharing", "children": [ { @@ -6327,7 +8037,7 @@ "5668rwcirq1t" ], "title": "Advanced Showcases", - "notePosition": 70, + "notePosition": 80, "prefix": null, "isExpanded": false, "type": "text", @@ -6600,73 +8310,66 @@ }, { "type": "relation", - "name": "imageLink", - "value": "92KeXdKh3Ca1", + "name": "internalLink", + "value": "OFXdgB2nNk1F", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "OFXdgB2nNk1F", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "CdNpE2pqjmI6", + "value": "wX4HbRucYSDD", "isInheritable": false, "position": 40 }, { "type": "relation", "name": "internalLink", - "value": "wX4HbRucYSDD", + "value": "IakOLONlIfGI", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "IakOLONlIfGI", + "value": "kBrnXNG3Hplm", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "kBrnXNG3Hplm", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "zEY4DaJG4YT5", + "value": "bwZpz2ajCEwO", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "bwZpz2ajCEwO", + "value": "GPERMystNGTB", "isInheritable": false, "position": 90 }, - { - "type": "relation", - "name": "internalLink", - "value": "GPERMystNGTB", - "isInheritable": false, - "position": 100 - }, { "type": "relation", "name": "internalLink", "value": "6f9hih2hXXZk", "isInheritable": false, - "position": 110 + "position": 100 }, { "type": "label", @@ -6674,11 +8377,27 @@ "value": "task-manager", "isInheritable": false, "position": 30 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-calendar-check", + "isInheritable": false, + "position": 120 } ], "format": "markdown", "dataFileName": "Task Manager.md", - "attachments": [] + "attachments": [ + { + "attachmentId": "D0RLhLxmO9ME", + "title": "task-manager.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Task Manager_task-manager.png" + } + ] } ] }, @@ -6691,7 +8410,7 @@ "J5Ex1ZrMbyJ6" ], "title": "Custom Request Handler", - "notePosition": 80, + "notePosition": 90, "prefix": null, "isExpanded": false, "type": "text", @@ -6753,7 +8472,7 @@ "d3fAXQ2diepH" ], "title": "Custom Resource Providers", - "notePosition": 90, + "notePosition": 100, "prefix": null, "isExpanded": false, "type": "text", @@ -6772,7 +8491,7 @@ "pgxEVkzLl1OP" ], "title": "ETAPI (REST API)", - "notePosition": 100, + "notePosition": 110, "prefix": null, "isExpanded": false, "type": "text", @@ -6788,7 +8507,37 @@ ], "format": "markdown", "dataFileName": "ETAPI (REST API).md", - "attachments": [] + "attachments": [], + "dirFileName": "ETAPI (REST API)", + "children": [ + { + "isClone": false, + "noteId": "9qPsTWBorUhQ", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "pgxEVkzLl1OP", + "9qPsTWBorUhQ" + ], + "title": "API Reference", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "webView", + "mime": "", + "attributes": [ + { + "type": "label", + "name": "webViewSrc", + "value": "/etapi/docs", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "API Reference.dat", + "attachments": [] + } + ] }, { "isClone": false, @@ -6799,7 +8548,7 @@ "47ZrP6FNuoG8" ], "title": "Default Note Title", - "notePosition": 110, + "notePosition": 140, "prefix": null, "isExpanded": false, "type": "text", @@ -6815,10 +8564,17 @@ { "type": "relation", "name": "internalLink", - "value": "KC1HB96bqqHX", + "value": "habiZ3HU8Kw8", "isInheritable": false, "position": 20 }, + { + "type": "relation", + "name": "internalLink", + "value": "KC1HB96bqqHX", + "isInheritable": false, + "position": 30 + }, { "type": "label", "name": "shareAlias", @@ -6840,7 +8596,7 @@ "wX4HbRucYSDD" ], "title": "Database", - "notePosition": 130, + "notePosition": 160, "prefix": null, "isExpanded": false, "type": "text", @@ -6856,51 +8612,23 @@ { "type": "relation", "name": "internalLink", - "value": "iRwzGnHPzonm", + "value": "6tZeKvSHEUiB", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "l0tKav7yLHGF", + "value": "oyIAJ9PvvwHX", "isInheritable": false, "position": 30 }, - { - "type": "relation", - "name": "internalLink", - "value": "R7abl2fc6Mxi", - "isInheritable": false, - "position": 40 - }, - { - "type": "relation", - "name": "internalLink", - "value": "xYjQUYhpbUEW", - "isInheritable": false, - "position": 50 - }, - { - "type": "relation", - "name": "internalLink", - "value": "Wy267RK4M69c", - "isInheritable": false, - "position": 60 - }, - { - "type": "relation", - "name": "internalLink", - "value": "oyIAJ9PvvwHX", - "isInheritable": false, - "position": 70 - }, { "type": "relation", "name": "internalLink", "value": "Gzjqa934BdH4", "isInheritable": false, - "position": 80 + "position": 40 }, { "type": "label", @@ -7044,6 +8772,69 @@ ] } ] + }, + { + "isClone": false, + "noteId": "6tZeKvSHEUiB", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "wX4HbRucYSDD", + "6tZeKvSHEUiB" + ], + "title": "Demo Notes", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "l0tKav7yLHGF", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R7abl2fc6Mxi", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYjQUYhpbUEW", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "iRwzGnHPzonm", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Wy267RK4M69c", + "isInheritable": false, + "position": 50 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-package", + "isInheritable": false, + "position": 110 + } + ], + "format": "markdown", + "dataFileName": "Demo Notes.md", + "attachments": [] } ] }, @@ -7056,7 +8847,7 @@ "Gzjqa934BdH4" ], "title": "Configuration (config.ini or environment variables)", - "notePosition": 140, + "notePosition": 170, "prefix": null, "isExpanded": false, "type": "text", @@ -7072,7 +8863,38 @@ ], "format": "markdown", "dataFileName": "Configuration (config.ini or e.md", - "attachments": [] + "attachments": [], + "dirFileName": "Configuration (config.ini or environment variables)", + "children": [ + { + "isClone": false, + "noteId": "c5xB8m4g2IY6", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "Gzjqa934BdH4", + "c5xB8m4g2IY6" + ], + "title": "Trilium instance", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "cbkrhQjrkKrh", + "isInheritable": false, + "position": 10 + } + ], + "format": "markdown", + "dataFileName": "Trilium instance.md", + "attachments": [] + } + ] }, { "isClone": false, @@ -7082,13 +8904,55 @@ "tC7s2alapj8V", "ivYnonVFBxbQ" ], - "title": "Bulk actions", - "notePosition": 150, + "title": "Bulk Actions", + "notePosition": 180, "prefix": null, "isExpanded": false, "type": "text", "mime": "text/html", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "HI6GBBIduIgv", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Cq5X6iKQop6R", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "oPVyFC7WL2Lp", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "yTjUdsOi4CIE", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "habiZ3HU8Kw8", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "vZWERwf8U3nx", + "isInheritable": false, + "position": 60 + }, { "type": "label", "name": "iconClass", @@ -7098,8 +8962,17 @@ } ], "format": "markdown", - "dataFileName": "Bulk actions.md", - "attachments": [] + "dataFileName": "Bulk Actions.md", + "attachments": [ + { + "attachmentId": "cJTc66E2BRTf", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Bulk Actions_image.png" + } + ] }, { "isClone": false, @@ -7110,7 +8983,7 @@ "4FahAwuGTAwC" ], "title": "Note source", - "notePosition": 160, + "notePosition": 190, "prefix": null, "isExpanded": false, "type": "text", @@ -7119,28 +8992,28 @@ { "type": "relation", "name": "internalLink", - "value": "_optionsTextNotes", + "value": "KSZ04uQ2D1St", "isInheritable": false, "position": 10 }, { "type": "relation", "name": "internalLink", - "value": "_optionsCodeNotes", + "value": "iPIMuisry3hd", "isInheritable": false, "position": 20 }, { "type": "relation", "name": "internalLink", - "value": "KSZ04uQ2D1St", + "value": "MI26XDLSAlCD", "isInheritable": false, "position": 30 }, { "type": "relation", "name": "internalLink", - "value": "MI26XDLSAlCD", + "value": "6f9hih2hXXZk", "isInheritable": false, "position": 40 }, @@ -7182,7 +9055,7 @@ { "type": "relation", "name": "internalLink", - "value": "Wxt3vVlxlYLi", + "value": "0vhv7lsOLy82", "isInheritable": false, "position": 100 }, @@ -7223,7 +9096,7 @@ "1YeN2MzFUluU" ], "title": "Technologies used", - "notePosition": 170, + "notePosition": 200, "prefix": null, "isExpanded": false, "type": "text", @@ -7372,12 +9245,19 @@ "m1lbrzyKDaRB" ], "title": "Note ID", - "notePosition": 180, + "notePosition": 210, "prefix": null, "isExpanded": false, "type": "text", "mime": "text/html", "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "0vhv7lsOLy82", + "isInheritable": false, + "position": 10 + }, { "type": "label", "name": "iconClass", @@ -7389,1568 +9269,769 @@ "format": "markdown", "dataFileName": "Note ID.md", "attachments": [] + }, + { + "isClone": false, + "noteId": "0vTSyvhPTAOz", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "0vTSyvhPTAOz" + ], + "title": "Internal API", + "notePosition": 220, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "attachments": [], + "dirFileName": "Internal API", + "children": [ + { + "isClone": false, + "noteId": "z8O2VG4ZZJD7", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "0vTSyvhPTAOz", + "z8O2VG4ZZJD7" + ], + "title": "API Reference", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "webView", + "mime": "", + "attributes": [ + { + "type": "label", + "name": "webViewSrc", + "value": "/api/docs", + "isInheritable": false, + "position": 10 + } + ], + "dataFileName": "API Reference.dat", + "attachments": [] + } + ] + }, + { + "isClone": false, + "noteId": "2mUhVmZK8RF3", + "notePath": [ + "pOsGYCXsbNQG", + "tC7s2alapj8V", + "2mUhVmZK8RF3" + ], + "title": "Hidden Notes", + "notePosition": 230, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "Cq5X6iKQop6R", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "wX4HbRucYSDD", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "YKWqdJhzi2VY", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "ivYnonVFBxbQ", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "eIg8jdvaoNNd", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "QEAPj01N5f7w", + "isInheritable": false, + "position": 70 + }, + { + "type": "relation", + "name": "internalLink", + "value": "m1lbrzyKDaRB", + "isInheritable": false, + "position": 80 + }, + { + "type": "relation", + "name": "internalLink", + "value": "x3i7MxGccDuM", + "isInheritable": false, + "position": 90 + }, + { + "type": "relation", + "name": "internalLink", + "value": "bdUJEHsAPYQR", + "isInheritable": false, + "position": 100 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 110 + }, + { + "type": "relation", + "name": "internalLink", + "value": "u3YFHC9tQlpm", + "isInheritable": false, + "position": 120 + }, + { + "type": "relation", + "name": "internalLink", + "value": "qzNzp9LYQyPT", + "isInheritable": false, + "position": 130 + }, + { + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", + "isInheritable": false, + "position": 140 + }, + { + "type": "relation", + "name": "internalLink", + "value": "R9pX4DGra2Vt", + "isInheritable": false, + "position": 150 + }, + { + "type": "relation", + "name": "internalLink", + "value": "4TIF1oA4VQRO", + "isInheritable": false, + "position": 160 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-hide", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Hidden Notes.md", + "attachments": [ + { + "attachmentId": "PrFEZeM6sRl6", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Hidden Notes_image.png" + } + ] } ] }, { "isClone": false, - "noteId": "Wxt3vVlxlYLi", + "noteId": "CdNpE2pqjmI6", "notePath": [ "pOsGYCXsbNQG", - "Wxt3vVlxlYLi" + "CdNpE2pqjmI6" ], - "title": "Attachments", - "notePosition": 310, + "title": "Scripting", + "notePosition": 320, "prefix": null, "isExpanded": false, "type": "text", - "mime": "text/html", + "mime": "text/markdown", "attributes": [ { - "type": "label", - "name": "shareHiddenFromTree", - "value": "", + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", "isInheritable": false, "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "TjLYAo3JMO8X", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "RDslemsQ6gCp", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "5668rwcirq1t", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GPERMystNGTB", + "isInheritable": false, + "position": 70 + }, + { + "type": "label", + "name": "shareAlias", + "value": "scripts", + "isInheritable": false, + "position": 20 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bxs-file-js", + "isInheritable": false, + "position": 80 } ], "format": "markdown", + "dataFileName": "Scripting.md", "attachments": [], - "dirFileName": "Attachments", + "dirFileName": "Scripting", "children": [ { "isClone": false, - "noteId": "HEtnpiQrEvjl", + "noteId": "yIhgI5H7A2Sm", "notePath": [ "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "HEtnpiQrEvjl" + "CdNpE2pqjmI6", + "yIhgI5H7A2Sm" ], - "title": "bookmark-folder.png", - "notePosition": 160, + "title": "Frontend Basics", + "notePosition": 20, "prefix": null, "isExpanded": false, - "type": "image", - "mime": "image/png", + "type": "text", + "mime": "text/markdown", "attributes": [ { - "type": "label", - "name": "originalFileName", - "value": "bookmark-folder.png", + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", "isInheritable": false, "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "SynTBQiBsdYJ", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "frontend-basics", + "isInheritable": false, + "position": 30 } ], - "dataFileName": "bookmark-folder.png", + "format": "markdown", + "dataFileName": "Frontend Basics.md", "attachments": [] }, { "isClone": false, - "noteId": "sag6ww9q4pgW", + "noteId": "es8OU2GuguFU", "notePath": [ "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "sag6ww9q4pgW" + "CdNpE2pqjmI6", + "es8OU2GuguFU" ], - "title": "bookmarks.gif", - "notePosition": 170, + "title": "Examples", + "notePosition": 50, "prefix": null, "isExpanded": false, - "type": "image", - "mime": "image/gif", + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "attachments": [], + "dirFileName": "Examples", + "children": [ + { + "isClone": false, + "noteId": "TjLYAo3JMO8X", + "notePath": [ + "pOsGYCXsbNQG", + "CdNpE2pqjmI6", + "es8OU2GuguFU", + "TjLYAo3JMO8X" + ], + "title": "\"New Task\" launcher button", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "xYjQUYhpbUEW", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "xYmIYSP6wE3F", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 30 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 40 + }, + { + "type": "relation", + "name": "internalLink", + "value": "m1lbrzyKDaRB", + "isInheritable": false, + "position": 50 + }, + { + "type": "relation", + "name": "internalLink", + "value": "s8alTXmpFR61", + "isInheritable": false, + "position": 60 + }, + { + "type": "relation", + "name": "internalLink", + "value": "yIhgI5H7A2Sm", + "isInheritable": false, + "position": 70 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-task", + "isInheritable": false, + "position": 80 + } + ], + "format": "markdown", + "dataFileName": "New Task launcher button.md", + "attachments": [ + { + "attachmentId": "9C2JA6tdtRpN", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "New Task launcher button_i.png" + } + ] + }, + { + "isClone": false, + "noteId": "7kZPMD0uFwkH", + "notePath": [ + "pOsGYCXsbNQG", + "CdNpE2pqjmI6", + "es8OU2GuguFU", + "7kZPMD0uFwkH" + ], + "title": "Downloading responses from Google Forms", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "dataFileName": "Downloading responses from Goo.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "DL92EjAaXT26", + "notePath": [ + "pOsGYCXsbNQG", + "CdNpE2pqjmI6", + "es8OU2GuguFU", + "DL92EjAaXT26" + ], + "title": "Using promoted attributes to configure scripts", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "dataFileName": "Using promoted attributes to c.md", + "attachments": [ + { + "attachmentId": "7P3jzVEa1mk7", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Using promoted attributes .png" + } + ] + } + ] + }, + { + "isClone": false, + "noteId": "GPERMystNGTB", + "notePath": [ + "pOsGYCXsbNQG", + "CdNpE2pqjmI6", + "GPERMystNGTB" + ], + "title": "Events", + "notePosition": 70, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", "attributes": [ { - "type": "label", - "name": "originalFileName", - "value": "bookmarks.gif", + "type": "relation", + "name": "internalLink", + "value": "CdNpE2pqjmI6", "isInheritable": false, "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "c5xB8m4g2IY6", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "events", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "iconClass", + "value": "bx bx-rss", + "isInheritable": false, + "position": 20 } ], - "dataFileName": "bookmarks.gif", + "format": "markdown", + "dataFileName": "Events.md", "attachments": [] }, { "isClone": false, - "noteId": "W9yOvDvpsEtR", + "noteId": "MgibgPcfeuGz", "notePath": [ "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "W9yOvDvpsEtR" + "CdNpE2pqjmI6", + "MgibgPcfeuGz" ], - "title": "bookmarks.png", - "notePosition": 180, + "title": "Custom Widgets", + "notePosition": 80, "prefix": null, "isExpanded": false, - "type": "image", - "mime": "image/png", + "type": "text", + "mime": "text/markdown", "attributes": [ { "type": "label", - "name": "originalFileName", - "value": "bookmarks.png", + "name": "shareAlias", + "value": "custom-widget", "isInheritable": false, - "position": 10 + "position": 20 } ], - "dataFileName": "bookmarks.png", - "attachments": [] + "format": "markdown", + "dataFileName": "Custom Widgets.md", + "attachments": [], + "dirFileName": "Custom Widgets", + "children": [ + { + "isClone": false, + "noteId": "YNxAqkI5Kg1M", + "notePath": [ + "pOsGYCXsbNQG", + "CdNpE2pqjmI6", + "MgibgPcfeuGz", + "YNxAqkI5Kg1M" + ], + "title": "Word count widget", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "6tZeKvSHEUiB", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "6f9hih2hXXZk", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "s8alTXmpFR61", + "isInheritable": false, + "position": 30 + } + ], + "format": "markdown", + "dataFileName": "Word count widget.md", + "attachments": [ + { + "attachmentId": "JhM9NWfebzPi", + "title": "image.png", + "role": "image", + "mime": "image/png", + "position": 10, + "dataFileName": "Word count widget_image.png" + } + ] + }, + { + "isClone": false, + "noteId": "SynTBQiBsdYJ", + "notePath": [ + "pOsGYCXsbNQG", + "CdNpE2pqjmI6", + "MgibgPcfeuGz", + "SynTBQiBsdYJ" + ], + "title": "Widget Basics", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/markdown", + "attributes": [ + { + "type": "relation", + "name": "internalLink", + "value": "zEY4DaJG4YT5", + "isInheritable": false, + "position": 10 + }, + { + "type": "relation", + "name": "internalLink", + "value": "BFs8mudNFgCS", + "isInheritable": false, + "position": 20 + }, + { + "type": "relation", + "name": "internalLink", + "value": "GLks18SNjxmC", + "isInheritable": false, + "position": 30 + }, + { + "type": "label", + "name": "shareAlias", + "value": "widget-basics", + "isInheritable": false, + "position": 20 + } + ], + "format": "markdown", + "dataFileName": "Widget Basics.md", + "attachments": [] + } + ] }, { "isClone": false, - "noteId": "DVJl4l3T8EG2", + "noteId": "GLks18SNjxmC", "notePath": [ "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "DVJl4l3T8EG2" + "CdNpE2pqjmI6", + "GLks18SNjxmC" ], - "title": "button-script.png", - "notePosition": 190, + "title": "Script API", + "notePosition": 90, "prefix": null, "isExpanded": false, - "type": "image", - "mime": "image/png", + "type": "text", + "mime": "text/markdown", "attributes": [ { "type": "label", - "name": "originalFileName", - "value": "button-script.png", + "name": "shareAlias", + "value": "script-api", "isInheritable": false, "position": 10 } ], - "dataFileName": "button-script.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "oZfQufNxgrZ9", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "oZfQufNxgrZ9" - ], - "title": "canvas-note-image.png", - "notePosition": 200, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ + "format": "markdown", + "dataFileName": "Script API.md", + "attachments": [], + "dirFileName": "Script API", + "children": [ { - "type": "label", - "name": "originalFileName", - "value": "canvas-note-image.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "canvas-note-image.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "BJpEsPXDjVLh", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "BJpEsPXDjVLh" - ], - "title": "chrome-trilium-web-clipper.png", - "notePosition": 210, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ + "isClone": false, + "noteId": "Q2z6av6JZVWm", + "notePath": [ + "pOsGYCXsbNQG", + "CdNpE2pqjmI6", + "GLks18SNjxmC", + "Q2z6av6JZVWm" + ], + "title": "Frontend API", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "attachments": [], + "dirFileName": "Frontend API", + "children": [ + { + "isClone": false, + "noteId": "habiZ3HU8Kw8", + "notePath": [ + "pOsGYCXsbNQG", + "CdNpE2pqjmI6", + "GLks18SNjxmC", + "Q2z6av6JZVWm", + "habiZ3HU8Kw8" + ], + "title": "FNote", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "dataFileName": "FNote.md", + "attachments": [] + } + ] + }, { - "type": "label", - "name": "originalFileName", - "value": "chrome-trilium-web-clipper.png", - "isInheritable": false, - "position": 10 + "isClone": false, + "noteId": "MEtfsqa5VwNi", + "notePath": [ + "pOsGYCXsbNQG", + "CdNpE2pqjmI6", + "GLks18SNjxmC", + "MEtfsqa5VwNi" + ], + "title": "Backend API", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [], + "format": "markdown", + "dataFileName": "Backend API.md", + "attachments": [] } - ], - "dataFileName": "chrome-trilium-web-clipper.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "8jgXl1RUGL4H", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "8jgXl1RUGL4H" - ], - "title": "code-note.png", - "notePosition": 230, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "code-note.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "code-note.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "BqvIJUHkWrvH", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "BqvIJUHkWrvH" - ], - "title": "create-clone.gif", - "notePosition": 240, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "create-clone.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "create-clone.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "N6O1qfBGcbFH", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "N6O1qfBGcbFH" - ], - "title": "create-external-link.gif", - "notePosition": 250, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "create-external-link.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "create-external-link.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "dPcRcDZwyGAO", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "dPcRcDZwyGAO" - ], - "title": "create-link-to-note.gif", - "notePosition": 260, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "create-link-to-note.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "create-link-to-note.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "3sCPPL0LEC1S", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "3sCPPL0LEC1S" - ], - "title": "Custom-widget image.png", - "notePosition": 270, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "Custom-widget image.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "Custom-widget image.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "ruEpqTPbi0CT", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "ruEpqTPbi0CT" - ], - "title": "custom-widget-image.png", - "notePosition": 280, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "custom-widget-image.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "custom-widget-image.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "aa84l6zJyAVH", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "aa84l6zJyAVH" - ], - "title": "cut-to-subnote.gif", - "notePosition": 290, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "cut-to-subnote.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "cut-to-subnote.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "zaQnUsJTbvjr", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "zaQnUsJTbvjr" - ], - "title": "dark-theme.png", - "notePosition": 300, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "dark-theme.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "dark-theme.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "sLZ7Bcq9p8E9", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "sLZ7Bcq9p8E9" - ], - "title": "drag-and-drop.gif", - "notePosition": 330, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "drag-and-drop.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "drag-and-drop.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "v8H3fXMFPki0", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "v8H3fXMFPki0" - ], - "title": "error-logs-export-subtree.png", - "notePosition": 350, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "error-logs-export-subtree.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "error-logs-export-subtree.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "zIQ1XGaUbB7i", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "zIQ1XGaUbB7i" - ], - "title": "error-logs-firefox-context-men.png", - "notePosition": 360, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "error-logs-firefox-context-men.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "error-logs-firefox-context.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "1fkGrskxHx5u", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "1fkGrskxHx5u" - ], - "title": "hide-archived.png", - "notePosition": 370, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "hide-archived.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "hide-archived.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "JXFeNgU8Xnp1", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "JXFeNgU8Xnp1" - ], - "title": "home-button.svg", - "notePosition": 380, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/svg+xml", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "home-button.svg", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "home-button.svg", - "attachments": [] - }, - { - "isClone": false, - "noteId": "snfWRIih71MM", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "snfWRIih71MM" - ], - "title": "jump-to.gif", - "notePosition": 390, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "jump-to.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "jump-to.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "e3qPZSsTbUZP", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "e3qPZSsTbUZP" - ], - "title": "markdown-export-note.gif", - "notePosition": 410, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "markdown-export-note.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "markdown-export-note.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "QUqKzK4LHMVA", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "QUqKzK4LHMVA" - ], - "title": "markdown-export-subtree.gif", - "notePosition": 420, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "markdown-export-subtree.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "markdown-export-subtree.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "xMQSqWySvWBZ", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "xMQSqWySvWBZ" - ], - "title": "markdown-file-import.gif", - "notePosition": 430, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "markdown-file-import.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "markdown-file-import.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "Y9mwMwSGAaSb", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "Y9mwMwSGAaSb" - ], - "title": "markdown-inline-import.gif", - "notePosition": 440, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "markdown-inline-import.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "markdown-inline-import.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "1YUO9Ij4XIwE", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "1YUO9Ij4XIwE" - ], - "title": "math.gif", - "notePosition": 450, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "math.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "math.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "fJ7nbsprnKr7", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "fJ7nbsprnKr7" - ], - "title": "mermaid.png", - "notePosition": 460, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "mermaid.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "mermaid.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "TFAiJIXJFfqv", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "TFAiJIXJFfqv" - ], - "title": "mobile-smartphone.png", - "notePosition": 470, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "mobile-smartphone.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "mobile-smartphone.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "fi37V32TNyzm", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "fi37V32TNyzm" - ], - "title": "mobile-tablet.png", - "notePosition": 480, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "mobile-tablet.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "mobile-tablet.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "qL7381ZG0lMK", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "qL7381ZG0lMK" - ], - "title": "move-note-with-keyboard.gif", - "notePosition": 490, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "move-note-with-keyboard.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "move-note-with-keyboard.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "AiBOf1LIykMC", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "AiBOf1LIykMC" - ], - "title": "note-hoisting.gif", - "notePosition": 500, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "note-hoisting.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "note-hoisting.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "iuAfnapzpRCB", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "iuAfnapzpRCB" - ], - "title": "note-icon-change.png", - "notePosition": 510, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "note-icon-change.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "note-icon-change.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "R1L2vUshJD82", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "R1L2vUshJD82" - ], - "title": "note-icon-gallery.png", - "notePosition": 520, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "note-icon-gallery.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "note-icon-gallery.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "mWxLjZrNAoV7", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "mWxLjZrNAoV7" - ], - "title": "note-map.png", - "notePosition": 530, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "note-map.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "note-map.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "MA2uvkVloWXl", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "MA2uvkVloWXl" - ], - "title": "note-revisions.png", - "notePosition": 540, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "note-revisions.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "note-revisions.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "umjOUcnZi4z2", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "umjOUcnZi4z2" - ], - "title": "promoted-attributes-queen.png", - "notePosition": 550, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "promoted-attributes-queen.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "promoted-attributes-queen.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "rxH2Dm1jn6YT", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "rxH2Dm1jn6YT" - ], - "title": "promoted-attributes.png", - "notePosition": 560, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "promoted-attributes.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "promoted-attributes.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "zaUtPWl8NcCt", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "zaUtPWl8NcCt" - ], - "title": "protecting-note.gif", - "notePosition": 570, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "protecting-note.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "protecting-note.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "wpFu8PhUu7e7", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "wpFu8PhUu7e7" - ], - "title": "recent-notes.gif", - "notePosition": 580, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "recent-notes.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "recent-notes.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "EH6qNioOHeyT", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "EH6qNioOHeyT" - ], - "title": "relation-map-dev-process.png", - "notePosition": 590, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "relation-map-dev-process.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "relation-map-dev-process.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "N98UhifxrVpZ", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "N98UhifxrVpZ" - ], - "title": "relation-map-family-demo.gif", - "notePosition": 600, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "relation-map-family-demo.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "relation-map-family-demo.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "xeZPrfi77XPu", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "xeZPrfi77XPu" - ], - "title": "relation-map-family.png", - "notePosition": 610, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "relation-map-family.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "relation-map-family.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "rVtYANyVhE9U", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "rVtYANyVhE9U" - ], - "title": "saved-search-image.gif", - "notePosition": 620, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "saved-search-image.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "saved-search-image.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "VvQ2QZOyZhZZ", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "VvQ2QZOyZhZZ" - ], - "title": "saved-search.gif", - "notePosition": 630, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/gif", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "saved-search.gif", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "saved-search.gif", - "attachments": [] - }, - { - "isClone": false, - "noteId": "V01a3OdC9O06", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "V01a3OdC9O06" - ], - "title": "screenshot.png", - "notePosition": 640, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "screenshot.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "screenshot.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "lCtZz2Z59wPT", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "lCtZz2Z59wPT" - ], - "title": "share-multiple-notes-web.png", - "notePosition": 650, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "share-multiple-notes-web.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "share-multiple-notes-web.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "Ky3qOJJMZ731", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "Ky3qOJJMZ731" - ], - "title": "share-single-note-web.png", - "notePosition": 660, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "share-single-note-web.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "share-single-note-web.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "5GcxcE9fP9xX", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "5GcxcE9fP9xX" - ], - "title": "share-single-note.png", - "notePosition": 670, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "share-single-note.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "share-single-note.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "jEQNvpyaXIWE", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "jEQNvpyaXIWE" - ], - "title": "shared-list.png", - "notePosition": 680, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "shared-list.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "shared-list.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "OFHiQYnGo2rr", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "OFHiQYnGo2rr" - ], - "title": "split.png", - "notePosition": 690, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "split.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "split.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "uVF9DAmAmEWC", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "uVF9DAmAmEWC" - ], - "title": "steel-blue.png", - "notePosition": 710, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "steel-blue.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "steel-blue.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "676Ekdv73T7I", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "676Ekdv73T7I" - ], - "title": "sync-config.png", - "notePosition": 720, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "sync-config.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "sync-config.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "qGTyyKX4TceE", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "qGTyyKX4TceE" - ], - "title": "sync-in-progress.png", - "notePosition": 730, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "sync-in-progress.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "sync-in-progress.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "SDHWNDsB68aJ", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "SDHWNDsB68aJ" - ], - "title": "sync-init.png", - "notePosition": 740, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "sync-init.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "sync-init.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "92KeXdKh3Ca1", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "92KeXdKh3Ca1" - ], - "title": "task-manager.png", - "notePosition": 750, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "task-manager.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "task-manager.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "uuGrYX41lWN0", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "uuGrYX41lWN0" - ], - "title": "template-create-instance-note.png", - "notePosition": 760, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "template-create-instance-note.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "template-create-instance-n.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "Y8kzZ5MSZLCC", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "Y8kzZ5MSZLCC" - ], - "title": "template.png", - "notePosition": 770, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "template.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "template.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "oRWfJLUbb7j7", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "oRWfJLUbb7j7" - ], - "title": "text-notes-formatting-block.png", - "notePosition": 780, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "text-notes-formatting-block.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "text-notes-formatting-bloc.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "FtmPLgGmgZVC", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "FtmPLgGmgZVC" - ], - "title": "text-notes-formatting-inline.png", - "notePosition": 790, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "text-notes-formatting-inline.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "text-notes-formatting-inli.png", - "attachments": [] - }, - { - "isClone": false, - "noteId": "skY4DIE2Iks5", - "notePath": [ - "pOsGYCXsbNQG", - "Wxt3vVlxlYLi", - "skY4DIE2Iks5" - ], - "title": "text-notes-image.png", - "notePosition": 800, - "prefix": null, - "isExpanded": false, - "type": "image", - "mime": "image/png", - "attributes": [ - { - "type": "label", - "name": "originalFileName", - "value": "text-notes-image.png", - "isInheritable": false, - "position": 10 - } - ], - "dataFileName": "text-notes-image.png", - "attachments": [] + ] } ] } diff --git a/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases.md b/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases.md index 010822f9a..758dc4435 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases.md +++ b/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases.md @@ -1,5 +1,5 @@ # Advanced Showcases -Trilium offers advanced functionality through [Scripts](../Note%20Types/Code/Scripts.md) and [Promoted Attributes](Attributes/Promoted%20Attributes.md). To illustrate these features, we've prepared several showcases available in the [demo notes](Database.md): +Trilium offers advanced functionality through [Scripts](../Scripting.md) and [Promoted Attributes](Attributes/Promoted%20Attributes.md). To illustrate these features, we've prepared several showcases available in the [demo notes](Database.md): * [Relation Map](../Note%20Types/Relation%20Map.md) * [Day Notes](Advanced%20Showcases/Day%20Notes.md) diff --git a/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes.md b/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes.md index 9684af75d..06e40a9d0 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes.md +++ b/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes.md @@ -13,37 +13,63 @@ This pattern works well also because of [Cloning Notes](../../Basic%20Concepts%2 ![](Day%20Notes_image.png) -You can see the structure of day notes appearing under "Journal" note - there's a note for the whole year 2017, under it, you have "12 - December" which then contains "18 - Monday". This is our "day note" which contains some text in its content and also has some child notes (some of them are from [Task manager](Task%20Manager.md)). +You can see the structure of day notes appearing under "Journal" note - there's a note for the whole year 2025, under it, you have "03 - March" which then contains "09 - Monday". This is our "day note" which contains some text in its content and also has some child notes (some of them are from [Task manager](Task%20Manager.md)). You can also notice how this day note has [promoted attribute](../Attributes/Promoted%20Attributes.md) "weight" where you can track your daily weight. This data is then used in [Weight tracker](Weight%20Tracker.md). +## Week Note and Quarter Note + +Week and quarter notes are disabled by default, since it might be too much for some people. To enable them, you need to set `#enableWeekNotes` and `#enableQuarterNotes` attributes on the root calendar note, which is identified by `#calendarRoot` label. Week note is affected by the first week of year option. Be careful when you already have some week notes created, it will not automatically change the existing week notes and might lead to some duplicates. + ## Templates -Trilium provides [template](../Attributes/Template.md) functionality, and it could be used together with day notes. +Trilium provides [template](../Templates.md) functionality, and it could be used together with day notes. You can define one of the following relations on the root of the journal (identified by `#calendarRoot` label): * yearTemplate +* quarterTemplate (if `#enableQuarterNotes` is set) * monthTemplate +* weekTemplate (if `#enableWeekNotes` is set) * dateTemplate All of these are relations. When Trilium creates a new note for year or month or date, it will take a look at the root and attach a corresponding `~template` relation to the newly created role. Using this, you can e.g. create your daily template with e.g. checkboxes for daily routine etc. -## Date pattern +## Naming pattern -It's possible to customize the title of generated date notes by defining a `#datePattern` label on a root calendar note (identified by `#calendarRoot` label). Following are possible values: +You can customize the title of generated journal notes by defining a `#datePattern`, `#weekPattern`, `#monthPattern`, `#quarterPattern` and `#yearPattern` attribute on a root calendar note (identified by `#calendarRoot` label). The naming pattern replacements follow a level-up compatibility - each level can use replacements from itself and all levels above it. For example, `#monthPattern` can use month, quarter and year replacements, while `#weekPattern` can use week, month, quarter and year replacements. But it is not possible to use week replacements in `#monthPattern`. -* `{dayInMonthPadded} - {weekDay}` day notes are named e.g. "24 - Monday" -* `{dayInMonthPadded}: {weekDay3}` day notes are named e.g. "24: Mon" -* `{dayInMonthPadded}: {weekDay2}` day notes are named e.g. "24: Mo" -* `{isoDate} - {weekDay}` day notes are named e.g. "2020-12-24 - Monday" +### Date pattern + +It's possible to customize the title of generated date notes by defining a `#datePattern` attribute on a root calendar note (identified by `#calendarRoot` label). Following are possible values: + +* `{isoDate}` results in an ISO 8061 formatted date (e.g. "2025-03-09" for March 9, 2025) +* `{dateNumber}` results in a number like `9` for the 9th day of the month, `11` for the 11th day of the month +* `{dateNumberPadded}` results in a number like `09` for the 9th day of the month, `11` for the 11th day of the month * `{ordinal}` is replaced with the ordinal date (e.g. 1st, 2nd, 3rd) etc. +* `{weekDay}` results in the full day name (e.g. `Monday`) +* `{weekDay3}` is replaced with the first 3 letters of the day, e.g. Mon, Tue, etc. +* `{weekDay2}` is replaced with the first 2 letters of the day, e.g. Mo, Tu, etc. -## Month pattern +The default is `{dateNumberPadded} - {weekDay}` -It is also possible to customize the title of generated month notes through the `#monthPattern` attribute, much like `#datePattern`. The options are: +### Week pattern + +It is also possible to customize the title of generated week notes through the `#weekPattern` attribute on the root calendar note. The options are: + +* `{weekNumber}` results in a number like `9` for the 9th week of the year, `11` for the 11th week of the year +* `{weekNumberPadded}` results in a number like `09` for the 9th week of the year, `11` for the 11th week of the year +* `{shortWeek}` results in a short week string like `W9` for the 9th week of the year, `W11` for the 11th week of the year +* `{shortWeek3}` results in a short week string like `W09` for the 9th week of the year, `W11` for the 11th week of the year + +The default is `Week {weekNumber}` + +### Month pattern + +It is also possible to customize the title of generated month notes through the `#monthPattern` attribute on the root calendar note. The options are: * `{isoMonth}` results in an ISO 8061 formatted month (e.g. "2025-03" for March 2025) +* `{monthNumber}` results in a number like `9` for September, and `11` for November * `{monthNumberPadded}` results in a number like `09` for September, and `11` for November * `{month}` results in the full month name (e.g. `September` or `October`) * `{shortMonth3}` is replaced with the first 3 letters of the month, e.g. Jan, Feb, etc. @@ -51,10 +77,27 @@ It is also possible to customize the title of generated month notes through the The default is `{monthNumberPadded} - {month}` +### Quarter pattern + +It is also possible to customize the title of generated quarter notes through the `#quarterPattern` attribute on the root calendar note. The options are: + +* `{quarterNumber}` results in a number like `1` for the 1st quarter of the year +* `{shortQuarter}` results in a short quarter string like `Q1` for the 1st quarter of the year + +The default is `Quarter {quarterNumber}` + +### Year pattern + +It is also possible to customize the title of generated year notes through the `#yearPattern` attribute on the root calendar note. The options are: + +* `{year}` results in the full year (e.g. `2025`) + +The default is `{year}` + ## Implementation Trilium has some special support for day notes in the form of [backend Script API](https://triliumnext.github.io/Notes/backend_api/BackendScriptApi.html) - see e.g. getDayNote() function. -Day (and year, month) notes are created with a label - e.g. `#dateNote="2018-08-16"` this can then be used by other scripts to add new notes to day note etc. +Day (and year, month) notes are created with a label - e.g. `#dateNote="2025-03-09"` this can then be used by other scripts to add new notes to day note etc. -Journal also has relation `child:child:child:template=Day template` (see \[\[attribute inheritance\]\]) which effectively adds \[\[template\]\] to day notes (grand-grand-grand children of Journal). \ No newline at end of file +Journal also has relation `child:child:child:template=Day template` (see \[\[attribute inheritance\]\]) which effectively adds \[\[template\]\] to day notes (grand-grand-grand children of Journal). Please note that, when you enable week notes or quarter notes, it will not automatically change the relation for the child level. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager.md b/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager.md index 21122fb27..f1ec27a4b 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager.md +++ b/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager.md @@ -1,9 +1,9 @@ # Task Manager -Task Manager is a [promoted attributes](../Attributes/Promoted%20Attributes.md) and [scripts](../../Note%20Types/Code/Scripts.md)showcase present in the [demo notes](../Database.md). +Task Manager is a [promoted attributes](../Attributes/Promoted%20Attributes.md) and [scripts](../../Scripting.md)showcase present in the [demo notes](../Database.md). ## Demo -![](../../Attachments/task-manager.png) +![](Task%20Manager_task-manager.png) Task Manager manages outstanding (TODO) tasks and finished tasks (non-empty doneDate attribute). Outstanding tasks are further categorized by location and arbitrary tags - whenever you change tag attribute in the task note, this task is then automatically moved to appropriate location. @@ -15,7 +15,7 @@ New tasks are created in the TODO note which has `~child:template` [relation](.. ### Attributes -Task template defines several [promoted attributes](../Attributes/Promoted%20Attributes.md) - todoDate, doneDate, tags, location. Importantly it also defines `~runOnAttributeChange` relation - [event](../../Note%20Types/Code/Events.md) handler which is run on attribute change. This [script](../../Note%20Types/Code/Scripts.md) handles when e.g. we fill out the doneDate attribute - meaning the task is done and should be moved to "Done" note and removed from TODO, locations and tags. +Task template defines several [promoted attributes](../Attributes/Promoted%20Attributes.md) - todoDate, doneDate, tags, location. Importantly it also defines `~runOnAttributeChange` relation - [event](../../Scripting/Events.md) handler which is run on attribute change. This [script](../../Scripting.md) handles when e.g. we fill out the doneDate attribute - meaning the task is done and should be moved to "Done" note and removed from TODO, locations and tags. ### New task button diff --git a/docs/User Guide/User Guide/Attachments/task-manager.png b/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager_task-manager.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/task-manager.png rename to docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager_task-manager.png diff --git a/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker.md b/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker.md index b760a050d..303812e16 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker.md +++ b/docs/User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker.md @@ -1,13 +1,13 @@ # Weight Tracker ![](Weight%20Tracker_image.png) -The `Weight Tracker` is a [Script API](../../Note%20Types/Code/Script%20API.md) showcase present in the [demo notes](../Database.md). +The `Weight Tracker` is a [Script API](../../Scripting/Script%20API.md) showcase present in the [demo notes](../Database.md). -By adding `weight` as a [promoted attribute](../Attributes/Promoted%20Attributes.md) in the [template](../Attributes/Template.md) from which [day notes](Day%20Notes.md) are created, you can aggregate the data and plot weight change over time. +By adding `weight` as a [promoted attribute](../Attributes/Promoted%20Attributes.md) in the [template](../Templates.md) from which [day notes](Day%20Notes.md) are created, you can aggregate the data and plot weight change over time. ## Implementation -The `Weight Tracker` note in the screenshot above is of the type `Render Note`. That type of note doesn't have any useful content itself. Instead it is a placeholder where a [script](../../Note%20Types/Code/Scripts.md) can render its output. +The `Weight Tracker` note in the screenshot above is of the type `Render Note`. That type of note doesn't have any useful content itself. Instead it is a placeholder where a [script](../../Scripting.md) can render its output. Scripts for `Render Notes` are defined in a [relation](../Attributes.md) called `~renderNote`. In this example, it's the `Weight Tracker`'s child `Implementation`. The Implementation consists of two [code notes](../../Note%20Types/Code.md) that contain some HTML and JavaScript respectively, which load all the notes with a `weight` attribute and display their values in a chart. diff --git a/docs/User Guide/User Guide/Advanced Usage/Attributes.md b/docs/User Guide/User Guide/Advanced Usage/Attributes.md index 8a87a20bb..72f8ae1b0 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Attributes.md +++ b/docs/User Guide/User Guide/Advanced Usage/Attributes.md @@ -1,82 +1,33 @@ # Attributes +
                + In Trilium, attributes are key-value pairs assigned to notes, providing additional metadata or functionality. There are two primary types of attributes: -1. **Labels**: Simple key-value text records -2. **Relations**: Named links to other notes +1. Labels can be used for a variety of purposes, such as storing metadata or configuring the behaviour of notes. Labels are also searchable, enhancing note retrieval. + + For more information, including predefined labels, see Labels. + +2. Relations define connections between notes, similar to links. These can be used for metadata and scripting purposes. + + For more information, including a list of predefined relations, see Relations. + These attributes play a crucial role in organizing, categorising, and enhancing the functionality of notes. -![](Attributes_image.png) +## Viewing the list of attributes -## Labels +Both the labels and relations for the current note are displayed in the _Owned Attributes_ section of the Ribbon, where they can be viewed and edited. Inherited attributes are displayed in the _Inherited Attributes_ section of the ribbon, where they can only be viewed. -Labels in Trilium can be used for a variety of purposes: - -* **Metadata**: Assign labels with optional values for categorization, such as `#year=1999`, `#genre="sci-fi"`, or `#author="Neal Stephenson"` -* **Configuration**: Labels can configure advanced features or settings -* **Scripts and Plugins**: Used to tag notes with special metadata, such as the "weight" attribute in the [Weight Tracker](Advanced%20Showcases/Weight%20Tracker.md) - -Labels are also searchable, enhancing note retrieval. - -### Common Labels for Advanced Configuration - -* `**disableVersioning**`: Disables automatic versioning, ideal for large, unimportant notes like script libraries -* `**versioningLimit**`: Used to limit the number of revisions for a single note -* `**calendarRoot**`: Marks the note as the root for [day notes](Advanced%20Showcases/Day%20Notes.md). Only one note should carry this label -* `**archived**`: Hides notes from default search results and dialogs -* `**excludeFromExport**`: Excludes notes and their subtrees from export operations -* `**run**`: Specifies events to trigger scripts (e.g., `frontendStartup`, `hourly`) -* `**runAtHour**`: Defines specific hours for scripts to run, used with `#run=hourly` -* `**disableInclusion**`: Prevents a script from being included in parent script executions -* `**sorted**`: Automatically sorts child notes alphabetically by title -* `**top**`: Keeps the note at the top of its parent's list, useful with `sorted` -* `**hidePromotedAttributes**`: Hides certain attributes in the note's display -* `**readOnly**`: Sets the note to read-only mode, applicable to text and code notes -* `**autoReadOnlyDisabled**`: Disables automatic read-only mode for large notes -* `**appCss**`: Marks CSS notes used to modify Trilium’s appearance -* `**appTheme**`: Marks full CSS themes available in Trilium's options -* `**cssClass**`: Adds a CSS class to the note's representation in the tree -* `**iconClass**`: Adds a CSS class to the note's icon, useful for distinguishing notes visually. See [note icons](../Basic%20Concepts%20and%20Features/Notes/Note%20Icons.md) -* `**pageSize**`: Specifies the number of items per page in note listings -* `**customRequestHandler**` **and** `**customResourceProvider**`: Refer to [Custom request handler](Custom%20Request%20Handler.md) -* `**widget**`: Marks a note as a custom widget, added to Trilium's component tree -* `**workspace**` **and related attributes**: See [Workspace](../Basic%20Concepts%20and%20Features/Navigation/Workspace.md) for more details -* `**searchHome**`: Specifies the parent for new search notes -* `**inbox**`: Designates a default location for new notes created via the sidebar -* `**sqlConsoleHome**`: Default location for SQL console notes -* `**bookmarked**` **and** `**bookmarkFolder**`: See [Bookmarks](../Basic%20Concepts%20and%20Features/Navigation/Bookmarks.md) -* `**shareXXX**`: See [Sharing](Sharing.md) -* `**keyboardShortcut**`: Assigns a keyboard shortcut to open the note -* `**displayRelations**` **and** `**hideRelations**`: Manages the display of note relations -* `**titleTemplate**`: See [Default note title](Default%20Note%20Title.md) -* `**template**`: Makes the note available as a template -* `**toc**`: Controls the visibility of the table of contents -* `**color**`: Defines the color of the note in the tree and links -* `**hideChildrenOverview**`: Hides child notes in the parent note's editor -* `**viewType**`: Sets the view of child notes (grid or list) - -## Relations - -Relations define connections between notes, similar to links. - -### Uses - -* **Metadata Relationships**: For example, linking a book note to an author note -* **Scripting**: Attaching scripts to events or conditions related to the note - -### Common Relations - -* **Event-based Relations**: Such as `runOnNoteCreation` or `runOnNoteChange`, which trigger scripts on specific actions -* **Other Relations**: Include `template`, `renderNote`, `widget`, and sharing-related relations +In the list of attributes, labels are prefixed with the `#` character whereas relations are prefixed with the `~` character. ## Multiplicity -Attributes in Trilium can be "multivalued", meaning multiple attributes with the same name can coexist. +Attributes in Trilium can be "multi-valued", meaning multiple attributes with the same name can co-exist. ## Attribute Definitions and Promoted Attributes -Special labels create "label/attribute" definitions, enhancing the organization and management of attributes. For more details, see [Promoted attributes](Attributes/Promoted%20Attributes.md). +Special labels create "label/attribute" definitions, enhancing the organization and management of attributes. For more details, see Promoted Attributes. ## Attribute Inheritance -Trilium supports attribute inheritance, allowing child notes to inherit attributes from their parents. For more information, see [Attribute inheritance](Attributes/Attribute%20Inheritance.md). \ No newline at end of file +Trilium supports attribute inheritance, allowing child notes to inherit attributes from their parents. For more information, see Attribute Inheritance. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance.md b/docs/User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance.md index 7c2040ec3..46c09879e 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance.md +++ b/docs/User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance.md @@ -1,25 +1,38 @@ # Attribute Inheritance -## 1\. Standard Inheritance +Inheritance refers to the process of having a [label](Labels.md) or a [relation](Relations.md) shared across multiple notes, generally in parent-child relations (or anywhere if using templates). + +## Standard Inheritance In Trilium, attributes can be automatically inherited by child notes if they have the `isInheritable` flag set to `true`. This means the attribute (a key-value pair) is applied to the note and all its descendants. -### Example Use Case +To make an attribute inheritable, simply use the visual editor for Labels or Relations. Alternatively, the attribute can be manually defined where `#myLabel=value` becomes `#myLabel(inheritable)=value` when inheritable. -The `archived` label can be set to be inheritable, allowing you to hide a whole subtree of notes from searches and other dialogs by applying this label at the top level. +As an example, the `archived` label can be set to be inheritable, allowing you to hide a whole subtree of notes from searches and other dialogs by applying this label at the top level. -## 2\. Copying Inheritance +Standard inheritance forces all the notes that are children (and sub-children) of a note to have that particular label or relation. If there is a need to have some notes not inherit one of the labels, then _copying inheritance_ or _template inheritance_ needs to be used instead. + +## Copying Inheritance Copying inheritance differs from standard inheritance by using a `child:` prefix in the attribute name. This prefix causes new child notes to automatically receive specific attributes from the parent note. These attributes are independent of the parent and will persist even if the note is moved elsewhere. -### How to Use +If a parent note has the label `#child:exampleAttribute`, all newly created child notes (one level deep) will inherit the `#exampleAttribute` label. This can be useful for setting default properties for notes in a specific section. -* **Syntax:** `#child:attributeName` -* **Chained Inheritance:** You can chain this inheritance, such as `#child:child:attributeName`, where each child down the hierarchy receives the appropriate attribute. +Similarly, for relations use `~child:myRelation`. -### Example +Due to the way it's designed, copying inheritance cannot be used to cascade infinitely within a hierarchy. For that use case, consider using either standard inheritance or templates. -If a parent note has the label `#child:exampleAttribute`, all newly created child notes will inherit the `#exampleAttribute` label. This can be useful for setting default properties for notes in a specific section. +### Chained inheritance -## 3\. Template Inheritance +It is possible to define labels across multiple levels of depth. For example, `#child:child:child:foo` applied to a root note would create: -Attributes can also be inherited from [templates](Template.md). When a new note is created using a template, it inherits the attributes defined in that template. This is particularly useful for maintaining consistency across notes that follow a similar structure or function. \ No newline at end of file +* `#child:child:foo` on the first-level children. +* `#child:foo` on the second-level children. +* `#foo` on the third-level children. + +Similarly, use `~child:child:child:foo` if dealing with relations. + +Do note that same as simple copying inheritance, the changes will not apply retroactively to existing notes in the hierarchy, it will only apply to the newly created notes. + +## Template Inheritance + +Attributes can also be inherited from Templates. When a new note is created using a template, it inherits the attributes defined in that template. This is particularly useful for maintaining consistency across notes that follow a similar structure or function. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Attributes/Labels.md b/docs/User Guide/User Guide/Advanced Usage/Attributes/Labels.md new file mode 100644 index 000000000..514eb8132 --- /dev/null +++ b/docs/User Guide/User Guide/Advanced Usage/Attributes/Labels.md @@ -0,0 +1,42 @@ +# Labels +A label is an [attribute](../Attributes.md) of a note which has a name and optionally a value. + +## Common use cases + +* **Metadata for personal use**: Assign labels with optional values for categorization, such as `#year=1999`, `#genre="sci-fi"`, or `#author="Neal Stephenson"`. This can be combined with Promoted Attributes to make their display more user-friendly. +* **Configuration**: Labels can configure advanced features or settings (see reference below). +* **Scripts and Plugins**: Used to tag notes with special metadata, such as the "weight" attribute in the Weight Tracker. + +## Creating a label using the visual editor + +1. Go to the _Owned Attributes_ section in the Ribbon. +2. Press the + button (_Add new attribute_) to the right. +3. Select _Add new label_ for the relation. + +> [!TIP] +> If you prefer keyboard shortcuts, press Alt+L while focused on a note or in the _Owned Attributes_ section to display the visual editor. + +While in the visual editor: + +* Set the desired name +* Optionally, set the value of the label. Labels can exist without a value. +* Check _Inheritable_ if the label should be inherited by the child notes as well. See Attribute Inheritance for more information. + +## Creating a label manually + +In the _Owned Attributes_ section in the Ribbon: + +* To create a label called `myLabel` with no value, simply type `#myLabel`. +* To create a label called `myLabel` with a value `value`, simply type `#myLabel=value`. +* If the value contains spaces, then the text must be quoted: `#myLabel="Hello world"`. +* If the string contains quotes (regardless of whether it has spaces), then the text must be quoted with apostrophes instead: `#myLabel='Hello "world"'`. +* To create an inheritable label called `myLabel`, simply write `#myLabel(inheritable)` for no value or `#myLabel(inheritable)=value` if there is a value. + +## Predefined labels + +This is a list of labels that Trilium natively supports. + +> [!TIP] +> Some labels presented here end with a `*`. That means that there are multiple labels with the same prefix, consult the specific page linked in the description of that label for more information. + +
                LabelDescription
                disableVersioningDisables automatic creation of Note Revisions for a particular note. Useful for e.g. large, but unimportant notes - e.g. large JS libraries used for scripting.
                versioningLimitLimits the maximum number of Note Revisions for a particular note, overriding the global settings.
                calendarRootMarks the note which should be used as root for Day Notes. Only one should be marked as such.
                archivedHides notes from default search results and dialogs. Archived notes can optionally be hidden in the Note Tree.
                excludeFromExportExcludes this note and its children when exporting.
                run, runOnInstance, runAtHourSee Events.
                disableInclusionScripts with this label won't be included into parent script execution.
                sorted

                Keeps child notes sorted by title alphabetically.

                When given a value, it will sort by the value of another label instead. If one of the child notes doesn't have the specified label, the title will be used for them instead.

                sortDirection

                If sorted is applied, specifies the direction of the sort:

                • ASC, ascending (default)
                • DESC, descending
                sortFoldersFirstIf sorted is applied, folders (notes with children) will be sorted as a group at the top, and the rest will be sorted.
                topIf sorted is applied to the parent note, keeps given note on top in its parent.
                hidePromotedAttributesHide Promoted Attributes on this note. Generally useful when defining inherited attributes, but the parent note doesn't need them.
                readOnlyMarks a note to be always be read-only, if it's a supported note (text, code, mermaid).
                autoReadOnlyDisabledDisables automatic read-only mode for the given note.
                appCssMarks CSS notes which are loaded into the Trilium application and can thus be used to modify Trilium's looks. See Custom app-wide CSS for more info.
                appThemeMarks CSS notes which are full Trilium themes and are thus available in Trilium options. See Theme development for more information.
                appThemeBaseSet to next, next-light, or next-dark to use the corresponding TriliumNext theme (auto, light or dark) as the base for a custom theme, instead of the legacy one. See Customize the Next theme for more information.
                cssClassValue of this label is then added as CSS class to the node representing given note in the Note Tree. This can be useful for advanced theming. Can be used in template notes.
                iconClassvalue of this label is added as a CSS class to the icon on the tree which can help visually distinguish the notes in the tree. Example might be bx bx-home - icons are taken from boxicons. Can be used in template notes.
                pageSizeSpecifies the number of items per page in Note List.
                customRequestHandlerSee Custom Request Handler.
                customResourceProviderSee Custom Resource Providers.
                widgetMarks this note as a custom widget which will be added to the Trilium component tree. See Custom Widgets for more information.
                searchHomeNew search notes will be created as children of this note (see Saved Search).
                workspace and related attributesSee Workspaces.
                inboxdefault inbox location for new notes - when you create a note using new note button in the sidebar, notes will be created as child notes in the note marked as with #inbox label.
                sqlConsoleHomeDefault location of SQL Console notes
                bookmarkedIndicates this note is a bookmark.
                bookmarkFolderNote with this label will appear in bookmarks as folder (allowing access to its children). See Bookmarks for more information.
                share*See the attribute reference in Sharing.
                displayRelations, hideRelationsComma delimited names of relations which should be displayed/hidden in a Relation Map (both the note type and the Note Map (Link map, Tree map) general functionality).
                titleTemplate

                Default title of notes created as children of this note. This value is evaluated as a JavaScript string and thus can be enriched with dynamic content via the injected now and parentNote variables.

                Examples:

                • ${parentNote.getLabel('authorName')}'s literary works
                • Log for ${now.format('YYYY-MM-DD HH:mm:ss')}
                • to mirror the parent's template.

                See Default Note Title for more info.

                templateThis note will appear in the selection of available template when creating new note. See Templates for more information.
                tocControls the display of the Table of contents for a given note. #toc or #toc=show to always display the table of contents, #toc=false to always hide it.
                colordefines color of the note in note tree, links etc. Use any valid CSS color value like 'red' or #a13d5f
                keyboardShortcutDefines a keyboard shortcut which will immediately jump to this note. Example: 'ctrl+alt+e'. Requires frontend reload for the change to take effect.
                keepCurrentHoistingOpening this link won't change hoisting even if the note is not displayable in the current hoisted subtree.
                executeButtonTitle of the button which will execute the current code note
                executeDescriptionLonger description of the current code note displayed together with the execute button
                excludeFromNoteMapNotes with this label will be hidden from the Note Map.
                newNotesOnTopNew notes will be created at the top of the parent note, not on the bottom.
                hideHighlightWidgetHides the Highlights list widget
                hideChildrenOverviewHides the Note List for that particular note.
                printLandscapeWhen exporting to PDF, changes the orientation of the page to landscape instead of portrait.
                printPageSizeWhen exporting to PDF, changes the size of the page. Supported values: A0, A1, A2, A3, A4, A5, A6, Legal, Letter, Tabloid, Ledger.
                geolocationIndicates the latitude and longitude of a note, to be displayed in a Geo Map.
                calendar:*Defines specific options for the Calendar View.
                viewTypeSets the view of child notes (e.g. grid or list). See Note List for more information.
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes.md b/docs/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes.md index 6b8cb27fc..1186aacaa 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes.md +++ b/docs/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes.md @@ -1,7 +1,7 @@ # Promoted Attributes Promoted attributes are [attributes](../Attributes.md) which are considered important and thus are "promoted" onto the main note UI. See example below: -![](../../Attachments/promoted-attributes.png) +![](Promoted%20Attributes_promot.png) You can see the note having kind of form with several fields. Each of these is just regular attribute, the only difference is that they appear on the note itself. diff --git a/docs/User Guide/User Guide/Attachments/promoted-attributes.png b/docs/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes_promot.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/promoted-attributes.png rename to docs/User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes_promot.png diff --git a/docs/User Guide/User Guide/Advanced Usage/Attributes/Relations.md b/docs/User Guide/User Guide/Advanced Usage/Attributes/Relations.md new file mode 100644 index 000000000..66f73e5e9 --- /dev/null +++ b/docs/User Guide/User Guide/Advanced Usage/Attributes/Relations.md @@ -0,0 +1,44 @@ +# Relations +A relation is similar to a [label](Labels.md), but instead of having a text value it refers to another note. + +## Common use cases + +* **Metadata Relationships for personal use**: For example, linking a book note to an author note. + This can be combined with Promoted Attributes to make their display more user-friendly. +* **Configuration**: For configuring some notes such as Render Note, or configuring Sharing or Templates (see the list below). +* **Scripting**: Attaching scripts to events or conditions related to the note. + +## Creating a relation using the visual editor + +1. Go to the _Owned Attributes_ section in the Ribbon. +2. Press the + button (_Add new attribute_) to the right. +3. Select _Add new relation_ for the relation. + +> [!TIP] +> If you prefer keyboard shortcuts, press Alt+L while focused on a note or in the _Owned Attributes_ section to display the visual editor. + +While in the visual editor: + +* Set the desired name +* Set the Target note (the note to point to). Unlike labels, relations cannot exist with a target note. +* Check _Inheritable_ if the label should be inherited by the child notes as well. See Attribute Inheritance for more information. + +## Creating a relation manually + +In the _Owned Attributes_ section in the Ribbon: + +* To create a relation called `myRelation`: + * First type `~myRelation=@` . + * After this, an autocompletion box should appear. + * Type the title of the note to point to and press Enter to confirm (or click the desired note). + * Alternatively copy a note from the Note Tree and paste it after the `=` sign (without the `@` , in this case). +* To create an inheritable relation, follow the same steps as previously described but instead of `~myRelation` write `~myRelation(inheritable)`. + +## Predefined relations + +These relations are supported and used internally by Trilium. + +> [!TIP] +> Some relations presented here end with a `*`. That means that there are multiple relations with the same prefix, consult the specific page linked in the description of that relation for more information. + +
                LabelDescription
                runOn*See Events
                templatenote's attributes will be inherited even without a parent-child relationship, note's content and subtree will be added to instance notes if empty. See documentation for details.
                inheritnote's attributes will be inherited even without a parent-child relationship. See Templates for a similar concept. See Attribute Inheritance in the documentation.
                renderNotenotes of type Render Note will be rendered using a code note (HTML or script) and it is necessary to point using this relation to which note should be rendered
                widget_relationtarget of this relation will be executed and rendered as a widget in the sidebar
                shareCssCSS note which will be injected into the share page. CSS note must be in the shared sub-tree as well. Consider using share_hidden_from_tree and share_omit_default_css as well.
                shareJsJavaScript note which will be injected into the share page. JS note must be in the shared sub-tree as well. Consider using share_hidden_from_tree.
                shareTemplateEmbedded JavaScript note that will be used as the template for displaying the shared note. Falls back to the default template. Consider using share_hidden_from_tree.
                shareFaviconFavicon note to be set in the shared page. Typically you want to set it to share root and make it inheritable. Favicon note must be in the shared sub-tree as well. Consider using share_hidden_from_tree.
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Attributes_image.png b/docs/User Guide/User Guide/Advanced Usage/Attributes_image.png index 2ea269012..bb52b5001 100644 Binary files a/docs/User Guide/User Guide/Advanced Usage/Attributes_image.png and b/docs/User Guide/User Guide/Advanced Usage/Attributes_image.png differ diff --git a/docs/User Guide/User Guide/Advanced Usage/Bulk Actions.md b/docs/User Guide/User Guide/Advanced Usage/Bulk Actions.md new file mode 100644 index 000000000..e6a10a123 --- /dev/null +++ b/docs/User Guide/User Guide/Advanced Usage/Bulk Actions.md @@ -0,0 +1,87 @@ +# Bulk Actions +
                + +The _Bulk Actions_ dialog makes it easy to apply changes to multiple notes at once, ranging from simple actions such as adding or removing a label to being executing custom scripts. + +## Interaction + +* The first step is to select the notes in the Note Tree. It's possible to apply bulk actions to: + * A single note (and potentially its child notes) simply by clicking on it (with a left click or a right click). + * Multiple notes. See Multiple selection on how to do so. +* Right click in the Note Tree and select _Advanced_ → _Apply bulk actions_. +* By default, only the selected notes will be affected. To also include all the descendants of the notes, check _Include descendants of the selected notes_. The number of affected notes at the top of the dialog will update to reflect the change. +* Click on which action to apply from the _Available actions_ section. A detailed description of each is available in the next section. + * For each action selected, the _Chosen actions_ section will update to reveal the entry. Each action will have its own configuration. + * To remove an action, simply press the X button to the right of it. + * It is possible to apply multiple actions of the same type, such as adding multiple types. +* When all the actions are defined, press _Execute bulk actions_ to trigger all of them at once. +* For convenience, the last bulk action configuration is saved for further use and will be restored when entering the dialog again. + +## Actions + +### Labels + +These actions operate the Labels of a note: + +* **Add label** + * For each note, if it doesn't already have a [label](Attributes/Labels.md) of the given name, it will create it. Keep the _New value_ field empty to create a label without a value, or complete it to assign a value. + * If a note already has this label, its value will be updated. +* **Update label value** + * For each note, if it has a [label](Attributes/Labels.md) of the given name, it will change its value to the specified one. Leave _New value_ field empty to create a label without a value. + * Notes without the label will not be affected. +* _**Rename label**_ + * For each note, if it has a [label](Attributes/Labels.md) of the given name, it will be renamed/replaced with a label of the new name. The value of the label (if present) will be kept intact. + * Notes without the label will not be affected. +* **Delete label** + * For each note, if it has a label of a given name, it will be deleted (regardless of whether it has a value or not). + * Notes without the label will not be affected. + +### Relations + +These actions operate the Relations of a note: + +* **Add relation** + * For each note, it will create a relation pointing to the given note. + * Notes without this relation will not be affected. +* **Update relation target** + * For each note, it will modify a relation to point to the newly given note. + * Notes without this relation will not be affected. +* **Rename relation** + * For each note, if it has a relation of the given name, it will be renamed/replaced with a relation of the new name. The target note of the relation will be kept intact. + * Notes without this relation will not be affected. +* **Delete relation** + * For each note, if it has a relation of the given name, it will be deleted. + * Notes without this relation will not be affected. + +### Notes + +* **Rename note** + * For each note, it will change the title of the note to the given one. + * As a more advanced use case, the note can be a “template string” which allows for dynamic values with access to the note information via FNote, for example: + * `NEW: ${note.title}` will prefix all notes with `NEW:` . + * `${note.dateCreatedObj.format('MM-DD:')}: ${note.title}` will prefix the note titles with each note's creation date (in month-day format). +* **Move note** + * For each note, it will be moved to the specified parent note. + * As an alternative for less complex situations, the notes can be moved directly from within the Note Tree via cut → paste or via the contextual menu. +* **Delete note** + * For each note, it will be deleted. + * As an alternative for less complex situations, the notes can be removed directly from within the Note Tree by selecting them and pressing Delete. +* **Delete note revisions** + * This will delete all the Note Revisions of the notes. + +### Others + +* **Execute script** + * For more complex scenarios, it is possible to type in a JavaScript expression in order to apply the necessary changes. + * Examples: + * To apply a suffix (`- suffix` in this example), to the note title: + + ```javascript + note.title = note.title + " - suffix"; + ``` + + * To alter attributes of a note based on another attribute, such as setting the `#shareAlias` label to the title of the note: + + ```javascript + note.setLabel("shareAlias", note.title) + ``` \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Bulk Actions_image.png b/docs/User Guide/User Guide/Advanced Usage/Bulk Actions_image.png new file mode 100644 index 000000000..ea73dd92b Binary files /dev/null and b/docs/User Guide/User Guide/Advanced Usage/Bulk Actions_image.png differ diff --git a/docs/User Guide/User Guide/Advanced Usage/Bulk actions.md b/docs/User Guide/User Guide/Advanced Usage/Bulk actions.md deleted file mode 100644 index c87a42e5f..000000000 --- a/docs/User Guide/User Guide/Advanced Usage/Bulk actions.md +++ /dev/null @@ -1,16 +0,0 @@ -# Bulk actions -### Execute script - -For more complex scenarios, it is possible to type in a JavaScript expression in order to apply the necessary changes. - -To apply a suffix (`- suffix` in this example), to the note title: - -```javascript -note.title = note.title + " - suffix"; -``` - -To alter attributes of a note in a bulk action, such as setting the `#shareAlias` label to the title of the note: - -```javascript -note.setLabel("shareAlias", note.title) -``` \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance.md b/docs/User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance.md new file mode 100644 index 000000000..6c69aff5e --- /dev/null +++ b/docs/User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance.md @@ -0,0 +1,19 @@ +# Trilium instance +A Trilium instance represents a server. If Synchronization is set up, since multiple servers are involved (the one from the desktop client and the one the synchronisation is set up with), sometimes it can be useful to distinguish the instance you are running on. + +## Setting the instance name + +To set up a name for the instance, modify the `config.ini`: + +``` +[General] +instanceName=Hello +``` + +## Distinguishing the instance on back-end + +Use `api.getInstanceName()` to obtain the instance name of the current server, as specified in the config file or in environment variables. + +## Limiting script runs based on instance + +For a script that is run periodically or on a certain event, it's possible to limit it to certain instances without having to change the code. Just add `runOnInstance` and set as the value the instance name where the script should run. To run on multiple named instances, simply add the label multiple times. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Custom Request Handler.md b/docs/User Guide/User Guide/Advanced Usage/Custom Request Handler.md index 3b1e52cf1..60306d76f 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Custom Request Handler.md +++ b/docs/User Guide/User Guide/Advanced Usage/Custom Request Handler.md @@ -1,5 +1,5 @@ # Custom Request Handler -Trilium provides a mechanism for [scripts](../Note%20Types/Code/Scripts.md) to open a public REST endpoint. This opens a way for various integrations with other services - a simple example would be creating new note from Slack by issuing a slash command (e.g. `/trilium buy milk`). +Trilium provides a mechanism for [scripts](../Scripting.md) to open a public REST endpoint. This opens a way for various integrations with other services - a simple example would be creating new note from Slack by issuing a slash command (e.g. `/trilium buy milk`). ## Create note from outside Trilium @@ -53,7 +53,7 @@ Trilium will then find our code note created above and execute it. `api.req`, `a In the code note we check the request method and then use trivial authentication - keep in mind that these endpoints are by default totally unauthenticated, and you need to take care of this yourself. -Once we pass these checks we will just create the desired note using [Script API](../Note%20Types/Code/Script%20API.md). +Once we pass these checks we will just create the desired note using [Script API](../Scripting/Script%20API.md). ## Custom resource provider diff --git a/docs/User Guide/User Guide/Advanced Usage/Database.md b/docs/User Guide/User Guide/Advanced Usage/Database.md index e0ce389fb..a6dae59da 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Database.md +++ b/docs/User Guide/User Guide/Advanced Usage/Database.md @@ -3,24 +3,9 @@ Your Trilium data is stored in a [SQLite](https://www.sqlite.org) database which ## Demo Notes -When you run Trilium for the first time, it will generate a new database containing demo notes. These notes showcase its many features, such as: +When first starting Trilium, it will provide a set of notes to showcase various features of the application. -* [Relation Map](../Note%20Types/Relation%20Map.md) -* [Day Notes](Advanced%20Showcases/Day%20Notes.md) -* [Weight Tracker](Advanced%20Showcases/Weight%20Tracker.md) -* [Task Manager](Advanced%20Showcases/Task%20Manager.md) -* [Custom CSS Themes](../Basic%20Concepts%20and%20Features/Themes.md) - -### Restoring Demo Notes - -There are some cases in which you may want to restore the original demo notes. For example, if you experimented with some of the more advanced features and want to see the original reference, or if you simply want to explore the latest version of the demo notes, which might showcase new features. - -You can easily restore the demo notes by using Trilium's built-in import feature by importing them: - -* Download [this .zip archive](https://github.com/TriliumNext/Notes/raw/develop/db/demo.zip) with the latest version of the demo notes -* Right click on any note in your tree under which you would like the demo notes to be imported -* Click "Import into note" -* Select the .zip archive to import it +For more information see Demo Notes. ## Manually Modifying the Database diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/Demo Notes.md b/docs/User Guide/User Guide/Advanced Usage/Database/Demo Notes.md new file mode 100644 index 000000000..b68a3f67d --- /dev/null +++ b/docs/User Guide/User Guide/Advanced Usage/Database/Demo Notes.md @@ -0,0 +1,19 @@ +# Demo Notes +When you run Trilium for the first time, it will generate a new database containing demo notes. These notes showcase its many features, such as: + +* Relation Map +* Day Notes +* Weight Tracker +* Task Manager +* Themes + +### Restoring Demo Notes + +There are some cases in which you may want to restore the original demo notes. For example, if you experimented with some of the more advanced features and want to see the original reference, or if you simply want to explore the latest version of the demo notes, which might showcase new features. + +You can easily restore the demo notes by using Trilium's built-in import feature by importing them: + +* Download [this .zip archive](https://github.com/TriliumNext/Notes/raw/develop/db/demo.zip) with the latest version of the demo notes +* Right click on any note in your tree under which you would like the demo notes to be imported +* Click "Import into note" +* Select the .zip archive to import it \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database.md b/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database.md index e91260892..361e27f77 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database.md +++ b/docs/User Guide/User Guide/Advanced Usage/Database/Manually altering the database.md @@ -7,7 +7,7 @@ If you are doing any advanced development or troubleshooting where you manually The SQL Console is Trilium's built-in database editor. -See [SQL Console](Manually%20altering%20the%20database/SQL%20Console.md). +See SQL Console. ## Externally modifying the database diff --git a/docs/User Guide/User Guide/Advanced Usage/Default Note Title.md b/docs/User Guide/User Guide/Advanced Usage/Default Note Title.md index 1f1a17ded..1b4e575bf 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Default Note Title.md +++ b/docs/User Guide/User Guide/Advanced Usage/Default Note Title.md @@ -17,14 +17,16 @@ And all children of "2022 Books" will be created with initial title "\[Author na The value of `#titleTemplate` is evaluated at the point of note's creation as a JavaScript string, which means it can be enriched with the help of JS string interpolation with dynamic data. -As an example, imagine you collect server outage incidents and write some notes. It looks like this: +Second variable injected is `parentNote` which gives access to the parent [`FNote`](../Scripting/Script%20API/Frontend%20API/FNote.md). -* Incidents - * 2022-05-09: System crash - * 2022-05-15: Backup delay +See also Templates which provides similar capabilities, including default note's content. -You can automatize the date assignment by assigning a label `#titleTemplate="${now.format('YYYY-MM-DD')}: "` to the parent note "Incidents". Whenever a new child note is created, the title template is evaluated with the injected [now](https://day.js.org/docs/en/display/format) object. +### Examples -Second variable injected is [parentNote](https://triliumnext.github.io/Notes/backend_api/BNote.html), an example could be `#titleTemplate="${parentNote.getLabelValue('authorName')}'s literary works"`. - -See also \[\[[template](Attributes/Template.md)\]\] which provides similar capabilities, including default note's content. \ No newline at end of file +* Imagine you collect server outage incidents and write some notes. It looks like this: + * Incidents + * 2022-05-09: System crash + * 2022-05-15: Backup delay + * You can automatize the date assignment by assigning a label `#titleTemplate="${now.format('YYYY-MM-DD')}: "` to the parent note "Incidents". Whenever a new child note is created, the title template is evaluated with the injected [now](https://day.js.org/docs/en/display/format) object. +* To use a parent's attribute in the title of new notes: `#titleTemplate="${parentNote.getLabelValue('authorName')}'s literary works"` +* To mirror the parent's note title: `${parentNote.title}` \ No newline at end of file diff --git a/docs/User Guide/User Guide/Developer Guides/REST API/ETAPI/API Reference.dat b/docs/User Guide/User Guide/Advanced Usage/ETAPI (REST API)/API Reference.dat similarity index 100% rename from docs/User Guide/User Guide/Developer Guides/REST API/ETAPI/API Reference.dat rename to docs/User Guide/User Guide/Advanced Usage/ETAPI (REST API)/API Reference.dat diff --git a/docs/User Guide/User Guide/Advanced Usage/Hidden Notes.md b/docs/User Guide/User Guide/Advanced Usage/Hidden Notes.md new file mode 100644 index 000000000..615719698 --- /dev/null +++ b/docs/User Guide/User Guide/Advanced Usage/Hidden Notes.md @@ -0,0 +1,18 @@ +# Hidden Notes +
                + +For easy extensibility, a lot of features in Trilium make use of actual notes to store information as opposed to having them stored in a separate location in the database. This allows some functions such as AttributesRelations or even Search and Links to be able to operate on them. + +As the name suggests, these notes are hidden to the user by default to prevent cluttering the note tree and to prevent them from being accidentally deleted. + +The hidden notes are stored in the user's Database just like normal notes, but they have a unique Note ID which allows them to be distinguished from the normal ones. + +## Accessing the hidden note tree + +From the Global menu, select _Advanced_ → _Show Hidden Subtree_. + +## Contents of the hidden note tree + +Here is a brief summary of all the notes within the hidden tree: + +
                NoteDescription
                Note Map

                This note is actually opened when the Note Map feature that is accessed from the Launch Bar.

                It is possible to create any child notes in it without any additional meaning. For example, it can be used to store a list of note maps which can be linked to from other notes or bookmarked.

                SQL Console History

                When SQL queries or commands are executed in the SQL Console, they are stored here, grouped by month. Only the query is stored and not the results.

                This section can be accessed without going to the hidden tree by simply going to the Global menu and selecting Advanced → Open SQL Console History.

                Notes can be added as children of this tree, but it's generally not recommended to do so to not interfere with the normal history process.

                Search History

                Whenever a search is executed from the full Search, the query will be stored here, grouped by month. Only the search parameters are stored and not the results themselves.

                This section can be accessed without going to the hidden tree by simply going to the Global menu and selecting Advanced → Open Search History.

                Notes can be added as children of this tree, but it's generally not recommended to do so to not interfere with the normal history process.

                Bulk Action

                This section is used for Bulk Actions. The last configuration for bulk actions will be stored as part of this note, each action in its own action label.

                Notes can be added as children of this tree, but there won't be any benefit in doing so.

                Backend Log

                This note corresponds to the backend log feature (see Error logs).

                This item can be accessed without going to the hidden try by going to the Global menu and selecting Advanced → Show backend log.

                User HiddenThis section can be used by scripts to create their own notes that should not be directly visible to the user. The note can be identified by scripts by its unique ID: _userHidden
                Launch Bar Templates

                This section contains the templates for the creation of launchers in the Launch Bar. It is not possible to create child notes here.

                Theoretically some of the notes here can be customized, but there's not much benefit to be had in doing so.

                Shared Notes

                This tree lists all of the notes that are shared publicly. It can be useful to track down which notes are shared regardless of their position in the note tree.

                This section can be accessed without going to the hidden tree simply by going to the Global menu and selecting Show Shared Notes Subtree.

                Sub-notes cannot be created here.

                Launch Bar

                The tree contains both available and displayed items of the Launch Bar.

                This section can be accessed without going to the hidden tree by:

                • Going to the Global menu and selecting Configure Launchbar.
                • Right-clicking an empty space on the Launch Bar and selecting Configure Launchbar.

                Sub-notes cannot be created here.

                Options

                This section stores the list of Options.

                This section can be accessed without going to the hidden tree by:

                Mobile Launch Bar

                This is very similar to the Launch Bar, but is dedicated for the mobile UI only.

                Accessing it outside the Launch Bar is the same as the Launch Bar, but needs to be done so from the mobile interface.

                User GuideThis is where the note structure for the User Guide is actually stored. Only the metadata is stored, as the help itself is present as actual files in the application directory.
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Hidden Notes_image.png b/docs/User Guide/User Guide/Advanced Usage/Hidden Notes_image.png new file mode 100644 index 000000000..60c4c4802 Binary files /dev/null and b/docs/User Guide/User Guide/Advanced Usage/Hidden Notes_image.png differ diff --git a/docs/User Guide/User Guide/Developer Guides/REST API/Internal API/API Reference.dat b/docs/User Guide/User Guide/Advanced Usage/Internal API/API Reference.dat similarity index 100% rename from docs/User Guide/User Guide/Developer Guides/REST API/Internal API/API Reference.dat rename to docs/User Guide/User Guide/Advanced Usage/Internal API/API Reference.dat diff --git a/docs/User Guide/User Guide/Advanced Usage/Note ID.md b/docs/User Guide/User Guide/Advanced Usage/Note ID.md index e69de29bb..f8f0dcd6c 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Note ID.md +++ b/docs/User Guide/User Guide/Advanced Usage/Note ID.md @@ -0,0 +1,16 @@ +# Note ID +Whereas some applications use file names to uniquely identify notes, Trilium uses the concept of Note ID. + +Generally, the Note ID is a 12-character long alphanumeric sequence (including both lower and upper case letter) that is randomly generated for each new note. + +## How does the import/export affect the note IDs + +When notes are exported, their note ID is kept in the metadata of the export. However when they are imported back in, a new note ID is generated for all the notes. This also includes other entities that are part of the import/export process such as Attachments. + +## Note collisions + +Since the Note ID is a fixed-width randomly generated number, due to the [pigeonhole principle](https://en.wikipedia.org/wiki/Pigeonhole_principle), there is a possibility that a newly created note will have the same ID as an existing note. + +Since the note ID is alphanumeric and the length is 12 we have $62^{12}$ unique IDs. However since we are generating them randomly, we can use a collision calculator such as the one for [Nano ID](https://alex7kom.github.io/nano-nanoid-cc/?alphabet=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&size=12&speed=1000&speedUnit=hour) to determine that we'd need to create 1000 notes per hour every hour for 9 centuries in order to have at least 1% probability of a note collision. + +As such, Trilium does not take any explicit action against potential note collisions, similar to other software that makes uses of unique hashes such as [Git](https://stackoverflow.com/questions/10434326/hash-collision-in-git). If one would theoretically occur, what would most likely happen is that the existing note will be replaced by the new one. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Note source.md b/docs/User Guide/User Guide/Advanced Usage/Note source.md index 7f808d430..7cf1f712e 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Note source.md +++ b/docs/User Guide/User Guide/Advanced Usage/Note source.md @@ -1,17 +1,17 @@ # Note source ## Understanding the source code of the different notes -Internally, the structure of the content of each note is different based on the [Note Types](../Note%20Types). +Internally, the structure of the content of each note is different based on the Note Types. For example: -* [Text Notes](#root/_hidden/_options/_optionsTextNotes) are represented internally as HTML, using the [CKEditor](Technologies%20used/CKEditor.md) representation. Note that due to the custom plugins, some HTML elements are specific to Trilium only, for example the admonitions. -* [Code Notes](#root/_hidden/_options/_optionsCodeNotes) are plain text and are represented internally as-is. -* [Geo map](../Note%20Types/Geo%20map.md) notes contain only minimal information (viewport, zoom) as a JSON. -* [Canvas](../Note%20Types/Canvas.md) notes are represented as JSON, with Trilium's own information alongside with [Excalidraw](Technologies%20used/Excalidraw.md)'s internal JSON representation format. -* [Mind Map](../Note%20Types/Mind%20Map.md) notes are represented as JSON, with the internal format of [MindElixir](Technologies%20used/MindElixir.md). +* Text notes are represented internally as HTML, using the CKEditor representation. Note that due to the custom plugins, some HTML elements are specific to Trilium only, for example the admonitions. +* Code notes are plain text and are represented internally as-is. +* Geo Map notes contain only minimal information (viewport, zoom) as a JSON. +* Canvas notes are represented as JSON, with Trilium's own information alongside with Excalidraw's internal JSON representation format. +* Mind Map notes are represented as JSON, with the internal format of MindElixir. -Note that some information is also stored as [Attachments](../Attachments). For example [Canvas](../Note%20Types/Canvas.md) notes use the attachments feature to store the custom libraries, and alongside with [Mind Map](../Note%20Types/Mind%20Map.md) and other similar note types it stores an SVG representation of the content for use in other features such as including in other notes, shared notes, etc. +Note that some information is also stored as Attachments. For example Canvas notes use the attachments feature to store the custom libraries, and alongside with Mind Map and other similar note types it stores an SVG representation of the content for use in other features such as including in other notes, shared notes, etc. Here's part of the HTML representation of this note, as it's stored in the database (but prettified). @@ -21,7 +21,7 @@ Here's part of the HTML representation of this note, as it's stored in the datab

                Internally, the structure of the content of each note is different based on the  - + Note Types . @@ -30,7 +30,7 @@ Here's part of the HTML representation of this note, as it's stored in the datab ## Viewing the source code -It is possible to view the source code of a note by pressing the contextual menu in [Note buttons](../Basic%20Concepts%20and%20Features/UI%20Elements/Note%20buttons.md) and selecting _Note source_. +It is possible to view the source code of a note by pressing the contextual menu in Note buttons and selecting _Note source_. ![](Note%20source_image.png) diff --git a/docs/User Guide/User Guide/Advanced Usage/Sharing.md b/docs/User Guide/User Guide/Advanced Usage/Sharing.md index e8410df4d..17c8aa475 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Sharing.md +++ b/docs/User Guide/User Guide/Advanced Usage/Sharing.md @@ -3,24 +3,24 @@ Trilium allows you to share selected notes as **publicly accessible** read-only ## Prerequisites -To use the sharing feature, you must have a [server installation](../Installation%20%26%20Setup/Server%20Installation.md) of Trilium. This is necessary because the notes will be hosted from the server. +To use the sharing feature, you must have a Server Installation of Trilium. This is necessary because the notes will be hosted from the server. ## How to Share a Note 1. **Enable Sharing**: To share a note, toggle the `Shared` switch within the note's interface. Once sharing is enabled, an URL will appear, which you can click to access the shared note. - ![Share Note](../Attachments/share-single-note.png) + ![Share Note](Sharing_share-single-note.png) 2. **Access the Shared Note**: The link provided will open the note in your browser. If your server is not configured with a public IP, the URL will refer to `localhost (127.0.0.1)`. - ![Shared Note Example](../Attachments/share-single-note-web.png) + ![Shared Note Example](Sharing_share-single-note-.png) ## Sharing a Note Subtree When you share a note, you actually share the entire subtree of notes beneath it. If the note has child notes, they will also be included in the shared content. For example, sharing the "Formatting" subtree will display a page with basic navigation for exploring all the notes within that subtree. -![Shared Subtree Example](../Attachments/share-multiple-notes-web.png) +![Shared Subtree Example](Sharing_share-multiple-not.png) ## Viewing All Shared Notes @@ -40,7 +40,7 @@ To protect shared notes with a username and password, you can use the `#shareCre The default shared page is basic in design, but you can customize it using your own CSS: -* **Custom CSS**: Link a CSS [code note](../Note%20Types/Code.md) to the shared page by adding a `~shareCss` relation to the note. If you want this style to apply to the entire subtree, make the label inheritable. You can hide the CSS code note from the tree navigation by adding the `#shareHiddenFromTree` label. +* **Custom CSS**: Link a CSS Code note to the shared page by adding a `~shareCss` relation to the note. If you want this style to apply to the entire subtree, make the label inheritable. You can hide the CSS code note from the tree navigation by adding the `#shareHiddenFromTree` label. * **Omitting Default CSS**: For extensive styling changes, use the `#shareOmitDefaultCss` label to avoid conflicts with Trilium's [default stylesheet](../Basic%20Concepts%20and%20Features/Themes.md). ### Adding JavaScript @@ -71,7 +71,7 @@ Shared notes typically have URLs like `http://domain.tld/share/knvU8aJy4dJ7`, wh All shared notes are grouped under an automatically managed "Shared Notes" section. From here, you can view, share, or unshare notes by moving or cloning them within this section. -![Shared Notes List](../Attachments/shared-list.png) +![Shared Notes List](Sharing_shared-list.png) ### Setting a Custom Favicon @@ -81,12 +81,6 @@ To customize the favicon for your shared pages, create a relation `~shareFavicon You can designate a specific note or folder as the root of your shared content by adding the `#shareRoot` label. This note will be linked when visiting `[http://domain.tld/share](http://domain/share)`, making it easier to use Trilium as a fully-fledged website. Consider combining this with the `#shareIndex` label, which will display a list of all shared notes. -## Additional Options - -* **Raw Note Sharing**: Use the `#shareRaw` label to share a note without any HTML wrapper. -* **Disallow Robot Indexing**: Add the `#shareDisallowRobotIndexing` label to prevent search engines from indexing the shared page by including a `noindex, follow` meta tag and `X-Robots-Tag: noindex` header. -* **Shared Notes Index**: For text notes with the `#shareIndex` label, the content will display a list of all shared note roots. - ## Limitations While the sharing feature is powerful, it has some limitations: @@ -98,4 +92,8 @@ While the sharing feature is powerful, it has some limitations: * **Protected Notes**: Cannot be shared. * **Include Notes**: Not supported. -Some of these limitations may be addressed in future updates. \ No newline at end of file +Some of these limitations may be addressed in future updates. + +## Attribute reference + +

                AttributeDescription
                shareHiddenFromTreethis note is hidden from left navigation tree, but still accessible with its URL
                shareExternalLinknote will act as a link to an external website in the share tree
                shareAliasdefine an alias using which the note will be available under https://your_trilium_host/share/[your_alias]
                shareOmitDefaultCssdefault share page CSS will be omitted. Use when you make extensive styling changes.
                shareRootmarks note which is served on /share root.
                shareDescriptiondefine text to be added to the HTML meta tag for description
                shareRawNote will be served in its raw format, without HTML wrapper. See also Serving directly the content of a note for an alternative method without setting an attribute.
                shareDisallowRobotIndexing

                Indicates to web crawlers that the page should not be indexed of this note by:

                • Setting the X-Robots-Tag: noindex HTTP header.
                • Setting the noindex, follow meta tag.
                shareCredentialsrequire credentials to access this shared note. Value is expected to be in format username:password. Don't forget to make this inheritable to apply to child-notes/images.
                shareIndexNote with this label will list all roots of shared notes.
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/share-multiple-notes-web.png b/docs/User Guide/User Guide/Advanced Usage/Sharing_share-multiple-not.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/share-multiple-notes-web.png rename to docs/User Guide/User Guide/Advanced Usage/Sharing_share-multiple-not.png diff --git a/docs/User Guide/User Guide/Attachments/share-single-note-web.png b/docs/User Guide/User Guide/Advanced Usage/Sharing_share-single-note-.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/share-single-note-web.png rename to docs/User Guide/User Guide/Advanced Usage/Sharing_share-single-note-.png diff --git a/docs/User Guide/User Guide/Attachments/share-single-note.png b/docs/User Guide/User Guide/Advanced Usage/Sharing_share-single-note.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/share-single-note.png rename to docs/User Guide/User Guide/Advanced Usage/Sharing_share-single-note.png diff --git a/docs/User Guide/User Guide/Attachments/shared-list.png b/docs/User Guide/User Guide/Advanced Usage/Sharing_shared-list.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/shared-list.png rename to docs/User Guide/User Guide/Advanced Usage/Sharing_shared-list.png diff --git a/docs/User Guide/User Guide/Advanced Usage/Technologies used.md b/docs/User Guide/User Guide/Advanced Usage/Technologies used.md index a2ad1c814..5e4eb2b30 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Technologies used.md +++ b/docs/User Guide/User Guide/Advanced Usage/Technologies used.md @@ -1,4 +1,4 @@ # Technologies used -One core aspect of Trilium that allows it to have support for multiple [Note Types](../Note%20Types) is the fact that it makes use of various off-the-shelf or reusable libraries. +One core aspect of Trilium that allows it to have support for multiple [Note Types](../Note%20Types.md) is the fact that it makes use of various off-the-shelf or reusable libraries. The sub-pages showcase some of the technologies used, for a better understanding of how Trilium works but also to credit the developers of that particular technology. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md b/docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md index 02f245f00..55b5ef850 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md +++ b/docs/User Guide/User Guide/Advanced Usage/Technologies used/Leaflet.md @@ -1,5 +1,5 @@ # Leaflet -Leaflet is the library behind [Geo map](../../Note%20Types/Geo%20map.md) notes. +Leaflet is the library behind [Geo map](../../Note%20Types/Geo%20Map.md) notes. ## Plugins diff --git a/docs/User Guide/User Guide/Advanced Usage/Attributes/Template.md b/docs/User Guide/User Guide/Advanced Usage/Templates.md similarity index 59% rename from docs/User Guide/User Guide/Advanced Usage/Attributes/Template.md rename to docs/User Guide/User Guide/Advanced Usage/Templates.md index 77dbb400b..bd174e0f3 100644 --- a/docs/User Guide/User Guide/Advanced Usage/Attributes/Template.md +++ b/docs/User Guide/User Guide/Advanced Usage/Templates.md @@ -1,7 +1,7 @@ -# Template +# Templates A template in Trilium serves as a predefined structure for other notes, referred to as instance notes. Assigning a template to a note brings three main effects: -1. **Attribute Inheritance**: All attributes from the template note are [inherited](Attribute%20Inheritance.md) by the instance notes. Even attributes with `#isInheritable=false` are inherited by the instance notes, although only inheritable attributes are further inherited by the children of the instance notes. +1. **Attribute Inheritance**: All attributes from the template note are [inherited](Attributes/Attribute%20Inheritance.md) by the instance notes. Even attributes with `#isInheritable=false` are inherited by the instance notes, although only inheritable attributes are further inherited by the children of the instance notes. 2. **Content Duplication**: The content of the template note is copied to the instance note, provided the instance note is empty at the time of template assignment. 3. **Child Note Duplication**: All child notes of the template are deep-duplicated to the instance note. @@ -9,11 +9,11 @@ A template in Trilium serves as a predefined structure for other notes, referred A typical example would be a "Book" template note, which might include: -* **Promoted Attributes**: Such as publication year, author, etc. (see [promoted attributes](Promoted%20Attributes.md)). +* **Promoted Attributes**: Such as publication year, author, etc. (see [promoted attributes](Attributes/Promoted%20Attributes.md)). * **Outline**: An outline for a book review, including sections like themes, conclusion, etc. * **Child Notes**: Additional notes for highlights, summary, etc. -![Template Example](../../Attachments/template.png) +![Template Example](Templates_template.png) ## Instance Note @@ -21,9 +21,9 @@ An instance note is a note related to a template note. This relationship means t To create an instance note through the UI: -![show child note templates](../../Attachments/template-create-instance-n.png) +![show child note templates](Templates_template-create-.png) -For the template to appear in the menu, the template note must have the `#template` label. Do not confuse this with the `~template` relation, which links the instance note to the template note. If you use [workspaces](../../Basic%20Concepts%20and%20Features/Navigation/Workspace.md), you can also mark templates with `#workspaceTemplate` to display them only in the workspace. +For the template to appear in the menu, the template note must have the `#template` label. Do not confuse this with the `~template` relation, which links the instance note to the template note. If you use [workspaces](../Basic%20Concepts%20and%20Features/Navigation/Workspaces.md), you can also mark templates with `#workspaceTemplate` to display them only in the workspace. Templates can also be added or changed after note creation by creating a `~template` relation pointing to the desired template note. @@ -31,6 +31,6 @@ Templates can also be added or changed after note creation by creating a `~templ From a visual perspective, templates can define `#iconClass` and `#cssClass` attributes, allowing all instance notes (e.g., books) to display a specific icon and CSS style. -Explore the concept further in the [demo notes](../Database.md), including examples like the [Relation Map](../../Note%20Types/Relation%20Map.md), [Task Manager](../Advanced%20Showcases/Task%20Manager.md), and [Day Notes](../Advanced%20Showcases/Day%20Notes.md). +Explore the concept further in the [demo notes](Database.md), including examples like the [Relation Map](../Note%20Types/Relation%20Map.md), [Task Manager](Advanced%20Showcases/Task%20Manager.md), and [Day Notes](Advanced%20Showcases/Day%20Notes.md). -Additionally, see [default note title](../Default%20Note%20Title.md) for creating title templates. Note templates and title templates can be combined by creating a `#titleTemplate` for a template note. \ No newline at end of file +Additionally, see [default note title](Default%20Note%20Title.md) for creating title templates. Note templates and title templates can be combined by creating a `#titleTemplate` for a template note. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/template-create-instance-n.png b/docs/User Guide/User Guide/Advanced Usage/Templates_template-create-.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/template-create-instance-n.png rename to docs/User Guide/User Guide/Advanced Usage/Templates_template-create-.png diff --git a/docs/User Guide/User Guide/Attachments/template.png b/docs/User Guide/User Guide/Advanced Usage/Templates_template.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/template.png rename to docs/User Guide/User Guide/Advanced Usage/Templates_template.png diff --git a/docs/User Guide/User Guide/Attachments/Custom-widget image.png b/docs/User Guide/User Guide/Attachments/Custom-widget image.png deleted file mode 100644 index 768dbdb6b..000000000 Binary files a/docs/User Guide/User Guide/Attachments/Custom-widget image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/bookmarks.png b/docs/User Guide/User Guide/Attachments/bookmarks.png deleted file mode 100644 index 2d78ee1a1..000000000 Binary files a/docs/User Guide/User Guide/Attachments/bookmarks.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/button-script.png b/docs/User Guide/User Guide/Attachments/button-script.png deleted file mode 100644 index 466ff32ec..000000000 Binary files a/docs/User Guide/User Guide/Attachments/button-script.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/canvas-note-image.png b/docs/User Guide/User Guide/Attachments/canvas-note-image.png deleted file mode 100644 index 4ad24adf4..000000000 Binary files a/docs/User Guide/User Guide/Attachments/canvas-note-image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/chrome-trilium-web-clipper.png b/docs/User Guide/User Guide/Attachments/chrome-trilium-web-clipper.png deleted file mode 100644 index f1ac0e4e0..000000000 Binary files a/docs/User Guide/User Guide/Attachments/chrome-trilium-web-clipper.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/code-note.png b/docs/User Guide/User Guide/Attachments/code-note.png deleted file mode 100644 index 3e85223d3..000000000 Binary files a/docs/User Guide/User Guide/Attachments/code-note.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/custom-widget-image.png b/docs/User Guide/User Guide/Attachments/custom-widget-image.png deleted file mode 100644 index 768dbdb6b..000000000 Binary files a/docs/User Guide/User Guide/Attachments/custom-widget-image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/home-button.svg b/docs/User Guide/User Guide/Attachments/home-button.svg deleted file mode 100644 index 2136cb48d..000000000 --- a/docs/User Guide/User Guide/Attachments/home-button.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - button - Created with Sketch. - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/jump-to.gif b/docs/User Guide/User Guide/Attachments/jump-to.gif deleted file mode 100644 index 9521c9a8e..000000000 Binary files a/docs/User Guide/User Guide/Attachments/jump-to.gif and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/mermaid.png b/docs/User Guide/User Guide/Attachments/mermaid.png deleted file mode 100644 index 1c48d2aa6..000000000 Binary files a/docs/User Guide/User Guide/Attachments/mermaid.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/note-map.png b/docs/User Guide/User Guide/Attachments/note-map.png deleted file mode 100644 index ee7ef932a..000000000 Binary files a/docs/User Guide/User Guide/Attachments/note-map.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/promoted-attributes-queen.png b/docs/User Guide/User Guide/Attachments/promoted-attributes-queen.png deleted file mode 100644 index 3940c5239..000000000 Binary files a/docs/User Guide/User Guide/Attachments/promoted-attributes-queen.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/relation-map-family-demo.gif b/docs/User Guide/User Guide/Attachments/relation-map-family-demo.gif deleted file mode 100644 index b66dc05f4..000000000 Binary files a/docs/User Guide/User Guide/Attachments/relation-map-family-demo.gif and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/saved-search-image.gif b/docs/User Guide/User Guide/Attachments/saved-search-image.gif deleted file mode 100644 index 6f9433b9f..000000000 Binary files a/docs/User Guide/User Guide/Attachments/saved-search-image.gif and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/screenshot.png b/docs/User Guide/User Guide/Attachments/screenshot.png deleted file mode 100644 index 479906b1b..000000000 Binary files a/docs/User Guide/User Guide/Attachments/screenshot.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/split.png b/docs/User Guide/User Guide/Attachments/split.png deleted file mode 100644 index bb58e1834..000000000 Binary files a/docs/User Guide/User Guide/Attachments/split.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Attachments/text-notes-image.png b/docs/User Guide/User Guide/Attachments/text-notes-image.png deleted file mode 100644 index d88b6dacc..000000000 Binary files a/docs/User Guide/User Guide/Attachments/text-notes-image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown.md b/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown.md index 0a7a96142..de502a143 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown.md @@ -1,5 +1,5 @@ # Markdown -Trilium Notes supports importing Markdown restricted to the [CommonMark specification](https://spec.commonmark.org/current/) (where [tables are not supported](https://github.com/TriliumNext/Notes/issues/2026)) +Trilium supports Markdown for both import and export, while trying to keep compatibility as high as possible. ## Import @@ -7,7 +7,7 @@ Trilium Notes supports importing Markdown restricted to the [CommonMark specific If you want to import just a chunk of markdown from clipboard, you can do it from editor block menu: -![](../../Attachments/markdown-inline-import.gif) +![](Markdown_markdown-inline-i.gif) ### File import @@ -20,7 +20,7 @@ You can also import Markdown files from files: \[\[gifs/markdown-file-import.gif\]\] -![](../../Attachments/markdown-file-import.gif) +![](Markdown_markdown-file-imp.gif) ## Export @@ -28,14 +28,23 @@ You can also import Markdown files from files: You can export whole subtree to ZIP archive which will have directory structured modelled after subtree structure: -![](../../Attachments/markdown-export-subtree.gif) +![](Markdown_markdown-export-s.gif) ### Single note export If you want to export just single note without its subtree, you can do it from Note actions menu: -![](../../Attachments/markdown-export-note.gif) +![](Markdown_markdown-export-n.gif) ### Exporting protected notes -If you want to export protected notes, enter a protected session first! This will export the notes in an unencrypted form, so if you reimport into Trilium, make sure to re-protect these notes. \ No newline at end of file +If you want to export protected notes, enter a protected session first! This will export the notes in an unencrypted form, so if you reimport into Trilium, make sure to re-protect these notes. + +## Supported syntax + +* [GitHub-Flavored Markdown](https://github.github.com/gfm/) is the main syntax that Trilium is following. +* Images are supported. When exporting, images are usually kept in the basic Markdown syntax but will use the HTML syntax if the image has a custom width. Figures are always embedded as HTML. +* Tables are supported with the Markdown syntax. If the table is too complex or contains elements that would render as HTML, the table is also rendered as HTML. +* Admonitions are supported using GitHub's format. +* Links are supported. “Reference links” (internal links that mirror a note's title and display its icon) are embedded as HTML in order to preserve the information on import. +* Math equations are supported using `$` and `$$` syntaxes. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/markdown-export-note.gif b/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown_markdown-export-n.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/markdown-export-note.gif rename to docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown_markdown-export-n.gif diff --git a/docs/User Guide/User Guide/Attachments/markdown-export-subtree.gif b/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown_markdown-export-s.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/markdown-export-subtree.gif rename to docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown_markdown-export-s.gif diff --git a/docs/User Guide/User Guide/Attachments/markdown-file-import.gif b/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown_markdown-file-imp.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/markdown-file-import.gif rename to docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown_markdown-file-imp.gif diff --git a/docs/User Guide/User Guide/Attachments/markdown-inline-import.gif b/docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown_markdown-inline-i.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/markdown-inline-import.gif rename to docs/User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown_markdown-inline-i.gif diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/1_Jump to Note_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/1_Jump to Note_image.png new file mode 100644 index 000000000..4d0c2d14a Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/1_Jump to Note_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/1_Workspace_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/1_Workspaces_image.png similarity index 100% rename from docs/User Guide/User Guide/Basic Concepts and Features/Navigation/1_Workspace_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Navigation/1_Workspaces_image.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks.md b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks.md index 659d031fc..a0c6bdae2 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks.md @@ -1,12 +1,12 @@ # Bookmarks To easily access selected notes, you can bookmark them. See demo: -![](../../Attachments/bookmarks.gif) +![](Bookmarks_bookmarks.gif) ## Bookmark folder Space in the left panel is limited, and you might want to bookmark many items. One possible solution is to bookmark a folder, so it shows its children: -![](../../Attachments/bookmark-folder.png) +![](Bookmarks_bookmark-folder.png) To do this, you need to add a `#bookmarkFolder` label to the note. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/bookmark-folder.png b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks_bookmark-folder.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/bookmark-folder.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks_bookmark-folder.png diff --git a/docs/User Guide/User Guide/Attachments/bookmarks.gif b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks_bookmarks.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/bookmarks.gif rename to docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks_bookmarks.gif diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to Note.md b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to Note.md new file mode 100644 index 000000000..1019c2491 --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to Note.md @@ -0,0 +1,25 @@ +# Jump to Note +
                + +The _Jump to Note_ function allows easy navigation between notes by searching for their title. In addition to that, it can also trigger a full search or create notes. + +## Entering jump to note + +* In the Launch Bar, press ![](1_Jump%20to%20Note_image.png) button. +* Using the keyboard, press Ctrl + J. + +## Recent notes + +Jump to note also has the ability to show the list of recently viewed / edited notes and quickly jump to it. + +To access this functionality, click on `Jump to` button on the top. By default, (when nothing is entered into autocomplete), this dialog will show the list of recent notes. + +Alternatively you can click on the "time" icon on the right. + + + +## Interaction + +* By default, when there is no text entered it will display the most recent notes. +* Using the keyboard, use the up or down arrow keys to navigate between items. Press Enter to open the desired note. +* If the note doesn't exist, it's possible to create it by typing the desired note title and selecting the _Create and link child note_ option. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to Note_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to Note_image.png new file mode 100644 index 000000000..8614794e6 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to Note_image.png differ diff --git a/docs/User Guide/User Guide/Attachments/recent-notes.gif b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to Note_recent-notes.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/recent-notes.gif rename to docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to Note_recent-notes.gif diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting.md b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting.md index 40c7b1dbd..a6665943e 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting.md @@ -1,8 +1,8 @@ # Note Hoisting Hoisting is a standard outliner feature which allows you to focus on (or "zoom into") a specific note and its subtree by hiding all parent and sibling notes. Demo: -![](../../Attachments/note-hoisting.gif) +![](Note%20Hoisting_note-hoistin.gif) In addition to showing only this subtree, this also narrows both full text search and [“jump to note”](Note%20Navigation.md) to just notes present in hoisted subtree. -See also [Workspace](Workspace.md) which extends this feature. \ No newline at end of file +See also [Workspace](Workspaces.md) which extends this feature. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/note-hoisting.gif b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting_note-hoistin.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/note-hoisting.gif rename to docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting_note-hoistin.gif diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Navigation.md b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Navigation.md index aa0495066..3da220695 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Navigation.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Note Navigation.md @@ -11,16 +11,6 @@ This works identically to browser backwards / forwards, it's actually using buil ## Jump to note -This is useful to quickly find and view arbitrary note - click on `Jump to` button on the top or press Ctrl + J . Then type part of the note name and autocomplete will help you pick the desired note. +This is useful to quickly find and view arbitrary notes - click on `Jump to` button on the top or press Ctrl + J . Then type part of the note name and autocomplete will help you pick the desired note. -![](../../Attachments/jump-to.gif) - -### Recent notes - -Jump to note also has the ability to show the list of recently viewed / edited notes and quickly jump to it. - -To access this functionality, click on `Jump to` button on the top. By default, (when nothing is entered into autocomplete), this dialog will show the list of recent notes. - -Alternatively you can click on the "time" icon on the right. - -![](../../Attachments/recent-notes.gif) \ No newline at end of file +See Jump to Note for more information. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search.md b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search.md new file mode 100644 index 000000000..213156e1d --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search.md @@ -0,0 +1,15 @@ +# Quick search +
                + +The _Quick search_ function does a full-text search (that is, it searches through the content of notes and not just the title of a note) and displays the result in an easy-to-access manner. + +The alternative to the quick search is the Search function, which opens in a dedicated tab and has support for advanced queries. + +For even faster navigation, it's possible to use Jump to Note which will only search through the note titles instead of the content. + +## Layout + +Based on the Vertical and horizontal layout, the quick search is placed: + +* On the vertical layout, it is displayed right above the Note Tree. +* On the horizontal layout, it is displayed in the Launch Bar, where it can be positioned just like any other icon. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search_image.png new file mode 100644 index 000000000..0aab923e8 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note.md b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note.md new file mode 100644 index 000000000..5acbd01c9 --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note.md @@ -0,0 +1,29 @@ +# Search in note +
                + +Local search allows you to search within the currently displayed note.  + +## Alternatives + +* Pressing Ctrl+F while in a browser while not focused in a Text or a Code note will trigger the browser's native search. This will also find text that is part of Trilium's UI. +* Pressing Ctrl+F in a Text note will reveal CKEditor's search functionality. + +## Accessing the search + +* On desktop, pressCtrl + F +* From the Note buttons, look for the context menu and select _Search in note_. + +## Interaction + +* Finding: + * Fill in the _Find in text…_ with the text to search for. + * The search will be executed automatically in the background. + * Use up and down arrows of the text box to navigate between results. +* Replacing: + * Fill in the _Find in text_… field with the text to replace. + * Fill in the _Replace with…_ field the text to replace it with. + * Press _Replace_ to replace only the current result. + * Press _Replace all_ to replace all of them at once. +* Options: + * _Case sensitive_ – the search will distinguish upper case characters from lower case (e.g. searching for Hello will not match `hello`). + * _Match words_ - the search will find only exact word matches (e.g. searching for `Java` will not match `JavaScript`). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note_image.png new file mode 100644 index 000000000..a3aa784ea Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search.md b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search.md index 945acdfe5..fe7e029f6 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search.md @@ -1,13 +1,59 @@ # Search -## Local Search - -Local search allows you to search within the currently displayed note. To initiate a local search, press Ctrl + F. If using a web browser, this will be handled by the browser's native search functionality. In the desktop (electron) version, a separate dialog will apear. - -## Note Search +
                Note search enables you to find notes by searching for text in the title, content, or [attributes](../../Advanced%20Usage/Attributes.md) of the notes. You also have the option to save your searches, which will create a special search note which is visible on your navigation tree and contains the search results as sub-items. -To search for notes, click on the magnifying glass icon on the toolbar or press the Ctrl + S keyboard [shortcut](../Keyboard%20Shortcuts.md). +## Accessing the search + +* From the Launch Bar, look for the dedicated search button. +* To limit the search to a note and its children, select _Search from subtree_ from the Note tree contextual menu or press Ctrl+Shift+S. + +## Interaction + +To search for notes, click on the magnifying glass icon on the toolbar or press the keyboard [shortcut](../Keyboard%20Shortcuts.md). + +1. Set the text to search for in the _Search string_ field. + 1. Apart from searching for words ad-literam, there is also the possibility to search for attributes or properties of notes. + 2. See the examples below for more information. +2. To limit the search to a note and its sub-children, set a note in _Ancestor_. + 1. This value is also pre-filled if the search is triggered from a [hoisted note](Note%20Hoisting.md) or a [workspace](Workspaces.md). + 2. To search the entire database, keep the value empty. +3. To limit the search to only a few levels of hierarchy (e.g. look in sub-children but not in sub-sub-children of a note), set the _depth_ field to one of the provided values. +4. In addition to that, the search can be configured via the _Add search options_ buttons, as described in the follow-up section. +5. Press _Search_ to trigger the search. The results are displayed below the search configuration pane. +6. The _Search & Execute actions_ button is only relevant if at least one action has been added (as described in the section below). +7. The _Save to note_ will create a new note with the search configuration. For more information, see Saved Search. + +## Search options + +Click on which search option to apply from the Add search option section. + +* For each search option selected, the search configuration will update to reveal the entry. Each search option will have its own configuration. +* To remove a search option, simply press the X button to the right of it. + +The options available are: + +1. Search script + 1. This feature allows writing a Code note that will handle the search on its own. +2. Fast search + 1. The search will not look into the content of the notes, but it will still look into note titles and attributes, relations (based on the search query). + 2. This method can speed up the search considerably for large [databases](../../Advanced%20Usage/Database.md). +3. Include archived + 1. Archived Notes will also be included in the results, whereas otherwise they would be ignored. +4. Order by + 1. Allows changing the criteria for ordering the results, for example to order by creation date or alphabetically instead of by relevancy (default). + 2. It's also possible to change the order (ascending or descending) of the results. +5. Limit + 1. Limits the results to a given maximum. + 2. This can help if the number of results would otherwise be high, at the cost of not being able to view all the results. +6. Debug + 1. This will print additional information in the server log (see Error logs), regarding how the search expression was parsed. + 2. This function is especially useful after understanding the search functionality in detail, in order to determine why a complex search query is not working as expected. +7. Action + 1. Apart from just searching, it is also possible to apply actions such as to add a label or a relation to the notes that have been matched by the search. + 2. Unlike other search configurations, here it's possible to apply the same action multiple times (i.e. in order to be able to apply multiple labels to notes). + 3. The actions given are the same as the ones in Bulk Actions, which is an alternative for operating directly with notes within the Note Tree. + 4. After defining the actions, first press _Search_ to check the matched notes and then press _Search & Execute actions_ to trigger the actions. ### Simple Note Search Examples diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search_image.png new file mode 100644 index 000000000..dc70b2294 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Search_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes.md b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes.md index e69de29bb..883dccde5 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes.md @@ -0,0 +1,12 @@ +# Similar Notes +
                + +The Similar Notes feature tries to identify notes that relate to the current note by looking at the content of the notes, their relationships, as well as the date they were created. + +To access the list of similar notes, press the “Similar Notes” tab in the Ribbon. + +## Interaction + +* Hover over a note to see a short preview of the note. +* Click over a note to open it in the current view. +* Ctrl + click a note to open it in a separate tab. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes_image.png new file mode 100644 index 000000000..cefb34107 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspace.md b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspace.md deleted file mode 100644 index 32c33349d..000000000 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspace.md +++ /dev/null @@ -1,24 +0,0 @@ -# Workspace -Workspace is a concept built up on top of [note hoisting](Note%20Hoisting.md). It is based on the idea that a user has several distinct spheres of interest. An example might be "Personal" and "Work", these two spheres are quite distinct and don't interact together. When I focus on Work, I don't really care about personal notes. - -So far workspace consists of these features: - -* [note hoisting](Note%20Hoisting.md) - you can "zoom" into a workspace subtree to focus only on the relevant notes - -* easy entering of workspace:  - - ![](1_Workspace_image.png) - -* visual identification of workspace in tabs: - ![](Workspace_image.png) - - -### How to use workspaces - -Let's say you have identified the workspaces and their subtrees. Define on the root of this subtree following labels: - -* `#workspace` - Marks this note as a workspace, button to enter the workspace is controlled by this -* `#workspaceIconClass` - controls the box icon to be displayed in the tree and tabs, example `bx bx-home`. See [https://boxicons.com/](https://boxicons.com/) -* `#workspaceTabBackgroundColor` - Background color of the tab, use any CSS color format, e.g. "lightblue" or "#ddd". See [https://www.w3schools.com/cssref/css\_colors.asp](https://www.w3schools.com/cssref/css_colors.asp). -* `#workspaceCalendarRoot` - marking a note with this label will define a new per-workspace calendar. If there's no such note, the global calendar will be used. -* `#workspaceTemplate` - This note will appear in the selection of available templates when creating a new note, but only when you are currently hoisted into a workspace containing this template. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces.md b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces.md new file mode 100644 index 000000000..5584cea29 --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces.md @@ -0,0 +1,18 @@ +# Workspaces +Workspace is a concept built up on top of [note hoisting](Note%20Hoisting.md). It is based on the idea that a user has several distinct spheres of interest. An example might be "Personal" and "Work", these two spheres are quite distinct and don't interact together. When I focus on Work, I don't really care about personal notes. + +So far workspace consists of these features: + +* [note hoisting](Note%20Hoisting.md) - you can "zoom" into a workspace subtree to focus only on the relevant notes + +* easy entering of workspace:  + + ![](1_Workspaces_image.png) + +* visual identification of workspace in tabs: + ![](Workspaces_image.png) + + +### Configuration + +
                LabelDescription
                workspaceMarks this note as a workspace, button to enter the workspace is controlled by this
                workspaceIconClassdefines box icon CSS class which will be used in tab when hoisted to this note
                workspaceTabBackgroundColorCSS color used in the note tab when hoisted to this note, use any CSS color format, e.g. "lightblue" or "#ddd". See https://www.w3schools.com/cssref/css_colors.asp.
                workspaceCalendarRootMarking a note with this label will define a new per-workspace calendar for Day Notes. If there's no such note, the global calendar will be used.
                workspaceTemplateThis note will appear in the selection of available template when creating new note, but only when hoisted into a workspace containing this template
                workspaceSearchHomenew search notes will be created as children of this note when hoisted to some ancestor of this workspace note
                workspaceInboxdefault inbox location for new notes when hoisted to some ancestor of this workspace note
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspace_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces_image.png similarity index 100% rename from docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspace_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces_image.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes.md index 99cc9dff3..f8d870232 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes.md @@ -3,16 +3,9 @@ Note is a central entity in Trilium. Main attributes of note are title and conte ### Note types -* [text note](../Note%20Types/Text.md) - this is default note type which allows you to put rich text, images etc. -* [code note](../Note%20Types/Code.md) - some kind of formal code, typically programming language (e.g. JavaScript) or data structure (e.g. JSON) -* [image note](https://github.com/TriliumNext/Notes/wiki/Images) - represents single image -* file note - represents uploaded file (e.g. docx MS Word document). -* render HTML note - this works as an output screen of attached [scripts](../Note%20Types/Code/Scripts.md) -* [saved search](../Note%20Types/Saved%20Search.md) note - contains saved search query and dynamically displays result of the search as its sub-notes -* [relation map](../Note%20Types/Relation%20Map.md) note - visualizes notes and their relations -* [book note](../Note%20Types/Book.md) - displays its children notes, useful for reading many short notes -* mermaid - create diagrams and flowcharts using [mermaid.js ↗](https://github.com/mermaid-js/mermaid) -* [canvas note](#root/fKYGY3OOo5d1) - allows hand drawn notes and basic diagraming on an infinite canvas using [excalidraw ↗](https://github.com/excalidraw/excalidraw) +The main note type is a rich-text note type called Text. For diagrams and drawing there is Canvas and Mermaid Diagrams. + +There are also more complex note types such as Saved SearchRender Note that usually go hand-in-hand with Scripting. In Trilium there's no specific "folder" note type. Any note can have children and thus be a folder. @@ -22,7 +15,7 @@ There's one special note called "root note" which is root of the note tree. All ### Tree structure -Importantly, note itself doesn't carry information on its placement in note tree. See [cloning](Notes/Cloning%20Notes.md) for details. +Importantly, note itself doesn't carry information on its placement in note tree. See Cloning Notes for details. Tree structure of notes can resemble file system - but compared to that notes in Trilium can act as both file and directory - meaning that note can both have its own content and have children. "Leaf note" is a note which doesn't have any children. @@ -30,14 +23,14 @@ Tree structure of notes can resemble file system - but compared to that notes in When you delete a note in Trilium, it is actually only marked for deletion (soft-delete) - the actual content, title, attributes etc. are not deleted, only hidden. -Within (by default) 7 days, it is possible to undelete these soft-deleted notes - open Recent Changes dialog, and you will see a list of all modified notes including the deleted ones. Notes available for undeletion have a link to do so. This is kind of "trash can" functionality known from e.g. Windows. +Within (by default) 7 days, it is possible to undelete these soft-deleted notes - open the Recent Changes dialog, and you will see a list of all modified notes including the deleted ones. Notes available for undeletion have a link to do so. This is kind of "trash can" functionality known from e.g. Windows. Clicking an undelete will recover the note, it's content and attributes - note should be just as before being deleted. This action will also undelete note's children which have been deleted in the same action. To be able to undelete a note, it is necessary that deleted note's parent must be undeleted (otherwise there's no place where we can undelete it to). This might become a problem when you delete more notes in succession - the solution is then undelete in the reverse order of your deletion. -After the 7 days (configurable) the notes will be "erased" - their title, content, revisions and attributes will be erased, and it will not be possible anymore to recover them (unless you restore [backup](../Installation%20%26%20Setup/Backup.md)). +After the 7 days (configurable) the notes will be "erased" - their title, content, revisions and attributes will be erased, and it will not be possible anymore to recover them (unless you restore a Backup). ## See also -* [Read-only note](Notes/Read-Only%20Notes.md) \ No newline at end of file +* Read-Only Notes \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/1_Note List_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/1_Note List_image.png new file mode 100644 index 000000000..d9246e24d Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/1_Note List_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/2_Note List_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/2_Note List_image.png new file mode 100644 index 000000000..819562a41 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/2_Note List_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes.md index da64e051a..1b4519117 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes.md @@ -7,4 +7,4 @@ This can be useful for notes which are no longer very useful but still valuable You can control whether archived notes are displayed in the note tree with a setting: -![](../../Attachments/hide-archived.png) \ No newline at end of file +![](Archived%20Notes_hide-archiv.png) \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/hide-archived.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes_hide-archiv.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/hide-archived.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes_hide-archiv.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Attachments.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Attachments.md index 91076bef0..9a76975f1 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Attachments.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Attachments.md @@ -1,8 +1,21 @@ # Attachments A [note](../Notes.md) in Trilium can _own_ one or more attachments, which can be either images or files. These attachments can be displayed or linked within the note that owns them. -This can be especially useful to include dependencies for your [scripts](../../Note%20Types/Code/Scripts.md). The [Weight Tracker](../../Advanced%20Usage/Advanced%20Showcases/Weight%20Tracker.md) shows how to use [chartjs](https://chartjs.org/) which is attached to the [script note](#root/HcUYTojFohtb). +This can be especially useful to include dependencies for your [scripts](../../Scripting.md). The Weight Tracker shows how to use [chartjs](https://chartjs.org/) which is attached to the script note. Each note exclusively owns its attachments, meaning attachments cannot be shared or linked from one note to another. If an attachment link is copied to a different note, the attachment itself is duplicated, and the copies are managed independently thereafter. -Attachments, especially image files, are the recommended method for embedding visuals in notes. It is important to link image attachments within the text of the owning note; otherwise, they will be automatically deleted after a configurable timeout period if not referenced. \ No newline at end of file +Attachments, especially image files, are the recommended method for embedding visuals in notes. It is important to link image attachments within the text of the owning note; otherwise, they will be automatically deleted after a configurable timeout period if not referenced. + +## Converting notes to attachments + +File notes can be easily converted to attachments of the parent note. + +To do so: + +* For a single note, press the context menu from the Note buttons and select _Convert into attachment_. +* For multiple notes, select the given notes in the Note Tree, right click → Advanced → Convert to attachment. + +## Attachment previews + +Attachments share the same content preview for images, videos, PDFs, etc. as the File note type. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes.md index 9dec36737..d3017b329 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes.md @@ -43,7 +43,7 @@ So now the "Bash" subtree appears on multiple locations in the hierarchy. Both t ### Demo -![](../../Attachments/create-clone.gif) +![](Cloning%20Notes_create-clone.gif) In the demo, you can see how a clone can be created using the context menu. It's possible to do this also using the Add Link dialog or with Ctrl+C and Ctrl+V [keyboard shortcuts](../Keyboard%20Shortcuts.md). @@ -51,10 +51,6 @@ As seen in the demo, you can view the list of all available clones in the "Note Titles of cloned notes in the tree view have an asterisk to the right to easily see that the note is also placed into some other location. -## Prefix - -Since notes can be categorized into multiple places, it's recommended to choose a generalized name that fits into all locations instead of something more specific to avoid confusion. In some cases this isn't possible so Trilium provides "branch prefixes", which is shown before the note name in the tree and as such provides a specific kind of context. The prefix is location specific, so it's displayed only in the tree pane. - ## Deleting notes/clones With clones, it might not be immediately obvious how deleting works. diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes/Branch prefix.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes/Branch prefix.md new file mode 100644 index 000000000..85f2b782b --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes/Branch prefix.md @@ -0,0 +1,6 @@ +# Branch prefix +Since a single note can appear into multiple places in the Note Tree via a process called Cloning Notes, it's recommended to choose a generalized name that fits into all locations instead of something more specific to avoid confusion. + +In some cases this isn't possible so Trilium provides "branch prefixes", which is shown before the note name in the tree and as such provides a specific kind of context. + +The prefix is location-specific, so it's displayed only in the note tree. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/create-clone.gif b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes_create-clone.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/create-clone.gif rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes_create-clone.gif diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Export as PDF.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Export as PDF.md index 5159743ba..150b03a80 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Export as PDF.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Export as PDF.md @@ -17,17 +17,17 @@ Note that if you are using Linux with the GNOME desktop environment, sometimes t To solve this, you can change the recommended application for PDFs via this command line. First, list the available applications via `gio mime application/pdf` and then set the desired one. For example to use GNOME's Evince: -```sh +``` gio mime application/pdf ``` ## Reporting issues with the rendering -Should you encounter any visual issues in the resulting PDF file (e.g. a table does not fit properly, there is cut off text, etc.) feel free to [report the issue](#root/OeKBfN6JbMIq/jRV1MPt4mNSP/hrC6xn7hnDq5). In this case, it's best to offer a sample note (click on the ![](1_Export%20as%20PDF_image.png) button, select Export note → This note and all of its descendants → HTML in ZIP archive). Make sure not to accidentally leak any personal information. +Should you encounter any visual issues in the resulting PDF file (e.g. a table does not fit properly, there is cut off text, etc.) feel free to [report the issue](../../Troubleshooting/Reporting%20issues.md). In this case, it's best to offer a sample note (click on the ![](1_Export%20as%20PDF_image.png) button, select Export note → This note and all of its descendants → HTML in ZIP archive). Make sure not to accidentally leak any personal information. ## Landscape mode -When exporting to PDF, there are no customizable settings such as page orientation, size, etc. However, it is possible to specify a given note to be printed as a PDF in landscape mode by adding the `#printLandscape` attribute to it (see [\[missing note\]](#root/9QRytp0ZYFIf/PnO38wN0ffOA)). +When exporting to PDF, there are no customizable settings such as page orientation, size, etc. However, it is possible to specify a given note to be printed as a PDF in landscape mode by adding the `#printLandscape` attribute to it (see Attributes). ## Page size @@ -35,4 +35,4 @@ By default, the resulting PDF will be in Letter format. It is possible to adjust ## Keyboard shortcut -It's possible to trigger the export to PDF from the keyboard by going to _Keyboard shortcuts_ and assigning a key combination for the `exportAsPdf` action. \ No newline at end of file +It's possible to trigger the export to PDF from the keyboard by going to _Keyboard shortcuts_ in Options and assigning a key combination for the `exportAsPdf` action. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons.md index 9d5060017..923c7c73f 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons.md @@ -1,6 +1,6 @@ # Note Icons Icons are useful for distinguishing notes. At the technical level, they are set by the `iconClass` attribute which adds a CSS class to the note. For example `#iconClass="bx bx-calendar"` will show a calendar instead of the default page or folder icon. Looking up and remembering the css class names is not necessary. While editing a note, click on the icon next to the title to bring up a chooser gallery: -![change note icon](../../Attachments/note-icon-change.png) +![change note icon](Note%20Icons_note-icon-chang.png) -![note icon gallery](../../Attachments/note-icon-gallery.png) \ No newline at end of file +![note icon gallery](Note%20Icons_note-icon-galle.png) \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/note-icon-change.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons_note-icon-chang.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/note-icon-change.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons_note-icon-chang.png diff --git a/docs/User Guide/User Guide/Attachments/note-icon-gallery.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons_note-icon-galle.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/note-icon-gallery.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons_note-icon-galle.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List.md new file mode 100644 index 000000000..0c8273a8b --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List.md @@ -0,0 +1,39 @@ +# Note List +When a note has one or more child notes, they will be listed at the end of the note for easy navigation. + +## Configuration + +* To hide the note list for a particular note, simply apply the `hideChildrenOverview` [label](../../Advanced%20Usage/Attributes.md). +* For some view types, such as Grid view, only a subset of notes will be displayed and pagination can be used to navigate through all of them for performance reasons. To adjust the number of notes per page, set `pageSize` to the desired number. + +## View types + +By default, the notes will be displayed in a grid, however there are also some other view types available. + +> [!TIP] +> Generally the view type can only be changed in a Book note from the Ribbon, but it can also be changed manually on any type of note using the `#viewType` attribute. + +### Grid view + +
                + +This view presents the child notes in a grid format, allowing for a more visual navigation experience. + +* For Text notes, the text can be slighly scrollable via the mouse wheel to reveal more context. +* For Code notes, syntax highlighting is applied. +* For File notes, a preview is made available for audio, video and PDF notes. +* If the note does not have a content, a list of its child notes will be displayed instead. + +This is the default view type. + +### List view + +
                + +In the list view mode, each note is displayed in a single row with only the title and the icon of the note being visible by the default. By pressing the expand button it's possible to view the content of the note, as well as the children of the note (recursively). + +### Calendar view + +
                + +In the calendar view, child notes are represented as events, with a start date and optionally an end date. The view also has interaction support such as moving or creating new events. See Calendar View for more information. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/10_Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/10_Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/10_Calendar View_image.png diff --git a/docs/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/11_Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/11_Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/11_Calendar View_image.png diff --git a/docs/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/1_Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/1_Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/1_Calendar View_image.png diff --git a/docs/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/2_Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/2_Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/2_Calendar View_image.png diff --git a/docs/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/3_Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/3_Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/3_Calendar View_image.png diff --git a/docs/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/4_Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/4_Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/4_Calendar View_image.png diff --git a/docs/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/5_Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/5_Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/5_Calendar View_image.png diff --git a/docs/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/6_Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/6_Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/6_Calendar View_image.png diff --git a/docs/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/7_Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/7_Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/7_Calendar View_image.png diff --git a/docs/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/8_Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/8_Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/8_Calendar View_image.png diff --git a/docs/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/9_Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/9_Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/9_Calendar View_image.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Calendar View.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Calendar View.md new file mode 100644 index 000000000..abaa58bc8 --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Calendar View.md @@ -0,0 +1,102 @@ +# Calendar View +
                + +The Calendar view of Book notes will display each child note in a calendar that has a start date and optionally an end date, as an event. + +The Calendar view has multiple display modes: + +* Week view, where all the 7 days of the week (or 5 if the weekends are hidden) are displayed in columns. This mode allows entering and displaying time-specific events, not just all-day events. +* Month view, where the entire month is displayed and all-day events can be inserted. Both time-specific events and all-day events are listed. +* Year view, which displays the entire year for quick reference. +* List view, which displays all the events of a given month in sequence. + +Unlike other Book view types, the Calendar view also allows some kind of interaction, such as moving events around as well as creating new ones. + +## Creating a calendar + +
                   
                1The Calendar View works only for Book note types. To create a new note, right click on the note tree on the left and select Insert note after, or Insert child note and then select Book.
                2Once created, the “View type” of the Book needs changed to “Calendar”, by selecting the “Book Properties” tab in the ribbon.
                + +## Creating a new event/note + +* Clicking on a day will create a new child note and assign it to that particular day. + * You will be asked for the name of the new note. If the popup is dismissed by pressing the close button or escape, then the note will not be created. +* It's possible to drag across multiple days to set both the start and end date of a particular note. + ![](Calendar%20View_image.png) +* Creating new notes from the calendar will respect the `~child:template` relation if set on the book note. + +## Interacting with events + +* Hovering the mouse over an event will display information about the note. + ![](7_Calendar%20View_image.png) +* Left clicking the event will go to that note. Middle clicking will open the note in a new tab and right click will offer more options including opening the note in a new split or window. +* Drag and drop an event on the calendar to move it to another day. +* The length of an event can be changed by placing the mouse to the right edge of the event and dragging the mouse around. + +## Configuring the calendar + +The following attributes can be added to the book type: + +
                NameDescription
                #calendar:hideWeekendsWhen present (regardless of value), it will hide Saturday and Sundays from the calendar.
                #calendar:weekNumbersWhen present (regardless of value), it will show the number of the week on the calendar.
                #calendar:view

                Which view to display in the calendar:

                • timeGridWeek for the week view;
                • dayGridMonth for the month view;
                • multiMonthYear for the year view;
                • listMonth for the list view.

                Any other value will be dismissed and the default view (month) will be used instead.

                The value of this label is automatically updated when changing the view using the UI buttons.

                ~child:templateDefines the template for newly created notes in the calendar (via dragging or clicking).
                + +In addition, the first day of the week can be either Sunday or Monday and can be adjusted from the application settings. + +## Configuring the calendar events + +For each note of the calendar, the following attributes can be used: + +
                NameDescription
                #startDateThe date the event starts, which will display it in the calendar. The format is YYYY-MM-DD (year, month and day separated by a minus sign).
                #endDateSimilar to startDate, mentions the end date if the event spans across multiple days. The date is inclusive, so the end day is also considered. The attribute can be missing for single-day events.
                #startTimeThe time the event starts at. If this value is missing, then the event is considered a full-day event. The format is HH:MM (hours in 24-hour format and minutes).
                #endTimeSimilar to startTime, it mentions the time at which the event ends (in relation with endDate if present, or startDate).
                #colorDisplays the event with a specified color (named such as red, gray or hex such as #FF0000). This will also change the color of the note in other places such as the note tree.
                #calendar:colorSimilar to #color, but applies the color only for the event in the calendar and not for other places such as the note tree.
                #iconClassIf present, the icon of the note will be displayed to the left of the event title.
                #calendar:titleChanges the title of an event to point to an attribute of the note other than the title, can either a label or a relation (without the # or ~ symbol). See Use-cases for more information.
                #calendar:displayedAttributesAllows displaying the value of one or more attributes in the calendar like this:    

                  

                #weight="70" #Mood="Good" #calendar:displayedAttributes="weight,Mood"  

                It can also be used with relations, case in which it will display the title of the target note:   

                ~assignee=@My assignee #calendar:displayedAttributes="assignee"
                #calendar:startDateAllows using a different label to represent the start date, other than startDate (e.g. expiryDate). The label name must not be prefixed with #. If the label is not defined for a note, the default will be used instead.
                #calendar:endDateSimilar to #calendar:startDate, allows changing the attribute which is being used to read the end date.
                #calendar:startTimeSimilar to #calendar:startDate, allows changing the attribute which is being used to read the start time.
                #calendar:endTimeSimilar to #calendar:startDate, allows changing the attribute which is being used to read the end time.
                + +## How the calendar works + +![](11_Calendar%20View_image.png) + +The calendar displays all the child notes of the book that have a `#startDate`. An `#endDate` can optionally be added. + +If editing the start date and end date from the note itself is desirable, the following attributes can be added to the book note: + +``` +#viewType=calendar #label:startDate(inheritable)="promoted,alias=Start Date,single,date" +#label:endDate(inheritable)="promoted,alias=End Date,single,date" +#hidePromotedAttributes +``` + +This will result in: + +![](10_Calendar%20View_image.png) + +When not used in a Journal, the calendar is recursive. That is, it will look for events not just in its child notes but also in the children of these child notes. + +## Use-cases + +### Using with the Journal / calendar + +It is possible to integrate the calendar view into the Journal with day notes. In order to do so change the note type of the Journal note (calendar root) to Book and then select the Calendar View. + +Based on the `#calendarRoot` (or `#workspaceCalendarRoot`) attribute, the calendar will know that it's in a calendar and apply the following: + +* The calendar events are now rendered based on their `dateNote` attribute rather than `startDate`. +* Interactive editing such as dragging over an empty era or resizing an event is no longer possible. +* Clicking on the empty space on a date will automatically open that day's note or create it if it does not exist. +* Direct children of a day note will be displayed on the calendar despite not having a `dateNote` attribute. Children of the child notes will not be displayed. + + + +### Using a different attribute as event title + +By default, events are displayed on the calendar by their note title. However, it is possible to configure a different attribute to be displayed instead. + +To do so, assign `#calendar:title` to the child note (not the calendar/book note), with the value being `name` where `name` can be any label (make not to add the `#` prefix). The attribute can also come through inheritance such as a template attribute. If the note does not have the requested label, the title of the note will be used instead. + +
                  
                #startDate=2025-02-11 #endDate=2025-02-13 #name="My vacation" #calendar:title="name"

                 

                + +### Using a relation attribute as event title + +Similarly to using an attribute, use `#calendar:title` and set it to `name` where `name` is the name of the relation to use. + +Moreover, if there are more relations of the same name, they will be displayed as multiple events coming from the same note. + +
                  
                #startDate=2025-02-14 #endDate=2025-02-15 ~for=@John Smith ~for=@Jane Doe #calendar:title="for"
                + +Note that it's even possible to have a `#calendar:title` on the target note (e.g. “John Smith”) which will try to render an attribute of it. Note that it's not possible to use a relation here as well for safety reasons (an accidental recursion  of attributes could cause the application to loop infinitely). + +
                  
                #calendar:title="shortName" #shortName="John S."
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Book/Calendar View_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Calendar View_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Book/Calendar View_image.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List/Calendar View_image.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List_image.png new file mode 100644 index 000000000..0d3608eef Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note List_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions.md index 6dbfb9673..a31c19a11 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions.md @@ -17,4 +17,4 @@ You can click the **Erase excess revision snapshots now** button to apply the ch Note revisions can be accessed through the button on the right of ribbon toolbar. -![](../../Attachments/note-revisions.png) \ No newline at end of file +![](Note%20Revisions_note-revisi.png) \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/note-revisions.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions_note-revisi.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/note-revisions.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions_note-revisi.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes.md index 2b74cdefb..eb6785916 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes.md @@ -10,7 +10,7 @@ Trilium is designed to store a wide variety of data, including sensitive informa By default, notes are unprotected. To protect a note, simply click on the shield icon next to the note's title, as shown here: -![example animation of unlocking protected notes](../../Attachments/protecting-note.gif) +![example animation of unlocking protected notes](Protected%20Notes_protecting.gif) ## What is Encrypted? diff --git a/docs/User Guide/User Guide/Attachments/protecting-note.gif b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes_protecting.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/protecting-note.gif rename to docs/User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes_protecting.gif diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.md index 60491d724..588350fb4 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes.md @@ -1,12 +1,42 @@ # Read-Only Notes -Both [text](../../Note%20Types/Text.md) and [code](../../Note%20Types/Code.md) notes in Trilium can be set to read-only. When a note is in read-only mode, it is presented to the user in a non-editable view, with the option to switch to editing mode if needed. +Some note types such as Text and Code notes in Trilium can be set to read-only. When a note is in read-only mode, it is presented to the user in a non-editable view, with the option to switch to editing mode if needed. -## Setting Read-Only Mode with a Label - -To set a note as read-only, add the `readOnly` [label](../../Advanced%20Usage/Attributes.md) to the note. - -## Automatic Read-Only Mode +## Automatic read-only mode For optimization purposes, Trilium will automatically set very large notes to read-only. Displaying such lengthy notes in editing mode can slow down performance, especially when editing is unnecessary. -If you want to ensure that a specific note remains editable regardless of its size, you can add the `autoReadOnlyDisabled` [label](../../Advanced%20Usage/Attributes.md) to the note. \ No newline at end of file +This behavior can be disabled on a per-note basis, by following the instructions of the next section. + +In addition, it's possible to change the number of characters at which the automatic read-only mode will trigger in Options by going to the options for Text Notes and Code Notes. + +## Changing a note's read-only behavior + +Via the Ribbon, by going to the _Basic Properties_ tab and looking for the _Editable_ selection. The following options are possible: + +* **Auto** + This is the default behavior in which the note will be editable by default, unless it becomes large enough to trigger read-only mode.   +* **Read-only** + The note will be always marked as read-only, regardless of its size. Nevertheless, it's still possible to temporarily edit the note if needed. This is generally useful for notes that are not prone to change.   +* **Always Editable** + This option will bypass the automatic read-only activation for this particular note. It's useful for large notes that are frequently edited. + +If the _Editable_ section is missing from the ribbon, then the note type does not support read-only mode. + +### Manually setting the options + +Apart from using the ribbon as previously mentioned, it's also possible to use [labels](../../Advanced%20Usage/Attributes.md) to change the behavior: + +* To set as read-only, apply the `readOnly` label to the note. +* To disable automatic read-only (always editable), apply the `autoReadOnlyDisabled` label. + +## Temporarily editing a read-only note + +When accessing a read-only note, it's possible to temporarily edit it by using the ![](Read-Only%20Notes_image.png) button in the Floating buttons area. + +When pressed, the note will become editable but will become read-only again after navigating to a different note. + +## Special read-only behavior + +Some note types have a special behavior based on whether the read-only mode is enabled: + +* Mermaid Diagrams will hide the Mermaid source code and display the diagram preview in full-size. In this case, the read-only mode can be easily toggled on or off via a dedicated button in the Floating buttons area. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes_image.png new file mode 100644 index 000000000..86d2efa85 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.md index a2a063e33..7655230dd 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes.md @@ -1,7 +1,14 @@ # Sorting Notes -## Sorting Notes +## Manual sorting -You can sort notes by right-clicking the parent note in the note tree and selecting Advanced -> Sort notes by ... This will sort existing notes, but will not automatically sort future notes added to this parent note +You can sort notes by right-clicking the parent note in the Note Tree and selecting Advanced -> Sort notes by ... This will sort existing notes, but will not automatically sort future notes added to this parent note. + +The sorting dialog allows: + +* Sorting by title, creation or modification date. +* Changing sorting direction can also be adjusted (ascending or descending). +* Ensuring folders are displayed at the top. +* Natural sort, based on the sorting rules of a particular language. ## Automatic/Permanent Sorting diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Themes.md b/docs/User Guide/User Guide/Basic Concepts and Features/Themes.md index 7a44f9f57..33c6b4982 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Themes.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Themes.md @@ -3,14 +3,14 @@ Trilium comes with a couple pre-installed color themes, with the default being a light theme. To switch to a dark theme or any other available theme, navigate to the Options menu (accessible via the app icon in the top-left corner), select the Appearance tab, and choose your preferred theme. -![Dark Theme](../Attachments/dark-theme.png) +![Dark Theme](Themes_dark-theme.png) ## Creating Custom CSS Themes Trilium supports custom user themes, allowing you to personalize the application's appearance. To create a custom theme, follow these steps: 1. **Create a CSS Code Note**: Start by creating a new [code note](../Note%20Types/Code.md) with the `CSS` type. -2. **Annotate with** `**#appTheme**`: Add the [attribute](../Advanced%20Usage/Attributes.md) `#appTheme=my-theme-name` to your note, where `my-theme-name` is the name of your custom theme. +2. **Annotate with** `#appTheme`: Add the [attribute](../Advanced%20Usage/Attributes.md) `#appTheme=my-theme-name` to your note, where `my-theme-name` is the name of your custom theme. 3. **Define Your Styles**: Write your custom CSS within the note. Below is an example of a custom theme: ``` @@ -83,9 +83,9 @@ If you make changes to your theme, press Ctrl + R to reloa Custom themes can be exported as `.tar` archives, which can be shared with other users. However, be cautious when importing themes from untrusted sources, as they may contain executable scripts that could pose security risks. -An example user theme, _Steel Blue_, is available in the [demo document](#root/xjSsCcvVZf6H). +An example user theme, _Steel Blue_, is available in the demo document. -![Steel Blue Theme](../Attachments/steel-blue.png) +![Steel Blue Theme](Themes_steel-blue.png) ### Using Custom CSS for Specific Purposes @@ -95,8 +95,8 @@ In addition to full themes, Trilium allows for custom CSS that isn't tied to a t To use custom CSS: -1. **Create a CSS Code Note**: Create a new [code note](../Note%20Types/Code.md) with the `CSS` type. -2. **Add the** `**appCss**` **Label**: Annotate the note with the `#appCss` [label](../Advanced%20Usage/Attributes.md). +1. **Create a CSS Code Note**: Create a new Code note with the `CSS` type. +2. **Add the** `appCss` **Label**: Annotate the note with the `#appCss` [label](../Advanced%20Usage/Attributes.md). 3. **Write Your CSS**: Add your custom CSS rules to the note. For example: @@ -118,14 +118,14 @@ After making changes, press Ctrl + R to reload the fronten To apply specific styles to certain notes in the tree: -* **Use the** `**cssClass**` **Attribute**: Add the `cssClass` [attribute](../Advanced%20Usage/Attributes.md) to a note, and assign it a value representing the desired CSS class. -* **Define an** `**iconClass**`: You can also define a custom icon for a note using the `iconClass` attribute, selecting from [Box Icons](https://boxicons.com) or your own custom classes. +* **Use the** `cssClass` **Attribute**: Add the `cssClass` [attribute](../Advanced%20Usage/Attributes.md) to a note, and assign it a value representing the desired CSS class. +* **Define an** `iconClass`: You can also define a custom icon for a note using the `iconClass` attribute, selecting from [Box Icons](https://boxicons.com) or your own custom classes. For example, if you want to style notes of a specific type, such as notes containing PNG images, you can target them with classes like `type-image mime-image-png`. ### User-Provided Themes -A gallery of user-created themes is available, showcasing the variety of customizations that the Trilium community has developed. For more information, visit the [Theme Gallery](Themes/Theme%20Gallery.md). +A gallery of user-created themes is available, showcasing the variety of customizations that the Trilium community has developed. For more information, check the Theme Gallery. ### Asset Path Management diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Theme Gallery.md b/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Theme Gallery.md index f256cc6dd..1fdee5bbe 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Theme Gallery.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Theme Gallery.md @@ -5,25 +5,7 @@ These are user-created themes which were made publicly available: These themes may or may not be compatible with the latest versions of TriliumNext and are based on the original/legacy theme. -| Theme | Author | -| --- | --- | -| [Midnight](https://github.com/tobealive/trilium-midnight-theme) | [tobealive](https://github.com/tobealive) | -| [EOTE](https://github.com/tobealive/trilum-eote-theme) | [tobealive](https://github.com/tobealive) | -| [Trilium Themes](https://github.com/Abourass/TriliumThemes) | [Abourass](https://github.com/Abourass) | -| [MaterialDark](https://github.com/ZMonk91/Material-Dark-Trilium) | [ZMonk91](https://github.com/ZMonk91) | -| [lightslategray](https://github.com/jaroet/trilium-theme-lightslategray) | [jaroet](https://github.com/jaroet) | -| [melon-4](https://github.com/raphwriter/trilium-theme-melon) | [raphwriter](https://github.com/raphwriter) | -| [Neon\_Dark](https://github.com/Engr-AllanG/trilium-themes) | [Engr-AllanG](https://github.com/Engr-AllanG) | -| [Coder\_Dark](https://github.com/Engr-AllanG/trilium-themes) | [Engr-AllanG](https://github.com/Engr-AllanG) | -| [velvet](https://github.com/idelem/trilium-theme-velvet) | [idelem](https://github.com/idelem) | -| [Dark Plus](https://github.com/SADAVA/trilium-notes-theme-dark-plus) | [SADAVA](https://github.com/SADAVA) | -| [Solarized](https://github.com/WKSu/trilium-solarized-theme) | [WKSu](https://github.com/WKSu) | -| [Nord](https://github.com/en3r0/Trilium-Nord-Theme) | [en3r0](https://github.com/en3r0) | -| [Bear Note Light](https://github.com/AllanZyne/trilium-bear-theme) | [AllanZyne](https://github.com/AllanZyne) | -| [Bear Note Dark](https://github.com/AllanZyne/trilium-bear-theme) | [AllanZyne](https://github.com/AllanZyne) | -| [Miku Hatsune](https://github.com/Sebiann/miku-hatsune-trilium-theme) | [Sebiann](https://github.com/Sebiann) | -| [Midnight](https://github.com/cwilliams5/Midnight-Trilium-Dark-Mode) | [cwilliams5](https://github.com/cwilliams5) | -| [Blue](https://github.com/SiriusXT/trilium-theme-blue) (light) | [SiriusXT](https://github.com/SiriusXT) | -| [Blue](https://github.com/SiriusXT/trilium-theme-blue) (dark) | [SiriusXT](https://github.com/SiriusXT) | +
                ThemeAuthor
                Midnighttobealive
                EOTEtobealive
                Trilium ThemesAbourass
                MaterialDarkZMonk91
                lightslategrayjaroet
                melon-4raphwriter
                Neon_DarkEngr-AllanG
                Coder_DarkEngr-AllanG
                velvetidelem
                Dark PlusSADAVA
                SolarizedWKSu
                Norden3r0
                Bear Note LightAllanZyne
                Bear Note DarkAllanZyne
                Miku HatsuneSebiann
                Midnightcwilliams5
                Blue (light)SiriusXT
                Blue (dark)SiriusXT
                -If you would like to add your theme to this gallery, write a new post in [👐 Show and tell](https://github.com/TriliumNext/Notes/discussions/categories/show-and-tell). \ No newline at end of file +> [!TIP] +> If you would like to add your theme to this gallery, write a new post in [👐 Show and tell](https://github.com/TriliumNext/Notes/discussions/categories/show-and-tell). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/dark-theme.png b/docs/User Guide/User Guide/Basic Concepts and Features/Themes_dark-theme.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/dark-theme.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Themes_dark-theme.png diff --git a/docs/User Guide/User Guide/Attachments/steel-blue.png b/docs/User Guide/User Guide/Basic Concepts and Features/Themes_steel-blue.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/steel-blue.png rename to docs/User Guide/User Guide/Basic Concepts and Features/Themes_steel-blue.png diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Note Tree_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Note Tree_image.png deleted file mode 100644 index 74a2060c7..000000000 Binary files a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Note Tree_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Options_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Options_image.png new file mode 100644 index 000000000..28198a879 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Options_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Recent Changes_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Recent Changes_image.png new file mode 100644 index 000000000..0a34b08e6 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Recent Changes_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Tabs_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Tabs_image.png new file mode 100644 index 000000000..0be0aadb9 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/1_Tabs_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/2_Tabs_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/2_Tabs_image.png new file mode 100644 index 000000000..2580b7eda Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/2_Tabs_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons.md new file mode 100644 index 000000000..61da3ab1a --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons.md @@ -0,0 +1,13 @@ +# Floating buttons +
                + +Depending on the current note, a panel will appear near the top-right of the note, right underneath the Ribbon. These buttons offer additional interaction that is specific to that particular note. + +For example: + +* For Mermaid Diagrams and Canvas, there are buttons to download the SVG representation of the note, or to copy a reference to the note for pasting it a Text note. +* For [read-only notes](../Notes/Read-Only%20Notes.md), there is a button to temporarily edit the note for quick modifications. + +## Interaction + +The floating button area can be collapsed by pressing the two right arrows at the end of the section. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons_image.png new file mode 100644 index 000000000..af171ed81 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.md index d5fed8ae1..33fb8a0ed 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar.md @@ -50,13 +50,13 @@ Right click either the _Available launchers_ or _Visible launchers_ sections and 2. Optionally, set `hoistedNote` to hoist a particular note. See [Note Hoisting](../Navigation/Note%20Hoisting.md) for more information. 3. Optionally, set a `keyboardShortcut` to trigger the launcher. 2. **Script Launcher** - An advanced launcher which will run a script upon pressing. See [Scripts](../../Note%20Types/Code/Scripts.md) for more information. + An advanced launcher which will run a script upon pressing. See [Scripts](../../Scripting.md) for more information. 1. Set `script` to point to the desired script to run. 2. Optionally, set a `keyboardShortcut` to trigger the launcher. 3. **Custom Widget** - Allows defining a custom widget to be rendered inside the launcher. See [Widget Basics](../../Developer%20Guides/Widget%20Basics.md) for more information. + Allows defining a custom widget to be rendered inside the launcher. See [Widget Basics](../../Scripting/Custom%20Widgets/Widget%20Basics.md) for more information. 4. **Spacers** Launchers that create some distance between other launchers for better visual distinction. diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree.md index f77cbec17..4ad396fda 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree.md @@ -1,17 +1,17 @@ # Note Tree This page explains how to manipulate the note tree in TriliumNext, focusing on moving notes. -![](1_Note%20Tree_image.png) +![](Note%20Tree_image.png) ## Drag and Drop -![Drag and drop example](../../Attachments/drag-and-drop.gif) +![Drag and drop example](Note%20Tree_drag-and-drop.gif) You can easily rearrange the note tree by dragging and dropping notes, as demonstrated in the example above. ## Keyboard Manipulation -![Example of using keyboard keys to move a note](../../Attachments/move-note-with-keyboard.gif)Trilium offers efficient keyboard-based manipulation using the following [shortcuts](../Keyboard%20Shortcuts.md): +![Example of using keyboard keys to move a note](Note%20Tree_move-note-with-k.gif)Trilium offers efficient keyboard-based manipulation using the following [shortcuts](../Keyboard%20Shortcuts.md): * Ctrl + and Ctrl +: Move the note up or down in the order. * Ctrl+: Move the note up in the hierarchy by changing its parent to the note's grandparent. @@ -22,12 +22,4 @@ You can easily rearrange the note tree by dragging and dropping notes, as demons You can also move notes using the familiar cut and paste functions available in the context menu, or with the associated keyboard [shortcuts](../Keyboard%20Shortcuts.md): `CTRL-C` ( [copy](../Notes/Cloning%20Notes.md)), Ctrl + X (cut) and Ctrl + V (paste). -## Multiple selection - -It is possible to select multiple notes at one time. - -To do so, first select the note to start the selection with. Then hold Shift and click on the note to end the selection with. All the notes between the start and the end note will be selected as well. - -![](Note%20Tree_image.png) - -In the right-click menu, operations such as Cut, Copy, Move to, Clone to or Delete will apply to all the selected notes. It is also possible to apply [Bulk actions](../../Advanced%20Usage/Bulk%20actions.md) to them. The rest of the options will not be available and will appear disabled in the menu. \ No newline at end of file +See Note Tree Menu for more information. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/1_Note tree contextual menu_.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/1_Note tree contextual menu_.png new file mode 100644 index 000000000..102295d58 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/1_Note tree contextual menu_.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection.md new file mode 100644 index 000000000..84318ff0f --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection.md @@ -0,0 +1,8 @@ +# Multiple selection +It is possible to select multiple notes at one time. + +To do so, first select the note to start the selection with. Then hold Shift and click on the note to end the selection with. All the notes between the start and the end note will be selected as well. + +![](Multiple%20selection_image.png) + +In the right-click menu, operations such as Cut, Copy, Move to, Clone to or Delete will apply to all the selected notes. It is also possible to apply Bulk Actions to them. The rest of the options will not be available and will appear disabled in the menu. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection_image.png new file mode 100644 index 000000000..ad3c04507 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu.md new file mode 100644 index 000000000..8b463e848 --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu.md @@ -0,0 +1,94 @@ +# Note tree contextual menu +
                + +The _note tree menu_ can be accessed by right-clicking in the Note Tree. + +## Interaction + +The contextual menu can operate: + +* On a single note, by right clicking it in the note tree. +* On multiple notes, by selecting them first. See Multiple selection on how to do so. + * When right clicking, do note that usually the note being right clicked is also included in the affected notes, regardless of whether it was selected or not. + +## Available options + +> [!NOTE] +> When multiple notes are selected, only a subset of notes will be active. The ones that do support multiple notes will mention this in the list below. + +* **Open in a new tab** + * Will open a single note in a new [tab](../Tabs.md). +* **Open in a new split** + * Will open a split to the right with the given note within the current tab. +* **Hoist note** + * Will focus the note tree on this note. See Note Hoisting for more information. +* **Insert note after** + * Allows easy creation of a note with a specified [note type](../../../Note%20Types.md). + * Templates will also be present (if any) at the end of the list. + * The note will be added on the same level of hierarchy as the note selected. +* **Insert child note** + * Same as _Insert note after_, but the note will be created as a child of the selected note. +* **Protect subtree** + * Will mark this note and all of its descendents as protected. See Protected Notes for more information. +* **Unprotect subtree** + * Will unprotect this note and all of its descendents. +* **Cut** + * Will place the given notes in clipboard. + * Use one of the two paste functions (or the keyboard shortcuts) to move them to the desired location. +* **Copy / clone** + * Will place the given notes in clipboard. + * Use one of the two paste functions (or the keyboard shortcuts) to copy them to the desired location. + * Note that the copy function here works according to the Cloning Notes functionality (i.e. the note itself will be present in two locations at once, and editing it in one place will edit it everywhere). + * To simply create a duplicate note that can be modified independently, look for _Duplicate subtree_. +* **Paste into** + * If there are any notes in clipboard, they will be pasted as child notes to the right-clicked one. +* **Paste after** + * If there are any notes in clipboard, they will be pasted underneath the right-clicked one. +* **Move to…** + * Will display a modal to specify where to move the desired notes. +* **Clone to…** + * Will display a modal to specify where to [clone](../../Notes/Cloning%20Notes.md) the desired notes. +* **Delete** + * Will delete the given notes, asking for confirmation first. + * In the dialog, the following options can be configured: + * _Delete also all clones_ to ensure that the note will be deleted everywhere if it has been placed into multiple locations (see Cloning Notes). + * _Erase notes permanently_ will ensure that the note cannot be recovered from Recent Changes. +* **Import into note** + * Opens the [import](../../Import%20%26%20Export) dialog and places the imported notes as child notes of the selected one. +* **Export** + * Opens the [export](../../Import%20%26%20Export) dialog for the selected notes. +* **Search in subtree** + * Opens a full Search with it preconfigured to only look into this note and its descendants (the _Ancestor_ field). + +## Advanced options + +
                + +The advanced options menu offers some of the less frequently used actions for notes. + +To access these options, first look for the _Advanced_ option in the contextual menu to reveal a sub-menu with: + +* **Apply bulk actions** + * Opens the Bulk Actions dialog, to apply actions such as adding labels or moving notes to multiple notes at once (see Multiple selection). +* **Edit branch prefix** + * Opens a dialog to assign a name to be able to distinguish [clones](../../Notes/Cloning%20Notes.md), see Branch prefix for more information. +* **Convert to attachment** + * Converts the selected notes to Attachments of their parent notes. + * This functional is most useful when dealing with image File notes that were imported from an external source or an older version of Trilium. +* **Duplicate subtree** + * Creates a copy of the note and its descendants. + * This process is different from Cloning Notes since the duplicated note can be edited independently from the original. + * An alternative to this, if done regularly, would be Templates. +* **Expand subtree** + * Expands all the child notes in the Note Tree. +* **Collapse subtree** + * Collapses all the child notes in the note tree. +* **Sort by…** + * Opens a dialog to sort all the child notes of the selected note. + * The sorting is done only once, there is an automatic sorting mechanism as well that can be set using Attributes. + * See Sorting Notes for more information. +* **Copy note path to clipboard** + * Copies a URL fragment representing the full path to this branch for a note, such as `#root/Hb2E70L7HPuf/4sRFgMZhYFts/2IVuShedRJ3U/LJVMvKXOFv7n`. + * The URL to manually create Links within notes, or for note Navigation. +* **Recent changes in subtree** + * This will open Recent Changes, but filtered to only the changes related to this note or one of its descendants. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu_.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu_.png new file mode 100644 index 000000000..5a6572962 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu_.png differ diff --git a/docs/User Guide/User Guide/Attachments/drag-and-drop.gif b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree_drag-and-drop.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/drag-and-drop.gif rename to docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree_drag-and-drop.gif diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree_image.png index ad3c04507..74a2060c7 100644 Binary files a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree_image.png and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree_image.png differ diff --git a/docs/User Guide/User Guide/Attachments/move-note-with-keyboard.gif b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree_move-note-with-k.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/move-note-with-keyboard.gif rename to docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree_move-note-with-k.gif diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Options.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Options.md index e69de29bb..e8327a700 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Options.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Options.md @@ -0,0 +1,25 @@ +# Options +
                + +The Options section allows the configuration of the TriliumNext client and server. + +## Entering options + +The Options can be accessed via: + +* The [Global menu](Global%20menu.md), by selecting the _Options_ item. +* The ![](1_Options_image.png) button in the [Launch Bar](Launch%20Bar.md) which can optionally be hidden if not desirable. +* Optionally, a keyboard shortcut can be defined, but it is not assigned by default. +* By clicking on this link: Options. + +Once in the options section, simply select one of the option categories using the Note Tree. + +## Exiting options + +When entering the options, they are opened in a new [tab](Tabs.md). To close them, simply close the tab. + +## Options when using sync + +When using Synchronization, some of the options will be kept in sync across all the devices while others can be changed independently. + +Generally, the options that relate to appearance are intentionally kept not synced in order to allow per-client customization (layout orientation, theme, vertical/horizontal layout, code block themes). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Options_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Options_image.png new file mode 100644 index 000000000..83e9a7c3b Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Options_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes.md new file mode 100644 index 000000000..ae86363f4 --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes.md @@ -0,0 +1,14 @@ +# Recent Changes +
                + +## Accessing the recent changes + +* For an overview of the changes across all documents, press the button in the Launch Bar. + * If there is a [hoisted note](../Navigation/Note%20Hoisting.md) or a [workspace](../Navigation/Workspaces.md), the list of recent changes will be limited to the descendents of the hoisted note, or the workspace. +* To limit the list of recent changes to a note and its descendants, look for the corresponding option in the Note tree contextual menu → Advanced. + +## Interaction + +* Notes which were changed will appear in reverse chronological order (latest update first). +* The title of the note is displayed, as well as the note path. Clicking on the note title will dismiss the dialog and navigate to that particular note. +* Deleted notes will also be listed here, at their time of deletion. Press the _Undelete_ link next to them in order to recover them. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes_image.png new file mode 100644 index 000000000..93c1615d5 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon.md index 4109d8166..b53135131 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon.md @@ -15,7 +15,7 @@ If you are using the _Fixed_ formatting toolbar, all the formatting buttons for ### Basic Properties -* _**Note type**_ allows changing the [note type](../../Note%20Types) of a note. +* _**Note type**_ allows changing the [note type](../../Note%20Types.md) of a note. * Generally this is desirable only if the note is empty. * As a more advanced use, it's possible to change the note type in order to modify the [source code](../../Advanced%20Usage/Note%20source.md) of a note. * _**Protect the note**_ toggles whether the current note is encrypted and accessible only by entering the protected session. See [Protected Notes](../Notes/Protected%20Notes.md) for more information. @@ -25,7 +25,7 @@ If you are using the _Fixed_ formatting toolbar, all the formatting buttons for * Is always editable, regardless of its size. * _**Bookmark**_ toggles the display of the current note into the [Launch Bar](Launch%20Bar.md) for easy access. See [Bookmarks](../Navigation/Bookmarks.md) for more information. * _**Shared**_ toggles whether the current note is publicly accessible if you have a [server instance](../../Installation%20%26%20Setup/Server%20Installation.md) set up. See [Sharing](../../Advanced%20Usage/Sharing.md) for more information. -* _**Template**_ toggles whether the current note is considered a template and can be used to easily create notes with the same content. See [Template](../../Advanced%20Usage/Attributes/Template.md) for more information. +* _**Template**_ toggles whether the current note is considered a template and can be used to easily create notes with the same content. See [Template](../../Advanced%20Usage/Templates.md) for more information. * _**Language**_ changes the main language of the current note, mostly useful for spell checking or right-to-left support. See [Content language & Right-to-left support](../../Note%20Types/Text/Content%20language%20%26%20Right-to-le.md) for more information. ### Owned Attributes @@ -55,10 +55,12 @@ This section lists all the notes that are similar to the current one. See [Simi This section displays information about the current note: * The [internal ID](../../Advanced%20Usage/Note%20ID.md) of the note. -* The [type of the note](../../Note%20Types), as well as its MIME type (used mostly for exporting notes). +* The [type of the note](../../Note%20Types.md), as well as its MIME type (used mostly for exporting notes). * The created and modification dates. * The estimated size of the note in the [Database](../../Advanced%20Usage/Database.md), as well as its children count and size. ### Edited notes -This section pops automatically when entering a [day note](../../Advanced%20Usage/Advanced%20Showcases/Day%20Notes.md) and shows the notes that were edited that day. \ No newline at end of file +This section pops automatically when entering a [day note](../../Advanced%20Usage/Advanced%20Showcases/Day%20Notes.md) and shows the notes that were edited that day. + +It is possible to disable this behavior from settings, by going to Appearance settings and looking for the _Ribbon widgets_ section. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar.md new file mode 100644 index 000000000..bf967626f --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar.md @@ -0,0 +1,19 @@ +# Right Sidebar +
                + +The right sidebar displays specific content for the current note. Currently it includes: + +* Table of contents +* Highlights list + +Note that the sidebar is not displayed if it would otherwise be empty, for example if there are too few headings and there are no highlights. + +## Toggling the right sidebar + +The sidebar can be hidden or shown by using the `toggleRightPane` keyboard shortcut, which is not assigned by default. + +## Relation with splits + +When using Split View, there is a single sidebar serving all the open splits for the current [tab](Tabs.md). + +Clicking on a note within the split view will display the sidebar for that note. If there are no items to display in the sidebar, it will remain closed. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar_image.png new file mode 100644 index 000000000..d6717a0cc Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View.md new file mode 100644 index 000000000..7086e8514 --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View.md @@ -0,0 +1,24 @@ +# Split View +In Trilium, is possible to work with two or more notes side-by-side. + +
                + +## **Interactions** + +* Press the ![](Split%20View_Split%20View_imag.png) button to the right of a note's title to open a new split to the right of it. + * It is possible to have as many splits as desired, simply press again the button. + * Only horizontal splits are possible, vertical or drag & dropping is not supported. +* When at least one split is open, press the ![](Split%20View_3_Split%20View_im.png) button next to it to close it. +* Use the ![](Split%20View_4_Split%20View_im.png) or the ![](Split%20View_1_Split%20View_im.png) button to move around the splits. +* Each [tab](Tabs.md) has its own split view configuration (e.g. one tab can have two notes in a split view, whereas the others are one-note views). + * The tab will indicate only the title of the main note (the first one in the list). + +## Splits and the note tree & hoisting + +Clicking on the content of a split will focus that split. While focused, the Note Tree will also indicate the note that is being edited. + +It is possible for each of the splits to have their own Note Hoisting. + +When a new split is created, it will share the same note hoisting as the previous one. An easy solution to this is to simply hoist the notes after the split is created. + +This is generally quite useful for reorganizing notes from one place to the other, by hoisting the old place in the first split and hoisting the new place to the second one. This will allow easy cut and paste without the tree jumping around from switching between notes. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_1_Split View_im.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_1_Split View_im.png new file mode 100644 index 000000000..059e7ba0e Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_1_Split View_im.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_2_Split View_im.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_2_Split View_im.png new file mode 100644 index 000000000..e2aac1d53 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_2_Split View_im.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_3_Split View_im.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_3_Split View_im.png new file mode 100644 index 000000000..7cff58de9 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_3_Split View_im.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_4_Split View_im.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_4_Split View_im.png new file mode 100644 index 000000000..c31cab258 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_4_Split View_im.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_Split View_imag.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_Split View_imag.png new file mode 100644 index 000000000..59c953483 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View_Split View_imag.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs.md new file mode 100644 index 000000000..7296e7cda --- /dev/null +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs.md @@ -0,0 +1,30 @@ +# Tabs +
                + +In Trilium, tabs allow easy switching between notes. + +## Layout + +Depending on the Vertical and horizontal layout: + +* For the vertical layout, the tabs will be placed at the top but to the right of the Note Tree. +* For the horizontal layout, the tabs will be placed at the top in full-width, above the [note tree](Note%20Tree.md), allowing for more tabs to be comfortably displayed. + +## Interaction + +* To create a new tab, press the ![](1_Tabs_image.png) button that is to the right of the last tab. +* To close a tab, press the corresponding ![](Tabs_image.png) button. +* For multitasking, tabs can be used alongside Split View. Each tab can have one or more notes, displayed horizontally. +* Tabs can be reordered by drag-and-dropping it into a new position. +* An existing tab can be displayed in a new window by dragging the tab upwards or downwards. It is not possible to combine tabs back into another window. + +## Keyboard interaction + +Since tabs are a commonly used feature, there are multiple keyboard shortcuts that can be used: + +* Ctrl+T to open a new tab. +* Ctrl+W to close the current tab. +* Ctrl+Shift+T to reopen the last closed tab. +* Ctrl+Tab and Ctrl+Shift+Tab to go to the next or previous tab. +* Ctrl+1, Ctrl+2, up to Ctrl+9 to activate the first, second and up til ninth tab. +* There is also a shortcut to go to the last tab, but it is not assigned a key by default. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs_image.png b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs_image.png new file mode 100644 index 000000000..819891255 Binary files /dev/null and b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs_image.png differ diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Vertical and horizontal layout.md b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Vertical and horizontal layout.md index 2699374d6..3b7b55dad 100644 --- a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Vertical and horizontal layout.md +++ b/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Vertical and horizontal layout.md @@ -7,11 +7,11 @@ Trilium supports two different layouts, based on your preference. The vertical layout is Trilium's original layout: -* The [Launcher Bar](Launch%20Bar.md) is positioned on the left side of the screen, with buttons being laid out vertically. -* The tab bar is at the top, but to the right of the [Note Tree](Note%20Tree.md). -* The [Quick search](Quick%20search.md) is at the top of the [Note Tree](Note%20Tree.md). -* The [Note Tree](Note%20Tree.md) can be collapsed by pressing the ![](5_Vertical%20and%20horizontal%20la.png) button at the bottom of the [Launcher Bar](Launch%20Bar.md). -* The [Global menu](Global%20menu.md) can be accessed via the ![](4_Vertical%20and%20horizontal%20la.png) icon at the top of the [Launcher Bar](Launch%20Bar.md). +* The Launch Bar is positioned on the left side of the screen, with buttons being laid out vertically. +* The tab bar is at the top, but to the right of the Note Tree. +* The Quick search is at the top of the Note Tree. +* The Note Tree can be collapsed by pressing the ![](5_Vertical%20and%20horizontal%20la.png) button at the bottom of the Launch Bar. +* The Global menu can be accessed via the ![](4_Vertical%20and%20horizontal%20la.png) icon at the top of the Launch Bar. ![](3_Vertical%20and%20horizontal%20la.png) @@ -19,16 +19,16 @@ The vertical layout is Trilium's original layout: The horizontal layout is a more traditional layout, since it bears similarity with other applications. In this mode: -* The [Launcher Bar](Launch%20Bar.md) is at the top of the screen, with the buttons laid horizontally. +* The Launch Bar is at the top of the screen, with the buttons laid horizontally. * The tab bar is at the top of the screen, but now covers the entirety of the width, allowing for more tabs to be displayed at once. -* The [Quick search](Quick%20search.md) is now part of the [Launcher Bar](Launch%20Bar.md). It can be moved around according to preference and even removed if needed. -* The [Note Tree](Note%20Tree.md) can be collapsed by pressing the small ![](1_Vertical%20and%20horizontal%20la.png) button to the left of the first tab. -* The [Global menu](Global%20menu.md) can be accessed via the ![](Vertical%20and%20horizontal%20la.png) button at the end of the [Launcher Bar](Launch%20Bar.md). +* The Quick search is now part of the Launch Bar. It can be moved around according to preference and even removed if needed. +* The Note Tree can be collapsed by pressing the small ![](1_Vertical%20and%20horizontal%20la.png) button to the left of the first tab. +* The Global menu can be accessed via the ![](Vertical%20and%20horizontal%20la.png) button at the end of the Launch Bar. ![](2_Vertical%20and%20horizontal%20la.png) ## Changing the layout -Go to [Settings](#root/_hidden/_lbRoot/_lbVisibleLaunchers/_lbSettings) and look for the _Appearance_ option on the left. Then look for the _Layout_ section, where there is the possibility to switch between the two available layouts. +Go to Options and look for the _Appearance_ option on the left. Then look for the _Layout_ section, where there is the possibility to switch between the two available layouts. Selecting an option will immediately apply the new layout by reloading the window. \ No newline at end of file diff --git a/docs/User Guide/User Guide/FAQ.md b/docs/User Guide/User Guide/FAQ.md index d9efbd966..d0af95d76 100644 --- a/docs/User Guide/User Guide/FAQ.md +++ b/docs/User Guide/User Guide/FAQ.md @@ -17,7 +17,7 @@ Common request is to allow multiple users collaborate, share notes etc. So far I * it's a huge feature, or rather a Pandora's box of collaboration features like user management, permissions, conflict resolution, real-time editing of a note by multiple people etc. This would be a huge amount of work. Trilium Notes is project made mostly by one person in free time and that's unlikely to change in the future. * given its size it would probably pivot the attention away from my main focus which is a personal note-taking -* the assumption that only single person has access to the app simplifies many things, or just outright makes them possible. In multi-user app, our [scripting](Note%20Types/Code/Scripts.md)support would be a XSS security hole, while with the single user assumption it's an endless customizable tool. +* the assumption that only single person has access to the app simplifies many things, or just outright makes them possible. In multi-user app, our [scripting](Scripting.md)support would be a XSS security hole, while with the single user assumption it's an endless customizable tool. ## How to open multiple documents in one Trilium instance diff --git a/docs/User Guide/User Guide/Installation & Setup/Backup.md b/docs/User Guide/User Guide/Installation & Setup/Backup.md index a67971a49..1c0a90cbc 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Backup.md +++ b/docs/User Guide/User Guide/Installation & Setup/Backup.md @@ -1,5 +1,5 @@ # Backup -Trilium supports simple backup scheme where it saves copy of the [document](#root/xjSsCcvVZf6H) on these events: +Trilium supports simple backup scheme where it saves copy of the Database on these events: * once a day * once a week @@ -8,9 +8,9 @@ Trilium supports simple backup scheme where it saves copy of the [document](#roo So in total you'll have at most 4 backups from different points in time which should protect you from various problems. These backups are stored by default in `backup` directory placed in the [data directory](Data%20directory.md). -This is only very basic backup solution, and you're encouraged to add some better backup solution - e.g. backing up the [document](#root/xjSsCcvVZf6H) to cloud / different computer etc. +This is only very basic backup solution, and you're encouraged to add some better backup solution - e.g. backing up the Database to cloud / different computer etc. -Note that [synchronization](Synchronization.md) provides also some backup capabilities by its nature of distributing the data to other computers. +Note that Synchronization provides also some backup capabilities by its nature of distributing the data to other computers. ## Restoring backup @@ -18,7 +18,7 @@ Let's assume you want to restore the weekly backup, here's how to do it: * find [data directory](Data%20directory.md) Trilium uses - easy way is to open "About Trilium Notes" from "Menu" in upper left corner and looking at "data directory" * I'll refer to `~/trilium-data` as data directory from now on -* find `~/trilium-data/backup/backup-weekly.db` - this is the [document](#root/xjSsCcvVZf6H) backup +* find `~/trilium-data/backup/backup-weekly.db` - this is the Database backup * at this point stop/kill Trilium * delete `~/trilium-data/document.db`, `~/trilium-data/document.db-wal` and `~/trilium-data/document.db-shm` (latter two files are auto generated) * copy and rename this `~/trilium-data/backup/backup-weekly.db` to `~/trilium-data/document.db` diff --git a/docs/User Guide/User Guide/Installation & Setup/Desktop Installation.md b/docs/User Guide/User Guide/Installation & Setup/Desktop Installation.md index 93cf43e5b..35e68e264 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Desktop Installation.md +++ b/docs/User Guide/User Guide/Installation & Setup/Desktop Installation.md @@ -9,11 +9,11 @@ To install Trilium on your desktop, follow these steps: Trilium offers various startup scripts to customize your experience: -* `**trilium-no-cert-check**`: Starts Trilium without validating [TLS certificates](Server%20Installation/TLS%20Configuration.md), useful if connecting to a server with a self-signed certificate. +* `trilium-no-cert-check`: Starts Trilium without validating [TLS certificates](Server%20Installation/TLS%20Configuration.md), useful if connecting to a server with a self-signed certificate. * Alternatively, set the `NODE_TLS_REJECT_UNAUTHORIZED=0` environment variable before starting Trilium. -* `**trilium-portable**`: Launches Trilium in portable mode, where the [data directory](Data%20directory.md) is created within the application's directory, making it easy to move the entire setup. -* `**trilium-safe-mode**`: Boots Trilium in "safe mode," disabling any startup scripts that might cause the application to crash. +* `trilium-portable`: Launches Trilium in portable mode, where the [data directory](Data%20directory.md) is created within the application's directory, making it easy to move the entire setup. +* `trilium-safe-mode`: Boots Trilium in "safe mode," disabling any startup scripts that might cause the application to crash. ## Synchronization -For Trilium desktp users who wish to synchronize their data with a server instance, refer to the [Synchronization Guide](Synchronization.md) for detailed instructions. \ No newline at end of file +For Trilium desktp users who wish to synchronize their data with a server instance, refer to the Synchronization guide for detailed instructions. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend.md b/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend.md index af306ff07..7ec5f2ac3 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend.md +++ b/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend.md @@ -9,11 +9,11 @@ Note that this is not an Android/iOS app, this is just mobile friendly web page ### Mobile phone -![](../Attachments/mobile-smartphone.png) +![](Mobile%20Frontend_mobile-sma.png) ### Tablet -![](../Attachments/mobile-tablet.png) +![](Mobile%20Frontend_mobile-tab.png) ## Limitations @@ -31,4 +31,4 @@ Trilium decides automatically whether to use mobile or desktop frontend. If this ## Scripting -You can alter the behavior with [scripts](../Note%20Types/Code/Scripts.md) just like for normal frontend. For script notes to be executed, they need to have labeled `#run=mobileStartup`. \ No newline at end of file +You can alter the behavior with [scripts](../Scripting.md) just like for normal frontend. For script notes to be executed, they need to have labeled `#run=mobileStartup`. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/mobile-smartphone.png b/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend_mobile-sma.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/mobile-smartphone.png rename to docs/User Guide/User Guide/Installation & Setup/Mobile Frontend_mobile-sma.png diff --git a/docs/User Guide/User Guide/Attachments/mobile-tablet.png b/docs/User Guide/User Guide/Installation & Setup/Mobile Frontend_mobile-tab.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/mobile-tablet.png rename to docs/User Guide/User Guide/Installation & Setup/Mobile Frontend_mobile-tab.png diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.md index 7f1778557..e08e73a1d 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.md +++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manual server installation.md @@ -27,7 +27,7 @@ sudo apt install libpng16-16 libpng-dev pkg-config autoconf libtool build-essent You can either download source code zip/tar from [https://github.com/TriliumNext/Notes/releases/latest](https://github.com/TriliumNext/Notes/releases/latest). -For the latest version including betas, clone Git repository **from** `**master**` **branch** with: +For the latest version including betas, clone Git repository **from** `master` **branch** with: ``` git clone -b master https://github.com/triliumnext/notes.git diff --git a/docs/User Guide/User Guide/Installation & Setup/Synchronization.md b/docs/User Guide/User Guide/Installation & Setup/Synchronization.md index bb9b9db76..7c512c27c 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Synchronization.md +++ b/docs/User Guide/User Guide/Installation & Setup/Synchronization.md @@ -18,7 +18,7 @@ This method is used when you already have a desktop instance of Trilium and want 1. **Server Deployment**: Ensure your server instance is deployed but uninitialized. 2. **Desktop Configuration**: Open your desktop instance, navigate to Options -> Sync tab -> Sync configuration, and set the "Server instance address" to your sync server's address. Click Save. -![screenshot of the sync settings options modal](../Attachments/sync-config.png) +![screenshot of the sync settings options modal](Synchronization_sync-confi.png) 1. **Testing Sync**: Click the "Test sync" button to verify the connection to the sync server. If successful, the client will start pushing all data to the server instance. This process may take some time, but you can continue using Trilium. Periodically check the server instance to confirm when the sync is complete. Once finished, you should see the login screen on the server. @@ -29,12 +29,12 @@ This method is used when you already have a sync server and want to configure a 1. **Desktop Setup**: Follow the [desktop installation page](Desktop%20Installation.md). 2. **Initial Configuration**: When prompted, choose the option to set up sync with a sync server. -![screenshot of the sync from server setup page](../Attachments/sync-init.png) +![screenshot of the sync from server setup page](Synchronization_sync-init.png) 1. **Server Details**: Configure the Trilium server address and enter the correct username and password for authentication. 2. **Finish Setup**: Click the "Finish setup" button. If successful, you will see the following screen: -![screenshot of the sync page](../Attachments/sync-in-progress.png) +![screenshot of the sync page](Synchronization_sync-in-pr.png) Once synchronization is complete, you will be automatically redirected to the Trilium application. diff --git a/docs/User Guide/User Guide/Attachments/sync-config.png b/docs/User Guide/User Guide/Installation & Setup/Synchronization_sync-confi.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/sync-config.png rename to docs/User Guide/User Guide/Installation & Setup/Synchronization_sync-confi.png diff --git a/docs/User Guide/User Guide/Attachments/sync-in-progress.png b/docs/User Guide/User Guide/Installation & Setup/Synchronization_sync-in-pr.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/sync-in-progress.png rename to docs/User Guide/User Guide/Installation & Setup/Synchronization_sync-in-pr.png diff --git a/docs/User Guide/User Guide/Attachments/sync-init.png b/docs/User Guide/User Guide/Installation & Setup/Synchronization_sync-init.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/sync-init.png rename to docs/User Guide/User Guide/Installation & Setup/Synchronization_sync-init.png diff --git a/docs/User Guide/User Guide/Note Types.md b/docs/User Guide/User Guide/Note Types.md new file mode 100644 index 000000000..a47b3d650 --- /dev/null +++ b/docs/User Guide/User Guide/Note Types.md @@ -0,0 +1,28 @@ +# Note Types +One core features of Trilium is that it supports multiple types of notes, depending on the need. + +## Creating a new note with a different type via the note tree + +The default note type in Trilium (e.g. when creating a new note) is Text, since it's for general use. + +To create a new note of a different type, head to the Note Tree and right click an existing note where to place the new one and select: + +* _Insert note after_, to put the new note underneath the one selected. +* _Insert child note_, to insert the note as a child of the selected note. + +![](Note%20Types_image.png) + +## Creating a new note of a different type via add link or new tab + +* When adding a [link](Note%20Types/Text/Links.md) in a Text note, type the desired title of the new note and press Enter. Afterwards the type of the note will be asked. +* Similarly, when creating a new tab, type the desired title and press Enter. + +## Changing the type of a note + +It is possible to change the type of a note after it has been created via the _Basic Properties_ tab in the Ribbon. Note that it's generally a good idea to change the note type only if the note is empty. Can also be used to edit the [source of a note](Advanced%20Usage/Note%20source.md). + +## Supported note types + +The following note types are supported by Trilium: + +
                Note TypeDescription
                TextThe default note type, which allows for rich text formatting, images, admonitions and right-to-left support.
                CodeUses a mono-space font and can be used to store larger chunks of code or plain text than a text note, and has better syntax highlighting.
                Saved SearchStores the information about a search (the search text, criteria, etc.) for later use. Can be used for quick filtering of a large amount of notes, for example. The search can easily be triggered.
                Relation MapAllows easy creation of notes and relations between them. Can be used for mainly relational data such as a family tree.
                Note MapDisplays the relationships between the notes, whether via relations or their hierarchical structure.
                Render NoteUsed in Scripting, it displays the HTML content of another note. This allows displaying any kind of content, provided there is a script behind it to generate it.
                Book

                Displays the children of the note either as a grid, a list, or for a more specialized case: a calendar.

                Generally useful for easy reading of short notes.

                Mermaid DiagramsDisplays diagrams such as bar charts, flow charts, state diagrams, etc. Requires a bit of technical knowledge since the diagrams are written in a specialized format.
                CanvasAllows easy drawing of sketches, diagrams, handwritten content. Uses the same technology behind excalidraw.com.
                Web ViewDisplays the content of an external web page, similar to a browser.
                Mind MapEasy for brainstorming ideas, by placing them in a hierarchical layout.
                Geo MapDisplays the children of the note as a geographical map, one use-case would be to plan vacations. It even has basic support for tracks. Notes can also be created from it.
                FileRepresents an uploaded file such as PDFs, images, video or audio files.
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/10_Geo Map_image.png b/docs/User Guide/User Guide/Note Types/10_Geo Map_image.png new file mode 100644 index 000000000..0c818c354 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/10_Geo Map_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/11_Geo Map_image.png b/docs/User Guide/User Guide/Note Types/11_Geo Map_image.png new file mode 100644 index 000000000..cf1451822 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/11_Geo Map_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/11_Geo map_image.png b/docs/User Guide/User Guide/Note Types/12_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/11_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/12_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/12_Geo map_image.png b/docs/User Guide/User Guide/Note Types/13_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/12_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/13_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/13_Geo map_image.png b/docs/User Guide/User Guide/Note Types/14_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/13_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/14_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/14_Geo map_image.png b/docs/User Guide/User Guide/Note Types/15_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/14_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/15_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/15_Geo map_image.png b/docs/User Guide/User Guide/Note Types/15_Geo map_image.png deleted file mode 100644 index 23209e0ad..000000000 Binary files a/docs/User Guide/User Guide/Note Types/15_Geo map_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/16_Geo map_image.png b/docs/User Guide/User Guide/Note Types/16_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/16_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/16_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/17_Geo Map_image.png b/docs/User Guide/User Guide/Note Types/17_Geo Map_image.png new file mode 100644 index 000000000..e77c1aff8 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/17_Geo Map_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/17_Geo map_image.png b/docs/User Guide/User Guide/Note Types/18_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/17_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/18_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/1_Book_image.png b/docs/User Guide/User Guide/Note Types/1_Book_image.png deleted file mode 100644 index ba4e1dd7a..000000000 Binary files a/docs/User Guide/User Guide/Note Types/1_Book_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/1_File_image.png b/docs/User Guide/User Guide/Note Types/1_File_image.png new file mode 100644 index 000000000..d0062c3ff Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/1_File_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/1_Geo map_image.png b/docs/User Guide/User Guide/Note Types/1_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/1_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/1_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/1_Mermaid Diagrams_image.png b/docs/User Guide/User Guide/Note Types/1_Mermaid Diagrams_image.png new file mode 100644 index 000000000..351a09108 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/1_Mermaid Diagrams_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/1_Relation Map_relation-map-.gif b/docs/User Guide/User Guide/Note Types/1_Relation Map_relation-map-.gif new file mode 100644 index 000000000..4a02dbeea Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/1_Relation Map_relation-map-.gif differ diff --git a/docs/User Guide/User Guide/Attachments/relation-map-dev-process.png b/docs/User Guide/User Guide/Note Types/1_Relation Map_relation-map-.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/relation-map-dev-process.png rename to docs/User Guide/User Guide/Note Types/1_Relation Map_relation-map-.png diff --git a/docs/User Guide/User Guide/Attachments/text-notes-formatting-inli.png b/docs/User Guide/User Guide/Note Types/1_Text_text-notes-formatting.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/text-notes-formatting-inli.png rename to docs/User Guide/User Guide/Note Types/1_Text_text-notes-formatting.png diff --git a/docs/User Guide/User Guide/Note Types/2_File_image.png b/docs/User Guide/User Guide/Note Types/2_File_image.png new file mode 100644 index 000000000..1fbcb46d6 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/2_File_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/3_Geo map_image.png b/docs/User Guide/User Guide/Note Types/2_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/3_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/2_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/2_Geo map_image.png b/docs/User Guide/User Guide/Note Types/2_Geo map_image.png deleted file mode 100644 index 97879b76a..000000000 Binary files a/docs/User Guide/User Guide/Note Types/2_Geo map_image.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Note Types/2_Mermaid Diagrams_image.png b/docs/User Guide/User Guide/Note Types/2_Mermaid Diagrams_image.png new file mode 100644 index 000000000..c029e5d5a Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/2_Mermaid Diagrams_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/3_File_image.png b/docs/User Guide/User Guide/Note Types/3_File_image.png new file mode 100644 index 000000000..7cb39064a Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/3_File_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/4_Geo map_image.png b/docs/User Guide/User Guide/Note Types/3_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/4_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/3_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/4_File_image.png b/docs/User Guide/User Guide/Note Types/4_File_image.png new file mode 100644 index 000000000..6b15c903f Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/4_File_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/5_Geo map_image.png b/docs/User Guide/User Guide/Note Types/4_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/5_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/4_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/5_File_image.png b/docs/User Guide/User Guide/Note Types/5_File_image.png new file mode 100644 index 000000000..c1a255edc Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/5_File_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/6_Geo map_image.png b/docs/User Guide/User Guide/Note Types/5_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/6_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/5_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/6_File_image.png b/docs/User Guide/User Guide/Note Types/6_File_image.png new file mode 100644 index 000000000..ba44b1074 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/6_File_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/7_Geo map_image.png b/docs/User Guide/User Guide/Note Types/6_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/7_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/6_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/8_Geo map_image.png b/docs/User Guide/User Guide/Note Types/7_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/8_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/7_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/9_Geo map_image.png b/docs/User Guide/User Guide/Note Types/8_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/9_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/8_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/10_Geo map_image.png b/docs/User Guide/User Guide/Note Types/9_Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/10_Geo map_image.png rename to docs/User Guide/User Guide/Note Types/9_Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/Book.md b/docs/User Guide/User Guide/Note Types/Book.md index e672773a9..7659770de 100644 --- a/docs/User Guide/User Guide/Note Types/Book.md +++ b/docs/User Guide/User Guide/Note Types/Book.md @@ -1,20 +1,14 @@ # Book A **Book Note** in Trilium is a special type of [note](../Basic%20Concepts%20and%20Features/Notes.md) designed to display the contents of its child notes sequentially, creating a linear, book-like reading experience. This format is particularly useful for viewing multiple smaller notes in a cohesive, continuous manner. -![](1_Book_image.png) +![](Book_image.png) In the example above, the "node.js" note on the left panel contains several child notes. The right panel displays the content of these child notes as a single continuous document. ## Features -### Linear Display - The Book Note format compiles the contents of all child notes into one continuous view. This makes it ideal for reading extensive information broken into smaller, manageable segments. -### Grid View Option +It uses the Note List mechanism to display the child notes, allowing the use of any of the view types (grid, list, calendar). -Trilium also offers a "Grid View" option within the Book Note properties. This view presents the child notes in a grid format, allowing for a more visual navigation experience. - -![](Book_image.png) - -Switching between these views can be easily managed through the Book Note's settings (or `viewType` attribute), allowing users to choose the format that best suits their reading or navigation preferences. \ No newline at end of file +To adjust the view type, see the dedicated _Book_ tab in the Ribbon. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Book/Calendar View.md b/docs/User Guide/User Guide/Note Types/Book/Calendar View.md deleted file mode 100644 index 77b6ad014..000000000 --- a/docs/User Guide/User Guide/Note Types/Book/Calendar View.md +++ /dev/null @@ -1,123 +0,0 @@ -# Calendar View -![](4_Calendar%20View_image.png) - -The Calendar view of Book notes will display each child note in a calendar that has a start date and optionally an end date, as an event. - -The Calendar view has multiple display modes: - -* Week view, where all the 7 days of the week (or 5 if the weekends are hidden) are displayed in columns. This mode allows entering and displaying time-specific events, not just all-day events. -* Month view, where the entire month is displayed and all-day events can be inserted. Both time-specific events and all-day events are listed. -* Year view, which displays the entire year for quick reference. -* List view, which displays all the events of a given month in sequence. - -Unlike other Book view types, the Calendar view also allows some kind of interaction, such as moving events around as well as creating new ones. - -## Creating a calendar - -| | | | -| --- | --- | --- | -| 1 | ![](2_Calendar%20View_image.png) | The Calendar View works only for Book note types. To create a new note, right click on the note tree on the left and select Insert note after, or Insert child note and then select _Book_. | -| 2 | ![](3_Calendar%20View_image.png) | Once created, the “View type” of the Book needs changed to “Calendar”, by selecting the “Book Properties” tab in the ribbon. | - -## Creating a new event/note - -* Clicking on a day will create a new child note and assign it to that particular day. - * You will be asked for the name of the new note. If the popup is dismissed by pressing the close button or escape, then the note will not be created. -* It's possible to drag across multiple days to set both the start and end date of a particular note. - ![](Calendar%20View_image.png) -* Creating new notes from the calendar will respect the `~child:template` relation if set on the book note. - -## Interacting with events - -* Hovering the mouse over an event will display information about the note. - ![](7_Calendar%20View_image.png) -* Left clicking the event will go to that note. Middle clicking will open the note in a new tab and right click will offer more options including opening the note in a new split or window. -* Drag and drop an event on the calendar to move it to another day. -* The length of an event can be changed by placing the mouse to the right edge of the event and dragging the mouse around. - -## Configuring the calendar - -The following attributes can be added to the book type: - -
                NameDescription
                #calendar:hideWeekendsWhen present (regardless of value), it will hide Saturday and Sundays from the calendar.
                #calendar:weekNumbersWhen present (regardless of value), it will show the number of the week on the calendar.
                #calendar:view

                Which view to display in the calendar:

                • timeGridWeek for the week view;
                • dayGridMonth for the month view;
                • multiMonthYear for the year view;
                • listMonth for the list view.

                Any other value will be dismissed and the default view (month) will be used instead.

                The value of this label is automatically updated when changing the view using the UI buttons.

                ~child:templateDefines the template for newly created notes in the calendar (via dragging or clicking).
                - -In addition, the first day of the week can be either Sunday or Monday and can be adjusted from the application settings. - -## Configuring the calendar events - -For each note of the calendar, the following attributes can be used: - -| Name | Description | -| --- | --- | -| `#startDate` | The date the event starts, which will display it in the calendar. The format is `YYYY-MM-DD` (year, month and day separated by a minus sign). | -| `#endDate` | Similar to `startDate`, mentions the end date if the event spans across multiple days. The date is inclusive, so the end day is also considered. The attribute can be missing for single-day events. | -| `#startTime` | The time the event starts at. If this value is missing, then the event is considered a full-day event. The format is `HH:MM` (hours in 24-hour format and minutes). | -| `#endTime` | Similar to `startTime`, it mentions the time at which the event ends (in relation with `endDate` if present, or `startDate`). | -| `#color` | Displays the event with a specified color (named such as `red`, `gray` or hex such as `#FF0000`). This will also change the color of the note in other places such as the note tree. | -| `#calendar:color` | Similar to `#color`, but applies the color only for the event in the calendar and not for other places such as the note tree. | -| `#iconClass` | If present, the icon of the note will be displayed to the left of the event title. | -| `#calendar:title` | Changes the title of an event to point to an attribute of the note other than the title, can either a label or a relation (without the `#` or `~` symbol). See _Use-cases_ for more information. | -| `#calendar:displayedAttributes` | Allows displaying the value of one or more attributes in the calendar like this:   

                ![](9_Calendar%20View_image.png)  

                `#weight="70" #Mood="Good" #calendar:displayedAttributes="weight,Mood"` 

                It can also be used with relations, case in which it will display the title of the target note:  

                `~assignee=@My assignee #calendar:displayedAttributes="assignee"` | -| `#calendar:startDate` | Allows using a different label to represent the start date, other than `startDate` (e.g. `expiryDate`). The label name **must not be** prefixed with `#`. If the label is not defined for a note, the default will be used instead. | -| `#calendar:endDate` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the end date. | -| `#calendar:startTime` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the start time. | -| `#calendar:endTime` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the end time. | - -## How the calendar works - -![](11_Calendar%20View_image.png) - -The calendar displays all the child notes of the book that have a `#startDate`. An `#endDate` can optionally be added. - -If editing the start date and end date from the note itself is desirable, the following attributes can be added to the book note: - -``` -#viewType=calendar #label:startDate(inheritable)="promoted,alias=Start Date,single,date" -#label:endDate(inheritable)="promoted,alias=End Date,single,date" -#hidePromotedAttributes -``` - -This will result in: - -![](10_Calendar%20View_image.png) - -When not used in a Journal, the calendar is recursive. That is, it will look for events not just in its child notes but also in the children of these child notes. - -## Use-cases - -### Using with the Journal / calendar - -It is possible to integrate the calendar view into the Journal with day notes. In order to do so change the note type of the Journal note (calendar root) to Book and then select the Calendar View. - -Based on the `#calendarRoot` (or `#workspaceCalendarRoot`) attribute, the calendar will know that it's in a calendar and apply the following: - -* The calendar events are now rendered based on their `dateNote` attribute rather than `startDate`. -* Interactive editing such as dragging over an empty era or resizing an event is no longer possible. -* Clicking on the empty space on a date will automatically open that day's note or create it if it does not exist. -* Direct children of a day note will be displayed on the calendar despite not having a `dateNote` attribute. Children of the child notes will not be displayed. - -![](8_Calendar%20View_image.png) - -### Using a different attribute as event title - -By default, events are displayed on the calendar by their note title. However, it is possible to configure a different attribute to be displayed instead. - -To do so, assign `#calendar:title` to the child note (not the calendar/book note), with the value being `name` where `name` can be any label (make not to add the `#` prefix). The attribute can also come through inheritance such as a template attribute. If the note does not have the requested label, the title of the note will be used instead. - -
                  
                #startDate=2025-02-11 #endDate=2025-02-13 #name="My vacation" #calendar:title="name"
                - -### Using a relation attribute as event title - -Similarly to using an attribute, use `#calendar:title` and set it to `name` where `name` is the name of the relation to use. - -Moreover, if there are more relations of the same name, they will be displayed as multiple events coming from the same note. - -| | | -| --- | --- | -| `#startDate=2025-02-14 #endDate=2025-02-15 ~for=@John Smith ~for=@Jane Doe #calendar:title="for"` | ![](6_Calendar%20View_image.png) | - -Note that it's even possible to have a `#calendar:title` on the target note (e.g. “John Smith”) which will try to render an attribute of it. Note that it's not possible to use a relation here as well for safety reasons (an accidental recursion  of attributes could cause the application to loop infinitely). - -| | | -| --- | --- | -| `#calendar:title="shortName" #shortName="John S."` | ![](1_Calendar%20View_image.png) | \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Book_image.png b/docs/User Guide/User Guide/Note Types/Book_image.png index 3e057b562..ba4e1dd7a 100644 Binary files a/docs/User Guide/User Guide/Note Types/Book_image.png and b/docs/User Guide/User Guide/Note Types/Book_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Code.md b/docs/User Guide/User Guide/Note Types/Code.md index a0e9edeb6..cba400984 100644 --- a/docs/User Guide/User Guide/Note Types/Code.md +++ b/docs/User Guide/User Guide/Note Types/Code.md @@ -5,7 +5,7 @@ This can be useful for a few things: * computer programmers can store code snippets as notes with syntax highlighting * JavaScript code notes can be executed inside Trilium for some extra functionality - * we call such JavaScript code notes "scripts" - see [Scripts](Code/Scripts.md) + * we call such JavaScript code notes "scripts" - see Scripting * JSON, XML etc. can be used as storage for structured data (typically used in conjunction with scripting) For shorter snippets of code that can be embedded in [Text](Text.md) notes, see [Code blocks](Text/Developer-specific%20formatting/Code%20blocks.md). diff --git a/docs/User Guide/User Guide/Note Types/Code/Events.md b/docs/User Guide/User Guide/Note Types/Code/Events.md deleted file mode 100644 index 5c90db376..000000000 --- a/docs/User Guide/User Guide/Note Types/Code/Events.md +++ /dev/null @@ -1,29 +0,0 @@ -# Events -[Script](Scripts.md) notes can be triggered by events. Note that these are backend events and thus relation need to point to the "JS backend" code note. - -## Global events - -Global events are attached to the script note via label. Simply create e.g. "run" label with some of these values and script note will be executed once the event occurs. - -* `run` - * `frontendStartup` - executes on frontend upon startup - * `mobileStartup` - executes on mobile frontend upon startup - * `backendStartup` - executes on backend upon startup - * `hourly` - executes once an hour on backend - * `daily` - executes once a day on backend - -## Entity events - -Other events are bound to some entity, these are defined as [relations](../../Advanced%20Usage/Attributes.md) - meaning that script is triggered only if note has this script attached to it through relations (or it can inherit it). - -* `runOnNoteCreation` - executes when note is created on backend -* `runOnNoteTitleChange` - executes when note title is changed (includes note creation as well) -* `runOnNoteContentChange` - executes when note content is changed (includes note creation as well). -* `runOnNoteChange` - executes when note is changed (includes note creation as well) -* `runOnNoteDeletion` - executes when note is being deleted -* `runOnBranchCreation` - executes when a branch is created. Branch is a link between parent note and child note and is created e.g. when cloning or moving note. -* `runOnBranchChange` (since v0.62) - executes when a branch is changed - either expanded status or prefix are changed. -* `runOnBranchDeletion` - executes when a branch is delete. Branch is a link between parent note and child note and is deleted e.g. when moving note (old branch/link is deleted). -* `runOnChildNoteCreation` - executes when new note is created under _this_ note -* `runOnAttributeCreation` - executes when new attribute is created under _this_ note -* `runOnAttributeChange` - executes when attribute is changed under _this_ note \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Code/Scripts.md b/docs/User Guide/User Guide/Note Types/Code/Scripts.md deleted file mode 100644 index ecd15270c..000000000 --- a/docs/User Guide/User Guide/Note Types/Code/Scripts.md +++ /dev/null @@ -1,54 +0,0 @@ -# Scripts -Trilium supports creating [code notes](../Code.md), i.e. notes which allow you to store some programming code and highlight it. Special case is JavaScript code notes which can also be executed inside Trilium which can in conjunction with [Script API](Script%20API.md) provide extra functionality. - -## Scripting - -To go further I must explain basic architecture of Trilium - in its essence it is a classic web application - it has these two main components: - -* frontend running in the browser (using HTML, CSS, JavaScript) - this is mainly used to interact with the user, display notes etc. -* backend running JavaScript code in node.js runtime - this is responsible for e.g. storing notes, encrypting them etc. - -So we have frontend and backend, each with their own set of responsibilities, but their common feature is that they both run JavaScript code. Add to this the fact, that we're able to create JavaScript \[\[code notes\]\] and we're onto something. - -## Button use case - -Let's take a look at our demo script (shipped with default Trilium [database](../../Advanced%20Usage/Database.md)) - Task manager. One of the things this script does is adding a button to the Trilium interface which will allow user to easily add new Task (TODO item). - -![](../../Attachments/button-script.png) - -First take a look at the red circle all the way on the top - this what we want to achieve - new button in UI which will create new note representing a task/todo item. - -Red point below the first one marks the note type we have created for this script - it's "JavaScript frontend". It's frontend because adding button to UI is clearly frontend responsibility. - -In the note content you can see the code which calls one of the API methods, this one is specifically meant to add new buttons. Code needs to set few button properties: - -* button title -* icon which should appear on the button -* optional shortcut under which you can trigger the button -* most importantly "action" - what must happen when button is clicked - -### Action handler - -Saving the note to the database is backend's responsibility, so we immediately pass control to the backend and ask it to create a note. Once this is done, we show the newly created note so that the user can set the task title and maybe some attributes. - -### Script execution - -So we have a script which will add the button to the toolbar. But how can we execute it? One possibility is to click on "play" icon (marked by red circle). The problem with this is that this UI change is time bound by Trilium runtime so when we restart Trilium, button won't be there. - -We need to execute it every time Trilium starts up, but we probably don't want to have to manually click on play button on every start up. - -The solution is marked by red circle at the bottom - this note has [label](../../Advanced%20Usage/Attributes.md) `#run=frontendStartup` - this is one of the "system" labels which Trilium understands. As you might guess, this will cause all such labeled script notes to be executed once Trilium frontend starts up. - -(`#run=frontendStartup` does not work for [Mobile frontend](../../Installation%20%26%20Setup/Mobile%20Frontend.md) - if you want to have scripts running there, give the script `#run=mobileStartup` label) - -### More showcases - -You can see more scripting with explanation in [Advanced showcases](../../Advanced%20Usage/Advanced%20Showcases.md) - -## Events - -See [Events](Events.md). - -## Script API - -See [Script API](Script%20API.md). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/File.md b/docs/User Guide/User Guide/Note Types/File.md new file mode 100644 index 000000000..3456ff025 --- /dev/null +++ b/docs/User Guide/User Guide/Note Types/File.md @@ -0,0 +1,92 @@ +# File +The _File_ note type can be used to attach various external files such as images, videos or PDF documents. + +## Uploading a file + +Since these files come from an external source, it is not possible to create a _File_ note type directly: + +* Drag a file into the Note Tree. +* Right click a note and select _Import into note_ and point it to one of the supported files. + +## Supported file types + +### PDFs + +
                + +PDFs can be browsed directly from Trilium. + +Interaction: + +* Press the menu icon at the top-left to see a preview (thumbnail) of all the pages, as well as a table of contents (if the PDF has this information). +* See or edit the page number at the top. +* Adjust the zoom using the buttons at the top or manually editing the value. +* Rotate the document if it's in the wrong orientation. +* In the contextual menu: + * View two pages at once (great for books). + * Toggle annotations (if present in the document). + * View document properties. + +### Images + +
                + +Interaction: + +* _Copy reference to clipboard_, for embedding the image within Text notes. See Image references for more information. + +### Videos + +
                + +Video files can be added in as well. The file is streamed directly, so when accessing the note from a server it doesn't have to download the entire video to start playing it. + +> [!CAUTION] +> Although Trilium offers support for videos, it is generally not meant to be used with very large files. Uploading large videos will cause the Database to balloon as well as the any Backup of it. In addition to that, there might be slowdowns when first uploading the files. Otherwise, a large database should not impact the general performance of Trilium significantly. + +### Audio + +
                + +Adding a supported audio file will reveal a basic audio player that can be used to play it. + +Interactions: + +* The audio can be played/paused using the dedicated button. +* Dragging the mouse across, or clicking the progress bar will seek through the song. +* The volume can be set. +* The playback speed can be adjusted via the contextual menu next to the volume. + +### Text files + +
                + +Files that are identified as containing text will show a preview of their content. One common use case for this type of file is to embed text files whose content is not necessarily of interest to the user, such as third-party libraries or generated content, that can then be downloaded if needed. + +Note that generally text files will be [imported](../Basic%20Concepts%20and%20Features/Import%20%26%20Export) as either Text or Code notes. To bypass this behavior and create a _File_ note type, use the _Import into note_ feature and uncheck _Import HTML, Markdown and TXT as text notes_, as well as _Import recognized code files as code notes_.  + +Since one of the use cases for having files instead of notes is to display large files, the content preview is limited to a relatively small amount of characters. To view the full file, consider opening it in an external application. + +### Unknown file types + +
                + +If the file could not be identified as any of the supported file types from above, it will be treated as an unknown file. In this case, all the default interactions will be available such as downloading or opening the file externally, but there will be no preview of the content. + +## Interaction + +* Regardless of the file type, a series of buttons will be displayed in the _Image_ or _File_ tab in the Ribbon. + * _Download_, which will download the file for local use. + * _Open_, will will open the file with the system-default application. + * Upload new revision to replace the file with a new one. +* It is **not** possible to change the note type of a _File_ note. +* Convert into an [attachment](../Basic%20Concepts%20and%20Features/Notes/Attachments.md) from the [note menu](../Basic%20Concepts%20and%20Features/UI%20Elements/Note%20buttons.md). + +## Relation with other notes + +* Files are also displayed in the Note List based on their type: + + +* Non-image files can be embedded into text notes as read-only widgets via the Include Note functionality. + +* Image files can be embedded into text notes like normal images via Image references. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/File_image.png b/docs/User Guide/User Guide/Note Types/File_image.png new file mode 100644 index 000000000..6dc60e3ac Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/File_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Geo Map.md b/docs/User Guide/User Guide/Note Types/Geo Map.md new file mode 100644 index 000000000..73b945fe8 --- /dev/null +++ b/docs/User Guide/User Guide/Note Types/Geo Map.md @@ -0,0 +1,83 @@ +# Geo Map +
                + +This note type displays the children notes on a geographical map, based on an attribute. It is also possible to add new notes at a specific location using the built-in interface. + +## Creating a new geo map + +
                   
                1
                Right click on any note on the note tree and select Insert child noteGeo Map (beta).
                2
                By default the map will be empty and will show the entire world.
                + +## Repositioning the map + +* Click and drag the map in order to move across the map. +* Use the mouse wheel, two-finger gesture on a touchpad or the +/- buttons on the top-left to adjust the zoom. + +The position on the map and the zoom are saved inside the map note and restored when visiting again the note. + +## Adding a marker using the map + +
                   
                1To create a marker, first navigate to the desired point on the map. Then press the button in the Floating buttons (top-right) area. 

                If the button is not visible, make sure the button section is visible by pressing the chevron button () in the top-right of the map.
                 
                2Once pressed, the map will enter in the insert mode, as illustrated by the notification.    

                Simply click the point on the map where to place the marker, or the Escape key to cancel.
                3Enter the name of the marker/note to be created.
                4Once confirmed, the marker will show up on the map and it will also be displayed as a child note of the map.
                + +## How the location of the markers is stored + +The location of a marker is stored in the `#geolocation` attribute of the child notes: + + + +This value can be added manually if needed. The value of the attribute is made up of the latitude and longitude separated by a comma. + +## Repositioning markers + +It's possible to reposition existing markers by simply drag and dropping them to the new destination. + +As soon as the mouse is released, the new position is saved. + +If moved by mistake, there is currently no way to undo the change. If the mouse was not yet released, it's possible to force a refresh of the page (Ctrl+R ) to cancel it. + +## Interaction with the markers + +* Hovering over a marker will display the content of the note it belongs to. + * Clicking on the note title in the tooltip will navigate to the note in the current view. +* Middle-clicking the marker will open the note in a new tab. +* Right-clicking the marker will open a contextual menu allowing: + * Opening the note in a new tab, split or window. + * Opening the location using an external application (if the operating system supports it). + * Removing the marker from the map, which will remove the `#geolocation` attribute of the note. To add it back again, the coordinates have to be manually added back in. + +## Icon and color of the markers + +
                image
                + +The markers will have the same icon as the note. + +It's possible to add a custom color to a marker by assigning them a `#color` attribute such as `#color=green`. + +## Adding the coordinates manually + +In a nutshell, create a child note and set the `#geolocation` attribute to the coordinates. + +The value of the attribute is made up of the latitude and longitude separated by a comma. + +### Adding from Google Maps + +
                   
                1
                Go to Google Maps on the web and look for a desired location, right click on it and a context menu will show up.    

                Simply click on the first item displaying the coordinates and they will be copied to clipboard.    

                Then paste the value inside the text box into the #geolocation attribute of a child note of the map (don't forget to surround the value with a " character).
                2
                In Trilium, create a child note under the map.
                3
                And then go to Owned Attributes and type #geolocation=", then paste from the clipboard as-is and then add the ending " character. Press Enter to confirm and the map should now be updated to contain the new note.
                + +### Adding from OpenStreetMap + +Similarly to the Google Maps approach: + +
                   
                1Go to any location on openstreetmap.org and right click to bring up the context menu. Select the “Show address” item.
                2The address will be visible in the top-left of the screen, in the place of the search bar.    

                Select the coordinates and copy them into the clipboard.
                3Simply paste the value inside the text box into the #geolocation attribute of a child note of the map and then it should be displayed on the map.
                + +## Adding GPS tracks (.gpx) + +Trilium has basic support for displaying GPS tracks on the geo map. + +
                   
                1
                To add a track, simply drag & drop a .gpx file inside the geo map in the note tree.
                2
                In order for the file to be recognized as a GPS track, it needs to show up as application/gpx+xml in the File type field.
                3
                When going back to the map, the track should now be visible.    

                The start and end points of the track are indicated by the two blue markers.
                + +## Troubleshooting + +
                + +### Grid-like artifacts on the map + +This occurs if the application is not at 100% zoom which causes the pixels of the map to not render correctly due to fractional scaling. The only possible solution is to set the UI zoom at 100% (default keyboard shortcut is Ctrl+0). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Geo map_image.jpg b/docs/User Guide/User Guide/Note Types/Geo Map_image.jpg similarity index 100% rename from docs/User Guide/User Guide/Note Types/Geo map_image.jpg rename to docs/User Guide/User Guide/Note Types/Geo Map_image.jpg diff --git a/docs/User Guide/User Guide/Note Types/Geo map_image.png b/docs/User Guide/User Guide/Note Types/Geo Map_image.png similarity index 100% rename from docs/User Guide/User Guide/Note Types/Geo map_image.png rename to docs/User Guide/User Guide/Note Types/Geo Map_image.png diff --git a/docs/User Guide/User Guide/Note Types/Geo map.md b/docs/User Guide/User Guide/Note Types/Geo map.md deleted file mode 100644 index 96b5e7bd4..000000000 --- a/docs/User Guide/User Guide/Note Types/Geo map.md +++ /dev/null @@ -1,99 +0,0 @@ -# Geo map -## Creating a new geo map - -| | | | -| --- | --- | --- | -| 1 | ![](8_Geo%20map_image.png) | Right click on any note on the note tree and select _Insert child note_ → _Geo Map (beta)_. | -| 2 | ![](10_Geo%20map_image.png) | By default the map will be empty and will show the entire world. | - -## Repositioning the map - -* Click and drag the map in order to move across the map. -* Use the mouse wheel, two-finger gesture on a touchpad or the +/- buttons on the top-left to adjust the zoom. - -The position on the map and the zoom are saved inside the map note and restored when visiting again the note. - -## Adding a marker using the map - -| | | | -| --- | --- | --- | -| 1 | | To create a marker, first navigate to the desired point on the map. Then press the ![](15_Geo%20map_image.png)button on the top-right of the map.  

                If the button is not visible, make sure the button section is visible by pressing the chevron button ( ![](2_Geo%20map_image.png)) in the top-right of the map. | -| 2 | ![](3_Geo%20map_image.png) | Once pressed, the map will enter in the insert mode, as illustrated by the notification.  

                Simply click the point on the map where to place the marker, or the Escape key to cancel. | -| 3 | ![](9_Geo%20map_image.png) | Enter the name of the marker/note to be created. | -| 4 | ![](16_Geo%20map_image.png) | Once confirmed, the marker will show up on the map and it will also be displayed as a child note of the map. | - -## How the location of the markers is stored - -The location of a marker is stored in the `#geolocation` attribute of the child notes: - -![](17_Geo%20map_image.png) - -This value can be added manually if needed. The value of the attribute is made up of the latitude and longitude separated by a comma. - -## Repositioning markers - -It's possible to reposition existing markers by simply drag and dropping them to the new destination. - -As soon as the mouse is released, the new position is saved. - -If moved by mistake, there is currently no way to undo the change. If the mouse was not yet released, it's possible to force a refresh of the page (Ctrl+R ) to cancel it. - -## Interaction with the markers - -* Hovering over a marker will display the content of the note it belongs to. - * Clicking on the note title in the tooltip will navigate to the note in the current view. -* Middle-clicking the marker will open the note in a new tab. -* Right-clicking the marker will open a contextual menu allowing: - * Opening the note in a new tab, split or window. - * Opening the location using an external application (if the operating system supports it). - * Removing the marker from the map, which will remove the `#geolocation` attribute of the note. To add it back again, the coordinates have to be manually added back in. - -## Icon and color of the markers - -![image](Geo%20map_image.jpg) - -The markers will have the same icon as the note. - -It's possible to add a custom color to a marker by assigning them a `#color` attribute such as `#color=green`. - -## Adding the coordinates manually - -In a nutshell, create a child note and set the `#geolocation` attribute to the coordinates. - -The value of the attribute is made up of the latitude and longitude separated by a comma. - -### Adding from Google Maps - -| | | | -| --- | --- | --- | -| 1 | ![](12_Geo%20map_image.png) | Go to Google Maps on the web and look for a desired location, right click on it and a context menu will show up.  

                Simply click on the first item displaying the coordinates and they will be copied to clipboard.  

                Then paste the value inside the text box into the `#geolocation` attribute of a child note of the map (don't forget to surround the value with a `"` character). | -| 2 | ![](5_Geo%20map_image.png) | In Trilium, create a child note under the map. | -| 3 | ![](11_Geo%20map_image.png) | And then go to Owned Attributes and type `#geolocation="`, then paste from the clipboard as-is and then add the ending `"` character. Press Enter to confirm and the map should now be updated to contain the new note. | - -### Adding from OpenStreetMap - -Similarly to the Google Maps approach: - -| | | | -| --- | --- | --- | -| 1 | ![](1_Geo%20map_image.png) | Go to any location on openstreetmap.org and right click to bring up the context menu. Select the “Show address” item. | -| 2 | ![](Geo%20map_image.png) | The address will be visible in the top-left of the screen, in the place of the search bar.  

                Select the coordinates and copy them into the clipboard. | -| 3 | ![](6_Geo%20map_image.png) | Simply paste the value inside the text box into the `#geolocation` attribute of a child note of the map and then it should be displayed on the map. | - -## Adding GPS tracks (.gpx) - -Trilium has basic support for displaying GPS tracks on the geo map. - -| | | | -| --- | --- | --- | -| 1 | ![](4_Geo%20map_image.png) | To add a track, simply drag & drop a .gpx file inside the geo map in the note tree. | -| 2 | ![](14_Geo%20map_image.png) | In order for the file to be recognized as a GPS track, it needs to show up as `application/gpx+xml` in the _File type_ field. | -| 3 | ![](7_Geo%20map_image.png) | When going back to the map, the track should now be visible.  

                The start and end points of the track are indicated by the two blue markers. | - -## Troubleshooting - -![](13_Geo%20map_image.png) - -### Grid-like artifacts on the map - -This occurs if the application is not at 100% zoom which causes the pixels of the map to not render correctly due to fractional scaling. The only possible solution is to set the UI zoom at 100% (default keyboard shortcut is Ctrl+0). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams.md b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams.md index 4e0f399b5..03987d969 100644 --- a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams.md +++ b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams.md @@ -1,21 +1,38 @@ # Mermaid Diagrams +
                + Trilium supports Mermaid, which adds support for various diagrams such as flowchart, sequence diagram, class diagram, state diagram, pie charts, etc., all using a text description of the chart instead of manually drawing the diagram. For the official documentation of Mermaid.js see [mermaid.js.org/intro/](https://mermaid.js.org/intro/). -## ELK layout engine +## Layouts -Mermaid supports a different layout engine which supports slightly more complex diagrams, called the [Eclipse Layout Kernel (ELK)](https://eclipse.dev/elk/). Trilium has support for these as well, but it's not enabled by default. +Depending on the chart being edited and user preference, there are two layouts supported by the Mermaid note type: -In order to activate ELK for any diagram, insert the following YAML frontmatter right at the beginning of the diagram: +* Horizontal, where the source code (editable part) is on the left side of the screen and the preview is to the right. +* Vertical, where the source code is at the bottom of the screen and the preview is at the top. -```yaml ---- -config: - layout: elk ---- -``` +It's possible to switch between the two layouts at any time by pressing the ![](Mermaid%20Diagrams_image.png) icon in the Floating buttons area. -| With ELK off | With ELK on | -| --- | --- | -| ![](Mermaid%20Diagrams/ELK%20off.txt) | ![](Mermaid%20Diagrams/ELK%20on.txt) | \ No newline at end of file +## Interaction + +* The source code of the diagram (in Mermaid format) is displayed on the left or bottom side of the note (depending on the layout). + * Changing the diagram code will refresh automatically the diagram. +* The preview of the diagram is displayed at the right or top side of the note (depending on the layout): + * There are dedicated buttons at the bottom-right of the preview to control the zoom in, zoom out or re-center the diagram: ![](1_Mermaid%20Diagrams_image.png) + * The preview can be moved around by holding the left mouse button and dragging. + * Zooming can also be done by using the scroll wheel. + * The zoom and position on the preview will remain fixed as the diagram changes, to be able to work more easily with large diagrams. +* The size of the source/preview panes can be adjusted by hovering over the border between them and dragging it with the mouse. +* In the Floating buttons area: + * The source/preview can be laid out left-right or bottom-top via the _Move editing pane to the left / bottom_ option. + * Press _Lock editing_ to automatically mark the note as read-only. In this mode, the code pane is hidden and the diagram is displayed full-size. Similarly, press _Unlock editing_ to mark a read-only note as editable. + * Press the _Copy image reference to the clipboard_ to be able to insert the image representation of the diagram into a text note. See Image references for more information. + * Press the _Export diagram as SVG_ to download a scalable/vector rendering of the diagram. Can be used to present the diagram without degrading when zooming. + * Press the _Export diagram as PNG_ to download a normal image (at 1x scale, raster) of the diagram. Can be used to send the diagram in more traditional channels such as e-mail. + +## Errors in the diagram + +If there is an error in the source code, the error will be displayed in an information pane. + +During the state of an error, the diagram will no longer be rendered and the previously working diagram will remain in the preview section. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout.md b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout.md new file mode 100644 index 000000000..807cef8ab --- /dev/null +++ b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout.md @@ -0,0 +1,15 @@ +# ELK layout +Mermaid supports a different layout engine which supports slightly more complex diagrams, called the [Eclipse Layout Kernel (ELK)](https://eclipse.dev/elk/). Trilium has support for these as well, but it's not enabled by default. + +In order to activate ELK for any diagram, insert the following YAML frontmatter right at the beginning of the diagram: + +```yaml +--- +config: + layout: elk +--- +``` + +| With ELK off | With ELK on | +| --- | --- | +| ![](ELK%20layout_ELK%20off.svg) | ![](ELK%20layout_ELK%20on.svg) | \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout_ELK off.svg b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout_ELK off.svg new file mode 100644 index 000000000..a6a8a0125 --- /dev/null +++ b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout_ELK off.svg @@ -0,0 +1 @@ +

                Guarantee

                User attributes

                Master data

                Exchange Rate

                Profit Centers

                Vendor Partners

                Work Situation

                Customer

                Profit Centers

                Guarantee

                A

                B

                C

                Interfaces for B
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout_ELK on.svg b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout_ELK on.svg new file mode 100644 index 000000000..1a400331d --- /dev/null +++ b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout_ELK on.svg @@ -0,0 +1 @@ +

                A

                B

                C

                Guarantee

                User attributes

                Master data

                Exchange Rate

                Profit Centers

                Vendor Partners

                Work Situation

                Customer

                Profit Centers

                Guarantee

                Interfaces for B
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off.txt b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off.txt deleted file mode 100644 index 353f1ded4..000000000 --- a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off.txt +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Interfaces for B ---- -flowchart LR -A-->|"Guarantee"|B -C-->|"User attributes"|B -C-.->|"Master data"|B -C-->|"Exchange Rate"|B -C-->|"Profit Centers"|B -C-->|"Vendor Partners"|B -C-->|"Work Situation"|B -C-->|"Customer"|B -C-->|"Profit Centers"|B -B-->|"Guarantee"|C \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off_mermaid-export.svg b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off_mermaid-export.svg deleted file mode 100644 index 2934db9da..000000000 --- a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK off_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -

                Guarantee

                User attributes

                Master data

                Exchange Rate

                Profit Centers

                Vendor Partners

                Work Situation

                Customer

                Profit Centers

                Guarantee

                A

                B

                C

                Interfaces for B
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on.txt b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on.txt deleted file mode 100644 index 4298215d0..000000000 --- a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on.txt +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Interfaces for B -config: - layout: elk ---- -flowchart LR -A-->|"Guarantee"|B -C-->|"User attributes"|B -C-.->|"Master data"|B -C-->|"Exchange Rate"|B -C-->|"Profit Centers"|B -C-->|"Vendor Partners"|B -C-->|"Work Situation"|B -C-->|"Customer"|B -C-->|"Profit Centers"|B -B-->|"Guarantee"|C \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on_mermaid-export.svg b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on_mermaid-export.svg deleted file mode 100644 index d63356ec4..000000000 --- a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams/ELK on_mermaid-export.svg +++ /dev/null @@ -1 +0,0 @@ -

                A

                B

                C

                Guarantee

                User attributes

                Master data

                Exchange Rate

                Profit Centers

                Vendor Partners

                Work Situation

                Customer

                Profit Centers

                Guarantee

                Interfaces for B
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Mermaid Diagrams_image.png b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams_image.png new file mode 100644 index 000000000..d96ae3c51 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/Mermaid Diagrams_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Mind Map.md b/docs/User Guide/User Guide/Note Types/Mind Map.md index e69de29bb..82bd8b889 100644 --- a/docs/User Guide/User Guide/Note Types/Mind Map.md +++ b/docs/User Guide/User Guide/Note Types/Mind Map.md @@ -0,0 +1,24 @@ +# Mind Map +
                + +The mindmap allows for easy jotting down of ideas and storing them in a hierarchical fashion. + +## Terminology + +* A **node** is a single idea, represented differently based on depth (filled rounded rectangle for the root note, unfilled rectangles for sub-ideas, lines only for sub-sub-ideas). +* The **root node** is the top-most node from which all other nodes derive, displayed as a filled rectangle. There can only be a single root node. + +## Interaction + +* To create a new node at the same level as the current one, press Enter, enter the desired text and then press Enter once again to confirm. +* Similarly, to create a sub-node, press Tab, enter the desired text and then press Enter. +* To create a parent, use Ctrl+Enter instead. +* To remove a node, press Delete. +* To move a node up or down, press Page Up or Page Down. +* To adjust the font size, color of the text or background or to add a link, click on a node and use the floating panel that appears to the right. +* To select one or more notes, drag and drop across the map. +* Right click the node to bring a contextual menu with options such as creating new nodes, focusing on a particular notes or creating links between them. +* Use the buttons at the top-left to change the positioning of the nodes relative to the root node (to the left, to the right, or to both sides). +* In the Floating buttons area: + * An [image reference](Text/Images/Image%20references.md) can be copied, to paste the mind map in a text note. + * The diagram can be exported either as SVG (vectorial) or PNG (raster). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Mind Map_image.png b/docs/User Guide/User Guide/Note Types/Mind Map_image.png new file mode 100644 index 000000000..692ac9877 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/Mind Map_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Note Map.md b/docs/User Guide/User Guide/Note Types/Note Map.md index 9d3c4fa77..ff79aea46 100644 --- a/docs/User Guide/User Guide/Note Types/Note Map.md +++ b/docs/User Guide/User Guide/Note Types/Note Map.md @@ -1,6 +1,6 @@ # Note Map +
                + A Note map is a note type which displays a standalone version of the feature of the same name: [Note Map (Link map, Tree map)](../Advanced%20Usage/Note%20Map%20\(Link%20map%2C%20Tree%20map\).md). -Once created, the note map will display the relations between notes. Only the notes that are part of the parent of the note map will be displayed (including their children). - -![](Note%20Map_image.png) \ No newline at end of file +Once created, the note map will display the relations between notes. Only the notes that are part of the parent of the note map will be displayed (including their children). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Relation Map.md b/docs/User Guide/User Guide/Note Types/Relation Map.md index 3fc9fcced..563b3da45 100644 --- a/docs/User Guide/User Guide/Note Types/Relation Map.md +++ b/docs/User Guide/User Guide/Note Types/Relation Map.md @@ -5,11 +5,11 @@ Relation map is a type of [Note](../Basic%20Concepts%20and%20Features/Notes.md) This is a basic example how you can create simple diagram using relation maps: -![](../Attachments/relation-map-dev-process.png) +![](1_Relation%20Map_relation-map-.png) And this is how you can create it: -![](Relation%20Map_relation-map-.gif) +![](1_Relation%20Map_relation-map-.gif) We start completely from scratch by first creating new note called "Development process" and changing its type to "Relation map". After that we create new notes one by one and place them by clicking into the map. We also drag [relations](../Advanced%20Usage/Attributes.md)between notes and name them. That's all! @@ -19,11 +19,11 @@ Items on the map - "Specification", "Development", "Testing" and "Demo" are actu This is more complicated demo using some advanced concepts. Resulting diagram is here: -![](../Attachments/relation-map-family.png) +![](Relation%20Map_relation-map-.png) This is how you get to it: -![](../Attachments/relation-map-family-demo.gif) +![](Relation%20Map_relation-map-.gif) There are several steps here: diff --git a/docs/User Guide/User Guide/Note Types/Relation Map_relation-map-.gif b/docs/User Guide/User Guide/Note Types/Relation Map_relation-map-.gif index 4a02dbeea..b66dc05f4 100644 Binary files a/docs/User Guide/User Guide/Note Types/Relation Map_relation-map-.gif and b/docs/User Guide/User Guide/Note Types/Relation Map_relation-map-.gif differ diff --git a/docs/User Guide/User Guide/Attachments/relation-map-family.png b/docs/User Guide/User Guide/Note Types/Relation Map_relation-map-.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/relation-map-family.png rename to docs/User Guide/User Guide/Note Types/Relation Map_relation-map-.png diff --git a/docs/User Guide/User Guide/Note Types/Render Note.md b/docs/User Guide/User Guide/Note Types/Render Note.md index e69de29bb..6b70ad128 100644 --- a/docs/User Guide/User Guide/Note Types/Render Note.md +++ b/docs/User Guide/User Guide/Note Types/Render Note.md @@ -0,0 +1,39 @@ +# Render Note +
                + +Render Note is used in Scripting. It works by displaying the HTML of a Code note, via an attribute. + +## Creating a render note + +1. Create a Code note with the HTML language, with what needs to be displayed (for example `

                Hello world.

                `). +2. Create a Render Note. +3. Assign the `renderNote` [relation](../Advanced%20Usage/Attributes.md) to point at the previously created code note. + +## Dynamic content + +A static HTML is generally not enough for Scripting. The next step is to automatically change parts of the note using JavaScript. + +For a simple example, we are going to create a render note that displays the current date in a field. + +To do so, first create an HTML code note with the following content: + +``` +

                Current date & time

                +The current date & time is +``` + +Now we need to add the script. Create another Code, but this time of JavaScript (frontend) language. Make sure the newly created note is a direct child of the HTML note created previously; with the following content: + +``` +const $dateEl = api.$container.find(".date"); +$dateEl.text(new Date()); +``` + +Now create a render note at any place and set its `~renderNote` relation to point to the HTML note. When the render note is accessed it will display: + +> **Current date & time** +> The current date & time is Sun Apr 06 2025 15:26:29 GMT+0300 (Eastern European Summer Time) + +## Examples + +* Weight Tracker which is present in the Demo Notes. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Render Note_image.png b/docs/User Guide/User Guide/Note Types/Render Note_image.png new file mode 100644 index 000000000..18afa6cee Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/Render Note_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Saved Search.md b/docs/User Guide/User Guide/Note Types/Saved Search.md index cba74eb57..c2664085f 100644 --- a/docs/User Guide/User Guide/Note Types/Saved Search.md +++ b/docs/User Guide/User Guide/Note Types/Saved Search.md @@ -1,8 +1,8 @@ # Saved Search Trilium allows you to save common searches as notes within the note tree. The search results will appear as sub-notes under these "saved search" notes. Here is an example of how it works: -![save-search](../Attachments/saved-search-image.gif) +
                ## Location -By default, saved searches are stored in the day note. However, you can designate a different note to store saved searches by marking it with the `#searchHome` label. Additionally, for [workspaces](../Basic%20Concepts%20and%20Features/Navigation/Workspace.md), you can use the `#workspaceSearchHome` label to specify a storage location for saved searches within that workspace. \ No newline at end of file +By default, saved searches are stored in the day note. However, you can designate a different note to store saved searches by marking it with the `#searchHome` label. Additionally, for [workspaces](../Basic%20Concepts%20and%20Features/Navigation/Workspaces.md), you can use the `#workspaceSearchHome` label to specify a storage location for saved searches within that workspace. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/saved-search.gif b/docs/User Guide/User Guide/Note Types/Saved Search_saved-search.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/saved-search.gif rename to docs/User Guide/User Guide/Note Types/Saved Search_saved-search.gif diff --git a/docs/User Guide/User Guide/Note Types/Text.md b/docs/User Guide/User Guide/Note Types/Text.md index 628d9d911..dcfc7d4e8 100644 --- a/docs/User Guide/User Guide/Note Types/Text.md +++ b/docs/User Guide/User Guide/Note Types/Text.md @@ -5,22 +5,15 @@ Trilium utilizes the powerful [CKEditor 5](https://ckeditor.com/ckeditor-5/) as The Trilium text note interface does not display toolbars or formatting options by default. These can be accessed by: -![inline note formatting](../Attachments/text-notes-formatting-inli.png) +![inline note formatting](1_Text_text-notes-formatting.png) 1. Selecting text to bring up an inline toolbar. -![formating note block](../Attachments/text-notes-formatting-bloc.png)2\. Clicking on the block toolbar. +![formating note block](Text_text-notes-formatting.png)2\. Clicking on the block toolbar. ## Read-Only vs. Editing Mode -Text notes are usually opened in edit mode. However, they may open in read-only mode under the following circumstances: - -* The note is long and would take time to load, so it is opened in read-only mode by default for quicker access. -* The note has a `readOnly` [label](../Advanced%20Usage/Attributes.md). - -In both cases, it is possible to switch back to editable mode using the ![](Text_bx-edit-alt.svg)button at top right of page. - -For more information, see [Read-Only Notes](../Basic%20Concepts%20and%20Features/Notes/Read-Only%20Notes.md). +Text notes are usually opened in edit mode. However, they may open in read-only mode if the note is too big or the note is explicitly marked as read-only. For more information, see [Read-Only Notes](../Basic%20Concepts%20and%20Features/Notes/Read-Only%20Notes.md). ## General Formatting @@ -71,18 +64,4 @@ Note: The use of `#` for Heading 1 is not supported because it is reserved for t Trilium provides math support through [KaTeX](https://katex.org/). -## Cutting Selection to Sub-Note - -When editing a document that becomes too large, you can split it into sub-notes: - -1. Select the desired text and cut it to the clipboard. -2. Create a new sub-note and name it. -3. Paste the content from the clipboard into the sub-note. - -Trilium can automate this process. Select some text within the note, and in the selection toolbar, click the scissors icon for the "cut & pasted selection to sub-note" action. The heading is automatically detected and the new sub-note is named accordingly. You can also assign a keyboard shortcut for this action. This functionality is available through the block toolbar icon. - -## Including a Note - -Text notes can "include" another note as a read only widget. This can be useful for e.g. including a dynamically generated chart (from scripts & "render HTML" note) or other more advanced use cases. - -This functionality is available in the block toolbar icon. \ No newline at end of file +
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Text/Cut to subnote.md b/docs/User Guide/User Guide/Note Types/Text/Cut to subnote.md new file mode 100644 index 000000000..681ad6fa0 --- /dev/null +++ b/docs/User Guide/User Guide/Note Types/Text/Cut to subnote.md @@ -0,0 +1,10 @@ +# Cut to subnote +
                + +When editing a document that becomes too large, you can split it into sub-notes: + +1. Select the desired text and cut it to the clipboard. +2. Create a new sub-note and name it. +3. Paste the content from the clipboard into the sub-note. + +Trilium can automate this process. Select some text within the note, and in the selection toolbar, click the scissors icon for the "cut & pasted selection to sub-note" action. The heading is automatically detected and the new sub-note is named accordingly. You can also assign a keyboard shortcut for this action. This functionality is available through the block toolbar icon. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/cut-to-subnote.gif b/docs/User Guide/User Guide/Note Types/Text/Cut to subnote_cut-to-subn.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/cut-to-subnote.gif rename to docs/User Guide/User Guide/Note Types/Text/Cut to subnote_cut-to-subn.gif diff --git a/docs/User Guide/User Guide/Note Types/Text/Highlights list.md b/docs/User Guide/User Guide/Note Types/Text/Highlights list.md new file mode 100644 index 000000000..96b6a1216 --- /dev/null +++ b/docs/User Guide/User Guide/Note Types/Text/Highlights list.md @@ -0,0 +1,25 @@ +# Highlights list +
                + +Similar to the Table of contents, but instead of headings this feature will list highlighted text from a text note and allow easy navigation to them. The list will be displayed in the Right Sidebar, provided there is at least one highlighted text. + +Highlighted text is defined as: + +* Bold text. +* Italic text. +* Underlined text. +* Text with a foreground color set. +* Text with a background color/highlight set. + +## Interaction + +* Clicking on a highlighted text will scroll the document to its position. +* Pressing the close button will dismiss the list of highlights but it can be shown again from the Floating buttons section. + +## Global configuration + +It's possible to toggle the display of each category of highlighted text (as defined above) in the highlights list by going to Text Notes settings and looking for the _Highlights List_ section. + +## Per-note configuration + +To suppress the display of highlighted text for one specific note, use Attributes to add the `#hideHighlightWidget` label. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Text/Highlights list_image.png b/docs/User Guide/User Guide/Note Types/Text/Highlights list_image.png new file mode 100644 index 000000000..5053f128c Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/Text/Highlights list_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/Images/1_Image references_image.png b/docs/User Guide/User Guide/Note Types/Text/Images/1_Image references_image.png new file mode 100644 index 000000000..8b18e07c7 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/Text/Images/1_Image references_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/Images/Image references.md b/docs/User Guide/User Guide/Note Types/Text/Images/Image references.md new file mode 100644 index 000000000..79e210233 --- /dev/null +++ b/docs/User Guide/User Guide/Note Types/Text/Images/Image references.md @@ -0,0 +1,21 @@ +# Image references +
                + +Image references are an easy way to embed the preview of another note type into a Text note. + +## Supported note types + +* Canvas +* Mermaid Diagrams +* Mind Map + +## Steps + +1. Go to one of the supported notes (listed above) and look for the ![](1_Image%20references_image.png) button in the Floating buttons area. +2. Go to a Text note and use the Paste function to insert the reference to that note. + +## Interaction + +* Double-clicking an image reference from a text note will automatically open the target note. +* Clicking an image reference while Ctrl is pressed will open the target note in a new tab. +* Modifying the target note should also update the image reference. If that doesn't happen, consider Refreshing the application. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Text/Images/Image references_image.png b/docs/User Guide/User Guide/Note Types/Text/Images/Image references_image.png new file mode 100644 index 000000000..4dd81d3df Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/Text/Images/Image references_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/Include Note.md b/docs/User Guide/User Guide/Note Types/Text/Include Note.md new file mode 100644 index 000000000..477a000e9 --- /dev/null +++ b/docs/User Guide/User Guide/Note Types/Text/Include Note.md @@ -0,0 +1,6 @@ +# Include Note +Text notes can "include" another note as a read-only widget. This can be useful for e.g. including a dynamically generated chart (from scripts & "render HTML" note) or other more advanced use cases. + +## Including a note + +In the Formatting toolbar, look for the ![](Include%20Note_image.png) button. There is also a keyboard shortcut defined for it but it is not allocated by default. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Text/Include Note_image.png b/docs/User Guide/User Guide/Note Types/Text/Include Note_image.png new file mode 100644 index 000000000..a261c113d Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/Text/Include Note_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text/Links.md b/docs/User Guide/User Guide/Note Types/Text/Links.md index 37c7d2660..5035522ad 100644 --- a/docs/User Guide/User Guide/Note Types/Text/Links.md +++ b/docs/User Guide/User Guide/Note Types/Text/Links.md @@ -5,7 +5,7 @@ External link is general web link targeting some external web resource - e.g. [h External links are done through CKEditor native links. To create an external link, select text and press Ctrl + K or wait for the "balloon" to appear and click link icon there. -![](../../Attachments/create-external-link.gif) +![](Links_create-external-link.gif) You can follow external link by either double clicking (will open new tab/window) it or right clicking on them and choosing "Open in new tab". @@ -18,7 +18,7 @@ In the dialog you can see radio button to choose from different types of linking * link title mirrors the note's current title - this is sometimes also called "reference link". Title of such links cannot be changed, instead it is always mirroring the title of linked note. This way the link title is never outdated * link title can be changed arbitrarily - this is the traditional hyperlink - you link to a particular note and can choose the link title -![](../../Attachments/create-link-to-note.gif) +![](Links_create-link-to-note.gif) You can follow the note link by double clicking it. diff --git a/docs/User Guide/User Guide/Attachments/create-external-link.gif b/docs/User Guide/User Guide/Note Types/Text/Links_create-external-link.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/create-external-link.gif rename to docs/User Guide/User Guide/Note Types/Text/Links_create-external-link.gif diff --git a/docs/User Guide/User Guide/Attachments/create-link-to-note.gif b/docs/User Guide/User Guide/Note Types/Text/Links_create-link-to-note.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/create-link-to-note.gif rename to docs/User Guide/User Guide/Note Types/Text/Links_create-link-to-note.gif diff --git a/docs/User Guide/User Guide/Note Types/Text/Table of contents.md b/docs/User Guide/User Guide/Note Types/Text/Table of contents.md new file mode 100644 index 000000000..950dc002e --- /dev/null +++ b/docs/User Guide/User Guide/Note Types/Text/Table of contents.md @@ -0,0 +1,23 @@ +# Table of contents +
                + +The table of contents appears in the Right Sidebar automatically when there are multiple headings in a text note. + +## Interaction + +* Clicking on a heading will scroll the document to the position of the heading. +* Pressing the close button will dismiss the table of contents but it can be shown again from the Floating buttons section. + +## Global configuration + +In Text Notes options, look for the _Table of Contents_ section and configure the minimum amount of headings that need to be present in the current note in order for the table of contents to show: + +* To always hide it, set the value to a really large number (e.g. 10000). +* To always display it if there's at least a single heading, set the value to 1. + +## Per-note configuration + +Use Attributes to configure the table of contents for a particular note: + +* `#toc=show` will show the table of contents for that note regardless of the global settings. +* Similarly, `#toc=hide` will always hide the table of contents for that note. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Text/Table of contents_image.png b/docs/User Guide/User Guide/Note Types/Text/Table of contents_image.png new file mode 100644 index 000000000..9c80dad37 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types/Text/Table of contents_image.png differ diff --git a/docs/User Guide/User Guide/Note Types/Text_bx-edit-alt.svg b/docs/User Guide/User Guide/Note Types/Text_bx-edit-alt.svg deleted file mode 100644 index 69dbf5040..000000000 --- a/docs/User Guide/User Guide/Note Types/Text_bx-edit-alt.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/User Guide/User Guide/Attachments/math.gif b/docs/User Guide/User Guide/Note Types/Text_math.gif similarity index 100% rename from docs/User Guide/User Guide/Attachments/math.gif rename to docs/User Guide/User Guide/Note Types/Text_math.gif diff --git a/docs/User Guide/User Guide/Attachments/text-notes-formatting-bloc.png b/docs/User Guide/User Guide/Note Types/Text_text-notes-formatting.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/text-notes-formatting-bloc.png rename to docs/User Guide/User Guide/Note Types/Text_text-notes-formatting.png diff --git a/docs/User Guide/User Guide/Note Types/Web View.md b/docs/User Guide/User Guide/Note Types/Web View.md index 680fb653f..4b3dbd888 100644 --- a/docs/User Guide/User Guide/Note Types/Web View.md +++ b/docs/User Guide/User Guide/Note Types/Web View.md @@ -1,7 +1,7 @@ # Web View ## Configuration -A webview needs to know which URL to render, and it can be provided by setting the `webViewSrc` attribute, such as: +A webview needs to know which URL to render, and it can be provided by setting the `webViewSrc` [label](../Advanced%20Usage/Attributes.md), such as: ``` #webViewSrc="https://www.wikipedia.org" diff --git a/docs/User Guide/User Guide/Note Types_image.png b/docs/User Guide/User Guide/Note Types_image.png new file mode 100644 index 000000000..e99209959 Binary files /dev/null and b/docs/User Guide/User Guide/Note Types_image.png differ diff --git a/docs/User Guide/User Guide/Scripting.md b/docs/User Guide/User Guide/Scripting.md new file mode 100644 index 000000000..bdc76d4a0 --- /dev/null +++ b/docs/User Guide/User Guide/Scripting.md @@ -0,0 +1,41 @@ +# Scripting +Trilium supports creating Code notes, i.e. notes which allow you to store some programming code and highlight it. Special case is JavaScript code notes which can also be executed inside Trilium which can in conjunction with Script API provide extra functionality. + +## Scripting + +To go further I must explain basic architecture of Trilium - in its essence it is a classic web application - it has these two main components: + +* frontend running in the browser (using HTML, CSS, JavaScript) - this is mainly used to interact with the user, display notes etc. +* backend running JavaScript code in node.js runtime - this is responsible for e.g. storing notes, encrypting them etc. + +So we have frontend and backend, each with their own set of responsibilities, but their common feature is that they both run JavaScript code. Add to this the fact, that we're able to create JavaScript \[\[code notes\]\] and we're onto something. + +## Use cases + +* "New Task" launcher button + +## Action handler + +Saving the note to the database is backend's responsibility, so we immediately pass control to the backend and ask it to create a note. Once this is done, we show the newly created note so that the user can set the task title and maybe some attributes. + +## Script execution + +So we have a script which will add the button to the toolbar. But how can we execute it? One possibility is to click on "play" icon (marked by red circle). The problem with this is that this UI change is time bound by Trilium runtime so when we restart Trilium, button won't be there. + +We need to execute it every time Trilium starts up, but we probably don't want to have to manually click on play button on every start up. + +The solution is marked by red circle at the bottom - this note has [label](Advanced%20Usage/Attributes.md) `#run=frontendStartup` - this is one of the "system" labels which Trilium understands. As you might guess, this will cause all such labeled script notes to be executed once Trilium frontend starts up. + +(`#run=frontendStartup` does not work for [Mobile frontend](Installation%20%26%20Setup/Mobile%20Frontend.md) - if you want to have scripts running there, give the script `#run=mobileStartup` label) + +## More showcases + +You can see more scripting with explanation in Advanced Showcases. + +## Events + +See Events. + +## Script API + +See Script API. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Scripting/Custom Widgets.md b/docs/User Guide/User Guide/Scripting/Custom Widgets.md new file mode 100644 index 000000000..1ef95c2ef --- /dev/null +++ b/docs/User Guide/User Guide/Scripting/Custom Widgets.md @@ -0,0 +1,9 @@ +# Custom Widgets +It's possible to create custom widget in three possible locations where you can display your custom content. + +Positions are: + +* `left-pane` +* `center-pane` +* `note-detail-pane` - located within `center-pane`, but specific to note (split) +* `right-pane` \ No newline at end of file diff --git a/docs/User Guide/User Guide/Developer Guides/Widget Basics.md b/docs/User Guide/User Guide/Scripting/Custom Widgets/Widget Basics.md similarity index 91% rename from docs/User Guide/User Guide/Developer Guides/Widget Basics.md rename to docs/User Guide/User Guide/Scripting/Custom Widgets/Widget Basics.md index d457ad6ac..ffc5df52a 100644 --- a/docs/User Guide/User Guide/Developer Guides/Widget Basics.md +++ b/docs/User Guide/User Guide/Scripting/Custom Widgets/Widget Basics.md @@ -22,10 +22,10 @@ module.exports = new MyWidget(); To implement this widget: 1. Create a new `JS Frontend` note in Trilium and paste in the code above. -2. Assign the `#widget` [attribute](../Advanced%20Usage/Attributes.md) to the [note](../Basic%20Concepts%20and%20Features/Notes.md). +2. Assign the `#widget` [attribute](../../Advanced%20Usage/Attributes.md) to the [note](../../Basic%20Concepts%20and%20Features/Notes.md). 3. Restart Trilium or reload the window. -To verify that the widget is working, open the developer tools (`Cmd` + `Shift` + `I`) and run `document.querySelector("#my-widget")`. If the element is found, the widget is functioning correctly. If `undefined` is returned, double-check that the [note](../Basic%20Concepts%20and%20Features/Notes.md) has the `#widget` [attribute](../Advanced%20Usage/Attributes.md). +To verify that the widget is working, open the developer tools (`Cmd` + `Shift` + `I`) and run `document.querySelector("#my-widget")`. If the element is found, the widget is functioning correctly. If `undefined` is returned, double-check that the [note](../../Basic%20Concepts%20and%20Features/Notes.md) has the `#widget` [attribute](../../Advanced%20Usage/Attributes.md). ### Step 2: Adding an UI Element @@ -85,7 +85,7 @@ After reloading Trilium, the button should now appear at the bottom left of the ### Step 4: Adding User Interaction -Let’s make the button interactive by showing a message when it’s clicked. We'll use the `api.showMessage` method from the [Script API](../Note%20Types/Code/Script%20API.md). +Let’s make the button interactive by showing a message when it’s clicked. We'll use the `api.showMessage` method from the [Script API](../Script%20API.md). ``` class MyWidget extends api.BasicWidget { diff --git a/docs/User Guide/User Guide/Note Types/Code/Custom Widgets.md b/docs/User Guide/User Guide/Scripting/Custom Widgets/Word count widget.md similarity index 52% rename from docs/User Guide/User Guide/Note Types/Code/Custom Widgets.md rename to docs/User Guide/User Guide/Scripting/Custom Widgets/Word count widget.md index 3dbea2e7c..d39b328ea 100644 --- a/docs/User Guide/User Guide/Note Types/Code/Custom Widgets.md +++ b/docs/User Guide/User Guide/Scripting/Custom Widgets/Word count widget.md @@ -1,16 +1,8 @@ -# Custom Widgets -It's possible to create custom widget in three possible locations where you can display your custom content. +# Word count widget +> [!TIP] +> This widget is also present in new installations in the Demo Notes. -Positions are: - -* `left-pane` -* `center-pane` -* `note-detail-pane` - located within `center-pane`, but specific to note (split) -* `right-pane` - -## Example - word count widget - -Create a code note of type JS frontend and **give it a** `**#widget**` **label**. +Create a Code note of type JS frontend and **give it a** `#widget` **label**. ``` /* @@ -19,64 +11,67 @@ Create a code note of type JS frontend and **give it a** `**#widget**` **label** * * See it in action in "Books" and its subtree. */ -const TPL = ` - Word count: - +const TPL = `
                + Word count: + -   +   - Character count: - -`; + Character count: + + chunk !== ''); - + let words; - + if (chunks.length === 1 && chunks[0] === '') { words = 0; } else { words = chunks.length; } - + const characters = chunks.join('').length; - + return {words, characters}; } - + async entitiesReloadedEvent({loadResults}) { if (loadResults.isNoteContentReloaded(this.noteId)) { this.refresh(); @@ -84,13 +79,11 @@ class WordCountWidget extends api.NoteContextAwareWidget { } } -module.exports = WordCountWidget; +module.exports = new WordCountWidget(); ``` -After you make changes it is necessary to restart Trilium so that the layout can be rebuilt. +After you make changes it is necessary to [restart Trilium](../../Troubleshooting/Refreshing%20the%20application.md) so that the layout can be rebuilt. -### Example screenshot +At the bottom of the note you can see the resulting widget: -On the bottom you can see the resulting widget: - -![](../../Attachments/Custom-widget%20image.png) \ No newline at end of file +
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Scripting/Custom Widgets/Word count widget_image.png b/docs/User Guide/User Guide/Scripting/Custom Widgets/Word count widget_image.png new file mode 100644 index 000000000..6fcd296fd Binary files /dev/null and b/docs/User Guide/User Guide/Scripting/Custom Widgets/Word count widget_image.png differ diff --git a/docs/User Guide/User Guide/Scripting/Events.md b/docs/User Guide/User Guide/Scripting/Events.md new file mode 100644 index 000000000..242d1790f --- /dev/null +++ b/docs/User Guide/User Guide/Scripting/Events.md @@ -0,0 +1,14 @@ +# Events +[Script](../Scripting.md) notes can be triggered by events. Note that these are backend events and thus relation need to point to the "JS backend" code note. + +## Global events + +Global events are attached to the script note via label. Simply create e.g. "run" label with some of these values and script note will be executed once the event occurs. + +
                LabelDescription
                run

                Defines on which events script should run. Possible values are:

                • frontendStartup - when Trilium frontend starts up (or is refreshed), but not on mobile.
                • mobileStartup - when Trilium frontend starts up (or is refreshed), on mobile.
                • backendStartup - when Trilium backend starts up
                • hourly - run once an hour. You can use additional label runAtHour to specify at which hour, on the back-end.
                • daily - run once a day, on the back-end
                runOnInstanceSpecifies that the script should only run on a particular Trilium instance.
                runAtHourOn which hour should this run. Should be used together with #run=hourly. Can be defined multiple times for more runs during the day.
                + +## Entity events + +Other events are bound to some entity, these are defined as [relations](../Advanced%20Usage/Attributes.md) - meaning that script is triggered only if note has this script attached to it through relations (or it can inherit it). + +
                RelationDescription
                runOnNoteCreationexecutes when note is created on backend. Use this relation if you want to run the script for all notes created under a specific subtree. In that case, create it on the subtree root note and make it inheritable. A new note created within the subtree (any depth) will trigger the script.
                runOnChildNoteCreationexecutes when new note is created under the note where this relation is defined
                runOnNoteTitleChangeexecutes when note title is changed (includes note creation as well)
                runOnNoteContentChangeexecutes when note content is changed (includes note creation as well).
                runOnNoteChangeexecutes when note is changed (includes note creation as well). Does not include content changes
                runOnNoteDeletionexecutes when note is being deleted
                runOnBranchCreationexecutes when a branch is created. Branch is a link between parent note and child note and is created e.g. when cloning or moving note.
                runOnBranchChangeexecutes when a branch is updated. (since v0.62)
                runOnBranchDeletionexecutes when a branch is deleted. Branch is a link between parent note and child note and is deleted e.g. when moving note (old branch/link is deleted).
                runOnAttributeCreationexecutes when new attribute is created for the note which defines this relation
                runOnAttributeChangeexecutes when the attribute is changed of a note which defines this relation. This is triggered also when the attribute is deleted
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Developer Guides/Examples/Downloading responses from Goo.md b/docs/User Guide/User Guide/Scripting/Examples/Downloading responses from Goo.md similarity index 100% rename from docs/User Guide/User Guide/Developer Guides/Examples/Downloading responses from Goo.md rename to docs/User Guide/User Guide/Scripting/Examples/Downloading responses from Goo.md diff --git a/docs/User Guide/User Guide/Scripting/Examples/New Task launcher button.md b/docs/User Guide/User Guide/Scripting/Examples/New Task launcher button.md new file mode 100644 index 000000000..6fd6f16f7 --- /dev/null +++ b/docs/User Guide/User Guide/Scripting/Examples/New Task launcher button.md @@ -0,0 +1,47 @@ +# "New Task" launcher button +In this example we are going to extend the functionality of Task Manager showcase (which comes by default with Trilium) by adding a button in the Launch Bar  (![](New%20Task%20launcher%20button_i.png)) to create a new task automatically and open it. + +## Creating the note + +1. First, create a new Code note type with the _JS frontend_ language. +2. Define the `#run=frontendStartup` label in Attributes. + +## Content of the script + +Copy-paste the following script: + +```javascript +api.addButtonToToolbar({ + title: "New task", + icon: "task", + shortcut: "alt+n", + action: async () => { + const taskNoteId = await api.runOnBackend(() => { + const todoRootNote = api.getNoteWithLabel("taskTodoRoot"); + const resp = api.createTextNote(todoRootNote.noteId, "New task", "") + return resp.note.noteId; + }); + + await api.waitUntilSynced(); + await api.activateNewNote(taskNoteId); + } +}); +``` + +## Testing the functionality + +Since we set the script to be run on start-up, all we need to do is to [refresh the application](../../Troubleshooting/Refreshing%20the%20application.md). + +## Understanding how the script works + +
                api.addButtonToToolbar({
                +	title: "New task",
                +    icon: "task",
                +    shortcut: "alt+n",
                +    action: async () => {
                +    	// [...]
                +    }
                +});

                This uses the Front-end API to create a icon in the Launch Bar, by specifying:

                • A title
                • A corresponding boxicons icon (without the bx- prefix).
                • Optionally, a keyboard shortcut to assign to it.
                • The action, which will be executed when the button is pressed.
                const taskNoteId = await api.runOnBackend(() => {
                +    // Shown below.           
                +    return resp.note.noteId;
                +});
                • This portion of code is actually executed on the server (backend) and not on the client (i.e. browser).
                  • The reason is that the creating notes is the responsibility of the server.
                • Here we can also see that it is possible to return results from the server execution and read them in the client (taskNoteId).
                const todoRootNote = api.getNoteWithLabel("taskTodoRoot");
                • Here we identify a note with the label #taskTodoRoot. This is how the Task Manager showcase knows where to place all the different tasks.
                • Normally this might return a null value if no such note could be identified, but error handling is outside the scope of this example. 
                const resp = api.createTextNote(todoRootNote.noteId, "New task", "")
                • We create a new child note within the to-do root note (first argument) with the title “New task" (second argument) and no content by default (third argument).
                await api.waitUntilSynced();
                • Back on the client, since we created a new note on the server, we now need to wait for the change to be reflected in the client.
                await api.activateNewNote(taskNoteId);
                • Since we know the ID of the newly created note, all we have to do now is to show this note to the user.
                \ No newline at end of file diff --git a/docs/User Guide/User Guide/Scripting/Examples/New Task launcher button_i.png b/docs/User Guide/User Guide/Scripting/Examples/New Task launcher button_i.png new file mode 100644 index 000000000..7a1b9c23e Binary files /dev/null and b/docs/User Guide/User Guide/Scripting/Examples/New Task launcher button_i.png differ diff --git a/docs/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes .png b/docs/User Guide/User Guide/Scripting/Examples/Using promoted attributes .png similarity index 100% rename from docs/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes .png rename to docs/User Guide/User Guide/Scripting/Examples/Using promoted attributes .png diff --git a/docs/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes to c.md b/docs/User Guide/User Guide/Scripting/Examples/Using promoted attributes to c.md similarity index 100% rename from docs/User Guide/User Guide/Developer Guides/Examples/Using promoted attributes to c.md rename to docs/User Guide/User Guide/Scripting/Examples/Using promoted attributes to c.md diff --git a/docs/User Guide/User Guide/Developer Guides/Frontend Basics.md b/docs/User Guide/User Guide/Scripting/Frontend Basics.md similarity index 96% rename from docs/User Guide/User Guide/Developer Guides/Frontend Basics.md rename to docs/User Guide/User Guide/Scripting/Frontend Basics.md index fe5435548..c76ac9a99 100644 --- a/docs/User Guide/User Guide/Developer Guides/Frontend Basics.md +++ b/docs/User Guide/User Guide/Scripting/Frontend Basics.md @@ -1,7 +1,7 @@ # Frontend Basics ## Frontend API -The frontend api supports two styles, regular scripts that are run with the current app and note context, and widgets that export an object to Trilium to be used in the UI. In both cases, the frontend api of Trilium is available to scripts running in the frontend context as global variable `api`. The members and methods of the api can be seen on the [Script API](../Note%20Types/Code/Script%20API.md) page. +The frontend api supports two styles, regular scripts that are run with the current app and note context, and widgets that export an object to Trilium to be used in the UI. In both cases, the frontend api of Trilium is available to scripts running in the frontend context as global variable `api`. The members and methods of the api can be seen on the [Script API](Script%20API.md) page. ## Scripts @@ -54,4 +54,4 @@ Conversely to scripts, widgets do have some specific requirements in order to wo ### Tutorial -For more information on building widgets, take a look at [Widget Basics](Widget%20Basics.md). \ No newline at end of file +For more information on building widgets, take a look at [Widget Basics](Custom%20Widgets/Widget%20Basics.md). \ No newline at end of file diff --git a/docs/User Guide/User Guide/Note Types/Code/Script API.md b/docs/User Guide/User Guide/Scripting/Script API.md similarity index 100% rename from docs/User Guide/User Guide/Note Types/Code/Script API.md rename to docs/User Guide/User Guide/Scripting/Script API.md diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Quick search.md b/docs/User Guide/User Guide/Scripting/Script API/Backend API.md similarity index 100% rename from docs/User Guide/User Guide/Basic Concepts and Features/UI Elements/Quick search.md rename to docs/User Guide/User Guide/Scripting/Script API/Backend API.md diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/Reverse proxy setup.md b/docs/User Guide/User Guide/Scripting/Script API/Frontend API/FNote.md similarity index 100% rename from docs/User Guide/User Guide/Installation & Setup/Server Installation/Reverse proxy setup.md rename to docs/User Guide/User Guide/Scripting/Script API/Frontend API/FNote.md diff --git a/docs/User Guide/User Guide/Theme development/1_Creating a custom theme_5_.png b/docs/User Guide/User Guide/Theme development/1_Creating a custom theme_5_.png deleted file mode 100644 index f2e63f1ec..000000000 Binary files a/docs/User Guide/User Guide/Theme development/1_Creating a custom theme_5_.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Theme development/Creating a custom theme.md b/docs/User Guide/User Guide/Theme development/Creating a custom theme.md index bc88acf63..a2005b766 100644 --- a/docs/User Guide/User Guide/Theme development/Creating a custom theme.md +++ b/docs/User Guide/User Guide/Theme development/Creating a custom theme.md @@ -5,7 +5,7 @@ Organization is an important aspect of managing a knowledge base. When developin As such, the first step is to create a new note to gather all the themes. -![](1_Creating%20a%20custom%20theme_5_.png) +![](Creating%20a%20custom%20theme_5_.png) ## Step 2. Create the theme @@ -41,6 +41,6 @@ Do note that the theme will be based off of the legacy theme. To override that a ## Step 5. Making changes -Simply go back to the note and change according to needs. To apply the changes to the current window, press Ctrl+Shift+R to refresh. +Simply go back to the note and change according to needs. To apply the changes to the current window, press Ctrl+Shift+R to refresh. It's a good idea to keep two windows, one for editing and the other one for previewing the changes. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Theme development/Creating a custom theme_im.png b/docs/User Guide/User Guide/Theme development/Creating a custom theme_im.png deleted file mode 100644 index ab66f9ecf..000000000 Binary files a/docs/User Guide/User Guide/Theme development/Creating a custom theme_im.png and /dev/null differ diff --git a/docs/User Guide/User Guide/Troubleshooting.md b/docs/User Guide/User Guide/Troubleshooting.md index dd150ad02..dad654ff7 100644 --- a/docs/User Guide/User Guide/Troubleshooting.md +++ b/docs/User Guide/User Guide/Troubleshooting.md @@ -21,7 +21,7 @@ TRILIUM_START_NOTE_ID=root ./trilium ## Broken Script Prevents Application Startup -If a custom script causes Triliumto crash, and it is set as a startup script or in an active [custom widget](Note%20Types/Code/Custom%20Widgets.md), start Triliumin "safe mode" to prevent any custom scripts from executing: +If a custom script causes Triliumto crash, and it is set as a startup script or in an active [custom widget](Scripting/Custom%20Widgets.md), start Triliumin "safe mode" to prevent any custom scripts from executing: ``` TRILIUM_SAFE_MODE=true ./trilium diff --git a/docs/User Guide/User Guide/Troubleshooting/Error logs.md b/docs/User Guide/User Guide/Troubleshooting/Error logs.md index a44bcfb93..df31195e0 100644 --- a/docs/User Guide/User Guide/Troubleshooting/Error logs.md +++ b/docs/User Guide/User Guide/Troubleshooting/Error logs.md @@ -16,7 +16,7 @@ If that doesn't work, then: * in Trilium desktop app, go to top-left menu button -> Advanced -> Open Dev Tools * In Firefox/Chrome right-click anywhere in the page and click Inspect: -![](../Attachments/error-logs-firefox-context.png) +![](Error%20logs_error-logs-fire.png) Once you have Dev Tools open, click on "Console" tab: @@ -36,4 +36,4 @@ Often times, bugs manifest themselves in specific notes and having them would gr In such case, please export the relevant note subtree by right-clicking it on the left tree, choosing Export - HTML as ZIP: -![](../Attachments/error-logs-export-subtree.png) \ No newline at end of file +![](Error%20logs_error-logs-expo.png) \ No newline at end of file diff --git a/docs/User Guide/User Guide/Attachments/error-logs-export-subtree.png b/docs/User Guide/User Guide/Troubleshooting/Error logs_error-logs-expo.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/error-logs-export-subtree.png rename to docs/User Guide/User Guide/Troubleshooting/Error logs_error-logs-expo.png diff --git a/docs/User Guide/User Guide/Attachments/error-logs-firefox-context.png b/docs/User Guide/User Guide/Troubleshooting/Error logs_error-logs-fire.png similarity index 100% rename from docs/User Guide/User Guide/Attachments/error-logs-firefox-context.png rename to docs/User Guide/User Guide/Troubleshooting/Error logs_error-logs-fire.png diff --git a/docs/frontend_api/FrontendScriptApi.html b/docs/frontend_api/FrontendScriptApi.html index cc2b9f1a1..6114b21a1 100644 --- a/docs/frontend_api/FrontendScriptApi.html +++ b/docs/frontend_api/FrontendScriptApi.html @@ -4680,7 +4680,7 @@ otherwise (by e.g. createLink()) -

                getWeekNote(date) → {Promise.<FNote>}

                +

                getWeekFirstDayNote(date) → {Promise.<FNote>}

                diff --git a/docs/frontend_api/services_frontend_script_api.js.html b/docs/frontend_api/services_frontend_script_api.js.html index 53cd61c4c..bee5628fa 100644 --- a/docs/frontend_api/services_frontend_script_api.js.html +++ b/docs/frontend_api/services_frontend_script_api.js.html @@ -563,7 +563,7 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, $contain * @param {string} date - e.g. "2019-04-29" * @returns {Promise<FNote>} */ - this.getWeekNote = dateNotesService.getWeekNote; + this.getWeekFirstDayNote = dateNotesService.getWeekFirstDayNote; /** * Returns month-note. If it doesn't exist, it is automatically created. diff --git a/dump-db/package-lock.json b/dump-db/package-lock.json index 4e489888a..3710ccd1d 100644 --- a/dump-db/package-lock.json +++ b/dump-db/package-lock.json @@ -422,9 +422,9 @@ } }, "node_modules/@types/better-sqlite3": { - "version": "7.6.12", - "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.12.tgz", - "integrity": "sha512-fnQmj8lELIj7BSrZQAdBMHEHX8OZLYIHXqAKT1O7tDfLxaINzf00PMjw22r3N/xXh0w/sGHlO6SVaCQ2mj78lg==", + "version": "7.6.13", + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.13.tgz", + "integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==", "dev": true, "dependencies": { "@types/node": "*" @@ -1367,9 +1367,9 @@ "optional": true }, "@types/better-sqlite3": { - "version": "7.6.12", - "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.12.tgz", - "integrity": "sha512-fnQmj8lELIj7BSrZQAdBMHEHX8OZLYIHXqAKT1O7tDfLxaINzf00PMjw22r3N/xXh0w/sGHlO6SVaCQ2mj78lg==", + "version": "7.6.13", + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.13.tgz", + "integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==", "dev": true, "requires": { "@types/node": "*" diff --git a/e2e/layout/tab_bar.spec.ts b/e2e/layout/tab_bar.spec.ts index c5a3d7e5c..c064dbf57 100644 --- a/e2e/layout/tab_bar.spec.ts +++ b/e2e/layout/tab_bar.spec.ts @@ -117,3 +117,17 @@ test("Search works when dismissing a tab", async ({ page, context }) => { await app.openAndClickNoteActionMenu("Search in note"); await expect(app.findAndReplaceWidget).toBeVisible(); }); + +test("New tab displays workspaces", async ({ page, context }) => { + const app = new App(page, context); + await app.goto(); + + const workspaceNotesEl = app.currentNoteSplitContent.locator(".workspace-notes"); + await expect(workspaceNotesEl).toBeVisible(); + expect(workspaceNotesEl).toContainText("Personal"); + expect(workspaceNotesEl).toContainText("Work"); + await expect(workspaceNotesEl.locator(".bx.bxs-user")).toBeVisible(); + await expect(workspaceNotesEl.locator(".bx.bx-briefcase-alt")).toBeVisible(); + + await app.closeAllTabs(); +}); diff --git a/electron-docs-main.ts b/electron-docs-main.ts index 71c7f5b93..cc2af4875 100644 --- a/electron-docs-main.ts +++ b/electron-docs-main.ts @@ -8,6 +8,8 @@ import archiver, { type Archiver } from "archiver"; import type { WriteStream } from "fs"; import debounce from "./src/public/app/services/debounce.js"; import { extractZip, initializeDatabase, startElectron } from "./electron-utils.js"; +import cls from "./src/services/cls.js"; +import type { AdvancedExportOptions } from "./src/services/export/zip.js"; const NOTE_ID_USER_GUIDE = "pOsGYCXsbNQG"; const markdownPath = path.join("docs", "User Guide"); @@ -17,8 +19,19 @@ async function main() { await initializeTranslations(); const zipBuffer = await createImportZip(); await initializeDatabase(zipBuffer); + await startElectron(); - await registerHandlers(); + cls.init(() => setOptions()); + + // Wait for the import to be finished and the application to be loaded before we listen to changes. + setTimeout(() => registerHandlers(), 10_000); +} + +async function setOptions() { + const optionsService = (await import("./src/services/options.js")).default; + optionsService.setOption("eraseUnusedAttachmentsAfterSeconds", 10); + optionsService.setOption("eraseUnusedAttachmentsAfterTimeScale", 60); + optionsService.setOption("compressImages", "false"); } async function createImportZip() { @@ -57,7 +70,54 @@ async function exportData(format: "html" | "markdown", outputPath: string) { // First export as zip. const { exportToZipFile } = (await import("./src/services/export/zip.js")).default; - await exportToZipFile(NOTE_ID_USER_GUIDE, format, zipFilePath); + + const exportOpts: AdvancedExportOptions = {}; + if (format === "html") { + exportOpts.customRewriteLinks = (originalRewriteLinks, getNoteTargetUrl) => { + return (content: string, noteMeta: NoteMeta) => { + content = content.replace(/src="[^"]*api\/images\/([a-zA-Z0-9_]+)\/[^"]*"/g, (match, targetNoteId) => { + const url = getNoteTargetUrl(targetNoteId, noteMeta); + + return url ? `src="${url}"` : match; + }); + + content = content.replace(/src="[^"]*api\/attachments\/([a-zA-Z0-9_]+)\/image\/[^"]*"/g, (match, targetAttachmentId) => { + const url = findAttachment(targetAttachmentId); + + return url ? `src="${url}"` : match; + }); + + content = content.replace(/href="[^"]*#root[^"]*attachmentId=([a-zA-Z0-9_]+)\/?"/g, (match, targetAttachmentId) => { + const url = findAttachment(targetAttachmentId); + + return url ? `href="${url}"` : match; + }); + + content = content.replace(/href="[^"]*#root[a-zA-Z0-9_\/]*\/([a-zA-Z0-9_]+)[^"]*"/g, (match, targetNoteId) => { + const components = match.split("/"); + components[components.length - 1] = `_help_${components[components.length - 1]}`; + return components.join("/"); + }); + + return content; + + function findAttachment(targetAttachmentId: string) { + let url; + + const attachmentMeta = (noteMeta.attachments || []).find((attMeta) => attMeta.attachmentId === targetAttachmentId); + if (attachmentMeta) { + // easy job here, because attachment will be in the same directory as the note's data file. + url = attachmentMeta.dataFileName; + } else { + console.info(`Could not find attachment meta object for attachmentId '${targetAttachmentId}'`); + } + return url; + } + }; + }; + } + + await exportToZipFile(NOTE_ID_USER_GUIDE, format, zipFilePath, exportOpts); await extractZip(zipFilePath, outputPath); } finally { if (await fsExtra.exists(zipFilePath)) { @@ -91,11 +151,10 @@ async function registerHandlers() { const events = (await import("./src/services/events.js")).default; const eraseService = (await import("./src/services/erase.js")).default; const debouncer = debounce(async () => { - console.log("Exporting data"); eraseService.eraseUnusedAttachmentsNow(); await exportData("markdown", markdownPath); await exportData("html", htmlPath); - }, 10_000);; + }, 10_000); events.subscribe(events.ENTITY_CHANGED, async (e) => { if (e.entityName === "options") { return; diff --git a/electron-utils.ts b/electron-utils.ts index c335187e1..646cf5a50 100644 --- a/electron-utils.ts +++ b/electron-utils.ts @@ -3,13 +3,15 @@ import fs from "fs/promises"; import fsExtra from "fs-extra"; import path from "path"; -export async function initializeDatabase(customDbBuffer?: Buffer) { - const sqlInit = (await import("./src/services/sql_init.js")).default; - - cls.init(() => { - if (!sqlInit.isDbInitialized()) { - sqlInit.createInitialDatabase(true, customDbBuffer); - } +export function initializeDatabase(customDbBuffer?: Buffer) { + return new Promise(async (resolve) => { + const sqlInit = (await import("./src/services/sql_init.js")).default; + cls.init(async () => { + if (!sqlInit.isDbInitialized()) { + await sqlInit.createInitialDatabase(true, customDbBuffer); + } + resolve(); + }); }); } diff --git a/eslint.config.js b/eslint.config.js index 4b4c23dac..2f2b2c036 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,5 +1,6 @@ import eslint from "@eslint/js"; import tseslint from "typescript-eslint"; +import simpleImportSort from "eslint-plugin-simple-import-sort"; export default tseslint.config( eslint.configs.recommended, @@ -16,6 +17,11 @@ export default tseslint.config( } } }, + { + plugins: { + "simple-import-sort": simpleImportSort + } + }, { rules: { // add rule overrides here @@ -28,7 +34,8 @@ export default tseslint.config( varsIgnorePattern: "^_" } ], - "sort-imports": [ "error", { ignoreCase: false } ] + "simple-import-sort/imports": "error", + "simple-import-sort/exports": "error" } }, { diff --git a/integration-tests/db/document.db b/integration-tests/db/document.db index c9f96195b..c02b60d34 100644 Binary files a/integration-tests/db/document.db and b/integration-tests/db/document.db differ diff --git a/libraries/ckeditor/ckeditor.js b/libraries/ckeditor/ckeditor.js index ab0015708..cb0e8ce22 100644 --- a/libraries/ckeditor/ckeditor.js +++ b/libraries/ckeditor/ckeditor.js @@ -3,5 +3,5 @@ * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. */ -function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.CKEditor=e():t.CKEditor=e()}(self,(()=>(()=>{var t={4:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/menubar/menubarmenu.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenu.css"],names:[],mappings:"AAKA,sBACC,aAAc,CCCd,iBAAkB,CDAlB,iBACD,CCCC,kDACC,cACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-menu-bar__menu {\r\n\tdisplay: block;\r\n\tposition: relative;\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-menu-bar__menu {\r\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\r\n\tfont-size: inherit;\r\n\r\n\t&.ck-menu-bar__menu_top-level {\r\n\t\tmax-width: 100%;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},25:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/collapsible/collapsible.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-collapsible.ck-collapsible_collapsed {\r\n\t& > .ck-collapsible__children {\r\n\t\tdisplay: none;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-collapsible-arrow-size: calc(0.5 * var(--ck-icon-size));\r\n}\r\n\r\n.ck.ck-collapsible {\r\n\t& > .ck.ck-button {\r\n\t\twidth: 100%;\r\n\t\tfont-weight: bold;\r\n\t\tborder-radius: 0;\r\n\t\tcolor: inherit;\r\n\r\n\t\t&:focus {\r\n\t\t\tbackground: transparent;\r\n\t\t}\r\n\r\n\t\t&:active, &:not(:focus), &:hover:not(:focus) {\r\n\t\t\tbackground: transparent;\r\n\t\t\tborder-color: transparent;\r\n\t\t\tbox-shadow: none;\r\n\t\t}\r\n\r\n\t\t& > .ck-icon {\r\n\t\t\tmargin-right: var(--ck-spacing-medium);\r\n\t\t\twidth: var(--ck-collapsible-arrow-size);\r\n\t\t}\r\n\t}\r\n\r\n\t& > .ck-collapsible__children {\r\n\t\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large) var(--ck-spacing-large);\r\n\t}\r\n\r\n\t&.ck-collapsible_collapsed {\r\n\t\t& > .ck.ck-button .ck-icon {\r\n\t\t\ttransform: rotate(-90deg);\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},109:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/spinner/spinner.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-toolbar-spinner-size: 18px;\r\n}\r\n\r\n.ck.ck-spinner-container {\r\n\tdisplay: block;\r\n\tposition: relative;\r\n}\r\n\r\n.ck.ck-spinner {\r\n\tposition: absolute;\r\n\ttop: 50%;\r\n\tleft: 0;\r\n\tright: 0;\r\n\tmargin: 0 auto;\r\n\ttransform: translateY(-50%);\r\n\tz-index: 1;\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-toolbar-spinner-size: 18px;\r\n}\r\n\r\n.ck.ck-spinner-container {\r\n\twidth: var(--ck-toolbar-spinner-size);\r\n\theight: var(--ck-toolbar-spinner-size);\r\n\tanimation: 1.5s infinite ck-spinner-rotate linear;\r\n\r\n\t@media (prefers-reduced-motion: reduce) {\r\n\t\tanimation-duration: 3s;\r\n\t}\r\n}\r\n\r\n.ck.ck-spinner {\r\n\twidth: var(--ck-toolbar-spinner-size);\r\n\theight: var(--ck-toolbar-spinner-size);\r\n\tborder-radius: 50%;\r\n\tborder: 2px solid var(--ck-color-text);\r\n\tborder-top-color: transparent;\r\n}\r\n\r\n@keyframes ck-spinner-rotate {\r\n\tto {\r\n\t\ttransform: rotate(360deg)\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},128:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-character-info{border-top:1px solid var(--ck-color-base-border);display:flex;justify-content:space-between;padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-character-info>*{font-size:var(--ck-font-size-small);text-transform:uppercase}.ck.ck-character-info .ck-character-info__name{max-width:280px;overflow:hidden;text-overflow:ellipsis}.ck.ck-character-info .ck-character-info__code{opacity:.6}","",{version:3,sources:["webpack://./../ckeditor5-special-characters/theme/characterinfo.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-special-characters/characterinfo.css"],names:[],mappings:"AAKA,sBCIC,gDAAiD,CDHjD,YAAa,CACb,6BAA8B,CCC9B,uDDAD,CCGC,wBAEC,mCAAoC,CADpC,wBAED,CAEA,+CACC,eAAgB,CAEhB,eAAgB,CADhB,sBAED,CAEA,+CACC,UACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-character-info {\r\n\tdisplay: flex;\r\n\tjustify-content: space-between;\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n\r\n.ck.ck-character-info {\r\n\tpadding: var(--ck-spacing-small) var(--ck-spacing-large);\r\n\tborder-top: 1px solid var(--ck-color-base-border);\r\n\r\n\t& > * {\r\n\t\ttext-transform: uppercase;\r\n\t\tfont-size: var(--ck-font-size-small);\r\n\t}\r\n\r\n\t& .ck-character-info__name {\r\n\t\tmax-width: 280px;\r\n\t\ttext-overflow: ellipsis;\r\n\t\toverflow: hidden;\r\n\t}\r\n\r\n\t& .ck-character-info__code {\r\n\t\topacity: .6;\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},253:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,":root{--ck-input-width:18em;--ck-input-text-width:var(--ck-input-width)}.ck.ck-input{border-radius:0}.ck-rounded-corners .ck.ck-input,.ck.ck-input.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);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}@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://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/input/input.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AASA,MACC,qBAAsB,CAGtB,2CACD,CAEA,aCLC,eDmDD,CA9CA,iECDE,qCD+CF,CA9CA,aAGC,2CAA4C,CAC5C,6CAA8C,CAK9C,4CAA6C,CAH7C,+BAAgC,CADhC,6DAA8D,CAO9D,4DAkCD,CAhCC,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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n@import "../../../mixins/_focus.css";\r\n@import "../../../mixins/_shadow.css";\r\n\r\n:root {\r\n\t--ck-input-width: 18em;\r\n\r\n\t/* Backward compatibility. */\r\n\t--ck-input-text-width: var(--ck-input-width);\r\n}\r\n\r\n.ck.ck-input {\r\n\t@mixin ck-rounded-corners;\r\n\r\n\tbackground: var(--ck-color-input-background);\r\n\tborder: 1px solid var(--ck-color-input-border);\r\n\tpadding: var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);\r\n\tmin-width: var(--ck-input-width);\r\n\r\n\t/* This is important to stay of the same height as surrounding buttons */\r\n\tmin-height: var(--ck-ui-component-min-height);\r\n\r\n\t/* Apply some smooth transition to the box-shadow and border. */\r\n\ttransition: box-shadow .1s ease-in-out, border .1s ease-in-out;\r\n\r\n\t@media (prefers-reduced-motion: reduce) {\r\n\t\ttransition: none;\r\n\t}\r\n\r\n\t&:focus {\r\n\t\t@mixin ck-focus-ring;\r\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\r\n\t}\r\n\r\n\t&[readonly] {\r\n\t\tborder: 1px solid var(--ck-color-input-disabled-border);\r\n\t\tbackground: var(--ck-color-input-disabled-background);\r\n\t\tcolor: var(--ck-color-input-disabled-text);\r\n\r\n\t\t&:focus {\r\n\t\t\t/* The read-only input should have a slightly less visible shadow when focused. */\r\n\t\t\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-error {\r\n\t\tborder-color: var(--ck-color-input-error-border);\r\n\t\tanimation: ck-input-shake .3s ease both;\r\n\r\n\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\tanimation: none;\r\n\t\t}\r\n\r\n\t\t&:focus {\r\n\t\t\t@mixin ck-box-shadow var(--ck-focus-error-outer-shadow);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@keyframes ck-input-shake {\r\n\t20% {\r\n\t\ttransform: translateX(-2px);\r\n\t}\r\n\r\n\t40% {\r\n\t\ttransform: translateX(2px);\r\n\t}\r\n\r\n\t60% {\r\n\t\ttransform: translateX(-1px);\r\n\t}\r\n\r\n\t80% {\r\n\t\ttransform: translateX(1px);\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A visual style of focused element's border.\r\n */\r\n@define-mixin ck-focus-ring {\r\n\t/* Disable native outline. */\r\n\toutline: none;\r\n\tborder: var(--ck-focus-ring)\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n"],sourceRoot:""}]);const a=s},265:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck-content {\r\n\t& .image {\r\n\t\tdisplay: table;\r\n\t\tclear: both;\r\n\t\ttext-align: center;\r\n\r\n\t\t/* Make sure there is some space between the content and the image. Center image by default. */\r\n\t\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\r\n\t \tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\r\n\t\tmargin: 0.9em auto;\r\n\r\n\t\t/* Make sure the caption will be displayed properly (See: https://github.com/ckeditor/ckeditor5/issues/1870). */\r\n\t\tmin-width: 50px;\r\n\r\n\t\t& img {\r\n\t\t\t/* Prevent unnecessary margins caused by line-height (see #44). */\r\n\t\t\tdisplay: block;\r\n\r\n\t\t\t/* Center the image if its width is smaller than the content\'s width. */\r\n\t\t\tmargin: 0 auto;\r\n\r\n\t\t\t/* Make sure the image never exceeds the size of the parent container (ckeditor/ckeditor5-ui#67). */\r\n\t\t\tmax-width: 100%;\r\n\r\n\t\t\t/* Make sure the image is never smaller than the parent container (See: https://github.com/ckeditor/ckeditor5/issues/9300). */\r\n\t\t\tmin-width: 100%;\r\n\r\n\t\t\t/* Keep proportions of the block image if the height is set and the image is wider than the editor width.\r\n\t\t\tSee https://github.com/ckeditor/ckeditor5/issues/14542. */\r\n\t\t\theight: auto;\r\n\t\t}\r\n\t}\r\n\r\n\t& .image-inline {\r\n\t\t/*\r\n\t\t * Normally, the .image-inline would have "display: inline-block" and "img { width: 100% }" (to follow the wrapper while resizing).\r\n\t\t * Unfortunately, together with "srcset", it gets automatically stretched up to the width of the editing root.\r\n\t\t * This strange behavior does not happen with inline-flex.\r\n\t\t */\r\n\t\tdisplay: inline-flex;\r\n\r\n\t\t/* While being resized, don\'t allow the image to exceed the width of the editing root. */\r\n\t\tmax-width: 100%;\r\n\r\n\t\t/* This is required by Safari to resize images in a sensible way. Without this, the browser breaks the ratio. */\r\n\t\talign-items: flex-start;\r\n\r\n\t\t/* When the picture is present it must act as a flex container to let the img resize properly */\r\n\t\t& picture {\r\n\t\t\tdisplay: flex;\r\n\t\t}\r\n\r\n\t\t/* When the picture is present, it must act like a resizable img. */\r\n\t\t& picture,\r\n\t\t& img {\r\n\t\t\t/* This is necessary for the img to span the entire .image-inline wrapper and to resize properly. */\r\n\t\t\tflex-grow: 1;\r\n\t\t\tflex-shrink: 1;\r\n\r\n\t\t\t/* Prevents overflowing the editing root boundaries when an inline image is very wide. */\r\n\t\t\tmax-width: 100%;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ck.ck-editor__editable {\r\n\t/*\r\n\t * Inhertit the content styles padding of the
                in case the integration overrides `text-align: center`\r\n\t * of `.image` (e.g. to the left/right). This ensures the placeholder stays at the padding just like the native\r\n\t * caret does, and not at the edge of
                .\r\n\t */\r\n\t& .image > figcaption.ck-placeholder::before {\r\n\t\tpadding-left: inherit;\r\n\t\tpadding-right: inherit;\r\n\r\n\t\t/*\r\n\t\t * Make sure the image caption placeholder doesn\'t overflow the placeholder area.\r\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\r\n\t\t */\r\n\t\twhite-space: nowrap;\r\n\t\toverflow: hidden;\r\n\t\ttext-overflow: ellipsis;\r\n\t}\r\n\r\n\t/*\r\n\t * See https://github.com/ckeditor/ckeditor5/issues/15115.\r\n\t */\r\n\t& .image {\r\n\t\tz-index: 1;\r\n\r\n\t\t/*\r\n\t\t * Make sure the selected image always stays on top of its siblings.\r\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9108.\r\n\t\t */\r\n\t\t&.ck-widget_selected {\r\n\t\t\tz-index: 2;\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * See https://github.com/ckeditor/ckeditor5/issues/15115.\r\n\t */\r\n\t& .image-inline {\r\n\t\tz-index: 1;\r\n\r\n\t\t/*\r\n\t\t * Make sure the selected inline image always stays on top of its siblings.\r\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9108.\r\n\t\t */\r\n\t\t&.ck-widget_selected {\r\n\t\t\tz-index: 2;\r\n\r\n\t\t\t/*\r\n\t\t\t * Make sure the native browser selection style is not displayed.\r\n\t\t\t * Inline image widgets have their own styles for the selected state and\r\n\t\t\t * leaving this up to the browser is asking for a visual collision.\r\n\t\t\t */\r\n\t\t\t& ::selection {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/* Keep proportions of the inline image if the height is set and the image is wider than the editor width.\r\n\tSee https://github.com/ckeditor/ckeditor5/issues/14542. */\r\n\t& .image-inline img {\r\n\t\theight: auto;\r\n\t}\r\n\r\n\t/* The inline image nested in the table should have its original size if not resized.\r\n\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\r\n\t& td,\r\n\t& th {\r\n\t\t& .image-inline img {\r\n\t\t\tmax-width: none;\r\n\t\t}\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},278:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/button/listitembutton.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/listitembutton.css"],names:[],mappings:"AAOA,wBAGC,eAAgB,CAFhB,gBAAiB,CACjB,UAsCD,CAxCA,kCAME,eAkCF,CAxCA,kCAUE,gBA8BF,CA3BC,iEAEE,oCAMF,CARA,iEAME,qCAEF,CAEA,2DACC,mBAAoB,CAEpB,WAAY,CADZ,UAUD,CAZA,qEAME,oCAMF,CAZA,qEAUE,mCAEF,CAEA,yDACC,WACD,CCvCD,kCACC,iEAiCD,CA/BC,0EAEC,0CAA2C,CAC3C,0BACD,CAEA,oFAEE,oCAMF,CARA,oFAME,qCAEF,CAOA,6OAIC,uDAKD,CAHC,qTACC,0BACD",sourcesContent:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../mixins/_dir.css";\r\n\r\n.ck.ck-list-item-button {\r\n\tmin-height: unset;\r\n\twidth: 100%;\r\n\tborder-radius: 0;\r\n\r\n\t@mixin ck-dir ltr {\r\n\t\ttext-align: left;\r\n\t}\r\n\r\n\t@mixin ck-dir rtl {\r\n\t\ttext-align: right;\r\n\t}\r\n\r\n\t&.ck-list-item-button_toggleable {\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\tpadding-left: var(--ck-spacing-small);\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\tpadding-right: var(--ck-spacing-small);\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck-list-item-button__check-holder {\r\n\t\tdisplay: inline-flex;\r\n\t\twidth: .9em;\r\n\t\theight: .9em;\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\tmargin-right: var(--ck-spacing-small);\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\tmargin-left: var(--ck-spacing-small);\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck-list-item-button__check-icon {\r\n\t\theight: 100%;\r\n\t}\r\n}\r\n','/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-button.ck-list-item-button {\r\n\tpadding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard));\r\n\r\n\t&,\r\n\t&.ck-on {\r\n\t\tbackground: var(--ck-color-list-background);\r\n\t\tcolor: var(--ck-color-text);\r\n\t}\r\n\r\n\t&:has(.ck-list-item-button__check-holder) {\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\tpadding-left: var(--ck-spacing-small);\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\tpadding-right: var(--ck-spacing-small);\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * `.ck-on` class and background styling is overridden for `ck-button` in many places.\r\n\t * This is a workaround to make sure that the background is not overridden and uses similar\r\n\t * selector specificity as the other overrides.\r\n\t */\r\n\t&:hover:not(.ck-disabled),\r\n\t&.ck-button.ck-on:hover,\r\n\t&.ck-on:not(.ck-list-item-button_toggleable),\r\n\t&.ck-on:hover {\r\n\t\tbackground: var(--ck-color-list-button-hover-background);\r\n\r\n\t\t&:not(.ck-disabled) {\r\n\t\t\tcolor: var(--ck-color-text);\r\n\t\t}\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},497:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-menu-bar {\r\n\tdisplay: flex;\r\n\tflex-wrap: wrap;\r\n\tjustify-content: flex-start;\r\n\tbackground: var(--ck-color-base-background);\r\n\tpadding: var(--ck-spacing-small);\r\n\tgap: var(--ck-spacing-small);\r\n\tborder: 1px solid var(--ck-color-toolbar-border);\r\n\twidth: 100%;\r\n}\r\n"],sourceRoot:""}]);const a=s},695:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-widget/theme/widget.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-widget/widget.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css","webpack://./../ckeditor5-ui/theme/mixins/_mediacolors.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-color-resizer: var(--ck-color-focus-border);\r\n\t--ck-color-resizer-tooltip-background: hsl(0, 0%, 15%);\r\n\t--ck-color-resizer-tooltip-text: hsl(0, 0%, 95%);\r\n\r\n\t--ck-resizer-border-radius: var(--ck-border-radius);\r\n\t--ck-resizer-tooltip-offset: 10px;\r\n\t--ck-resizer-tooltip-height: calc(var(--ck-spacing-small) * 2 + 10px);\r\n}\r\n\r\n.ck .ck-widget {\r\n\t/* This is neccessary for type around UI to be positioned properly. */\r\n\tposition: relative;\r\n}\r\n\r\n.ck .ck-widget.ck-widget_with-selection-handle {\r\n\t/* Make the widget wrapper a relative positioning container for the drag handle. */\r\n\tposition: relative;\r\n\r\n\t& .ck-widget__selection-handle {\r\n\t\tposition: absolute;\r\n\r\n\t\t& .ck-icon {\r\n\t\t\t/* Make sure the icon in not a subject to font-size or line-height to avoid\r\n\t\t\tunnecessary spacing around it. */\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t}\r\n\r\n\t/* Show the selection handle on mouse hover over the widget, but not for nested widgets. */\r\n\t&:hover > .ck-widget__selection-handle {\r\n\t\tvisibility: visible;\r\n\t}\r\n\r\n\t/* Show the selection handle when the widget is selected, but not for nested widgets. */\r\n\t&.ck-widget_selected > .ck-widget__selection-handle {\r\n\t\tvisibility: visible;\r\n\t}\r\n}\r\n\r\n.ck .ck-size-view {\r\n\tbackground: var(--ck-color-resizer-tooltip-background);\r\n\tcolor: var(--ck-color-resizer-tooltip-text);\r\n\tborder: 1px solid var(--ck-color-resizer-tooltip-text);\r\n\tborder-radius: var(--ck-resizer-border-radius);\r\n\tfont-size: var(--ck-font-size-tiny);\r\n\tdisplay: block;\r\n\tpadding: 0 var(--ck-spacing-small);\r\n\theight: var(--ck-resizer-tooltip-height);\r\n\tline-height: var(--ck-resizer-tooltip-height);\r\n\r\n\t&.ck-orientation-top-left,\r\n\t&.ck-orientation-top-right,\r\n\t&.ck-orientation-bottom-right,\r\n\t&.ck-orientation-bottom-left,\r\n\t&.ck-orientation-above-center {\r\n\t\tposition: absolute;\r\n\t}\r\n\r\n\t&.ck-orientation-top-left {\r\n\t\ttop: var(--ck-resizer-tooltip-offset);\r\n\t\tleft: var(--ck-resizer-tooltip-offset);\r\n\t}\r\n\r\n\t&.ck-orientation-top-right {\r\n\t\ttop: var(--ck-resizer-tooltip-offset);\r\n\t\tright: var(--ck-resizer-tooltip-offset);\r\n\t}\r\n\r\n\t&.ck-orientation-bottom-right {\r\n\t\tbottom: var(--ck-resizer-tooltip-offset);\r\n\t\tright: var(--ck-resizer-tooltip-offset);\r\n\t}\r\n\r\n\t&.ck-orientation-bottom-left {\r\n\t\tbottom: var(--ck-resizer-tooltip-offset);\r\n\t\tleft: var(--ck-resizer-tooltip-offset);\r\n\t}\r\n\r\n\t/* Class applied if the widget is too small to contain the size label */\r\n\t&.ck-orientation-above-center {\r\n\t\ttop: calc(var(--ck-resizer-tooltip-height) * -1);\r\n\t\tleft: 50%;\r\n\t\ttransform: translate(-50%);\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../mixins/_focus.css";\r\n@import "../mixins/_shadow.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\r\n\r\n:root {\r\n\t--ck-widget-outline-thickness: 3px;\r\n\t--ck-widget-handler-icon-size: 16px;\r\n\t--ck-widget-handler-animation-duration: 200ms;\r\n\t--ck-widget-handler-animation-curve: ease;\r\n\r\n\t--ck-color-widget-blurred-border: hsl(0, 0%, 87%);\r\n\t--ck-color-widget-hover-border: hsl(43, 100%, 62%);\r\n\t--ck-color-widget-editable-focus-background: var(--ck-color-base-background);\r\n\t--ck-color-widget-drag-handler-icon-color: var(--ck-color-base-background);\r\n}\r\n\r\n.ck .ck-widget {\r\n\toutline-width: var(--ck-widget-outline-thickness);\r\n\toutline-style: solid;\r\n\toutline-color: transparent;\r\n\ttransition: outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\r\n\r\n\t@media (prefers-reduced-motion: reduce) {\r\n\t\ttransition: none;\r\n\t}\r\n\r\n\t&.ck-widget_selected,\r\n\t&.ck-widget_selected:hover {\r\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border);\r\n\t}\r\n\r\n\t&:hover {\r\n\t\toutline-color: var(--ck-color-widget-hover-border);\r\n\t}\r\n}\r\n\r\n.ck .ck-editor__nested-editable {\r\n\tborder: 1px solid transparent;\r\n\r\n\t/* The :focus style is applied before .ck-editor__nested-editable_focused class is rendered in the view.\r\n\tThese styles show a different border for a blink of an eye, so `:focus` need to have same styles applied. */\r\n\t&.ck-editor__nested-editable_focused,\r\n\t&:focus {\r\n\t\t@mixin ck-box-shadow var(--ck-inner-shadow);\r\n\t\t@mixin ck-media-default-colors {\r\n\t\t\tbackground-color: var(--ck-color-widget-editable-focus-background);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Focus border should not be applied to table cells because it overrides the default table cell border color.\r\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\r\n\t\t * because it should be the same as the table cell border color.\r\n\t\t */\r\n\t\t&:not(td, th) {\r\n\t\t\t@mixin ck-focus-ring;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ck .ck-widget.ck-widget_with-selection-handle {\r\n\t& .ck-widget__selection-handle {\r\n\t\tpadding: 4px;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\t/* Background and opacity will be animated as the handler shows up or the widget gets selected. */\r\n\t\tbackground-color: transparent;\r\n\t\topacity: 0;\r\n\r\n\t\t/* Transition:\r\n\t\t * background-color for the .ck-widget_selected state change,\r\n\t\t * visibility for hiding the handler,\r\n\t\t * opacity for the proper look of the icon when the handler disappears. */\r\n\t\ttransition:\r\n\t\t\tbackground-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\r\n\t\t\tvisibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),\r\n\t\t\topacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\r\n\r\n\t\t/* Make only top corners round. */\r\n\t\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\r\n\r\n\t\t/* Place the drag handler outside the widget wrapper. */\r\n\t\ttransform: translateY(-100%);\r\n\t\tleft: calc(0px - var(--ck-widget-outline-thickness));\r\n\t\ttop: 0;\r\n\r\n\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\ttransition: none;\r\n\t\t}\r\n\r\n\t\t& .ck-icon {\r\n\t\t\t/* Make sure the dimensions of the icon are independent of the fon-size of the content. */\r\n\t\t\twidth: var(--ck-widget-handler-icon-size);\r\n\t\t\theight: var(--ck-widget-handler-icon-size);\r\n\t\t\tcolor: var(--ck-color-widget-drag-handler-icon-color);\r\n\r\n\t\t\t/* The "selected" part of the icon is invisible by default */\r\n\t\t\t& .ck-icon__selected-indicator {\r\n\t\t\t\topacity: 0;\r\n\r\n\t\t\t\t/* Note: The animation is longer on purpose. Simply feels better. */\r\n\t\t\t\ttransition: opacity 300ms var(--ck-widget-handler-animation-curve);\r\n\r\n\t\t\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\t\t\ttransition: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* Advertise using the look of the icon that once clicked the handler, the widget will be selected. */\r\n\t\t&:hover .ck-icon .ck-icon__selected-indicator {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\r\n\t/* Show the selection handler on mouse hover over the widget, but not for nested widgets. */\r\n\t&:hover > .ck-widget__selection-handle {\r\n\t\topacity: 1;\r\n\t\tbackground-color: var(--ck-color-widget-hover-border);\r\n\t}\r\n\r\n\t/* Show the selection handler when the widget is selected, but not for nested widgets. */\r\n\t&.ck-widget_selected,\r\n\t&.ck-widget_selected:hover {\r\n\t\t& > .ck-widget__selection-handle {\r\n\t\t\topacity: 1;\r\n\t\t\tbackground-color: var(--ck-color-focus-border);\r\n\r\n\t\t\t/* When the widget is selected, notify the user using the proper look of the icon. */\r\n\t\t\t& .ck-icon .ck-icon__selected-indicator {\r\n\t\t\t\topacity: 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/* In a RTL environment, align the selection handler to the right side of the widget */\r\n/* stylelint-disable-next-line no-descending-specificity */\r\n.ck[dir="rtl"] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle {\r\n\tleft: auto;\r\n\tright: calc(0px - var(--ck-widget-outline-thickness));\r\n}\r\n\r\n/* https://github.com/ckeditor/ckeditor5/issues/6415 */\r\n.ck.ck-editor__editable.ck-read-only .ck-widget {\r\n\t/* Prevent the :hover outline from showing up because of the used outline-color transition. */\r\n\ttransition: none;\r\n\r\n\t&:not(.ck-widget_selected) {\r\n\t\t/* Disable visual effects of hover/active widget when CKEditor is in readOnly mode.\r\n\t\t * See: https://github.com/ckeditor/ckeditor5/issues/1261\r\n\t\t *\r\n\t\t * Leave the unit because this custom property is used in calc() by other features.\r\n\t\t * See: https://github.com/ckeditor/ckeditor5/issues/6775\r\n\t\t */\r\n\t\t--ck-widget-outline-thickness: 0px;\r\n\t}\r\n\r\n\t&.ck-widget_with-selection-handle {\r\n\t\t& .ck-widget__selection-handle,\r\n\t\t& .ck-widget__selection-handle:hover {\r\n\t\t\tbackground: var(--ck-color-widget-blurred-border);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/* Style the widget when it\'s selected but the editable it belongs to lost focus. */\r\n/* stylelint-disable-next-line no-descending-specificity */\r\n.ck.ck-editor__editable.ck-blurred .ck-widget {\r\n\t&.ck-widget_selected,\r\n\t&.ck-widget_selected:hover {\r\n\t\toutline-color: var(--ck-color-widget-blurred-border);\r\n\r\n\t\t&.ck-widget_with-selection-handle {\r\n\t\t\t& > .ck-widget__selection-handle,\r\n\t\t\t& > .ck-widget__selection-handle:hover {\r\n\t\t\t\tbackground: var(--ck-color-widget-blurred-border);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ck.ck-editor__editable > .ck-widget.ck-widget_with-selection-handle:first-child,\r\n.ck.ck-editor__editable blockquote > .ck-widget.ck-widget_with-selection-handle:first-child {\r\n\t/* Do not crop selection handler if a widget is a first-child in the blockquote or in the root editable.\r\n\tIn fact, anything with overflow: hidden.\r\n\thttps://github.com/ckeditor/ckeditor5-block-quote/issues/28\r\n\thttps://github.com/ckeditor/ckeditor5-widget/issues/44\r\n\thttps://github.com/ckeditor/ckeditor5-widget/issues/66 */\r\n\tmargin-top: calc(1em + var(--ck-widget-handler-icon-size));\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-forced-colors {\r\n\t@media (forced-colors: active) {\r\n\t\t& {\r\n\t\t\t@mixin-content;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@define-mixin ck-media-default-colors {\r\n\t@media (forced-colors: none) {\r\n\t\t& {\r\n\t\t\t@mixin-content;\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A visual style of focused element's border.\r\n */\r\n@define-mixin ck-focus-ring {\r\n\t/* Disable native outline. */\r\n\toutline: none;\r\n\tborder: var(--ck-focus-ring)\r\n}\r\n"],sourceRoot:""}]);const a=s},802:(t,e,n)=>{const r=n(9246);function i(t){const e=function(){const t={},e=Object.keys(r);for(let n=e.length,r=0;r{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=t(e);return e[2]?"@media ".concat(e[2]," {").concat(n,"}"):n})).join("")},e.i=function(t,n,r){"string"==typeof t&&(t=[[null,t,""]]);var i={};if(r)for(var o=0;o{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenulistitembutton.css"],names:[],mappings:"AAWC,iEACC,eAoBD,CAlBC,0LAGC,8BACD,CAEA,uFAEC,kCASD,CAXA,iGAKE,qCAMF,CAXA,iGASE,oCAEF",sourcesContent:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-menu-bar__menu {\r\n\t/*\r\n\t * List item buttons.\r\n\t */\r\n\t& .ck-button.ck-menu-bar__menu__item__button {\r\n\t\tborder-radius: 0;\r\n\r\n\t\t& > .ck-spinner-container,\r\n\t\t& > .ck-spinner-container .ck-spinner {\r\n\t\t\t/* These styles correspond to .ck-icon so that the spinner seamlessly replaces the icon. */\r\n\t\t\t--ck-toolbar-spinner-size: 20px;\r\n\t\t}\r\n\r\n\t\t& > .ck-spinner-container {\r\n\t\t\t/* This ensures margins corresponding to the .ck-icon. */\r\n\t\t\tfont-size: var(--ck-icon-font-size);\r\n\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\tmargin-right: var(--ck-spacing-medium);\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tmargin-left: var(--ck-spacing-medium);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\n'],sourceRoot:""}]);const a=s},991:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/panel/balloonrotator.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck .ck-balloon-rotator__navigation {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n}\r\n\r\n/* Buttons inside a toolbar should be centered when rotator bar is wider.\r\n * See: https://github.com/ckeditor/ckeditor5-ui/issues/495\r\n */\r\n.ck .ck-balloon-rotator__content .ck-toolbar {\r\n\tjustify-content: center;\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck .ck-balloon-rotator__navigation {\r\n\tbackground: var(--ck-color-toolbar-background);\r\n\tborder-bottom: 1px solid var(--ck-color-toolbar-border);\r\n\tpadding: 0 var(--ck-spacing-small);\r\n\r\n\t/* Let's keep similar appearance to `ck-toolbar`. */\r\n\t& > * {\r\n\t\tmargin-right: var(--ck-spacing-small);\r\n\t\tmargin-top: var(--ck-spacing-small);\r\n\t\tmargin-bottom: var(--ck-spacing-small);\r\n\t}\r\n\r\n\t/* Gives counter more breath than buttons. */\r\n\t& .ck-balloon-rotator__counter {\r\n\t\tmargin-right: var(--ck-spacing-standard);\r\n\r\n\t\t/* We need to use smaller margin because of previous button's right margin. */\r\n\t\tmargin-left: var(--ck-spacing-small);\r\n\t}\r\n}\r\n\r\n.ck .ck-balloon-rotator__content {\r\n\r\n\t/* Disable default annotation shadow inside rotator with fake panels. */\r\n\t& .ck.ck-annotation-wrapper {\r\n\t\tbox-shadow: none;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},1058:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck-content .text-tiny{font-size:.7em}.ck-content .text-small{font-size:.85em}.ck-content .text-big{font-size:1.4em}.ck-content .text-huge{font-size:1.8em}","",{version:3,sources:["webpack://./../ckeditor5-font/theme/fontsize.css"],names:[],mappings:"AAUC,uBACC,cACD,CAEA,wBACC,eACD,CAEA,sBACC,eACD,CAEA,uBACC,eACD",sourcesContent:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/* The values should be synchronized with the "FONT_SIZE_PRESET_UNITS" object in the "/src/fontsize/utils.js" file. */\r\n\r\n/* Styles should be prefixed with the `.ck-content` class.\r\nSee https://github.com/ckeditor/ckeditor5/issues/6636 */\r\n.ck-content {\r\n\t& .text-tiny {\r\n\t\tfont-size: .7em;\r\n\t}\r\n\r\n\t& .text-small {\r\n\t\tfont-size: .85em;\r\n\t}\r\n\r\n\t& .text-big {\r\n\t\tfont-size: 1.4em;\r\n\t}\r\n\r\n\t& .text-huge {\r\n\t\tfont-size: 1.8em;\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},1185:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/editorui.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css"],names:[],mappings:"AAWA,MACC,0CACD,CAEA,yDCJC,eDWD,CAPA,yJCAE,qCDOF,CAJC,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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n@import "../../../mixins/_disabled.css";\r\n@import "../../../mixins/_shadow.css";\r\n@import "../../../mixins/_focus.css";\r\n@import "../../mixins/_button.css";\r\n\r\n:root {\r\n\t--ck-color-editable-blur-selection: hsl(0, 0%, 85%);\r\n}\r\n\r\n.ck.ck-editor__editable:not(.ck-editor__nested-editable) {\r\n\t@mixin ck-rounded-corners;\r\n\r\n\t&.ck-focused {\r\n\t\t@mixin ck-focus-ring;\r\n\t\t@mixin ck-box-shadow var(--ck-inner-shadow);\r\n\t}\r\n}\r\n\r\n.ck.ck-editor__editable_inline {\r\n\toverflow: auto;\r\n\tpadding: 0 var(--ck-spacing-standard);\r\n\tborder: 1px solid transparent;\r\n\r\n\t&[dir="ltr"] {\r\n\t\ttext-align: left;\r\n\t}\r\n\r\n\t&[dir="rtl"] {\r\n\t\ttext-align: right;\r\n\t}\r\n\r\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/116 */\r\n\t& > *:first-child {\r\n\t\tmargin-top: var(--ck-spacing-large);\r\n\t}\r\n\r\n\t/* https://github.com/ckeditor/ckeditor5/issues/847 */\r\n\t& > *:last-child {\r\n\t\t/*\r\n\t\t * This value should match with the default margins of the block elements (like .media or .image)\r\n\t\t * to avoid a content jumping when the fake selection container shows up (See https://github.com/ckeditor/ckeditor5/issues/9825).\r\n\t\t */\r\n\t\tmargin-bottom: var(--ck-spacing-large);\r\n\t}\r\n\r\n\t/* https://github.com/ckeditor/ckeditor5/issues/6517 */\r\n\t&.ck-blurred ::selection {\r\n\t\tbackground: var(--ck-color-editable-blur-selection);\r\n\t}\r\n}\r\n\r\n/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/111 */\r\n.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_n"] {\r\n\t&::after {\r\n\t\tborder-bottom-color: var(--ck-color-panel-background);\r\n\t}\r\n}\r\n\r\n.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_s"] {\r\n\t&::after {\r\n\t\tborder-top-color: var(--ck-color-panel-background);\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A visual style of focused element's border.\r\n */\r\n@define-mixin ck-focus-ring {\r\n\t/* Disable native outline. */\r\n\toutline: none;\r\n\tborder: var(--ck-focus-ring)\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n"],sourceRoot:""}]);const a=s},1232:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck-editor__editable .ck-list-bogus-paragraph{display:block}","",{version:3,sources:["webpack://./../ckeditor5-list/theme/documentlist.css"],names:[],mappings:"AAKA,8CACC,aACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck-editor__editable .ck-list-bogus-paragraph {\r\n\tdisplay: block;\r\n}\r\n"],sourceRoot:""}]);const a=s},1559:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-image/theme/imageuploadloader.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck .ck-upload-placeholder-loader {\r\n\tposition: absolute;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\ttop: 0;\r\n\tleft: 0;\r\n\r\n\t&::before {\r\n\t\tcontent: '';\r\n\t\tposition: relative;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-color-upload-placeholder-loader: hsl(0, 0%, 70%);\r\n\t--ck-upload-placeholder-loader-size: 32px;\r\n\t--ck-upload-placeholder-image-aspect-ratio: 2.8;\r\n}\r\n\r\n.ck .ck-image-upload-placeholder {\r\n\t/* We need to control the full width of the SVG gray background. */\r\n\twidth: 100%;\r\n\tmargin: 0;\r\n\r\n\t&.image-inline {\r\n\t\twidth: calc( 2 * var(--ck-upload-placeholder-loader-size) * var(--ck-upload-placeholder-image-aspect-ratio) );\r\n\t}\r\n\r\n\t& img {\r\n\t\t/*\r\n\t\t * This is an arbitrary aspect for a 1x1 px GIF to display to the user. Not too tall, not too short.\r\n\t\t * There's nothing special about this number except that it should make the image placeholder look like\r\n\t\t * a real image during this short period after the upload started and before the image was read from the\r\n\t\t * file system (and a rich preview was loaded).\r\n\t\t */\r\n\t\taspect-ratio: var(--ck-upload-placeholder-image-aspect-ratio);\r\n\t}\r\n}\r\n\r\n.ck .ck-upload-placeholder-loader {\r\n\twidth: 100%;\r\n\theight: 100%;\r\n\r\n\t&::before {\r\n\t\twidth: var(--ck-upload-placeholder-loader-size);\r\n\t\theight: var(--ck-upload-placeholder-loader-size);\r\n\t\tborder-radius: 50%;\r\n\t\tborder-top: 3px solid var(--ck-color-upload-placeholder-loader);\r\n\t\tborder-right: 2px solid transparent;\r\n\t\tanimation: ck-upload-placeholder-loader 1s linear infinite;\r\n\t}\r\n}\r\n\r\n@keyframes ck-upload-placeholder-loader {\r\n\tto {\r\n\t\ttransform: rotate( 360deg );\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},1623:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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{border-radius:0}.ck-rounded-corners .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status,.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:ck-table-form-labeled-view-status-appear .15s ease both;background:var(--ck-color-base-error);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.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://./../ckeditor5-table/theme/tableform.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/tableform.css","webpack://./../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,8ECxCD,eD6DC,CArBA,mMCpCA,qCDyDA,CArBA,8EAgBC,iEAAkE,CAblE,qCAAsC,CACtC,qCAAsC,CAEtC,oDAAqD,CADrD,wDAAyD,CAEzD,iBAcD,CAXC,oFACC,2EAA4E,CAE5E,kBAAmB,CADnB,kJAED,CAIA,uCAlBD,8EAmBE,cAEF,CADC,CAID,6GACC,YACD,CAIF,oDACC,GACC,SACD,CAEA,GACC,SACD,CACD",sourcesContent:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-table-form {\r\n\t& .ck-form__row {\r\n\t\t&.ck-table-form__border-row {\r\n\t\t\tflex-wrap: wrap;\r\n\t\t}\r\n\r\n\t\t&.ck-table-form__background-row {\r\n\t\t\tflex-wrap: wrap;\r\n\t\t}\r\n\r\n\t\t&.ck-table-form__dimensions-row {\r\n\t\t\tflex-wrap: wrap;\r\n\t\t\talign-items: center;\r\n\r\n\t\t\t& .ck-labeled-field-view {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\tflex-direction: column-reverse;\r\n\t\t\t\talign-items: center;\r\n\r\n\t\t\t\t& .ck.ck-dropdown {\r\n\t\t\t\t\tflex-grow: 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t& .ck-table-form__dimension-operator {\r\n\t\t\t\tflex-grow: 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck.ck-labeled-field-view {\r\n\t\t/* Allow absolute positioning of the status (error) balloons. */\r\n\t\tposition: relative;\r\n\r\n\t\t& .ck.ck-labeled-field-view__status {\r\n\t\t\tposition: absolute;\r\n\t\t\tleft: 50%;\r\n\t\t\tbottom: calc( -1 * var(--ck-table-properties-error-arrow-size) );\r\n\t\t\ttransform: translate(-50%,100%);\r\n\r\n\t\t\t/* Make sure the balloon status stays on top of other form elements. */\r\n\t\t\tz-index: 1;\r\n\r\n\t\t\t/* The arrow pointing towards the field. */\r\n\t\t\t&::after {\r\n\t\t\t\tcontent: "";\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop: calc( -1 * var(--ck-table-properties-error-arrow-size) );\r\n\t\t\t\tleft: 50%;\r\n\t\t\t\ttransform: translateX( -50% );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n','/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../mixins/_rounded.css";\r\n\r\n:root {\r\n\t--ck-table-properties-error-arrow-size: 6px;\r\n\t--ck-table-properties-min-error-width: 150px;\r\n}\r\n\r\n.ck.ck-table-form {\r\n\t& .ck-form__row {\r\n\t\t&.ck-table-form__border-row {\r\n\t\t\t& .ck-labeled-field-view {\r\n\t\t\t\t& > .ck-label {\r\n\t\t\t\t\tfont-size: var(--ck-font-size-tiny);\r\n\t\t\t\t\ttext-align: center;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t& .ck-table-form__border-style,\r\n\t\t\t& .ck-table-form__border-width {\r\n\t\t\t\twidth: 80px;\r\n\t\t\t\tmin-width: 80px;\r\n\t\t\t\tmax-width: 80px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.ck-table-form__dimensions-row {\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\t& .ck-table-form__dimensions-row__width,\r\n\t\t\t& .ck-table-form__dimensions-row__height {\r\n\t\t\t\tmargin: 0\r\n\t\t\t}\r\n\r\n\t\t\t& .ck-table-form__dimension-operator {\r\n\t\t\t\talign-self: flex-end;\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\theight: var(--ck-ui-component-min-height);\r\n\t\t\t\tline-height: var(--ck-ui-component-min-height);\r\n\t\t\t\tmargin: 0 var(--ck-spacing-small);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck.ck-labeled-field-view {\r\n\t\tpadding-top: var(--ck-spacing-standard);\r\n\r\n\t\t& .ck.ck-labeled-field-view__status {\r\n\t\t\t@mixin ck-rounded-corners;\r\n\r\n\t\t\tbackground: var(--ck-color-base-error);\r\n\t\t\tcolor: var(--ck-color-base-background);\r\n\t\t\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\r\n\t\t\tmin-width: var(--ck-table-properties-min-error-width);\r\n\t\t\ttext-align: center;\r\n\r\n\t\t\t/* The arrow pointing towards the field. */\r\n\t\t\t&::after {\r\n\t\t\t\tborder-color: transparent transparent var(--ck-color-base-error) transparent;\r\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);\r\n\t\t\t\tborder-style: solid;\r\n\t\t\t}\r\n\r\n\t\t\tanimation: ck-table-form-labeled-view-status-appear .15s ease both;\r\n\r\n\t\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\t\tanimation: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* Hide the error balloon when the field is blurred. Makes the experience much more clear. */\r\n\t\t& .ck-input.ck-error:not(:focus) + .ck.ck-labeled-field-view__status {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@keyframes ck-table-form-labeled-view-status-appear {\r\n\t0% {\r\n\t\topacity: 0;\r\n\t}\r\n\r\n\t100% {\r\n\t\topacity: 1;\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},1666:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/dropdown/toolbardropdown.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-toolbar-dropdown-max-width: 60vw;\r\n}\r\n\r\n.ck.ck-toolbar-dropdown > .ck-dropdown__panel {\r\n\t/* https://github.com/ckeditor/ckeditor5/issues/5586 */\r\n\twidth: max-content;\r\n\tmax-width: var(--ck-toolbar-dropdown-max-width);\r\n\r\n\t& .ck-button {\r\n\t\t&:focus {\r\n\t\t\tz-index: calc(var(--ck-z-default) + 1);\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-toolbar-dropdown .ck-toolbar {\r\n\tborder: 0;\r\n}\r\n"],sourceRoot:""}]);const a=s},1671:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck-textarea{overflow-x:hidden}","",{version:3,sources:["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/textarea/textarea.css"],names:[],mappings:"AASA,aACC,iBACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/*\r\n * This fixes a problem in Firefox when the initial height of the complement does not match the number of rows.\r\n * This bug is especially visible when rows=1.\r\n */\r\n.ck-textarea {\r\n\toverflow-x: hidden\r\n}\r\n"],sourceRoot:""}]);const a=s},1792:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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>.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}.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}',"",{version:3,sources:["webpack://./../ckeditor5-ui/theme/components/dropdown/splitbutton.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/splitbutton.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAKA,mBAEC,iBAKD,CAHC,iDACC,qCACD,CCJD,MACC,gDAAyD,CACzD,4CACD,CAMC,oIAKE,gCAAiC,CADjC,6BASF,CAbA,oIAWE,+BAAgC,CADhC,4BAGF,CAEA,0CAGC,eAiBD,CApBA,oDAQE,+BAAgC,CADhC,4BAaF,CApBA,oDAcE,gCAAiC,CADjC,6BAOF,CAHC,8CACC,mCACD,CAKD,sDAEC,qBAAwB,CADxB,kBAED,CAQC,0KACC,wDACD,CAIA,8JAKC,0DAA2D,CAJ3D,UAAW,CAGX,WAAY,CAFZ,iBAAkB,CAClB,SAGD,CAGA,sIACC,iEACD,CAGC,kLACC,SACD,CAIA,kLACC,UACD,CAMF,uCCzFA,eDmGA,CAVA,qHCrFC,qCD+FD,CARE,qKACC,2BACD,CAEA,mKACC,4BACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-splitbutton {\r\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\r\n\tfont-size: inherit;\r\n\r\n\t& .ck-splitbutton__action:focus {\r\n\t\tz-index: calc(var(--ck-z-default) + 1);\r\n\t}\r\n}\r\n\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n\r\n:root {\r\n\t--ck-color-split-button-hover-background: hsl(0, 0%, 92%);\r\n\t--ck-color-split-button-hover-border: hsl(0, 0%, 70%);\r\n}\r\n\r\n.ck.ck-splitbutton {\r\n\t/*\r\n\t * Note: ck-rounded and ck-dir mixins don\'t go together (because they both use @nest).\r\n\t */\r\n\t&:hover > .ck-splitbutton__action,\r\n\t&.ck-splitbutton_open > .ck-splitbutton__action {\r\n\t\t@nest [dir="ltr"] & {\r\n\t\t\t/* Don\'t round the action button on the right side */\r\n\t\t\tborder-top-right-radius: unset;\r\n\t\t\tborder-bottom-right-radius: unset;\r\n\t\t}\r\n\r\n\t\t@nest [dir="rtl"] & {\r\n\t\t\t/* Don\'t round the action button on the left side */\r\n\t\t\tborder-top-left-radius: unset;\r\n\t\t\tborder-bottom-left-radius: unset;\r\n\t\t}\r\n\t}\r\n\r\n\t& > .ck-splitbutton__arrow {\r\n\t\t/* It\'s a text-less button and since the icon is positioned absolutely in such situation,\r\n\t\tit must get some arbitrary min-width. */\r\n\t\tmin-width: unset;\r\n\r\n\t\t@nest [dir="ltr"] & {\r\n\t\t\t/* Don\'t round the arrow button on the left side */\r\n\t\t\tborder-top-left-radius: unset;\r\n\t\t\tborder-bottom-left-radius: unset;\r\n\t\t}\r\n\r\n\t\t@nest [dir="rtl"] & {\r\n\t\t\t/* Don\'t round the arrow button on the right side */\r\n\t\t\tborder-top-right-radius: unset;\r\n\t\t\tborder-bottom-right-radius: unset;\r\n\t\t}\r\n\r\n\t\t& svg {\r\n\t\t\twidth: var(--ck-dropdown-arrow-size);\r\n\t\t}\r\n\t}\r\n\r\n\t/* Make sure the divider stretches 100% height of the button\r\n\thttps://github.com/ckeditor/ckeditor5/issues/10936 */\r\n\t& > .ck-splitbutton__arrow:not(:focus) {\r\n\t\tborder-top-width: 0px;\r\n\t\tborder-bottom-width: 0px;\r\n\t}\r\n\r\n\t/* When the split button is "open" (the arrow is on) or being hovered, it should get some styling\r\n\tas a whole. The background of both buttons should stand out and there should be a visual\r\n\tseparation between both buttons. */\r\n\t&.ck-splitbutton_open,\r\n\t&:hover {\r\n\t\t/* When the split button hovered as a whole, not as individual buttons. */\r\n\t\t& > .ck-button:not(.ck-on):not(.ck-disabled):not(:hover) {\r\n\t\t\tbackground: var(--ck-color-split-button-hover-background);\r\n\t\t}\r\n\r\n\t\t/* Splitbutton separator needs to be set with the ::after pseudoselector\r\n\t\tto display properly the borders on focus */\r\n\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\r\n\t\t\tcontent: \'\';\r\n\t\t\tposition: absolute;\r\n\t\t\twidth: 1px;\r\n\t\t\theight: 100%;\r\n\t\t\tbackground-color: var(--ck-color-split-button-hover-border);\r\n\t\t}\r\n\r\n\t\t/* Make sure the divider between the buttons looks fine when the button is focused */\r\n\t\t& > .ck-splitbutton__arrow:focus::after {\r\n\t\t\t--ck-color-split-button-hover-border: var(--ck-color-focus-border);\r\n\t\t}\r\n\r\n\t\t@nest [dir="ltr"] & {\r\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\r\n\t\t\t\tleft: -1px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@nest [dir="rtl"] & {\r\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled)::after {\r\n\t\t\t\tright: -1px;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/* Don\'t round the bottom left and right corners of the buttons when "open"\r\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\r\n\t&.ck-splitbutton_open {\r\n\t\t@mixin ck-rounded-corners {\r\n\t\t\t& > .ck-splitbutton__action {\r\n\t\t\t\tborder-bottom-left-radius: 0;\r\n\t\t\t}\r\n\r\n\t\t\t& > .ck-splitbutton__arrow {\r\n\t\t\t\tborder-bottom-right-radius: 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},1801:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/arialiveannouncer/arialiveannouncer.css"],names:[],mappings:"AAKA,2BAEC,aAAc,CADd,iBAAkB,CAElB,YACD,CAEA,6BACC,oBACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-aria-live-announcer {\r\n\tposition: absolute;\r\n\tleft: -10000px;\r\n\ttop: -10000px;\r\n}\r\n\r\n.ck.ck-aria-live-region-list {\r\n\tlist-style-type: none;\r\n}\r\n"],sourceRoot:""}]);const a=s},1833:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-dropdown.ck-style-dropdown.ck-style-dropdown_multiple-active>.ck-button>.ck-button__label{font-style:italic}","",{version:3,sources:["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-style/style.css"],names:[],mappings:"AAKA,iGACC,iBACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-dropdown.ck-style-dropdown.ck-style-dropdown_multiple-active > .ck-button > .ck-button__label {\r\n\tfont-style: italic;\r\n}\r\n"],sourceRoot:""}]);const a=s},1905:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.color-picker-hex-input {\r\n\twidth: max-content;\r\n\r\n\t& .ck.ck-input {\r\n\t\tmin-width: unset;\r\n\t}\r\n}\r\n\r\n.ck.ck-color-picker__row {\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n\tflex-wrap: nowrap;\r\n\tjustify-content: space-between;\r\n\tmargin: var(--ck-spacing-large) 0 0;\r\n\twidth: unset;\r\n\r\n\t& .ck.ck-labeled-field-view {\r\n\t\tpadding-top: unset;\r\n\t}\r\n\r\n\t& .ck.ck-input-text {\r\n\t\twidth: unset;\r\n\t}\r\n\r\n\t& .ck-color-picker__hash-view {\r\n\t\tpadding-top: var(--ck-spacing-tiny);\r\n\t\tpadding-right: var(--ck-spacing-medium);\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},2171:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/menu/dropdownmenulistitem.css"],names:[],mappings:"AAKA,MACC,2CACD,CAEA,6CACC,qDACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-dropdown-menu-menu-item-min-width: 18em;\r\n}\r\n\r\n.ck.ck-dropdown-menu-list__nested-menu__item {\r\n\tmin-width: var(--ck-dropdown-menu-menu-item-min-width);\r\n}\r\n"],sourceRoot:""}]);const a=s},2267:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-image/theme/imageuploadprogress.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-editor__editable {\r\n\t& .image,\r\n\t& .image-inline {\r\n\t\tposition: relative;\r\n\t}\r\n\r\n\t/* Upload progress bar. */\r\n\t& .image .ck-progress-bar,\r\n\t& .image-inline .ck-progress-bar {\r\n\t\tposition: absolute;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-editor__editable {\r\n\t& .image,\r\n\t& .image-inline {\r\n\t\t/* Showing animation. */\r\n\t\t&.ck-appear {\r\n\t\t\tanimation: fadeIn 700ms;\r\n\r\n\t\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\t\topacity: 1;\r\n\t\t\t\tanimation: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/* Upload progress bar. */\r\n\t& .image .ck-progress-bar,\r\n\t& .image-inline .ck-progress-bar {\r\n\t\theight: 2px;\r\n\t\twidth: 0;\r\n\t\tbackground: var(--ck-color-upload-bar-background);\r\n\t\ttransition: width 100ms;\r\n\t}\r\n}\r\n\r\n@keyframes fadeIn {\r\n\tfrom { opacity: 0; }\r\n\tto { opacity: 1; }\r\n}\r\n"],sourceRoot:""}]);const a=s},2329:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck-content .table {\r\n\t/* Give the table widget some air and center it horizontally */\r\n\t/* The first value should be equal to --ck-spacing-large variable if used in the editor context\r\n\tto avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */\r\n\tmargin: 0.9em auto;\r\n\tdisplay: table;\r\n\r\n\t& table {\r\n\t\t/* The table cells should have slight borders */\r\n\t\tborder-collapse: collapse;\r\n\t\tborder-spacing: 0;\r\n\r\n\t\t/* Table width and height are set on the parent
                . Make sure the table inside stretches\r\n\t\tto the full dimensions of the container (https://github.com/ckeditor/ckeditor5/issues/6186). */\r\n\t\twidth: 100%;\r\n\t\theight: 100%;\r\n\r\n\t\t/* The outer border of the table should be slightly darker than the inner lines.\r\n\t\tAlso see https://github.com/ckeditor/ckeditor5-table/issues/50. */\r\n\t\tborder: 1px double hsl(0, 0%, 70%);\r\n\r\n\t\t& td,\r\n\t\t& th {\r\n\t\t\tmin-width: 2em;\r\n\t\t\tpadding: .4em;\r\n\r\n\t\t\t/* The border is inherited from .ck-editor__nested-editable styles, so theoretically it\'s not necessary here.\r\n\t\t\tHowever, the border is a content style, so it should use .ck-content (so it works outside the editor).\r\n\t\t\tHence, the duplication. See https://github.com/ckeditor/ckeditor5/issues/6314 */\r\n\t\t\tborder: 1px solid hsl(0, 0%, 75%);\r\n\t\t}\r\n\r\n\t\t& th {\r\n\t\t\tfont-weight: bold;\r\n\t\t\tbackground: hsla(0, 0%, 0%, 5%);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Expanding the table to the full height of the parent container is necessary because tables\r\n * are rendered inside
                elements, which is kinda buggy in table height calculation.\r\n * While setting `height: 100%` fixes the issue in the editing mode described here:\r\n * https://github.com/ckeditor/ckeditor5/issues/6186\r\n *\r\n * it\'s causing another issue with the table height in the print preview mode here:\r\n * https://github.com/ckeditor/ckeditor5/issues/16856\r\n *\r\n * For now, resetting the height to `initial` in the print mode works as a workaround.\r\n */\r\n@media print {\r\n\t.ck-content .table table {\r\n\t\theight: initial;\r\n\t}\r\n}\r\n\r\n/* Text alignment of the table header should match the editor settings and override the native browser styling,\r\nwhen content is available outside the editor. See https://github.com/ckeditor/ckeditor5/issues/6638 */\r\n.ck-content[dir="rtl"] .table th {\r\n\ttext-align: right;\r\n}\r\n\r\n.ck-content[dir="ltr"] .table th {\r\n\ttext-align: left;\r\n}\r\n\r\n.ck-editor__editable .ck-table-bogus-paragraph {\r\n\t/*\r\n\t * Use display:inline-block to force Chrome/Safari to limit text mutations to this element.\r\n\t * See https://github.com/ckeditor/ckeditor5/issues/6062.\r\n\t */\r\n\tdisplay: inline-block;\r\n\r\n\t/*\r\n\t * Inline HTML elements nested in the span should always be dimensioned in relation to the whole cell width.\r\n\t * See https://github.com/ckeditor/ckeditor5/issues/9117.\r\n\t */\r\n\twidth: 100%;\r\n}\r\n'],sourceRoot:""}]);const a=s},2591:(t,e,n)=>{"use strict";var r,i=function(){return void 0===r&&(r=Boolean(window&&document&&document.all&&!window.atob)),r},o=function(){var t={};return function(e){if(void 0===t[e]){var n=document.querySelector(e);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}t[e]=n}return t[e]}}(),s=[];function a(t){for(var e=-1,n=0;n{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck-editor__editable .ck-horizontal-line{display:flow-root}.ck-content hr{background:#dedede;border:0;height:4px;margin:15px 0}","",{version:3,sources:["webpack://./../ckeditor5-horizontal-line/theme/horizontalline.css"],names:[],mappings:"AAMA,yCAEC,iBACD,CAEA,eAGC,kBAA2B,CAC3B,QAAS,CAFT,UAAW,CADX,aAID",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n\r\n.ck-editor__editable .ck-horizontal-line {\r\n\t/* Necessary to render properly next to floated objects, e.g. side image case. */\r\n\tdisplay: flow-root;\r\n}\r\n\r\n.ck-content hr {\r\n\tmargin: 15px 0;\r\n\theight: 4px;\r\n\tbackground: hsl(0, 0%, 87%);\r\n\tborder: 0;\r\n}\r\n"],sourceRoot:""}]);const a=s},2655:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-table/theme/formrow.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/formrow.css"],names:[],mappings:"AAKA,iBACC,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAaD,CAVC,iCACC,WACD,CAGC,wHAEC,sBACD,CCbF,iBACC,4DA2BD,CAvBE,6CAEE,mCAMF,CARA,6CAME,oCAEF,CAGD,2BAEC,cAAe,CADf,UAED,CAEA,2CACC,kCAKD,CAHC,wEACC,0BACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-form__row {\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n\tflex-wrap: nowrap;\r\n\tjustify-content: space-between;\r\n\r\n\t/* Ignore labels that work as fieldset legends */\r\n\t& > *:not(.ck-label) {\r\n\t\tflex-grow: 1;\r\n\t}\r\n\r\n\t&.ck-table-form__action-row {\r\n\t\t& .ck-button-save,\r\n\t\t& .ck-button-cancel {\r\n\t\t\tjustify-content: center;\r\n\t\t}\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-form__row {\r\n\tpadding: var(--ck-spacing-standard) var(--ck-spacing-large) 0;\r\n\r\n\t/* Ignore labels that work as fieldset legends */\r\n\t& > *:not(.ck-label) {\r\n\t\t& + * {\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\tmargin-left: var(--ck-spacing-large);\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tmargin-right: var(--ck-spacing-large);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t& > .ck-label {\r\n\t\twidth: 100%;\r\n\t\tmin-width: 100%;\r\n\t}\r\n\r\n\t&.ck-table-form__action-row {\r\n\t\tmargin-top: var(--ck-spacing-large);\r\n\r\n\t\t& .ck-button .ck-button__label {\r\n\t\t\tcolor: var(--ck-color-text);\r\n\t\t}\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},2710:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/toolbar/blocktoolbar.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-block-toolbar-button {\r\n\tposition: absolute;\r\n\tz-index: var(--ck-z-default);\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-color-block-toolbar-button: var(--ck-color-text);\r\n\t--ck-block-toolbar-button-size: var(--ck-font-size-normal);\r\n}\r\n\r\n.ck.ck-block-toolbar-button {\r\n\tcolor: var(--ck-color-block-toolbar-button);\r\n\tfont-size: var(--ck-block-toolbar-size);\r\n}\r\n"],sourceRoot:""}]);const a=s},2722:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/responsive-form/responsiveform.css","webpack://./../ckeditor5-ui/theme/mixins/_rwd.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/responsive-form/responsiveform.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,CARD,0OAeE,aAMF,CAJE,+IACC,kDACD,CDrEH",sourcesContent:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n\r\n.ck-vertical-form .ck-button {\r\n\t&::after {\r\n\t\tcontent: "";\r\n\t\twidth: 0;\r\n\t\tposition: absolute;\r\n\t\tright: -1px;\r\n\t\ttop: -1px;\r\n\t\tbottom: -1px;\r\n\t\tz-index: 1;\r\n\t}\r\n\r\n\t&:focus::after {\r\n\t\tdisplay: none;\r\n\t}\r\n}\r\n\r\n.ck.ck-responsive-form {\r\n\t@mixin ck-media-phone {\r\n\t\t& .ck-button {\r\n\t\t\t&::after {\r\n\t\t\t\tcontent: "";\r\n\t\t\t\twidth: 0;\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tright: -1px;\r\n\t\t\t\ttop: -1px;\r\n\t\t\t\tbottom: -1px;\r\n\t\t\t\tz-index: 1;\r\n\t\t\t}\r\n\r\n\t\t\t&:focus::after {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-phone {\r\n\t@media screen and (max-width: 600px) {\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck-vertical-form > .ck-button:nth-last-child(2)::after {\r\n\tborder-right: 1px solid var(--ck-color-base-border);\r\n}\r\n\r\n.ck.ck-responsive-form {\r\n\tpadding: var(--ck-spacing-large);\r\n\r\n\t&:focus {\r\n\t\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\r\n\t\toutline: none;\r\n\t}\r\n\r\n\t@mixin ck-dir ltr {\r\n\t\t& > :not(:first-child) {\r\n\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\t\t}\r\n\t}\r\n\r\n\t@mixin ck-dir rtl {\r\n\t\t& > :not(:last-child) {\r\n\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\t\t}\r\n\t}\r\n\r\n\t@mixin ck-media-phone {\r\n\t\tpadding: 0;\r\n\t\twidth: calc(.8 * var(--ck-input-width));\r\n\r\n\t\t& .ck-labeled-field-view {\r\n\t\t\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) 0;\r\n\r\n\t\t\t& .ck-input-text,\r\n\t\t\t& .ck-input-number {\r\n\t\t\t\tmin-width: 0;\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\r\n\t\t\t/* Let the long error messages wrap in the narrow form. */\r\n\t\t\t& .ck-labeled-field-view__error {\r\n\t\t\t\twhite-space: normal;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* Styles for two last buttons in the form (save&cancel, edit&unlink, etc.). */\r\n\t\t& > .ck-button:nth-last-child(2) {\r\n\t\t\t&::after {\r\n\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t& > .ck-button:nth-last-child(1),\r\n\t\t& > .ck-button:nth-last-child(2) {\r\n\t\t\tpadding: var(--ck-spacing-standard);\r\n\t\t\tmargin-top: var(--ck-spacing-large);\r\n\t\t\tborder-radius: 0;\r\n\r\n\t\t\t&:not(:focus) {\r\n\t\t\t\tborder-top: 1px solid var(--ck-color-base-border);\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\tmargin-left: 0;\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tmargin-left: 0;\r\n\r\n\t\t\t\t&:last-of-type {\r\n\t\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},3195:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,'.ck .footnote-section{border:1px solid #c4c4c4;border-radius:2px;counter-reset:footnote-counter;margin:1em 0;padding:10px}.ck .footnote-item{counter-increment:footnote-counter;display:flex;list-style:none;margin-left:.5em}.ck .footnote-item>*{vertical-align:text-top}.ck .footnote-back-link{margin-right:.1em;position:relative;top:-.2em}.ck .footnotes .footnote-back-link>sup{margin-right:0}.ck .footnote-item:before{content:counter(footnote-counter) ". ";display:inline-block;min-width:fit-content;position:relative;right:.2em;text-align:right}.ck .footnote-content{border-radius:2px;display:inline-block;flex-grow:1;padding:0 .3em;width:95%}.ck .ck-widget.footnote-section .ck-widget__type-around__button_after{display:none}.placeholder{line-height:1em;margin:0 1px;outline-offset:-2px;padding:2px}.placeholder::selection{display:none}',"",{version:3,sources:["webpack://./../ckeditor5-footnotes/src/footnote.css"],names:[],mappings:"AAAA,sBAGC,wBAAiC,CACjC,iBAAkB,CAClB,8BAA+B,CAH/B,YAAa,CADb,YAKD,CAEA,mBAEC,kCAAmC,CAEnC,YAAa,CAHb,eAAgB,CAEhB,gBAED,CAEA,qBACC,uBACD,CAEA,wBAEC,iBAAmB,CADnB,iBAAkB,CAElB,SACD,CAEA,uCACC,cACD,CAEA,0BACC,sCAAuC,CACvC,oBAAqB,CAGrB,qBAAsB,CAFtB,iBAAkB,CAClB,UAAY,CAEZ,gBACD,CAEA,sBAIC,iBAAkB,CAHlB,oBAAqB,CAIrB,WAAY,CAHZ,cAAgB,CAChB,SAGD,CAEA,sEACC,YACD,CAEA,aAGC,eAAgB,CAChB,YAAa,CAFb,mBAAoB,CADpB,WAID,CAEA,wBACC,YACD",sourcesContent:[".ck .footnote-section {\r\n\tpadding: 10px;\r\n\tmargin: 1em 0;\r\n\tborder: solid 1px hsl(0, 0%, 77%);\r\n\tborder-radius: 2px;\r\n\tcounter-reset: footnote-counter;\r\n}\r\n\r\n.ck .footnote-item {\r\n\tlist-style: none;\r\n\tcounter-increment: footnote-counter;\r\n\tmargin-left: 0.5em;\r\n\tdisplay: flex;\r\n}\r\n\r\n.ck .footnote-item > * {\r\n\tvertical-align: text-top;\r\n}\r\n\r\n.ck .footnote-back-link {\r\n\tposition: relative;\r\n\tmargin-right: 0.1em;\r\n\ttop: -0.2em;\r\n}\r\n\r\n.ck .footnotes .footnote-back-link > sup {\r\n\tmargin-right: 0;\r\n}\r\n\r\n.ck .footnote-item::before {\r\n\tcontent: counter(footnote-counter) \". \";\r\n\tdisplay: inline-block;\r\n\tposition: relative;\r\n\tright: 0.2em;\r\n\tmin-width: fit-content;\r\n\ttext-align: right;\r\n}\r\n\r\n.ck .footnote-content {\r\n\tdisplay: inline-block;\r\n\tpadding: 0 0.3em;\r\n\twidth: 95%;\r\n\tborder-radius: 2px;\r\n\tflex-grow: 1;\r\n}\r\n\r\n.ck .ck-widget.footnote-section .ck-widget__type-around__button_after {\r\n\tdisplay:none; /* hides the 'insert after' button from the ckeditor widget */\r\n}\r\n\r\n.placeholder {\r\n\tpadding: 2px 2px;\r\n\toutline-offset: -2px;\r\n\tline-height: 1em;\r\n\tmargin: 0 1px;\r\n}\r\n\r\n.placeholder::selection {\r\n\tdisplay: none;\r\n}"],sourceRoot:""}]);const a=s},3344:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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;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://./../ckeditor5-ui/theme/components/menubar/menubarmenubutton.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenubutton.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_disabled.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,wDAgBD,CAbC,+FAEC,iBAAkB,CADlB,WAED,CAEA,mFACC,2BAA4B,CAC5B,4BACD,CAEA,sFACC,YACD,CAMD,mFACC,eA+BD,CA7BC,qHACC,mCAuBD,CAxBA,+HAOE,sCAAuC,CAGvC,6CAAgD,CANhD,wBAoBF,CAxBA,+HAgBE,+BAAgC,CAMhC,4CAA+C,CAH/C,oCAAqC,CALrC,uBAUF,CAEA,iICpFD,kCDsFC",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-menu-bar__menu {\r\n\t& > .ck-menu-bar__menu__button > .ck-menu-bar__menu__button__arrow {\r\n\t\tpointer-events: none;\r\n\t\tz-index: var(--ck-z-default);\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_disabled.css";\r\n@import "../../mixins/_button.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-menu-bar__menu {\r\n\t/*\r\n\t * All menu buttons.\r\n\t */\r\n\t& > .ck-menu-bar__menu__button {\r\n\t\twidth: 100%;\r\n\r\n\t\t& > .ck-button__label {\r\n\t\t\tflex-grow: 1;\r\n\t\t\toverflow: hidden;\r\n\t\t\ttext-overflow: ellipsis;\r\n\t\t}\r\n\r\n\t\t&.ck-disabled > .ck-button__label {\r\n\t\t\t@mixin ck-disabled;\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\t&:not(.ck-button_with-text) {\r\n\t\t\t\tpadding-left: var(--ck-spacing-small);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\t&:not(.ck-button_with-text) {\r\n\t\t\t\tpadding-right: var(--ck-spacing-small);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * Top-level menu buttons only.\r\n\t */\r\n\t&.ck-menu-bar__menu_top-level > .ck-menu-bar__menu__button {\r\n\t\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\r\n\t\tmin-height: unset;\r\n\r\n\t\t& .ck-button__label {\r\n\t\t\twidth: unset;\r\n\t\t\tline-height: unset;\r\n\t\t}\r\n\r\n\t\t&.ck-on {\r\n\t\t\tborder-bottom-left-radius: 0;\r\n\t\t\tborder-bottom-right-radius: 0;\r\n\t\t}\r\n\r\n\t\t& .ck-icon {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * Sub-menu buttons.\r\n\t */\r\n\t&:not(.ck-menu-bar__menu_top-level) .ck-menu-bar__menu__button {\r\n\t\tborder-radius: 0;\r\n\r\n\t\t& > .ck-menu-bar__menu__button__arrow {\r\n\t\t\twidth: var(--ck-dropdown-arrow-size);\r\n\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\ttransform: rotate(-90deg);\r\n\r\n\t\t\t\t/* A space to accommodate the triangle. */\r\n\t\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\r\n\t\t\t\t/* Nudge the arrow gently to the right because its center of gravity is to the left */\r\n\t\t\t\tmargin-right: calc(-1 * var(--ck-spacing-small));\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\ttransform: rotate(90deg);\r\n\r\n\t\t\t\tleft: var(--ck-spacing-standard);\r\n\r\n\t\t\t\t/* A space to accommodate the triangle. */\r\n\t\t\t\tmargin-right: var(--ck-spacing-small);\r\n\r\n\t\t\t\t/* Nudge the arrow gently to the left because its center of gravity is to the right (after rotation). */\r\n\t\t\t\tmargin-left: calc(-1 * var(--ck-spacing-small));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.ck-disabled > .ck-menu-bar__menu__button__arrow {\r\n\t\t\t@mixin ck-disabled;\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A class which indicates that an element holding it is disabled.\r\n */\r\n@define-mixin ck-disabled {\r\n\topacity: var(--ck-disabled-opacity);\r\n}\r\n"],sourceRoot:""}]);const a=s},3350:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-image/theme/imageinsert.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-image/imageinsert.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,CAXA,iDAKE,eAMF,CAXA,iDASE,gBAEF,CAEA,4CASC,oDACD,CATC,8DACC,gDACD,CAEA,6DACC,mDACD,CAMD,iDACC,oDAAqD,CACrD,+BACD,CAEA,+BACC,YACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-image-insert-url {\r\n\twidth: 400px;\r\n\tpadding: var(--ck-spacing-large) var(--ck-spacing-large) 0;\r\n\r\n\t& .ck-image-insert-url__action-row {\r\n\t\tdisplay: grid;\r\n\t\tgrid-template-columns: repeat(2, 1fr);\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n:root {\r\n\t--ck-image-insert-insert-by-url-width: 250px;\r\n}\r\n\r\n.ck.ck-image-insert-url {\r\n\t--ck-input-width: 100%;\r\n\r\n\t& .ck-image-insert-url__action-row {\r\n\t\tgrid-column-gap: var(--ck-spacing-large);\r\n\t\tmargin-top: var(--ck-spacing-large);\r\n\r\n\t\t& .ck-button-save,\r\n\t\t& .ck-button-cancel {\r\n\t\t\tjustify-content: center;\r\n\t\t\tmin-width: auto;\r\n\t\t}\r\n\r\n\t\t& .ck-button .ck-button__label {\r\n\t\t\tcolor: var(--ck-color-text);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ck.ck-image-insert-form {\r\n\t& > .ck.ck-button {\r\n\t\tdisplay: block;\r\n\t\twidth: 100%;\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\ttext-align: left;\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\ttext-align: right;\r\n\t\t}\r\n\t}\r\n\r\n\t& > .ck.ck-collapsible {\r\n\t\t&:not(:first-child) {\r\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\r\n\t\t}\r\n\r\n\t\t&:not(:last-child) {\r\n\t\t\tborder-bottom: 1px solid var(--ck-color-base-border);\r\n\t\t}\r\n\r\n\t\tmin-width: var(--ck-image-insert-insert-by-url-width);\r\n\t}\r\n\r\n\t/* This is the case when there are no other integrations configured than insert by URL */\r\n\t& > .ck.ck-image-insert-url {\r\n\t\tmin-width: var(--ck-image-insert-insert-by-url-width);\r\n\t\tpadding: var(--ck-spacing-large);\r\n\t}\r\n\r\n\t&:focus {\r\n\t\toutline: none;\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},3469:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/* Preserve aspect ratio of the resized image after introducing image height attribute. */\r\n.ck-content img.image_resized {\r\n\theight: auto;\r\n}\r\n\r\n.ck-content .image.image_resized {\r\n\tmax-width: 100%;\r\n\t/*\r\n\tThe `
                ` element for resized images must not use `display:table` as browsers do not support `max-width` for it well.\r\n\tSee https://stackoverflow.com/questions/4019604/chrome-safari-ignoring-max-width-in-table/14420691#14420691 for more.\r\n\tFortunately, since we control the width, there is no risk that the image will look bad.\r\n\t*/\r\n\tdisplay: block;\r\n\tbox-sizing: border-box;\r\n\r\n\t& img {\r\n\t\t/* For resized images it is the `
                ` element that determines the image width. */\r\n\t\twidth: 100%;\r\n\t}\r\n\r\n\t& > figcaption {\r\n\t\t/* The `
                ` element uses `display:block`, so `
                ` also has to. */\r\n\t\tdisplay: block;\r\n\t}\r\n}\r\n\r\n.ck.ck-editor__editable {\r\n\t/* The resized inline image nested in the table should respect its parent size.\r\n\tSee https://github.com/ckeditor/ckeditor5/issues/9117. */\r\n\t& td,\r\n\t& th {\r\n\t\t& .image-inline.image_resized img {\r\n\t\t\tmax-width: 100%;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n[dir="ltr"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\r\n\tmargin-right: var(--ck-spacing-standard);\r\n}\r\n\r\n[dir="rtl"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon {\r\n\tmargin-left: var(--ck-spacing-standard);\r\n}\r\n\r\n.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label {\r\n\twidth: 4em;\r\n}\r\n'],sourceRoot:""}]);const a=s},3610:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/dropdown/menu/dropdownmenupanel.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/menu/dropdownmenupanel.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel {\r\n\tposition: absolute;\r\n\tmax-height: 314px; /* With the default settings, this is equal to 10 menu items. */\r\n\toverflow-y: auto;\r\n\tz-index: calc(var(--ck-z-panel) + 1);\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../../mixins/_rounded.css";\r\n@import "../../../../mixins/_shadow.css";\r\n\r\n:root {\r\n\t--ck-dropdown-menu-menu-panel-max-width: 75vw;\r\n}\r\n\r\n.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel {\r\n\t@mixin ck-drop-shadow;\r\n\r\n\tbackground: var(--ck-color-dropdown-panel-background);\r\n\tborder: 1px solid var(--ck-color-dropdown-panel-border);\r\n\tbottom: 0;\r\n\theight: fit-content;\r\n\tmax-width: var(--ck-dropdown-menu-menu-panel-max-width);\r\n\r\n\t/* Reset balloon styling */\r\n\t&::after,\r\n\t&::before {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\t/* Corner border radius consistent with the button. */\r\n\t&.ck-balloon-panel_es,\r\n\t&.ck-balloon-panel_se {\r\n\t\tborder-top-left-radius: 0;\r\n\t}\r\n\r\n\t&.ck-balloon-panel_ws,\r\n\t&.ck-balloon-panel_sw {\r\n\t\tborder-top-right-radius: 0;\r\n\t}\r\n\r\n\t&.ck-balloon-panel_en,\r\n\t&.ck-balloon-panel_ne {\r\n\t\tborder-bottom-left-radius: 0;\r\n\t}\r\n\r\n\t&.ck-balloon-panel_wn,\r\n\t&.ck-balloon-panel_nw {\r\n\t\tborder-bottom-right-radius: 0;\r\n\t}\r\n\r\n\t&:focus {\r\n\t\toutline: none;\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n"],sourceRoot:""}]);const a=s},3629:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/listdropdown.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css"],names:[],mappings:"AAOA,6CCIC,eDqBD,CAzBA,iICQE,qCAAsC,CDJtC,wBAqBF,CAfE,mFCND,eDYC,CANA,6MCFA,qCAAsC,CDKpC,2BAA4B,CAC5B,4BAA6B,CAF7B,wBAIF,CAEA,kFCdD,eDmBC,CALA,2MCVA,qCAAsC,CDYpC,wBAAyB,CACzB,yBAEF",sourcesContent:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n\r\n.ck.ck-dropdown > .ck-dropdown__panel > .ck-list {\r\n\t/* Disabled radius of top-left border to be consistent with .dropdown__button\r\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\r\n\t@mixin ck-rounded-corners {\r\n\t\tborder-top-left-radius: 0;\r\n\t}\r\n\r\n\t/* Make sure the button belonging to the first/last child of the list goes well with the\r\n\tborder radius of the entire panel. */\r\n\t& .ck-list__item {\r\n\t\t&:first-child > .ck-button {\r\n\t\t\t@mixin ck-rounded-corners {\r\n\t\t\t\tborder-top-left-radius: 0;\r\n\t\t\t\tborder-bottom-left-radius: 0;\r\n\t\t\t\tborder-bottom-right-radius: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&:last-child > .ck-button {\r\n\t\t\t@mixin ck-rounded-corners {\r\n\t\t\t\tborder-top-left-radius: 0;\r\n\t\t\t\tborder-top-right-radius: 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},3710:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{background:var(--ck-color-panel-background);border:var(--ck-balloon-border-width) solid var(--ck-color-panel-border);box-shadow:var(--ck-drop-shadow),0 0;min-height:15px}.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://./../ckeditor5-ui/theme/components/panel/balloonpanel.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonpanel.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./../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,qBCLC,eDmMD,CA9LA,iFCDE,qCD+LF,CA9LA,qBAMC,2CAA4C,CAC5C,wEAAyE,CEdzE,oCAA8B,CFW9B,eA0LD,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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t/* Make sure the balloon arrow does not float over its children. */\r\n\t--ck-balloon-panel-arrow-z-index: calc(var(--ck-z-default) - 3);\r\n}\r\n\r\n.ck.ck-balloon-panel {\r\n\tdisplay: none;\r\n\tposition: absolute;\r\n\r\n\tz-index: var(--ck-z-panel);\r\n\r\n\t&.ck-balloon-panel_with-arrow {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tcontent: "";\r\n\t\t\tposition: absolute;\r\n\t\t}\r\n\r\n\t\t&::before {\r\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\r\n\t\t}\r\n\r\n\t\t&::after {\r\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\r\n\t\t}\r\n\t}\r\n\r\n\t&[class*="arrow_n"] {\r\n\t\t&::before {\r\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\r\n\t\t}\r\n\r\n\t\t&::after {\r\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\r\n\t\t}\r\n\t}\r\n\r\n\t&[class*="arrow_s"] {\r\n\t\t&::before {\r\n\t\t\tz-index: var(--ck-balloon-panel-arrow-z-index);\r\n\t\t}\r\n\r\n\t\t&::after {\r\n\t\t\tz-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_visible {\r\n\t\tdisplay: block;\r\n\t}\r\n}\r\n','/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n@import "../../../mixins/_shadow.css";\r\n\r\n:root {\r\n\t--ck-balloon-border-width: 1px;\r\n\t--ck-balloon-arrow-offset: 2px;\r\n\t--ck-balloon-arrow-height: 10px;\r\n\t--ck-balloon-arrow-half-width: 8px;\r\n\t--ck-balloon-arrow-drop-shadow: 0 2px 2px var(--ck-color-shadow-drop);\r\n}\r\n\r\n.ck.ck-balloon-panel {\r\n\t@mixin ck-rounded-corners;\r\n\t@mixin ck-drop-shadow;\r\n\r\n\tmin-height: 15px;\r\n\r\n\tbackground: var(--ck-color-panel-background);\r\n\tborder: var(--ck-balloon-border-width) solid var(--ck-color-panel-border);\r\n\r\n\t&.ck-balloon-panel_with-arrow {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tborder-style: solid;\r\n\t\t}\r\n\t}\r\n\r\n\t&[class*="arrow_n"] {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tborder-width: 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width);\r\n\t\t}\r\n\r\n\t\t&::before {\r\n\t\t\tborder-color: transparent transparent var(--ck-color-panel-border) transparent;\r\n\t\t\tmargin-top: calc( -1 * var(--ck-balloon-border-width) );\r\n\t\t}\r\n\r\n\t\t&::after {\r\n\t\t\tborder-color: transparent transparent var(--ck-color-panel-background) transparent;\r\n\t\t\tmargin-top: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\r\n\t\t}\r\n\t}\r\n\r\n\t&[class*="arrow_s"] {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tborder-width: var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width);\r\n\t\t}\r\n\r\n\t\t&::before {\r\n\t\t\tborder-color: var(--ck-color-panel-border) transparent transparent;\r\n\t\t\tfilter: drop-shadow(var(--ck-balloon-arrow-drop-shadow));\r\n\t\t\tmargin-bottom: calc( -1 * var(--ck-balloon-border-width) );\r\n\t\t}\r\n\r\n\t\t&::after {\r\n\t\t\tborder-color: var(--ck-color-panel-background) transparent transparent transparent;\r\n\t\t\tmargin-bottom: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\r\n\t\t}\r\n\t}\r\n\r\n\t&[class*="arrow_e"] {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tborder-width: var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height);\r\n\t\t}\r\n\r\n\t\t&::before {\r\n\t\t\tborder-color: transparent transparent transparent var(--ck-color-panel-border);\r\n\t\t\tmargin-right: calc( -1 * var(--ck-balloon-border-width) );\r\n\t\t}\r\n\r\n\t\t&::after {\r\n\t\t\tborder-color: transparent transparent transparent var(--ck-color-panel-background);\r\n\t\t\tmargin-right: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\r\n\t\t}\r\n\t}\r\n\r\n\t&[class*="arrow_w"] {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tborder-width: var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0;\r\n\t\t}\r\n\r\n\t\t&::before {\r\n\t\t\tborder-color: transparent var(--ck-color-panel-border) transparent transparent;\r\n\t\t\tmargin-left: calc( -1 * var(--ck-balloon-border-width) );\r\n\t\t}\r\n\r\n\t\t&::after {\r\n\t\t\tborder-color: transparent var(--ck-color-panel-background) transparent transparent;\r\n\t\t\tmargin-left: calc( var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width) );\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_n {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tleft: 50%;\r\n\t\t\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\r\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_nw {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\r\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_ne {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tright: calc(2 * var(--ck-balloon-arrow-half-width));\r\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_s {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tleft: 50%;\r\n\t\t\tmargin-left: calc(-1 * var(--ck-balloon-arrow-half-width));\r\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_sw {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tleft: calc(2 * var(--ck-balloon-arrow-half-width));\r\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_se {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tright: calc(2 * var(--ck-balloon-arrow-half-width));\r\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_sme {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tright: 25%;\r\n\t\t\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\r\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_smw {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tleft: 25%;\r\n\t\t\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\r\n\t\t\tbottom: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_nme {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tright: 25%;\r\n\t\t\tmargin-right: calc(2 * var(--ck-balloon-arrow-half-width));\r\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_nmw {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tleft: 25%;\r\n\t\t\tmargin-left: calc(2 * var(--ck-balloon-arrow-half-width));\r\n\t\t\ttop: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_e {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tright: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\r\n\t\t\ttop: 50%;\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-balloon-panel_arrow_w {\r\n\t\t&::before,\r\n\t\t&::after {\r\n\t\t\tleft: calc(-1 * var(--ck-balloon-arrow-height));\r\n\t\t\tmargin-top: calc(-1 * var(--ck-balloon-arrow-half-width));\r\n\t\t\ttop: 50%;\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n"],sourceRoot:""}]);const a=s},3817:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-link/theme/linkform.css","webpack://./../ckeditor5-ui/theme/mixins/_rwd.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-link/linkform.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,CARD,4GAeE,aAMF,CAJE,mEACC,kDACD,CAKF,6CACC,gCAUD,CARC,wEACC,SAAU,CACV,UAKD,CAHC,8EACC,eACD",sourcesContent:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n\r\n.ck.ck-link-form {\r\n\tdisplay: flex;\r\n\talign-items: flex-start;\r\n\r\n\t& .ck-label {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\t@mixin ck-media-phone {\r\n\t\tflex-wrap: wrap;\r\n\r\n\t\t& .ck-labeled-field-view {\r\n\t\t\tflex-basis: 100%;\r\n\t\t}\r\n\r\n\t\t& .ck-button {\r\n\t\t\tflex-basis: 50%;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/*\r\n * Style link form differently when manual decorators are available.\r\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\r\n */\r\n.ck.ck-link-form_layout-vertical {\r\n\tdisplay: block;\r\n\r\n\t/*\r\n\t * Whether the form is in the responsive mode or not, if there are decorator buttons\r\n\t * keep the top margin of action buttons medium.\r\n\t */\r\n\t& .ck-button {\r\n\t\t&.ck-button-save,\r\n\t\t&.ck-button-cancel {\r\n\t\t\tmargin-top: var(--ck-spacing-medium);\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-phone {\r\n\t@media screen and (max-width: 600px) {\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n/*\r\n * Style link form differently when manual decorators are available.\r\n * See: https://github.com/ckeditor/ckeditor5-link/issues/186.\r\n */\r\n.ck.ck-link-form_layout-vertical {\r\n\tpadding: 0;\r\n\tmin-width: var(--ck-input-width);\r\n\r\n\t& .ck-labeled-field-view {\r\n\t\tmargin: var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small);\r\n\r\n\t\t& .ck-input-text {\r\n\t\t\tmin-width: 0;\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n\r\n\t& > .ck-button {\r\n\t\tpadding: var(--ck-spacing-standard);\r\n\t\tmargin: 0;\r\n\t\twidth: 50%;\r\n\t\tborder-radius: 0;\r\n\r\n\t\t&:not(:focus) {\r\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\tmargin-left: 0;\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\tmargin-left: 0;\r\n\r\n\t\t\t&:last-of-type {\r\n\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/* Using additional `.ck` class for stronger CSS specificity than `.ck.ck-link-form > :not(:first-child)`. */\r\n\t& .ck.ck-list {\r\n\t\tmargin: 0 var(--ck-spacing-large);\r\n\r\n\t\t& .ck-button.ck-switchbutton {\r\n\t\t\tpadding: 0;\r\n\t\t\twidth: 100%;\r\n\r\n\t\t\t&:hover {\r\n\t\t\t\tbackground: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},4043:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-form {\r\n\tpadding: 0 0 var(--ck-spacing-large);\r\n\r\n\t&:focus {\r\n\t\t/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */\r\n\t\toutline: none;\r\n\t}\r\n\r\n\t& .ck.ck-input-text {\r\n\t\tmin-width: 100%;\r\n\t\twidth: 0;\r\n\t}\r\n\r\n\t& .ck.ck-dropdown {\r\n\t\tmin-width: 100%;\r\n\r\n\t\t& .ck-dropdown__button {\r\n\t\t\t&:not(:focus) {\r\n\t\t\t\tborder: 1px solid var(--ck-color-base-border);\r\n\t\t\t}\r\n\r\n\t\t\t& .ck-button__label {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},4062:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-image/theme/textalternativeform.css","webpack://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n\r\n.ck.ck-text-alternative-form {\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n\tflex-wrap: nowrap;\r\n\r\n\t& .ck-labeled-field-view {\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t& .ck-label {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\t@mixin ck-media-phone {\r\n\t\tflex-wrap: wrap;\r\n\r\n\t\t& .ck-labeled-field-view {\r\n\t\t\tflex-basis: 100%;\r\n\t\t}\r\n\r\n\t\t& .ck-button {\r\n\t\t\tflex-basis: 50%;\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-phone {\r\n\t@media screen and (max-width: 600px) {\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},4095:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-widget/theme/widgetresize.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck .ck-widget_with-resizer {\r\n\t/* Make the widget wrapper a relative positioning container for the drag handle. */\r\n\tposition: relative;\r\n}\r\n\r\n.ck .ck-widget__resizer {\r\n\tdisplay: none;\r\n\tposition: absolute;\r\n\r\n\t/* The wrapper itself should not interfere with the pointer device, only the handles should. */\r\n\tpointer-events: none;\r\n\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n\r\n.ck-focused .ck-widget_with-resizer.ck-widget_selected {\r\n\t& > .ck-widget__resizer {\r\n\t\tdisplay: block;\r\n\t}\r\n}\r\n\r\n.ck .ck-widget__resizer__handle {\r\n\tposition: absolute;\r\n\r\n\t/* Resizers are the only UI elements that should interfere with a pointer device. */\r\n\tpointer-events: all;\r\n\r\n\t&.ck-widget__resizer__handle-top-left,\r\n\t&.ck-widget__resizer__handle-bottom-right {\r\n\t\tcursor: nwse-resize;\r\n\t}\r\n\r\n\t&.ck-widget__resizer__handle-top-right,\r\n\t&.ck-widget__resizer__handle-bottom-left {\r\n\t\tcursor: nesw-resize;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-resizer-size: 10px;\r\n\r\n\t/* Set the resizer with a 50% offset. */\r\n\t--ck-resizer-offset: calc( ( var(--ck-resizer-size) / -2 ) - 2px);\r\n\t--ck-resizer-border-width: 1px;\r\n}\r\n\r\n.ck .ck-widget__resizer {\r\n\toutline: 1px solid var(--ck-color-resizer);\r\n}\r\n\r\n.ck .ck-widget__resizer__handle {\r\n\twidth: var(--ck-resizer-size);\r\n\theight: var(--ck-resizer-size);\r\n\tbackground: var(--ck-color-focus-border);\r\n\tborder: var(--ck-resizer-border-width) solid hsl(0, 0%, 100%);\r\n\tborder-radius: var(--ck-resizer-border-radius);\r\n\r\n\t&.ck-widget__resizer__handle-top-left {\r\n\t\ttop: var(--ck-resizer-offset);\r\n\t\tleft: var(--ck-resizer-offset);\r\n\t}\r\n\r\n\t&.ck-widget__resizer__handle-top-right {\r\n\t\ttop: var(--ck-resizer-offset);\r\n\t\tright: var(--ck-resizer-offset);\r\n\t}\r\n\r\n\t&.ck-widget__resizer__handle-bottom-right {\r\n\t\tbottom: var(--ck-resizer-offset);\r\n\t\tright: var(--ck-resizer-offset);\r\n\t}\r\n\r\n\t&.ck-widget__resizer__handle-bottom-left {\r\n\t\tbottom: var(--ck-resizer-offset);\r\n\t\tleft: var(--ck-resizer-offset);\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},4098:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-engine/theme/placeholder.css","webpack://./../ckeditor5-ui/theme/mixins/_mediacolors.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/* See ckeditor/ckeditor5#936. */\r\n.ck.ck-placeholder,\r\n.ck .ck-placeholder {\r\n\tposition: relative;\r\n\r\n\t&::before {\r\n\t\tposition: absolute;\r\n\t\tleft: 0;\r\n\t\tright: 0;\r\n\t\tcontent: attr(data-placeholder);\r\n\r\n\t\t/* See ckeditor/ckeditor5#469. */\r\n\t\tpointer-events: none;\r\n\t}\r\n}\r\n\r\n/* See ckeditor/ckeditor5#1987. */\r\n.ck.ck-read-only .ck-placeholder {\r\n\t&::before {\r\n\t\tdisplay: none;\r\n\t}\r\n}\r\n\r\n/*\r\n * Rules for the `ck-placeholder` are loaded before the rules for `ck-reset_all` in the base CKEditor 5 DLL build.\r\n * This fix overwrites the incorrectly set `position: static` from `ck-reset_all`.\r\n * See https://github.com/ckeditor/ckeditor5/issues/11418.\r\n */\r\n.ck.ck-reset_all .ck-placeholder {\r\n\tposition: relative;\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-forced-colors {\r\n\t@media (forced-colors: active) {\r\n\t\t& {\r\n\t\t\t@mixin-content;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@define-mixin ck-media-default-colors {\r\n\t@media (forced-colors: none) {\r\n\t\t& {\r\n\t\t\t@mixin-content;\r\n\t\t}\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\r\n\r\n/* See ckeditor/ckeditor5#936. */\r\n.ck.ck-placeholder, .ck .ck-placeholder {\r\n\t@mixin ck-media-forced-colors {\r\n\t\t/*\r\n\t\t * This is needed for Edge on Windows to use the right color for the placeholder content (::before).\r\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/14907.\r\n\t\t */\r\n\t\tforced-color-adjust: preserve-parent-color;\r\n\t}\r\n\r\n\t&::before {\r\n\t\tcursor: text;\r\n\r\n\t\t@mixin ck-media-default-colors {\r\n\t\t\tcolor: var(--ck-color-engine-placeholder-text);\r\n\t\t}\r\n\r\n\t\t@mixin ck-media-forced-colors {\r\n\t\t\t/*\r\n\t\t\t * In the high contrast mode there is no telling between regular and placeholder text. Using\r\n\t\t\t * italic text to address that issue. See https://github.com/ckeditor/ckeditor5/issues/14907.\r\n\t\t\t */\r\n\t\t\tfont-style: italic;\r\n\r\n\t\t\t/*\r\n\t\t\t * Without this margin, the caret will not show up and blink when the user puts the selection\r\n\t\t\t * in the placeholder (Edge on Windows). See https://github.com/ckeditor/ckeditor5/issues/14907.\r\n\t\t\t */\r\n\t\t\tmargin-left: 1px;\r\n\t\t}\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},4143:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-table/theme/tablecaption.css","webpack://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\r\n\r\n:root {\r\n\t--ck-color-selector-caption-background: hsl(0, 0%, 97%);\r\n\t--ck-color-selector-caption-text: hsl(0, 0%, 20%);\r\n\t--ck-color-selector-caption-highlighted-background: hsl(52deg 100% 50%);\r\n}\r\n\r\n/* Content styles */\r\n.ck-content .table > figcaption {\r\n\tdisplay: table-caption;\r\n\tcaption-side: top;\r\n\tword-break: break-word;\r\n\ttext-align: center;\r\n\tcolor: var(--ck-color-selector-caption-text);\r\n\tbackground-color: var(--ck-color-selector-caption-background);\r\n\tpadding: .6em;\r\n\tfont-size: .75em;\r\n\toutline-offset: -1px;\r\n\r\n\t/* Improve placeholder rendering in high-constrast mode (https://github.com/ckeditor/ckeditor5/issues/14907). */\r\n\t@mixin ck-media-forced-colors {\r\n\t\tbackground-color: unset;\r\n\t\tcolor: unset;\r\n\t}\r\n}\r\n\r\n/* Editing styles */\r\n.ck.ck-editor__editable .table > figcaption {\r\n\t@mixin ck-media-default-colors {\r\n\t\t&.table__caption_highlighted {\r\n\t\t\tanimation: ck-table-caption-highlight .6s ease-out;\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-placeholder::before {\r\n\t\tpadding-left: inherit;\r\n\t\tpadding-right: inherit;\r\n\r\n\t\t/*\r\n\t\t * Make sure the table caption placeholder doesn\'t overflow the placeholder area.\r\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9162.\r\n\t\t */\r\n\t\twhite-space: nowrap;\r\n\t\toverflow: hidden;\r\n\t\ttext-overflow: ellipsis;\r\n\t}\r\n}\r\n\r\n@keyframes ck-table-caption-highlight {\r\n\t0% {\r\n\t\tbackground-color: var(--ck-color-selector-caption-highlighted-background);\r\n\t}\r\n\r\n\t100% {\r\n\t\tbackground-color: var(--ck-color-selector-caption-background);\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-forced-colors {\r\n\t@media (forced-colors: active) {\r\n\t\t& {\r\n\t\t\t@mixin-content;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@define-mixin ck-media-default-colors {\r\n\t@media (forced-colors: none) {\r\n\t\t& {\r\n\t\t\t@mixin-content;\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},4199:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-basic-styles/theme/code.css"],names:[],mappings:"AAKA,iBACC,kCAAuC,CAEvC,iBAAkB,CADlB,aAED,CAEA,0CACC,kCACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck-content code {\r\n\tbackground-color: hsla(0, 0%, 78%, 0.3);\r\n\tpadding: .15em;\r\n\tborder-radius: 2px;\r\n}\r\n\r\n.ck.ck-editor__editable .ck-code_selected {\r\n\tbackground-color: hsla(0, 0%, 78%, 0.5);\r\n}\r\n"],sourceRoot:""}]);const a=s},4272:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-special-characters>.ck-dialog__content>div{display:grid;height:100%;max-width:100%;width:350px;grid-column-gap:0;grid-row-gap:0;grid-template-columns:1fr;grid-template-rows:auto 1fr auto}.ck.ck-special-characters>.ck-dialog__content>div>.ck-character-categories{grid-area:1/1/2/2;padding:var(--ck-spacing-medium) var(--ck-spacing-large)}.ck.ck-special-characters>.ck-dialog__content>div>.ck-character-categories>.ck-labeled-field-view{padding-top:var(--ck-spacing-standard);width:100%}.ck.ck-special-characters>.ck-dialog__content>div>.ck-character-categories>.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);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.ck-special-characters>.ck-dialog__content>div>.ck-character-categories>.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-special-characters>.ck-dialog__content>div>.ck-character-categories>.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:none}}.ck.ck-special-characters>.ck-dialog__content>div>.ck-character-categories>.ck-labeled-field-view .ck-input.ck-error:not(:focus)+.ck.ck-labeled-field-view__status{display:none}.ck.ck-special-characters>.ck-dialog__content>div>.ck-character-categories>.ck-labeled-field-view>.ck-label{font-size:var(--ck-font-size-tiny);text-align:center}.ck.ck-special-characters>.ck-dialog__content>div>.ck-character-categories .ck-dropdown{display:block;width:100%}.ck.ck-special-characters>.ck-dialog__content>div>.ck-character-categories .ck-dropdown>button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-special-characters>.ck-dialog__content>div>.ck-character-categories .ck-dropdown>button>span{width:100%}.ck.ck-special-characters>.ck-dialog__content>div>.ck-character-grid{grid-area:2/1/3/2;max-height:200px}.ck.ck-special-characters>.ck-dialog__content>div>.ck-character-info{grid-area:3/1/4/2}.ck.ck-special-characters-navigation>.ck-label{max-width:160px;overflow:hidden;text-overflow:ellipsis}.ck.ck-special-characters-navigation>.ck-dropdown .ck-dropdown__panel{max-height:250px;overflow-x:hidden;overflow-y:auto}@media screen and (max-width:600px){.ck.ck-special-characters-navigation{max-width:190px}.ck.ck-special-characters-navigation>.ck-form__header__label{overflow:hidden;text-overflow:ellipsis}}","",{version:3,sources:["webpack://./../ckeditor5-special-characters/theme/specialcharacters.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-special-characters/specialcharacters.css","webpack://./../ckeditor5-ui/theme/mixins/_rwd.css"],names:[],mappings:"AAcC,kDAKC,YAAa,CAFb,WAAY,CADZ,cAAe,CADf,WAAY,CAKZ,iBAAoB,CACpB,cAAiB,CACjB,yBAA0B,CAC1B,gCAkED,CAhEC,2EACC,iBAAwB,CACxB,wDAoDD,CAlDC,kGACC,sCAAuC,CACvC,UAgCD,CA9BC,oIAcC,iEAAkE,CAblE,qCAAsC,CACtC,qCAAsC,CAEtC,oDAAqD,CADrD,wDAAyD,CAEzD,iBAcD,CAXC,0IACC,2EAA4E,CAE5E,kBAAmB,CADnB,kJAED,CAIA,uCAhBD,oIAiBE,cAEF,CADC,CAID,mKACC,YACD,CAEA,4GACC,kCAAmC,CACnC,iBACD,CAGD,wFACC,aAAc,CACd,UAWD,CARE,2GACC,4CACD,CAEA,oGACC,UACD,CAKH,qEACC,iBAAwB,CACxB,gBACD,CAEA,qEACC,iBACD,CC9ED,+CACC,eAAgB,CAEhB,eAAgB,CADhB,sBAED,CAEA,sEAEC,gBAAiB,CAEjB,iBAAkB,CADlB,eAED,CCfA,oCDED,qCAgBE,eAOF,CALE,6DAEC,eAAgB,CADhB,sBAED,CCrBD",sourcesContent:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/*\r\n * Note: This file should contain the wireframe styles only. But since there are no such styles,\r\n * it acts as a message to the builder telling that it should look for the corresponding styles\r\n * **in the theme** when compiling the editor.\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n\r\n.ck.ck-special-characters {\r\n\t& > .ck-dialog__content > div {\r\n\t\twidth: 350px;\r\n\t\tmax-width: 100%;\r\n\t\theight: 100%;\r\n\r\n\t\tdisplay: grid;\r\n\t\tgrid-column-gap: 0px;\r\n\t\tgrid-row-gap: 0px;\r\n\t\tgrid-template-columns: 1fr;\r\n\t\tgrid-template-rows: auto 1fr auto;\r\n\r\n\t\t& > .ck-character-categories {\r\n\t\t\tgrid-area: 1 / 1 / 2 / 2;\r\n\t\t\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large);\r\n\r\n\t\t\t& > .ck-labeled-field-view {\r\n\t\t\t\tpadding-top: var(--ck-spacing-standard);\r\n\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t& .ck.ck-labeled-field-view__status {\r\n\t\t\t\t\tbackground: var(--ck-color-base-error);\r\n\t\t\t\t\tcolor: var(--ck-color-base-background);\r\n\t\t\t\t\tpadding: var(--ck-spacing-small) var(--ck-spacing-medium);\r\n\t\t\t\t\tmin-width: var(--ck-table-properties-min-error-width);\r\n\t\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t\t/* The arrow pointing towards the field. */\r\n\t\t\t\t\t&::after {\r\n\t\t\t\t\t\tborder-color: transparent transparent var(--ck-color-base-error) transparent;\r\n\t\t\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);\r\n\t\t\t\t\t\tborder-style: solid;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tanimation: ck-table-form-labeled-view-status-appear .15s ease both;\r\n\r\n\t\t\t\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\t\t\t\tanimation: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Hide the error balloon when the field is blurred. Makes the experience much more clear. */\r\n\t\t\t\t& .ck-input.ck-error:not(:focus) + .ck.ck-labeled-field-view__status {\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t& > .ck-label {\r\n\t\t\t\t\tfont-size: var(--ck-font-size-tiny);\r\n\t\t\t\t\ttext-align: center;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.ck-dropdown {\r\n\t\t\t\tdisplay: block;\r\n\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t& > button {\r\n\t\t\t\t\t&:not(:focus) {\r\n\t\t\t\t\t\tborder: 1px solid var(--ck-color-base-border);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t& > span {\r\n\t\t\t\t\t\twidth: 100%;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t& > .ck-character-grid {\r\n\t\t\tgrid-area: 2 / 1 / 3 / 2;\r\n\t\t\tmax-height: 200px;\r\n\t\t}\r\n\r\n\t\t& > .ck-character-info {\r\n\t\t\tgrid-area: 3 / 1 / 4 / 2;\r\n\t\t}\r\n\t}\r\n}\r\n','/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n\r\n.ck.ck-special-characters-navigation {\r\n\r\n\t& > .ck-label {\r\n\t\tmax-width: 160px;\r\n\t\ttext-overflow: ellipsis;\r\n\t\toverflow: hidden;\r\n\t}\r\n\r\n\t& > .ck-dropdown .ck-dropdown__panel {\r\n\t\t/* There could be dozens of categories available. Use scroll to prevent a 10e6px dropdown. */\r\n\t\tmax-height: 250px;\r\n\t\toverflow-y: auto;\r\n\t\toverflow-x: hidden;\r\n\t}\r\n\r\n\t@mixin ck-media-phone {\r\n\t\tmax-width: 190px;\r\n\r\n\t\t& > .ck-form__header__label {\r\n\t\t\ttext-overflow: ellipsis;\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-phone {\r\n\t@media screen and (max-width: 600px) {\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},4341:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck-find-result{background:var(--ck-color-highlight-background);color:var(--ck-color-text)}.ck-find-result_selected{background:#ff9633}","",{version:3,sources:["webpack://./../ckeditor5-find-and-replace/theme/findandreplace.css"],names:[],mappings:"AAKA,gBACC,+CAAgD,CAChD,0BACD,CAEA,yBACC,kBACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck-find-result {\r\n\tbackground: var(--ck-color-highlight-background);\r\n\tcolor: var(--ck-color-text);\r\n}\r\n\r\n.ck-find-result_selected {\r\n\tbackground: hsl(29, 100%, 60%);\r\n}\r\n"],sourceRoot:""}]);const a=s},4391:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{background:var(--ck-color-switch-button-off-background);border:1px solid transparent;transition:background .4s ease,box-shadow .2s ease-in-out,outline .2s ease-in-out;width:var(--ck-switch-button-toggle-width)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(var(--ck-border-radius)*.5)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{background:var(--ck-color-switch-button-inner-background);height:var(--ck-switch-button-toggle-inner-size);transition:all .3s ease;width:var(--ck-switch-button-toggle-inner-size)}@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://./../ckeditor5-ui/theme/components/button/switchbutton.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/switchbutton.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./../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,CAEA,0DAGE,4CAOF,CAVA,0DAQE,2CAEF,CAEA,iDCpCA,eDgFA,CA5CA,yIChCC,qCD4ED,CA5CA,2DAKE,gBAuCF,CA5CA,2DAUE,iBAkCF,CA5CA,iDAkBC,uDAAwD,CAFxD,4BAA6B,CAD7B,iFAAsF,CAEtF,0CA2BD,CAxBC,2ECxDD,eDuEC,CAfA,6LCpDA,qCAAsC,CDsDpC,8CAaF,CAfA,2EAOC,yDAA0D,CAD1D,gDAAiD,CAIjD,uBAA0B,CAL1B,+CAUD,CAHC,uCAZD,2EAaE,eAEF,CADC,CAGD,uDACC,6DAKD,CAHC,iFACC,qDACD,CAIF,6DEpFA,kCFsFA,CAGA,oCACC,wBAAyB,CAEzB,eAAgB,CADhB,YAQD,CALC,uDACC,iGAAmG,CAEnG,4BAA6B,CAD7B,kBAED,CAKA,uDACC,sDAkBD,CAhBC,6DACC,4DACD,CAEA,2FAKE,2DAMF,CAXA,2FASE,oEAEF",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-button.ck-switchbutton {\r\n\t& .ck-button__toggle {\r\n\t\tdisplay: block;\r\n\r\n\t\t& .ck-button__toggle__inner {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n@import "../../../mixins/_disabled.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n/* Note: To avoid rendering issues (aliasing) but to preserve the responsive nature\r\nof the component, floating–point numbers have been used which, for the default font size\r\n(see: --ck-font-size-base), will generate simple integers. */\r\n:root {\r\n\t/* 34px at 13px font-size */\r\n\t--ck-switch-button-toggle-width: 2.6153846154em;\r\n\t/* 14px at 13px font-size */\r\n\t--ck-switch-button-toggle-inner-size: calc(1.0769230769em + 1px);\r\n\t--ck-switch-button-translation: calc(\r\n\t\tvar(--ck-switch-button-toggle-width) -\r\n\t\tvar(--ck-switch-button-toggle-inner-size) -\r\n\t\t2px /* Border */\r\n\t);\r\n\t--ck-switch-button-inner-hover-shadow: 0 0 0 5px var(--ck-color-switch-button-inner-shadow);\r\n}\r\n\r\n.ck.ck-button.ck-switchbutton {\r\n\t/* Unlike a regular button, the switch button text color and background should never change.\r\n\t * Changing toggle switch (background, outline) is enough to carry the information about the\r\n\t * state of the entire component (https://github.com/ckeditor/ckeditor5/issues/12519)\r\n\t */\r\n\t&, &:hover, &:focus, &:active, &.ck-on:hover, &.ck-on:focus, &.ck-on:active {\r\n\t\tcolor: inherit;\r\n\t\tbackground: transparent;\r\n\t}\r\n\r\n\t& .ck-button__label {\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\t/* Separate the label from the switch */\r\n\t\t\tmargin-right: calc(2 * var(--ck-spacing-large));\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\t/* Separate the label from the switch */\r\n\t\t\tmargin-left: calc(2 * var(--ck-spacing-large));\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck-button__toggle {\r\n\t\t@mixin ck-rounded-corners;\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\t/* Make sure the toggle is always to the right as far as possible. */\r\n\t\t\tmargin-left: auto;\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\t/* Make sure the toggle is always to the left as far as possible. */\r\n\t\t\tmargin-right: auto;\r\n\t\t}\r\n\r\n\t\t/* Apply some smooth transition to the box-shadow and border. */\r\n\t\t/* Gently animate the background color of the toggle switch */\r\n\t\ttransition: background 400ms ease, box-shadow .2s ease-in-out, outline .2s ease-in-out;\r\n\t\tborder: 1px solid transparent;\r\n\t\twidth: var(--ck-switch-button-toggle-width);\r\n\t\tbackground: var(--ck-color-switch-button-off-background);\r\n\r\n\t\t& .ck-button__toggle__inner {\r\n\t\t\t@mixin ck-rounded-corners {\r\n\t\t\t\tborder-radius: calc(.5 * var(--ck-border-radius));\r\n\t\t\t}\r\n\r\n\t\t\twidth: var(--ck-switch-button-toggle-inner-size);\r\n\t\t\theight: var(--ck-switch-button-toggle-inner-size);\r\n\t\t\tbackground: var(--ck-color-switch-button-inner-background);\r\n\r\n\t\t\t/* Gently animate the inner part of the toggle switch */\r\n\t\t\ttransition: all 300ms ease;\r\n\r\n\t\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\t\ttransition: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&:hover {\r\n\t\t\tbackground: var(--ck-color-switch-button-off-hover-background);\r\n\r\n\t\t\t& .ck-button__toggle__inner {\r\n\t\t\t\tbox-shadow: var(--ck-switch-button-inner-hover-shadow);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-disabled .ck-button__toggle {\r\n\t\t@mixin ck-disabled;\r\n\t}\r\n\r\n\t/* Overriding default .ck-button:focus styles + an outline around the toogle */\r\n\t&:focus {\r\n\t\tborder-color: transparent;\r\n\t\toutline: none;\r\n\t\tbox-shadow: none;\r\n\r\n\t\t& .ck-button__toggle {\r\n\t\t\tbox-shadow: 0 0 0 1px var(--ck-color-base-background), 0 0 0 5px var(--ck-color-focus-outer-shadow);\r\n\t\t\toutline-offset: 1px;\r\n\t\t\toutline: var(--ck-focus-ring);\r\n\t\t}\r\n\t}\r\n\r\n\t/* stylelint-disable-next-line no-descending-specificity */\r\n\t&.ck-on {\r\n\t\t& .ck-button__toggle {\r\n\t\t\tbackground: var(--ck-color-switch-button-on-background);\r\n\r\n\t\t\t&:hover {\r\n\t\t\t\tbackground: var(--ck-color-switch-button-on-hover-background);\r\n\t\t\t}\r\n\r\n\t\t\t& .ck-button__toggle__inner {\r\n\t\t\t\t/*\r\n\t\t\t\t* Move the toggle switch to the right. It will be animated.\r\n\t\t\t\t*/\r\n\t\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\t\ttransform: translateX( var( --ck-switch-button-translation ) );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\t\ttransform: translateX( calc( -1 * var( --ck-switch-button-translation ) ) );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A class which indicates that an element holding it is disabled.\r\n */\r\n@define-mixin ck-disabled {\r\n\topacity: var(--ck-disabled-opacity);\r\n}\r\n"],sourceRoot:""}]);const a=s},4642:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-image/theme/imagecustomresizeform.css","webpack://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n\r\n.ck.ck-image-custom-resize-form {\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n\tflex-wrap: nowrap;\r\n\talign-items: flex-start;\r\n\r\n\t& .ck-labeled-field-view {\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t& .ck-label {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\t@mixin ck-media-phone {\r\n\t\tflex-wrap: wrap;\r\n\r\n\t\t& .ck-labeled-field-view {\r\n\t\t\tflex-basis: 100%;\r\n\t\t}\r\n\r\n\t\t& .ck-button {\r\n\t\t\tflex-basis: 50%;\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-phone {\r\n\t@media screen and (max-width: 600px) {\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},4767:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/*\r\n * List item buttons.\r\n */\r\n.ck-button.ck-dropdown-menu-list__nested-menu__item__button {\r\n\tborder-radius: 0;\r\n\r\n\t& > .ck-spinner-container,\r\n\t& > .ck-spinner-container .ck-spinner {\r\n\t\t/* These styles correspond to .ck-icon so that the spinner seamlessly replaces the icon. */\r\n\t\t--ck-toolbar-spinner-size: 20px;\r\n\t}\r\n\r\n\t& > .ck-spinner-container {\r\n\t\t/* These margins are the same as for .ck-icon. */\r\n\t\tmargin-left: calc(-1 * var(--ck-spacing-small));\r\n\t\tmargin-right: var(--ck-spacing-small);\r\n\t}\r\n\r\n\t/*\r\n\t * Hovered items automatically get focused. Default focus styles look odd\r\n\t * while moving across a huge list of items so let's get rid of them\r\n\t */\r\n\t&:focus {\r\n\t\tborder-color: transparent;\r\n\t\tbox-shadow: none;\r\n\r\n\t\t&:not(.ck-on) {\r\n\t\t\tbackground: var(--ck-color-button-default-hover-background);\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},4808:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzUuNzUgMCAwIDEtLjIxNy4yMDYgNS4yNTEgNS4yNTEgMCAwIDEtOC41MDMtNS45NTUuNy43IDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NHptNS40OTQtNS4zMzVhLjc1Ljc1IDAgMCAxLS4xMi4yNzRsLTEuMTQ3IDEuNjM5YS43NS43NSAwIDEgMS0xLjIyOC0uODZsLjg2LTEuMjNhMy43NSAzLjc1IDAgMCAwLTYuMTQ0LTQuMzAxbC0uODYgMS4yMjlhLjc1Ljc1IDAgMCAxLTEuMjI5LS44NmwxLjE0OC0xLjY0YS43NS43NSAwIDAgMSAuMjE3LS4yMDYgNS4yNTEgNS4yNTEgMCAwIDEgOC41MDMgNS45NTVtLTQuNTYzLTIuNTMyYS43NS43NSAwIDAgMSAuMTg0IDEuMDQ1bC0zLjE1NSA0LjUwNWEuNzUuNzUgMCAxIDEtMS4yMjktLjg2bDMuMTU1LTQuNTA2YS43NS43NSAwIDAgMSAxLjA0NS0uMTg0Ii8+PC9zdmc+");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://./../ckeditor5-link/theme/linkimage.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-link/linkimage.css"],names:[],mappings:"AASE,+FACC,aAAc,CACd,iBACD,CCPF,MAEC,sCAAuC,CACvC,oEACD,CAME,+FAUC,+BAAqC,CACrC,k2BAA+3B,CAG/3B,uBAA2B,CAD3B,2BAA4B,CAD5B,oBAAqB,CAGrB,kBAAmB,CAdnB,UAAW,CAsBX,oGAAuG,CAFvG,eAAgB,CAbhB,sCAAwC,CADxC,oCAAsC,CAetC,mGAED",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-editor__editable {\r\n\t/* Linked image indicator */\r\n\t& figure.image > a,\r\n\t& a span.image-inline {\r\n\t\t&::after {\r\n\t\t\tdisplay: block;\r\n\t\t\tposition: absolute;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t/* Match the icon size with the upload indicator brought by the image upload feature. */\r\n\t--ck-link-image-indicator-icon-size: 20;\r\n\t--ck-link-image-indicator-icon-is-visible: clamp(0px, 100% - 50px, 1px);\r\n}\r\n\r\n.ck.ck-editor__editable {\r\n\t/* Linked image indicator */\r\n\t& figure.image > a,\r\n\t& a span.image-inline {\r\n\t\t&::after {\r\n\t\t\tcontent: "";\r\n\r\n\t\t\t/*\r\n\t\t\t * Smaller images should have the icon closer to the border.\r\n\t\t\t * Match the icon position with the upload indicator brought by the image upload feature.\r\n\t\t\t */\r\n\t\t\ttop: min(var(--ck-spacing-medium), 6%);\r\n\t\t\tright: min(var(--ck-spacing-medium), 6%);\r\n\r\n\t\t\tbackground-color: hsla(0, 0%, 0%, .4);\r\n\t\t\tbackground-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+");\r\n\t\t\tbackground-size: 14px;\r\n\t\t\tbackground-repeat: no-repeat;\r\n\t\t\tbackground-position: center;\r\n\t\t\tborder-radius: 100%;\r\n\r\n\t\t\t/*\r\n\t\t\t* Use CSS math to simulate container queries.\r\n\t\t\t* https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\r\n\t\t\t*/\r\n\t\t\toverflow: hidden;\r\n\t\t\twidth: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\r\n\t\t\theight: calc(var(--ck-link-image-indicator-icon-is-visible) * var(--ck-link-image-indicator-icon-size));\r\n\t\t}\r\n\t}\r\n}\r\n\r\n'],sourceRoot:""}]);const a=s},4892:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-style-panel .ck-style-panel__style-group>.ck-label{margin:var(--ck-spacing-large) 0}.ck.ck-style-panel .ck-style-panel__style-group:first-child>.ck-label{margin-top:0}","",{version:3,sources:["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-style/stylegroup.css"],names:[],mappings:"AAMC,0DACC,gCACD,CAGC,sEACC,YACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-style-panel .ck-style-panel__style-group {\r\n\t& > .ck-label {\r\n\t\tmargin: var(--ck-spacing-large) 0;\r\n\t}\r\n\r\n\t&:first-child {\r\n\t\t& > .ck-label {\r\n\t\t\tmargin-top: 0;\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},4962:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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{top:0}[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}.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;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}@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)}[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-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}.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://./../ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/labeledfield/labeledfieldview.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.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,CA9GA,2FCDE,qCD+GF,CA3GC,mEACC,UAwCD,CAtCC,gFACC,KAoCD,CArCA,0FAIE,MAAS,CAGT,6DAA+D,CAF/D,oBAgCF,CArCA,0FAWE,OAAU,CAEV,sEAA0E,CAD1E,uBAyBF,CArCA,gFAkBC,yDAA0D,CAG1D,eAAmB,CADnB,kBAAoB,CAOpB,cAAe,CAFf,eAAgB,CANhB,2CAA8C,CAH9C,mBAAoB,CAQpB,sBAAuB,CAKvB,+JAQD,CAHC,uCAlCD,gFAmCE,eAEF,CADC,CASD,mKACC,gCACD,CAGD,yDACC,mCAAoC,CACpC,kCAAmC,CAInC,kBAKD,CAHC,6FACC,gCACD,CAID,4OAEC,yCACD,CAIA,2XAGE,+HAYF,CAfA,2XAOE,wIAQF,CAfA,uWAaC,sBAAuB,CAFvB,iEAAkE,CAGlE,SACD,CAKA,8FACC,sBACD,CAGA,yIACC,SACD,CAGA,kMACC,8HACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-labeled-field-view {\r\n\t& > .ck.ck-labeled-field-view__input-wrapper {\r\n\t\tdisplay: flex;\r\n\t\tposition: relative;\r\n\t}\r\n\r\n\t& .ck.ck-label {\r\n\t\tdisplay: block;\r\n\t\tposition: absolute;\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n@import "../../../mixins/_rounded.css";\r\n\r\n:root {\r\n\t--ck-labeled-field-view-transition: .1s cubic-bezier(0, 0, 0.24, 0.95);\r\n\t--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-spacing-medium);\r\n\t--ck-labeled-field-label-default-position-x: var(--ck-spacing-medium);\r\n\t--ck-labeled-field-label-default-position-y: calc(0.6 * var(--ck-font-size-base));\r\n\t--ck-color-labeled-field-label-background: var(--ck-color-base-background);\r\n}\r\n\r\n.ck.ck-labeled-field-view {\r\n\t@mixin ck-rounded-corners;\r\n\r\n\t& > .ck.ck-labeled-field-view__input-wrapper {\r\n\t\twidth: 100%;\r\n\r\n\t\t& > .ck.ck-label {\r\n\t\t\ttop: 0px;\r\n\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\tleft: 0px;\r\n\t\t\t\ttransform-origin: 0 0;\r\n\t\t\t\t/* By default, display the label scaled down above the field. */\r\n\t\t\t\ttransform: translate(var(--ck-spacing-medium), -6px) scale(.75);\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tright: 0px;\r\n\t\t\t\ttransform-origin: 100% 0;\r\n\t\t\t\ttransform: translate(calc(-1 * var(--ck-spacing-medium)), -6px) scale(.75);\r\n\t\t\t}\r\n\r\n\t\t\tpointer-events: none;\r\n\r\n\t\t\tbackground: var(--ck-color-labeled-field-label-background);\r\n\t\t\tpadding: 0 calc(.5 * var(--ck-font-size-tiny));\r\n\t\t\tline-height: initial;\r\n\t\t\tfont-weight: normal;\r\n\r\n\t\t\t/* Prevent overflow when the label is longer than the input */\r\n\t\t\ttext-overflow: ellipsis;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\tmax-width: 100%;\r\n\r\n\t\t\ttransition:\r\n\t\t\t\ttransform var(--ck-labeled-field-view-transition),\r\n\t\t\t\tpadding var(--ck-labeled-field-view-transition),\r\n\t\t\t\tbackground var(--ck-labeled-field-view-transition);\r\n\r\n\t\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\t\ttransition: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-error {\r\n\t\t& > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\r\n\t\t\tcolor: var(--ck-color-base-error);\r\n\t\t}\r\n\r\n\t\t& .ck-input:not([readonly]) + .ck.ck-label {\r\n\t\t\tcolor: var(--ck-color-base-error);\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck-labeled-field-view__status {\r\n\t\tfont-size: var(--ck-font-size-small);\r\n\t\tmargin-top: var(--ck-spacing-small);\r\n\r\n\t\t/* Let the info wrap to the next line to avoid stretching the layout horizontally.\r\n\t\tThe status could be very long. */\r\n\t\twhite-space: normal;\r\n\r\n\t\t&.ck-labeled-field-view__status_error {\r\n\t\t\tcolor: var(--ck-color-base-error);\r\n\t\t}\r\n\t}\r\n\r\n\t/* Disabled fields and fields that have no focus should fade out. */\r\n\t&.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,\r\n\t&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {\r\n\t\tcolor: var(--ck-color-input-disabled-text);\r\n\t}\r\n\r\n\t/* Fields that are disabled or not focused and without a placeholder should have full-sized labels. */\r\n\t/* stylelint-disable-next-line no-descending-specificity */\r\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,\r\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 {\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\ttransform: translate(var(--ck-labeled-field-label-default-position-x), var(--ck-labeled-field-label-default-position-y)) scale(1);\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\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);\r\n\t\t}\r\n\r\n\t\t/* Compensate for the default translate position. */\r\n\t\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width));\r\n\r\n\t\tbackground: transparent;\r\n\t\tpadding: 0;\r\n\t}\r\n\r\n\t/*------ DropdownView integration ----------------------------------------------------------------------------------- */\r\n\r\n\t/* Make sure dropdown\' background color in any of dropdown\'s state does not collide with labeled field. */\r\n\t& > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck.ck-button {\r\n\t\tbackground: transparent;\r\n\t}\r\n\r\n\t/* When the dropdown is "empty", the labeled field label replaces its label. */\r\n\t&.ck-labeled-field-view_empty > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck-button > .ck-button__label {\r\n\t\topacity: 0;\r\n\t}\r\n\r\n\t/* Make sure the label of the empty, unfocused input does not cover the dropdown arrow. */\r\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 {\r\n\t\tmax-width: calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard));\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},5024:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-admonition/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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck-content blockquote {\r\n\t/* See #12 */\r\n\toverflow: hidden;\r\n\r\n\t/* https://github.com/ckeditor/ckeditor5-block-quote/issues/15 */\r\n\tpadding-right: 1.5em;\r\n\tpadding-left: 1.5em;\r\n\r\n\tmargin-left: 0;\r\n\tmargin-right: 0;\r\n\tfont-style: italic;\r\n\tborder-left: solid 5px hsl(0, 0%, 80%);\r\n}\r\n\r\n.ck-content[dir="rtl"] blockquote {\r\n\tborder-left: 0;\r\n\tborder-right: solid 5px hsl(0, 0%, 80%);\r\n}\r\n'],sourceRoot:""}]);const a=s},5032:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-table/theme/inserttable.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck .ck-insert-table-dropdown__grid {\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n\tflex-wrap: wrap;\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-insert-table-dropdown-padding: 10px;\r\n\t--ck-insert-table-dropdown-box-height: 11px;\r\n\t--ck-insert-table-dropdown-box-width: 12px;\r\n\t--ck-insert-table-dropdown-box-margin: 1px;\r\n}\r\n\r\n.ck .ck-insert-table-dropdown__grid {\r\n\t/* The width of a container should match 10 items in a row so there will be a 10x10 grid. */\r\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);\r\n\tpadding: var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;\r\n}\r\n\r\n.ck .ck-insert-table-dropdown__label,\r\n.ck[dir=rtl] .ck-insert-table-dropdown__label {\r\n\ttext-align: center;\r\n}\r\n\r\n.ck .ck-insert-table-dropdown-grid-box {\r\n\tmin-width: var(--ck-insert-table-dropdown-box-width);\r\n\tmin-height: var(--ck-insert-table-dropdown-box-height);\r\n\tmargin: var(--ck-insert-table-dropdown-box-margin);\r\n\tborder: 1px solid var(--ck-color-base-border);\r\n\tborder-radius: 1px;\r\n\toutline: none;\r\n\ttransition: none;\r\n\r\n\t@media (prefers-reduced-motion: reduce) {\r\n\t\ttransition: none;\r\n\t}\r\n\r\n\t&:focus {\r\n\t\tbox-shadow: none;\r\n\t}\r\n\r\n\t&.ck-on {\r\n\t\tborder-color: var(--ck-color-focus-border);\r\n\t\tbackground: var(--ck-color-focus-outer-shadow);\r\n\t}\r\n}\r\n\r\n"],sourceRoot:""}]);const a=s},5199:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{background:var(--ck-color-list-background);list-style-type:none;padding:var(--ck-spacing-small) 0}.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://./../ckeditor5-ui/theme/components/list/list.css","webpack://./../ckeditor5-ui/theme/mixins/_unselectable.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/list/list.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.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,YCCC,eDOD,CARA,+DCKE,qCDGF,CARA,YAIC,0CAA2C,CAD3C,oBAAqB,CAIrB,iCACD,CAEA,kBACC,cAAe,CAGf,cA4DD,CA1DC,uDAIC,eAAgB,CAFhB,gBAAiB,CADjB,iEAAoE,CAEpE,UAwCD,CA3CA,iEAOE,eAoCF,CA3CA,iEAWE,gBAgCF,CA7BC,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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../mixins/_unselectable.css";\r\n\r\n.ck.ck-list {\r\n\t@mixin ck-unselectable;\r\n\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n\r\n\t& .ck-list__item,\r\n\t& .ck-list__separator {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t/* Make sure that whatever child of the list item gets focus, it remains on the\r\n\ttop. Thanks to that, styles like box-shadow, outline, etc. are not masked by\r\n\tadjacent list items. */\r\n\t& .ck-list__item > *:focus {\r\n\t\tposition: relative;\r\n\t\tz-index: var(--ck-z-default);\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Makes element unselectable.\r\n */\r\n@define-mixin ck-unselectable {\r\n\t-moz-user-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_disabled.css";\r\n@import "../../../mixins/_rounded.css";\r\n@import "../../../mixins/_shadow.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-list {\r\n\t@mixin ck-rounded-corners;\r\n\r\n\tlist-style-type: none;\r\n\tbackground: var(--ck-color-list-background);\r\n\r\n\t/* A spacing at the beginning and end of the list */\r\n\tpadding: var(--ck-spacing-small) 0;\r\n}\r\n\r\n.ck.ck-list__item {\r\n\tcursor: default;\r\n\r\n\t/* Almost as wide as menu bar items. */\r\n\tmin-width: 15em;\r\n\r\n\t& > .ck-button:not(.ck-list-item-button) {\r\n\t\tpadding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard));\r\n\t\tmin-height: unset;\r\n\t\twidth: 100%;\r\n\t\tborder-radius: 0;\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\ttext-align: left;\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\ttext-align: right;\r\n\t\t}\r\n\r\n\t\t& .ck-button__label {\r\n\t\t\t/* https://github.com/ckeditor/ckeditor5-heading/issues/63 */\r\n\t\t\tline-height: calc(var(--ck-line-height-base) * var(--ck-font-size-base));\r\n\t\t}\r\n\r\n\t\t&:active {\r\n\t\t\tbox-shadow: none;\r\n\t\t}\r\n\r\n\t\t&.ck-on {\r\n\t\t\tbackground: var(--ck-color-list-button-on-background);\r\n\t\t\tcolor: var(--ck-color-list-button-on-text);\r\n\r\n\t\t\t&:active {\r\n\t\t\t\tbox-shadow: none;\r\n\t\t\t}\r\n\r\n\t\t\t&:hover:not(.ck-disabled) {\r\n\t\t\t\tbackground: var(--ck-color-list-button-on-background-focus);\r\n\t\t\t}\r\n\r\n\t\t\t&:focus:not(.ck-disabled) {\r\n\t\t\t\tborder-color: var(--ck-color-base-background);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&:hover:not(.ck-disabled) {\r\n\t\t\tbackground: var(--ck-color-list-button-hover-background);\r\n\t\t}\r\n\t}\r\n\r\n\t/* It\'s unnecessary to change the background/text of a switch toggle; it has different ways\r\n\tof conveying its state (like the switcher) */\r\n\t& > .ck-button.ck-switchbutton {\r\n\t\t&.ck-on {\r\n\t\t\tbackground: var(--ck-color-list-background);\r\n\t\t\tcolor: inherit;\r\n\r\n\t\t\t&:hover:not(.ck-disabled) {\r\n\t\t\t\tbackground: var(--ck-color-list-button-hover-background);\r\n\t\t\t\tcolor: inherit;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ck-list .ck-list__group {\r\n\tpadding-top: var(--ck-spacing-medium);\r\n\r\n\t/* Lists come with an inner vertical padding. Don\'t duplicate it. */\r\n\t&:first-child {\r\n\t\tpadding-top: 0;\r\n\t}\r\n\r\n\t/* The group should have a border when it\'s not the first item. */\r\n\t*:not(.ck-hidden) ~ & {\r\n\t\tborder-top: 1px solid var(--ck-color-base-border);\r\n\t}\r\n\r\n\t& > .ck-label {\r\n\t\tfont-size: 11px;\r\n\t\tfont-weight: bold;\r\n\t\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large) 0;\r\n\t}\r\n}\r\n\r\n.ck.ck-list__separator {\r\n\theight: 1px;\r\n\twidth: 100%;\r\n\tbackground: var(--ck-color-base-border);\r\n\r\n\t/* Give the separator some air */\r\n\tmargin: var(--ck-spacing-small) 0;\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},5247:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-image/theme/imagecaption.css","webpack://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\r\n\r\n:root {\r\n\t--ck-color-image-caption-background: hsl(0, 0%, 97%);\r\n\t--ck-color-image-caption-text: hsl(0, 0%, 20%);\r\n\t--ck-color-image-caption-highlighted-background: hsl(52deg 100% 50%);\r\n}\r\n\r\n/* Content styles */\r\n.ck-content .image > figcaption {\r\n\tdisplay: table-caption;\r\n\tcaption-side: bottom;\r\n\tword-break: break-word;\r\n\tcolor: var(--ck-color-image-caption-text);\r\n\tbackground-color: var(--ck-color-image-caption-background);\r\n\tpadding: .6em;\r\n\tfont-size: .75em;\r\n\toutline-offset: -1px;\r\n\r\n\t/* Improve placeholder rendering in high-constrast mode (https://github.com/ckeditor/ckeditor5/issues/14907). */\r\n\t@media (forced-colors: active) {\r\n\t\tbackground-color: unset;\r\n\t\tcolor: unset;\r\n\t}\r\n}\r\n\r\n/* Editing styles */\r\n.ck.ck-editor__editable .image > figcaption.image__caption_highlighted {\r\n\t@mixin ck-media-default-colors {\r\n\t\tanimation: ck-image-caption-highlight .6s ease-out;\r\n\t}\r\n\r\n\t@media (prefers-reduced-motion: reduce) {\r\n\t\tanimation: none;\r\n\t}\r\n}\r\n\r\n@keyframes ck-image-caption-highlight {\r\n\t0% {\r\n\t\tbackground-color: var(--ck-color-image-caption-highlighted-background);\r\n\t}\r\n\r\n\t100% {\r\n\t\tbackground-color: var(--ck-color-image-caption-background);\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-forced-colors {\r\n\t@media (forced-colors: active) {\r\n\t\t& {\r\n\t\t\t@mixin-content;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@define-mixin ck-media-default-colors {\r\n\t@media (forced-colors: none) {\r\n\t\t& {\r\n\t\t\t@mixin-content;\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},5380:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/panel/fakepanel.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/fakepanel.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck .ck-fake-panel {\r\n\tposition: absolute;\r\n\r\n\t/* Fake panels should be placed under main balloon content. */\r\n\tz-index: calc(var(--ck-z-panel) - 1);\r\n}\r\n\r\n.ck .ck-fake-panel div {\r\n\tposition: absolute;\r\n}\r\n\r\n.ck .ck-fake-panel div:nth-child( 1 ) {\r\n\tz-index: 2;\r\n}\r\n\r\n.ck .ck-fake-panel div:nth-child( 2 ) {\r\n\tz-index: 1;\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_shadow.css";\r\n\r\n:root {\r\n\t--ck-balloon-fake-panel-offset-horizontal: 6px;\r\n\t--ck-balloon-fake-panel-offset-vertical: 6px;\r\n}\r\n\r\n/* Let\'s use `.ck-balloon-panel` appearance. See: balloonpanel.css. */\r\n.ck .ck-fake-panel div {\r\n\t@mixin ck-drop-shadow;\r\n\r\n\tmin-height: 15px;\r\n\r\n\tbackground: var(--ck-color-panel-background);\r\n\tborder: 1px solid var(--ck-color-panel-border);\r\n\tborder-radius: var(--ck-border-radius);\r\n\r\n\twidth: 100%;\r\n\theight: 100%;\r\n}\r\n\r\n.ck .ck-fake-panel div:nth-child( 1 ) {\r\n\tmargin-left: var(--ck-balloon-fake-panel-offset-horizontal);\r\n\tmargin-top: var(--ck-balloon-fake-panel-offset-vertical);\r\n}\r\n\r\n.ck .ck-fake-panel div:nth-child( 2 ) {\r\n\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 2);\r\n\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 2);\r\n}\r\n.ck .ck-fake-panel div:nth-child( 3 ) {\r\n\tmargin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 3);\r\n\tmargin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 3);\r\n}\r\n\r\n/* If balloon is positioned above element, we need to move fake panel to the top. */\r\n.ck .ck-balloon-panel_arrow_s + .ck-fake-panel,\r\n.ck .ck-balloon-panel_arrow_se + .ck-fake-panel,\r\n.ck .ck-balloon-panel_arrow_sw + .ck-fake-panel {\r\n\t--ck-balloon-fake-panel-offset-vertical: -6px;\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n"],sourceRoot:""}]);const a=s},5506:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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-radius:0}.ck-rounded-corners .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview,.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border:1px solid var(--ck-color-input-border);height:20px;width:20px}.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://./../ckeditor5-table/theme/colorinput.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-table/colorinput.css","webpack://./../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,CC1BF,+CAGE,4BAA6B,CAD7B,yBAcF,CAhBA,+CAQE,2BAA4B,CAD5B,wBASF,CAHC,2CACC,SACD,CAIA,wEACC,SA0CD,CA3CA,kFAKE,2BAA4B,CAD5B,wBAuCF,CApCE,8FACC,iCACD,CATF,kFAcE,4BAA6B,CAD7B,yBA8BF,CA3BE,8FACC,kCACD,CAGD,oFACC,oDACD,CAEA,4GC1CF,eD2DE,CAjBA,+PCtCD,qCDuDC,CAjBA,4GAKC,6CAA8C,CAD9C,WAAY,CADZ,UAcD,CAVC,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,CATD,8DAYE,yBAeF,CA3BA,8DAgBE,wBAWF,CARC,gEACC,uCAMD,CAPA,0EAKE,sCAAuC,CADvC,cAGF",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-input-color {\r\n\twidth: 100%;\r\n\tdisplay: flex;\r\n\tflex-direction: row-reverse;\r\n\r\n\t& > input.ck.ck-input-text {\r\n\t\tmin-width: auto;\r\n\t\tflex-grow: 1;\r\n\t}\r\n\r\n\t& > div.ck.ck-dropdown {\r\n\t\tmin-width: auto;\r\n\r\n\t\t/* This dropdown has no arrow but a color preview instead. */\r\n\t\t& > .ck-input-color__button .ck-dropdown__arrow {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck.ck-input-color__button {\r\n\t\t/* Resolving issue with misaligned buttons on Safari (see #10589) */\r\n\t\tdisplay: flex;\r\n\r\n\t\t& .ck.ck-input-color__button__preview {\r\n\t\t\tposition: relative;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t& > .ck.ck-input-color__button__preview__no-color-indicator {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tdisplay: block;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n@import "../mixins/_rounded.css";\r\n\r\n.ck.ck-input-color {\r\n\t& > .ck.ck-input-text {\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\tborder-top-right-radius: 0;\r\n\t\t\tborder-bottom-right-radius: 0;\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\tborder-top-left-radius: 0;\r\n\t\t\tborder-bottom-left-radius: 0;\r\n\t\t}\r\n\r\n\t\t/* Make sure the focused input is always on top of the dropdown button so its\r\n\t\t outline and border are never cropped (also when the input is read-only). */\r\n\t\t&:focus {\r\n\t\t\tz-index: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t& > .ck.ck-dropdown {\r\n\t\t& > .ck.ck-button.ck-input-color__button {\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\tborder-top-left-radius: 0;\r\n\t\t\t\tborder-bottom-left-radius: 0;\r\n\r\n\t\t\t\t&:not(:focus) {\r\n\t\t\t\t\tborder-left: 1px solid transparent;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tborder-top-right-radius: 0;\r\n\t\t\t\tborder-bottom-right-radius: 0;\r\n\r\n\t\t\t\t&:not(:focus) {\r\n\t\t\t\t\tborder-right: 1px solid transparent;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.ck-disabled {\r\n\t\t\t\tbackground: var(--ck-color-input-disabled-background);\r\n\t\t\t}\r\n\r\n\t\t\t& > .ck.ck-input-color__button__preview {\r\n\t\t\t\t@mixin ck-rounded-corners;\r\n\r\n\t\t\t\twidth: 20px;\r\n\t\t\t\theight: 20px;\r\n\t\t\t\tborder: 1px solid var(--ck-color-input-border);\r\n\r\n\t\t\t\t& > .ck.ck-input-color__button__preview__no-color-indicator {\r\n\t\t\t\t\ttop: -30%;\r\n\t\t\t\t\tleft: 50%;\r\n\t\t\t\t\theight: 150%;\r\n\t\t\t\t\twidth: 8%;\r\n\t\t\t\t\tbackground: hsl(0, 100%, 50%);\r\n\t\t\t\t\tborder-radius: 2px;\r\n\t\t\t\t\ttransform: rotate(45deg);\r\n\t\t\t\t\ttransform-origin: 50%;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck.ck-input-color__remove-color {\r\n\t\twidth: 100%;\r\n\t\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\r\n\r\n\t\tborder-bottom-left-radius: 0;\r\n\t\tborder-bottom-right-radius: 0;\r\n\r\n\t\t&:not(:focus) {\r\n\t\t\tborder-bottom: 1px solid var(--ck-color-input-border);\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\tborder-top-right-radius: 0;\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\tborder-top-left-radius: 0;\r\n\t\t}\r\n\r\n\t\t& .ck.ck-icon {\r\n\t\t\tmargin-right: var(--ck-spacing-standard);\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tmargin-right: 0;\r\n\t\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},5562:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-table/theme/tableproperties.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-table-properties-form {\r\n\t& .ck-form__row {\r\n\t\t&.ck-table-properties-form__alignment-row {\r\n\t\t\tflex-wrap: wrap;\r\n\t\t\tflex-basis: 0;\r\n\t\t\talign-content: baseline;\r\n\r\n\t\t\t& .ck.ck-toolbar .ck-toolbar__items {\r\n\t\t\t\tflex-wrap: nowrap;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-table-properties-form {\r\n\twidth: 320px;\r\n\r\n\t& .ck-form__row {\r\n\t\t&.ck-table-properties-form__alignment-row {\r\n\t\t\talign-self: flex-end;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\t& .ck.ck-toolbar {\r\n\t\t\t\tbackground: none;\r\n\r\n\t\t\t\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\r\n\t\t\t\tmargin-top: var(--ck-spacing-standard);\r\n\r\n\t\t\t\t& .ck-toolbar__items > * {\r\n\t\t\t\t\twidth: 40px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},5727:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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{border-radius:0}.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{background:var(--ck-color-base-background);border:1px solid var(--ck-color-dropdown-panel-border);box-shadow:var(--ck-drop-shadow),0 0;max-height:200px;min-width:auto;overflow-y:auto}.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://./../ckeditor5-ui/theme/components/autocomplete/autocomplete.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/autocomplete/autocomplete.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./../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,wCCEA,eDuBA,CAzBA,uHCMC,qCDmBD,CAzBA,wCAMC,0CAA2C,CAC3C,sDAAuD,CEPxD,oCAA8B,CFI7B,gBAAiB,CAIjB,cAAe,CAHf,eAoBD,CAfC,6DACC,2BAA4B,CAC5B,4BAA6B,CAG7B,kBACD,CAEA,6DACC,wBAAyB,CACzB,yBAA0B,CAG1B,eACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-autocomplete {\r\n\tposition: relative;\r\n\r\n\t& > .ck-search__results {\r\n\t\tposition: absolute;\r\n\t\tz-index: var(--ck-z-panel);\r\n\r\n\t\t&.ck-search__results_n {\r\n\t\t\tbottom: 100%;\r\n\t\t}\r\n\r\n\t\t&.ck-search__results_s {\r\n\t\t\ttop: 100%;\r\n\t\t\tbottom: auto;\r\n\t\t}\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-theme-lark/theme/mixins/_rounded.css";\r\n@import "@ckeditor/ckeditor5-theme-lark/theme/mixins/_shadow.css";\r\n\r\n.ck.ck-autocomplete {\r\n\t& > .ck-search__results {\r\n\t\t@mixin ck-rounded-corners;\r\n\t\t@mixin ck-drop-shadow;\r\n\r\n\t\tmax-height: 200px;\r\n\t\toverflow-y: auto;\r\n\t\tbackground: var(--ck-color-base-background);\r\n\t\tborder: 1px solid var(--ck-color-dropdown-panel-border);\r\n\t\tmin-width: auto;\r\n\r\n\t\t&.ck-search__results_n {\r\n\t\t\tborder-bottom-left-radius: 0;\r\n\t\t\tborder-bottom-right-radius: 0;\r\n\r\n\t\t\t/* Prevent duplicated borders between the input and the results pane. */\r\n\t\t\tmargin-bottom: -1px;\r\n\t\t}\r\n\r\n\t\t&.ck-search__results_s {\r\n\t\t\tborder-top-left-radius: 0;\r\n\t\t\tborder-top-right-radius: 0;\r\n\r\n\t\t\t/* Prevent duplicated borders between the input and the results pane. */\r\n\t\t\tmargin-top: -1px;\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n"],sourceRoot:""}]);const a=s},6269:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-heading/theme/heading.css","webpack://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-heading_heading1 .ck-button__label {\r\n\tfont-size: 20px;\r\n}\r\n\r\n.ck.ck-heading_heading2 .ck-button__label {\r\n\tfont-size: 17px;\r\n}\r\n\r\n.ck.ck-heading_heading3 .ck-button__label {\r\n\tfont-size: 14px;\r\n}\r\n\r\n.ck[class*="ck-heading_heading"] {\r\n\tfont-weight: bold;\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/* Resize dropdown's button label. */\r\n.ck.ck-dropdown.ck-heading-dropdown {\r\n\t& .ck-dropdown__button .ck-button__label {\r\n\t\twidth: 8em;\r\n\t}\r\n\r\n\t& .ck-dropdown__panel .ck-list__item {\r\n\t\tmin-width: 18em;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},6309:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/colorselector/colorselector.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorselector/colorselector.css"],names:[],mappings:"AAUE,oLAGC,kBAAmB,CADnB,YAMD,CARA,wMAME,0BAEF,CAKA,iFACC,YAAa,CACb,kBAAmB,CACnB,4BAMD,CAJC,oMAEC,MACD,CCrBD,oLAEC,UACD,CAEA,0FAEC,2BAA4B,CAC5B,4BAA6B,CAF7B,qEAiBD,CAbC,sGACC,gDACD,CAEA,gHAEE,uCAMF,CARA,gHAME,sCAEF,CAGD,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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-color-selector {\r\n\t/* View fragment with color grids. */\r\n\t& .ck-color-grids-fragment {\r\n\t\t& .ck-button.ck-color-selector__remove-color,\r\n\t\t& .ck-button.ck-color-selector__color-picker {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tjustify-content: flex-start;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/* View fragment with a color picker. */\r\n\t& .ck-color-picker-fragment {\r\n\t\t& .ck.ck-color-selector_action-bar {\r\n\t\t\tdisplay: flex;\r\n\t\t\tflex-direction: row;\r\n\t\t\tjustify-content: space-around;\r\n\r\n\t\t\t& .ck-button-save,\r\n\t\t\t& .ck-button-cancel {\r\n\t\t\t\tflex: 1\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n','/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-color-selector {\r\n\t/* View fragment with color grids. */\r\n\t& .ck-color-grids-fragment {\r\n\t\t& .ck-button.ck-color-selector__remove-color,\r\n\t\t& .ck-button.ck-color-selector__color-picker {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\r\n\t\t& .ck-button.ck-color-selector__color-picker {\r\n\t\t\tpadding: calc(var(--ck-spacing-standard) / 2) var(--ck-spacing-standard);\r\n\t\t\tborder-bottom-left-radius: 0;\r\n\t\t\tborder-bottom-right-radius: 0;\r\n\r\n\t\t\t&:not(:focus) {\r\n\t\t\t\tborder-top: 1px solid var(--ck-color-base-border);\r\n\t\t\t}\r\n\r\n\t\t\t& .ck.ck-icon {\r\n\t\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\t\tmargin-right: var(--ck-spacing-standard);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t& label.ck.ck-color-grid__label {\r\n\t\t\tfont-weight: unset;\r\n\t\t}\r\n\t}\r\n\r\n\t/* View fragment with a color picker. */\r\n\t& .ck-color-picker-fragment {\r\n\t\t& .ck.ck-color-picker {\r\n\t\t\tpadding: 8px;\r\n\r\n\t\t\t& .hex-color-picker {\r\n\t\t\t\theight: 100px;\r\n\t\t\t\tmin-width: 180px;\r\n\r\n\t\t\t\t&::part(saturation) {\r\n\t\t\t\t\tborder-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&::part(hue) {\r\n\t\t\t\t\tborder-radius: 0 0 var(--ck-border-radius) var(--ck-border-radius);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&::part(saturation-pointer),\r\n\t\t\t\t&::part(hue-pointer) {\r\n\t\t\t\t\twidth: 15px;\r\n\t\t\t\t\theight: 15px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t& .ck.ck-color-selector_action-bar {\r\n\t\t\tpadding: 0 8px 8px;\r\n\t\t}\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},6386:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-image-style-spacing: 1.5em;\r\n\t--ck-inline-image-style-spacing: calc(var(--ck-image-style-spacing) / 2);\r\n}\r\n\r\n.ck-content {\r\n\t/* See: https://github.com/ckeditor/ckeditor5/issues/16317 */\r\n\t& .image {\r\n\t\t/* Provides a minimal side margin for the left and right aligned images, so that the user has a visual feedback\r\n\t\tconfirming successful application of the style if image width exceeds the editor's size.\r\n\t\tSee https://github.com/ckeditor/ckeditor5/issues/9342 */\r\n\t\t&.image-style-block-align-left,\r\n\t\t&.image-style-block-align-right {\r\n\t\t\tmax-width: calc(100% - var(--ck-image-style-spacing));\r\n\t\t}\r\n\r\n\t\t/* Allows displaying multiple floating images in the same line.\r\n\t\tSee https://github.com/ckeditor/ckeditor5/issues/9183#issuecomment-804988132 */\r\n\t\t&.image-style-align-left,\r\n\t\t&.image-style-align-right {\r\n\t\t\tclear: none;\r\n\t\t}\r\n\r\n\t\t&.image-style-side {\r\n\t\t\tfloat: right;\r\n\t\t\tmargin-left: var(--ck-image-style-spacing);\r\n\t\t\tmax-width: 50%;\r\n\t\t}\r\n\r\n\t\t&.image-style-align-left {\r\n\t\t\tfloat: left;\r\n\t\t\tmargin-right: var(--ck-image-style-spacing);\r\n\t\t}\r\n\r\n\t\t&.image-style-align-right {\r\n\t\t\tfloat: right;\r\n\t\t\tmargin-left: var(--ck-image-style-spacing);\r\n\t\t}\r\n\r\n\t\t&.image-style-block-align-right {\r\n\t\t\tmargin-right: 0;\r\n\t\t\tmargin-left: auto;\r\n\t\t}\r\n\r\n\t\t&.image-style-block-align-left {\r\n\t\t\tmargin-left: 0;\r\n\t\t\tmargin-right: auto;\r\n\t\t}\r\n\t}\r\n\r\n\t& .image-style-align-center {\r\n\t\tmargin-left: auto;\r\n\t\tmargin-right: auto;\r\n\t}\r\n\r\n\t& .image-style-align-left {\r\n\t\tfloat: left;\r\n\t\tmargin-right: var(--ck-image-style-spacing);\r\n\t}\r\n\r\n\t& .image-style-align-right {\r\n\t\tfloat: right;\r\n\t\tmargin-left: var(--ck-image-style-spacing);\r\n\t}\r\n\r\n\t/* Simulates margin collapsing with the preceding paragraph, which does not work for the floating elements. */\r\n\t& p + .image.image-style-align-left,\r\n\t& p + .image.image-style-align-right,\r\n\t& p + .image.image-style-side {\r\n\t\tmargin-top: 0;\r\n\t}\r\n\r\n\t& .image-inline {\r\n\t\t&.image-style-align-left,\r\n\t\t&.image-style-align-right {\r\n\t\t\tmargin-top: var(--ck-inline-image-style-spacing);\r\n\t\t\tmargin-bottom: var(--ck-inline-image-style-spacing);\r\n\t\t}\r\n\r\n\t\t&.image-style-align-left {\r\n\t\t\tmargin-right: var(--ck-inline-image-style-spacing);\r\n\t\t}\r\n\r\n\t\t&.image-style-align-right {\r\n\t\t\tmargin-left: var(--ck-inline-image-style-spacing);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ck.ck-splitbutton {\r\n\t/* The button should display as a regular drop-down if the action button\r\n\tis forced to fire the same action as the arrow button. */\r\n\t&.ck-splitbutton_flatten {\r\n\t\t&:hover,\r\n\t\t&.ck-splitbutton_open {\r\n\t\t\t& > .ck-splitbutton__action:not(.ck-disabled),\r\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled),\r\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\r\n\t\t\t\tbackground-color: var(--ck-color-button-on-background);\r\n\r\n\t\t\t\t&::after {\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.ck-splitbutton_open:hover {\r\n\t\t\t& > .ck-splitbutton__action:not(.ck-disabled),\r\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled),\r\n\t\t\t& > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover) {\r\n\t\t\t\tbackground-color: var(--ck-color-button-on-hover-background);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},6426:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck-content .page-break {\r\n\tposition: relative;\r\n\tclear: both;\r\n\tpadding: 5px 0;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tjustify-content: center;\r\n\r\n\t&::after {\r\n\t\tcontent: '';\r\n\t\tposition: absolute;\r\n\t\tborder-bottom: 2px dashed hsl(0, 0%, 77%);\r\n\t\twidth: 100%;\r\n\t}\r\n}\r\n\r\n.ck-content .page-break__label {\r\n\tposition: relative;\r\n\tz-index: 1;\r\n\tpadding: .3em .6em;\r\n\tdisplay: block;\r\n\ttext-transform: uppercase;\r\n\tborder: 1px solid hsl(0, 0%, 77%);\r\n\tborder-radius: 2px;\r\n\tfont-family: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\r\n\tfont-size: 0.75em;\r\n\tfont-weight: bold;\r\n\tcolor: hsl(0, 0%, 20%);\r\n\tbackground: hsl(0, 0%, 100%);\r\n\tbox-shadow: 2px 2px 1px hsla(0, 0%, 0%, 0.15);\r\n\r\n\t/* Disable the possibility to select the label text by the user. */\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none;\r\n}\r\n\r\n/* Do not show the page break element inside the print preview window. */\r\n@media print {\r\n\t.ck-content .page-break {\r\n\t\tpadding: 0;\r\n\r\n\t\t&::after {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\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.\r\n\t * Removing margin-bottom from the block element fixes that issue and the margin is not being moved to the next blank page.\r\n\t *\r\n\t * Keep this in sync with the pagination plugins.\r\n\t */\r\n\t.ck-content *:has(+ .page-break) {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},6610:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck-content pre{border:1px solid #c4c4c4;border-radius:2px;direction:ltr;font-style:normal;min-width:200px;padding:1em;tab-size:4;text-align:left;white-space:pre-wrap}.ck-content pre code{background:unset;border-radius:0;padding:0}.ck-content pre:not(.hljs){background:hsla(0,0%,78%,.3);color:#353535}.ck.ck-editor__editable pre{position:relative}.ck.ck-editor__editable pre[data-language]:after{content:attr(data-language);position:absolute}:root{--ck-color-code-block-label-background:#757575}.ck.ck-editor__editable pre[data-language]:after{background:var(--ck-color-code-block-label-background);color:#fff;font-family:var(--ck-font-face);font-size:10px;line-height:16px;padding:var(--ck-spacing-tiny) var(--ck-spacing-medium);right:10px;top:-1px;white-space:nowrap}.ck.ck-code-block-dropdown .ck-dropdown__panel{max-height:250px;overflow-x:hidden;overflow-y:auto}","",{version:3,sources:["webpack://./../ckeditor5-code-block/theme/codeblock.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-code-block/codeblock.css"],names:[],mappings:"AAKA,gBAEC,wBAAiC,CACjC,iBAAkB,CAIlB,aAAc,CAMd,iBAAkB,CAGlB,eAAgB,CAfhB,WAAY,CAQZ,UAAW,CAHX,eAAgB,CAIhB,oBAaD,CALC,qBACC,gBAAiB,CAEjB,eAAgB,CADhB,SAED,CAGD,2BAEC,4BAAiC,CADjC,aAED,CAEA,4BACC,iBAMD,CAJC,iDACC,2BAA4B,CAC5B,iBACD,CCpCD,MACC,8CACD,CAEA,iDAGC,sDAAuD,CAMvD,UAAuB,CAHvB,+BAAgC,CADhC,cAAe,CAEf,gBAAiB,CACjB,uDAAwD,CANxD,UAAW,CADX,QAAS,CAST,kBACD,CAEA,+CAEC,gBAAiB,CAEjB,iBAAkB,CADlB,eAED",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck-content pre {\r\n\tpadding: 1em;\r\n\tborder: 1px solid hsl(0, 0%, 77%);\r\n\tborder-radius: 2px;\r\n\r\n\t/* Code block are language direction–agnostic. */\r\n\ttext-align: left;\r\n\tdirection: ltr;\r\n\r\n\ttab-size: 4;\r\n\twhite-space: pre-wrap;\r\n\r\n\t/* Don't inherit the style, e.g. when in a block quote. */\r\n\tfont-style: normal;\r\n\r\n\t/* Don't let the code be squashed e.g. when in a table cell. */\r\n\tmin-width: 200px;\r\n\r\n\t& code {\r\n\t\tbackground: unset;\r\n\t\tpadding: 0;\r\n\t\tborder-radius: 0;\r\n\t}\r\n}\r\n\r\n.ck-content pre:not(.hljs) {\r\n\tcolor: hsl(0, 0%, 20.8%);\r\n\tbackground: hsla(0, 0%, 78%, 0.3);\r\n}\r\n\r\n.ck.ck-editor__editable pre {\r\n\tposition: relative;\r\n\r\n\t&[data-language]::after {\r\n\t\tcontent: attr(data-language);\r\n\t\tposition: absolute;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-color-code-block-label-background: hsl(0, 0%, 46%);\r\n}\r\n\r\n.ck.ck-editor__editable pre[data-language]::after {\r\n\ttop: -1px;\r\n\tright: 10px;\r\n\tbackground: var(--ck-color-code-block-label-background);\r\n\r\n\tfont-size: 10px;\r\n\tfont-family: var(--ck-font-face);\r\n\tline-height: 16px;\r\n\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-medium);\r\n\tcolor: hsl(0, 0%, 100%);\r\n\twhite-space: nowrap;\r\n}\r\n\r\n.ck.ck-code-block-dropdown .ck-dropdown__panel {\r\n\t/* There could be dozens of languages available. Use scroll to prevent a 10e6px dropdown. */\r\n\tmax-height: 250px;\r\n\toverflow-y: auto;\r\n\toverflow-x: hidden;\r\n}\r\n"],sourceRoot:""}]);const a=s},6903:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck-content ol {\r\n\tlist-style-type: decimal;\r\n\r\n\t& ol {\r\n\t\tlist-style-type: lower-latin;\r\n\r\n\t\t& ol {\r\n\t\t\tlist-style-type: lower-roman;\r\n\r\n\t\t\t& ol {\r\n\t\t\t\tlist-style-type: upper-latin;\r\n\r\n\t\t\t\t& ol {\r\n\t\t\t\t\tlist-style-type: upper-roman;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ck-content ul {\r\n\tlist-style-type: disc;\r\n\r\n\t& ul {\r\n\t\tlist-style-type: circle;\r\n\r\n\t\t& ul {\r\n\t\t\tlist-style-type: square;\r\n\r\n\t\t\t& ul {\r\n\t\t\t\tlist-style-type: square;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},6931:t=>{"use strict";t.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]}},7141:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-list/theme/liststyles.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-list-styles-list {\r\n\tdisplay: grid;\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-list-style-button-size: 44px;\r\n}\r\n\r\n.ck.ck-list-styles-list {\r\n\tgrid-template-columns: repeat( 3, auto );\r\n\trow-gap: var(--ck-spacing-medium);\r\n\tcolumn-gap: var(--ck-spacing-medium);\r\n\tpadding: var(--ck-spacing-large);\r\n\r\n\t& .ck-button {\r\n\t\t/* Make the button look like a thumbnail (the icon "takes it all"). */\r\n\t\twidth: var(--ck-list-style-button-size);\r\n\t\theight: var(--ck-list-style-button-size);\r\n\t\tpadding: 0;\r\n\r\n\t\t/*\r\n\t\t * Buttons are aligned by the grid so disable default button margins to not collide with the\r\n\t\t * gaps in the grid.\r\n\t\t */\r\n\t\tmargin: 0;\r\n\r\n\t\t/*\r\n\t\t * Make sure the button border (which is displayed on focus, BTW) does not steal pixels\r\n\t\t * from the button dimensions and, as a result, decrease the size of the icon\r\n\t\t * (which becomes blurry as it scales down).\r\n\t\t */\r\n\t\tbox-sizing: content-box;\r\n\r\n\t\t& .ck-icon {\r\n\t\t\twidth: var(--ck-list-style-button-size);\r\n\t\t\theight: var(--ck-list-style-button-size);\r\n\t\t}\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},7218:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-dropdown-menu-list__nested-menu{display:block}","",{version:3,sources:["webpack://./../ckeditor5-ui/theme/components/dropdown/menu/dropdownmenu.css"],names:[],mappings:"AAKA,uCACC,aACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-dropdown-menu-list__nested-menu {\r\n\tdisplay: block;\r\n}\r\n"],sourceRoot:""}]);const a=s},7317:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/colorgrid/colorgrid.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorgrid/colorgrid.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-color-grid {\r\n\tdisplay: grid;\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_mediacolors.css";\r\n\r\n:root {\r\n\t--ck-color-grid-tile-size: 24px;\r\n\r\n\t/* Not using global colors here because these may change but some colors in a pallette\r\n\t * require special treatment. For instance, this ensures no matter what the UI text color is,\r\n\t * the check icon will look good on the black color tile. */\r\n\t--ck-color-color-grid-check-icon: hsl(212, 81%, 46%);\r\n}\r\n\r\n.ck.ck-color-grid {\r\n\tgrid-gap: 5px;\r\n\tpadding: 8px;\r\n}\r\n\r\n.ck.ck-color-grid__tile {\r\n\ttransition: .2s ease box-shadow;\r\n\r\n\t@mixin ck-media-default-colors {\r\n\t\twidth: var(--ck-color-grid-tile-size);\r\n\t\theight: var(--ck-color-grid-tile-size);\r\n\t\tmin-width: var(--ck-color-grid-tile-size);\r\n\t\tmin-height: var(--ck-color-grid-tile-size);\r\n\t\tpadding: 0;\r\n\t\tborder: 0;\r\n\r\n\t\t&.ck-on,\r\n\t\t&:focus:not( .ck-disabled ),\r\n\t\t&:hover:not( .ck-disabled ) {\r\n\t\t\t/* Disable the default .ck-button\'s border ring. */\r\n\t\t\tborder: 0;\r\n\t\t}\r\n\r\n\t\t&.ck-color-selector__color-tile_bordered {\r\n\t\t\tbox-shadow: 0 0 0 1px var(--ck-color-base-border);\r\n\t\t}\r\n\r\n\t\t&.ck-on {\r\n\t\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-base-text);\r\n\t\t}\r\n\r\n\t\t&:focus:not( .ck-disabled ),\r\n\t\t&:hover:not( .ck-disabled ) {\r\n\t\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * In high contrast mode, the colors are replaced with text labels.\r\n\t * See https://github.com/ckeditor/ckeditor5/issues/14907.\r\n\t */\r\n\t@mixin ck-media-forced-colors {\r\n\t\twidth: unset;\r\n\t\theight: unset;\r\n\t\tmin-width: unset;\r\n\t\tmin-height: unset;\r\n\t\tpadding: 0 var(--ck-spacing-small);\r\n\r\n\t\t& .ck-button__label {\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t}\r\n\r\n\t@media (prefers-reduced-motion: reduce) {\r\n\t\ttransition: none;\r\n\t}\r\n\r\n\t&.ck-disabled {\r\n\t\tcursor: unset;\r\n\t\ttransition: unset;\r\n\t}\r\n\r\n\t& .ck.ck-icon {\r\n\t\tdisplay: none;\r\n\t\tcolor: var(--ck-color-color-grid-check-icon);\r\n\t}\r\n\r\n\t&.ck-on {\r\n\t\t& .ck.ck-icon {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ck.ck-color-grid__label {\r\n\tpadding: 0 var(--ck-spacing-standard);\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-forced-colors {\r\n\t@media (forced-colors: active) {\r\n\t\t& {\r\n\t\t\t@mixin-content;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@define-mixin ck-media-default-colors {\r\n\t@media (forced-colors: none) {\r\n\t\t& {\r\n\t\t\t@mixin-content;\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},7331:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,":root{--ck-style-panel-max-height:470px}.ck.ck-style-panel{max-height:var(--ck-style-panel-max-height);overflow-y:auto;padding:var(--ck-spacing-large)}","",{version:3,sources:["webpack://./../ckeditor5-theme-lark/theme/ckeditor5-style/stylepanel.css"],names:[],mappings:"AAKA,MACC,iCACD,CAEA,mBAGC,2CAA4C,CAD5C,eAAgB,CADhB,+BAGD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-style-panel-max-height: 470px;\r\n}\r\n\r\n.ck.ck-style-panel {\r\n\tpadding: var(--ck-spacing-large);\r\n\toverflow-y: auto;\r\n\tmax-height: var(--ck-style-panel-max-height);\r\n}\r\n"],sourceRoot:""}]);const a=s},7378:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-editor__editable img.image_placeholder{background-size:100% 100%}","",{version:3,sources:["webpack://./../ckeditor5-image/theme/imageplaceholder.css"],names:[],mappings:"AAMC,8CACC,yBACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-editor__editable {\r\n\t& img.image_placeholder {\r\n\t\tbackground-size: 100% 100%;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},7433:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck-mermaid__wrapper{display:flex;justify-content:center}.ck-mermaid__wrapper .ck-mermaid__editing-view{background-color:hsla(0,0%,78%,.3);border:0;font-size:12px;min-height:200px;outline:0;padding:16px;resize:vertical}.ck-mermaid__preview,[id^=dmermaid-]{display:flex;justify-content:center}[id^=dmermaid-]{align-items:center;height:100%}[id^=dmermaid-] svg{display:block;height:auto;width:60%}.ck-mermaid__source-mode .ck-mermaid__editing-view{width:100%}.ck-mermaid__source-mode .ck-mermaid__preview{display:none}.ck-mermaid__split-mode .ck-mermaid__editing-view,.ck-mermaid__split-mode .ck-mermaid__preview{width:50%}.ck-mermaid__preview-mode .ck-mermaid__editing-view{display:none}","",{version:3,sources:["webpack://./../ckeditor5-mermaid/theme/mermaid.css"],names:[],mappings:"AACA,qBACC,YAAa,CACb,sBACD,CAKA,+CAEC,kCAAuC,CAEvC,QAAS,CAET,cAAe,CAHf,gBAAiB,CAIjB,SAAU,CANV,YAAa,CAIb,eAGD,CASA,qCALC,YAAa,CACb,sBASD,CALA,gBAEC,kBAAmB,CACnB,WAED,CAEA,oBACC,aAAc,CAEd,WAAY,CADZ,SAED,CAGA,mDACC,UACD,CAEA,8CACC,YACD,CAOA,+FACC,SACD,CAGA,oDACC,YACD",sourcesContent:['/* Mermaid wrapper */\r\n.ck-mermaid__wrapper {\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n}\r\n\r\n/* Editing\r\n Assigned to textarea\r\n */\r\n.ck-mermaid__wrapper .ck-mermaid__editing-view {\r\n\tpadding: 16px; /* just like pre element */\r\n\tbackground-color: hsla(0, 0%, 78%, 0.3); /* just like pre element */\r\n\tmin-height: 200px;\r\n\tborder: 0;\r\n\tresize: vertical;\r\n\tfont-size: 12px; /* just like pre element */\r\n\toutline: 0; /* just like pre element */\r\n}\r\n\r\n/* Preview */\r\n.ck-mermaid__preview {\r\n\tdisplay: flex;\r\n\tjustify-content: center;\r\n}\r\n\r\n/* Preview error state */\r\n[id^="dmermaid-"] {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\theight: 100%;\r\n\tjustify-content: center;\r\n}\r\n\r\n[id^="dmermaid-"] svg {\r\n\tdisplay: block;\r\n\twidth: 60%;\r\n\theight: auto;\r\n}\r\n\r\n/* Source mode */\r\n.ck-mermaid__source-mode .ck-mermaid__editing-view {\r\n\twidth: 100%;\r\n}\r\n\r\n.ck-mermaid__source-mode .ck-mermaid__preview {\r\n\tdisplay: none;\r\n}\r\n\r\n/* Split mode */\r\n.ck-mermaid__split-mode .ck-mermaid__editing-view {\r\n\twidth: 50%;\r\n}\r\n\r\n.ck-mermaid__split-mode .ck-mermaid__preview {\r\n\twidth: 50%;\r\n}\r\n\r\n/* Preview mode */\r\n.ck-mermaid__preview-mode .ck-mermaid__editing-view {\r\n\tdisplay: none;\r\n}'],sourceRoot:""}]);const a=s},7621:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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);will-change:transform}.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://./../ckeditor5-ui/theme/components/icon/icon.css","webpack://./../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,yBAA0B,CAU1B,qBAoBD,CAlBC,0BALA,cAQA,CAMC,sEACC,aAMD,CAJC,+CAEC,iBACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-icon {\r\n\tvertical-align: middle;\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-icon-size: calc(var(--ck-line-height-base) * var(--ck-font-size-normal));\r\n\t--ck-icon-font-size: .8333350694em;\r\n}\r\n\r\n.ck.ck-icon {\r\n\twidth: var(--ck-icon-size);\r\n\theight: var(--ck-icon-size);\r\n\r\n\t/* Multiplied by the height of the line in "px" should give SVG "viewport" dimensions */\r\n\tfont-size: var(--ck-icon-font-size);\r\n\r\n\t/* Inherit cursor style (#5). */\r\n\tcursor: inherit;\r\n\r\n\t/* This will prevent blurry icons on Firefox. See #340. */\r\n\twill-change: transform;\r\n\r\n\t& * {\r\n\t\t/* Inherit cursor style (#5). */\r\n\t\tcursor: inherit;\r\n\t}\r\n\r\n\t/* Allows dynamic coloring of an icon by inheriting its color from the parent. */\r\n\t&.ck-icon_inherit-color {\r\n\t\tcolor: inherit;\r\n\r\n\t\t& * {\r\n\t\t\tcolor: inherit;\r\n\r\n\t\t\t&:not([fill]) {\r\n\t\t\t\t/* Needed by FF. */\r\n\t\t\t\tfill: currentColor;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},7676:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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-line-height:10px;--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.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:7.5px;font-weight:700;letter-spacing:-.2px;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}.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-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://./../ckeditor5-ui/theme/globals/_hidden.css","webpack://./../ckeditor5-ui/theme/globals/_zindex.css","webpack://./../ckeditor5-ui/theme/globals/_transition.css","webpack://./../ckeditor5-ui/theme/globals/_poweredby.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_colors.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_disabled.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_focus.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_fonts.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_reset.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_rounded.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_shadow.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/globals/_spacing.css"],names:[],mappings:"AAQA,WAGC,sBACD,CCPA,MACC,gBAAiB,CACjB,4CAA+C,CAC/C,kBACD,CCDA,oDAEC,yBACD,CCNA,MACC,gCAAiC,CACjC,oCAAqC,CACrC,sCAAuC,CACvC,kCAA2C,CAC3C,qDAAsD,CACtD,+BAA4C,CAC5C,yDACD,CAEA,2CACC,qDAAsD,CAGtD,0CAA2C,CAD3C,eAAgB,CAEhB,gBAAiB,CACjB,mCAiDD,CA/CC,6DACC,4CAoCD,CAlCC,+DAGC,kBAAmB,CAFnB,cAAe,CACf,YAAa,CAGb,qBAAsB,CACtB,4CAA6C,CAF7C,WAAY,CAGZ,qFACD,CAEA,mFASC,qCAAsC,CAFtC,cAAe,CANf,eAAgB,CAIhB,eAAiB,CAHjB,oBAAqB,CAMrB,kBAAmB,CAFnB,gBAAiB,CAHjB,gBAAiB,CACjB,wBAOD,CAEA,sEAEC,cAAe,CADf,aAED,CAGC,qEACC,mBAAqB,CACrB,SACD,CAIF,mEACC,wBACD,CAEA,mEACC,2BAA4B,CAC5B,8CACD,CChED,MACC,kCAAmD,CACnD,+BAAoD,CACpD,8BAAkD,CAClD,8BAAuD,CACvD,6BAAmD,CACnD,yBAA+C,CAC/C,8BAAsD,CACtD,oCAA4D,CAC5D,6BAAkD,CAIlD,mDAA4D,CAC5D,qEAA+E,CAC/E,qCAA4D,CAC5D,qDAA8D,CAC9D,gDAAyD,CACzD,yCAAqD,CACrD,sCAAsD,CACtD,4CAA0D,CAC1D,sCAAsD,CAItD,gDAAuD,CACvD,kDAAiE,CACjE,mDAAkE,CAClE,yDAA8D,CAE9D,uCAA6D,CAC7D,6CAAoE,CACpE,8CAAoE,CACpE,gDAAiE,CACjE,kCAAyD,CAGzD,+DAAsE,CACtE,iDAAsE,CACtE,kDAAsE,CACtE,oDAAoE,CACpE,6DAAsE,CAEtE,8BAAoD,CACpD,gCAAqD,CAErD,+CAA8D,CAC9D,qDAAiE,CACjE,+EAAqF,CACrF,oDAAuE,CACvE,yEAA8E,CAC9E,oDAAgE,CAIhE,oEAA2E,CAC3E,4DAAoE,CAIpE,wDAAiE,CACjE,4DAAmE,CAInE,2DAAoE,CACpE,mDAA6D,CAC7D,wDAAgE,CAChE,+CAA0D,CAC1D,4CAA2D,CAC3D,4DAAoE,CACpE,sCAAsD,CAItD,0DAAmE,CACnE,uFAA6F,CAC7F,oEAA2E,CAC3E,0EAA+E,CAC/E,8DAAsE,CAItE,2DAAoE,CACpE,mDAA6D,CAI7D,6DAAsE,CACtE,qDAA+D,CAI/D,uDAAgE,CAChE,uDAAiE,CAIjE,0CAAyD,CAIzD,wCAA2D,CAI3D,+BAAoD,CACpD,uDAAmE,CACnE,kDAAgE,CAIhE,oCAAyD,CAIzD,yBAAgD,CChHhD,wBAAyB,CCAzB,0CAA2C,CAK3C,gGAAiG,CAKjG,4GAA6G,CAK7G,sGAAuG,CAKvG,sDAAuD,CCvBvD,wBAAyB,CACzB,6BAA8B,CAC9B,wDAA6D,CAE7D,yBAA0B,CAC1B,2BAA4B,CAC5B,yBAA0B,CAC1B,wBAAyB,CACzB,0BAA2B,CCJ3B,kCJgHD,CI1GA,2EAYC,sBAAuB,CADvB,QAAS,CART,qBAAsB,CAEtB,WAAY,CAIZ,QAAS,CACT,SAAU,CAJV,eAAgB,CAOhB,oBAAqB,CAErB,eAAgB,CADhB,qBAAsB,CAVtB,UAAW,CAcX,oBACD,CAKA,8DAGC,wBAAyB,CAEzB,0BAA2B,CAG3B,WAAY,CACZ,UAAW,CALX,iGAAkG,CAElG,eAAgB,CAChB,kBAGD,CAGC,qDACC,gBACD,CAEA,mDAEC,sBACD,CAEA,qDACC,oBACD,CAEA,mLAGC,WACD,CAEA,iNAGC,cACD,CAEA,qDAEC,yBAAoC,CADpC,YAED,CAEA,qEAGC,QAAQ,CADR,SAED,CAMD,8BAEC,gBACD,CCxFA,MACC,sBAAuB,CCAvB,gEAAiE,CAKjE,0DAA2D,CAK3D,wEAAyE,CCbzE,uBAA8B,CAC9B,mDAA2D,CAC3D,4CAAkD,CAClD,oDAA4D,CAC5D,mDAA2D,CAC3D,kDAA2D,CAC3D,yDFFD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A class which hides an element in DOM.\r\n */\r\n.ck-hidden {\r\n\t/* Override selector specificity. Otherwise, all elements with some display\r\n\tstyle defined will override this one, which is not a desired result. */\r\n\tdisplay: none !important;\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-z-default: 1;\r\n\t--ck-z-panel: calc( var(--ck-z-default) + 999 );\r\n\t--ck-z-dialog: 9999;\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A class that disables all transitions of the element and its children.\r\n */\r\n.ck-transitions-disabled,\r\n.ck-transitions-disabled * {\r\n\ttransition: none !important;\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-powered-by-line-height: 10px;\r\n\t--ck-powered-by-padding-vertical: 2px;\r\n\t--ck-powered-by-padding-horizontal: 4px;\r\n\t--ck-powered-by-text-color: hsl(0, 0%, 31%);\r\n\t--ck-powered-by-border-radius: var(--ck-border-radius);\r\n\t--ck-powered-by-background: hsl(0, 0%, 100%);\r\n\t--ck-powered-by-border-color: var(--ck-color-focus-border);\r\n}\r\n\r\n.ck.ck-balloon-panel.ck-powered-by-balloon {\r\n\t--ck-border-radius: var(--ck-powered-by-border-radius);\r\n\r\n\tbox-shadow: none;\r\n\tbackground: var(--ck-powered-by-background);\r\n\tmin-height: unset;\r\n\tz-index: calc( var(--ck-z-panel) - 1 );\r\n\r\n\t& .ck.ck-powered-by {\r\n\t\tline-height: var(--ck-powered-by-line-height);\r\n\r\n\t\t& a {\r\n\t\t\tcursor: pointer;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\t\t\topacity: .66;\r\n\t\t\tfilter: grayscale(80%);\r\n\t\t\tline-height: var(--ck-powered-by-line-height);\r\n\t\t\tpadding: var(--ck-powered-by-padding-vertical) var(--ck-powered-by-padding-horizontal);\r\n\t\t}\r\n\r\n\t\t& .ck-powered-by__label {\r\n\t\t\tfont-size: 7.5px;\r\n\t\t\tletter-spacing: -.2px;\r\n\t\t\tpadding-left: 2px;\r\n\t\t\ttext-transform: uppercase;\r\n\t\t\tfont-weight: bold;\r\n\t\t\tmargin-right: 4px;\r\n\t\t\tcursor: pointer;\r\n\t\t\tline-height: normal;\r\n\t\t\tcolor: var(--ck-powered-by-text-color);\r\n\r\n\t\t}\r\n\r\n\t\t& .ck-icon {\r\n\t\t\tdisplay: block;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\r\n\t\t&:hover {\r\n\t\t\t& a {\r\n\t\t\t\tfilter: grayscale(0%);\r\n\t\t\t\topacity: 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[class*="position_inside"] {\r\n\t\tborder-color: transparent;\r\n\t}\r\n\r\n\t&[class*="position_border"] {\r\n\t\tborder: var(--ck-focus-ring);\r\n\t\tborder-color: var(--ck-powered-by-border-color);\r\n\t}\r\n}\r\n\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-color-base-foreground: \t\t\t\t\t\t\t\thsl(0, 0%, 98%);\r\n\t--ck-color-base-background: \t\t\t\t\t\t\t\thsl(0, 0%, 100%);\r\n\t--ck-color-base-border: \t\t\t\t\t\t\t\t\thsl(220, 6%, 81%);\r\n\t--ck-color-base-action: \t\t\t\t\t\t\t\t\thsl(104, 50.2%, 42.5%);\r\n\t--ck-color-base-focus: \t\t\t\t\t\t\t\t\t\thsl(209, 92%, 70%);\r\n\t--ck-color-base-text: \t\t\t\t\t\t\t\t\t\thsl(0, 0%, 20%);\r\n\t--ck-color-base-active: \t\t\t\t\t\t\t\t\thsl(218.1, 100%, 58%);\r\n\t--ck-color-base-active-focus:\t\t\t\t\t\t\t\thsl(218.2, 100%, 52.5%);\r\n\t--ck-color-base-error:\t\t\t\t\t\t\t\t\t\thsl(15, 100%, 43%);\r\n\r\n\t/* -- Generic colors ------------------------------------------------------------------------ */\r\n\r\n\t--ck-color-focus-border-coordinates: \t\t\t\t\t\t218, 81.8%, 56.9%;\r\n\t--ck-color-focus-border: \t\t\t\t\t\t\t\t\thsl(var(--ck-color-focus-border-coordinates));\r\n\t--ck-color-focus-outer-shadow:\t\t\t\t\t\t\t\thsl(212.4, 89.3%, 89%);\r\n\t--ck-color-focus-disabled-shadow:\t\t\t\t\t\t\thsla(209, 90%, 72%,.3);\r\n\t--ck-color-focus-error-shadow:\t\t\t\t\t\t\t\thsla(9,100%,56%,.3);\r\n\t--ck-color-text: \t\t\t\t\t\t\t\t\t\t\tvar(--ck-color-base-text);\r\n\t--ck-color-shadow-drop: \t\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.15);\r\n\t--ck-color-shadow-drop-active:\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.2);\r\n\t--ck-color-shadow-inner: \t\t\t\t\t\t\t\t\thsla(0, 0%, 0%, 0.1);\r\n\r\n\t/* -- Buttons ------------------------------------------------------------------------------- */\r\n\r\n\t--ck-color-button-default-background: \t\t\t\t\t\ttransparent;\r\n\t--ck-color-button-default-hover-background: \t\t\t\thsl(0, 0%, 94.1%);\r\n\t--ck-color-button-default-active-background: \t\t\t\thsl(0, 0%, 94.1%);\r\n\t--ck-color-button-default-disabled-background: \t\t\t\ttransparent;\r\n\r\n\t--ck-color-button-on-background: \t\t\t\t\t\t\thsl(212, 100%, 97.1%);\r\n\t--ck-color-button-on-hover-background: \t\t\t\t\t\thsl(211.7, 100%, 92.9%);\r\n\t--ck-color-button-on-active-background: \t\t\t\t\thsl(211.7, 100%, 92.9%);\r\n\t--ck-color-button-on-disabled-background: \t\t\t\t\thsl(211, 15%, 95%);\r\n\t--ck-color-button-on-color:\t\t\t\t\t\t\t\t\thsl(218.1, 100%, 58%);\r\n\r\n\r\n\t--ck-color-button-action-background: \t\t\t\t\t\tvar(--ck-color-base-action);\r\n\t--ck-color-button-action-hover-background: \t\t\t\t\thsl(104, 53.2%, 40.2%);\r\n\t--ck-color-button-action-active-background: \t\t\t\thsl(104, 53.2%, 40.2%);\r\n\t--ck-color-button-action-disabled-background: \t\t\t\thsl(104, 44%, 58%);\r\n\t--ck-color-button-action-text: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\r\n\r\n\t--ck-color-button-save: \t\t\t\t\t\t\t\t\thsl(120, 100%, 27%);\r\n\t--ck-color-button-cancel: \t\t\t\t\t\t\t\t\thsl(15, 100%, 43%);\r\n\r\n\t--ck-color-switch-button-off-background:\t\t\t\t\thsl(0, 0%, 57.6%);\r\n\t--ck-color-switch-button-off-hover-background:\t\t\t\thsl(0, 0%, 49%);\r\n\t--ck-color-switch-button-on-background:\t\t\t\t\t\tvar(--ck-color-button-action-background);\r\n\t--ck-color-switch-button-on-hover-background:\t\t\t\thsl(104, 53.2%, 40.2%);\r\n\t--ck-color-switch-button-inner-background:\t\t\t\t\tvar(--ck-color-base-background);\r\n\t--ck-color-switch-button-inner-shadow:\t\t\t\t\t\thsla(0, 0%, 0%, 0.1);\r\n\r\n\t/* -- Dropdown ------------------------------------------------------------------------------ */\r\n\r\n\t--ck-color-dropdown-panel-background: \t\t\t\t\t\tvar(--ck-color-base-background);\r\n\t--ck-color-dropdown-panel-border: \t\t\t\t\t\t\tvar(--ck-color-base-border);\r\n\r\n\t/* -- Dialog -------------------------------------------------------------------------------- */\r\n\r\n\t--ck-color-dialog-background: \t\t\t\t\t\t\t\tvar(--ck-custom-background);\r\n\t--ck-color-dialog-form-header-border: \t\t\t\t\t\tvar(--ck-custom-border);\r\n\r\n\t/* -- Input --------------------------------------------------------------------------------- */\r\n\r\n\t--ck-color-input-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\r\n\t--ck-color-input-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\r\n\t--ck-color-input-error-border:\t\t\t\t\t\t\t\tvar(--ck-color-base-error);\r\n\t--ck-color-input-text: \t\t\t\t\t\t\t\t\t\tvar(--ck-color-base-text);\r\n\t--ck-color-input-disabled-background: \t\t\t\t\t\thsl(0, 0%, 95%);\r\n\t--ck-color-input-disabled-border: \t\t\t\t\t\t\tvar(--ck-color-base-border);\r\n\t--ck-color-input-disabled-text: \t\t\t\t\t\t\thsl(0, 0%, 46%);\r\n\r\n\t/* -- List ---------------------------------------------------------------------------------- */\r\n\r\n\t--ck-color-list-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\r\n\t--ck-color-list-button-hover-background: \t\t\t\t\tvar(--ck-color-button-default-hover-background);\r\n\t--ck-color-list-button-on-background: \t\t\t\t\t\tvar(--ck-color-button-on-color);\r\n\t--ck-color-list-button-on-background-focus: \t\t\t\tvar(--ck-color-button-on-color);\r\n\t--ck-color-list-button-on-text:\t\t\t\t\t\t\t\tvar(--ck-color-base-background);\r\n\r\n\t/* -- Panel --------------------------------------------------------------------------------- */\r\n\r\n\t--ck-color-panel-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\r\n\t--ck-color-panel-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\r\n\r\n\t/* -- Toolbar ------------------------------------------------------------------------------- */\r\n\r\n\t--ck-color-toolbar-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-background);\r\n\t--ck-color-toolbar-border: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-border);\r\n\r\n\t/* -- Tooltip ------------------------------------------------------------------------------- */\r\n\r\n\t--ck-color-tooltip-background: \t\t\t\t\t\t\t\tvar(--ck-color-base-text);\r\n\t--ck-color-tooltip-text: \t\t\t\t\t\t\t\t\tvar(--ck-color-base-background);\r\n\r\n\t/* -- Engine -------------------------------------------------------------------------------- */\r\n\r\n\t--ck-color-engine-placeholder-text: \t\t\t\t\t\thsl(0, 0%, 44%);\r\n\r\n\t/* -- Upload -------------------------------------------------------------------------------- */\r\n\r\n\t--ck-color-upload-bar-background:\t\t \t\t\t\t\thsl(209, 92%, 70%);\r\n\r\n\t/* -- Link -------------------------------------------------------------------------------- */\r\n\r\n\t--ck-color-link-default:\t\t\t\t\t\t\t\t\thsl(240, 100%, 47%);\r\n\t--ck-color-link-selected-background:\t\t\t\t\t\thsla(201, 100%, 56%, 0.1);\r\n\t--ck-color-link-fake-selection:\t\t\t\t\t\t\t\thsla(201, 100%, 56%, 0.3);\r\n\r\n\t/* -- Search result highlight ---------------------------------------------------------------- */\r\n\r\n\t--ck-color-highlight-background:\t\t\t\t\t\t\thsl(60, 100%, 50%);\r\n\r\n\t/* -- Generic colors ------------------------------------------------------------------------- */\r\n\r\n\t--ck-color-light-red:\t\t\t\t\t\t\t\t\t\thsl(0, 100%, 90%);\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t/**\r\n\t * An opacity value of disabled UI item.\r\n\t */\r\n\t--ck-disabled-opacity: .5;\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t/**\r\n\t * The geometry of the of focused element's outer shadow.\r\n\t */\r\n\t--ck-focus-outer-shadow-geometry: 0 0 0 3px;\r\n\r\n\t/**\r\n\t * A visual style of focused element's outer shadow.\r\n\t */\r\n\t--ck-focus-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);\r\n\r\n\t/**\r\n\t * A visual style of focused element's outer shadow (when disabled).\r\n\t */\r\n\t--ck-focus-disabled-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);\r\n\r\n\t/**\r\n\t * A visual style of focused element's outer shadow (when has errors).\r\n\t */\r\n\t--ck-focus-error-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);\r\n\r\n\t/**\r\n\t * A visual style of focused element's border or outline.\r\n\t */\r\n\t--ck-focus-ring: 1px solid var(--ck-color-focus-border);\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-font-size-base: 13px;\r\n\t--ck-line-height-base: 1.84615;\r\n\t--ck-font-face: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;\r\n\r\n\t--ck-font-size-tiny: 0.7em;\r\n\t--ck-font-size-small: 0.75em;\r\n\t--ck-font-size-normal: 1em;\r\n\t--ck-font-size-big: 1.4em;\r\n\t--ck-font-size-large: 1.8em;\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t/* This is super-important. This is **manually** adjusted so a button without an icon\r\n\tis never smaller than a button with icon, additionally making sure that text-less buttons\r\n\tare perfect squares. The value is also shared by other components which should stay "in-line"\r\n\twith buttons. */\r\n\t--ck-ui-component-min-height: 2.3em;\r\n}\r\n\r\n/**\r\n * Resets an element, ignoring its children.\r\n */\r\n.ck.ck-reset,\r\n.ck.ck-reset_all,\r\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\r\n\tbox-sizing: border-box;\r\n\twidth: auto;\r\n\theight: auto;\r\n\tposition: static;\r\n\r\n\t/* Do not include inheritable rules here. */\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tborder: 0;\r\n\tbackground: transparent;\r\n\ttext-decoration: none;\r\n\tvertical-align: middle;\r\n\ttransition: none;\r\n\r\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/105 */\r\n\tword-wrap: break-word;\r\n}\r\n\r\n/**\r\n * Resets an element AND its children.\r\n */\r\n.ck.ck-reset_all,\r\n.ck-reset_all *:not(.ck-reset_all-excluded *) {\r\n\t/* These are rule inherited by all children elements. */\r\n\tborder-collapse: collapse;\r\n\tfont: normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);\r\n\tcolor: var(--ck-color-text);\r\n\ttext-align: left;\r\n\twhite-space: nowrap;\r\n\tcursor: auto;\r\n\tfloat: none;\r\n}\r\n\r\n.ck-reset_all {\r\n\t& .ck-rtl *:not(.ck-reset_all-excluded *) {\r\n\t\ttext-align: right;\r\n\t}\r\n\r\n\t& iframe:not(.ck-reset_all-excluded *) {\r\n\t\t/* For IE */\r\n\t\tvertical-align: inherit;\r\n\t}\r\n\r\n\t& textarea:not(.ck-reset_all-excluded *) {\r\n\t\twhite-space: pre-wrap;\r\n\t}\r\n\r\n\t& textarea:not(.ck-reset_all-excluded *),\r\n\t& input[type="text"]:not(.ck-reset_all-excluded *),\r\n\t& input[type="password"]:not(.ck-reset_all-excluded *) {\r\n\t\tcursor: text;\r\n\t}\r\n\r\n\t& textarea[disabled]:not(.ck-reset_all-excluded *),\r\n\t& input[type="text"][disabled]:not(.ck-reset_all-excluded *),\r\n\t& input[type="password"][disabled]:not(.ck-reset_all-excluded *) {\r\n\t\tcursor: default;\r\n\t}\r\n\r\n\t& fieldset:not(.ck-reset_all-excluded *) {\r\n\t\tpadding: 10px;\r\n\t\tborder: 2px groove hsl(255, 7%, 88%);\r\n\t}\r\n\r\n\t& button:not(.ck-reset_all-excluded *)::-moz-focus-inner {\r\n\t\t/* See http://stackoverflow.com/questions/5517744/remove-extra-button-spacing-padding-in-firefox */\r\n\t\tpadding: 0;\r\n\t\tborder: 0\r\n\t}\r\n}\r\n\r\n/**\r\n * Default UI rules for RTL languages.\r\n */\r\n.ck[dir="rtl"],\r\n.ck[dir="rtl"] .ck {\r\n\ttext-align: right;\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Default border-radius value.\r\n */\r\n:root{\r\n\t--ck-border-radius: 2px;\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t/**\r\n\t * A visual style of element's inner shadow (i.e. input).\r\n\t */\r\n\t--ck-inner-shadow: 2px 2px 3px var(--ck-color-shadow-inner) inset;\r\n\r\n\t/**\r\n\t * A visual style of element's drop shadow (i.e. panel).\r\n\t */\r\n\t--ck-drop-shadow: 0 1px 2px 1px var(--ck-color-shadow-drop);\r\n\r\n\t/**\r\n\t * A visual style of element's active shadow (i.e. comment or suggestion).\r\n\t */\r\n\t--ck-drop-shadow-active: 0 3px 6px 1px var(--ck-color-shadow-drop-active);\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-spacing-unit: \t\t\t\t\t\t0.6em;\r\n\t--ck-spacing-large: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 1.5);\r\n\t--ck-spacing-standard: \t\t\t\t\tvar(--ck-spacing-unit);\r\n\t--ck-spacing-medium: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.8);\r\n\t--ck-spacing-small: \t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.5);\r\n\t--ck-spacing-tiny: \t\t\t\t\t\tcalc(var(--ck-spacing-unit) * 0.3);\r\n\t--ck-spacing-extra-tiny: \t\t\t\tcalc(var(--ck-spacing-unit) * 0.16);\r\n}\r\n"],sourceRoot:""}]);const a=s},7693:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-image/theme/imageuploadicon.css","webpack://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck-image-upload-complete-icon {\r\n\tdisplay: block;\r\n\tposition: absolute;\r\n\r\n\t/*\r\n\t * Smaller images should have the icon closer to the border.\r\n\t * Match the icon position with the linked image indicator brought by the link image feature.\r\n\t */\r\n\ttop: min(var(--ck-spacing-medium), 6%);\r\n\tright: min(var(--ck-spacing-medium), 6%);\r\n\tborder-radius: 50%;\r\n\tz-index: 1;\r\n\r\n\t&::after {\r\n\t\tcontent: "";\r\n\t\tposition: absolute;\r\n\t}\r\n}\r\n','/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-color-image-upload-icon: hsl(0, 0%, 100%);\r\n\t--ck-color-image-upload-icon-background: hsl(120, 100%, 27%);\r\n\r\n\t/* Match the icon size with the linked image indicator brought by the link image feature. */\r\n\t--ck-image-upload-icon-size: 20;\r\n\t--ck-image-upload-icon-width: 2px;\r\n\t--ck-image-upload-icon-is-visible: clamp(0px, 100% - 50px, 1px);\r\n}\r\n\r\n.ck-image-upload-complete-icon {\r\n\topacity: 0;\r\n\tbackground: var(--ck-color-image-upload-icon-background);\r\n\tanimation-name: ck-upload-complete-icon-show, ck-upload-complete-icon-hide;\r\n\tanimation-fill-mode: forwards, forwards;\r\n\tanimation-duration: 500ms, 500ms;\r\n\r\n\t/* To make animation scalable. */\r\n\tfont-size: calc(1px * var(--ck-image-upload-icon-size));\r\n\r\n\t/* Hide completed upload icon after 3 seconds. */\r\n\tanimation-delay: 0ms, 3000ms;\r\n\r\n\t/*\r\n\t * Use CSS math to simulate container queries.\r\n\t * https://css-tricks.com/the-raven-technique-one-step-closer-to-container-queries/#what-about-showing-and-hiding-things\r\n\t */\r\n\toverflow: hidden;\r\n\twidth: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\r\n\theight: calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));\r\n\r\n\t/* This is check icon element made from border-width mixed with animations. */\r\n\t&::after {\r\n\t\t/* Because of border transformation we need to "hard code" left position. */\r\n\t\tleft: 25%;\r\n\r\n\t\ttop: 50%;\r\n\t\topacity: 0;\r\n\t\theight: 0;\r\n\t\twidth: 0;\r\n\r\n\t\ttransform: scaleX(-1) rotate(135deg);\r\n\t\ttransform-origin: left top;\r\n\t\tborder-top: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\r\n\t\tborder-right: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);\r\n\r\n\t\tanimation-name: ck-upload-complete-icon-check;\r\n\t\tanimation-duration: 500ms;\r\n\t\tanimation-delay: 500ms;\r\n\t\tanimation-fill-mode: forwards;\r\n\r\n\t\t/* #1095. While reset is not providing proper box-sizing for pseudoelements, we need to handle it. */\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t@media (prefers-reduced-motion: reduce) {\r\n\t\tanimation-duration: 0ms;\r\n\r\n\t\t&::after {\r\n\t\t\tanimation: none;\r\n\t\t\topacity: 1;\r\n\t\t\twidth: 0.3em;\r\n\t\t\theight: 0.45em;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@keyframes ck-upload-complete-icon-show {\r\n\tfrom {\r\n\t\topacity: 0;\r\n\t}\r\n\r\n\tto {\r\n\t\topacity: 1;\r\n\t}\r\n}\r\n\r\n@keyframes ck-upload-complete-icon-hide {\r\n\tfrom {\r\n\t\topacity: 1;\r\n\t}\r\n\r\n\tto {\r\n\t\topacity: 0;\r\n\t}\r\n}\r\n\r\n@keyframes ck-upload-complete-icon-check {\r\n\t0% {\r\n\t\topacity: 1;\r\n\t\twidth: 0;\r\n\t\theight: 0;\r\n\t}\r\n\t33% {\r\n\t\twidth: 0.3em;\r\n\t\theight: 0;\r\n\t}\r\n\t100% {\r\n\t\topacity: 1;\r\n\t\twidth: 0.3em;\r\n\t\theight: 0.45em;\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},7719:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/* Class added to span element surrounding currently selected link. */\r\n.ck .ck-link_selected {\r\n\tbackground: var(--ck-color-link-selected-background);\r\n\r\n\t/* Give linked inline images some outline to let the user know they are also part of the link. */\r\n\t& span.image-inline {\r\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background);\r\n\t}\r\n}\r\n\r\n/*\r\n * Classes used by the "fake visual selection" displayed in the content when an input\r\n * in the link UI has focus (the browser does not render the native selection in this state).\r\n */\r\n.ck .ck-fake-link-selection {\r\n\tbackground: var(--ck-color-link-fake-selection);\r\n}\r\n\r\n/* A collapsed fake visual selection. */\r\n.ck .ck-fake-link-selection_collapsed {\r\n\theight: 100%;\r\n\tborder-right: 1px solid var(--ck-color-base-text);\r\n\tmargin-right: -1px;\r\n\toutline: solid 1px hsla(0, 0%, 100%, .5);\r\n}\r\n'],sourceRoot:""}]);const a=s},7793:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-clipboard/theme/clipboard.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-clipboard/clipboard.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,CArBA,mDAYE,sFAAuF,CADvF,+JAAoK,CAFpK,SAYF,CArBA,mDAmBE,sFAAuF,CADvF,+JAAmK,CAFnK,UAKF",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-editor__editable {\r\n\t/*\r\n\t * Vertical drop target (in text).\r\n\t */\r\n\t& .ck.ck-clipboard-drop-target-position {\r\n\t\tdisplay: inline;\r\n\t\tposition: relative;\r\n\t\tpointer-events: none;\r\n\r\n\t\t& span {\r\n\t\t\tposition: absolute;\r\n\t\t\twidth: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * Styles of the widget being dragged (its preview).\r\n\t */\r\n\t& .ck-widget:-webkit-drag {\r\n\t\t& > .ck-widget__selection-handle {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\r\n\t\t& > .ck-widget__type-around {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ck.ck-clipboard-drop-target-line {\r\n\tposition: absolute;\r\n\tpointer-events: none;\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import \"@ckeditor/ckeditor5-ui/theme/mixins/_dir.css\";\r\n\r\n:root {\r\n\t--ck-clipboard-drop-target-dot-width: 12px;\r\n\t--ck-clipboard-drop-target-dot-height: 8px;\r\n\t--ck-clipboard-drop-target-color: var(--ck-color-focus-border);\r\n}\r\n\r\n.ck.ck-editor__editable {\r\n\t/*\r\n\t * Vertical drop target (in text).\r\n\t */\r\n\t& .ck.ck-clipboard-drop-target-position {\r\n\t\t& span {\r\n\t\t\tbottom: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\r\n\t\t\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\r\n\t\t\tborder: 1px solid var(--ck-clipboard-drop-target-color);\r\n\t\t\tbackground: var(--ck-clipboard-drop-target-color);\r\n\t\t\tmargin-left: -1px;\r\n\r\n\t\t\t/* The triangle above the marker */\r\n\t\t\t&::after {\r\n\t\t\t\tcontent: '';\r\n\t\t\t\twidth: 0;\r\n\t\t\t\theight: 0;\r\n\r\n\t\t\t\tdisplay: block;\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tleft: 50%;\r\n\t\t\t\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-height));\r\n\r\n\t\t\t\ttransform: translateX(-50%);\r\n\t\t\t\tborder-color: var(--ck-clipboard-drop-target-color) transparent transparent transparent;\r\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));\r\n\t\t\t\tborder-style: solid;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * Styles of the widget that it a drop target.\r\n\t */\r\n\t& .ck-widget.ck-clipboard-drop-target-range {\r\n\t\toutline: var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color) !important;\r\n\t}\r\n\r\n\t/*\r\n\t * Styles of the widget being dragged (its preview).\r\n\t */\r\n\t& .ck-widget:-webkit-drag {\r\n\t\tzoom: 0.6;\r\n\t\toutline: none !important;\r\n\t}\r\n}\r\n\r\n.ck.ck-clipboard-drop-target-line {\r\n\theight: 0;\r\n\tborder: 1px solid var(--ck-clipboard-drop-target-color);\r\n\tbackground: var(--ck-clipboard-drop-target-color);\r\n\tmargin-top: -1px;\r\n\r\n\t&::before {\r\n\t\tcontent: '';\r\n\t\tposition: absolute;\r\n\t\ttop: calc(-.5 * var(--ck-clipboard-drop-target-dot-width));\r\n\t\twidth: 0;\r\n\t\theight: 0;\r\n\t\tborder-style: solid;\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\tleft: -1px;\r\n\r\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);\r\n\t\t\tborder-color: transparent transparent transparent var(--ck-clipboard-drop-target-color);\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\tright: -1px;\r\n\r\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;\r\n\t\t\tborder-color: transparent var(--ck-clipboard-drop-target-color) transparent transparent;\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},7801:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}","",{version:3,sources:["webpack://./../ckeditor5-ui/theme/components/label/label.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/label/label.css"],names:[],mappings:"AAKA,aACC,aACD,CAEA,mBACC,YACD,CCNA,aACC,eACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-label {\r\n\tdisplay: block;\r\n}\r\n\r\n.ck.ck-voice-label {\r\n\tdisplay: none;\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-label {\r\n\tfont-weight: bold;\r\n}\r\n"],sourceRoot:""}]);const a=s},7913:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/formheader/formheader.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/formheader/formheader.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,CAdC,uCAEE,qCAMF,CARA,uCAME,oCAEF,CAEA,4CACC,wBAAyB,CACzB,eACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-form__header {\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n\tflex-wrap: nowrap;\r\n\talign-items: center;\r\n\tjustify-content: space-between;\r\n\r\n\t& h2.ck-form__header__label {\r\n\t\tflex-grow: 1;\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n:root {\r\n\t--ck-form-header-height: 44px;\r\n}\r\n\r\n.ck.ck-form__header {\r\n\tpadding: var(--ck-spacing-small) var(--ck-spacing-large);\r\n\theight: var(--ck-form-header-height);\r\n\tline-height: var(--ck-form-header-height);\r\n\tborder-bottom: 1px solid var(--ck-color-base-border);\r\n\r\n\t& > .ck-icon {\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\tmargin-right: var(--ck-spacing-medium);\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\tmargin-left: var(--ck-spacing-medium);\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck-form__header__label {\r\n\t\t--ck-font-size-base: 15px;\r\n\t\tfont-weight: bold;\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},8107:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/search/search.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/search/search.css"],names:[],mappings:"AASE,oFACC,iBAAkB,CAClB,OAAQ,CACR,0BASD,CAZA,8FAME,6BAMF,CAZA,8FAUE,8BAEF,CAEA,uDACC,iBAAkB,CAClB,OAAQ,CACR,0BACD,CAKC,oEACC,aACD,CAGA,qEACC,YACD,CChCH,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,CAnBA,6FASE,8BAUF,CAnBA,6FAaE,6BAMF,CAHC,yFACC,SACD,CAGD,2EACC,UAWD,CAZA,oMAUE,4DAEF,CAIF,kCACC,cAkBD,CAhBC,mDAEC,wDAAyD,CADzD,UAcD,CAXC,qDACC,kBACD,CAEA,oEACC,eACD,CAEA,mEACC,mCACD",sourcesContent:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-search {\r\n\t& > .ck-labeled-field-view {\r\n\t\t& > .ck-labeled-field-view__input-wrapper > .ck-icon {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 50%;\r\n\t\t\ttransform: translateY(-50%);\r\n\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\tleft: var(--ck-spacing-medium);\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tright: var(--ck-spacing-medium);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t& .ck-search__reset {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 50%;\r\n\t\t\ttransform: translateY(-50%);\r\n\t\t}\r\n\t}\r\n\r\n\t& > .ck-search__results {\r\n\t\t& > .ck-search__info {\r\n\t\t\t& > span:first-child {\r\n\t\t\t\tdisplay: block;\r\n\t\t\t}\r\n\r\n\t\t\t/* Hide the filtered view when nothing was found */\r\n\t\t\t&:not(.ck-hidden) ~ * {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n','/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n:root {\r\n\t--ck-search-field-view-horizontal-spacing: calc(var(--ck-icon-size) + var(--ck-spacing-medium));\r\n}\r\n\r\n.ck.ck-search {\r\n\t& > .ck-labeled-field-view {\r\n\t\t& .ck-input {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\r\n\t\t&.ck-search__query_with-icon {\r\n\t\t\t--ck-labeled-field-label-default-position-x: var(--ck-search-field-view-horizontal-spacing);\r\n\r\n\t\t\t& > .ck-labeled-field-view__input-wrapper > .ck-icon {\r\n\t\t\t\topacity: .5;\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t& .ck-input {\r\n\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\t\tpadding-left: var(--ck-search-field-view-horizontal-spacing);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\t\t&:not(.ck-input-text_empty) {\r\n\t\t\t\t\t\tpadding-left: var(--ck-search-field-view-horizontal-spacing);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.ck-search__query_with-reset {\r\n\t\t\t--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-search-field-view-horizontal-spacing);\r\n\r\n\t\t\t&.ck-labeled-field-view_empty {\r\n\t\t\t\t--ck-labeled-field-empty-unfocused-max-width: 100% - var(--ck-search-field-view-horizontal-spacing) - var(--ck-spacing-medium);\r\n\t\t\t}\r\n\r\n\t\t\t& .ck-search__reset {\r\n\t\t\t\tmin-width: auto;\r\n\t\t\t\tmin-height: auto;\r\n\r\n\t\t\t\tbackground: none;\r\n\t\t\t\topacity: .5;\r\n\t\t\t\tpadding: 0;\r\n\r\n\t\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\t\tright: var(--ck-spacing-medium);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\t\tleft: var(--ck-spacing-medium);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover {\r\n\t\t\t\t\topacity: 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t& .ck-input {\r\n\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\t\t&:not(.ck-input-text_empty) {\r\n\t\t\t\t\t\tpadding-right: var(--ck-search-field-view-horizontal-spacing);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\t\tpadding-right: var(--ck-search-field-view-horizontal-spacing);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t& > .ck-search__results {\r\n\t\tmin-width: 100%;\r\n\r\n\t\t& > .ck-search__info {\r\n\t\t\twidth: 100%;\r\n\t\t\tpadding: var(--ck-spacing-medium) var(--ck-spacing-large);\r\n\r\n\t\t\t& * {\r\n\t\t\t\twhite-space: normal;\r\n\t\t\t}\r\n\r\n\t\t\t& > span:first-child {\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t}\r\n\r\n\t\t\t& > span:last-child {\r\n\t\t\t\tmargin-top: var(--ck-spacing-medium);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n'],sourceRoot:""}]);const a=s},8137:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-theme-lark/theme/ckeditor5-table/tableediting.css"],names:[],mappings:"AAKA,MACC,gEACD,CAWE,8QAGC,2DAA4D,CAC5D,8CAA+C,CAC/C,mBACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-color-selector-focused-cell-background: hsla(212, 90%, 80%, .3);\r\n}\r\n\r\n.ck-widget.table {\r\n\t& td,\r\n\t& th {\r\n\t\t/**\r\n\t\t * While setting outline is fine, the border should not be modified here\r\n\t\t * because it overrides the default table cell border color which is not expected.\r\n\t\t * So do not use `@mixin ck-focus-ring;` here, or any other border styles.\r\n\t\t * See more: https://github.com/ckeditor/ckeditor5/issues/16979\r\n\t\t */\r\n\t\t&.ck-editor__nested-editable.ck-editor__nested-editable_focused,\r\n\t\t&.ck-editor__nested-editable:focus {\r\n\t\t\t/* A very slight background to highlight the focused cell */\r\n\t\t\tbackground: var(--ck-color-selector-focused-cell-background);\r\n\t\t\toutline: 1px solid var(--ck-color-focus-border);\r\n\t\t\toutline-offset: -1px; /* progressive enhancement - no IE support */\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},8149:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{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;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}.ck.ck-dropdown__panel:focus{outline:none}","",{version:3,sources:["webpack://./../ckeditor5-ui/theme/components/dropdown/dropdown.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/dropdown.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_disabled.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css","webpack://./../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,uBGlFC,eHkHD,CAhCA,qFG9EE,qCH8GF,CAhCA,uBAIC,oDAAqD,CACrD,sDAAuD,CACvD,QAAS,CE1FT,oCAA8B,CF6F9B,cAuBD,CAnBC,6CACC,wBACD,CAEA,6CACC,yBACD,CAEA,6CACC,2BACD,CAEA,6CACC,4BACD,CAEA,6BACC,YACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-dropdown-max-width: 75vw;\r\n}\r\n\r\n.ck.ck-dropdown {\r\n\tdisplay: inline-block;\r\n\tposition: relative;\r\n\r\n\t& .ck-dropdown__arrow {\r\n\t\tpointer-events: none;\r\n\t\tz-index: var(--ck-z-default);\r\n\t}\r\n\r\n\t/* Dropdown button should span horizontally, e.g. in vertical toolbars */\r\n\t& .ck-button.ck-dropdown__button {\r\n\t\twidth: 100%;\r\n\t}\r\n\r\n\t& .ck-dropdown__panel {\r\n\t\tdisplay: none;\r\n\t\tz-index: var(--ck-z-panel);\r\n\t\tmax-width: var(--ck-dropdown-max-width);\r\n\r\n\t\tposition: absolute;\r\n\r\n\t\t&.ck-dropdown__panel-visible {\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t&.ck-dropdown__panel_ne,\r\n\t\t&.ck-dropdown__panel_nw,\r\n\t\t&.ck-dropdown__panel_n,\r\n\t\t&.ck-dropdown__panel_nmw,\r\n\t\t&.ck-dropdown__panel_nme {\r\n\t\t\tbottom: 100%;\r\n\t\t}\r\n\r\n\t\t&.ck-dropdown__panel_se,\r\n\t\t&.ck-dropdown__panel_sw,\r\n\t\t&.ck-dropdown__panel_smw,\r\n\t\t&.ck-dropdown__panel_sme,\r\n\t\t&.ck-dropdown__panel_s {\r\n\t\t\t/*\r\n\t\t\t * Using transform: translate3d( 0, 100%, 0 ) causes blurry dropdown on Chrome 67-78+ on non-retina displays.\r\n\t\t\t * See https://github.com/ckeditor/ckeditor5/issues/1053.\r\n\t\t\t */\r\n\t\t\ttop: 100%;\r\n\t\t\tbottom: auto;\r\n\t\t}\r\n\r\n\t\t&.ck-dropdown__panel_ne,\r\n\t\t&.ck-dropdown__panel_se {\r\n\t\t\tleft: 0px;\r\n\t\t}\r\n\r\n\t\t&.ck-dropdown__panel_nw,\r\n\t\t&.ck-dropdown__panel_sw {\r\n\t\t\tright: 0px;\r\n\t\t}\r\n\r\n\t\t&.ck-dropdown__panel_s,\r\n\t\t&.ck-dropdown__panel_n {\r\n\t\t\t/* Positioning panels relative to the center of the button */\r\n\t\t\tleft: 50%;\r\n\t\t\ttransform: translateX(-50%);\r\n\t\t}\r\n\r\n\t\t&.ck-dropdown__panel_nmw,\r\n\t\t&.ck-dropdown__panel_smw {\r\n\t\t\t/* Positioning panels relative to the middle-west of the button */\r\n\t\t\tleft: 75%;\r\n\t\t\ttransform: translateX(-75%);\r\n\t\t}\r\n\r\n\t\t&.ck-dropdown__panel_nme,\r\n\t\t&.ck-dropdown__panel_sme {\r\n\t\t\t/* Positioning panels relative to the middle-east of the button */\r\n\t\t\tleft: 25%;\r\n\t\t\ttransform: translateX(-25%);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/*\r\n * Toolbar dropdown panels should be always above the UI (eg. other dropdown panels) from the editor's content.\r\n * See https://github.com/ckeditor/ckeditor5/issues/7874\r\n */\r\n.ck.ck-toolbar .ck-dropdown__panel {\r\n\tz-index: calc( var(--ck-z-panel) + 1 );\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n@import "../../../mixins/_disabled.css";\r\n@import "../../../mixins/_shadow.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n:root {\r\n\t--ck-dropdown-arrow-size: calc(0.5 * var(--ck-icon-size));\r\n}\r\n\r\n.ck.ck-dropdown {\r\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\r\n\tfont-size: inherit;\r\n\r\n\t& .ck-dropdown__arrow {\r\n\t\twidth: var(--ck-dropdown-arrow-size);\r\n\t}\r\n\r\n\t@mixin ck-dir ltr {\r\n\t\t& .ck-dropdown__arrow {\r\n\t\t\tright: var(--ck-spacing-standard);\r\n\r\n\t\t\t/* A space to accommodate the triangle. */\r\n\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\t\t}\r\n\t}\r\n\r\n\t@mixin ck-dir rtl {\r\n\t\t& .ck-dropdown__arrow {\r\n\t\t\tleft: var(--ck-spacing-standard);\r\n\r\n\t\t\t/* A space to accommodate the triangle. */\r\n\t\t\tmargin-right: var(--ck-spacing-small);\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-disabled .ck-dropdown__arrow {\r\n\t\t@mixin ck-disabled;\r\n\t}\r\n\r\n\t& .ck-button.ck-dropdown__button {\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\t&:not(.ck-button_with-text) {\r\n\t\t\t\t/* Make sure dropdowns with just an icon have the right inner spacing */\r\n\t\t\t\tpadding-left: var(--ck-spacing-small);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\t&:not(.ck-button_with-text) {\r\n\t\t\t\t/* Make sure dropdowns with just an icon have the right inner spacing */\r\n\t\t\t\tpadding-right: var(--ck-spacing-small);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* #23 */\r\n\t\t& .ck-button__label {\r\n\t\t\twidth: 7em;\r\n\t\t\toverflow: hidden;\r\n\t\t\ttext-overflow: ellipsis;\r\n\t\t}\r\n\r\n\t\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\r\n\t\t&.ck-disabled .ck-button__label {\r\n\t\t\t@mixin ck-disabled;\r\n\t\t}\r\n\r\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/816 */\r\n\t\t&.ck-on {\r\n\t\t\tborder-bottom-left-radius: 0;\r\n\t\t\tborder-bottom-right-radius: 0;\r\n\t\t}\r\n\r\n\t\t&.ck-dropdown__button_label-width_auto .ck-button__label {\r\n\t\t\twidth: auto;\r\n\t\t}\r\n\r\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/8699 */\r\n\t\t&.ck-off:active,\r\n\t\t&.ck-on:active {\r\n\t\t\tbox-shadow: none;\r\n\r\n\t\t\t&:focus {\r\n\t\t\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ck.ck-dropdown__panel {\r\n\t@mixin ck-rounded-corners;\r\n\t@mixin ck-drop-shadow;\r\n\r\n\tbackground: var(--ck-color-dropdown-panel-background);\r\n\tborder: 1px solid var(--ck-color-dropdown-panel-border);\r\n\tbottom: 0;\r\n\r\n\t/* Make sure the panel is at least as wide as the drop-down\'s button. */\r\n\tmin-width: 100%;\r\n\r\n\t/* Disabled corner border radius to be consistent with the .dropdown__button\r\n\thttps://github.com/ckeditor/ckeditor5/issues/816 */\r\n\t&.ck-dropdown__panel_se {\r\n\t\tborder-top-left-radius: 0;\r\n\t}\r\n\r\n\t&.ck-dropdown__panel_sw {\r\n\t\tborder-top-right-radius: 0;\r\n\t}\r\n\r\n\t&.ck-dropdown__panel_ne {\r\n\t\tborder-bottom-left-radius: 0;\r\n\t}\r\n\r\n\t&.ck-dropdown__panel_nw {\r\n\t\tborder-bottom-right-radius: 0;\r\n\t}\r\n\r\n\t&:focus {\r\n\t\toutline: none;\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A class which indicates that an element holding it is disabled.\r\n */\r\n@define-mixin ck-disabled {\r\n\topacity: var(--ck-disabled-opacity);\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},8249:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-math-form{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:nowrap}@media screen and (max-width:600px){.ck.ck-math-form{flex-wrap:wrap}.ck.ck-math-form .ck-math-view,.ck.ck-math-form .ck-math-view .ck-label,.ck.ck-math-form .ck-math-view .ck-labeled-view{flex-basis:100%}.ck.ck-math-form .ck-button{flex-basis:50%}}.ck-math-tex.ck-placeholder:before{display:none!important}.ck.ck-toolbar-container{z-index:calc(var(--ck-z-panel) + 2)}.ck.ck-math-form{padding:var(--ck-spacing-standard)}.ck.ck-math-form:focus{outline:none}[dir=ltr] .ck.ck-math-form>:not(:first-child),[dir=rtl] .ck.ck-math-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-math-form{padding:0}.ck.ck-math-form .ck-labeled-input{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-math-form .ck-labeled-input .ck-input-text{min-width:0;width:100%}.ck.ck-math-form .ck-label,.ck.ck-math-form .ck-math-view .ck-button,.ck.ck-math-form .ck-math-view .ck.ck-math-preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-math-form>.ck-button{border:0;border-radius:0;border-top:1px solid var(--ck-color-base-border);margin-top:var(--ck-spacing-standard);padding:var(--ck-spacing-standard)}[dir=ltr] .ck.ck-math-form>.ck-button{margin-left:0}[dir=ltr] .ck.ck-math-form>.ck-button:first-of-type{border-right:1px solid var(--ck-color-base-border)}[dir=rtl] .ck.ck-math-form>.ck-button{margin-left:0}[dir=rtl] .ck.ck-math-form>.ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}}","",{version:3,sources:["webpack://./../ckeditor5-math/theme/mathform.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-math/mathform.css","webpack://./../ckeditor5-ui/theme/mixins/_rwd.css"],names:[],mappings:"AAAA,iBAEC,sBAAuB,CADvB,YAAa,CAEb,kBAAmB,CACnB,gBAsBD,CAnBC,oCAPD,iBAQE,cAkBF,CATG,wHACC,eACD,CAGD,4BACC,cACD,CACD,CAGD,mCACC,sBACD,CAEA,yBACC,mCACD,CC/BA,iBACI,kCAsEJ,CApEI,uBAEF,YACD,CASC,2FACC,sCACD,CCdD,oCDHD,iBAqBE,SAkDF,CAhDE,mCACC,8DAMD,CAJC,kDACC,WAAY,CACZ,UACD,CAYA,wHACC,8DACD,CAGD,4BAKC,QAAS,CADT,eAAgB,CAEhB,gDAAiD,CAJjD,qCAAsC,CADtC,kCAsBD,CAvBA,sCASE,aAcF,CAZE,oDACC,kDACD,CAbF,sCAiBE,aAMF,CAJE,mDACC,kDACD,CC9DH",sourcesContent:[".ck.ck-math-form {\r\n\tdisplay: flex;\r\n\talign-items: flex-start;\r\n\tflex-direction: row;\r\n\tflex-wrap: nowrap;\r\n\tpadding: var(--ck-spacing-standard);\r\n\r\n\t@media screen and (max-width: 600px) {\r\n\t\tflex-wrap: wrap;\r\n\r\n\t\t& .ck-math-view {\r\n\t\t\tflex-basis: 100%;\r\n\r\n\t\t\t& .ck-labeled-view {\r\n\t\t\t\tflex-basis: 100%;\r\n\t\t\t}\r\n\r\n\t\t\t& .ck-label {\r\n\t\t\t\tflex-basis: 100%;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t& .ck-button {\r\n\t\t\tflex-basis: 50%;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ck-math-tex.ck-placeholder::before {\r\n\tdisplay: none !important;\r\n}\r\n\r\n.ck.ck-toolbar-container {\r\n\tz-index: calc(var(--ck-z-panel) + 2);\r\n}\r\n",'@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-math-form {\r\n padding: var(--ck-spacing-standard);\r\n\r\n &:focus {\r\n\t\t/* https://github.com/ckeditor/ckeditor5-link/issues/90 */\r\n\t\toutline: none;\r\n\t}\r\n\r\n @mixin ck-dir ltr {\r\n\t\t& > :not(:first-child) {\r\n\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\t\t}\r\n\t}\r\n\r\n\t@mixin ck-dir rtl {\r\n\t\t& > :not(:last-child) {\r\n\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\t\t}\r\n\t}\r\n\r\n\t@mixin ck-media-phone {\r\n\t\tpadding: 0;\r\n\r\n\t\t& .ck-labeled-input {\r\n\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\r\n\r\n\t\t\t& .ck-input-text {\r\n\t\t\t\tmin-width: 0;\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\t\t}\r\n\r\n & .ck-label {\r\n margin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\r\n }\r\n\r\n\t\t& .ck-math-view {\r\n\t\t\t& .ck-button {\r\n\t\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\r\n\t\t\t}\r\n\r\n\t\t\t& .ck.ck-math-preview {\r\n\t\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t& > .ck-button {\r\n\t\t\tpadding: var(--ck-spacing-standard);\r\n\t\t\tmargin-top: var(--ck-spacing-standard);\r\n\r\n\t\t\tborder-radius: 0;\r\n\t\t\tborder: 0;\r\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\r\n\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\tmargin-left: 0;\r\n\r\n\t\t\t\t&:first-of-type {\r\n\t\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tmargin-left: 0;\r\n\r\n\t\t\t\t&:last-of-type {\r\n\t\t\t\t\tborder-right: 1px solid var(--ck-color-base-border);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-phone {\r\n\t@media screen and (max-width: 600px) {\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},8264:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-editor__editable span[data-ck-unsafe-element]{display:none}","",{version:3,sources:["webpack://./../ckeditor5-engine/theme/renderer.css"],names:[],mappings:"AAMA,qDACC,YACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/* Elements marked by the Renderer as hidden should be invisible in the editor. */\r\n.ck.ck-editor__editable span[data-ck-unsafe-element] {\r\n\tdisplay: none;\r\n}\r\n"],sourceRoot:""}]);const a=s},8298:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/panel/stickypanel.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/stickypanel.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-sticky-panel {\r\n\t& .ck-sticky-panel__content_sticky {\r\n\t\tz-index: var(--ck-z-panel); /* #315 */\r\n\t\tposition: fixed;\r\n\t\ttop: 0;\r\n\t}\r\n\r\n\t& .ck-sticky-panel__content_sticky_bottom-limit {\r\n\t\ttop: auto;\r\n\t\tposition: absolute;\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_shadow.css";\r\n\r\n.ck.ck-sticky-panel {\r\n\t& .ck-sticky-panel__content_sticky {\r\n\t\t@mixin ck-drop-shadow;\r\n\r\n\t\tborder-width: 0 1px 1px;\r\n\t\tborder-top-left-radius: 0;\r\n\t\tborder-top-right-radius: 0;\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n"],sourceRoot:""}]);const a=s},8423:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-table-selected-cell-background: hsla(208, 90%, 80%, .3);\r\n}\r\n\r\n.ck.ck-editor__editable .table table {\r\n\t& td.ck-editor__editable_selected,\r\n\t& th.ck-editor__editable_selected {\r\n\t\tposition: relative;\r\n\t\tcaret-color: transparent;\r\n\t\toutline: unset;\r\n\t\tbox-shadow: unset;\r\n\r\n\t\t/* https://github.com/ckeditor/ckeditor5/issues/6446 */\r\n\t\t&:after {\r\n\t\t\tcontent: '';\r\n\t\t\tpointer-events: none;\r\n\t\t\tbackground-color: var(--ck-table-selected-cell-background);\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 0;\r\n\t\t\tleft: 0;\r\n\t\t\tright: 0;\r\n\t\t\tbottom: 0;\r\n\t\t}\r\n\r\n\t\t& ::selection,\r\n\t\t&:focus {\r\n\t\t\tbackground-color: transparent;\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * To reduce the amount of noise, all widgets in the table selection have no outline and no selection handle.\r\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/9491.\r\n\t\t */\r\n\t\t& .ck-widget {\r\n\t\t\toutline: unset;\r\n\r\n\t\t\t& > .ck-widget__selection-handle {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},8508:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-widget/theme/widgettypearound.css","webpack://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck .ck-widget {\r\n\t/*\r\n\t * Styles of the type around buttons\r\n\t */\r\n\t& .ck-widget__type-around__button {\r\n\t\tdisplay: block;\r\n\t\tposition: absolute;\r\n\t\toverflow: hidden;\r\n\t\tz-index: var(--ck-z-default);\r\n\r\n\t\t& svg {\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 50%;\r\n\t\t\tleft: 50%;\r\n\t\t\tz-index: calc(var(--ck-z-default) + 2);\r\n\t\t}\r\n\r\n\t\t&.ck-widget__type-around__button_before {\r\n\t\t\t/* Place it in the middle of the outline */\r\n\t\t\ttop: calc(-0.5 * var(--ck-widget-outline-thickness));\r\n\t\t\tleft: min(10%, 30px);\r\n\r\n\t\t\ttransform: translateY(-50%);\r\n\t\t}\r\n\r\n\t\t&.ck-widget__type-around__button_after {\r\n\t\t\t/* Place it in the middle of the outline */\r\n\t\t\tbottom: calc(-0.5 * var(--ck-widget-outline-thickness));\r\n\t\t\tright: min(10%, 30px);\r\n\r\n\t\t\ttransform: translateY(50%);\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * Styles for the buttons when:\r\n\t * - the widget is selected,\r\n\t * - or the button is being hovered (regardless of the widget state).\r\n\t */\r\n\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\r\n\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\r\n\t\t&::after {\r\n\t\t\tcontent: "";\r\n\t\t\tdisplay: block;\r\n\t\t\tposition: absolute;\r\n\t\t\ttop: 1px;\r\n\t\t\tleft: 1px;\r\n\t\t\tz-index: calc(var(--ck-z-default) + 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.\r\n\t */\r\n\t& > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\r\n\t\tdisplay: none;\r\n\t\tposition: absolute;\r\n\t\tleft: 0;\r\n\t\tright: 0;\r\n\t}\r\n\r\n\t/*\r\n\t * When the widget is hovered the "fake caret" would normally be narrower than the\r\n\t * extra outline displayed around the widget. Let\'s extend the "fake caret" to match\r\n\t * the full width of the widget.\r\n\t */\r\n\t&:hover > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\r\n\t\tleft: calc( -1 * var(--ck-widget-outline-thickness) );\r\n\t\tright: calc( -1 * var(--ck-widget-outline-thickness) );\r\n\t}\r\n\r\n\t/*\r\n\t * Styles for the horizontal "fake caret" when it should be displayed before the widget (backward keyboard navigation).\r\n\t */\r\n\t&.ck-widget_type-around_show-fake-caret_before > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\r\n\t\ttop: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t/*\r\n\t * Styles for the horizontal "fake caret" when it should be displayed after the widget (forward keyboard navigation).\r\n\t */\r\n\t&.ck-widget_type-around_show-fake-caret_after > .ck-widget__type-around > .ck-widget__type-around__fake-caret {\r\n\t\tbottom: calc( -1 * var(--ck-widget-outline-thickness) - 1px );\r\n\t\tdisplay: block;\r\n\t}\r\n}\r\n\r\n/*\r\n * Integration with the read-only mode of the editor.\r\n */\r\n.ck.ck-editor__editable.ck-read-only .ck-widget__type-around {\r\n\tdisplay: none;\r\n}\r\n\r\n/*\r\n * Integration with the restricted editing mode (feature) of the editor.\r\n */\r\n.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around {\r\n\tdisplay: none;\r\n}\r\n\r\n/*\r\n * Integration with the #isEnabled property of the WidgetTypeAround plugin.\r\n */\r\n.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around {\r\n\tdisplay: none;\r\n}\r\n','/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-widget-type-around-button-size: 20px;\r\n\t--ck-color-widget-type-around-button-active: var(--ck-color-focus-border);\r\n\t--ck-color-widget-type-around-button-hover: var(--ck-color-widget-hover-border);\r\n\t--ck-color-widget-type-around-button-blurred-editable: var(--ck-color-widget-blurred-border);\r\n\t--ck-color-widget-type-around-button-radar-start-alpha: 0;\r\n\t--ck-color-widget-type-around-button-radar-end-alpha: .3;\r\n\t--ck-color-widget-type-around-button-icon: var(--ck-color-base-background);\r\n}\r\n\r\n@define-mixin ck-widget-type-around-button-visible {\r\n\topacity: 1;\r\n\tpointer-events: auto;\r\n}\r\n\r\n@define-mixin ck-widget-type-around-button-hidden {\r\n\topacity: 0;\r\n\tpointer-events: none;\r\n}\r\n\r\n.ck .ck-widget {\r\n\t/*\r\n\t * Styles of the type around buttons\r\n\t */\r\n\t& .ck-widget__type-around__button {\r\n\t\twidth: var(--ck-widget-type-around-button-size);\r\n\t\theight: var(--ck-widget-type-around-button-size);\r\n\t\tbackground: var(--ck-color-widget-type-around-button);\r\n\t\tborder-radius: 100px;\r\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);\r\n\r\n\t\t@mixin ck-widget-type-around-button-hidden;\r\n\r\n\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\ttransition: none;\r\n\t\t}\r\n\r\n\t\t& svg {\r\n\t\t\twidth: 10px;\r\n\t\t\theight: 8px;\r\n\t\t\ttransform: translate(-50%,-50%);\r\n\t\t\ttransition: transform .5s ease;\r\n\t\t\tmargin-top: 1px;\r\n\r\n\t\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\t\ttransition: none;\r\n\t\t\t}\r\n\r\n\t\t\t& * {\r\n\t\t\t\tstroke-dasharray: 10;\r\n\t\t\t\tstroke-dashoffset: 0;\r\n\r\n\t\t\t\tfill: none;\r\n\t\t\t\tstroke: var(--ck-color-widget-type-around-button-icon);\r\n\t\t\t\tstroke-width: 1.5px;\r\n\t\t\t\tstroke-linecap: round;\r\n\t\t\t\tstroke-linejoin: round;\r\n\t\t\t}\r\n\r\n\t\t\t& line {\r\n\t\t\t\tstroke-dasharray: 7;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&:hover {\r\n\t\t\t/*\r\n\t\t\t * Display the "sonar" around the button when hovered.\r\n\t\t\t */\r\n\t\t\tanimation: ck-widget-type-around-button-sonar 1s ease infinite;\r\n\r\n\t\t\t/*\r\n\t\t\t * Animate active button\'s icon.\r\n\t\t\t */\r\n\t\t\t& svg {\r\n\t\t\t\t& polyline {\r\n\t\t\t\t\tanimation: ck-widget-type-around-arrow-dash 2s linear;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t& line {\r\n\t\t\t\t\tanimation: ck-widget-type-around-arrow-tip-dash 2s linear;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\t\tanimation: none;\r\n\r\n\t\t\t\t& svg {\r\n\t\t\t\t\t& polyline {\r\n\t\t\t\t\t\tanimation: none;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t& line {\r\n\t\t\t\t\t\tanimation: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * Show type around buttons when the widget gets selected or being hovered.\r\n\t */\r\n\t&.ck-widget_selected,\r\n\t&:hover {\r\n\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\r\n\t\t\t@mixin ck-widget-type-around-button-visible;\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * Styles for the buttons when the widget is NOT selected (but the buttons are visible\r\n\t * and still can be hovered).\r\n\t */\r\n\t&:not(.ck-widget_selected) > .ck-widget__type-around > .ck-widget__type-around__button {\r\n\t\tbackground: var(--ck-color-widget-type-around-button-hover);\r\n\t}\r\n\r\n\t/*\r\n\t * Styles for the buttons when:\r\n\t * - the widget is selected,\r\n\t * - or the button is being hovered (regardless of the widget state).\r\n\t */\r\n\t&.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,\r\n\t& > .ck-widget__type-around > .ck-widget__type-around__button:hover {\r\n\t\tbackground: var(--ck-color-widget-type-around-button-active);\r\n\r\n\t\t&::after {\r\n\t\t\twidth: calc(var(--ck-widget-type-around-button-size) - 2px);\r\n\t\t\theight: calc(var(--ck-widget-type-around-button-size) - 2px);\r\n\t\t\tborder-radius: 100px;\r\n\t\t\tbackground: linear-gradient(135deg, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,.3) 100%);\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * Styles for the "before" button when the widget has a selection handle. Because some space\r\n\t * is consumed by the handle, the button must be moved slightly to the right to let it breathe.\r\n\t */\r\n\t&.ck-widget_with-selection-handle > .ck-widget__type-around > .ck-widget__type-around__button_before {\r\n\t\tmargin-left: 20px;\r\n\t}\r\n\r\n\t/*\r\n\t * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.\r\n\t */\r\n\t& .ck-widget__type-around__fake-caret {\r\n\t\tpointer-events: none;\r\n\t\theight: 1px;\r\n\t\tanimation: ck-widget-type-around-fake-caret-pulse linear 1s infinite normal forwards;\r\n\r\n\t\t/*\r\n\t\t * The semi-transparent-outline+background combo improves the contrast\r\n\t\t * when the background underneath the fake caret is dark.\r\n\t\t */\r\n\t\toutline: solid 1px hsla(0, 0%, 100%, .5);\r\n\t\tbackground: var(--ck-color-base-text);\r\n\t}\r\n\r\n\t/*\r\n\t * Styles of the widget when the "fake caret" is blinking (e.g. upon keyboard navigation).\r\n\t * Despite the widget being physically selected in the model, its outline should disappear.\r\n\t */\r\n\t&.ck-widget_selected {\r\n\t\t&.ck-widget_type-around_show-fake-caret_before,\r\n\t\t&.ck-widget_type-around_show-fake-caret_after {\r\n\t\t\toutline-color: transparent;\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-widget_type-around_show-fake-caret_before,\r\n\t&.ck-widget_type-around_show-fake-caret_after {\r\n\t\t/*\r\n\t\t * When the "fake caret" is visible we simulate that the widget is not selected\r\n\t\t * (despite being physically selected), so the outline color should be for the\r\n\t\t * unselected widget.\r\n\t\t */\r\n\t\t&.ck-widget_selected:hover {\r\n\t\t\toutline-color: var(--ck-color-widget-hover-border);\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * Styles of the type around buttons when the "fake caret" is blinking (e.g. upon keyboard navigation).\r\n\t\t * In this state, the type around buttons would collide with the fake carets so they should disappear.\r\n\t\t */\r\n\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\r\n\t\t\t@mixin ck-widget-type-around-button-hidden;\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * Fake horizontal caret integration with the selection handle. When the caret is visible, simply\r\n\t\t * hide the handle because it intersects with the caret (and does not make much sense anyway).\r\n\t\t */\r\n\t\t&.ck-widget_with-selection-handle {\r\n\t\t\t&.ck-widget_selected,\r\n\t\t\t&.ck-widget_selected:hover {\r\n\t\t\t\t& > .ck-widget__selection-handle {\r\n\t\t\t\t\topacity: 0\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\t * Fake horizontal caret integration with the resize UI. When the caret is visible, simply\r\n\t\t * hide the resize UI because it creates too much noise. It can be visible when the user\r\n\t\t * hovers the widget, though.\r\n\t\t */\r\n\t\t&.ck-widget_selected.ck-widget_with-resizer > .ck-widget__resizer {\r\n\t\t\topacity: 0\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/*\r\n * Styles for the "before" button when the widget has a selection handle in an RTL environment.\r\n * The selection handler is aligned to the right side of the widget so there is no need to create\r\n * additional space for it next to the "before" button.\r\n */\r\n.ck[dir="rtl"] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around > .ck-widget__type-around__button_before {\r\n\tmargin-left: 0;\r\n\tmargin-right: 20px;\r\n}\r\n\r\n/*\r\n * Hide type around buttons when the widget is selected as a child of a selected\r\n * nested editable (e.g. mulit-cell table selection).\r\n *\r\n * See https://github.com/ckeditor/ckeditor5/issues/7263.\r\n */\r\n.ck-editor__nested-editable.ck-editor__editable_selected {\r\n\t& .ck-widget {\r\n\t\t&.ck-widget_selected,\r\n\t\t&:hover {\r\n\t\t\t& > .ck-widget__type-around > .ck-widget__type-around__button {\r\n\t\t\t\t@mixin ck-widget-type-around-button-hidden;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/*\r\n * Styles for the buttons when the widget is selected but the user clicked outside of the editor (blurred the editor).\r\n */\r\n.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button:not(:hover) {\r\n\tbackground: var(--ck-color-widget-type-around-button-blurred-editable);\r\n\r\n\t& svg * {\r\n\t\tstroke: hsl(0,0%,60%);\r\n\t}\r\n}\r\n\r\n@keyframes ck-widget-type-around-arrow-dash {\r\n\t0% {\r\n\t\tstroke-dashoffset: 10;\r\n\t}\r\n\t20%, 100% {\r\n\t\tstroke-dashoffset: 0;\r\n\t}\r\n}\r\n\r\n@keyframes ck-widget-type-around-arrow-tip-dash {\r\n\t0%, 20% {\r\n\t\tstroke-dashoffset: 7;\r\n\t}\r\n\t40%, 100% {\r\n\t\tstroke-dashoffset: 0;\r\n\t}\r\n}\r\n\r\n@keyframes ck-widget-type-around-button-sonar {\r\n\t0% {\r\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));\r\n\t}\r\n\t50% {\r\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));\r\n\t}\r\n\t100% {\r\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));\r\n\t}\r\n}\r\n\r\n@keyframes ck-widget-type-around-fake-caret-pulse {\r\n\t0% {\r\n\t\topacity: 1;\r\n\t}\r\n\t49% {\r\n\t\topacity: 1;\r\n\t}\r\n\t50% {\r\n\t\topacity: 0;\r\n\t}\r\n\t99% {\r\n\t\topacity: 0;\r\n\t}\r\n\t100% {\r\n\t\topacity: 1;\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},8527:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/accessibilityhelp.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css","webpack://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_focus.css";\r\n@import "../../../mixins/_shadow.css";\r\n\r\n:root {\r\n\t--ck-accessibility-help-dialog-max-width: 600px;\r\n\t--ck-accessibility-help-dialog-max-height: 400px;\r\n\t--ck-accessibility-help-dialog-border-color: hsl(220, 6%, 81%);\r\n\t--ck-accessibility-help-dialog-code-background-color: hsl(0deg 0% 92.94%);\r\n\t--ck-accessibility-help-dialog-kbd-shadow-color: hsl(0deg 0% 61%);\r\n}\r\n\r\n.ck.ck-accessibility-help-dialog .ck-accessibility-help-dialog__content {\r\n\tpadding: var(--ck-spacing-large);\r\n\tmax-width: var(--ck-accessibility-help-dialog-max-width);\r\n\tmax-height: var(--ck-accessibility-help-dialog-max-height);\r\n\toverflow: auto;\r\n\tuser-select: text;\r\n\r\n\tborder: 1px solid transparent;\r\n\r\n\t&:focus {\r\n\t\t@mixin ck-focus-ring;\r\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\r\n\t}\r\n\r\n\t* {\r\n\t\twhite-space: normal;\r\n\t}\r\n\r\n\t/* Hide the main label of the content container. */\r\n\t& .ck-label {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\t& h3 {\r\n\t\tfont-weight: bold;\r\n\t\tfont-size: 1.2em;\r\n\t}\r\n\r\n\t& h4 {\r\n\t\tfont-weight: bold;\r\n\t\tfont-size: 1em;\r\n\t}\r\n\r\n\t& p,\r\n\t& h3,\r\n\t& h4,\r\n\t& table {\r\n\t\tmargin: 1em 0;\r\n\t}\r\n\r\n\t& dl {\r\n\t\tdisplay: grid;\r\n\t\tgrid-template-columns: 2fr 1fr;\r\n\t\tborder-top: 1px solid var(--ck-accessibility-help-dialog-border-color);\r\n\t\tborder-bottom: none;\r\n\r\n\t\t& dt, & dd {\r\n\t\t\tborder-bottom: 1px solid var(--ck-accessibility-help-dialog-border-color);\r\n\t\t\tpadding: .4em 0;\r\n\t\t}\r\n\r\n\t\t& dt {\r\n\t\t\tgrid-column-start: 1;\r\n\t\t}\r\n\r\n\t\t& dd {\r\n\t\t\tgrid-column-start: 2;\r\n\t\t\ttext-align: right;\r\n\t\t}\r\n\t}\r\n\r\n\t& kbd, & code {\r\n\t\tdisplay: inline-block;\r\n\t\tbackground: var(--ck-accessibility-help-dialog-code-background-color);\r\n\t\tpadding: .4em;\r\n\t\tvertical-align: middle;\r\n\t\tline-height: 1;\r\n\t\tborder-radius: 2px;\r\n\t\ttext-align: center;\r\n\t\tfont-size: .9em;\r\n\t}\r\n\r\n\t& code {\r\n\t\tfont-family: monospace;\r\n\t}\r\n\r\n\t& kbd {\r\n\t\tmin-width: 1.8em;\r\n\t\tbox-shadow: 0px 1px 1px var(--ck-accessibility-help-dialog-kbd-shadow-color);\r\n\t\tmargin: 0 1px;\r\n\r\n\t\t& + kbd {\r\n\t\t\tmargin-left: 2px;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A visual style of focused element's border.\r\n */\r\n@define-mixin ck-focus-ring {\r\n\t/* Disable native outline. */\r\n\toutline: none;\r\n\tborder: var(--ck-focus-ring)\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n"],sourceRoot:""}]);const a=s},8708:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck-content blockquote {\r\n\t/* See #12 */\r\n\toverflow: hidden;\r\n\r\n\t/* https://github.com/ckeditor/ckeditor5-block-quote/issues/15 */\r\n\tpadding-right: 1.5em;\r\n\tpadding-left: 1.5em;\r\n\r\n\tmargin-left: 0;\r\n\tmargin-right: 0;\r\n\tfont-style: italic;\r\n\tborder-left: solid 5px hsl(0, 0%, 80%);\r\n}\r\n\r\n.ck-content[dir="rtl"] blockquote {\r\n\tborder-left: 0;\r\n\tborder-right: solid 5px hsl(0, 0%, 80%);\r\n}\r\n'],sourceRoot:""}]);const a=s},8737:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,":root{--ck-style-panel-columns:3}.ck.ck-style-panel .ck-style-grid{display:grid;grid-template-columns:repeat(var(--ck-style-panel-columns),auto);justify-content:start}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button{display:flex;flex-direction:column;justify-content:space-between}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-style-grid__button__preview{align-content:center;align-items:center;display:flex;flex-basis:100%;flex-grow:1;justify-content:flex-start}:root{--ck-style-panel-button-width:120px;--ck-style-panel-button-height:80px;--ck-style-panel-button-label-background:#f0f0f0;--ck-style-panel-button-hover-label-background:#ebebeb;--ck-style-panel-button-hover-border-color:#b3b3b3}.ck.ck-style-panel .ck-style-grid{column-gap:var(--ck-spacing-large);row-gap:var(--ck-spacing-large)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button{--ck-color-button-default-hover-background:var(--ck-color-base-background);--ck-color-button-default-active-background:var(--ck-color-base-background);height:var(--ck-style-panel-button-height);padding:0;width:var(--ck-style-panel-button-width)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-button__label{flex-shrink:0;height:22px;line-height:22px;overflow:hidden;padding:0 var(--ck-spacing-medium);text-overflow:ellipsis;width:100%}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-style-grid__button__preview{background:var(--ck-color-base-background);border:2px solid var(--ck-color-base-background);opacity:.9;overflow:hidden;padding:var(--ck-spacing-medium);width:100%}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled{--ck-color-button-default-disabled-background:var(--ck-color-base-foreground)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled:not(:focus){border-color:var(--ck-style-panel-button-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled .ck-style-grid__button__preview{border-color:var(--ck-color-base-foreground);filter:saturate(.3);opacity:.4}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on{border-color:var(--ck-color-base-active)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on .ck-button__label{box-shadow:0 -1px 0 var(--ck-color-base-active);z-index:1}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on:hover{border-color:var(--ck-color-base-active-focus)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(.ck-on) .ck-button__label{background:var(--ck-style-panel-button-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(.ck-on):hover .ck-button__label{background:var(--ck-style-panel-button-hover-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:hover:not(.ck-disabled):not(.ck-on){border-color:var(--ck-style-panel-button-hover-border-color)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:hover:not(.ck-disabled):not(.ck-on) .ck-style-grid__button__preview{opacity:1}","",{version:3,sources:["webpack://./../ckeditor5-style/theme/stylegrid.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-style/stylegrid.css"],names:[],mappings:"AAKA,MACC,0BACD,CAEA,kCACC,YAAa,CACb,gEAAiE,CACjE,qBAgBD,CAdC,yDACC,YAAa,CAEb,qBAAsB,CADtB,6BAWD,CARC,yFAEC,oBAAqB,CAErB,kBAAmB,CAHnB,YAAa,CAKb,eAAgB,CADhB,WAAY,CAFZ,0BAID,CCrBF,MACC,mCAAoC,CACpC,mCAAoC,CACpC,gDAA2D,CAC3D,sDAAiE,CACjE,kDACD,CAEA,kCAEC,kCAAmC,CADnC,+BAmFD,CAhFC,yDACC,0EAA2E,CAC3E,2EAA4E,CAI5E,0CAA2C,CAF3C,SAAU,CACV,wCA0ED,CAtEC,qEACC,4CACD,CAEA,2EAOC,aAAc,CANd,WAAY,CACZ,gBAAiB,CAGjB,eAAgB,CADhB,kCAAmC,CAEnC,sBAAuB,CAHvB,UAKD,CAEA,yFAMC,0CAA2C,CAC3C,gDAAiD,CAJjD,UAAW,CADX,eAAgB,CAGhB,gCAAiC,CAJjC,UAOD,CAEA,qEACC,6EAaD,CAVC,iFACC,0DACD,CAEA,qGAGC,4CAA6C,CAC7C,mBAAoB,CAHpB,UAID,CAGD,+DACC,wCAUD,CARC,iFACC,+CAAgD,CAChD,SACD,CAEA,qEACC,8CACD,CAIA,uFACC,wDACD,CAEA,6FACC,8DACD,CAGD,6FACC,4DAKD,CAHC,6HACC,SACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-style-panel-columns: 3;\r\n}\r\n\r\n.ck.ck-style-panel .ck-style-grid {\r\n\tdisplay: grid;\r\n\tgrid-template-columns: repeat(var(--ck-style-panel-columns),auto);\r\n\tjustify-content: start;\r\n\r\n\t& .ck-style-grid__button {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between;\r\n\t\tflex-direction: column;\r\n\r\n\t\t& .ck-style-grid__button__preview {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-content: center;\r\n\t\t\tjustify-content: flex-start;\r\n\t\t\talign-items: center;\r\n\t\t\tflex-grow: 1;\r\n\t\t\tflex-basis: 100%;\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-style-panel-button-width: 120px;\r\n\t--ck-style-panel-button-height: 80px;\r\n\t--ck-style-panel-button-label-background: hsl(0, 0%, 94.1%);\r\n\t--ck-style-panel-button-hover-label-background: hsl(0, 0%, 92.1%);\r\n\t--ck-style-panel-button-hover-border-color: hsl(0, 0%, 70%);\r\n}\r\n\r\n.ck.ck-style-panel .ck-style-grid {\r\n\trow-gap: var(--ck-spacing-large);\r\n\tcolumn-gap: var(--ck-spacing-large);\r\n\r\n\t& .ck-style-grid__button {\r\n\t\t--ck-color-button-default-hover-background: var(--ck-color-base-background);\r\n\t\t--ck-color-button-default-active-background: var(--ck-color-base-background);\r\n\r\n\t\tpadding: 0;\r\n\t\twidth: var(--ck-style-panel-button-width);\r\n\t\theight: var(--ck-style-panel-button-height);\r\n\r\n\t\t/* Let default .ck-button :focus styles apply */\r\n\t\t&:not(:focus) {\r\n\t\t\tborder: 1px solid var(--ck-color-base-border);\r\n\t\t}\r\n\r\n\t\t& .ck-button__label {\r\n\t\t\theight: 22px;\r\n\t\t\tline-height: 22px;\r\n\t\t\twidth: 100%;\r\n\t\t\tpadding: 0 var(--ck-spacing-medium);\r\n\t\t\toverflow: hidden;\r\n\t\t\ttext-overflow: ellipsis;\r\n\t\t\tflex-shrink: 0;\r\n\t\t}\r\n\r\n\t\t& .ck-style-grid__button__preview {\r\n\t\t\twidth: 100%;\r\n\t\t\toverflow: hidden;\r\n\t\t\topacity: .9;\r\n\r\n\t\t\tpadding: var(--ck-spacing-medium);\r\n\t\t\tbackground: var(--ck-color-base-background);\r\n\t\t\tborder: 2px solid var(--ck-color-base-background);\r\n\t\t}\r\n\r\n\t\t&.ck-disabled {\r\n\t\t\t--ck-color-button-default-disabled-background: var(--ck-color-base-foreground);\r\n\r\n\t\t\t/* Let default .ck-button :focus styles apply */\r\n\t\t\t&:not(:focus) {\r\n\t\t\t\tborder-color: var(--ck-style-panel-button-label-background);\r\n\t\t\t}\r\n\r\n\t\t\t& .ck-style-grid__button__preview {\r\n\t\t\t\topacity: .4;\r\n\r\n\t\t\t\tborder-color: var(--ck-color-base-foreground);\r\n\t\t\t\tfilter: saturate(.3);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.ck-on {\r\n\t\t\tborder-color: var(--ck-color-base-active);\r\n\r\n\t\t\t& .ck-button__label {\r\n\t\t\t\tbox-shadow: 0 -1px 0 var(--ck-color-base-active);\r\n\t\t\t\tz-index: 1; /* Stay on top of the preview with the shadow. */\r\n\t\t\t}\r\n\r\n\t\t\t&:hover {\r\n\t\t\t\tborder-color: var(--ck-color-base-active-focus);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&:not(.ck-on) {\r\n\t\t\t& .ck-button__label {\r\n\t\t\t\tbackground: var(--ck-style-panel-button-label-background);\r\n\t\t\t}\r\n\r\n\t\t\t&:hover .ck-button__label {\r\n\t\t\t\tbackground: var(--ck-style-panel-button-hover-label-background);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&:hover:not(.ck-disabled):not(.ck-on) {\r\n\t\t\tborder-color: var(--ck-style-panel-button-hover-border-color);\r\n\r\n\t\t\t& .ck-style-grid__button__preview {\r\n\t\t\t\topacity: 1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},8762:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-link/theme/linkactions.css","webpack://./../ckeditor5-ui/theme/mixins/_rwd.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-link/linkactions.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,CAGD,gJAME,aAEF,CDzED",sourcesContent:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n\r\n.ck.ck-link-actions {\r\n\tdisplay: flex;\r\n\tflex-direction: row;\r\n\tflex-wrap: nowrap;\r\n\r\n\t& .ck-link-actions__preview {\r\n\t\tdisplay: inline-block;\r\n\r\n\t\t& .ck-button__label {\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\t}\r\n\r\n\t@mixin ck-media-phone {\r\n\t\tflex-wrap: wrap;\r\n\r\n\t\t& .ck-link-actions__preview {\r\n\t\t\tflex-basis: 100%;\r\n\t\t}\r\n\r\n\t\t& .ck-button:not(.ck-link-actions__preview) {\r\n\t\t\tflex-basis: 50%;\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-phone {\r\n\t@media screen and (max-width: 600px) {\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_unselectable.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n@import "../mixins/_focus.css";\r\n@import "../mixins/_shadow.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n\r\n.ck.ck-link-actions {\r\n\t& .ck-button.ck-link-actions__preview {\r\n\t\tpadding-left: 0;\r\n\t\tpadding-right: 0;\r\n\r\n\t\t& .ck-button__label {\r\n\t\t\tpadding: 0 var(--ck-spacing-medium);\r\n\t\t\tcolor: var(--ck-color-link-default);\r\n\t\t\ttext-overflow: ellipsis;\r\n\t\t\tcursor: pointer;\r\n\r\n\t\t\t/* Match the box model of the link editor form\'s input so the balloon\r\n\t\t\tdoes not change width when moving between actions and the form. */\r\n\t\t\tmax-width: var(--ck-input-width);\r\n\t\t\tmin-width: 3em;\r\n\t\t\ttext-align: center;\r\n\r\n\t\t\t&:hover {\r\n\t\t\t\ttext-decoration: underline;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&,\r\n\t\t&:hover,\r\n\t\t&:focus,\r\n\t\t&:active {\r\n\t\t\tbackground: none;\r\n\t\t}\r\n\r\n\t\t&:active {\r\n\t\t\tbox-shadow: none;\r\n\t\t}\r\n\r\n\t\t&:focus {\r\n\t\t\t& .ck-button__label {\r\n\t\t\t\ttext-decoration: underline;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@mixin ck-dir ltr {\r\n\t\t& .ck-button:not(:first-child) {\r\n\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\t\t}\r\n\t}\r\n\r\n\t@mixin ck-dir rtl {\r\n\t\t& .ck-button:not(:last-child) {\r\n\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\t\t}\r\n\t}\r\n\r\n\t@mixin ck-media-phone {\r\n\t\t& .ck-button.ck-link-actions__preview {\r\n\t\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0;\r\n\r\n\t\t\t& .ck-button__label {\r\n\t\t\t\tmin-width: 0;\r\n\t\t\t\tmax-width: 100%;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t& .ck-button:not(.ck-link-actions__preview) {\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\tmargin-left: 0;\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tmargin-left: 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},8795:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-color-selector-column-resizer-hover: var(--ck-color-base-active);\r\n\t--ck-table-column-resizer-width: 7px;\r\n\r\n\t/* The offset used for absolute positioning of the resizer element, so that it is placed exactly above the cell border.\r\n\t The value is: minus half the width of the resizer decreased additionaly by the half the width of the border (0.5px). */\r\n\t--ck-table-column-resizer-position-offset: calc(var(--ck-table-column-resizer-width) * -0.5 - 0.5px);\r\n}\r\n\r\n.ck-content .table .ck-table-resized {\r\n\ttable-layout: fixed;\r\n}\r\n\r\n.ck-content .table table {\r\n\toverflow: hidden;\r\n}\r\n\r\n.ck-content .table td,\r\n.ck-content .table th {\r\n\t/* To prevent text overflowing beyond its cell when columns are resized by resize handler\r\n\t(https://github.com/ckeditor/ckeditor5/pull/14379#issuecomment-1589460978). */\r\n\toverflow-wrap: break-word;\r\n\tposition: relative;\r\n}\r\n\r\n.ck.ck-editor__editable .table .ck-table-column-resizer {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tbottom: 0;\r\n\tright: var(--ck-table-column-resizer-position-offset);\r\n\twidth: var(--ck-table-column-resizer-width);\r\n\tcursor: col-resize;\r\n\tuser-select: none;\r\n\tz-index: var(--ck-z-default);\r\n}\r\n\r\n.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer {\r\n\tdisplay: none;\r\n}\r\n\r\n/* The resizer elements, which are extended to an extremely high height, break the drag & drop feature in Chrome. To make it work again,\r\n all resizers must be hidden while the table is dragged. */\r\n.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer {\r\n\tdisplay: none;\r\n}\r\n\r\n.ck.ck-editor__editable .table .ck-table-column-resizer:hover,\r\n.ck.ck-editor__editable .table .ck-table-column-resizer__active {\r\n\tbackground-color: var(--ck-color-selector-column-resizer-hover);\r\n\topacity: 0.25;\r\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,\r\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\r\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\r\n\t unrealistic height for a single table. */\r\n\ttop: -999999px;\r\n\tbottom: -999999px;\r\n}\r\n\r\n.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer {\r\n\tleft: var(--ck-table-column-resizer-position-offset);\r\n\tright: unset;\r\n}\r\n"],sourceRoot:""}]);const a=s},8868:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-character-grid{max-width:100%}.ck.ck-character-grid .ck-character-grid__tiles{display:grid}:root{--ck-character-grid-tile-size:24px}.ck.ck-character-grid{overflow-x:hidden;overflow-y:auto}.ck.ck-character-grid .ck-character-grid__tiles{grid-template-columns:repeat(auto-fill,minmax(var(--ck-character-grid-tile-size),1fr));margin:var(--ck-spacing-standard) var(--ck-spacing-large);grid-gap:var(--ck-spacing-standard)}.ck.ck-character-grid .ck-character-grid__tile{border:0;font-size:1.5em;height:var(--ck-character-grid-tile-size);min-height:var(--ck-character-grid-tile-size);min-width:var(--ck-character-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-character-grid-tile-size)}@media (prefers-reduced-motion:reduce){.ck.ck-character-grid .ck-character-grid__tile{transition:none}}.ck.ck-character-grid .ck-character-grid__tile:focus:not(.ck-disabled),.ck.ck-character-grid .ck-character-grid__tile:hover:not(.ck-disabled){border:0;box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-character-grid .ck-character-grid__tile .ck-button__label{line-height:var(--ck-character-grid-tile-size);text-align:center;width:100%}","",{version:3,sources:["webpack://./../ckeditor5-special-characters/theme/charactergrid.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-special-characters/charactergrid.css"],names:[],mappings:"AAKA,sBACC,cAKD,CAHC,gDACC,YACD,CCFD,MACC,kCACD,CAEA,sBAEC,iBAAkB,CADlB,eAqCD,CAlCC,gDACC,sFAAyF,CACzF,yDAA0D,CAC1D,mCACD,CAEA,+CAQC,QAAS,CAHT,eAAgB,CAHhB,yCAA0C,CAE1C,6CAA8C,CAD9C,4CAA6C,CAG7C,SAAU,CACV,8BAA+B,CAN/B,wCA0BD,CAjBC,uCAVD,+CAWE,eAgBF,CAfC,CAEA,8IAGC,QAAS,CACT,iGACD,CAGA,iEACC,8CAA+C,CAE/C,iBAAkB,CADlB,UAED",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-character-grid {\r\n\tmax-width: 100%;\r\n\r\n\t& .ck-character-grid__tiles {\r\n\t\tdisplay: grid;\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n@import "../mixins/_rounded.css";\r\n\r\n:root {\r\n\t--ck-character-grid-tile-size: 24px;\r\n}\r\n\r\n.ck.ck-character-grid {\r\n\toverflow-y: auto;\r\n\toverflow-x: hidden;\r\n\r\n\t& .ck-character-grid__tiles {\r\n\t\tgrid-template-columns: repeat(auto-fill, minmax(var(--ck-character-grid-tile-size), 1fr));\r\n\t\tmargin: var(--ck-spacing-standard) var(--ck-spacing-large);\r\n\t\tgrid-gap: var(--ck-spacing-standard);\r\n\t}\r\n\r\n\t& .ck-character-grid__tile {\r\n\t\twidth: var(--ck-character-grid-tile-size);\r\n\t\theight: var(--ck-character-grid-tile-size);\r\n\t\tmin-width: var(--ck-character-grid-tile-size);\r\n\t\tmin-height: var(--ck-character-grid-tile-size);\r\n\t\tfont-size: 1.5em;\r\n\t\tpadding: 0;\r\n\t\ttransition: .2s ease box-shadow;\r\n\t\tborder: 0;\r\n\r\n\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\ttransition: none;\r\n\t\t}\r\n\r\n\t\t&:focus:not( .ck-disabled ),\r\n\t\t&:hover:not( .ck-disabled ) {\r\n\t\t\t/* Disable the default .ck-button\'s border ring. */\r\n\t\t\tborder: 0;\r\n\t\t\tbox-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);\r\n\t\t}\r\n\r\n\t\t/* Make sure the glyph is rendered in the center of the button */\r\n\t\t& .ck-button__label {\r\n\t\t\tline-height: var(--ck-character-grid-tile-size);\r\n\t\t\twidth: 100%;\r\n\t\t\ttext-align: center;\r\n\t\t}\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},8914:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,":root{--ck-html-object-embed-unfocused-outline-width:1px}.ck-widget.html-object-embed{background-color:var(--ck-color-base-foreground);font-size:var(--ck-font-size-base);min-width:calc(76px + var(--ck-spacing-standard));padding:var(--ck-spacing-small);padding-top:calc(var(--ck-font-size-tiny) + var(--ck-spacing-large))}.ck-widget.html-object-embed:not(.ck-widget_selected):not(:hover){outline:var(--ck-html-object-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border)}.ck-widget.html-object-embed:before{background:#999;border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius);color:var(--ck-color-base-background);content:attr(data-html-object-embed-label);font-family:var(--ck-font-face);font-size:var(--ck-font-size-tiny);font-style:normal;font-weight:400;left:var(--ck-spacing-standard);padding:calc(var(--ck-spacing-tiny) + var(--ck-html-object-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);position:absolute;top:0;transition:background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck-widget.html-object-embed .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before{margin-left:50px}.ck-widget.html-object-embed .html-object-embed__content{pointer-events:none}div.ck-widget.html-object-embed{margin:1em auto}span.ck-widget.html-object-embed{display:inline-block}","",{version:3,sources:["webpack://./../ckeditor5-html-support/theme/datafilter.css"],names:[],mappings:"AAKA,MACC,kDACD,CAEA,6BAEC,gDAAiD,CADjD,kCAAmC,CAKnC,iDAAkD,CAHlD,+BAAgC,CAEhC,oEAgCD,CA7BC,kEACC,wGACD,CAEA,oCAOC,eAA4B,CAG5B,iEAAkE,CAClE,qCAAsC,CAPtC,0CAA2C,CAS3C,+BAAgC,CADhC,kCAAmC,CAVnC,iBAAkB,CADlB,eAAmB,CAKnB,+BAAgC,CAGhC,yIAA0I,CAN1I,iBAAkB,CAElB,KAAM,CAGN,0GAMD,CAGA,2HACC,gBACD,CAEA,yDAEC,mBACD,CAGD,gCACC,eACD,CAEA,iCACC,oBACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-html-object-embed-unfocused-outline-width: 1px;\r\n}\r\n\r\n.ck-widget.html-object-embed {\r\n\tfont-size: var(--ck-font-size-base);\r\n\tbackground-color: var(--ck-color-base-foreground);\r\n\tpadding: var(--ck-spacing-small);\r\n\t/* Leave space for label */\r\n\tpadding-top: calc(var(--ck-font-size-tiny) + var(--ck-spacing-large));\r\n\tmin-width: calc(76px + var(--ck-spacing-standard));\r\n\r\n\t&:not(.ck-widget_selected):not(:hover) {\r\n\t\toutline: var(--ck-html-object-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border);\r\n\t}\r\n\r\n\t&::before {\r\n\t\tfont-weight: normal;\r\n\t\tfont-style: normal;\r\n\t\tposition: absolute;\r\n\t\tcontent: attr(data-html-object-embed-label);\r\n\t\ttop: 0;\r\n\t\tleft: var(--ck-spacing-standard);\r\n\t\tbackground: hsl(0deg 0% 60%);\r\n\t\ttransition: background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);\r\n\t\tpadding: calc(var(--ck-spacing-tiny) + var(--ck-html-object-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);\r\n\t\tborder-radius: 0 0 var(--ck-border-radius) var(--ck-border-radius);\r\n\t\tcolor: var(--ck-color-base-background);\r\n\t\tfont-size: var(--ck-font-size-tiny);\r\n\t\tfont-family: var(--ck-font-face);\r\n\t}\r\n\r\n\t/* Make space for label. */\r\n\t& .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before {\r\n\t\tmargin-left: 50px;\r\n\t}\r\n\r\n\t& .html-object-embed__content {\r\n\t\t/* Disable user interaction with embed content */\r\n\t\tpointer-events: none;\r\n\t}\r\n}\r\n\r\ndiv.ck-widget.html-object-embed {\r\n\tmargin: 1em auto;\r\n}\r\n\r\nspan.ck-widget.html-object-embed {\r\n\tdisplay: inline-block;\r\n}\r\n\r\n"],sourceRoot:""}]);const a=s},8986:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-table/theme/tablecellproperties.css","webpack://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-table-cell-properties-form {\r\n\t& .ck-form__row {\r\n\t\t&.ck-table-cell-properties-form__alignment-row {\r\n\t\t\tflex-wrap: wrap;\r\n\r\n\t\t\t& .ck.ck-toolbar {\r\n\t\t\t\t&:first-of-type {\r\n\t\t\t\t\t/* 4 buttons out of 7 (h-alignment + v-alignment) = 0.57 */\r\n\t\t\t\t\tflex-grow: 0.57;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:last-of-type {\r\n\t\t\t\t\t/* 3 buttons out of 7 (h-alignment + v-alignment) = 0.43 */\r\n\t\t\t\t\tflex-grow: 0.43;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t& .ck-button {\r\n\t\t\t\t\tflex-grow: 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-table-cell-properties-form {\r\n\twidth: 320px;\r\n\r\n\t& .ck-form__row {\r\n\t\t&.ck-table-cell-properties-form__padding-row {\r\n\t\t\talign-self: flex-end;\r\n\t\t\tpadding: 0;\r\n\t\t\twidth: 25%;\r\n\t\t}\r\n\r\n\t\t&.ck-table-cell-properties-form__alignment-row {\r\n\t\t\t& .ck.ck-toolbar {\r\n\t\t\t\tbackground: none;\r\n\r\n\t\t\t\t/* Compensate for missing input label that would push the margin (toolbar has no inputs). */\r\n\t\t\t\tmargin-top: var(--ck-spacing-standard);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},8991:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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,CAFA,wDApEA,MAAO,CAGP,iBAAkB,CAFlB,cAAe,CACf,WAoEA,CAhED,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,CAFA,wGAtGC,MAAO,CAGP,iBAAkB,CAFlB,cAAe,CACf,WAsGD,CAlGA,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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-todo-list-checkmark-size: 16px;\r\n}\r\n\r\n@define-mixin todo-list-checkbox {\r\n\t-webkit-appearance: none;\r\n\tdisplay: inline-block;\r\n\tposition: relative;\r\n\twidth: var(--ck-todo-list-checkmark-size);\r\n\theight: var(--ck-todo-list-checkmark-size);\r\n\tvertical-align: middle;\r\n\r\n\t/* Needed on iOS */\r\n\tborder: 0;\r\n\r\n\t/* LTR styles */\r\n\tleft: -25px;\r\n\tmargin-right: -15px;\r\n\tright: 0;\r\n\tmargin-left: 0;\r\n\r\n\t/* RTL styles */\r\n\t@nest [dir=rtl]& {\r\n\t\tleft: 0;\r\n\t\tmargin-right: 0;\r\n\t\tright: -25px;\r\n\t\tmargin-left: -15px;\r\n\t}\r\n\r\n\t&::before {\r\n\t\tdisplay: block;\r\n\t\tposition: absolute;\r\n\t\tbox-sizing: border-box;\r\n\t\tcontent: '';\r\n\t\twidth: 100%;\r\n\t\theight: 100%;\r\n\t\tborder: 1px solid hsl(0, 0%, 20%);\r\n\t\tborder-radius: 2px;\r\n\t\ttransition: 250ms ease-in-out box-shadow;\r\n\r\n\t\t@media (prefers-reduced-motion: reduce) {\r\n\t\t\ttransition: none;\r\n\t\t}\r\n\t}\r\n\r\n\t&::after {\r\n\t\tdisplay: block;\r\n\t\tposition: absolute;\r\n\t\tbox-sizing: content-box;\r\n\t\tpointer-events: none;\r\n\t\tcontent: '';\r\n\r\n\t\t/* Calculate tick position, size and border-width proportional to the checkmark size. */\r\n\t\tleft: calc( var(--ck-todo-list-checkmark-size) / 3 );\r\n\t\ttop: calc( var(--ck-todo-list-checkmark-size) / 5.3 );\r\n\t\twidth: calc( var(--ck-todo-list-checkmark-size) / 5.3 );\r\n\t\theight: calc( var(--ck-todo-list-checkmark-size) / 2.6 );\r\n\t\tborder-style: solid;\r\n\t\tborder-color: transparent;\r\n\t\tborder-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0;\r\n\t\ttransform: rotate(45deg);\r\n\t}\r\n\r\n\t&[checked] {\r\n\t\t&::before {\r\n\t\t\tbackground: hsl(126, 64%, 41%);\r\n\t\t\tborder-color: hsl(126, 64%, 41%);\r\n\t\t}\r\n\r\n\t\t&::after {\r\n\t\t\tborder-color: hsl(0, 0%, 100%);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/*\r\n * To-do list content styles.\r\n */\r\n.ck-content .todo-list {\r\n\tlist-style: none;\r\n\r\n\t& li {\r\n\t\tposition: relative;\r\n\t\tmargin-bottom: 5px;\r\n\r\n\t\t& .todo-list {\r\n\t\t\tmargin-top: 5px;\r\n\t\t}\r\n\t}\r\n\r\n\t& .todo-list__label {\r\n\t\t& > input {\r\n\t\t\t@mixin todo-list-checkbox;\r\n\t\t}\r\n\r\n\t\t& .todo-list__label__description {\r\n\t\t\tvertical-align: middle;\r\n\t\t}\r\n\r\n\t\t&.todo-list__label_without-description input[type=checkbox] {\r\n\t\t\tposition: absolute;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/*\r\n * To-do list editing view styles.\r\n */\r\n.ck-editor__editable.ck-content .todo-list .todo-list__label {\r\n\t/*\r\n\t * To-do list should be interactive only during the editing\r\n\t * (https://github.com/ckeditor/ckeditor5/issues/2090).\r\n\t */\r\n\t& > input,\r\n\t& > span[contenteditable=false] > input {\r\n\t\tcursor: pointer;\r\n\r\n\t\t&:hover::before {\r\n\t\t\tbox-shadow: 0 0 0 5px hsla(0, 0%, 0%, 0.1);\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * Document Lists - editing view has an additional span around checkbox.\r\n\t */\r\n\t& > span[contenteditable=false] > input {\r\n\t\t@mixin todo-list-checkbox;\r\n\t}\r\n\r\n\t&.todo-list__label_without-description {\r\n\t\t& input[type=checkbox] {\r\n\t\t\tposition: absolute;\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},9047:(t,e,n)=>{const r=n(9246),i=n(802),o={};Object.keys(r).forEach((t=>{o[t]={},Object.defineProperty(o[t],"channels",{value:r[t].channels}),Object.defineProperty(o[t],"labels",{value:r[t].labels});const e=i(t);Object.keys(e).forEach((n=>{const r=e[n];o[t][n]=function(t){const e=function(...e){const n=e[0];if(null==n)return n;n.length>1&&(e=n);const r=t(e);if("object"==typeof r)for(let t=r.length,e=0;e1&&(e=n),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}(r)}))})),t.exports=o},9055:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-mention-list-max-height: 300px;\r\n}\r\n\r\n.ck.ck-mentions {\r\n\tmax-height: var(--ck-mention-list-max-height);\r\n\r\n\toverflow-y: auto;\r\n\r\n\t/* Prevent unnecessary horizontal scrollbar in Safari\r\n\thttps://github.com/ckeditor/ckeditor5-mention/issues/41 */\r\n\toverflow-x: hidden;\r\n\r\n\toverscroll-behavior: contain;\r\n\r\n\t/* Prevent unnecessary vertical scrollbar in Safari\r\n\thttps://github.com/ckeditor/ckeditor5-mention/issues/41 */\r\n\t& > .ck-list__item {\r\n\t\toverflow: hidden;\r\n\t\tflex-shrink: 0;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},9108:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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{border-radius:0}.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{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-menu-bar-menu-panel-max-width)}.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://./../ckeditor5-ui/theme/components/menubar/menubarmenupanel.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenupanel.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css","webpack://./../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,mDCFC,eDoCD,CAlCA,6ICEE,qCDgCF,CAlCA,mDAIC,oDAAqD,CACrD,sDAAuD,CACvD,QAAS,CEVT,oCAA8B,CFW9B,kBAAmB,CACnB,iDA0BD,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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-menu-bar-menu-max-width: 75vw;\r\n\t--ck-menu-bar-nested-menu-horizontal-offset: 5px;\r\n}\r\n\r\n.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel {\r\n\tz-index: var(--ck-z-panel);\r\n\tmax-width: var(--ck-menu-bar-menu-max-width);\r\n\tposition: absolute;\r\n\r\n\t&.ck-menu-bar__menu__panel_position_ne,\r\n\t&.ck-menu-bar__menu__panel_position_nw {\r\n\t\tbottom: 100%;\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_se,\r\n\t&.ck-menu-bar__menu__panel_position_sw {\r\n\t\ttop: 100%;\r\n\t\tbottom: auto;\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_ne,\r\n\t&.ck-menu-bar__menu__panel_position_se {\r\n\t\tleft: 0px;\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_nw,\r\n\t&.ck-menu-bar__menu__panel_position_sw {\r\n\t\tright: 0px;\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_es,\r\n\t&.ck-menu-bar__menu__panel_position_en {\r\n\t\tleft: calc( 100% - var(--ck-menu-bar-nested-menu-horizontal-offset) );\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_es {\r\n\t\ttop: 0px;\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_en {\r\n\t\tbottom: 0px;\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_ws,\r\n\t&.ck-menu-bar__menu__panel_position_wn {\r\n\t\tright: calc( 100% - var(--ck-menu-bar-nested-menu-horizontal-offset) );\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_ws {\r\n\t\ttop: 0px;\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_wn {\r\n\t\tbottom: 0px;\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n@import "../../../mixins/_shadow.css";\r\n@import "../../../mixins/_focus.css";\r\n\r\n:root {\r\n\t--ck-menu-bar-menu-panel-max-width: 75vw;\r\n}\r\n\r\n.ck.ck-menu-bar__menu > .ck.ck-menu-bar__menu__panel {\r\n\t@mixin ck-rounded-corners;\r\n\t@mixin ck-drop-shadow;\r\n\r\n\tbackground: var(--ck-color-dropdown-panel-background);\r\n\tborder: 1px solid var(--ck-color-dropdown-panel-border);\r\n\tbottom: 0;\r\n\theight: fit-content;\r\n\tmax-width: var(--ck-menu-bar-menu-panel-max-width);\r\n\r\n\t/* Corner border radius consistent with the button. */\r\n\t&.ck-menu-bar__menu__panel_position_es,\r\n\t&.ck-menu-bar__menu__panel_position_se {\r\n\t\tborder-top-left-radius: 0;\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_ws,\r\n\t&.ck-menu-bar__menu__panel_position_sw {\r\n\t\tborder-top-right-radius: 0;\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_en,\r\n\t&.ck-menu-bar__menu__panel_position_ne {\r\n\t\tborder-bottom-left-radius: 0;\r\n\t}\r\n\r\n\t&.ck-menu-bar__menu__panel_position_wn,\r\n\t&.ck-menu-bar__menu__panel_position_nw {\r\n\t\tborder-bottom-right-radius: 0;\r\n\t}\r\n\r\n\t&:focus {\r\n\t\toutline: none;\r\n\t}\r\n}\r\n\r\n.ck.ck-menu-bar {\r\n\t& .ck-list-item-button {\r\n\t\t&:focus,\r\n\t\t&:active {\r\n\t\t\tborder-color: transparent;\r\n\t\t\tbox-shadow: none;\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-menu-bar_focus-border-enabled .ck-list-item-button {\r\n\t\t&:focus,\r\n\t\t&:active {\r\n\t\t\t/* Fix truncated shadows due to rendering order. */\r\n\t\t\tposition: relative;\r\n\t\t\tz-index: 2;\r\n\r\n\t\t\t@mixin ck-focus-ring;\r\n\t\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A visual style of focused element's border.\r\n */\r\n@define-mixin ck-focus-ring {\r\n\t/* Disable native outline. */\r\n\toutline: none;\r\n\tborder: var(--ck-focus-ring)\r\n}\r\n"],sourceRoot:""}]);const a=s},9205:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/tooltip/tooltip.css","webpack://./../ckeditor5-ui/theme/mixins/_unselectable.css","webpack://./../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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../mixins/_unselectable.css";\r\n\r\n.ck.ck-balloon-panel.ck-tooltip {\r\n\t@mixin ck-unselectable;\r\n\r\n\tz-index: calc( var(--ck-z-dialog) + 100 );\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Makes element unselectable.\r\n */\r\n@define-mixin ck-unselectable {\r\n\t-moz-user-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n\r\n.ck.ck-balloon-panel.ck-tooltip {\r\n\t--ck-balloon-border-width: 0px;\r\n\t--ck-balloon-arrow-offset: 0px;\r\n\t--ck-balloon-arrow-half-width: 4px;\r\n\t--ck-balloon-arrow-height: 4px;\r\n\t--ck-tooltip-text-padding: 4px;\r\n\t--ck-color-panel-background: var(--ck-color-tooltip-background);\r\n\r\n\tpadding: 0 var(--ck-spacing-medium);\r\n\r\n\t& .ck-tooltip__text {\r\n\t\tfont-size: .9em;\r\n\t\tline-height: 1.5;\r\n\t\tcolor: var(--ck-color-tooltip-text);\r\n\t}\r\n\r\n\t&.ck-tooltip_multi-line .ck-tooltip__text {\r\n\t\twhite-space: break-spaces;\r\n\t\tdisplay: inline-block;\r\n\t\tpadding: var(--ck-tooltip-text-padding) 0;\r\n\t\tmax-width: 200px;\r\n\t}\r\n\r\n\t/* Reset balloon panel styles */\r\n\tbox-shadow: none;\r\n\r\n\t/* Hide the default shadow of the .ck-balloon-panel tip */\r\n\t&::before {\r\n\t\tdisplay: none;\r\n\t}\r\n}\r\n'],sourceRoot:""}]);const a=s},9246:(t,e,n)=>{const r=n(6931),i={};for(const t of Object.keys(r))i[r[t]]=t;const o={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"]}};t.exports=o;for(const t of Object.keys(o)){if(!("channels"in o[t]))throw new Error("missing channels property: "+t);if(!("labels"in o[t]))throw new Error("missing channel labels property: "+t);if(o[t].labels.length!==o[t].channels)throw new Error("channel and label counts mismatch: "+t);const{channels:e,labels:n}=o[t];delete o[t].channels,delete o[t].labels,Object.defineProperty(o[t],"channels",{value:e}),Object.defineProperty(o[t],"labels",{value:n})}o.rgb.hsl=function(t){const e=t[0]/255,n=t[1]/255,r=t[2]/255,i=Math.min(e,n,r),o=Math.max(e,n,r),s=o-i;let a,l;o===i?a=0:e===o?a=(n-r)/s:n===o?a=2+(r-e)/s:r===o&&(a=4+(e-n)/s),a=Math.min(60*a,360),a<0&&(a+=360);const c=(i+o)/2;return l=o===i?0:c<=.5?s/(o+i):s/(2-o-i),[a,100*l,100*c]},o.rgb.hsv=function(t){let e,n,r,i,o;const s=t[0]/255,a=t[1]/255,l=t[2]/255,c=Math.max(s,a,l),d=c-Math.min(s,a,l),h=function(t){return(c-t)/6/d+.5};return 0===d?(i=0,o=0):(o=d/c,e=h(s),n=h(a),r=h(l),s===c?i=r-n:a===c?i=1/3+e-r:l===c&&(i=2/3+n-e),i<0?i+=1:i>1&&(i-=1)),[360*i,100*o,100*c]},o.rgb.hwb=function(t){const e=t[0],n=t[1];let r=t[2];const i=o.rgb.hsl(t)[0],s=1/255*Math.min(e,Math.min(n,r));return r=1-1/255*Math.max(e,Math.max(n,r)),[i,100*s,100*r]},o.rgb.cmyk=function(t){const e=t[0]/255,n=t[1]/255,r=t[2]/255,i=Math.min(1-e,1-n,1-r);return[100*((1-e-i)/(1-i)||0),100*((1-n-i)/(1-i)||0),100*((1-r-i)/(1-i)||0),100*i]},o.rgb.keyword=function(t){const e=i[t];if(e)return e;let n,o=1/0;for(const e of Object.keys(r)){const i=r[e],l=(a=i,((s=t)[0]-a[0])**2+(s[1]-a[1])**2+(s[2]-a[2])**2);l.04045?((e+.055)/1.055)**2.4:e/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;return[100*(.4124*e+.3576*n+.1805*r),100*(.2126*e+.7152*n+.0722*r),100*(.0193*e+.1192*n+.9505*r)]},o.rgb.lab=function(t){const e=o.rgb.xyz(t);let n=e[0],r=e[1],i=e[2];n/=95.047,r/=100,i/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;return[116*r-16,500*(n-r),200*(r-i)]},o.hsl.rgb=function(t){const e=t[0]/360,n=t[1]/100,r=t[2]/100;let i,o,s;if(0===n)return s=255*r,[s,s,s];i=r<.5?r*(1+n):r+n-r*n;const a=2*r-i,l=[0,0,0];for(let t=0;t<3;t++)o=e+1/3*-(t-1),o<0&&o++,o>1&&o--,s=6*o<1?a+6*(i-a)*o:2*o<1?i:3*o<2?a+(i-a)*(2/3-o)*6:a,l[t]=255*s;return l},o.hsl.hsv=function(t){const e=t[0];let n=t[1]/100,r=t[2]/100,i=n;const o=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,i*=o<=1?o:2-o;return[e,100*(0===r?2*i/(o+i):2*n/(r+n)),100*((r+n)/2)]},o.hsv.rgb=function(t){const e=t[0]/60,n=t[1]/100;let r=t[2]/100;const i=Math.floor(e)%6,o=e-Math.floor(e),s=255*r*(1-n),a=255*r*(1-n*o),l=255*r*(1-n*(1-o));switch(r*=255,i){case 0:return[r,l,s];case 1:return[a,r,s];case 2:return[s,r,l];case 3:return[s,a,r];case 4:return[l,s,r];case 5:return[r,s,a]}},o.hsv.hsl=function(t){const e=t[0],n=t[1]/100,r=t[2]/100,i=Math.max(r,.01);let o,s;s=(2-n)*r;const a=(2-n)*i;return o=n*i,o/=a<=1?a:2-a,o=o||0,s/=2,[e,100*o,100*s]},o.hwb.rgb=function(t){const e=t[0]/360;let n=t[1]/100,r=t[2]/100;const i=n+r;let o;i>1&&(n/=i,r/=i);const s=Math.floor(6*e),a=1-r;o=6*e-s,1&s&&(o=1-o);const l=n+o*(a-n);let c,d,h;switch(s){default:case 6:case 0:c=a,d=l,h=n;break;case 1:c=l,d=a,h=n;break;case 2:c=n,d=a,h=l;break;case 3:c=n,d=l,h=a;break;case 4:c=l,d=n,h=a;break;case 5:c=a,d=n,h=l}return[255*c,255*d,255*h]},o.cmyk.rgb=function(t){const e=t[0]/100,n=t[1]/100,r=t[2]/100,i=t[3]/100;return[255*(1-Math.min(1,e*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},o.xyz.rgb=function(t){const e=t[0]/100,n=t[1]/100,r=t[2]/100;let i,o,s;return i=3.2406*e+-1.5372*n+-.4986*r,o=-.9689*e+1.8758*n+.0415*r,s=.0557*e+-.204*n+1.057*r,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,s=s>.0031308?1.055*s**(1/2.4)-.055:12.92*s,i=Math.min(Math.max(0,i),1),o=Math.min(Math.max(0,o),1),s=Math.min(Math.max(0,s),1),[255*i,255*o,255*s]},o.xyz.lab=function(t){let e=t[0],n=t[1],r=t[2];e/=95.047,n/=100,r/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;return[116*n-16,500*(e-n),200*(n-r)]},o.lab.xyz=function(t){let e,n,r;n=(t[0]+16)/116,e=t[1]/500+n,r=n-t[2]/200;const i=n**3,o=e**3,s=r**3;return n=i>.008856?i:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,r=s>.008856?s:(r-16/116)/7.787,e*=95.047,n*=100,r*=108.883,[e,n,r]},o.lab.lch=function(t){const e=t[0],n=t[1],r=t[2];let i;i=360*Math.atan2(r,n)/2/Math.PI,i<0&&(i+=360);return[e,Math.sqrt(n*n+r*r),i]},o.lch.lab=function(t){const e=t[0],n=t[1],r=t[2]/360*2*Math.PI;return[e,n*Math.cos(r),n*Math.sin(r)]},o.rgb.ansi16=function(t,e=null){const[n,r,i]=t;let s=null===e?o.rgb.hsv(t)[2]:e;if(s=Math.round(s/50),0===s)return 30;let a=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return 2===s&&(a+=60),a},o.hsv.ansi16=function(t){return o.rgb.ansi16(o.hsv.rgb(t),t[2])},o.rgb.ansi256=function(t){const e=t[0],n=t[1],r=t[2];if(e===n&&n===r)return e<8?16:e>248?231:Math.round((e-8)/247*24)+232;return 16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},o.ansi16.rgb=function(t){let e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];const n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},o.ansi256.rgb=function(t){if(t>=232){const e=10*(t-232)+8;return[e,e,e]}let e;t-=16;return[Math.floor(t/36)/5*255,Math.floor((e=t%36)/6)/5*255,e%6/5*255]},o.rgb.hex=function(t){const e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},o.hex.rgb=function(t){const e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let n=e[0];3===e[0].length&&(n=n.split("").map((t=>t+t)).join(""));const r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},o.rgb.hcg=function(t){const e=t[0]/255,n=t[1]/255,r=t[2]/255,i=Math.max(Math.max(e,n),r),o=Math.min(Math.min(e,n),r),s=i-o;let a,l;return a=s<1?o/(1-s):0,l=s<=0?0:i===e?(n-r)/s%6:i===n?2+(r-e)/s:4+(e-n)/s,l/=6,l%=1,[360*l,100*s,100*a]},o.hsl.hcg=function(t){const e=t[1]/100,n=t[2]/100,r=n<.5?2*e*n:2*e*(1-n);let i=0;return r<1&&(i=(n-.5*r)/(1-r)),[t[0],100*r,100*i]},o.hsv.hcg=function(t){const e=t[1]/100,n=t[2]/100,r=e*n;let i=0;return r<1&&(i=(n-r)/(1-r)),[t[0],100*r,100*i]},o.hcg.rgb=function(t){const e=t[0]/360,n=t[1]/100,r=t[2]/100;if(0===n)return[255*r,255*r,255*r];const i=[0,0,0],o=e%1*6,s=o%1,a=1-s;let l=0;switch(Math.floor(o)){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-n)*r,[255*(n*i[0]+l),255*(n*i[1]+l),255*(n*i[2]+l)]},o.hcg.hsv=function(t){const e=t[1]/100,n=e+t[2]/100*(1-e);let r=0;return n>0&&(r=e/n),[t[0],100*r,100*n]},o.hcg.hsl=function(t){const e=t[1]/100,n=t[2]/100*(1-e)+.5*e;let r=0;return n>0&&n<.5?r=e/(2*n):n>=.5&&n<1&&(r=e/(2*(1-n))),[t[0],100*r,100*n]},o.hcg.hwb=function(t){const e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},o.hwb.hcg=function(t){const e=t[1]/100,n=1-t[2]/100,r=n-e;let i=0;return r<1&&(i=(n-r)/(1-r)),[t[0],100*r,100*i]},o.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},o.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},o.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},o.gray.hsl=function(t){return[0,0,t[0]]},o.gray.hsv=o.gray.hsl,o.gray.hwb=function(t){return[0,100,t[0]]},o.gray.cmyk=function(t){return[0,0,0,t[0]]},o.gray.lab=function(t){return[t[0],0,0]},o.gray.hex=function(t){const e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(n.length)+n},o.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}},9372:t=>{"use strict";function e(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=t&&("undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"]);if(null==n)return;var r,i,o=[],s=!0,a=!1;try{for(n=n.call(t);!(s=(r=n.next()).done)&&(o.push(r.value),!e||o.length!==e);s=!0);}catch(t){a=!0,i=t}finally{try{s||null==n.return||n.return()}finally{if(a)throw i}}return o}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return n(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-theme-lark/theme/ckeditor5-mention/mention.css"],names:[],mappings:"AAKA,MACC,+CAAwD,CACxD,+BACD,CAEA,qBACC,6CAA8C,CAC9C,kCACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-color-mention-background: hsla(341, 100%, 30%, 0.1);\r\n\t--ck-color-mention-text: hsl(341, 100%, 30%);\r\n}\r\n\r\n.ck-content .mention {\r\n\tbackground: var(--ck-color-mention-background);\r\n\tcolor: var(--ck-color-mention-text);\r\n}\r\n"],sourceRoot:""}]);const a=s},9481:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/menubar/menubarmenulistitem.css"],names:[],mappings:"AAKA,MACC,sCACD,CAEA,kDACC,gDACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n:root {\r\n\t--ck-menu-bar-menu-item-min-width: 18em;\r\n}\r\n\r\n.ck.ck-menu-bar__menu .ck.ck-menu-bar__menu__item {\r\n\tmin-width: var(--ck-menu-bar-menu-item-min-width);\r\n}\r\n"],sourceRoot:""}]);const a=s},9529:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/highlightedtext/highlightedtext.css"],names:[],mappings:"AAKA,6BACC,+CAAgD,CAIhD,iBAAkB,CAFlB,mBAAoB,CACpB,mBAAoB,CAFpB,sBAID",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-highlighted-text mark {\r\n\tbackground: var(--ck-color-highlight-background);\r\n\tvertical-align: initial;\r\n\tfont-weight: inherit;\r\n\tline-height: inherit;\r\n\tfont-size: inherit;\r\n}\r\n"],sourceRoot:""}]);const a=s},9554:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/dropdown/menu/dropdownmenubutton.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/menu/dropdownmenubutton.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_disabled.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,CAhBA,sHAOE,6CAAgD,CAHhD,wBAYF,CAhBA,sHAcE,4CAA+C,CAH/C,uBAKF,CAEA,wHClDA,kCDoDA,CAGC,6FACC,oCACD,CAEA,sHAIC,sCAAuC,CAHvC,gCAID,CAIA,6FACC,qCACD,CAEA,sHACC,+BAAgC,CAGhC,oCACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-dropdown-menu-list__nested-menu__button > .ck-dropdown-menu-list__nested-menu__button__arrow {\r\n\tpointer-events: none;\r\n\tz-index: var(--ck-z-default);\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../../mixins/_disabled.css";\r\n@import "../../../mixins/_button.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n/*\r\n * All menu buttons.\r\n */\r\n.ck.ck-button.ck-dropdown-menu-list__nested-menu__button {\r\n\twidth: 100%;\r\n\tpadding: var(--ck-spacing-tiny) calc(2 * var(--ck-spacing-standard));\r\n\tborder-radius: 0;\r\n\r\n\t&:focus {\r\n\t\tborder-color: transparent;\r\n\t\tbox-shadow: none;\r\n\r\n\t\t&:not(.ck-on) {\r\n\t\t\tbackground: var(--ck-color-button-default-hover-background);\r\n\t\t}\r\n\t}\r\n\r\n\t& > .ck-button__label {\r\n\t\tflex-grow: 1;\r\n\t\toverflow: hidden;\r\n\t\ttext-overflow: ellipsis;\r\n\t}\r\n\r\n\t&.ck-disabled > .ck-button__label {\r\n\t\t@mixin ck-disabled;\r\n\t}\r\n\r\n\t/* Spacing in buttons that miss the icon. */\r\n\t&.ck-icon-spacing:not(:has(.ck-button__icon)) > .ck-button__label {\r\n\t\tmargin-left: calc(var(--ck-icon-size) - var(--ck-spacing-small));\r\n\t}\r\n\r\n\t& > .ck-dropdown-menu-list__nested-menu__button__arrow {\r\n\t\twidth: var(--ck-dropdown-arrow-size);\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\ttransform: rotate(-90deg);\r\n\r\n\t\t\t/* Nudge the arrow gently to the right because its center of gravity is to the left */\r\n\t\t\tmargin-right: calc(-1 * var(--ck-spacing-small));\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\ttransform: rotate(90deg);\r\n\r\n\t\t\t/* Nudge the arrow gently to the left because its center of gravity is to the right (after rotation). */\r\n\t\t\tmargin-left: calc(-1 * var(--ck-spacing-small));\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-disabled > .ck-dropdown-menu-list__nested-menu__button__arrow {\r\n\t\t@mixin ck-disabled;\r\n\t}\r\n\r\n\t@mixin ck-dir ltr {\r\n\t\t&:not(.ck-button_with-text) {\r\n\t\t\tpadding-left: var(--ck-spacing-small);\r\n\t\t}\r\n\r\n\t\t& > .ck-dropdown-menu-list__nested-menu__button__arrow {\r\n\t\t\tright: var(--ck-spacing-standard);\r\n\r\n\t\t\t/* A space to accommodate the triangle. */\r\n\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\t\t}\r\n\t}\r\n\r\n\t@mixin ck-dir rtl {\r\n\t\t&:not(.ck-button_with-text) {\r\n\t\t\tpadding-right: var(--ck-spacing-small);\r\n\t\t}\r\n\r\n\t\t& > .ck-dropdown-menu-list__nested-menu__button__arrow {\r\n\t\t\tleft: var(--ck-spacing-standard);\r\n\r\n\t\t\t/* A space to accommodate the triangle. */\r\n\t\t\tmargin-right: var(--ck-spacing-small);\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A class which indicates that an element holding it is disabled.\r\n */\r\n@define-mixin ck-disabled {\r\n\topacity: var(--ck-disabled-opacity);\r\n}\r\n"],sourceRoot:""}]);const a=s},9627:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-find-and-replace-form{max-width:100%}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions,.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs{display:flex}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions.ck-find-and-replace-form__inputs .ck-results-counter,.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs.ck-find-and-replace-form__inputs .ck-results-counter{position:absolute}.ck.ck-find-and-replace-form{width:400px}.ck.ck-find-and-replace-form:focus{outline:none}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions,.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs{align-content:stretch;align-items:center;flex:1 1 auto;flex-direction:row;flex-wrap:wrap;margin:0;padding:var(--ck-spacing-large)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions>.ck-button,.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-button{flex:0 0 auto}[dir=ltr] .ck.ck-find-and-replace-form .ck-find-and-replace-form__actions>*+*,[dir=ltr] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>*+*{margin-left:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-find-and-replace-form .ck-find-and-replace-form__actions>*+*,[dir=rtl] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>*+*{margin-right:var(--ck-spacing-standard)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions .ck-labeled-field-view,.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-labeled-field-view{flex:1 1 auto}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions .ck-labeled-field-view .ck-input,.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-labeled-field-view .ck-input{min-width:50px;width:100%}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs{align-items:flex-start}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-button-prev>.ck-icon{transform:rotate(90deg)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-button-next>.ck-icon{transform:rotate(-90deg)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-results-counter{top:50%;transform:translateY(-50%)}[dir=ltr] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-results-counter{right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-results-counter{left:var(--ck-spacing-standard)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs .ck-results-counter{color:var(--ck-color-base-border)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-labeled-field-replace{flex:0 0 100%;padding-top:var(--ck-spacing-standard)}[dir=ltr] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-labeled-field-replace{margin-left:0}[dir=rtl] .ck.ck-find-and-replace-form .ck-find-and-replace-form__inputs>.ck-labeled-field-replace{margin-right:0}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions{flex-wrap:wrap;justify-content:flex-end;margin-top:calc(var(--ck-spacing-large)*-1)}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions>.ck-button-find{font-weight:700}.ck.ck-find-and-replace-form .ck-find-and-replace-form__actions>.ck-button-find .ck-button__label{padding-left:var(--ck-spacing-large);padding-right:var(--ck-spacing-large)}.ck.ck-find-and-replace-form .ck-switchbutton{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;width:100%}@media screen and (max-width:600px){.ck.ck-find-and-replace-form{max-width:100%;width:300px}.ck.ck-find-and-replace-form.ck-find-and-replace-form__input{flex-wrap:wrap}.ck.ck-find-and-replace-form.ck-find-and-replace-form__input .ck-labeled-field-view{flex:1 0 auto;margin-bottom:var(--ck-spacing-standard);width:100%}.ck.ck-find-and-replace-form.ck-find-and-replace-form__input>.ck-button{text-align:center}.ck.ck-find-and-replace-form.ck-find-and-replace-form__input>.ck-button:first-of-type{flex:1 1 auto}[dir=ltr] .ck.ck-find-and-replace-form.ck-find-and-replace-form__input>.ck-button:first-of-type{margin-left:0}[dir=rtl] .ck.ck-find-and-replace-form.ck-find-and-replace-form__input>.ck-button:first-of-type{margin-right:0}.ck.ck-find-and-replace-form.ck-find-and-replace-form__input>.ck-button:first-of-type .ck-button__label{text-align:center;width:100%}.ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view){flex:1 1 auto;flex-wrap:wrap}.ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view)>.ck-button{text-align:center}.ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view)>.ck-button:first-of-type{flex:1 1 auto}[dir=ltr] .ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view)>.ck-button:first-of-type{margin-left:0}[dir=rtl] .ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view)>.ck-button:first-of-type{margin-right:0}.ck.ck-find-and-replace-form.ck-find-and-replace-form__actions>:not(.ck-labeled-field-view)>.ck-button .ck-button__label{text-align:center;width:100%}}","",{version:3,sources:["webpack://./../ckeditor5-find-and-replace/theme/findandreplaceform.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-find-and-replace/findandreplaceform.css","webpack://./../ckeditor5-ui/theme/mixins/_rwd.css"],names:[],mappings:"AAKA,6BACC,cAUD,CARC,+HACC,YAMD,CAHC,yOACC,iBACD,CCNF,6BACC,WAoHD,CA9GC,mCACC,YACD,CAGA,+HAMC,qBAAsB,CADtB,kBAAmB,CAHnB,aAAc,CACd,kBAAmB,CACnB,cAAe,CAKf,QAAS,CADT,+BA4BD,CAzBC,qJACC,aACD,CAGC,2JACC,sCACD,CAIA,2JACC,uCACD,CAGD,6KACC,aAMD,CAJC,iMAEC,cAAe,CADf,UAED,CAMF,+DAEC,sBAqCD,CAnCC,wFACC,uBACD,CAEA,wFACC,wBACD,CAEA,mFACC,OAAQ,CACR,0BAWD,CAbA,6FAKE,gCAQF,CAbA,6FASE,+BAIF,CAbA,mFAYC,iCACD,CAEA,yFACC,aAAc,CACd,sCASD,CAXA,mGAKE,aAMF,CAXA,mGASE,cAEF,CAID,gEACC,cAAe,CACf,wBAAyB,CACzB,2CAWD,CATC,gFACC,eAOD,CAJC,kGACC,oCAAqC,CACrC,qCACD,CAIF,8CAMC,kBAAmB,CAJnB,YAAa,CACb,kBAAmB,CACnB,gBAAiB,CACjB,6BAA8B,CAJ9B,UAMD,CCtHA,oCD0HA,6BAIC,cAAe,CAHf,WA+DD,CAzDC,6DACC,cA4BD,CA1BC,oFACC,aAAc,CAEd,wCAAyC,CADzC,UAED,CAEA,wEACC,iBAkBD,CAhBC,sFACC,aAcD,CAfA,gGAIE,aAWF,CAfA,gGAQE,cAOF,CAJC,wGAEC,iBAAkB,CADlB,UAED,CAMH,4FAEC,aAAc,CADd,cAuBD,CApBC,uGACC,iBAkBD,CAhBC,qHACC,aASD,CAVA,+HAIE,aAMF,CAVA,+HAQE,cAEF,CAEA,yHAEC,iBAAkB,CADlB,UAED,CCrLH",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-find-and-replace-form {\r\n\tmax-width: 100%;\r\n\r\n\t& .ck-find-and-replace-form__inputs, .ck-find-and-replace-form__actions {\r\n\t\tdisplay: flex;\r\n\r\n\t\t/* The inputs area styles */\r\n\t\t&.ck-find-and-replace-form__inputs .ck-results-counter {\r\n\t\t\tposition: absolute;\r\n\t\t}\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-find-and-replace-form {\r\n\twidth: 400px;\r\n\r\n\t/*\r\n\t * The
                needs tabindex="-1" for proper Esc handling after being clicked\r\n\t * but the side effect is that this creates a nasty focus outline in some browsers.\r\n\t */\r\n\t&:focus {\r\n\t\toutline: none;\r\n\t}\r\n\r\n\t/* Generic styles for the form inputs and actions. */\r\n\t& .ck-find-and-replace-form__inputs,\r\n\t& .ck-find-and-replace-form__actions {\r\n\t\tflex: 1 1 auto;\r\n\t\tflex-direction: row;\r\n\t\tflex-wrap: wrap;\r\n\t\talign-items: center;\r\n\t\talign-content: stretch;\r\n\r\n\t\tpadding: var(--ck-spacing-large);\r\n\t\tmargin: 0;\r\n\r\n\t\t& > .ck-button {\r\n\t\t\tflex: 0 0 auto;\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\t& > * + * {\r\n\t\t\t\tmargin-left: var(--ck-spacing-standard);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\t& > * + * {\r\n\t\t\t\tmargin-right: var(--ck-spacing-standard);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t& .ck-labeled-field-view {\r\n\t\t\tflex: 1 1 auto;\r\n\r\n\t\t\t& .ck-input {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t\tmin-width: 50px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/* Styles specific for inputs area. */\r\n\t& .ck-find-and-replace-form__inputs {\r\n\t\t/* To display all controls in line when there\'s an error under the input */\r\n\t\talign-items: flex-start;\r\n\r\n\t\t& > .ck-button-prev > .ck-icon {\r\n\t\t\ttransform: rotate(90deg);\r\n\t\t}\r\n\r\n\t\t& > .ck-button-next > .ck-icon {\r\n\t\t\ttransform: rotate(-90deg);\r\n\t\t}\r\n\r\n\t\t& .ck-results-counter {\r\n\t\t\ttop: 50%;\r\n\t\t\ttransform: translateY(-50%);\r\n\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\tright: var(--ck-spacing-standard);\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tleft: var(--ck-spacing-standard);\r\n\t\t\t}\r\n\r\n\t\t\tcolor: var(--ck-color-base-border);\r\n\t\t}\r\n\r\n\t\t& > .ck-labeled-field-replace {\r\n\t\t\tflex: 0 0 100%;\r\n\t\t\tpadding-top: var(--ck-spacing-standard);\r\n\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\tmargin-left: 0;\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tmargin-right: 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/* Styles specific for actions area. */\r\n\t& .ck-find-and-replace-form__actions {\r\n\t\tflex-wrap: wrap;\r\n\t\tjustify-content: flex-end;\r\n\t\tmargin-top: calc( -1 * var(--ck-spacing-large) );\r\n\r\n\t\t& > .ck-button-find {\r\n\t\t\tfont-weight: bold;\r\n\r\n\t\t\t/* Beef the find button up a little. It\'s the main action button in the form */\r\n\t\t\t& .ck-button__label {\r\n\t\t\t\tpadding-left: var(--ck-spacing-large);\r\n\t\t\t\tpadding-right: var(--ck-spacing-large);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck-switchbutton {\r\n\t\twidth: 100%;\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: row;\r\n\t\tflex-wrap: nowrap;\r\n\t\tjustify-content: space-between;\r\n\t\talign-items: center;\r\n\t}\r\n}\r\n\r\n@mixin ck-media-phone {\r\n\t.ck.ck-find-and-replace-form {\r\n\t\twidth: 300px;\r\n\r\n\t\t/* Don\'t let the form overflow from the dialog (https://github.com/cksource/ckeditor5-commercial/issues/5913) */\r\n\t\tmax-width: 100%;\r\n\r\n\t\t/* Styles specific for inputs area. */\r\n\t\t&.ck-find-and-replace-form__input {\r\n\t\t\tflex-wrap: wrap;\r\n\r\n\t\t\t& .ck-labeled-field-view {\r\n\t\t\t\tflex: 1 0 auto;\r\n\t\t\t\twidth: 100%;\r\n\t\t\t\tmargin-bottom: var(--ck-spacing-standard);\r\n\t\t\t}\r\n\r\n\t\t\t& > .ck-button {\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t&:first-of-type {\r\n\t\t\t\t\tflex: 1 1 auto;\r\n\r\n\t\t\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\t\t\tmargin-left: 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\t\t\tmargin-right: 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t& .ck-button__label {\r\n\t\t\t\t\t\twidth: 100%;\r\n\t\t\t\t\t\ttext-align: center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* Styles specific for actions area. */\r\n\t\t&.ck-find-and-replace-form__actions > :not(.ck-labeled-field-view) {\r\n\t\t\tflex-wrap: wrap;\r\n\t\t\tflex: 1 1 auto;\r\n\r\n\t\t\t& > .ck-button {\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t&:first-of-type {\r\n\t\t\t\t\tflex: 1 1 auto;\r\n\r\n\t\t\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\t\t\tmargin-left: 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\t\t\tmargin-right: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t& .ck-button__label {\r\n\t\t\t\t\twidth: 100%;\r\n\t\t\t\t\ttext-align: center;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@define-mixin ck-media-phone {\r\n\t@media screen and (max-width: 600px) {\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},9677:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);border:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.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://./../ckeditor5-ui/theme/components/toolbar/toolbar.css","webpack://./../ckeditor5-ui/theme/mixins/_unselectable.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/toolbar.css","webpack://./../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,eCGC,eDwGD,CA3GA,qECOE,qCDoGF,CA3GA,eAGC,6CAA8C,CAE9C,+CAAgD,CADhD,iCAuGD,CApGC,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,CAtGD,qCAyGE,QAEF,CAYC,+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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../mixins/_unselectable.css";\r\n\r\n.ck.ck-toolbar {\r\n\t@mixin ck-unselectable;\r\n\r\n\tdisplay: flex;\r\n\tflex-flow: row nowrap;\r\n\talign-items: center;\r\n\r\n\t& > .ck-toolbar__items {\r\n\t\tdisplay: flex;\r\n\t\tflex-flow: row wrap;\r\n\t\talign-items: center;\r\n\t\tflex-grow: 1;\r\n\r\n\t}\r\n\r\n\t& .ck.ck-toolbar__separator {\r\n\t\tdisplay: inline-block;\r\n\r\n\t\t/*\r\n\t\t * A leading or trailing separator makes no sense (separates from nothing on one side).\r\n\t\t * For instance, it can happen when toolbar items (also separators) are getting grouped one by one and\r\n\t\t * moved to another toolbar in the dropdown.\r\n\t\t */\r\n\t\t&:first-child,\r\n\t\t&:last-child {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck-toolbar__line-break {\r\n\t\tflex-basis: 100%;\r\n\t}\r\n\r\n\t&.ck-toolbar_grouping > .ck-toolbar__items {\r\n\t\tflex-wrap: nowrap;\r\n\t}\r\n\r\n\t&.ck-toolbar_vertical > .ck-toolbar__items {\r\n\t\tflex-direction: column;\r\n\t}\r\n\r\n\t&.ck-toolbar_floating > .ck-toolbar__items {\r\n\t\tflex-wrap: nowrap;\r\n\t}\r\n\r\n\t& > .ck.ck-toolbar__grouped-dropdown {\r\n\t\t& > .ck-dropdown__button .ck-dropdown__arrow {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Makes element unselectable.\r\n */\r\n@define-mixin ck-unselectable {\r\n\t-moz-user-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-toolbar {\r\n\t@mixin ck-rounded-corners;\r\n\r\n\tbackground: var(--ck-color-toolbar-background);\r\n\tpadding: 0 var(--ck-spacing-small);\r\n\tborder: 1px solid var(--ck-color-toolbar-border);\r\n\r\n\t& .ck.ck-toolbar__separator {\r\n\t\theight: var(--ck-icon-size);\r\n\t\twidth: 1px;\r\n\t\tmin-width: 1px;\r\n\t\tbackground: var(--ck-color-toolbar-border);\r\n\r\n\t\t/*\r\n\t\t * These margins make the separators look better in balloon toolbars (when aligned with the "tip").\r\n\t\t * See https://github.com/ckeditor/ckeditor5/issues/7493.\r\n\t\t */\r\n\t\tmargin-top: var(--ck-spacing-small);\r\n\t\tmargin-bottom: var(--ck-spacing-small);\r\n\t}\r\n\r\n\t& .ck-toolbar__line-break {\r\n\t\theight: 0;\r\n\t}\r\n\r\n\t& > .ck-toolbar__items {\r\n\t\t& > *:not(.ck-toolbar__line-break) {\r\n\t\t\t/* (#11) Separate toolbar items. */\r\n\t\t\tmargin-right: var(--ck-spacing-small);\r\n\t\t}\r\n\r\n\t\t/* Don\'t display a separator after an empty items container, for instance,\r\n\t\twhen all items were grouped */\r\n\t\t&:empty + .ck.ck-toolbar__separator {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\r\n\t& > .ck-toolbar__items > *:not(.ck-toolbar__line-break),\r\n\t& > .ck.ck-toolbar__grouped-dropdown {\r\n\t\t/* Make sure items wrapped to the next line have v-spacing */\r\n\t\tmargin-top: var(--ck-spacing-small);\r\n\t\tmargin-bottom: var(--ck-spacing-small);\r\n\t}\r\n\r\n\t&.ck-toolbar_vertical {\r\n\t\t/* Items in a vertical toolbar span the entire width. */\r\n\t\tpadding: 0;\r\n\r\n\t\t/* Specificity matters here. See https://github.com/ckeditor/ckeditor5-theme-lark/issues/168. */\r\n\t\t& > .ck-toolbar__items > .ck {\r\n\t\t\t/* Items in a vertical toolbar should span the horizontal space. */\r\n\t\t\twidth: 100%;\r\n\r\n\t\t\t/* Items in a vertical toolbar should have no margin. */\r\n\t\t\tmargin: 0;\r\n\r\n\t\t\t/* Items in a vertical toolbar span the entire width so rounded corners are pointless. */\r\n\t\t\tborder-radius: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-toolbar_compact {\r\n\t\t/* No spacing around items. */\r\n\t\tpadding: 0;\r\n\r\n\t\t& > .ck-toolbar__items > * {\r\n\t\t\t/* Compact toolbar items have no spacing between them. */\r\n\t\t\tmargin: 0;\r\n\r\n\t\t\t/* "Middle" children should have no rounded corners. */\r\n\t\t\t&:not(:first-child):not(:last-child) {\r\n\t\t\t\tborder-radius: 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t& > .ck.ck-toolbar__grouped-dropdown {\r\n\t\t/*\r\n\t\t * Dropdown button has asymmetric padding to fit the arrow.\r\n\t\t * This button has no arrow so let\'s revert that padding back to normal.\r\n\t\t */\r\n\t\t& > .ck.ck-button.ck-dropdown__button {\r\n\t\t\tpadding-left: var(--ck-spacing-tiny);\r\n\t\t}\r\n\t}\r\n\r\n\t/* A drop-down containing the nested toolbar with configured items. */\r\n\t& .ck-toolbar__nested-toolbar-dropdown {\r\n\t\t/* Prevent empty space in the panel when the dropdown label is visible and long but the toolbar has few items. */\r\n\t\t& > .ck-dropdown__panel {\r\n\t\t\tmin-width: auto;\r\n\t\t}\r\n\r\n\t\t& > .ck-button > .ck-button__label {\r\n\t\t\tmax-width: 7em;\r\n\t\t\twidth: auto;\r\n\t\t}\r\n\t}\r\n\r\n\t&:focus {\r\n\t\toutline: none;\r\n\t}\r\n\r\n\t@nest .ck-toolbar-container & {\r\n\t\tborder: 0;\r\n\t}\r\n}\r\n\r\n/* stylelint-disable */\r\n\r\n/*\r\n * Styles for RTL toolbars.\r\n *\r\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"\r\n * because its parent is not controlled by the editor framework.\r\n */\r\n[dir="rtl"] .ck.ck-toolbar,\r\n.ck.ck-toolbar[dir="rtl"] {\r\n\t& > .ck-toolbar__items > .ck {\r\n\t\tmargin-right: 0;\r\n\t}\r\n\r\n\t&:not(.ck-toolbar_compact) > .ck-toolbar__items > .ck {\r\n\t\t/* (#11) Separate toolbar items. */\r\n\t\tmargin-left: var(--ck-spacing-small);\r\n\t}\r\n\r\n\t& > .ck-toolbar__items > .ck:last-child {\r\n\t\tmargin-left: 0;\r\n\t}\r\n\r\n\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\r\n\t\t/* No rounded corners on the right side of the first child. */\r\n\t\t&:first-child {\r\n\t\t\tborder-top-left-radius: 0;\r\n\t\t\tborder-bottom-left-radius: 0;\r\n\t\t}\r\n\r\n\t\t/* No rounded corners on the left side of the last child. */\r\n\t\t&:last-child {\r\n\t\t\tborder-top-right-radius: 0;\r\n\t\t\tborder-bottom-right-radius: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\r\n\t& > .ck.ck-toolbar__separator {\r\n\t\tmargin-left: var(--ck-spacing-small);\r\n\t}\r\n\r\n\t/* Some spacing between the items and the separator before the grouped items dropdown. */\r\n\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\r\n\t\tmargin-left: var(--ck-spacing-small);\r\n\t}\r\n}\r\n\r\n/*\r\n * Styles for LTR toolbars.\r\n *\r\n * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"\r\n * because its parent is not controlled by the editor framework.\r\n */\r\n[dir="ltr"] .ck.ck-toolbar,\r\n.ck.ck-toolbar[dir="ltr"] {\r\n\t& > .ck-toolbar__items > .ck:last-child {\r\n\t\tmargin-right: 0;\r\n\t}\r\n\r\n\t&.ck-toolbar_compact > .ck-toolbar__items > .ck {\r\n\t\t/* No rounded corners on the right side of the first child. */\r\n\t\t&:first-child {\r\n\t\t\tborder-top-right-radius: 0;\r\n\t\t\tborder-bottom-right-radius: 0;\r\n\t\t}\r\n\r\n\t\t/* No rounded corners on the left side of the last child. */\r\n\t\t&:last-child {\r\n\t\t\tborder-top-left-radius: 0;\r\n\t\t\tborder-bottom-left-radius: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/* Separate the the separator form the grouping dropdown when some items are grouped. */\r\n\t& > .ck.ck-toolbar__separator {\r\n\t\tmargin-right: var(--ck-spacing-small);\r\n\t}\r\n\r\n\t/* Some spacing between the items and the separator before the grouped items dropdown. */\r\n\t&.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {\r\n\t\tmargin-right: var(--ck-spacing-small);\r\n\t}\r\n}\r\n\r\n/* stylelint-enable */\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},9715:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{opacity:.5}.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://./../ckeditor5-ui/theme/components/button/button.css","webpack://./../ckeditor5-ui/theme/mixins/_unselectable.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/button.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/mixins/_button.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_focus.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_shadow.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_disabled.css"],names:[],mappings:"AAQA,6BAMC,kBAAmB,CADnB,mBAAoB,CADpB,iBAAkB,CCHlB,qBAAsB,CACtB,wBAAyB,CACzB,oBAAqB,CACrB,gBD0BD,CA9BA,iDASE,oBAqBF,CA9BA,iDAaE,qBAiBF,CAdC,iEACC,YACD,CAGC,yGACC,oBACD,CAID,iFACC,sBACD,CEzBD,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,CDfD,wIEGE,qCF0IF,CA9GC,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,CAlBA,qFAYE,eAMF,CAlBA,qFAgBE,gBAEF,CAEA,yEACC,aAWD,CAZA,6FAIE,mCAQF,CAZA,6FAQE,oCAIF,CAZA,yEAWC,UACD,CAIC,oIIxFD,oDJ4FC,CAOA,gLKnGD,kCLqGC,CAEA,iGACC,UACD,CAGD,qEACC,yDAYD,CATC,2HAEE,qCAMF,CARA,2HAME,oCAEF,CAKA,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:['/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../mixins/_unselectable.css";\r\n@import "../../mixins/_dir.css";\r\n\r\n.ck.ck-button,\r\na.ck.ck-button {\r\n\t@mixin ck-unselectable;\r\n\r\n\tposition: relative;\r\n\tdisplay: inline-flex;\r\n\talign-items: center;\r\n\r\n\t@mixin ck-dir ltr {\r\n\t\tjustify-content: left;\r\n\t}\r\n\r\n\t@mixin ck-dir rtl {\r\n\t\tjustify-content: right;\r\n\t}\r\n\r\n\t& .ck-button__label {\r\n\t\tdisplay: none;\r\n\t}\r\n\r\n\t&.ck-button_with-text {\r\n\t\t& .ck-button__label {\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t}\r\n\r\n\t/* Center the icon horizontally in a button without text. */\r\n\t&:not(.ck-button_with-text) {\r\n\t\tjustify-content: center;\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Makes element unselectable.\r\n */\r\n@define-mixin ck-unselectable {\r\n\t-moz-user-select: none;\r\n\t-webkit-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_focus.css";\r\n@import "../../../mixins/_shadow.css";\r\n@import "../../../mixins/_disabled.css";\r\n@import "../../../mixins/_rounded.css";\r\n@import "../../mixins/_button.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";\r\n\r\n.ck.ck-button,\r\na.ck.ck-button {\r\n\t@mixin ck-button-colors --ck-color-button-default;\r\n\t@mixin ck-rounded-corners;\r\n\r\n\twhite-space: nowrap;\r\n\tcursor: default;\r\n\tvertical-align: middle;\r\n\tpadding: var(--ck-spacing-tiny);\r\n\ttext-align: center;\r\n\r\n\t/* A very important piece of styling. Go to variable declaration to learn more. */\r\n\tmin-width: var(--ck-ui-component-min-height);\r\n\tmin-height: var(--ck-ui-component-min-height);\r\n\r\n\t/* Normalize the height of the line. Removing this will break consistent height\r\n\tamong text and text-less buttons (with icons). */\r\n\tline-height: 1;\r\n\r\n\t/* Enable font size inheritance, which allows fluid UI scaling. */\r\n\tfont-size: inherit;\r\n\r\n\t/* Avoid flickering when the foucs border shows up. */\r\n\tborder: 1px solid transparent;\r\n\r\n\t/* Apply some smooth transition to the box-shadow and border. */\r\n\ttransition: box-shadow .2s ease-in-out, border .2s ease-in-out;\r\n\r\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/189 */\r\n\t-webkit-appearance: none;\r\n\r\n\t@media (prefers-reduced-motion: reduce) {\r\n\t\ttransition: none;\r\n\t}\r\n\r\n\t&:active,\r\n\t&:focus {\r\n\t\t@mixin ck-focus-ring;\r\n\t\t@mixin ck-box-shadow var(--ck-focus-outer-shadow);\r\n\t}\r\n\r\n\t/* Allow icon coloring using the text "color" property. */\r\n\t& .ck-button__icon {\r\n\t\t& use,\r\n\t\t& use * {\r\n\t\t\tcolor: inherit;\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck-button__label {\r\n\t\t/* Enable font size inheritance, which allows fluid UI scaling. */\r\n\t\tfont-size: inherit;\r\n\t\tfont-weight: inherit;\r\n\t\tcolor: inherit;\r\n\t\tcursor: inherit;\r\n\r\n\t\t/* Must be consistent with .ck-icon\'s vertical align. Otherwise, buttons with and\r\n\t\twithout labels (but with icons) have different sizes in Chrome */\r\n\t\tvertical-align: middle;\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\ttext-align: left;\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\ttext-align: right;\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck-button__keystroke {\r\n\t\tcolor: inherit;\r\n\r\n\t\t@mixin ck-dir ltr {\r\n\t\t\tmargin-left: var(--ck-spacing-large);\r\n\t\t}\r\n\r\n\t\t@mixin ck-dir rtl {\r\n\t\t\tmargin-right: var(--ck-spacing-large);\r\n\t\t}\r\n\r\n\t\topacity: .5;\r\n\t}\r\n\r\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */\r\n\t&.ck-disabled {\r\n\t\t&:active,\r\n\t\t&:focus {\r\n\t\t\t/* The disabled button should have a slightly less visible shadow when focused. */\r\n\t\t\t@mixin ck-box-shadow var(--ck-focus-disabled-outer-shadow);\r\n\t\t}\r\n\r\n\t\t& .ck-button__icon {\r\n\t\t\t@mixin ck-disabled;\r\n\t\t}\r\n\r\n\t\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\r\n\t\t& .ck-button__label {\r\n\t\t\t@mixin ck-disabled;\r\n\t\t}\r\n\r\n\t\t& .ck-button__keystroke {\r\n\t\t\topacity: .3;\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-button_with-text {\r\n\t\tpadding: var(--ck-spacing-tiny) var(--ck-spacing-standard);\r\n\r\n\t\t/* stylelint-disable-next-line no-descending-specificity */\r\n\t\t& .ck-button__icon {\r\n\t\t\t@mixin ck-dir ltr {\r\n\t\t\t\tmargin-right: var(--ck-spacing-medium);\r\n\t\t\t}\r\n\r\n\t\t\t@mixin ck-dir rtl {\r\n\t\t\t\tmargin-left: var(--ck-spacing-medium);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.ck-button_with-keystroke {\r\n\t\t/* stylelint-disable-next-line no-descending-specificity */\r\n\t\t& .ck-button__label {\r\n\t\t\tflex-grow: 1;\r\n\t\t}\r\n\t}\r\n\r\n\t/* A style of the button which is currently on, e.g. its feature is active. */\r\n\t&.ck-on {\r\n\t\t@mixin ck-button-colors --ck-color-button-on;\r\n\r\n\t\tcolor: var(--ck-color-button-on-color);\r\n\t}\r\n\r\n\t&.ck-button-save {\r\n\t\tcolor: var(--ck-color-button-save);\r\n\t}\r\n\r\n\t&.ck-button-cancel {\r\n\t\tcolor: var(--ck-color-button-cancel);\r\n\t}\r\n}\r\n\r\n/* A style of the button which handles the primary action. */\r\n.ck.ck-button-action,\r\na.ck.ck-button-action {\r\n\t@mixin ck-button-colors --ck-color-button-action;\r\n\r\n\tcolor: var(--ck-color-button-action-text);\r\n}\r\n\r\n.ck.ck-button-bold,\r\na.ck.ck-button-bold {\r\n\tfont-weight: bold;\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements a button of given background color.\r\n *\r\n * @param {String} $background - Background color of the button.\r\n * @param {String} $border - Border color of the button.\r\n */\r\n@define-mixin ck-button-colors $prefix {\r\n\tbackground: var($(prefix)-background);\r\n\r\n\t&:not(.ck-disabled) {\r\n\t\t&:hover {\r\n\t\t\tbackground: var($(prefix)-hover-background);\r\n\t\t}\r\n\r\n\t\t&:active {\r\n\t\t\tbackground: var($(prefix)-active-background);\r\n\t\t}\r\n\t}\r\n\r\n\t/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */\r\n\t&.ck-disabled {\r\n\t\tbackground: var($(prefix)-disabled-background);\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A visual style of focused element's border.\r\n */\r\n@define-mixin ck-focus-ring {\r\n\t/* Disable native outline. */\r\n\toutline: none;\r\n\tborder: var(--ck-focus-ring)\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A class which indicates that an element holding it is disabled.\r\n */\r\n@define-mixin ck-disabled {\r\n\topacity: var(--ck-disabled-opacity);\r\n}\r\n"],sourceRoot:""}]);const a=s},9819:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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 .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-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-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)}.ck.ck-dialog .ck.ck-form__header{border-bottom:1px solid var(--ck-color-dialog-form-header-border)}@keyframes ck-dialog-fade-in{0%{background:transparent}to{background:var(--ck-dialog-overlay-background-color)}}","",{version:3,sources:["webpack://./../ckeditor5-ui/theme/components/dialog/dialog.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dialog/dialog.css","webpack://./../ckeditor5-theme-lark/theme/mixins/_rounded.css","webpack://./../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,iBAcD,CAXC,kCACC,aAKD,CAHC,0DACC,WACD,CAVF,mEAcE,kBAEF,CC7BA,MACC,mDAA2D,CAC3D,uDAA8D,CAC9D,2BAA4B,CAC5B,2BAA4B,CAC5B,4DAA6D,CAC7D,gEACD,CAEA,sBACC,+BAAgC,CAChC,oDAAqD,CACrD,0BACD,CAEA,cCbC,eD2BD,CAdA,mECTE,qCDuBF,CAdA,cEfC,oCAA8B,CFmB9B,6CAA8C,CAE9C,4CAA6C,CAG7C,4CAA6C,CAF7C,sCAAuC,CACvC,oCAMD,CAHC,kCACC,iEACD,CAGD,6BACC,GACC,sBACD,CAEA,GACC,oDACD,CACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-dialog-overlay {\r\n\tuser-select: none;\r\n\toverscroll-behavior: none;\r\n\r\n\tposition: fixed;\r\n\tbottom: 0;\r\n\tleft: 0;\r\n\tright: 0;\r\n\ttop: 0;\r\n\r\n\t&.ck-dialog-overlay__transparent {\r\n\t\tpointer-events: none;\r\n\t\tanimation: none;\r\n\t\tbackground: none;\r\n\t}\r\n}\r\n\r\n.ck.ck-dialog {\r\n\toverscroll-behavior: none;\r\n\twidth: fit-content;\r\n\tposition: absolute;\r\n\r\n\t& .ck.ck-form__header {\r\n\t\tflex-shrink: 0;\r\n\r\n\t\t& .ck-form__header__label {\r\n\t\t\tcursor: grab;\r\n\t\t}\r\n\t}\r\n\r\n\t@nest .ck.ck-dialog-overlay.ck-dialog-overlay__transparent & {\r\n\t\tpointer-events: all;\r\n\t}\r\n}\r\n",'/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n@import "../../../mixins/_rounded.css";\r\n@import "../../../mixins/_shadow.css";\r\n@import "@ckeditor/ckeditor5-ui/theme/mixins/_rwd.css";\r\n\r\n:root {\r\n\t--ck-dialog-overlay-background-color: hsla( 0, 0%, 0%, .5 );\r\n\t--ck-dialog-drop-shadow: 0px 0px 6px 2px hsl(0deg 0% 0% / 15%);\r\n\t--ck-dialog-max-width: 100vw;\r\n\t--ck-dialog-max-height: 90vh;\r\n\t--ck-color-dialog-background: var(--ck-color-base-background);\r\n\t--ck-color-dialog-form-header-border: var(--ck-color-base-border);\r\n}\r\n\r\n.ck.ck-dialog-overlay {\r\n\tanimation: ck-dialog-fade-in .3s;\r\n\tbackground: var(--ck-dialog-overlay-background-color);\r\n\tz-index: var(--ck-z-dialog);\r\n}\r\n\r\n.ck.ck-dialog {\r\n\t@mixin ck-rounded-corners;\r\n\t@mixin ck-drop-shadow;\r\n\r\n\t--ck-drop-shadow: var(--ck-dialog-drop-shadow);\r\n\r\n\tbackground: var(--ck-color-dialog-background);\r\n\tmax-height: var(--ck-dialog-max-height);\r\n\tmax-width: var(--ck-dialog-max-width);\r\n\tborder: 1px solid var(--ck-color-base-border);\r\n\r\n\t& .ck.ck-form__header {\r\n\t\tborder-bottom: 1px solid var(--ck-color-dialog-form-header-border);\r\n\t}\r\n}\r\n\r\n@keyframes ck-dialog-fade-in {\r\n\t0% {\r\n\t\tbackground: hsla( 0, 0%, 0%, 0 );\r\n\t}\r\n\r\n\t100% {\r\n\t\tbackground: var(--ck-dialog-overlay-background-color);\r\n\t}\r\n}\r\n',"/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * Implements rounded corner interface for .ck-rounded-corners class.\r\n *\r\n * @see $ck-border-radius\r\n */\r\n@define-mixin ck-rounded-corners {\r\n\tborder-radius: 0;\r\n\r\n\t@nest .ck-rounded-corners &,\r\n\t&.ck-rounded-corners {\r\n\t\tborder-radius: var(--ck-border-radius);\r\n\t\t@mixin-content;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * A helper to combine multiple shadows.\r\n */\r\n@define-mixin ck-box-shadow $shadowA, $shadowB: 0 0 {\r\n\tbox-shadow: $shadowA, $shadowB;\r\n}\r\n\r\n/**\r\n * Gives an element a drop shadow so it looks like a floating panel.\r\n */\r\n@define-mixin ck-drop-shadow {\r\n\t@mixin ck-box-shadow var(--ck-drop-shadow);\r\n}\r\n"],sourceRoot:""}]);const a=s},9822:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../ckeditor5-ui/theme/components/dialog/dialogactions.css","webpack://./../ckeditor5-theme-lark/theme/ckeditor5-ui/components/dialog/dialogactions.css"],names:[],mappings:"AAMC,qCACC,YAAa,CACb,wBAAyB,CCDzB,+BDED,CCAC,yCACC,mCACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-dialog {\r\n\t& .ck.ck-dialog__actions {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: flex-end;\r\n\t}\r\n}\r\n","/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-dialog {\r\n\t& .ck.ck-dialog__actions {\r\n\t\tpadding: var(--ck-spacing-large);\r\n\r\n\t\t& > * + * {\r\n\t\t\tmargin-left: var(--ck-spacing-large);\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s},9826:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.id,".ck.ck-block-toolbar-button{transform:translateX(calc(var(--ck-spacing-large)*-1))}","",{version:3,sources:["webpack://./theme/theme.css"],names:[],mappings:"AAMA,4BACC,sDACD",sourcesContent:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/* Give the block toolbar button some space, moving it a few pixels away from the editable area. */\r\n.ck.ck-block-toolbar-button {\r\n\ttransform: translateX( calc(-1 * var(--ck-spacing-large)) );\r\n}\r\n"],sourceRoot:""}]);const a=s},9968:(t,e,n)=>{"use strict";n.d(e,{A:()=>a});var r=n(9372),i=n.n(r),o=n(935),s=n.n(o)()(i());s.push([t.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://./../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:["/*\r\n * Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n.ck.ck-list-properties {\r\n\t/* When there are no list styles and there is no collapsible. */\r\n\t&.ck-list-properties_without-styles {\r\n\t\tpadding: var(--ck-spacing-large);\r\n\r\n\t\t& > * {\r\n\t\t\tmin-width: 14em;\r\n\r\n\t\t\t& + * {\r\n\t\t\t\tmargin-top: var(--ck-spacing-standard);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t * When the numbered list property fields (start at, reversed) should be displayed,\r\n\t * more horizontal space is needed. Reconfigure the style grid to create that space.\r\n\t */\r\n\t&.ck-list-properties_with-numbered-properties {\r\n\t\t& > .ck-list-styles-list {\r\n\t\t\tgrid-template-columns: repeat( 4, auto );\r\n\t\t}\r\n\r\n\t\t/* When list styles are rendered and property fields are in a collapsible. */\r\n\t\t& > .ck-collapsible {\r\n\t\t\tborder-top: 1px solid var(--ck-color-base-border);\r\n\r\n\t\t\t& > .ck-collapsible__children {\r\n\t\t\t\t& > * {\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t& + * {\r\n\t\t\t\t\t\tmargin-top: var(--ck-spacing-standard);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t& .ck.ck-numbered-list-properties__start-index .ck-input {\r\n\t\tmin-width: auto;\r\n\t\twidth: 100%;\r\n\t}\r\n\r\n\t& .ck.ck-numbered-list-properties__reversed-order {\r\n\t\tbackground: transparent;\r\n\t\tpadding-left: 0;\r\n\t\tpadding-right: 0;\r\n\t\tmargin-bottom: calc(-1 * var(--ck-spacing-tiny));\r\n\r\n\t\t&:active, &:hover {\r\n\t\t\tbox-shadow: none;\r\n\t\t\tborder-color: transparent;\r\n\t\t\tbackground: none;\r\n\t\t}\r\n\t}\r\n}\r\n"],sourceRoot:""}]);const a=s}},e={};function n(r){var i=e[r];if(void 0!==i)return i.exports;var o=e[r]={id:r,exports:{}};return t[r](o,o.exports,n),o.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.nc=void 0;var r={};return(()=>{"use strict";n.d(r,{default:()=>qL});class t{crashes=[];state="initializing";_crashNumberLimit;_now=Date.now;_minimumNonErrorTimePeriod;_boundErrorHandler;_listeners;constructor(t){if(this.crashes=[],this._crashNumberLimit="number"==typeof t.crashNumberLimit?t.crashNumberLimit:3,this._minimumNonErrorTimePeriod="number"==typeof t.minimumNonErrorTimePeriod?t.minimumNonErrorTimePeriod:5e3,this._boundErrorHandler=t=>{const e="error"in t?t.error:t.reason;e instanceof Error&&this._handleError(e,t)},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(t,e){this._listeners[t]||(this._listeners[t]=[]),this._listeners[t].push(e)}off(t,e){this._listeners[t]=this._listeners[t].filter((t=>t!==e))}_fire(t,...e){const n=this._listeners[t]||[];for(const t of n)t.apply(this,[null,...e])}_startErrorHandling(){window.addEventListener("error",this._boundErrorHandler),window.addEventListener("unhandledrejection",this._boundErrorHandler)}_stopErrorHandling(){window.removeEventListener("error",this._boundErrorHandler),window.removeEventListener("unhandledrejection",this._boundErrorHandler)}_handleError(t,e){if(this._shouldReactToError(t)){this.crashes.push({message:t.message,stack:t.stack,filename:e instanceof ErrorEvent?e.filename:void 0,lineno:e instanceof ErrorEvent?e.lineno:void 0,colno:e instanceof ErrorEvent?e.colno:void 0,date:this._now()});const n=this._shouldRestart();this.state="crashed",this._fire("stateChange"),this._fire("error",{error:t,causesRestart:n}),n?this._restart():(this.state="crashedPermanently",this._fire("stateChange"))}}_shouldReactToError(t){return t.is&&t.is("CKEditorError")&&void 0!==t.context&&null!==t.context&&"ready"===this.state&&this._isErrorComingFromThisItem(t)}_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 e(t,e=new Set){const n=[t],r=new Set;let o=0;for(;n.length>o;){const t=n[o++];if(!r.has(t)&&i(t)&&!e.has(t))if(r.add(t),Symbol.iterator in t)try{for(const e of t)n.push(e)}catch(t){}else for(const e in t)"defaultValue"!==e&&n.push(t[e])}return r}function i(t){const e=Object.prototype.toString.call(t),n=typeof t;return!("number"===n||"boolean"===n||"string"===n||"symbol"===n||"function"===n||"[object Date]"===e||"[object RegExp]"===e||"[object Module]"===e||null==t||t._watchdogExcluded||t instanceof EventTarget||t instanceof Event)}function o(t,n,r=new Set){if(t===n&&("object"==typeof(i=t)&&null!==i))return!0;var i;const o=e(t,r),s=e(n,r);for(const t of o)if(s.has(t))return!0;return!1}const s=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)};const a="object"==typeof global&&global&&global.Object===Object&&global;var l="object"==typeof self&&self&&self.Object===Object&&self;const c=a||l||Function("return this")();const d=function(){return c.Date.now()};var h=/\s/;const u=function(t){for(var e=t.length;e--&&h.test(t.charAt(e)););return e};var m=/^\s+/;const g=function(t){return t?t.slice(0,u(t)+1).replace(m,""):t};const p=c.Symbol;var f=Object.prototype,b=f.hasOwnProperty,k=f.toString,w=p?p.toStringTag:void 0;const A=function(t){var e=b.call(t,w),n=t[w];try{t[w]=void 0;var r=!0}catch(t){}var i=k.call(t);return r&&(e?t[w]=n:delete t[w]),i};var _=Object.prototype.toString;const C=function(t){return _.call(t)};var v=p?p.toStringTag:void 0;const y=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":v&&v in Object(t)?A(t):C(t)};const x=function(t){return null!=t&&"object"==typeof t};const E=function(t){return"symbol"==typeof t||x(t)&&"[object Symbol]"==y(t)};var B=/^[-+]0x[0-9a-f]+$/i,D=/^0b[01]+$/i,S=/^0o[0-7]+$/i,T=parseInt;const I=function(t){if("number"==typeof t)return t;if(E(t))return NaN;if(s(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=s(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=g(t);var n=D.test(t);return n||S.test(t)?T(t.slice(2),n?2:8):B.test(t)?NaN:+t};var P=Math.max,V=Math.min;const F=function(t,e,n){var r,i,o,a,l,c,h=0,u=!1,m=!1,g=!0;if("function"!=typeof t)throw new TypeError("Expected a function");function p(e){var n=r,o=i;return r=i=void 0,h=e,a=t.apply(o,n)}function f(t){var n=t-c;return void 0===c||n>=e||n<0||m&&t-h>=o}function b(){var t=d();if(f(t))return k(t);l=setTimeout(b,function(t){var n=e-(t-c);return m?V(n,o-(t-h)):n}(t))}function k(t){return l=void 0,g&&r?p(t):(r=i=void 0,a)}function w(){var t=d(),n=f(t);if(r=arguments,i=this,c=t,n){if(void 0===l)return function(t){return h=t,l=setTimeout(b,e),u?p(t):a}(c);if(m)return clearTimeout(l),l=setTimeout(b,e),p(c)}return void 0===l&&(l=setTimeout(b,e)),a}return e=I(e)||0,s(n)&&(u=!!n.leading,o=(m="maxWait"in n)?P(I(n.maxWait)||0,e):o,g="trailing"in n?!!n.trailing:g),w.cancel=function(){void 0!==l&&clearTimeout(l),h=0,r=c=i=l=void 0},w.flush=function(){return void 0===l?a:k(d())},w};const R=function(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return s(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),F(t,e,{leading:r,maxWait:e,trailing:i})};const L=function(t,e){return function(n){return t(e(n))}};const z=L(Object.getPrototypeOf,Object);var M=Function.prototype,N=Object.prototype,O=M.toString,H=N.hasOwnProperty,j=O.call(Object);const q=function(t){if(!x(t)||"[object Object]"!=y(t))return!1;var e=z(t);if(null===e)return!0;var n=H.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&O.call(n)==j};const U=function(t){return x(t)&&1===t.nodeType&&!q(t)};const W=function(){this.__data__=[],this.size=0};const G=function(t,e){return t===e||t!=t&&e!=e};const K=function(t,e){for(var n=t.length;n--;)if(G(t[n][0],e))return n;return-1};var Z=Array.prototype.splice;const Y=function(t){var e=this.__data__,n=K(e,t);return!(n<0)&&(n==e.length-1?e.pop():Z.call(e,n,1),--this.size,!0)};const J=function(t){var e=this.__data__,n=K(e,t);return n<0?void 0:e[n][1]};const Q=function(t){return K(this.__data__,t)>-1};const X=function(t,e){var n=this.__data__,r=K(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this};function tt(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t-1&&t%1==0&&t<=9007199254740991};var he={};he["[object Float32Array]"]=he["[object Float64Array]"]=he["[object Int8Array]"]=he["[object Int16Array]"]=he["[object Int32Array]"]=he["[object Uint8Array]"]=he["[object Uint8ClampedArray]"]=he["[object Uint16Array]"]=he["[object Uint32Array]"]=!0,he["[object Arguments]"]=he["[object Array]"]=he["[object ArrayBuffer]"]=he["[object Boolean]"]=he["[object DataView]"]=he["[object Date]"]=he["[object Error]"]=he["[object Function]"]=he["[object Map]"]=he["[object Number]"]=he["[object Object]"]=he["[object RegExp]"]=he["[object Set]"]=he["[object String]"]=he["[object WeakMap]"]=!1;const ue=function(t){return x(t)&&de(t.length)&&!!he[y(t)]};const me=function(t){return function(e){return t(e)}};var ge="object"==typeof exports&&exports&&!exports.nodeType&&exports,pe=ge&&"object"==typeof module&&module&&!module.nodeType&&module,fe=pe&&pe.exports===ge&&a.process;const be=function(){try{var t=pe&&pe.require&&pe.require("util").types;return t||fe&&fe.binding&&fe.binding("util")}catch(t){}}();var ke=be&&be.isTypedArray;const we=ke?me(ke):ue;var Ae=Object.prototype.hasOwnProperty;const _e=function(t,e){var n=ne(t),r=!n&&ee(t),i=!n&&!r&&ae(t),o=!n&&!r&&!i&&we(t),s=n||r||i||o,a=s?Yt(t.length,String):[],l=a.length;for(var c in t)!e&&!Ae.call(t,c)||s&&("length"==c||i&&("offset"==c||"parent"==c)||o&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||ce(c,l))||a.push(c);return a};var Ce=Object.prototype;const ve=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Ce)};const ye=L(Object.keys,Object);var xe=Object.prototype.hasOwnProperty;const Ee=function(t){if(!ve(t))return ye(t);var e=[];for(var n in Object(t))xe.call(t,n)&&"constructor"!=n&&e.push(n);return e};const Be=function(t){return null!=t&&de(t.length)&&!st(t)};const De=function(t){return Be(t)?_e(t):Ee(t)};const Se=function(t,e){return t&&Zt(e,De(e),t)};const Te=function(t){var e=[];if(null!=t)for(var n in Object(t))e.push(n);return e};var Ie=Object.prototype.hasOwnProperty;const Pe=function(t){if(!s(t))return Te(t);var e=ve(t),n=[];for(var r in t)("constructor"!=r||!e&&Ie.call(t,r))&&n.push(r);return n};const Ve=function(t){return Be(t)?_e(t,!0):Pe(t)};const Fe=function(t,e){return t&&Zt(e,Ve(e),t)};var Re="object"==typeof exports&&exports&&!exports.nodeType&&exports,Le=Re&&"object"==typeof module&&module&&!module.nodeType&&module,ze=Le&&Le.exports===Re?c.Buffer:void 0,Me=ze?ze.allocUnsafe:void 0;const Ne=function(t,e){if(e)return t.slice();var n=t.length,r=Me?Me(n):new t.constructor(n);return t.copy(r),r};const Oe=function(t,e){var n=-1,r=t.length;for(e||(e=Array(r));++nt.create(e,n)),this._destructor=t=>t.destroy()}get editor(){return this._editor}get _item(){return this._editor}setCreator(t){this._creator=t}setDestructor(t){this._destructor=t}_restart(){return Promise.resolve().then((()=>(this.state="initializing",this._fire("stateChange"),this._destroy()))).catch((t=>{console.error("An error happened during the editor destroying.",t)})).then((()=>{const t={},e=[],n=this._config.rootsAttributes||{},r={};for(const[i,o]of Object.entries(this._data.roots))o.isLoaded?(t[i]="",r[i]=n[i]||{}):e.push(i);const i={...this._config,extraPlugins:this._config.extraPlugins||[],lazyRoots:e,rootsAttributes:r,_watchdogInitialData:this._data};return delete i.initialData,i.extraPlugins.push(Un),this._initUsingData?this.create(t,i,i.context):U(this._elementOrData)?this.create(this._elementOrData,i,i.context):this.create(this._editables,i,i.context)})).then((()=>{this._fire("restart")}))}create(t=this._elementOrData,e=this._config,n){return this._lifecyclePromise=Promise.resolve(this._lifecyclePromise).then((()=>(super._startErrorHandling(),this._elementOrData=t,this._initUsingData="string"==typeof t||Object.keys(t).length>0&&"string"==typeof Object.values(t)[0],this._config=this._cloneEditorConfiguration(e)||{},this._config.context=n,this._creator(t,this._config)))).then((t=>{this._editor=t,t.model.document.on("change:data",this._throttledSave),this._lastDocumentVersion=t.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 t=this._editor;return this._editor=null,t.model.document.off("change:data",this._throttledSave),this._destructor(t)}))}_save(){const t=this._editor.model.document.version;try{this._data=this._getData(),this._initUsingData||(this._editables=this._getEditables()),this._lastDocumentVersion=t}catch(t){console.error(t,"An error happened during restoring editor data. Editor will be restored from the previously saved data.")}}_setExcludedProperties(t){this._excludedProps=t}_getData(){const t=this._editor,e=t.model.document.roots.filter((t=>t.isAttached()&&"$graveyard"!=t.rootName)),{plugins:n}=t,r=n.has("CommentsRepository")&&n.get("CommentsRepository"),i=n.has("TrackChanges")&&n.get("TrackChanges"),o={roots:{},markers:{},commentThreads:JSON.stringify([]),suggestions:JSON.stringify([])};e.forEach((t=>{o.roots[t.rootName]={content:JSON.stringify(Array.from(t.getChildren())),attributes:JSON.stringify(Array.from(t.getAttributes())),isLoaded:t._isLoaded}}));for(const e of t.model.markers)e._affectsData&&(o.markers[e.name]={rangeJSON:e.getRange().toJSON(),usingOperation:e._managedUsingOperations,affectsData:e._affectsData});return r&&(o.commentThreads=JSON.stringify(r.getCommentThreads({toJSON:!0,skipNotAttached:!0}))),i&&(o.suggestions=JSON.stringify(i.getSuggestions({toJSON:!0,skipNotAttached:!0}))),o}_getEditables(){const t={};for(const e of this.editor.model.document.getRootNames()){const n=this.editor.ui.getEditableElement(e);n&&(t[e]=n)}return t}_isErrorComingFromThisItem(t){return o(this._editor,t.context,this._excludedProps)}_cloneEditorConfiguration(t){return jn(t,((t,e)=>U(t)||"context"===e?t:void 0))}}class Un{editor;_data;constructor(t){this.editor=t,this._data=t.config.get("_watchdogInitialData")}init(){this.editor.data.on("init",(t=>{t.stop(),this.editor.model.enqueueChange({isUndoable:!1},(t=>{this._restoreCollaborationData(),this._restoreEditorData(t)})),this.editor.data.fire("ready")}),{priority:999})}_createNode(t,e){if("name"in e){const n=t.createElement(e.name,e.attributes);if(e.children)for(const r of e.children)n._appendChild(this._createNode(t,r));return n}return t.createText(e.data,e.attributes)}_restoreEditorData(t){const e=this.editor;Object.entries(this._data.roots).forEach((([n,{content:r,attributes:i}])=>{const o=JSON.parse(r),s=JSON.parse(i),a=e.model.document.getRoot(n);for(const[e,n]of s)t.setAttribute(e,n,a);for(const e of o){const n=this._createNode(t,e);t.insert(n,a,"end")}})),Object.entries(this._data.markers).forEach((([n,r])=>{const{document:i}=e.model,{rangeJSON:{start:o,end:s},...a}=r,l=i.getRoot(o.root),c=t.createPositionFromPath(l,o.path,o.stickiness),d=t.createPositionFromPath(l,s.path,s.stickiness),h=t.createRange(c,d);t.addMarker(n,{range:h,...a})}))}_restoreCollaborationData(){const t=JSON.parse(this._data.commentThreads),e=JSON.parse(this._data.suggestions);t.forEach((t=>{const e=this.editor.config.get("collaboration.channelId"),n=this.editor.plugins.get("CommentsRepository");if(n.hasCommentThread(t.threadId)){n.getCommentThread(t.threadId).remove()}n.addCommentThread({channelId:e,...t})})),e.forEach((t=>{const e=this.editor.plugins.get("TrackChangesEditing");if(e.hasSuggestion(t.id)){e.getSuggestion(t.id).attributes=t.attributes}else e.addSuggestionData(t)}))}}const Wn=Symbol("MainQueueId");class $n extends t{_watchdogs=new Map;_watchdogConfig;_context=null;_contextProps=new Set;_actionQueues=new Gn;_contextConfig;_item;constructor(t,e={}){super(e),this._watchdogConfig=e,this._creator=e=>t.create(e),this._destructor=t=>t.destroy(),this._actionQueues.onEmpty((()=>{"initializing"===this.state&&(this.state="ready",this._fire("stateChange"))}))}setCreator(t){this._creator=t}setDestructor(t){this._destructor=t}get context(){return this._context}create(t={}){return this._actionQueues.enqueue(Wn,(()=>(this._contextConfig=t,this._create())))}getItem(t){return this._getWatchdog(t)._item}getItemState(t){return this._getWatchdog(t).state}add(t){const e=Kn(t);return Promise.all(e.map((t=>this._actionQueues.enqueue(t.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 e;if(this._watchdogs.has(t.id))throw new Error(`Item with the given id is already added: '${t.id}'.`);if("editor"===t.type)return e=new qn(null,this._watchdogConfig),e.setCreator(t.creator),e._setExcludedProperties(this._contextProps),t.destructor&&e.setDestructor(t.destructor),this._watchdogs.set(t.id,e),e.on("error",((n,{error:r,causesRestart:i})=>{this._fire("itemError",{itemId:t.id,error:r}),i&&this._actionQueues.enqueue(t.id,(()=>new Promise((n=>{const r=()=>{e.off("restart",r),this._fire("itemRestart",{itemId:t.id}),n()};e.on("restart",r)}))))})),e.create(t.sourceElementOrData,t.config,this._context);throw new Error(`Not supported item type: '${t.type}'.`)})))))}remove(t){const e=Kn(t);return Promise.all(e.map((t=>this._actionQueues.enqueue(t,(()=>{const e=this._getWatchdog(t);return this._watchdogs.delete(t),e.destroy()})))))}destroy(){return this._actionQueues.enqueue(Wn,(()=>(this.state="destroyed",this._fire("stateChange"),super.destroy(),this._destroy())))}_restart(){return this._actionQueues.enqueue(Wn,(()=>(this.state="initializing",this._fire("stateChange"),this._destroy().catch((t=>{console.error("An error happened during destroying the context or items.",t)})).then((()=>this._create())).then((()=>this._fire("restart"))))))}_create(){return Promise.resolve().then((()=>(this._startErrorHandling(),this._creator(this._contextConfig)))).then((t=>(this._context=t,this._contextProps=e(this._context),Promise.all(Array.from(this._watchdogs.values()).map((t=>(t._setExcludedProperties(this._contextProps),t.create(void 0,void 0,this._context))))))))}_destroy(){return Promise.resolve().then((()=>{this._stopErrorHandling();const t=this._context;return this._context=null,this._contextProps=new Set,Promise.all(Array.from(this._watchdogs.values()).map((t=>t.destroy()))).then((()=>this._destructor(t)))}))}_getWatchdog(t){const e=this._watchdogs.get(t);if(!e)throw new Error(`Item with the given id was not registered: ${t}.`);return e}_isErrorComingFromThisItem(t){for(const e of this._watchdogs.values())if(e._isErrorComingFromThisItem(t))return!1;return o(this._context,t.context)}}class Gn{_onEmptyCallbacks=[];_queues=new Map;_activeActions=0;onEmpty(t){this._onEmptyCallbacks.push(t)}enqueue(t,e){const n=t===Wn;this._activeActions++,this._queues.get(t)||this._queues.set(t,Promise.resolve());const r=(n?Promise.all(this._queues.values()):Promise.all([this._queues.get(Wn),this._queues.get(t)])).then(e),i=r.catch((()=>{}));return this._queues.set(t,i),r.finally((()=>{this._activeActions--,this._queues.get(t)===i&&0===this._activeActions&&this._onEmptyCallbacks.forEach((t=>t()))}))}}function Kn(t){return Array.isArray(t)?t:[t]}let Zn;try{Zn={window,document}}catch(t){Zn={window:{},document:{}}}const Yn=Zn;function Jn(){try{return navigator.userAgent.toLowerCase()}catch(t){return""}}const Qn=Jn(),Xn={isMac:tr(Qn),isWindows:er(Qn),isGecko:nr(Qn),isSafari:rr(Qn),isiOS:ir(Qn),isAndroid:or(Qn),isBlink:sr(Qn),get isMediaForcedColors(){return!!Yn.window.matchMedia&&Yn.window.matchMedia("(forced-colors: active)").matches},get isMotionReduced(){return!!Yn.window.matchMedia&&Yn.window.matchMedia("(prefers-reduced-motion)").matches},features:{isRegExpUnicodePropertySupported:ar()}};function tr(t){return t.indexOf("macintosh")>-1}function er(t){return t.indexOf("windows")>-1}function nr(t){return!!t.match(/gecko\/\d+/)}function rr(t){return t.indexOf(" applewebkit/")>-1&&-1===t.indexOf("chrome")}function ir(t){return!!t.match(/iphone|ipad/i)||tr(t)&&navigator.maxTouchPoints>0}function or(t){return t.indexOf("android")>-1}function sr(t){return t.indexOf("chrome/")>-1&&t.indexOf("edge/")<0}function ar(){let t=!1;try{t=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch(t){}return t}function lr(t,e,n,r){n=n||function(t,e){return t===e};const i=Array.isArray(t)?t:Array.prototype.slice.call(t),o=Array.isArray(e)?e:Array.prototype.slice.call(e),s=function(t,e,n){const r=cr(t,e,n);if(-1===r)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const i=dr(t,r),o=dr(e,r),s=cr(i,o,n),a=t.length-s,l=e.length-s;return{firstIndex:r,lastIndexOld:a,lastIndexNew:l}}(i,o,n),a=r?function(t,e){const{firstIndex:n,lastIndexOld:r,lastIndexNew:i}=t;if(-1===n)return Array(e).fill("equal");let o=[];n>0&&(o=o.concat(Array(n).fill("equal")));i-n>0&&(o=o.concat(Array(i-n).fill("insert")));r-n>0&&(o=o.concat(Array(r-n).fill("delete")));i0&&n.push({index:r,type:"insert",values:t.slice(r,o)});i-r>0&&n.push({index:r+(o-r),type:"delete",howMany:i-r});return n}(o,s);return a}function cr(t,e,n){for(let r=0;r200||i>200||r+i>300)return hr.fastDiff(t,e,n,!0);let o,s;if(ic?-1:1;d[r+u]&&(d[r]=d[r+u].slice(0)),d[r]||(d[r]=[]),d[r].push(i>c?o:s);let m=Math.max(i,c),g=m-r;for(;gc;m--)h[m]=u(m);h[c]=u(c),g++}while(h[c]!==l);return d[c].slice(1)}hr.fastDiff=lr;const ur=function(){return function t(){t.called=!0}};class mr{source;name;path;stop;off;return;constructor(t,e){this.source=t,this.name=e,this.path=[],this.stop=ur(),this.off=ur()}}const gr=new Array(256).fill("").map(((t,e)=>("0"+e.toString(16)).slice(-2)));function pr(){const[t,e,n,r]=crypto.getRandomValues(new Uint32Array(4));return"e"+gr[255&t]+gr[t>>8&255]+gr[t>>16&255]+gr[t>>24&255]+gr[255&e]+gr[e>>8&255]+gr[e>>16&255]+gr[e>>24&255]+gr[255&n]+gr[n>>8&255]+gr[n>>16&255]+gr[n>>24&255]+gr[255&r]+gr[r>>8&255]+gr[r>>16&255]+gr[r>>24&255]}const fr={get(t="normal"){return"number"!=typeof t?this[t]||this.normal:t},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5};function br(t,e){const n=fr.get(e.priority);for(let r=0;r{if("object"==typeof e&&null!==e){if(n.has(e))return`[object ${e.constructor.name}]`;n.add(e)}return e},i=e?` ${JSON.stringify(e,r)}`:"",o=Ar(t);return t+i+o}(t,n)),this.name="CKEditorError",this.context=e,this.data=n}is(t){return"CKEditorError"===t}static rethrowUnexpectedError(t,e){if(t.is&&t.is("CKEditorError"))throw t;const n=new kr(t.message,e);throw n.stack=t.stack,n}}function wr(t,e){console.warn(..._r(t,e))}function Ar(t){return`\nRead more: https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html#error-${t}`}function _r(t,e){const n=Ar(t);return e?[t,e,n]:[t,n]}const Cr="43.2.0",vr=new Date(2024,9,2);if(globalThis.CKEDITOR_VERSION)throw new kr("ckeditor-duplicated-modules",null);globalThis.CKEDITOR_VERSION=Cr;const yr=Symbol("listeningTo"),xr=Symbol("emitterId"),Er=Symbol("delegations"),Br=Dr(Object);function Dr(t){if(!t)return Br;return class extends t{on(t,e,n){this.listenTo(this,t,e,n)}once(t,e,n){let r=!1;this.listenTo(this,t,((t,...n)=>{r||(r=!0,t.off(),e.call(this,t,...n))}),n)}off(t,e){this.stopListening(this,t,e)}listenTo(t,e,n,r={}){let i,o;this[yr]||(this[yr]={});const s=this[yr];Tr(t)||Sr(t);const a=Tr(t);(i=s[a])||(i=s[a]={emitter:t,callbacks:{}}),(o=i.callbacks[e])||(o=i.callbacks[e]=[]),o.push(n),function(t,e,n,r,i){e._addEventListener?e._addEventListener(n,r,i):t._addEventListener.call(e,n,r,i)}(this,t,e,n,r)}stopListening(t,e,n){const r=this[yr];let i=t&&Tr(t);const o=r&&i?r[i]:void 0,s=o&&e?o.callbacks[e]:void 0;if(!(!r||t&&!o||e&&!s))if(n){Rr(this,t,e,n);-1!==s.indexOf(n)&&(1===s.length?delete o.callbacks[e]:Rr(this,t,e,n))}else if(s){for(;n=s.pop();)Rr(this,t,e,n);delete o.callbacks[e]}else if(o){for(e in o.callbacks)this.stopListening(t,e);delete r[i]}else{for(i in r)this.stopListening(r[i].emitter);delete this[yr]}}fire(t,...e){try{const n=t instanceof mr?t:new mr(this,t),r=n.name;let i=Vr(this,r);if(n.path.push(this),i){const t=[n,...e];i=Array.from(i);for(let e=0;e{this[Er]||(this[Er]=new Map),t.forEach((t=>{const r=this[Er].get(t);r?r.set(e,n):this[Er].set(t,new Map([[e,n]]))}))}}}stopDelegating(t,e){if(this[Er])if(t)if(e){const n=this[Er].get(t);n&&n.delete(e)}else this[Er].delete(t);else this[Er].clear()}_addEventListener(t,e,n){!function(t,e){const n=Ir(t);if(n[e])return;let r=e,i=null;const o=[];for(;""!==r&&!n[r];)n[r]={callbacks:[],childEvents:[]},o.push(n[r]),i&&n[r].childEvents.push(i),i=r,r=r.substr(0,r.lastIndexOf(":"));if(""!==r){for(const t of o)t.callbacks=n[r].callbacks.slice();n[r].childEvents.push(i)}}(this,t);const r=Pr(this,t),i={callback:e,priority:fr.get(n.priority)};for(const t of r)br(t,i)}_removeEventListener(t,e){const n=Pr(this,t);for(const t of n)for(let n=0;n-1?Vr(t,e.substr(0,e.lastIndexOf(":"))):null}function Fr(t,e,n){for(let[r,i]of t){i?"function"==typeof i&&(i=i(e.name)):i=e.name;const t=new mr(e.source,i);t.path=[...e.path],r.fire(t,...n)}}function Rr(t,e,n,r){e._removeEventListener?e._removeEventListener(n,r):t._removeEventListener.call(e,n,r)}["on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((t=>{Dr[t]=Br.prototype[t]}));const Lr=Symbol("observableProperties"),zr=Symbol("boundObservables"),Mr=Symbol("boundProperties"),Nr=Symbol("decoratedMethods"),Or=Symbol("decoratedOriginal"),Hr=jr(Dr());function jr(t){if(!t)return Hr;return class extends t{set(t,e){if(s(t))return void Object.keys(t).forEach((e=>{this.set(e,t[e])}),this);qr(this);const n=this[Lr];if(t in this&&!n.has(t))throw new kr("observable-set-cannot-override",this);Object.defineProperty(this,t,{enumerable:!0,configurable:!0,get:()=>n.get(t),set(e){const r=n.get(t);let i=this.fire(`set:${t}`,t,e,r);void 0===i&&(i=e),r===i&&n.has(t)||(n.set(t,i),this.fire(`change:${t}`,t,i,r))}}),this[t]=e}bind(...t){if(!t.length||!$r(t))throw new kr("observable-bind-wrong-properties",this);if(new Set(t).size!==t.length)throw new kr("observable-bind-duplicate-properties",this);qr(this);const e=this[Mr];t.forEach((t=>{if(e.has(t))throw new kr("observable-bind-rebind",this)}));const n=new Map;return t.forEach((t=>{const r={property:t,to:[]};e.set(t,r),n.set(t,r)})),{to:Ur,toMany:Wr,_observable:this,_bindProperties:t,_to:[],_bindings:n}}unbind(...t){if(!this[Lr])return;const e=this[Mr],n=this[zr];if(t.length){if(!$r(t))throw new kr("observable-unbind-wrong-properties",this);t.forEach((t=>{const r=e.get(t);r&&(r.to.forEach((([t,e])=>{const i=n.get(t),o=i[e];o.delete(r),o.size||delete i[e],Object.keys(i).length||(n.delete(t),this.stopListening(t,"change"))})),e.delete(t))}))}else n.forEach(((t,e)=>{this.stopListening(e,"change")})),n.clear(),e.clear()}decorate(t){qr(this);const e=this[t];if(!e)throw new kr("observablemixin-cannot-decorate-undefined",this,{object:this,methodName:t});this.on(t,((t,n)=>{t.return=e.apply(this,n)})),this[t]=function(...e){return this.fire(t,e)},this[t][Or]=e,this[Nr]||(this[Nr]=[]),this[Nr].push(t)}stopListening(t,e,n){if(!t&&this[Nr]){for(const t of this[Nr])this[t]=this[t][Or];delete this[Nr]}super.stopListening(t,e,n)}[Lr];[Nr];[Mr];[zr]}}function qr(t){t[Lr]||(Object.defineProperty(t,Lr,{value:new Map}),Object.defineProperty(t,zr,{value:new Map}),Object.defineProperty(t,Mr,{value:new Map}))}function Ur(...t){const e=function(...t){if(!t.length)throw new kr("observable-bind-to-parse-error",null);const e={to:[]};let n;"function"==typeof t[t.length-1]&&(e.callback=t.pop());return t.forEach((t=>{if("string"==typeof t)n.properties.push(t);else{if("object"!=typeof t)throw new kr("observable-bind-to-parse-error",null);n={observable:t,properties:[]},e.to.push(n)}})),e}(...t),n=Array.from(this._bindings.keys()),r=n.length;if(!e.callback&&e.to.length>1)throw new kr("observable-bind-to-no-callback",this);if(r>1&&e.callback)throw new kr("observable-bind-to-extra-callback",this);var i;e.to.forEach((t=>{if(t.properties.length&&t.properties.length!==r)throw new kr("observable-bind-to-properties-length",this);t.properties.length||(t.properties=this._bindProperties)})),this._to=e.to,e.callback&&(this._bindings.get(n[0]).callback=e.callback),i=this._observable,this._to.forEach((t=>{const e=i[zr];let n;e.get(t.observable)||i.listenTo(t.observable,"change",((r,o)=>{n=e.get(t.observable)[o],n&&n.forEach((t=>{Gr(i,t.property)}))}))})),function(t){let e;t._bindings.forEach(((n,r)=>{t._to.forEach((i=>{e=i.properties[n.callback?0:t._bindProperties.indexOf(r)],n.to.push([i.observable,e]),function(t,e,n,r){const i=t[zr],o=i.get(n),s=o||{};s[r]||(s[r]=new Set);s[r].add(e),o||i.set(n,s)}(t._observable,n,i.observable,e)}))}))}(this),this._bindProperties.forEach((t=>{Gr(this._observable,t)}))}function Wr(t,e,n){if(this._bindings.size>1)throw new kr("observable-bind-to-many-not-one-binding",this);this.to(...function(t,e){const n=t.map((t=>[t,e]));return Array.prototype.concat.apply([],n)}(t,e),n)}function $r(t){return t.every((t=>"string"==typeof t))}function Gr(t,e){const n=t[Mr].get(e);let r;n.callback?r=n.callback.apply(t,n.to.map((t=>t[0][t[1]]))):(r=n.to[0],r=r[0][r[1]]),Object.prototype.hasOwnProperty.call(t,e)?t[e]=r:t.set(e,r)}function Kr(t){let e=0;for(const n of t)e++;return e}function Zr(t,e){const n=Math.min(t.length,e.length);for(let r=0;r{jr[t]=Hr.prototype[t]}));const Jr=function(t){return"string"==typeof t||!ne(t)&&x(t)&&"[object String]"==y(t)};function Qr(t,e,n={},r=[]){const i=n&&n.xmlns,o=i?t.createElementNS(i,e):t.createElement(e);for(const t in n)o.setAttribute(t,n[t]);!Jr(r)&&Yr(r)||(r=[r]);for(let e of r)Jr(e)&&(e=t.createTextNode(e)),o.appendChild(e);return o}class Xr{_config;constructor(t,e){this._config=Object.create(null),e&&this.define(ti(e)),t&&this._setObjectToTarget(this._config,t)}set(t,e){this._setToTarget(this._config,t,e)}define(t,e){this._setToTarget(this._config,t,e,!0)}get(t){return this._getFromSource(this._config,t)}*names(){for(const t of Object.keys(this._config))yield t}_setToTarget(t,e,n,r=!1){if(q(e))return void this._setObjectToTarget(t,e,r);const i=e.split(".");e=i.pop();for(const e of i)q(t[e])||(t[e]=Object.create(null)),t=t[e];if(q(n))return q(t[e])||(t[e]=Object.create(null)),t=t[e],void this._setObjectToTarget(t,n,r);r&&void 0!==t[e]||(t[e]=n)}_getFromSource(t,e){const n=e.split(".");e=n.pop();for(const e of n){if(!q(t[e])){t=null;break}t=t[e]}return t?ti(t[e]):void 0}_setObjectToTarget(t,e,n){Object.keys(e).forEach((r=>{this._setToTarget(t,r,e[r],n)}))}}function ti(t){return jn(t,ei)}function ei(t){return U(t)||"function"==typeof t?t:void 0}function ni(t){if(t){if(t.defaultView)return t instanceof t.defaultView.Document;if(t.ownerDocument&&t.ownerDocument.defaultView)return t instanceof t.ownerDocument.defaultView.Node}return!1}function ri(t){const e=Object.prototype.toString.apply(t);return"[object Window]"==e||"[object global]"==e}const ii=oi(Dr());function oi(t){if(!t)return ii;return class extends t{listenTo(t,e,n,r={}){if(ni(t)||ri(t)){const i={capture:!!r.useCapture,passive:!!r.usePassive},o=this._getProxyEmitter(t,i)||new si(t,i);this.listenTo(o,e,n,r)}else super.listenTo(t,e,n,r)}stopListening(t,e,n){if(ni(t)||ri(t)){const r=this._getAllProxyEmitters(t);for(const t of r)this.stopListening(t,e,n)}else super.stopListening(t,e,n)}_getProxyEmitter(t,e){return function(t,e){const n=t[yr];return n&&n[e]?n[e].emitter:null}(this,ai(t,e))}_getAllProxyEmitters(t){return[{capture:!1,passive:!1},{capture:!1,passive:!0},{capture:!0,passive:!1},{capture:!0,passive:!0}].map((e=>this._getProxyEmitter(t,e))).filter((t=>!!t))}}}["_getProxyEmitter","_getAllProxyEmitters","on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((t=>{oi[t]=ii.prototype[t]}));class si extends(Dr()){_domNode;_options;constructor(t,e){super(),Sr(this,ai(t,e)),this._domNode=t,this._options=e}_domListeners;attach(t){if(this._domListeners&&this._domListeners[t])return;const e=this._createDomListener(t);this._domNode.addEventListener(t,e,this._options),this._domListeners||(this._domListeners={}),this._domListeners[t]=e}detach(t){let e;!this._domListeners[t]||(e=this._events[t])&&e.callbacks.length||this._domListeners[t].removeListener()}_addEventListener(t,e,n){this.attach(t),Dr().prototype._addEventListener.call(this,t,e,n)}_removeEventListener(t,e){Dr().prototype._removeEventListener.call(this,t,e),this.detach(t)}_createDomListener(t){const e=e=>{this.fire(t,e)};return e.removeListener=()=>{this._domNode.removeEventListener(t,e,this._options),delete this._domListeners[t]},e}}function ai(t,e){let n=function(t){return t["data-ck-expando"]||(t["data-ck-expando"]=pr())}(t);for(const t of Object.keys(e).sort())e[t]&&(n+="-"+t);return n}function li(t){const e=[];let n=t;for(;n&&n.nodeType!=Node.DOCUMENT_NODE;)e.unshift(n),n=n.parentNode;return e}function ci(t){return t instanceof HTMLTextAreaElement?t.value:t.innerHTML}function di(t){const e=t.ownerDocument.defaultView.getComputedStyle(t);return{top:parseInt(e.borderTopWidth,10),right:parseInt(e.borderRightWidth,10),bottom:parseInt(e.borderBottomWidth,10),left:parseInt(e.borderLeftWidth,10)}}function hi(t){if(!t.target)return null;const e=t.target.ownerDocument,n=t.clientX,r=t.clientY;let i=null;return e.caretRangeFromPoint&&e.caretRangeFromPoint(n,r)?i=e.caretRangeFromPoint(n,r):t.rangeParent&&(i=e.createRange(),i.setStart(t.rangeParent,t.rangeOffset),i.collapse(!0)),i}function ui(t){return"[object Text]"==Object.prototype.toString.call(t)}function mi(t){return"[object Range]"==Object.prototype.toString.apply(t)}function gi(t){return t&&t.parentNode?t.offsetParent===Yn.document.body?null:t.offsetParent:null}const pi=["top","right","bottom","left","width","height"];class fi{top;right;bottom;left;width;height;_source;constructor(t){const e=mi(t);if(Object.defineProperty(this,"_source",{value:t._source||t,writable:!0,enumerable:!1}),wi(t)||e)if(e){const e=fi.getDomRangeRects(t);bi(this,fi.getBoundingRect(e))}else bi(this,t.getBoundingClientRect());else if(ri(t)){const{innerWidth:e,innerHeight:n}=t;bi(this,{top:0,right:e,bottom:n,left:0,width:e,height:n})}else bi(this,t)}clone(){return new fi(this)}moveTo(t,e){return this.top=e,this.right=t+this.width,this.bottom=e+this.height,this.left=t,this}moveBy(t,e){return this.top+=e,this.right+=t,this.left+=t,this.bottom+=e,this}getIntersection(t){const e={top:Math.max(this.top,t.top),right:Math.min(this.right,t.right),bottom:Math.min(this.bottom,t.bottom),left:Math.max(this.left,t.left),width:0,height:0};if(e.width=e.right-e.left,e.height=e.bottom-e.top,e.width<0||e.height<0)return null;{const t=new fi(e);return t._source=this._source,t}}getIntersectionArea(t){const e=this.getIntersection(t);return e?e.getArea():0}getArea(){return this.width*this.height}getVisible(){const t=this._source;let e=this.clone();if(ki(t))return e;let n,r=t,i=t.parentNode||t.commonAncestorContainer;for(;i&&!ki(i);){const t="visible"===((o=i)instanceof HTMLElement?o.ownerDocument.defaultView.getComputedStyle(o).overflow:"visible");r instanceof HTMLElement&&"absolute"===Ai(r)&&(n=r);const s=Ai(i);if(t||n&&("relative"===s&&t||"relative"!==s)){r=i,i=i.parentNode;continue}const a=new fi(i),l=e.getIntersection(a);if(!l)return null;l.getArea(){for(const e of t){const t=_i._getElementCallbacks(e.target);if(t)for(const n of t)n(e)}}))}}function Ci(t,e){t instanceof HTMLTextAreaElement&&(t.value=e),t.innerHTML=e}function vi(t){return e=>e+t}function yi(t){let e=0;for(;t.previousSibling;)t=t.previousSibling,e++;return e}function xi(t,e,n){t.insertBefore(n,t.childNodes[e]||null)}function Ei(t){return t&&t.nodeType===Node.COMMENT_NODE}function Bi(t){try{Yn.document.createAttribute(t)}catch(t){return!1}return!0}function Di(t){return!!t&&(ui(t)?Di(t.parentElement):!!t.getClientRects&&!!t.getClientRects().length)}function Si({element:t,target:e,positions:n,limiter:r,fitInViewport:i,viewportOffsetConfig:o}){st(e)&&(e=e()),st(r)&&(r=r());const s=gi(t),a=function(t){t=Object.assign({top:0,bottom:0,left:0,right:0},t);const e=new fi(Yn.window);return e.top+=t.top,e.height-=t.top,e.bottom-=t.bottom,e.height-=t.bottom,e}(o),l=new fi(t),c=Ti(e,a);let d;if(!c||!a.getIntersection(c))return null;const h={targetRect:c,elementRect:l,positionedElementAncestor:s,viewportRect:a};if(r||i){if(r){const t=Ti(r,a);t&&(h.limiterRect=t)}d=function(t,e){const{elementRect:n}=e,r=n.getArea(),i=t.map((t=>new Ii(t,e))).filter((t=>!!t.name));let o=0,s=null;for(const t of i){const{limiterIntersectionArea:e,viewportIntersectionArea:n}=t;if(e===r)return t;const i=n**2+e**2;i>o&&(o=i,s=t)}return s}(n,h)}else d=new Ii(n[0],h);return d}function Ti(t,e){const n=new fi(t).getVisible();return n?n.getIntersection(e):null}class Ii{name;config;_positioningFunctionCoordinates;_options;_cachedRect;_cachedAbsoluteRect;constructor(t,e){const n=t(e.targetRect,e.elementRect,e.viewportRect,e.limiterRect);if(!n)return;const{left:r,top:i,name:o,config:s}=n;this.name=o,this.config=s,this._positioningFunctionCoordinates={left:r,top:i},this._options=e}get left(){return this._absoluteRect.left}get top(){return this._absoluteRect.top}get limiterIntersectionArea(){const t=this._options.limiterRect;return t?t.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 Pi(t){const e=t.parentNode;e&&e.removeChild(t)}function Vi({target:t,viewportOffset:e=0,ancestorOffset:n=0,alignToTop:r,forceScroll:i}){const o=Oi(t);let s=o,a=null;for(e=function(t){if("number"==typeof t)return{top:t,bottom:t,left:t,right:t};return t}(e);s;){let l;l=Hi(s==o?t:a),Ri({parent:l,getRect:()=>ji(t,s),alignToTop:r,ancestorOffset:n,forceScroll:i});const c=ji(t,s);if(Fi({window:s,rect:c,viewportOffset:e,alignToTop:r,forceScroll:i}),s.parent!=s){if(a=s.frameElement,s=s.parent,!a)return}else s=null}}function Fi({window:t,rect:e,alignToTop:n,forceScroll:r,viewportOffset:i}){const o=e.clone().moveBy(0,i.bottom),s=e.clone().moveBy(0,-i.top),a=new fi(t).excludeScrollbarsAndBorders(),l=n&&r,c=[s,o].every((t=>a.contains(t)));let{scrollX:d,scrollY:h}=t;const u=d,m=h;l?h-=a.top-e.top+i.top:c||(zi(s,a)?h-=a.top-e.top+i.top:Li(o,a)&&(h+=n?e.top-a.top-i.top:e.bottom-a.bottom+i.bottom)),c||(Mi(e,a)?d-=a.left-e.left+i.left:Ni(e,a)&&(d+=e.right-a.right+i.right)),d==u&&h===m||t.scrollTo(d,h)}function Ri({parent:t,getRect:e,alignToTop:n,forceScroll:r,ancestorOffset:i=0,limiterElement:o}){const s=Oi(t),a=n&&r;let l,c,d;const h=o||s.document.body;for(;t!=h;)c=e(),l=new fi(t).excludeScrollbarsAndBorders(),d=l.contains(c),a?t.scrollTop-=l.top-c.top+i:d||(zi(c,l)?t.scrollTop-=l.top-c.top+i:Li(c,l)&&(t.scrollTop+=n?c.top-l.top-i:c.bottom-l.bottom+i)),d||(Mi(c,l)?t.scrollLeft-=l.left-c.left+i:Ni(c,l)&&(t.scrollLeft+=c.right-l.right+i)),t=t.parentNode}function Li(t,e){return t.bottom>e.bottom}function zi(t,e){return t.tope.right}function Oi(t){return mi(t)?t.startContainer.ownerDocument.defaultView:t.ownerDocument.defaultView}function Hi(t){if(mi(t)){let e=t.commonAncestorContainer;return ui(e)&&(e=e.parentNode),e}return t.parentNode}function ji(t,e){const n=Oi(t),r=new fi(t);if(n===e)return r;{let t=n;for(;t!=e;){const e=t.frameElement,n=new fi(e).excludeScrollbarsAndBorders();r.moveBy(n.left,n.top),t=t.parent}}return r}const qi={ctrl:"⌃",cmd:"⌘",alt:"⌥",shift:"⇧"},Ui={ctrl:"Ctrl+",alt:"Alt+",shift:"Shift+"},Wi={37:"←",38:"↑",39:"→",40:"↓",9:"⇥",33:"Page Up",34:"Page Down"},$i=Qi(),Gi=Object.fromEntries(Object.entries($i).map((([t,e])=>{let n;return n=e in Wi?Wi[e]:t.charAt(0).toUpperCase()+t.slice(1),[e,n]})));function Ki(t){let e;if("string"==typeof t){if(e=$i[t.toLowerCase()],!e)throw new kr("keyboard-unknown-key",null,{key:t})}else e=t.keyCode+(t.altKey?$i.alt:0)+(t.ctrlKey?$i.ctrl:0)+(t.shiftKey?$i.shift:0)+(t.metaKey?$i.cmd:0);return e}function Zi(t){return"string"==typeof t&&(t=function(t){return t.split("+").map((t=>t.trim()))}(t)),t.map((t=>"string"==typeof t?function(t){if(t.endsWith("!"))return Ki(t.slice(0,-1));const e=Ki(t);return(Xn.isMac||Xn.isiOS)&&e==$i.ctrl?$i.cmd:e}(t):t)).reduce(((t,e)=>e+t),0)}function Yi(t){let e=Zi(t);return Object.entries(Xn.isMac||Xn.isiOS?qi:Ui).reduce(((t,[n,r])=>(e&$i[n]&&(e&=~$i[n],t+=r),t)),"")+(e?Gi[e]:"")}function Ji(t,e){const n="ltr"===e;switch(t){case $i.arrowleft:return n?"left":"right";case $i.arrowright:return n?"right":"left";case $i.arrowup:return"up";case $i.arrowdown:return"down"}}function Qi(){const t={pageup:33,pagedown:34,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 e=65;e<=90;e++){t[String.fromCharCode(e).toLowerCase()]=e}for(let e=48;e<=57;e++)t[e-48]=e;for(let e=112;e<=123;e++)t["f"+(e-111)]=e;return Object.assign(t,{"'":222,",":108,"-":109,".":110,"/":111,";":186,"=":187,"[":219,"\\":220,"]":221,"`":223}),t}const Xi=["ar","ara","dv","div","fa","per","fas","he","heb","ku","kur","ug","uig"];function to(t){return Xi.includes(t)?"rtl":"ltr"}function eo(t){return Array.isArray(t)?t:[t]}const no=function(t,e,n){(void 0!==n&&!G(t[e],n)||void 0===n&&!(e in t))&&$t(t,e,n)};const ro=function(t){return function(e,n,r){for(var i=-1,o=Object(e),s=r(e),a=s.length;a--;){var l=s[t?a:++i];if(!1===n(o[l],l,o))break}return e}}();const io=function(t){return x(t)&&Be(t)};const oo=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};const so=function(t){return Zt(t,Ve(t))};const ao=function(t,e,n,r,i,o,a){var l=oo(t,n),c=oo(e,n),d=a.get(c);if(d)no(t,n,d);else{var h=o?o(l,c,n+"",t,e,a):void 0,u=void 0===h;if(u){var m=ne(c),g=!m&&ae(c),p=!m&&!g&&we(c);h=c,m||g||p?ne(l)?h=l:io(l)?h=Oe(l):g?(u=!1,h=Ne(c,!0)):p?(u=!1,h=En(c,!0)):h=[]:q(c)||ee(c)?(h=l,ee(l)?h=so(l):s(l)&&!st(l)||(h=Tn(c))):u=!1}u&&(a.set(c,h),i(h,c,r,o,a),a.delete(c)),no(t,n,h)}};const lo=function t(e,n,r,i,o){e!==n&&ro(n,(function(a,l){if(o||(o=new qt),s(a))ao(e,n,l,r,t,i,o);else{var c=i?i(oo(e,l),a,l+"",e,n,o):void 0;void 0===c&&(c=a),no(e,l,c)}}),Ve)};const co=function(t){return t};const ho=function(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)};var uo=Math.max;const mo=function(t,e,n){return e=uo(void 0===e?t.length-1:e,0),function(){for(var r=arguments,i=-1,o=uo(r.length-e,0),s=Array(o);++i0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}};const ko=bo(po);const wo=function(t,e){return ko(mo(t,e,co),t+"")};const Ao=function(t,e,n){if(!s(n))return!1;var r=typeof e;return!!("number"==r?Be(n)&&ce(e,n.length):"string"==r&&e in n)&&G(n[e],t)};const _o=function(t){return wo((function(e,n){var r=-1,i=n.length,o=i>1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(o=t.length>3&&"function"==typeof o?(i--,o):void 0,s&&Ao(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),e=Object(e);++r1===t?0:1),c=a[s];if("string"==typeof c)return c;return c[Number(l(n))]}Yn.window.CKEDITOR_TRANSLATIONS||(Yn.window.CKEDITOR_TRANSLATIONS={});class yo{uiLanguage;uiLanguageDirection;contentLanguage;contentLanguageDirection;t;translations;constructor({uiLanguage:t="en",contentLanguage:e,translations:n}={}){this.uiLanguage=t,this.contentLanguage=e||this.uiLanguage,this.uiLanguageDirection=to(this.uiLanguage),this.contentLanguageDirection=to(this.contentLanguage),this.translations=function(t){return Array.isArray(t)?t.reduce(((t,e)=>Co(t,e))):t}(n),this.t=(t,e)=>this._t(t,e)}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(t,e=[]){e=eo(e),"string"==typeof t&&(t={string:t});const n=!!t.plural?e[0]:1;return function(t,e){return t.replace(/%(\d+)/g,((t,n)=>nthis._items.length||e<0)throw new kr("collection-add-item-invalid-index",this);let n=0;for(const r of t){const t=this._getItemIdBeforeAdding(r),i=e+n;this._items.splice(i,0,r),this._itemMap.set(t,r),this.fire("add",r,i),n++}return this.fire("change",{added:t,removed:[],index:e}),this}get(t){let e;if("string"==typeof t)e=this._itemMap.get(t);else{if("number"!=typeof t)throw new kr("collection-get-invalid-arg",this);e=this._items[t]}return e||null}has(t){if("string"==typeof t)return this._itemMap.has(t);{const e=t[this._idProperty];return e&&this._itemMap.has(e)}}getIndex(t){let e;return e="string"==typeof t?this._itemMap.get(t):t,e?this._items.indexOf(e):-1}remove(t){const[e,n]=this._remove(t);return this.fire("change",{added:[],removed:[e],index:n}),e}map(t,e){return this._items.map(t,e)}forEach(t,e){this._items.forEach(t,e)}find(t,e){return this._items.find(t,e)}filter(t,e){return this._items.filter(t,e)}clear(){this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);const t=Array.from(this._items);for(;this.length;)this._remove(0);this.fire("change",{added:[],removed:t,index:0})}bindTo(t){if(this._bindToCollection)throw new kr("collection-bind-to-rebind",this);return this._bindToCollection=t,{as:t=>{this._setUpBindToBinding((e=>new t(e)))},using:t=>{"function"==typeof t?this._setUpBindToBinding(t):this._setUpBindToBinding((e=>e[t]))}}}_setUpBindToBinding(t){const e=this._bindToCollection,n=(n,r,i)=>{const o=e._bindToCollection==this,s=e._bindToInternalToExternalMap.get(r);if(o&&s)this._bindToExternalToInternalMap.set(r,s),this._bindToInternalToExternalMap.set(s,r);else{const n=t(r);if(!n)return void this._skippedIndexesFromExternal.push(i);let o=i;for(const t of this._skippedIndexesFromExternal)i>t&&o--;for(const t of e._skippedIndexesFromExternal)o>=t&&o++;this._bindToExternalToInternalMap.set(r,n),this._bindToInternalToExternalMap.set(n,r),this.add(n,o);for(let t=0;t{const r=this._bindToExternalToInternalMap.get(e);r&&this.remove(r),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce(((t,e)=>(ne&&t.push(e),t)),[])}))}_getItemIdBeforeAdding(t){const e=this._idProperty;let n;if(e in t){if(n=t[e],"string"!=typeof n)throw new kr("collection-add-invalid-id",this);if(this.get(n))throw new kr("collection-add-item-already-exists",this)}else t[e]=n=pr();return n}_remove(t){let e,n,r,i=!1;const o=this._idProperty;if("string"==typeof t?(n=t,r=this._itemMap.get(n),i=!r,r&&(e=this._items.indexOf(r))):"number"==typeof t?(e=t,r=this._items[e],i=!r,r&&(n=r[o])):(r=t,n=r[o],e=this._items.indexOf(r),i=-1==e||!this._itemMap.get(n)),i)throw new kr("collection-remove-404",this);this._items.splice(e,1),this._itemMap.delete(n);const s=this._bindToInternalToExternalMap.get(r);return this._bindToInternalToExternalMap.delete(r),this._bindToExternalToInternalMap.delete(s),this.fire("remove",r,e),[r,e]}[Symbol.iterator](){return this._items[Symbol.iterator]()}}function Eo(t){const e=t.next();return e.done?null:e.value}class Bo extends(oi(jr())){_elements=new Set;_nextEventLoopTimeout=null;constructor(){super(),this.set("isFocused",!1),this.set("focusedElement",null)}get elements(){return Array.from(this._elements.values())}add(t){if(this._elements.has(t))throw new kr("focustracker-add-element-already-exist",this);this.listenTo(t,"focus",(()=>this._focus(t)),{useCapture:!0}),this.listenTo(t,"blur",(()=>this._blur()),{useCapture:!0}),this._elements.add(t)}remove(t){t===this.focusedElement&&this._blur(),this._elements.has(t)&&(this.stopListening(t),this._elements.delete(t))}destroy(){this.stopListening()}_focus(t){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=t,this.isFocused=!0}_blur(){clearTimeout(this._nextEventLoopTimeout),this._nextEventLoopTimeout=setTimeout((()=>{this.focusedElement=null,this.isFocused=!1}),0)}}class Do{_listener;constructor(){this._listener=new(oi())}listenTo(t){this._listener.listenTo(t,"keydown",((t,e)=>{this._listener.fire("_keydown:"+Ki(e),e)}))}set(t,e,n={}){const r=Zi(t),i=n.priority;this._listener.listenTo(this._listener,"_keydown:"+r,((t,r)=>{n.filter&&!n.filter(r)||(e(r,(()=>{r.preventDefault(),r.stopPropagation(),t.stop()})),t.return=!0)}),{priority:i})}press(t){return!!this._listener.fire("_keydown:"+Ki(t),t)}stopListening(t){this._listener.stopListening(t)}destroy(){this.stopListening()}}function So(t){return Yr(t)?new Map(t):function(t){const e=new Map;for(const n in t)e.set(n,t[n]);return e}(t)}function To(t,e){let n;function r(...i){r.cancel(),n=setTimeout((()=>t(...i)),e)}return r.cancel=()=>{clearTimeout(n)},r}function Io(t,e){return!!(n=t.charAt(e-1))&&1==n.length&&/[\ud800-\udbff]/.test(n)&&function(t){return!!t&&1==t.length&&/[\udc00-\udfff]/.test(t)}(t.charAt(e));var n}function Po(t,e){return!!(n=t.charAt(e))&&1==n.length&&/[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(n);var n}const Vo=Ro();function Fo(t,e){const n=String(t).matchAll(Vo);return Array.from(n).some((t=>t.indext.source)).join("|")+")";return new RegExp(`${t}|${e}(?:‍${e})*`,"ug")}class Lo extends(jr()){editor;_disableStack=new Set;constructor(t){super(),this.editor=t,this.set("isEnabled",!0)}forceDisabled(t){this._disableStack.add(t),1==this._disableStack.size&&(this.on("set:isEnabled",zo,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(t){this._disableStack.delete(t),0==this._disableStack.size&&(this.off("set:isEnabled",zo),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}}function zo(t){t.return=!1,t.stop()}class Mo extends(jr()){editor;_isEnabledBasedOnSelection;_affectsData;_disableStack;constructor(t){super(),this.editor=t,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(t,"change:isReadOnly",(()=>{this.refresh()})),this.on("set:isEnabled",(e=>{if(!this.affectsData)return;const n=t.model.document.selection,r=!("$graveyard"==n.getFirstPosition().root.rootName)&&t.model.canEditAt(n);(t.isReadOnly||this._isEnabledBasedOnSelection&&!r)&&(e.return=!1,e.stop())}),{priority:"highest"}),this.on("execute",(t=>{this.isEnabled||t.stop()}),{priority:"high"})}get affectsData(){return this._affectsData}set affectsData(t){this._affectsData=t}refresh(){this.isEnabled=!0}forceDisabled(t){this._disableStack.add(t),1==this._disableStack.size&&(this.on("set:isEnabled",No,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(t){this._disableStack.delete(t),0==this._disableStack.size&&(this.off("set:isEnabled",No),this.refresh())}execute(...t){}destroy(){this.stopListening()}}function No(t){t.return=!1,t.stop()}class Oo extends Mo{_childCommandsDefinitions=[];refresh(){}execute(...t){const e=this._getFirstEnabledCommand();return!!e&&e.execute(t)}registerChildCommand(t,e={}){br(this._childCommandsDefinitions,{command:t,priority:e.priority||"normal"}),t.on("change:isEnabled",(()=>this._checkEnabled())),this._checkEnabled()}_checkEnabled(){this.isEnabled=!!this._getFirstEnabledCommand()}_getFirstEnabledCommand(){const t=this._childCommandsDefinitions.find((({command:t})=>t.isEnabled));return t&&t.command}}class Ho extends(Dr()){_context;_plugins=new Map;_availablePlugins;_contextPlugins;constructor(t,e=[],n=[]){super(),this._context=t,this._availablePlugins=new Map;for(const t of e)t.pluginName&&this._availablePlugins.set(t.pluginName,t);this._contextPlugins=new Map;for(const[t,e]of n)this._contextPlugins.set(t,e),this._contextPlugins.set(e,t),t.pluginName&&this._availablePlugins.set(t.pluginName,t)}*[Symbol.iterator](){for(const t of this._plugins)"function"==typeof t[0]&&(yield t)}get(t){const e=this._plugins.get(t);if(!e){let e=t;throw"function"==typeof t&&(e=t.pluginName||t.name),new kr("plugincollection-plugin-not-loaded",this._context,{plugin:e})}return e}has(t){return this._plugins.has(t)}init(t,e=[],n=[]){const r=this,i=this._context;!function t(e,n=new Set){e.forEach((e=>{a(e)&&(n.has(e)||(n.add(e),e.pluginName&&!r._availablePlugins.has(e.pluginName)&&r._availablePlugins.set(e.pluginName,e),e.requires&&t(e.requires,n)))}))}(t),h(t);const o=[...function t(e,n=new Set){return e.map((t=>a(t)?t:r._availablePlugins.get(t))).reduce(((e,r)=>n.has(r)?e:(n.add(r),r.requires&&(h(r.requires,r),t(r.requires,n).forEach((t=>e.add(t)))),e.add(r))),new Set)}(t.filter((t=>!c(t,e))))];!function(t,e){for(const n of e){if("function"!=typeof n)throw new kr("plugincollection-replace-plugin-invalid-type",null,{pluginItem:n});const e=n.pluginName;if(!e)throw new kr("plugincollection-replace-plugin-missing-name",null,{pluginItem:n});if(n.requires&&n.requires.length)throw new kr("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:e});const i=r._availablePlugins.get(e);if(!i)throw new kr("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:e});const o=t.indexOf(i);if(-1===o){if(r._contextPlugins.has(i))return;throw new kr("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:e})}if(i.requires&&i.requires.length)throw new kr("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:e});t.splice(o,1,n),r._availablePlugins.set(e,n)}}(o,n);const s=o.map((t=>{let e=r._contextPlugins.get(t);return e=e||new t(i),r._add(t,e),e}));return u(s,"init").then((()=>u(s,"afterInit"))).then((()=>s));function a(t){return"function"==typeof t}function l(t){return a(t)&&!!t.isContextPlugin}function c(t,e){return e.some((e=>e===t||(d(t)===e||d(e)===t)))}function d(t){return a(t)?t.pluginName||t.name:t}function h(t,n=null){t.map((t=>a(t)?t:r._availablePlugins.get(t)||t)).forEach((t=>{!function(t,e){if(a(t))return;if(e)throw new kr("plugincollection-soft-required",i,{missingPlugin:t,requiredBy:d(e)});throw new kr("plugincollection-plugin-not-found",i,{plugin:t})}(t,n),function(t,e){if(!l(e))return;if(l(t))return;throw new kr("plugincollection-context-required",i,{plugin:d(t),requiredBy:d(e)})}(t,n),function(t,n){if(!n)return;if(!c(t,e))return;throw new kr("plugincollection-required",i,{plugin:d(t),requiredBy:d(n)})}(t,n)}))}function u(t,e){return t.reduce(((t,n)=>n[e]?r._contextPlugins.has(n)?t:t.then(n[e].bind(n)):t),Promise.resolve())}}destroy(){const t=[];for(const[,e]of this)"function"!=typeof e.destroy||this._contextPlugins.has(e)||t.push(e.destroy());return Promise.all(t)}_add(t,e){this._plugins.set(t,e);const n=t.pluginName;if(n){if(this._plugins.has(n))throw new kr("plugincollection-plugin-name-conflict",null,{pluginName:n,plugin1:this._plugins.get(n).constructor,plugin2:t});this._plugins.set(n,e)}}}class jo{config;plugins;locale;t;editors;static defaultConfig;static builtinPlugins;_contextOwner=null;constructor(t){const{translations:e,...n}=t||{};this.config=new Xr(n,this.constructor.defaultConfig);const r=this.constructor.builtinPlugins;this.config.define("plugins",r),this.plugins=new Ho(this,r);const i=this.config.get("language")||{};this.locale=new yo({uiLanguage:"string"==typeof i?i:i.ui,contentLanguage:this.config.get("language.content"),translations:e}),this.t=this.locale.t,this.editors=new xo}initPlugins(){const t=this.config.get("plugins")||[],e=this.config.get("substitutePlugins")||[];for(const n of t.concat(e)){if("function"!=typeof n)throw new kr("context-initplugins-constructor-only",null,{Plugin:n});if(!0!==n.isContextPlugin)throw new kr("context-initplugins-invalid-plugin",null,{Plugin:n})}return this.plugins.init(t,[],e)}destroy(){return Promise.all(Array.from(this.editors,(t=>t.destroy()))).then((()=>this.plugins.destroy()))}_addEditor(t,e){if(this._contextOwner)throw new kr("context-addeditor-private-context");this.editors.add(t),e&&(this._contextOwner=t)}_removeEditor(t){return this.editors.has(t)&&this.editors.remove(t),this._contextOwner===t?this.destroy():Promise.resolve()}_getEditorConfig(){const t={};for(const e of this.config.names())["plugins","removePlugins","extraPlugins"].includes(e)||(t[e]=this.config.get(e));return t}static create(t){return new Promise((e=>{const n=new this(t);e(n.initPlugins().then((()=>n)))}))}}class qo extends(jr()){context;constructor(t){super(),this.context=t}destroy(){this.stopListening()}static get isContextPlugin(){return!0}}class Uo extends Do{editor;constructor(t){super(),this.editor=t}set(t,e,n={}){if("string"==typeof e){const t=e;e=(e,n)=>{this.editor.execute(t),n()}}super.set(t,e,n)}}var Wo=n(2591),$o=n.n(Wo),Go=n(4098),Ko={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Go.A,Ko);Go.A.locals;const Zo=new WeakMap;let Yo=!1;function Jo({view:t,element:e,text:n,isDirectHost:r=!0,keepOnFocus:i=!1}){const o=t.document;function s(n){Zo.get(o).set(e,{text:n,isDirectHost:r,keepOnFocus:i,hostElement:r?e:null}),t.change((t=>Xo(o,t)))}Zo.has(o)||(Zo.set(o,new Map),o.registerPostFixer((t=>Xo(o,t))),o.on("change:isComposing",(()=>{t.change((t=>Xo(o,t)))}),{priority:"high"})),e.is("editableElement")&&e.on("change:placeholder",((t,e,n)=>{s(n)})),e.placeholder?s(e.placeholder):n&&s(n),n&&function(){Yo||wr("enableplaceholder-deprecated-text-option");Yo=!0}()}function Qo(t,e){return!!e.hasClass("ck-placeholder")&&(t.removeClass("ck-placeholder",e),!0)}function Xo(t,e){const n=Zo.get(t),r=[];let i=!1;for(const[t,o]of n)o.isDirectHost&&(r.push(t),ts(e,t,o)&&(i=!0));for(const[t,o]of n){if(o.isDirectHost)continue;const n=es(t);n&&(r.includes(n)||(o.hostElement=n,ts(e,t,o)&&(i=!0)))}return i}function ts(t,e,n){const{text:r,isDirectHost:i,hostElement:o}=n;let s=!1;o.getAttribute("data-placeholder")!==r&&(t.setAttribute("data-placeholder",r,o),s=!0);return(i||1==e.childCount)&&function(t,e){if(!t.isAttached())return!1;if(Array.from(t.getChildren()).some((t=>!t.is("uiElement"))))return!1;const n=t.document,r=n.selection.anchor;return!(n.isComposing&&r&&r.parent===t||!e&&n.isFocused&&(!r||r.parent===t))}(o,n.keepOnFocus)?function(t,e){return!e.hasClass("ck-placeholder")&&(t.addClass("ck-placeholder",e),!0)}(t,o)&&(s=!0):Qo(t,o)&&(s=!0),s}function es(t){if(t.childCount){const e=t.getChild(0);if(e.is("element")&&!e.is("uiElement")&&!e.is("attributeElement"))return e}return null}class ns{is(){throw new Error("is() method is abstract")}}const rs=function(t){return Hn(t,4)};class is extends(Dr(ns)){document;parent;constructor(t){super(),this.document=t,this.parent=null}get index(){let t;if(!this.parent)return null;if(-1==(t=this.parent.getChildIndex(this)))throw new kr("view-node-not-found-in-parent",this);return t}get nextSibling(){const t=this.index;return null!==t&&this.parent.getChild(t+1)||null}get previousSibling(){const t=this.index;return null!==t&&this.parent.getChild(t-1)||null}get root(){let t=this;for(;t.parent;)t=t.parent;return t}isAttached(){return this.root.is("rootElement")}getPath(){const t=[];let e=this;for(;e.parent;)t.unshift(e.index),e=e.parent;return t}getAncestors(t={}){const e=[];let n=t.includeSelf?this:this.parent;for(;n;)e[t.parentFirst?"push":"unshift"](n),n=n.parent;return e}getCommonAncestor(t,e={}){const n=this.getAncestors(e),r=t.getAncestors(e);let i=0;for(;n[i]==r[i]&&n[i];)i++;return 0===i?null:n[i-1]}isBefore(t){if(this==t)return!1;if(this.root!==t.root)return!1;const e=this.getPath(),n=t.getPath(),r=Zr(e,n);switch(r){case"prefix":return!0;case"extension":return!1;default:return e[r]t.data.length)throw new kr("view-textproxy-wrong-offsetintext",this);if(n<0||e+n>t.data.length)throw new kr("view-textproxy-wrong-length",this);this.data=t.data.substring(e,e+n),this.offsetInText=e}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(t={}){const e=[];let n=t.includeSelf?this.textNode:this.parent;for(;null!==n;)e[t.parentFirst?"push":"unshift"](n),n=n.parent;return e}}ss.prototype.is=function(t){return"$textProxy"===t||"view:$textProxy"===t||"textProxy"===t||"view:textProxy"===t};class as{_patterns=[];constructor(...t){this.add(...t)}add(...t){for(let e of t)("string"==typeof e||e instanceof RegExp)&&(e={name:e}),this._patterns.push(e)}match(...t){for(const e of t)for(const t of this._patterns){const n=ls(e,t);if(n)return{element:e,pattern:t,match:n}}return null}matchAll(...t){const e=[];for(const n of t)for(const t of this._patterns){const r=ls(n,t);r&&e.push({element:n,pattern:t,match:r})}return e.length>0?e:null}getElementName(){if(1!==this._patterns.length)return null;const t=this._patterns[0],e=t.name;return"function"==typeof t||!e||e instanceof RegExp?null:e}}function ls(t,e){if("function"==typeof e)return e(t);const n={};return e.name&&(n.name=function(t,e){if(t instanceof RegExp)return!!e.match(t);return t===e}(e.name,t.name),!n.name)||e.attributes&&(n.attributes=function(t,e){const n=new Set(e.getAttributeKeys());q(t)?(void 0!==t.style&&wr("matcher-pattern-deprecated-attributes-style-key",t),void 0!==t.class&&wr("matcher-pattern-deprecated-attributes-class-key",t)):(n.delete("style"),n.delete("class"));return cs(t,n,(t=>e.getAttribute(t)))}(e.attributes,t),!n.attributes)||e.classes&&(n.classes=function(t,e){return cs(t,e.getClassNames(),(()=>{}))}(e.classes,t),!n.classes)||e.styles&&(n.styles=function(t,e){return cs(t,e.getStyleNames(!0),(t=>e.getStyle(t)))}(e.styles,t),!n.styles)?null:n}function cs(t,e,n){const r=function(t){if(Array.isArray(t))return t.map((t=>q(t)?(void 0!==t.key&&void 0!==t.value||wr("matcher-pattern-missing-key-or-value",t),[t.key,t.value]):[t,!0]));if(q(t))return Object.entries(t);return[[t,!0]]}(t),i=Array.from(e),o=[];if(r.forEach((([t,e])=>{i.forEach((r=>{(function(t,e){return!0===t||t===e||t instanceof RegExp&&e.match(t)})(t,r)&&function(t,e,n){if(!0===t)return!0;const r=n(e);return t===r||t instanceof RegExp&&!!String(r).match(t)}(e,r,n)&&o.push(r)}))})),r.length&&!(o.lengthi?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=Array(i);++re===t));return Array.isArray(e)}set(t,e){if(s(t))for(const[e,n]of Object.entries(t))this._styleProcessor.toNormalizedForm(e,n,this._styles);else this._styleProcessor.toNormalizedForm(t,e,this._styles)}remove(t){const e=Ms(t);Ps(this._styles,e),delete this._styles[t],this._cleanEmptyObjectsOnPath(e)}getNormalized(t){return this._styleProcessor.getNormalized(t,this._styles)}toString(){return this.isEmpty?"":this.getStylesEntries().map((t=>t.join(":"))).sort().join(";")+";"}getAsString(t){if(this.isEmpty)return;if(this._styles[t]&&!s(this._styles[t]))return this._styles[t];const e=this._styleProcessor.getReducedForm(t,this._styles).find((([e])=>e===t));return Array.isArray(e)?e[1]:void 0}getStyleNames(t=!1){if(this.isEmpty)return[];if(t)return this._styleProcessor.getStyleNames(this._styles);return this.getStylesEntries().map((([t])=>t))}clear(){this._styles={}}getStylesEntries(){const t=[],e=Object.keys(this._styles);for(const n of e)t.push(...this._styleProcessor.getReducedForm(n,this._styles));return t}_cleanEmptyObjectsOnPath(t){const e=t.split(".");if(!(e.length>1))return;const n=e.splice(0,e.length-1).join("."),r=Vs(this._styles,n);if(!r)return;!Object.keys(r).length&&this.remove(n)}}class zs{_normalizers;_extractors;_reducers;_consumables;constructor(){this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(t,e,n){if(s(e))Ns(n,Ms(t),e);else if(this._normalizers.has(t)){const r=this._normalizers.get(t),{path:i,value:o}=r(e);Ns(n,i,o)}else Ns(n,t,e)}getNormalized(t,e){if(!t)return Co({},e);if(void 0!==e[t])return e[t];if(this._extractors.has(t)){const n=this._extractors.get(t);if("string"==typeof n)return Vs(e,n);const r=n(t,e);if(r)return r}return Vs(e,Ms(t))}getReducedForm(t,e){const n=this.getNormalized(t,e);if(void 0===n)return[];if(this._reducers.has(t)){return this._reducers.get(t)(n)}return[[t,n]]}getStyleNames(t){const e=new Set;for(const n of this._consumables.keys()){const r=this.getNormalized(n,t);r&&("object"!=typeof r||Object.keys(r).length)&&e.add(n)}for(const n of Object.keys(t))e.add(n);return Array.from(e)}getRelatedStyles(t){return this._consumables.get(t)||[]}setNormalizer(t,e){this._normalizers.set(t,e)}setExtractor(t,e){this._extractors.set(t,e)}setReducer(t,e){this._reducers.set(t,e)}setStyleRelation(t,e){this._mapStyleNames(t,e);for(const n of e)this._mapStyleNames(n,[t])}_mapStyleNames(t,e){this._consumables.has(t)||this._consumables.set(t,[]),this._consumables.get(t).push(...e)}}function Ms(t){return t.replace("-",".")}function Ns(t,e,n){let r=n;s(n)&&(r=Co({},Vs(t,e),n)),Rs(t,e,r)}class Os extends is{name;_unsafeAttributesToRender=[];_attrs;_children;_classes;_styles;_customProperties=new Map;constructor(t,e,n,r){if(super(t),this.name=e,this._attrs=function(t){const e=So(t);for(const[t,n]of e)null===n?e.delete(t):"string"!=typeof n&&e.set(t,String(n));return e}(n),this._children=[],r&&this._insertChild(0,r),this._classes=new Set,this._attrs.has("class")){const t=this._attrs.get("class");Hs(this._classes,t),this._attrs.delete("class")}this._styles=new Ls(this.document.stylesProcessor),this._attrs.has("style")&&(this._styles.setTo(this._attrs.get("style")),this._attrs.delete("style"))}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}getChild(t){return this._children[t]}getChildIndex(t){return this._children.indexOf(t)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes.size>0&&(yield"class"),this._styles.isEmpty||(yield"style"),yield*this._attrs.keys()}*getAttributes(){yield*this._attrs.entries(),this._classes.size>0&&(yield["class",this.getAttribute("class")]),this._styles.isEmpty||(yield["style",this.getAttribute("style")])}getAttribute(t){if("class"==t)return this._classes.size>0?[...this._classes].join(" "):void 0;if("style"==t){const t=this._styles.toString();return""==t?void 0:t}return this._attrs.get(t)}hasAttribute(t){return"class"==t?this._classes.size>0:"style"==t?!this._styles.isEmpty:this._attrs.has(t)}isSimilar(t){if(!(t instanceof Os))return!1;if(this===t)return!0;if(this.name!=t.name)return!1;if(this._attrs.size!==t._attrs.size||this._classes.size!==t._classes.size||this._styles.size!==t._styles.size)return!1;for(const[e,n]of this._attrs)if(!t._attrs.has(e)||t._attrs.get(e)!==n)return!1;for(const e of this._classes)if(!t._classes.has(e))return!1;for(const e of this._styles.getStyleNames())if(!t._styles.has(e)||t._styles.getAsString(e)!==this._styles.getAsString(e))return!1;return!0}hasClass(...t){for(const e of t)if(!this._classes.has(e))return!1;return!0}getClassNames(){return this._classes.keys()}getStyle(t){return this._styles.getAsString(t)}getNormalizedStyle(t){return this._styles.getNormalized(t)}getStyleNames(t){return this._styles.getStyleNames(t)}hasStyle(...t){for(const e of t)if(!this._styles.has(e))return!1;return!0}findAncestor(...t){const e=new as(...t);let n=this.parent;for(;n&&!n.is("documentFragment");){if(e.match(n))return n;n=n.parent}return null}getCustomProperty(t){return this._customProperties.get(t)}*getCustomProperties(){yield*this._customProperties.entries()}getIdentity(){const t=Array.from(this._classes).sort().join(","),e=this._styles.toString(),n=Array.from(this._attrs).map((t=>`${t[0]}="${t[1]}"`)).sort().join(" ");return this.name+(""==t?"":` class="${t}"`)+(e?` style="${e}"`:"")+(""==n?"":` ${n}`)}shouldRenderUnsafeAttribute(t){return this._unsafeAttributesToRender.includes(t)}_clone(t=!1){const e=[];if(t)for(const n of this.getChildren())e.push(n._clone(t));const n=new this.constructor(this.document,this.name,this._attrs,e);return n._classes=new Set(this._classes),n._styles.set(this._styles.getNormalized()),n._customProperties=new Map(this._customProperties),n.getFillerOffset=this.getFillerOffset,n._unsafeAttributesToRender=this._unsafeAttributesToRender,n}_appendChild(t){return this._insertChild(this.childCount,t)}_insertChild(t,e){this._fireChange("children",this);let n=0;const r=function(t,e){if("string"==typeof e)return[new os(t,e)];Yr(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new os(t,e):e instanceof ss?new os(t,e.data):e))}(this.document,e);for(const e of r)null!==e.parent&&e._remove(),e.parent=this,e.document=this.document,this._children.splice(t,0,e),t++,n++;return n}_removeChildren(t,e=1){this._fireChange("children",this);for(let n=t;n0&&(this._classes.clear(),!0):"style"==t?!this._styles.isEmpty&&(this._styles.clear(),!0):this._attrs.delete(t)}_addClass(t){this._fireChange("attributes",this);for(const e of eo(t))this._classes.add(e)}_removeClass(t){this._fireChange("attributes",this);for(const e of eo(t))this._classes.delete(e)}_setStyle(t,e){this._fireChange("attributes",this),"string"!=typeof t?this._styles.set(t):this._styles.set(t,e)}_removeStyle(t){this._fireChange("attributes",this);for(const e of eo(t))this._styles.remove(e)}_setCustomProperty(t,e){this._customProperties.set(t,e)}_removeCustomProperty(t){return this._customProperties.delete(t)}}function Hs(t,e){const n=e.split(/\s+/);t.clear(),n.forEach((e=>t.add(e)))}Os.prototype.is=function(t,e){return e?e===this.name&&("element"===t||"view:element"===t):"element"===t||"view:element"===t||"node"===t||"view:node"===t};class js extends Os{constructor(t,e,n,r){super(t,e,n,r),this.getFillerOffset=qs}}function qs(){const t=[...this.getChildren()],e=t[this.childCount-1];if(e&&e.is("element","br"))return this.childCount;for(const e of t)if(!e.is("uiElement"))return null;return this.childCount}js.prototype.is=function(t,e){return e?e===this.name&&("containerElement"===t||"view:containerElement"===t||"element"===t||"view:element"===t):"containerElement"===t||"view:containerElement"===t||"element"===t||"view:element"===t||"node"===t||"view:node"===t};class Us extends(jr(js)){constructor(t,e,n,r){super(t,e,n,r),this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("placeholder",void 0),this.bind("isReadOnly").to(t),this.bind("isFocused").to(t,"isFocused",(e=>e&&t.selection.editableElement==this)),this.listenTo(t.selection,"change",(()=>{this.isFocused=t.isFocused&&t.selection.editableElement==this}))}destroy(){this.stopListening()}}Us.prototype.is=function(t,e){return e?e===this.name&&("editableElement"===t||"view:editableElement"===t||"containerElement"===t||"view:containerElement"===t||"element"===t||"view:element"===t):"editableElement"===t||"view:editableElement"===t||"containerElement"===t||"view:containerElement"===t||"element"===t||"view:element"===t||"node"===t||"view:node"===t};const Ws=Symbol("rootName");class $s extends Us{constructor(t,e){super(t,e),this.rootName="main"}get rootName(){return this.getCustomProperty(Ws)}set rootName(t){this._setCustomProperty(Ws,t)}set _name(t){this.name=t}}$s.prototype.is=function(t,e){return e?e===this.name&&("rootElement"===t||"view:rootElement"===t||"editableElement"===t||"view:editableElement"===t||"containerElement"===t||"view:containerElement"===t||"element"===t||"view:element"===t):"rootElement"===t||"view:rootElement"===t||"editableElement"===t||"view:editableElement"===t||"containerElement"===t||"view:containerElement"===t||"element"===t||"view:element"===t||"node"===t||"view:node"===t};class Gs{direction;boundaries;singleCharacters;shallow;ignoreElementEnd;_position;_boundaryStartParent;_boundaryEndParent;constructor(t={}){if(!t.boundaries&&!t.startPosition)throw new kr("view-tree-walker-no-start-position",null);if(t.direction&&"forward"!=t.direction&&"backward"!=t.direction)throw new kr("view-tree-walker-unknown-direction",t.startPosition,{direction:t.direction});this.boundaries=t.boundaries||null,t.startPosition?this._position=Ks._createAt(t.startPosition):this._position=Ks._createAt(t.boundaries["backward"==t.direction?"end":"start"]),this.direction=t.direction||"forward",this.singleCharacters=!!t.singleCharacters,this.shallow=!!t.shallow,this.ignoreElementEnd=!!t.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(t){let e,n;do{n=this.position,e=this.next()}while(!e.done&&t(e.value));e.done||(this._position=n)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){let t=this.position.clone();const e=this.position,n=t.parent;if(null===n.parent&&t.offset===n.childCount)return{done:!0,value:void 0};if(n===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0,value:void 0};let r;if(n instanceof os){if(t.isAtEnd)return this._position=Ks._createAfter(n),this._next();r=n.data[t.offset]}else r=n.getChild(t.offset);if(r instanceof Os){if(this.shallow){if(this.boundaries&&this.boundaries.end.isBefore(t))return{done:!0,value:void 0};t.offset++}else t=new Ks(r,0);return this._position=t,this._formatReturnValue("elementStart",r,e,t,1)}if(r instanceof os){if(this.singleCharacters)return t=new Ks(r,0),this._position=t,this._next();let n,i=r.data.length;return r==this._boundaryEndParent?(i=this.boundaries.end.offset,n=new ss(r,0,i),t=Ks._createAfter(n)):(n=new ss(r,0,r.data.length),t.offset++),this._position=t,this._formatReturnValue("text",n,e,t,i)}if("string"==typeof r){let r;if(this.singleCharacters)r=1;else{r=(n===this._boundaryEndParent?this.boundaries.end.offset:n.data.length)-t.offset}const i=new ss(n,t.offset,r);return t.offset+=r,this._position=t,this._formatReturnValue("text",i,e,t,r)}return t=Ks._createAfter(n),this._position=t,this.ignoreElementEnd?this._next():this._formatReturnValue("elementEnd",n,e,t)}_previous(){let t=this.position.clone();const e=this.position,n=t.parent;if(null===n.parent&&0===t.offset)return{done:!0,value:void 0};if(n==this._boundaryStartParent&&t.offset==this.boundaries.start.offset)return{done:!0,value:void 0};let r;if(n instanceof os){if(t.isAtStart)return this._position=Ks._createBefore(n),this._previous();r=n.data[t.offset-1]}else r=n.getChild(t.offset-1);if(r instanceof Os)return this.shallow?(t.offset--,this._position=t,this._formatReturnValue("elementStart",r,e,t,1)):(t=new Ks(r,r.childCount),this._position=t,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",r,e,t));if(r instanceof os){if(this.singleCharacters)return t=new Ks(r,r.data.length),this._position=t,this._previous();let n,i=r.data.length;if(r==this._boundaryStartParent){const e=this.boundaries.start.offset;n=new ss(r,e,r.data.length-e),i=n.data.length,t=Ks._createBefore(n)}else n=new ss(r,0,r.data.length),t.offset--;return this._position=t,this._formatReturnValue("text",n,e,t,i)}if("string"==typeof r){let r;if(this.singleCharacters)r=1;else{const e=n===this._boundaryStartParent?this.boundaries.start.offset:0;r=t.offset-e}t.offset-=r;const i=new ss(n,t.offset,r);return this._position=t,this._formatReturnValue("text",i,e,t,r)}return t=Ks._createBefore(n),this._position=t,this._formatReturnValue("elementStart",n,e,t,1)}_formatReturnValue(t,e,n,r,i){return e instanceof ss&&(e.offsetInText+e.data.length==e.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?n=Ks._createAfter(e.textNode):(r=Ks._createAfter(e.textNode),this._position=r)),0===e.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?n=Ks._createBefore(e.textNode):(r=Ks._createBefore(e.textNode),this._position=r))),{done:!1,value:{type:t,item:e,previousPosition:n,nextPosition:r,length:i}}}}class Ks extends ns{parent;offset;constructor(t,e){super(),this.parent=t,this.offset=e}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 t=this.parent.is("$text")?this.parent.data.length:this.parent.childCount;return this.offset===t}get root(){return this.parent.root}get editableElement(){let t=this.parent;for(;!(t instanceof Us);){if(!t.parent)return null;t=t.parent}return t}getShiftedBy(t){const e=Ks._createAt(this),n=e.offset+t;return e.offset=n<0?0:n,e}getLastMatchingPosition(t,e={}){e.startPosition=this;const n=new Gs(e);return n.skip(t),n.position}getAncestors(){return this.parent.is("documentFragment")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}getCommonAncestor(t){const e=this.getAncestors(),n=t.getAncestors();let r=0;for(;e[r]==n[r]&&e[r];)r++;return 0===r?null:e[r-1]}isEqual(t){return this.parent==t.parent&&this.offset==t.offset}isBefore(t){return"before"==this.compareWith(t)}isAfter(t){return"after"==this.compareWith(t)}compareWith(t){if(this.root!==t.root)return"different";if(this.isEqual(t))return"same";const e=this.parent.is("node")?this.parent.getPath():[],n=t.parent.is("node")?t.parent.getPath():[];e.push(this.offset),n.push(t.offset);const r=Zr(e,n);switch(r){case"prefix":return"before";case"extension":return"after";default:return e[r]0?new this(n,r):new this(r,n)}static _createIn(t){return this._createFromParentsAndOffsets(t,0,t,t.childCount)}static _createOn(t){const e=t.is("$textProxy")?t.offsetSize:1;return this._createFromPositionAndShift(Ks._createBefore(t),e)}}function Ys(t){return!(!t.item.is("attributeElement")&&!t.item.is("uiElement"))}Zs.prototype.is=function(t){return"range"===t||"view:range"===t};class Js extends(Dr(ns)){_ranges;_lastRangeBackward;_isFake;_fakeSelectionLabel;constructor(...t){super(),this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",t.length&&this.setTo(...t)}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const t=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?t.end:t.start).clone()}get focus(){if(!this._ranges.length)return null;const t=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?t.start:t.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 t of this._ranges)yield t.clone()}getFirstRange(){let t=null;for(const e of this._ranges)t&&!e.start.isBefore(t.start)||(t=e);return t?t.clone():null}getLastRange(){let t=null;for(const e of this._ranges)t&&!e.end.isAfter(t.end)||(t=e);return t?t.clone():null}getFirstPosition(){const t=this.getFirstRange();return t?t.start.clone():null}getLastPosition(){const t=this.getLastRange();return t?t.end.clone():null}isEqual(t){if(this.isFake!=t.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=t.fakeSelectionLabel)return!1;if(this.rangeCount!=t.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(t.anchor)||!this.focus.isEqual(t.focus))return!1;for(const e of this._ranges){let n=!1;for(const r of t._ranges)if(e.isEqual(r)){n=!0;break}if(!n)return!1}return!0}isSimilar(t){if(this.isBackward!=t.isBackward)return!1;const e=Kr(this.getRanges());if(e!=Kr(t.getRanges()))return!1;if(0==e)return!0;for(let e of this.getRanges()){e=e.getTrimmed();let n=!1;for(let r of t.getRanges())if(r=r.getTrimmed(),e.start.isEqual(r.start)&&e.end.isEqual(r.end)){n=!0;break}if(!n)return!1}return!0}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}setTo(...t){let[e,n,r]=t;if("object"==typeof n&&(r=n,n=void 0),null===e)this._setRanges([]),this._setFakeOptions(r);else if(e instanceof Js||e instanceof Qs)this._setRanges(e.getRanges(),e.isBackward),this._setFakeOptions({fake:e.isFake,label:e.fakeSelectionLabel});else if(e instanceof Zs)this._setRanges([e],r&&r.backward),this._setFakeOptions(r);else if(e instanceof Ks)this._setRanges([new Zs(e)]),this._setFakeOptions(r);else if(e instanceof is){const t=!!r&&!!r.backward;let i;if(void 0===n)throw new kr("view-selection-setto-required-second-parameter",this);i="in"==n?Zs._createIn(e):"on"==n?Zs._createOn(e):new Zs(Ks._createAt(e,n)),this._setRanges([i],t),this._setFakeOptions(r)}else{if(!Yr(e))throw new kr("view-selection-setto-not-selectable",this);this._setRanges(e,r&&r.backward),this._setFakeOptions(r)}this.fire("change")}setFocus(t,e){if(null===this.anchor)throw new kr("view-selection-setfocus-no-ranges",this);const n=Ks._createAt(t,e);if("same"==n.compareWith(this.focus))return;const r=this.anchor;this._ranges.pop(),"before"==n.compareWith(r)?this._addRange(new Zs(n,r),!0):this._addRange(new Zs(r,n)),this.fire("change")}_setRanges(t,e=!1){t=Array.from(t),this._ranges=[];for(const e of t)this._addRange(e);this._lastRangeBackward=!!e}_setFakeOptions(t={}){this._isFake=!!t.fake,this._fakeSelectionLabel=t.fake&&t.label||""}_addRange(t,e=!1){if(!(t instanceof Zs))throw new kr("view-selection-add-range-not-range",this);this._pushRange(t),this._lastRangeBackward=!!e}_pushRange(t){for(const e of this._ranges)if(t.isIntersecting(e))throw new kr("view-selection-range-intersects",this,{addedRange:t,intersectingRange:e});this._ranges.push(new Zs(t.start,t.end))}}Js.prototype.is=function(t){return"selection"===t||"view:selection"===t};class Qs extends(Dr(ns)){_selection;constructor(...t){super(),this._selection=new Js,this._selection.delegate("change").to(this),t.length&&this._selection.setTo(...t)}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(t){return this._selection.isEqual(t)}isSimilar(t){return this._selection.isSimilar(t)}_setTo(...t){this._selection.setTo(...t)}_setFocus(t,e){this._selection.setFocus(t,e)}}Qs.prototype.is=function(t){return"selection"===t||"documentSelection"==t||"view:selection"==t||"view:documentSelection"==t};class Xs extends mr{startRange;_eventPhase;_currentTarget;constructor(t,e,n){super(t,e),this.startRange=n,this._eventPhase="none",this._currentTarget=null}get eventPhase(){return this._eventPhase}get currentTarget(){return this._currentTarget}}const ta=Symbol("bubbling contexts");function ea(t){return class extends t{fire(t,...e){try{const n=t instanceof mr?t:new mr(this,t),r=oa(this);if(!r.size)return;if(na(n,"capturing",this),ra(r,"$capture",n,...e))return n.return;const i=n.startRange||this.selection.getFirstRange(),o=i?i.getContainedElement():null,s=!!o&&Boolean(ia(r,o));let a=o||function(t){if(!t)return null;const e=t.start.parent,n=t.end.parent,r=e.getPath(),i=n.getPath();return r.length>i.length?e:n}(i);if(na(n,"atTarget",a),!s){if(ra(r,"$text",n,...e))return n.return;na(n,"bubbling",a)}for(;a;){if(a.is("rootElement")){if(ra(r,"$root",n,...e))return n.return}else if(a.is("element")&&ra(r,a.name,n,...e))return n.return;if(ra(r,a,n,...e))return n.return;a=a.parent,na(n,"bubbling",a)}return na(n,"bubbling",this),ra(r,"$document",n,...e),n.return}catch(t){kr.rethrowUnexpectedError(t,this)}}_addEventListener(t,e,n){const r=eo(n.context||"$document"),i=oa(this);for(const o of r){let r=i.get(o);r||(r=new(Dr()),i.set(o,r)),this.listenTo(r,t,e,n)}}_removeEventListener(t,e){const n=oa(this);for(const r of n.values())this.stopListening(r,t,e)}}}{const t=ea(Object);["fire","_addEventListener","_removeEventListener"].forEach((e=>{ea[e]=t.prototype[e]}))}function na(t,e,n){t instanceof Xs&&(t._eventPhase=e,t._currentTarget=n)}function ra(t,e,n,...r){const i="string"==typeof e?t.get(e):ia(t,e);return!!i&&(i.fire(n,...r),n.stop.called)}function ia(t,e){for(const[n,r]of t)if("function"==typeof n&&n(e))return r;return null}function oa(t){return t[ta]||(t[ta]=new Map),t[ta]}class sa extends(ea(jr())){selection;roots;stylesProcessor;_postFixers=new Set;constructor(t){super(),this.selection=new Qs,this.roots=new xo({idProperty:"rootName"}),this.stylesProcessor=t,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1)}getRoot(t="main"){return this.roots.get(t)}registerPostFixer(t){this._postFixers.add(t)}destroy(){this.roots.forEach((t=>t.destroy())),this.stopListening()}_callPostFixers(t){let e=!1;do{for(const n of this._postFixers)if(e=n(t),e)break}while(e)}}class aa extends Os{static DEFAULT_PRIORITY=10;_priority=10;_id=null;_clonesGroup=null;constructor(t,e,n,r){super(t,e,n,r),this.getFillerOffset=la}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new kr("attribute-element-get-elements-with-same-id-no-id",this);return new Set(this._clonesGroup)}isSimilar(t){return null!==this.id||null!==t.id?this.id===t.id:super.isSimilar(t)&&this.priority==t.priority}_clone(t=!1){const e=super._clone(t);return e._priority=this._priority,e._id=this._id,e}}function la(){if(ca(this))return null;let t=this.parent;for(;t&&t.is("attributeElement");){if(ca(t)>1)return null;t=t.parent}return!t||ca(t)>1?null:this.childCount}function ca(t){return Array.from(t.getChildren()).filter((t=>!t.is("uiElement"))).length}aa.prototype.is=function(t,e){return e?e===this.name&&("attributeElement"===t||"view:attributeElement"===t||"element"===t||"view:element"===t):"attributeElement"===t||"view:attributeElement"===t||"element"===t||"view:element"===t||"node"===t||"view:node"===t};class da extends Os{constructor(t,e,n,r){super(t,e,n,r),this.getFillerOffset=ha}_insertChild(t,e){if(e&&(e instanceof is||Array.from(e).length>0))throw new kr("view-emptyelement-cannot-add",[this,e]);return 0}}function ha(){return null}da.prototype.is=function(t,e){return e?e===this.name&&("emptyElement"===t||"view:emptyElement"===t||"element"===t||"view:element"===t):"emptyElement"===t||"view:emptyElement"===t||"element"===t||"view:element"===t||"node"===t||"view:node"===t};class ua extends Os{constructor(t,e,n,r){super(t,e,n,r),this.getFillerOffset=ga}_insertChild(t,e){if(e&&(e instanceof is||Array.from(e).length>0))throw new kr("view-uielement-cannot-add",[this,e]);return 0}render(t,e){return this.toDomElement(t)}toDomElement(t){const e=t.createElement(this.name);for(const t of this.getAttributeKeys())e.setAttribute(t,this.getAttribute(t));return e}}function ma(t){t.document.on("arrowKey",((e,n)=>function(t,e,n){if(e.keyCode==$i.arrowright){const t=e.domTarget.ownerDocument.defaultView.getSelection(),r=1==t.rangeCount&&t.getRangeAt(0).collapsed;if(r||e.shiftKey){const e=t.focusNode,i=t.focusOffset,o=n.domPositionToView(e,i);if(null===o)return;let s=!1;const a=o.getLastMatchingPosition((t=>(t.item.is("uiElement")&&(s=!0),!(!t.item.is("uiElement")&&!t.item.is("attributeElement")))));if(s){const e=n.viewPositionToDom(a);r?t.collapse(e.parent,e.offset):t.extend(e.parent,e.offset)}}}}(0,n,t.domConverter)),{priority:"low"})}function ga(){return null}ua.prototype.is=function(t,e){return e?e===this.name&&("uiElement"===t||"view:uiElement"===t||"element"===t||"view:element"===t):"uiElement"===t||"view:uiElement"===t||"element"===t||"view:element"===t||"node"===t||"view:node"===t};class pa extends Os{constructor(t,e,n,r){super(t,e,n,r),this.getFillerOffset=fa}_insertChild(t,e){if(e&&(e instanceof is||Array.from(e).length>0))throw new kr("view-rawelement-cannot-add",[this,e]);return 0}render(t,e){}}function fa(){return null}pa.prototype.is=function(t,e){return e?e===this.name&&("rawElement"===t||"view:rawElement"===t||"element"===t||"view:element"===t):"rawElement"===t||"view:rawElement"===t||t===this.name||t==="view:"+this.name||"element"===t||"view:element"===t||"node"===t||"view:node"===t};class ba extends(Dr(ns)){document;_children=[];_customProperties=new Map;constructor(t,e){super(),this.document=t,e&&this._insertChild(0,e)}[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(t){return this._customProperties.get(t)}*getCustomProperties(){yield*this._customProperties.entries()}_appendChild(t){return this._insertChild(this.childCount,t)}getChild(t){return this._children[t]}getChildIndex(t){return this._children.indexOf(t)}getChildren(){return this._children[Symbol.iterator]()}_insertChild(t,e){this._fireChange("children",this);let n=0;const r=function(t,e){if("string"==typeof e)return[new os(t,e)];Yr(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new os(t,e):e instanceof ss?new os(t,e.data):e))}(this.document,e);for(const e of r)null!==e.parent&&e._remove(),e.parent=this,this._children.splice(t,0,e),t++,n++;return n}_removeChildren(t,e=1){this._fireChange("children",this);for(let n=t;n{const n=t[t.length-1],r=!e.is("uiElement");return n&&n.breakAttributes==r?n.nodes.push(e):t.push({breakAttributes:r,nodes:[e]}),t}),[]);let r=null,i=t;for(const{nodes:t,breakAttributes:e}of n){const n=this._insertNodes(i,t,e);r||(r=n.start),i=n.end}return r?new Zs(r,i):new Zs(t)}remove(t){const e=t instanceof Zs?t:Zs._createOn(t);if(Ba(e,this.document),e.isCollapsed)return new ba(this.document);const{start:n,end:r}=this._breakAttributesRange(e,!0),i=n.parent,o=r.offset-n.offset,s=i._removeChildren(n.offset,o);for(const t of s)this._removeFromClonedElementsGroup(t);const a=this.mergeAttributes(n);return e.start=a,e.end=a.clone(),new ba(this.document,s)}clear(t,e){Ba(t,this.document);const n=t.getWalker({direction:"backward",ignoreElementEnd:!0});for(const r of n){const n=r.item;let i;if(n.is("element")&&e.isSimilar(n))i=Zs._createOn(n);else if(!r.nextPosition.isAfter(t.start)&&n.is("$textProxy")){const t=n.getAncestors().find((t=>t.is("element")&&e.isSimilar(t)));t&&(i=Zs._createIn(t))}i&&(i.end.isAfter(t.end)&&(i.end=t.end),i.start.isBefore(t.start)&&(i.start=t.start),this.remove(i))}}move(t,e){let n;if(e.isAfter(t.end)){const r=(e=this._breakAttributes(e,!0)).parent,i=r.childCount;t=this._breakAttributesRange(t,!0),n=this.remove(t),e.offset+=r.childCount-i}else n=this.remove(t);return this.insert(e,n)}wrap(t,e){if(!(e instanceof aa))throw new kr("view-writer-wrap-invalid-attribute",this.document);if(Ba(t,this.document),t.isCollapsed){let r=t.start;r.parent.is("element")&&(n=r.parent,!Array.from(n.getChildren()).some((t=>!t.is("uiElement"))))&&(r=r.getLastMatchingPosition((t=>t.item.is("uiElement")))),r=this._wrapPosition(r,e);const i=this.document.selection;return i.isCollapsed&&i.getFirstPosition().isEqual(t.start)&&this.setSelection(r),new Zs(r)}return this._wrapRange(t,e);var n}unwrap(t,e){if(!(e instanceof aa))throw new kr("view-writer-unwrap-invalid-attribute",this.document);if(Ba(t,this.document),t.isCollapsed)return t;const{start:n,end:r}=this._breakAttributesRange(t,!0),i=n.parent,o=this._unwrapChildren(i,n.offset,r.offset,e),s=this.mergeAttributes(o.start);s.isEqual(o.start)||o.end.offset--;const a=this.mergeAttributes(o.end);return new Zs(s,a)}rename(t,e){const n=new js(this.document,t,e.getAttributes());return this.insert(Ks._createAfter(e),n),this.move(Zs._createIn(e),Ks._createAt(n,0)),this.remove(Zs._createOn(e)),n}clearClonedElementsGroup(t){this._cloneGroups.delete(t)}createPositionAt(t,e){return Ks._createAt(t,e)}createPositionAfter(t){return Ks._createAfter(t)}createPositionBefore(t){return Ks._createBefore(t)}createRange(t,e){return new Zs(t,e)}createRangeOn(t){return Zs._createOn(t)}createRangeIn(t){return Zs._createIn(t)}createSelection(...t){return new Js(...t)}createSlot(t="children"){if(!this._slotFactory)throw new kr("view-writer-invalid-create-slot-context",this.document);return this._slotFactory(this,t)}_registerSlotFactory(t){this._slotFactory=t}_clearSlotFactory(){this._slotFactory=null}_insertNodes(t,e,n){let r,i;if(r=n?wa(t):t.parent.is("$text")?t.parent.parent:t.parent,!r)throw new kr("view-writer-invalid-position-container",this.document);i=n?this._breakAttributes(t,!0):t.parent.is("$text")?Ca(t):t;const o=r._insertChild(i.offset,e);for(const t of e)this._addToClonedElementsGroup(t);const s=i.getShiftedBy(o),a=this.mergeAttributes(i);a.isEqual(i)||s.offset--;const l=this.mergeAttributes(s);return new Zs(a,l)}_wrapChildren(t,e,n,r){let i=e;const o=[];for(;i!1,t.parent._insertChild(t.offset,n);const r=new Zs(t,t.getShiftedBy(1));this.wrap(r,e);const i=new Ks(n.parent,n.index);n._remove();const o=i.nodeBefore,s=i.nodeAfter;return o instanceof os&&s instanceof os?va(o,s):_a(i)}_wrapAttributeElement(t,e){if(!Da(t,e))return!1;if(t.name!==e.name||t.priority!==e.priority)return!1;for(const n of t.getAttributeKeys())if("class"!==n&&"style"!==n&&e.hasAttribute(n)&&e.getAttribute(n)!==t.getAttribute(n))return!1;for(const n of t.getStyleNames())if(e.hasStyle(n)&&e.getStyle(n)!==t.getStyle(n))return!1;for(const n of t.getAttributeKeys())"class"!==n&&"style"!==n&&(e.hasAttribute(n)||this.setAttribute(n,t.getAttribute(n),e));for(const n of t.getStyleNames())e.hasStyle(n)||this.setStyle(n,t.getStyle(n),e);for(const n of t.getClassNames())e.hasClass(n)||this.addClass(n,e);return!0}_unwrapAttributeElement(t,e){if(!Da(t,e))return!1;if(t.name!==e.name||t.priority!==e.priority)return!1;for(const n of t.getAttributeKeys())if("class"!==n&&"style"!==n&&(!e.hasAttribute(n)||e.getAttribute(n)!==t.getAttribute(n)))return!1;if(!e.hasClass(...t.getClassNames()))return!1;for(const n of t.getStyleNames())if(!e.hasStyle(n)||e.getStyle(n)!==t.getStyle(n))return!1;for(const n of t.getAttributeKeys())"class"!==n&&"style"!==n&&this.removeAttribute(n,e);return this.removeClass(Array.from(t.getClassNames()),e),this.removeStyle(Array.from(t.getStyleNames()),e),!0}_breakAttributesRange(t,e=!1){const n=t.start,r=t.end;if(Ba(t,this.document),t.isCollapsed){const n=this._breakAttributes(t.start,e);return new Zs(n,n)}const i=this._breakAttributes(r,e),o=i.parent.childCount,s=this._breakAttributes(n,e);return i.offset+=i.parent.childCount-o,new Zs(s,i)}_breakAttributes(t,e=!1){const n=t.offset,r=t.parent;if(t.parent.is("emptyElement"))throw new kr("view-writer-cannot-break-empty-element",this.document);if(t.parent.is("uiElement"))throw new kr("view-writer-cannot-break-ui-element",this.document);if(t.parent.is("rawElement"))throw new kr("view-writer-cannot-break-raw-element",this.document);if(!e&&r.is("$text")&&Ea(r.parent))return t.clone();if(Ea(r))return t.clone();if(r.is("$text"))return this._breakAttributes(Ca(t),e);if(n==r.childCount){const t=new Ks(r.parent,r.index+1);return this._breakAttributes(t,e)}if(0===n){const t=new Ks(r.parent,r.index);return this._breakAttributes(t,e)}{const t=r.index+1,i=r._clone();r.parent._insertChild(t,i),this._addToClonedElementsGroup(i);const o=r.childCount-n,s=r._removeChildren(n,o);i._appendChild(s);const a=new Ks(r.parent,t);return this._breakAttributes(a,e)}}_addToClonedElementsGroup(t){if(!t.root.is("rootElement"))return;if(t.is("element"))for(const e of t.getChildren())this._addToClonedElementsGroup(e);const e=t.id;if(!e)return;let n=this._cloneGroups.get(e);n||(n=new Set,this._cloneGroups.set(e,n)),n.add(t),t._clonesGroup=n}_removeFromClonedElementsGroup(t){if(t.is("element"))for(const e of t.getChildren())this._removeFromClonedElementsGroup(e);const e=t.id;if(!e)return;const n=this._cloneGroups.get(e);n&&n.delete(t)}}function wa(t){let e=t.parent;for(;!Ea(e);){if(!e)return;e=e.parent}return e}function Aa(t,e){return t.prioritye.priority)&&t.getIdentity()n instanceof t)))throw new kr("view-writer-insert-invalid-node-type",e);n.is("$text")||xa(n.getChildren(),e)}}function Ea(t){return t&&(t.is("containerElement")||t.is("documentFragment"))}function Ba(t,e){const n=wa(t.start),r=wa(t.end);if(!n||!r||n!==r)throw new kr("view-writer-invalid-range-container",e)}function Da(t,e){return null===t.id&&null===e.id}const Sa=t=>t.createTextNode(" "),Ta=t=>{const e=t.createElement("span");return e.dataset.ckeFiller="true",e.innerText=" ",e},Ia=t=>{const e=t.createElement("br");return e.dataset.ckeFiller="true",e},Pa="⁠".repeat(7);function Va(t){return"string"==typeof t?t.substr(0,7)===Pa:ui(t)&&t.data.substr(0,7)===Pa}function Fa(t){return 7==t.data.length&&Va(t)}function Ra(t){const e="string"==typeof t?t:t.data;return Va(t)?e.slice(7):e}function La(t,e){if(e.keyCode==$i.arrowleft){const t=e.domTarget.ownerDocument.defaultView.getSelection();if(1==t.rangeCount&&t.getRangeAt(0).collapsed){const e=t.getRangeAt(0).startContainer,n=t.getRangeAt(0).startOffset;Va(e)&&n<=7&&t.collapse(e,0)}}}var za=n(8264),Ma={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(za.A,Ma);za.A.locals;class Na extends(jr()){domDocuments=new Set;domConverter;markedAttributes=new Set;markedChildren=new Set;markedTexts=new Set;selection;_inlineFiller=null;_fakeSelectionContainer=null;constructor(t,e){super(),this.domConverter=t,this.selection=e,this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1),Xn.isBlink&&!Xn.isAndroid&&this.on("change:isSelecting",(()=>{this.isSelecting||this.render()}))}markToSync(t,e){if("text"===t)this.domConverter.mapViewToDom(e.parent)&&this.markedTexts.add(e);else{if(!this.domConverter.mapViewToDom(e))return;if("attributes"===t)this.markedAttributes.add(e);else{if("children"!==t){throw new kr("view-renderer-unknown-type",this)}this.markedChildren.add(e)}}}render(){if(this.isComposing&&!Xn.isAndroid)return;let t=null;const e=!(Xn.isBlink&&!Xn.isAndroid)||!this.isSelecting;for(const t of this.markedChildren)this._updateChildrenMappings(t);e?(this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?t=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(t=this.selection.getFirstPosition(),this.markedChildren.add(t.parent))):this._inlineFiller&&this._inlineFiller.parentNode&&(t=this.domConverter.domPositionToView(this._inlineFiller),t&&t.parent.is("$text")&&(t=Ks._createBefore(t.parent)));for(const t of this.markedAttributes)this._updateAttrs(t);for(const e of this.markedChildren)this._updateChildren(e,{inlineFillerPosition:t});for(const e of this.markedTexts)!this.markedChildren.has(e.parent)&&this.domConverter.mapViewToDom(e.parent)&&this._updateText(e,{inlineFillerPosition:t});if(e)if(t){const e=this.domConverter.viewPositionToDom(t),n=e.parent.ownerDocument;Va(e.parent)?this._inlineFiller=e.parent:this._inlineFiller=Oa(n,e.parent,e.offset)}else this._inlineFiller=null;this._updateFocus(),this._updateSelection(),this.domConverter._clearTemporaryCustomProperties(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(t){const e=this.domConverter.mapViewToDom(t);if(!e)return;const n=Array.from(e.childNodes),r=Array.from(this.domConverter.viewChildrenToDom(t,{withChildren:!1})),i=this._diffNodeLists(n,r),o=this._findUpdateActions(i,n,r,Ha);if(-1!==o.indexOf("update")){const e={equal:0,insert:0,delete:0};for(const i of o)if("update"===i){const i=e.equal+e.insert,o=e.equal+e.delete,s=t.getChild(i);!s||s.is("uiElement")||s.is("rawElement")||this._updateElementMappings(s,n[o]),Pi(r[i]),e.equal++}else e[i]++}}_updateElementMappings(t,e){this.domConverter.unbindDomElement(e),this.domConverter.bindElements(e,t),this.markedChildren.add(t),this.markedAttributes.add(t)}_getInlineFillerPosition(){const t=this.selection.getFirstPosition();return t.parent.is("$text")?Ks._createBefore(t.parent):t}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const t=this.selection.getFirstPosition(),e=this.domConverter.viewPositionToDom(t);return!!(e&&ui(e.parent)&&Va(e.parent))}_removeInlineFiller(){const t=this._inlineFiller;if(!Va(t))throw new kr("view-renderer-filler-was-lost",this);Fa(t)?t.remove():t.data=t.data.substr(7),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const t=this.selection.getFirstPosition(),e=t.parent,n=t.offset;if(!this.domConverter.mapViewToDom(e.root))return!1;if(!e.is("element"))return!1;if(!function(t){if("false"==t.getAttribute("contenteditable"))return!1;const e=t.findAncestor((t=>t.hasAttribute("contenteditable")));return!e||"true"==e.getAttribute("contenteditable")}(e))return!1;const r=t.nodeBefore,i=t.nodeAfter;return!(r instanceof os||i instanceof os)&&(!!(n!==e.getFillerOffset()||r&&r.is("element","br"))&&(!Xn.isAndroid||!r&&!i))}_updateText(t,e){const n=this.domConverter.findCorrespondingDomText(t);let r=this.domConverter.viewToDom(t).data;const i=e.inlineFillerPosition;i&&i.parent==t.parent&&i.offset==t.index&&(r=Pa+r),this._updateTextNode(n,r)}_updateAttrs(t){const e=this.domConverter.mapViewToDom(t);if(e){for(const n of e.attributes){const r=n.name;t.hasAttribute(r)||this.domConverter.removeDomElementAttribute(e,r)}for(const n of t.getAttributeKeys())this.domConverter.setDomElementAttribute(e,n,t.getAttribute(n),t)}}_updateChildren(t,e){const n=this.domConverter.mapViewToDom(t);if(!n)return;if(Xn.isAndroid){let t=null;for(const e of Array.from(n.childNodes)){if(t&&ui(t)&&ui(e)){n.normalize();break}t=e}}const r=e.inlineFillerPosition,i=n.childNodes,o=Array.from(this.domConverter.viewChildrenToDom(t,{bind:!0}));r&&r.parent===t&&Oa(n.ownerDocument,o,r.offset);const s=this._diffNodeLists(i,o),a=this._findUpdateActions(s,i,o,ja);let l=0;const c=new Set;for(const t of a)"delete"===t?(c.add(i[l]),Pi(i[l])):"equal"!==t&&"update"!==t||l++;l=0;for(const t of a)"insert"===t?(xi(n,l,o[l]),l++):"update"===t?(this._updateTextNode(i[l],o[l].data),l++):"equal"===t&&(this._markDescendantTextToSync(this.domConverter.domToView(o[l])),l++);for(const t of c)t.parentNode||this.domConverter.unbindDomElement(t)}_diffNodeLists(t,e){return t=function(t,e){const n=Array.from(t);if(0==n.length||!e)return n;const r=n[n.length-1];r==e&&n.pop();return n}(t,this._fakeSelectionContainer),hr(t,e,qa.bind(null,this.domConverter))}_findUpdateActions(t,e,n,r){if(-1===t.indexOf("insert")||-1===t.indexOf("delete"))return t;let i=[],o=[],s=[];const a={equal:0,insert:0,delete:0};for(const l of t)"insert"===l?s.push(n[a.equal+a.insert]):"delete"===l?o.push(e[a.equal+a.delete]):(i=i.concat(hr(o,s,r).map((t=>"equal"===t?"update":t))),i.push("equal"),o=[],s=[]),a[l]++;return i.concat(hr(o,s,r).map((t=>"equal"===t?"update":t)))}_updateTextNode(t,e){const n=t.data;n!=e&&(Xn.isAndroid&&this.isComposing&&n.replace(/\u00A0/g," ")==e.replace(/\u00A0/g," ")||this._updateTextNodeInternal(t,e))}_updateTextNodeInternal(t,e){const n=lr(t.data,e);for(const e of n)"insert"===e.type?t.insertData(e.index,e.values.join("")):t.deleteData(e.index,e.howMany)}_markDescendantTextToSync(t){if(t)if(t.is("$text"))this.markedTexts.add(t);else if(t.is("element"))for(const e of t.getChildren())this._markDescendantTextToSync(e)}_updateSelection(){if(Xn.isBlink&&!Xn.isAndroid&&this.isSelecting&&!this.markedChildren.size)return;if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const t=this.domConverter.mapViewToDom(this.selection.editableElement);this.isFocused&&t&&(this.selection.isFake?this._updateFakeSelection(t):this._fakeSelectionContainer&&this._fakeSelectionContainer.isConnected?(this._removeFakeSelection(),this._updateDomSelection(t)):this.isComposing&&Xn.isAndroid||this._updateDomSelection(t))}_updateFakeSelection(t){const e=t.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=function(t){const e=t.createElement("div");return e.className="ck-fake-selection-container",Object.assign(e.style,{position:"fixed",top:0,left:"-9999px",width:"42px"}),e.textContent=" ",e}(e));const n=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(n,this.selection),!this._fakeSelectionNeedsUpdate(t))return;n.parentElement&&n.parentElement==t||t.appendChild(n),n.textContent=this.selection.fakeSelectionLabel||" ";const r=e.getSelection(),i=e.createRange();r.removeAllRanges(),i.selectNodeContents(n),r.addRange(i)}_updateDomSelection(t){const e=t.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(e))return;const n=this.domConverter.viewPositionToDom(this.selection.anchor),r=this.domConverter.viewPositionToDom(this.selection.focus);e.setBaseAndExtent(n.parent,n.offset,r.parent,r.offset),Xn.isGecko&&function(t,e){let n=t.parent,r=t.offset;ui(n)&&Fa(n)&&(r=yi(n)+1,n=n.parentNode);if(n.nodeType!=Node.ELEMENT_NODE||r!=n.childNodes.length-1)return;const i=n.childNodes[r];i&&"BR"==i.tagName&&e.addRange(e.getRangeAt(0))}(r,e)}_domSelectionNeedsUpdate(t){if(!this.domConverter.isDomSelectionCorrect(t))return!0;const e=t&&this.domConverter.domSelectionToView(t);return(!e||!this.selection.isEqual(e))&&!(!this.selection.isCollapsed&&this.selection.isSimilar(e))}_fakeSelectionNeedsUpdate(t){const e=this._fakeSelectionContainer,n=t.ownerDocument.getSelection();return!e||e.parentElement!==t||(n.anchorNode!==e&&!e.contains(n.anchorNode)||e.textContent!==this.selection.fakeSelectionLabel)}_removeDomSelection(){for(const t of this.domDocuments){const e=t.getSelection();if(e.rangeCount){const n=t.activeElement,r=this.domConverter.mapDomToView(n);n&&r&&e.removeAllRanges()}}}_removeFakeSelection(){const t=this._fakeSelectionContainer;t&&t.remove()}_updateFocus(){if(this.isFocused){const t=this.selection.editableElement;t&&this.domConverter.focus(t)}}}function Oa(t,e,n){const r=e instanceof Array?e:e.childNodes,i=r[n];if(ui(i))return i.data=Pa+i.data,i;{const i=t.createTextNode(Pa);return Array.isArray(e)?r.splice(n,0,i):xi(e,n,i),i}}function Ha(t,e){return ni(t)&&ni(e)&&!ui(t)&&!ui(e)&&!Ei(t)&&!Ei(e)&&t.tagName.toLowerCase()===e.tagName.toLowerCase()}function ja(t,e){return ni(t)&&ni(e)&&ui(t)&&ui(e)}function qa(t,e,n){return e===n||(ui(e)&&ui(n)?e.data===n.data:!(!t.isBlockFiller(e)||!t.isBlockFiller(n)))}const Ua=Ia(Yn.document),Wa=Sa(Yn.document),$a=Ta(Yn.document),Ga="data-ck-unsafe-attribute-",Ka="data-ck-unsafe-element";class Za{document;renderingMode;blockFillerMode;preElements;blockElements;inlineObjectElements;unsafeElements;_domDocument;_domToViewMapping=new WeakMap;_viewToDomMapping=new WeakMap;_fakeSelectionMapping=new WeakMap;_rawContentElementMatcher=new as;_inlineObjectElementMatcher=new as;_elementsWithTemporaryCustomProperties=new Set;constructor(t,{blockFillerMode:e,renderingMode:n="editing"}={}){this.document=t,this.renderingMode=n,this.blockFillerMode=e||("editing"===n?"br":"nbsp"),this.preElements=["pre"],this.blockElements=["address","article","aside","blockquote","caption","center","dd","details","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","legend","li","main","menu","nav","ol","p","pre","section","summary","table","tbody","td","tfoot","th","thead","tr","ul"],this.inlineObjectElements=["object","iframe","input","button","textarea","select","option","video","embed","audio","img","canvas"],this.unsafeElements=["script","style"],this._domDocument="editing"===this.renderingMode?Yn.document:Yn.document.implementation.createHTMLDocument("")}bindFakeSelection(t,e){this._fakeSelectionMapping.set(t,new Js(e))}fakeSelectionToView(t){return this._fakeSelectionMapping.get(t)}bindElements(t,e){this._domToViewMapping.set(t,e),this._viewToDomMapping.set(e,t)}unbindDomElement(t){const e=this._domToViewMapping.get(t);if(e){this._domToViewMapping.delete(t),this._viewToDomMapping.delete(e);for(const e of t.children)this.unbindDomElement(e)}}bindDocumentFragments(t,e){this._domToViewMapping.set(t,e),this._viewToDomMapping.set(e,t)}shouldRenderAttribute(t,e,n){return"data"===this.renderingMode||!(t=t.toLowerCase()).startsWith("on")&&(("srcdoc"!==t||!e.match(/\bon\S+\s*=|javascript:|<\s*\/*script/i))&&("img"===n&&("src"===t||"srcset"===t)||("source"===n&&"srcset"===t||!e.match(/^\s*(javascript:|data:(image\/svg|text\/x?html))/i))))}setContentOf(t,e){if("data"===this.renderingMode)return void(t.innerHTML=e);const n=(new DOMParser).parseFromString(e,"text/html"),r=n.createDocumentFragment(),i=n.body.childNodes;for(;i.length>0;)r.appendChild(i[0]);const o=n.createTreeWalker(r,NodeFilter.SHOW_ELEMENT),s=[];let a;for(;a=o.nextNode();)s.push(a);for(const t of s){for(const e of t.getAttributeNames())this.setDomElementAttribute(t,e,t.getAttribute(e));const e=t.tagName.toLowerCase();this._shouldRenameElement(e)&&(Qa(e),t.replaceWith(this._createReplacementDomElement(e,t)))}for(;t.firstChild;)t.firstChild.remove();t.append(r)}viewToDom(t,e={}){if(t.is("$text")){const e=this._processDataFromViewText(t);return this._domDocument.createTextNode(e)}{const n=t;if(this.mapViewToDom(n)){if(!n.getCustomProperty("editingPipeline:doNotReuseOnce"))return this.mapViewToDom(n);this._elementsWithTemporaryCustomProperties.add(n)}let r;if(n.is("documentFragment"))r=this._domDocument.createDocumentFragment(),e.bind&&this.bindDocumentFragments(r,n);else{if(n.is("uiElement"))return r="$comment"===n.name?this._domDocument.createComment(n.getCustomProperty("$rawContent")):n.render(this._domDocument,this),e.bind&&this.bindElements(r,n),r;this._shouldRenameElement(n.name)?(Qa(n.name),r=this._createReplacementDomElement(n.name)):r=n.hasAttribute("xmlns")?this._domDocument.createElementNS(n.getAttribute("xmlns"),n.name):this._domDocument.createElement(n.name),n.is("rawElement")&&n.render(r,this),e.bind&&this.bindElements(r,n);for(const t of n.getAttributeKeys())this.setDomElementAttribute(r,t,n.getAttribute(t),n)}if(!1!==e.withChildren)for(const t of this.viewChildrenToDom(n,e))r instanceof HTMLTemplateElement?r.content.appendChild(t):r.appendChild(t);return r}}setDomElementAttribute(t,e,n,r){const i=this.shouldRenderAttribute(e,n,t.tagName.toLowerCase())||r&&r.shouldRenderUnsafeAttribute(e);i||wr("domconverter-unsafe-attribute-detected",{domElement:t,key:e,value:n}),Bi(e)?(t.hasAttribute(e)&&!i?t.removeAttribute(e):t.hasAttribute(Ga+e)&&i&&t.removeAttribute(Ga+e),t.setAttribute(i?e:Ga+e,n)):wr("domconverter-invalid-attribute-detected",{domElement:t,key:e,value:n})}removeDomElementAttribute(t,e){e!=Ka&&(t.removeAttribute(e),t.removeAttribute(Ga+e))}*viewChildrenToDom(t,e={}){const n=t.getFillerOffset&&t.getFillerOffset();let r=0;for(const i of t.getChildren()){n===r&&(yield this._getBlockFiller());const t=i.is("element")&&!!i.getCustomProperty("dataPipeline:transparentRendering")&&!Eo(i.getAttributes());if(t&&"data"==this.renderingMode)if(i.is("rawElement")){const t=this._domDocument.createElement(i.name);i.render(t,this),yield*[...t.childNodes]}else yield*this.viewChildrenToDom(i,e);else t&&wr("domconverter-transparent-rendering-unsupported-in-editing-pipeline",{viewElement:i}),yield this.viewToDom(i,e);r++}n===r&&(yield this._getBlockFiller())}viewRangeToDom(t){const e=this.viewPositionToDom(t.start),n=this.viewPositionToDom(t.end),r=this._domDocument.createRange();return r.setStart(e.parent,e.offset),r.setEnd(n.parent,n.offset),r}viewPositionToDom(t){const e=t.parent;if(e.is("$text")){const n=this.findCorrespondingDomText(e);if(!n)return null;let r=t.offset;return Va(n)&&(r+=7),{parent:n,offset:r}}{let n,r,i;if(0===t.offset){if(n=this.mapViewToDom(e),!n)return null;i=n.childNodes[0]}else{const e=t.nodeBefore;if(r=e.is("$text")?this.findCorrespondingDomText(e):this.mapViewToDom(e),!r)return null;n=r.parentNode,i=r.nextSibling}if(ui(i)&&Va(i))return{parent:i,offset:7};return{parent:n,offset:r?yi(r)+1:0}}}domToView(t,e={}){const n=[],r=this._domToView(t,e,n),i=r.next().value;return i?(r.next(),this._processDomInlineNodes(null,n,e),i.is("$text")&&0==i.data.length?null:i):null}*domChildrenToView(t,e={},n=[]){let r=[];r=t instanceof HTMLTemplateElement?[...t.content.childNodes]:[...t.childNodes];for(let i=0;i{const{scrollLeft:e,scrollTop:n}=t;r.push([e,n])})),e.focus(),Ya(e,(t=>{const[e,n]=r.shift();t.scrollLeft=e,t.scrollTop=n})),Yn.window.scrollTo(t,n)}}_clearDomSelection(){const t=this.mapViewToDom(this.document.selection.editableElement);if(!t)return;const e=t.ownerDocument.defaultView.getSelection(),n=this.domSelectionToView(e);n&&n.rangeCount>0&&e.removeAllRanges()}isElement(t){return t&&t.nodeType==Node.ELEMENT_NODE}isDocumentFragment(t){return t&&t.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isBlockFiller(t){return"br"==this.blockFillerMode?t.isEqualNode(Ua):!("BR"!==t.tagName||!Ja(t,this.blockElements)||1!==t.parentNode.childNodes.length)||(t.isEqualNode($a)||function(t,e){const n=t.isEqualNode(Wa);return n&&Ja(t,e)&&1===t.parentNode.childNodes.length}(t,this.blockElements))}isDomSelectionBackward(t){if(t.isCollapsed)return!1;const e=this._domDocument.createRange();try{e.setStart(t.anchorNode,t.anchorOffset),e.setEnd(t.focusNode,t.focusOffset)}catch(t){return!1}const n=e.collapsed;return e.detach(),n}getHostViewElement(t){const e=li(t);for(e.pop();e.length;){const t=e.pop(),n=this._domToViewMapping.get(t);if(n&&(n.is("uiElement")||n.is("rawElement")))return n}return null}isDomSelectionCorrect(t){return this._isDomSelectionPositionCorrect(t.anchorNode,t.anchorOffset)&&this._isDomSelectionPositionCorrect(t.focusNode,t.focusOffset)}registerRawContentMatcher(t){this._rawContentElementMatcher.add(t)}registerInlineObjectMatcher(t){this._inlineObjectElementMatcher.add(t)}_clearTemporaryCustomProperties(){for(const t of this._elementsWithTemporaryCustomProperties)t._removeCustomProperty("editingPipeline:doNotReuseOnce");this._elementsWithTemporaryCustomProperties.clear()}_getBlockFiller(){switch(this.blockFillerMode){case"nbsp":return Sa(this._domDocument);case"markedNbsp":return Ta(this._domDocument);case"br":return Ia(this._domDocument)}}_isDomSelectionPositionCorrect(t,e){if(ui(t)&&Va(t)&&e<7)return!1;if(this.isElement(t)&&Va(t.childNodes[e]))return!1;const n=this.mapDomToView(t);return!n||!n.is("uiElement")&&!n.is("rawElement")}*_domToView(t,e,n){if(this.isBlockFiller(t))return null;const r=this.getHostViewElement(t);if(r)return r;if(Ei(t)&&e.skipComments)return null;if(ui(t)){if(Fa(t))return null;{const e=t.data;if(""===e)return null;const r=new os(this.document,e);return n.push(r),r}}{let r=this.mapDomToView(t);if(r)return this._isInlineObjectElement(r)&&n.push(r),r;if(this.isDocumentFragment(t))r=new ba(this.document),e.bind&&this.bindDocumentFragments(t,r);else{r=this._createViewElement(t,e),e.bind&&this.bindElements(t,r);const i=t.attributes;if(i)for(let t=i.length,e=0;e0?e[t-1]:null,l=t+1t.is("element")&&e.includes(t.name)))}(t,this.preElements))return!0;for(const e of t.getAncestors({parentFirst:!0}))if(e.is("element")&&e.hasStyle("white-space")&&"inherit"!==e.getStyle("white-space"))return["pre","pre-wrap","break-spaces"].includes(e.getStyle("white-space"));return!1}_getTouchingInlineViewNode(t,e){const n=new Gs({startPosition:e?Ks._createAfter(t):Ks._createBefore(t),direction:e?"forward":"backward"});for(const{item:t}of n){if(t.is("$textProxy"))return t;if(!t.is("element")||!t.getCustomProperty("dataPipeline:transparentRendering")){if(t.is("element","br"))return null;if(this._isInlineObjectElement(t))return t;if(t.is("containerElement"))return null}}return null}_isBlockDomElement(t){return this.isElement(t)&&this.blockElements.includes(t.tagName.toLowerCase())}_isBlockViewElement(t){return t.is("element")&&this.blockElements.includes(t.name)}_isInlineObjectElement(t){return!!t.is("element")&&("br"==t.name||this.inlineObjectElements.includes(t.name)||!!this._inlineObjectElementMatcher.match(t))}_createViewElement(t,e){if(Ei(t))return new ua(this.document,"$comment");const n=e.keepOriginalCase?t.tagName:t.tagName.toLowerCase();return new Os(this.document,n)}_isViewElementWithRawContent(t,e){return!1!==e.withChildren&&t.is("element")&&!!this._rawContentElementMatcher.match(t)}_shouldRenameElement(t){const e=t.toLowerCase();return"editing"===this.renderingMode&&this.unsafeElements.includes(e)}_createReplacementDomElement(t,e){const n=this._domDocument.createElement("span");if(n.setAttribute(Ka,t),e){for(;e.firstChild;)n.appendChild(e.firstChild);for(const t of e.getAttributeNames())n.setAttribute(t,e.getAttribute(t))}return n}}function Ya(t,e){let n=t;for(;n;)e(n),n=n.parentElement}function Ja(t,e){const n=t.parentNode;return!!n&&!!n.tagName&&e.includes(n.tagName.toLowerCase())}function Qa(t){"script"===t&&wr("domconverter-unsafe-script-element-detected"),"style"===t&&wr("domconverter-unsafe-style-element-detected")}class Xa extends(oi()){view;document;_isEnabled=!1;constructor(t){super(),this.view=t,this.document=t.document}get isEnabled(){return this._isEnabled}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}destroy(){this.disable(),this.stopListening()}checkShouldIgnoreEventFromTarget(t){return t&&3===t.nodeType&&(t=t.parentNode),!(!t||1!==t.nodeType)&&t.matches("[data-cke-ignore-events], [data-cke-ignore-events] *")}}const tl=_o((function(t,e){Zt(e,Ve(e),t)}));class el{view;document;domEvent;domTarget;constructor(t,e,n){this.view=t,this.document=t.document,this.domEvent=e,this.domTarget=e.target,tl(this,n)}get target(){return this.view.domConverter.mapDomToView(this.domTarget)}preventDefault(){this.domEvent.preventDefault()}stopPropagation(){this.domEvent.stopPropagation()}}class nl extends Xa{useCapture=!1;usePassive=!1;observe(t){("string"==typeof this.domEventType?[this.domEventType]:this.domEventType).forEach((e=>{this.listenTo(t,e,((t,e)=>{this.isEnabled&&!this.checkShouldIgnoreEventFromTarget(e.target)&&this.onDomEvent(e)}),{useCapture:this.useCapture,usePassive:this.usePassive})}))}stopObserving(t){this.stopListening(t)}fire(t,e,n){this.isEnabled&&this.document.fire(t,new el(this.view,e,n))}}class rl extends nl{domEventType=["keydown","keyup"];onDomEvent(t){const e={keyCode:t.keyCode,altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,metaKey:t.metaKey,get keystroke(){return Ki(this)}};this.fire(t.type,t,e)}}class il extends Xa{_fireSelectionChangeDoneDebounced;constructor(t){super(t),this._fireSelectionChangeDoneDebounced=F((t=>{this.document.fire("selectionChangeDone",t)}),200)}observe(){const t=this.document;t.on("arrowKey",((e,n)=>{t.selection.isFake&&this.isEnabled&&n.preventDefault()}),{context:"$capture"}),t.on("arrowKey",((e,n)=>{t.selection.isFake&&this.isEnabled&&this._handleSelectionMove(n.keyCode)}),{priority:"lowest"})}stopObserving(){}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(t){const e=this.document.selection,n=new Js(e.getRanges(),{backward:e.isBackward,fake:!1});t!=$i.arrowleft&&t!=$i.arrowup||n.setTo(n.getFirstPosition()),t!=$i.arrowright&&t!=$i.arrowdown||n.setTo(n.getLastPosition());const r={oldSelection:e,newSelection:n,domSelection:null};this.document.fire("selectionChange",r),this._fireSelectionChangeDoneDebounced(r)}}const ol=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const sl=function(t){return this.__data__.has(t)};function al(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new Ot;++ea))return!1;var c=o.get(t),d=o.get(e);if(c&&d)return c==e&&d==t;var h=-1,u=!0,m=2&n?new ll:void 0;for(o.set(t,e),o.set(e,t);++hthis._handleFocus())),e.on("blur",((t,e)=>this._handleBlur(e))),e.on("beforeinput",(()=>{e.isFocused||this._handleFocus()}),{priority:"highest"})}flush(){this._isFocusChanging&&(this._isFocusChanging=!1,this.document.isFocused=!0)}onDomEvent(t){this.fire(t.type,t)}destroy(){this._clearTimeout(),super.destroy()}_handleFocus(){this._clearTimeout(),this._isFocusChanging=!0,this._renderTimeoutId=setTimeout((()=>{this._renderTimeoutId=null,this.flush(),this.view.change((()=>{}))}),50)}_handleBlur(t){const e=this.document.selection.editableElement;null!==e&&e!==t.target||(this.document.isFocused=!1,this._isFocusChanging=!1,this.view.change((()=>{})))}_clearTimeout(){this._renderTimeoutId&&(clearTimeout(this._renderTimeoutId),this._renderTimeoutId=null)}}class Sl extends Xa{mutationObserver;focusObserver;selection;domConverter;_documents;_fireSelectionChangeDoneDebounced;_clearInfiniteLoopInterval;_documentIsSelectingInactivityTimeoutDebounced;_loopbackCounter;constructor(t){super(t),this.mutationObserver=t.getObserver(El),this.focusObserver=t.getObserver(Dl),this.selection=this.document.selection,this.domConverter=t.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=F((t=>{this.document.fire("selectionChangeDone",t)}),200),this._clearInfiniteLoopInterval=setInterval((()=>this._clearInfiniteLoop()),1e3),this._documentIsSelectingInactivityTimeoutDebounced=F((()=>this.document.isSelecting=!1),5e3),this._loopbackCounter=0}observe(t){const e=t.ownerDocument,n=()=>{this.document.isSelecting&&(this._handleSelectionChange(e),this.document.isSelecting=!1,this._documentIsSelectingInactivityTimeoutDebounced.cancel())};this.listenTo(t,"selectstart",(()=>{this.document.isSelecting=!0,this._documentIsSelectingInactivityTimeoutDebounced()}),{priority:"highest"}),this.listenTo(t,"keydown",n,{priority:"highest",useCapture:!0}),this.listenTo(t,"keyup",n,{priority:"highest",useCapture:!0}),this._documents.has(e)||(this.listenTo(e,"mouseup",n,{priority:"highest",useCapture:!0}),this.listenTo(e,"selectionchange",(()=>{this.document.isComposing&&!Xn.isAndroid||(this._handleSelectionChange(e),this._documentIsSelectingInactivityTimeoutDebounced())})),this.listenTo(this.view.document,"compositionstart",(()=>{this._handleSelectionChange(e)}),{priority:"lowest"}),this._documents.add(e))}stopObserving(t){this.stopListening(t)}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel(),this._documentIsSelectingInactivityTimeoutDebounced.cancel()}_reportInfiniteLoop(){}_handleSelectionChange(t){if(!this.isEnabled)return;const e=t.defaultView.getSelection();if(this.checkShouldIgnoreEventFromTarget(e.anchorNode))return;this.mutationObserver.flush();const n=this.domConverter.domSelectionToView(e);if(0!=n.rangeCount){if(this.view.hasDomSelection=!0,this.focusObserver.flush(),!this.selection.isEqual(n)||!this.domConverter.isDomSelectionCorrect(e))if(++this._loopbackCounter>60)this._reportInfiniteLoop();else if(this.selection.isSimilar(n))this.view.forceRender();else{const t={oldSelection:this.selection,newSelection:n,domSelection:e};this.document.fire("selectionChange",t),this._fireSelectionChangeDoneDebounced(t)}}else this.view.hasDomSelection=!1}_clearInfiniteLoop(){this._loopbackCounter=0}}class Tl extends nl{domEventType=["compositionstart","compositionupdate","compositionend"];constructor(t){super(t);const e=this.document;e.on("compositionstart",(()=>{e.isComposing=!0}),{priority:"low"}),e.on("compositionend",(()=>{e.isComposing=!1}),{priority:"low"})}onDomEvent(t){this.fire(t.type,t,{data:t.data})}}class Il{_files;_native;constructor(t,e={}){this._files=e.cacheFiles?Pl(t):null,this._native=t}get files(){return this._files||(this._files=Pl(this._native)),this._files}get types(){return this._native.types}getData(t){return this._native.getData(t)}setData(t,e){this._native.setData(t,e)}set effectAllowed(t){this._native.effectAllowed=t}get effectAllowed(){return this._native.effectAllowed}set dropEffect(t){this._native.dropEffect=t}get dropEffect(){return this._native.dropEffect}setDragImage(t,e,n){this._native.setDragImage(t,e,n)}get isCanceled(){return"none"==this._native.dropEffect||!!this._native.mozUserCancelled}}function Pl(t){const e=Array.from(t.files||[]),n=Array.from(t.items||[]);return e.length?e:n.filter((t=>"file"===t.kind)).map((t=>t.getAsFile()))}class Vl extends nl{domEventType="beforeinput";onDomEvent(t){const e=t.getTargetRanges(),n=this.view,r=n.document;let i=null,o=null,s=[];if(t.dataTransfer&&(i=new Il(t.dataTransfer)),null!==t.data?o=t.data:i&&(o=i.getData("text/plain")),r.selection.isFake)s=Array.from(r.selection.getRanges());else if(e.length)s=e.map((t=>{const e=n.domConverter.domPositionToView(t.startContainer,t.startOffset),r=n.domConverter.domPositionToView(t.endContainer,t.endOffset);return e?n.createRange(e,r):r?n.createRange(r):void 0})).filter((t=>!!t));else if(Xn.isAndroid){const e=t.target.ownerDocument.defaultView.getSelection();s=Array.from(n.domConverter.domSelectionToView(e).getRanges())}if(Xn.isAndroid&&"insertCompositionText"==t.inputType&&o&&o.endsWith("\n"))this.fire(t.type,t,{inputType:"insertParagraph",targetRanges:[n.createRange(s[0].end)]});else if("insertText"==t.inputType&&o&&o.includes("\n")){const e=o.split(/\n{1,2}/g);let n=s;for(let o=0;o{if(this.isEnabled&&((n=e.keyCode)==$i.arrowright||n==$i.arrowleft||n==$i.arrowup||n==$i.arrowdown)){const n=new Xs(this.document,"arrowKey",this.document.selection.getFirstRange());this.document.fire(n,e),n.stop.called&&t.stop()}var n}))}observe(){}stopObserving(){}}class Rl extends Xa{constructor(t){super(t);const e=this.document;e.on("keydown",((t,n)=>{if(!this.isEnabled||n.keyCode!=$i.tab||n.ctrlKey)return;const r=new Xs(e,"tab",e.selection.getFirstRange());e.fire(r,n),r.stop.called&&t.stop()}))}observe(){}stopObserving(){}}const Ll=function(t){return Hn(t,5)};class zl extends(jr()){document;domConverter;domRoots=new Map;_renderer;_initialDomRootAttributes=new WeakMap;_observers=new Map;_writer;_ongoingChange=!1;_postFixersInProgress=!1;_renderingDisabled=!1;_hasChangedSinceTheLastRendering=!1;constructor(t){super(),this.document=new sa(t),this.domConverter=new Za(this.document),this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new Na(this.domConverter,this.document.selection),this._renderer.bind("isFocused","isSelecting","isComposing").to(this.document,"isFocused","isSelecting","isComposing"),this._writer=new ka(this.document),this.addObserver(El),this.addObserver(Dl),this.addObserver(Sl),this.addObserver(rl),this.addObserver(il),this.addObserver(Tl),this.addObserver(Fl),this.addObserver(Vl),this.addObserver(Rl),this.document.on("arrowKey",La,{priority:"low"}),ma(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})),Xn.isiOS&&this.listenTo(this.document,"blur",((t,e)=>{this.domConverter.mapDomToView(e.domEvent.relatedTarget)||this.domConverter._clearDomSelection()})),this.listenTo(this.document,"mutations",((t,{mutations:e})=>{e.forEach((t=>this._renderer.markToSync(t.type,t.node)))}),{priority:"low"}),this.listenTo(this.document,"mutations",(()=>{this.forceRender()}),{priority:"lowest"})}attachDomRoot(t,e="main"){const n=this.document.getRoot(e);n._name=t.tagName.toLowerCase();const r={};for(const{name:e,value:i}of Array.from(t.attributes))r[e]=i,"class"===e?this._writer.addClass(i.split(" "),n):n.hasAttribute(e)||this._writer.setAttribute(e,i,n);this._initialDomRootAttributes.set(t,r);const i=()=>{this._writer.setAttribute("contenteditable",(!n.isReadOnly).toString(),n),n.isReadOnly?this._writer.addClass("ck-read-only",n):this._writer.removeClass("ck-read-only",n)};i(),this.domRoots.set(e,t),this.domConverter.bindElements(t,n),this._renderer.markToSync("children",n),this._renderer.markToSync("attributes",n),this._renderer.domDocuments.add(t.ownerDocument),n.on("change:children",((t,e)=>this._renderer.markToSync("children",e))),n.on("change:attributes",((t,e)=>this._renderer.markToSync("attributes",e))),n.on("change:text",((t,e)=>this._renderer.markToSync("text",e))),n.on("change:isReadOnly",(()=>this.change(i))),n.on("change",(()=>{this._hasChangedSinceTheLastRendering=!0}));for(const n of this._observers.values())n.observe(t,e)}detachDomRoot(t){const e=this.domRoots.get(t);Array.from(e.attributes).forEach((({name:t})=>e.removeAttribute(t)));const n=this._initialDomRootAttributes.get(e);for(const t in n)e.setAttribute(t,n[t]);this.domRoots.delete(t),this.domConverter.unbindDomElement(e);for(const t of this._observers.values())t.stopObserving(e)}getDomRoot(t="main"){return this.domRoots.get(t)}addObserver(t){let e=this._observers.get(t);if(e)return e;e=new t(this),this._observers.set(t,e);for(const[t,n]of this.domRoots)e.observe(n,t);return e.enable(),e}getObserver(t){return this._observers.get(t)}disableObservers(){for(const t of this._observers.values())t.disable()}enableObservers(){for(const t of this._observers.values())t.enable()}scrollToTheSelection({alignToTop:t,forceScroll:e,viewportOffset:n=20,ancestorOffset:r=20}={}){const i=this.document.selection.getFirstRange();if(!i)return;const o=Ll({alignToTop:t,forceScroll:e,viewportOffset:n,ancestorOffset:r});"number"==typeof n&&(n={top:n,bottom:n,left:n,right:n});const s={target:this.domConverter.viewRangeToDom(i),viewportOffset:n,ancestorOffset:r,alignToTop:t,forceScroll:e};this.fire("scrollToTheSelection",s,o),Vi(s)}focus(){if(!this.document.isFocused){const t=this.document.selection.editableElement;t&&(this.domConverter.focus(t),this.forceRender())}}change(t){if(this.isRenderingInProgress||this._postFixersInProgress)throw new kr("cannot-change-view-tree",this);try{if(this._ongoingChange)return t(this._writer);this._ongoingChange=!0;const e=t(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire("render")),e}catch(t){kr.rethrowUnexpectedError(t,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.getObserver(Dl).flush(),this.change((()=>{}))}destroy(){for(const t of this._observers.values())t.destroy();this.document.destroy(),this.stopListening()}createPositionAt(t,e){return Ks._createAt(t,e)}createPositionAfter(t){return Ks._createAfter(t)}createPositionBefore(t){return Ks._createBefore(t)}createRange(t,e){return new Zs(t,e)}createRangeOn(t){return Zs._createOn(t)}createRangeIn(t){return Zs._createIn(t)}createSelection(...t){return new Js(...t)}_disableRendering(t){this._renderingDisabled=t,0==t&&this.change((()=>{}))}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}class Ml{is(){throw new Error("is() method is abstract")}}class Nl extends Ml{parent=null;_attrs;constructor(t){super(),this._attrs=So(t)}get document(){return null}get index(){let t;if(!this.parent)return null;if(null===(t=this.parent.getChildIndex(this)))throw new kr("model-node-not-found-in-parent",this);return t}get startOffset(){let t;if(!this.parent)return null;if(null===(t=this.parent.getChildStartOffset(this)))throw new kr("model-node-not-found-in-parent",this);return t}get offsetSize(){return 1}get endOffset(){return this.parent?this.startOffset+this.offsetSize:null}get nextSibling(){const t=this.index;return null!==t&&this.parent.getChild(t+1)||null}get previousSibling(){const t=this.index;return null!==t&&this.parent.getChild(t-1)||null}get root(){let t=this;for(;t.parent;)t=t.parent;return t}isAttached(){return null!==this.parent&&this.root.isAttached()}getPath(){const t=[];let e=this;for(;e.parent;)t.unshift(e.startOffset),e=e.parent;return t}getAncestors(t={}){const e=[];let n=t.includeSelf?this:this.parent;for(;n;)e[t.parentFirst?"push":"unshift"](n),n=n.parent;return e}getCommonAncestor(t,e={}){const n=this.getAncestors(e),r=t.getAncestors(e);let i=0;for(;n[i]==r[i]&&n[i];)i++;return 0===i?null:n[i-1]}isBefore(t){if(this==t)return!1;if(this.root!==t.root)return!1;const e=this.getPath(),n=t.getPath(),r=Zr(e,n);switch(r){case"prefix":return!0;case"extension":return!1;default:return e[r](t[e[0]]=e[1],t)),{})),t}_clone(t){return new this.constructor(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(t,e){this._attrs.set(t,e)}_setAttributesTo(t){this._attrs=So(t)}_removeAttribute(t){return this._attrs.delete(t)}_clearAttributes(){this._attrs.clear()}}Nl.prototype.is=function(t){return"node"===t||"model:node"===t};class Ol{_nodes=[];constructor(t){t&&this._insertNodes(0,t)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce(((t,e)=>t+e.offsetSize),0)}getNode(t){return this._nodes[t]||null}getNodeIndex(t){const e=this._nodes.indexOf(t);return-1==e?null:e}getNodeStartOffset(t){const e=this.getNodeIndex(t);if(null===e)return null;let n=0;for(let t=0;t=e&&t1e4)return t.slice(0,n).concat(e).concat(t.slice(n+r,t.length));{const i=Array.from(t);return i.splice(n,r,...e),i}}(this._nodes,Array.from(e),t,0)}_removeNodes(t,e=1){return this._nodes.splice(t,e)}toJSON(){return this._nodes.map((t=>t.toJSON()))}}class Hl extends Nl{_data;constructor(t,e){super(e),this._data=t||""}get offsetSize(){return this.data.length}get data(){return this._data}toJSON(){const t=super.toJSON();return t.data=this.data,t}_clone(){return new Hl(this.data,this.getAttributes())}static fromJSON(t){return new Hl(t.data,t.attributes)}}Hl.prototype.is=function(t){return"$text"===t||"model:$text"===t||"text"===t||"model:text"===t||"node"===t||"model:node"===t};class jl extends Ml{textNode;data;offsetInText;constructor(t,e,n){if(super(),this.textNode=t,e<0||e>t.offsetSize)throw new kr("model-textproxy-wrong-offsetintext",this);if(n<0||e+n>t.offsetSize)throw new kr("model-textproxy-wrong-length",this);this.data=t.data.substring(e,e+n),this.offsetInText=e}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 t=this.textNode.getPath();return t.length>0&&(t[t.length-1]+=this.offsetInText),t}getAncestors(t={}){const e=[];let n=t.includeSelf?this:this.parent;for(;n;)e[t.parentFirst?"push":"unshift"](n),n=n.parent;return e}hasAttribute(t){return this.textNode.hasAttribute(t)}getAttribute(t){return this.textNode.getAttribute(t)}getAttributes(){return this.textNode.getAttributes()}getAttributeKeys(){return this.textNode.getAttributeKeys()}}jl.prototype.is=function(t){return"$textProxy"===t||"model:$textProxy"===t||"textProxy"===t||"model:textProxy"===t};class ql extends Nl{name;_children=new Ol;constructor(t,e,n){super(e),this.name=t,n&&this._insertChild(0,n)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}getChild(t){return this._children.getNode(t)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(t){return this._children.getNodeIndex(t)}getChildStartOffset(t){return this._children.getNodeStartOffset(t)}offsetToIndex(t){return this._children.offsetToIndex(t)}getNodeByPath(t){let e=this;for(const n of t)e=e.getChild(e.offsetToIndex(n));return e}findAncestor(t,e={}){let n=e.includeSelf?this:this.parent;for(;n;){if(n.name===t)return n;n=n.parent}return null}toJSON(){const t=super.toJSON();if(t.name=this.name,this._children.length>0){t.children=[];for(const e of this._children)t.children.push(e.toJSON())}return t}_clone(t=!1){const e=t?Array.from(this._children).map((t=>t._clone(!0))):void 0;return new ql(this.name,this.getAttributes(),e)}_appendChild(t){this._insertChild(this.childCount,t)}_insertChild(t,e){const n=function(t){if("string"==typeof t)return[new Hl(t)];Yr(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new Hl(t):t instanceof jl?new Hl(t.data,t.getAttributes()):t))}(e);for(const t of n)null!==t.parent&&t._remove(),t.parent=this;this._children._insertNodes(t,n)}_removeChildren(t,e=1){const n=this._children._removeNodes(t,e);for(const t of n)t.parent=null;return n}static fromJSON(t){let e;if(t.children){e=[];for(const n of t.children)n.name?e.push(ql.fromJSON(n)):e.push(Hl.fromJSON(n))}return new ql(t.name,t.attributes,e)}}ql.prototype.is=function(t,e){return e?e===this.name&&("element"===t||"model:element"===t):"element"===t||"model:element"===t||"node"===t||"model:node"===t};class Ul{direction;boundaries;singleCharacters;shallow;ignoreElementEnd;_position;_boundaryStartParent;_boundaryEndParent;_visitedParent;constructor(t){if(!t||!t.boundaries&&!t.startPosition)throw new kr("model-tree-walker-no-start-position",null);const e=t.direction||"forward";if("forward"!=e&&"backward"!=e)throw new kr("model-tree-walker-unknown-direction",t,{direction:e});this.direction=e,this.boundaries=t.boundaries||null,t.startPosition?this._position=t.startPosition.clone():this._position=$l._createAt(this.boundaries["backward"==this.direction?"end":"start"]),this.position.stickiness="toNone",this.singleCharacters=!!t.singleCharacters,this.shallow=!!t.shallow,this.ignoreElementEnd=!!t.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(t){let e,n,r,i;do{r=this.position,i=this._visitedParent,({done:e,value:n}=this.next())}while(!e&&t(n));e||(this._position=r,this._visitedParent=i)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){const t=this.position,e=this.position.clone(),n=this._visitedParent;if(null===n.parent&&e.offset===n.maxOffset)return{done:!0,value:void 0};if(n===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0,value:void 0};const r=Gl(e,n),i=r||Kl(e,n,r);if(i instanceof ql){if(this.shallow){if(this.boundaries&&this.boundaries.end.isBefore(e))return{done:!0,value:void 0};e.offset++}else e.path.push(0),this._visitedParent=i;return this._position=e,Wl("elementStart",i,t,e,1)}if(i instanceof Hl){let r;if(this.singleCharacters)r=1;else{let t=i.endOffset;this._boundaryEndParent==n&&this.boundaries.end.offsett&&(t=this.boundaries.start.offset),r=e.offset-t}const i=e.offset-o.startOffset,s=new jl(o,i-r,r);return e.offset-=r,this._position=e,Wl("text",s,t,e,r)}return e.path.pop(),this._position=e,this._visitedParent=n.parent,Wl("elementStart",n,t,e,1)}}function Wl(t,e,n,r,i){return{done:!1,value:{type:t,item:e,previousPosition:n,nextPosition:r,length:i}}}class $l extends Ml{root;path;stickiness;constructor(t,e,n="toNone"){if(super(),!t.is("element")&&!t.is("documentFragment"))throw new kr("model-position-root-invalid",t);if(!(e instanceof Array)||0===e.length)throw new kr("model-position-path-incorrect-format",t,{path:e});t.is("rootElement")?e=e.slice():(e=[...t.getPath(),...e],t=t.root),this.root=t,this.path=e,this.stickiness=n}get offset(){return this.path[this.path.length-1]}set offset(t){this.path[this.path.length-1]=t}get parent(){let t=this.root;for(let e=0;e1)return!1;if(1===e)return Yl(t,this,n);if(-1===e)return Yl(this,t,n)}return this.path.length===t.path.length||(this.path.length>t.path.length?Jl(this.path,e):Jl(t.path,e))}hasSameParentAs(t){if(this.root!==t.root)return!1;return"same"==Zr(this.getParentPath(),t.getParentPath())}getTransformedByOperation(t){let e;switch(t.type){case"insert":e=this._getTransformedByInsertOperation(t);break;case"move":case"remove":case"reinsert":e=this._getTransformedByMoveOperation(t);break;case"split":e=this._getTransformedBySplitOperation(t);break;case"merge":e=this._getTransformedByMergeOperation(t);break;default:e=$l._createAt(this)}return e}_getTransformedByInsertOperation(t){return this._getTransformedByInsertion(t.position,t.howMany)}_getTransformedByMoveOperation(t){return this._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany)}_getTransformedBySplitOperation(t){const e=t.movedRange;return e.containsPosition(this)||e.start.isEqual(this)&&"toNext"==this.stickiness?this._getCombined(t.splitPosition,t.moveTargetPosition):t.graveyardPosition?this._getTransformedByMove(t.graveyardPosition,t.insertionPosition,1):this._getTransformedByInsertion(t.insertionPosition,1)}_getTransformedByMergeOperation(t){const e=t.movedRange;let n;return e.containsPosition(this)||e.start.isEqual(this)?(n=this._getCombined(t.sourcePosition,t.targetPosition),t.sourcePosition.isBefore(t.targetPosition)&&(n=n._getTransformedByDeletion(t.deletionPosition,1))):n=this.isEqual(t.deletionPosition)?$l._createAt(t.deletionPosition):this._getTransformedByMove(t.deletionPosition,t.graveyardPosition,1),n}_getTransformedByDeletion(t,e){const n=$l._createAt(this);if(this.root!=t.root)return n;if("same"==Zr(t.getParentPath(),this.getParentPath())){if(t.offsetthis.offset)return null;n.offset-=e}}else if("prefix"==Zr(t.getParentPath(),this.getParentPath())){const r=t.path.length-1;if(t.offset<=this.path[r]){if(t.offset+e>this.path[r])return null;n.path[r]-=e}}return n}_getTransformedByInsertion(t,e){const n=$l._createAt(this);if(this.root!=t.root)return n;if("same"==Zr(t.getParentPath(),this.getParentPath()))(t.offset=e;){if(t.path[r]+i!==n.maxOffset)return!1;i=1,r--,n=n.parent}return!0}(t,n+1))}function Jl(t,e){for(;ee+1;){const e=r.maxOffset-n.offset;0!==e&&t.push(new Ql(n,n.getShiftedBy(e))),n.path=n.path.slice(0,-1),n.offset++,r=r.parent}for(;n.path.length<=this.end.path.length;){const e=this.end.path[n.path.length-1],r=e-n.offset;0!==r&&t.push(new Ql(n,n.getShiftedBy(r))),n.offset=e,n.path.push(0)}return t}getWalker(t={}){return t.boundaries=this,new Ul(t)}*getItems(t={}){t.boundaries=this,t.ignoreElementEnd=!0;const e=new Ul(t);for(const t of e)yield t.item}*getPositions(t={}){t.boundaries=this;const e=new Ul(t);yield e.position;for(const t of e)yield t.nextPosition}getTransformedByOperation(t){switch(t.type){case"insert":return this._getTransformedByInsertOperation(t);case"move":case"remove":case"reinsert":return this._getTransformedByMoveOperation(t);case"split":return[this._getTransformedBySplitOperation(t)];case"merge":return[this._getTransformedByMergeOperation(t)]}return[new Ql(this.start,this.end)]}getTransformedByOperations(t){const e=[new Ql(this.start,this.end)];for(const n of t)for(let t=0;t0?new this(n,r):new this(r,n)}static _createIn(t){return new this($l._createAt(t,0),$l._createAt(t,t.maxOffset))}static _createOn(t){return this._createFromPositionAndShift($l._createBefore(t),t.offsetSize)}static _createFromRanges(t){if(0===t.length)throw new kr("range-create-from-ranges-empty-array",null);if(1==t.length)return t[0].clone();const e=t[0];t.sort(((t,e)=>t.start.isAfter(e.start)?1:-1));const n=t.indexOf(e),r=new this(e.start,e.end);for(let e=n-1;e>=0&&t[e].end.isEqual(r.start);e--)r.start=$l._createAt(t[e].start);for(let e=n+1;e{if(e.viewPosition)return;const n=this._modelToViewMapping.get(e.modelPosition.parent);if(!n)throw new kr("mapping-model-position-view-parent-not-found",this,{modelPosition:e.modelPosition});e.viewPosition=this.findPositionIn(n,e.modelPosition.offset)}),{priority:"low"}),this.on("viewToModelPosition",((t,e)=>{if(e.modelPosition)return;const n=this.findMappedViewAncestor(e.viewPosition),r=this._viewToModelMapping.get(n),i=this._toModelOffset(e.viewPosition.parent,e.viewPosition.offset,n);e.modelPosition=$l._createAt(r,i)}),{priority:"low"})}bindElements(t,e){this._modelToViewMapping.set(t,e),this._viewToModelMapping.set(e,t)}unbindViewElement(t,e={}){const n=this.toModelElement(t);if(this._elementToMarkerNames.has(t))for(const e of this._elementToMarkerNames.get(t))this._unboundMarkerNames.add(e);e.defer?this._deferredBindingRemovals.set(t,t.root):(this._viewToModelMapping.delete(t),this._modelToViewMapping.get(n)==t&&this._modelToViewMapping.delete(n))}unbindModelElement(t){const e=this.toViewElement(t);this._modelToViewMapping.delete(t),this._viewToModelMapping.get(e)==t&&this._viewToModelMapping.delete(e)}bindElementToMarker(t,e){const n=this._markerNameToElements.get(e)||new Set;n.add(t);const r=this._elementToMarkerNames.get(t)||new Set;r.add(e),this._markerNameToElements.set(e,n),this._elementToMarkerNames.set(t,r)}unbindElementFromMarkerName(t,e){const n=this._markerNameToElements.get(e);n&&(n.delete(t),0==n.size&&this._markerNameToElements.delete(e));const r=this._elementToMarkerNames.get(t);r&&(r.delete(e),0==r.size&&this._elementToMarkerNames.delete(t))}flushUnboundMarkerNames(){const t=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),t}flushDeferredBindings(){for(const[t,e]of this._deferredBindingRemovals)t.root==e&&this.unbindViewElement(t);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(t){return this._viewToModelMapping.get(t)}toViewElement(t){return this._modelToViewMapping.get(t)}toModelRange(t){return new Ql(this.toModelPosition(t.start),this.toModelPosition(t.end))}toViewRange(t){return new Zs(this.toViewPosition(t.start),this.toViewPosition(t.end))}toModelPosition(t){const e={viewPosition:t,mapper:this};return this.fire("viewToModelPosition",e),e.modelPosition}toViewPosition(t,e={}){const n={modelPosition:t,mapper:this,isPhantom:e.isPhantom};return this.fire("modelToViewPosition",n),n.viewPosition}markerNameToElements(t){const e=this._markerNameToElements.get(t);if(!e)return null;const n=new Set;for(const t of e)if(t.is("attributeElement"))for(const e of t.getElementsWithSameId())n.add(e);else n.add(t);return n}registerViewToModelLength(t,e){this._viewToModelLengthCallbacks.set(t,e)}findMappedViewAncestor(t){let e=t.parent;for(;!this._viewToModelMapping.has(e);)e=e.parent;return e}_toModelOffset(t,e,n){if(n!=t){return this._toModelOffset(t.parent,t.index,n)+this._toModelOffset(t,e,t)}if(t.is("$text"))return e;let r=0;for(let n=0;n1?e[0]+":"+e[1]:e[0]}class nc extends(Dr()){_conversionApi;_firedEventsMap;constructor(t){super(),this._conversionApi={dispatcher:this,...t},this._firedEventsMap=new WeakMap}convertChanges(t,e,n){const r=this._createConversionApi(n,t.getRefreshedItems());for(const e of t.getMarkersToRemove())this._convertMarkerRemove(e.name,e.range,r);const i=this._reduceChanges(t.getChanges());for(const t of i)"insert"===t.type?this._convertInsert(Ql._createFromPositionAndShift(t.position,t.length),r):"reinsert"===t.type?this._convertReinsert(Ql._createFromPositionAndShift(t.position,t.length),r):"remove"===t.type?this._convertRemove(t.position,t.length,t.name,r):this._convertAttribute(t.range,t.attributeKey,t.attributeOldValue,t.attributeNewValue,r);r.mapper.flushDeferredBindings();for(const t of r.mapper.flushUnboundMarkerNames()){const n=e.get(t).getRange();this._convertMarkerRemove(t,n,r),this._convertMarkerAdd(t,n,r)}for(const e of t.getMarkersToAdd())this._convertMarkerAdd(e.name,e.range,r);r.consumable.verifyAllConsumed("insert")}convert(t,e,n,r={}){const i=this._createConversionApi(n,void 0,r);this._convertInsert(t,i);for(const[t,n]of e)this._convertMarkerAdd(t,n,i);i.consumable.verifyAllConsumed("insert")}convertSelection(t,e,n){const r=this._createConversionApi(n);this.fire("cleanSelection",{selection:t},r);const i=t.getFirstPosition().root;if(!r.mapper.toViewElement(i))return;const o=Array.from(e.getMarkersAtPosition(t.getFirstPosition()));if(this._addConsumablesForSelection(r.consumable,t,o),this.fire("selection",{selection:t},r),t.isCollapsed){for(const e of o)if(r.consumable.test(t,"addMarker:"+e.name)){const n=e.getRange();if(!rc(t.getFirstPosition(),e,r.mapper))continue;const i={item:t,markerName:e.name,markerRange:n};this.fire(`addMarker:${e.name}`,i,r)}for(const e of t.getAttributeKeys())if(r.consumable.test(t,"attribute:"+e)){const n={item:t,range:t.getFirstRange(),attributeKey:e,attributeOldValue:null,attributeNewValue:t.getAttribute(e)};this.fire(`attribute:${e}:$text`,n,r)}}}_convertInsert(t,e,n={}){n.doNotAddConsumables||this._addConsumablesForInsert(e.consumable,t);for(const n of Array.from(t.getWalker({shallow:!0})).map(ic))this._testAndFire("insert",n,e)}_convertRemove(t,e,n,r){this.fire(`remove:${n}`,{position:t,length:e},r)}_convertAttribute(t,e,n,r,i){this._addConsumablesForRange(i.consumable,t,`attribute:${e}`);for(const o of t){const t={item:o.item,range:Ql._createFromPositionAndShift(o.previousPosition,o.length),attributeKey:e,attributeOldValue:n,attributeNewValue:r};this._testAndFire(`attribute:${e}`,t,i)}}_convertReinsert(t,e){const n=Array.from(t.getWalker({shallow:!0}));this._addConsumablesForInsert(e.consumable,n);for(const t of n.map(ic))this._testAndFire("insert",{...t,reconversion:!0},e)}_convertMarkerAdd(t,e,n){if("$graveyard"==e.root.rootName)return;const r=`addMarker:${t}`;if(n.consumable.add(e,r),this.fire(r,{markerName:t,markerRange:e},n),n.consumable.consume(e,r)){this._addConsumablesForRange(n.consumable,e,r);for(const i of e.getItems()){if(!n.consumable.test(i,r))continue;const o={item:i,range:Ql._createOn(i),markerName:t,markerRange:e};this.fire(r,o,n)}}}_convertMarkerRemove(t,e,n){"$graveyard"!=e.root.rootName&&this.fire(`removeMarker:${t}`,{markerName:t,markerRange:e},n)}_reduceChanges(t){const e={changes:t};return this.fire("reduceChanges",e),e.changes}_addConsumablesForInsert(t,e){for(const n of e){const e=n.item;if(null===t.test(e,"insert")){t.add(e,"insert");for(const n of e.getAttributeKeys())t.add(e,"attribute:"+n)}}return t}_addConsumablesForRange(t,e,n){for(const r of e.getItems())t.add(r,n);return t}_addConsumablesForSelection(t,e,n){t.add(e,"selection");for(const r of n)t.add(e,"addMarker:"+r.name);for(const n of e.getAttributeKeys())t.add(e,"attribute:"+n);return t}_testAndFire(t,e,n){const r=function(t,e){const n=e.item.is("element")?e.item.name:"$text";return`${t}:${n}`}(t,e),i=e.item.is("$textProxy")?n.consumable._getSymbolForTextProxy(e.item):e.item,o=this._firedEventsMap.get(n),s=o.get(i);if(s){if(s.has(r))return;s.add(r)}else o.set(i,new Set([r]));this.fire(r,e,n)}_testAndFireAddAttributes(t,e){const n={item:t,range:Ql._createOn(t)};for(const t of n.item.getAttributeKeys())n.attributeKey=t,n.attributeOldValue=null,n.attributeNewValue=n.item.getAttribute(t),this._testAndFire(`attribute:${t}`,n,e)}_createConversionApi(t,e=new Set,n={}){const r={...this._conversionApi,consumable:new tc,writer:t,options:n,convertItem:t=>this._convertInsert(Ql._createOn(t),r),convertChildren:t=>this._convertInsert(Ql._createIn(t),r,{doNotAddConsumables:!0}),convertAttributes:t=>this._testAndFireAddAttributes(t,r),canReuseView:t=>!e.has(r.mapper.toModelElement(t))};return this._firedEventsMap.set(r,new Map),r}}function rc(t,e,n){const r=e.getRange(),i=Array.from(t.getAncestors());i.shift(),i.reverse();return!i.some((t=>{if(r.containsItem(t)){return!!n.toViewElement(t).getCustomProperty("addHighlight")}}))}function ic(t){return{item:t.item,range:Ql._createFromPositionAndShift(t.previousPosition,t.length)}}class oc extends(Dr(Ml)){_lastRangeBackward=!1;_attrs=new Map;_ranges=[];constructor(...t){super(),t.length&&this.setTo(...t)}get anchor(){if(this._ranges.length>0){const t=this._ranges[this._ranges.length-1];return this._lastRangeBackward?t.end:t.start}return null}get focus(){if(this._ranges.length>0){const t=this._ranges[this._ranges.length-1];return this._lastRangeBackward?t.start:t.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(t){if(this.rangeCount!=t.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(t.anchor)||!this.focus.isEqual(t.focus))return!1;for(const e of this._ranges){let n=!1;for(const r of t._ranges)if(e.isEqual(r)){n=!0;break}if(!n)return!1}return!0}*getRanges(){for(const t of this._ranges)yield new Ql(t.start,t.end)}getFirstRange(){let t=null;for(const e of this._ranges)t&&!e.start.isBefore(t.start)||(t=e);return t?new Ql(t.start,t.end):null}getLastRange(){let t=null;for(const e of this._ranges)t&&!e.end.isAfter(t.end)||(t=e);return t?new Ql(t.start,t.end):null}getFirstPosition(){const t=this.getFirstRange();return t?t.start.clone():null}getLastPosition(){const t=this.getLastRange();return t?t.end.clone():null}setTo(...t){let[e,n,r]=t;if("object"==typeof n&&(r=n,n=void 0),null===e)this._setRanges([]);else if(e instanceof oc)this._setRanges(e.getRanges(),e.isBackward);else if(e&&"function"==typeof e.getRanges)this._setRanges(e.getRanges(),e.isBackward);else if(e instanceof Ql)this._setRanges([e],!!r&&!!r.backward);else if(e instanceof $l)this._setRanges([new Ql(e)]);else if(e instanceof Nl){const t=!!r&&!!r.backward;let i;if("in"==n)i=Ql._createIn(e);else if("on"==n)i=Ql._createOn(e);else{if(void 0===n)throw new kr("model-selection-setto-required-second-parameter",[this,e]);i=new Ql($l._createAt(e,n))}this._setRanges([i],t)}else{if(!Yr(e))throw new kr("model-selection-setto-not-selectable",[this,e]);this._setRanges(e,r&&!!r.backward)}}_setRanges(t,e=!1){const n=Array.from(t),r=n.some((e=>{if(!(e instanceof Ql))throw new kr("model-selection-set-ranges-not-range",[this,t]);return this._ranges.every((t=>!t.isEqual(e)))}));(n.length!==this._ranges.length||r)&&(this._replaceAllRanges(n),this._lastRangeBackward=!!e,this.fire("change:range",{directChange:!0}))}setFocus(t,e){if(null===this.anchor)throw new kr("model-selection-setfocus-no-ranges",[this,t]);const n=$l._createAt(t,e);if("same"==n.compareWith(this.focus))return;const r=this.anchor;this._ranges.length&&this._popRange(),"before"==n.compareWith(r)?(this._pushRange(new Ql(n,r)),this._lastRangeBackward=!0):(this._pushRange(new Ql(r,n)),this._lastRangeBackward=!1),this.fire("change:range",{directChange:!0})}getAttribute(t){return this._attrs.get(t)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(t){return this._attrs.has(t)}removeAttribute(t){this.hasAttribute(t)&&(this._attrs.delete(t),this.fire("change:attribute",{attributeKeys:[t],directChange:!0}))}setAttribute(t,e){this.getAttribute(t)!==e&&(this._attrs.set(t,e),this.fire("change:attribute",{attributeKeys:[t],directChange:!0}))}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}*getSelectedBlocks(){const t=new WeakSet;for(const e of this.getRanges()){const n=lc(e.start,t);dc(n,e)&&(yield n);for(const n of e.getWalker()){const r=n.item;"elementEnd"==n.type&&ac(r,t,e)&&(yield r)}const r=lc(e.end,t);hc(r,e)&&(yield r)}}containsEntireContent(t=this.anchor.root){const e=$l._createAt(t,0),n=$l._createAt(t,"end");return e.isTouching(this.getFirstPosition())&&n.isTouching(this.getLastPosition())}_pushRange(t){this._checkRange(t),this._ranges.push(new Ql(t.start,t.end))}_checkRange(t){for(let e=0;e0;)this._popRange()}_popRange(){this._ranges.pop()}}function sc(t,e){return!e.has(t)&&(e.add(t),t.root.document.model.schema.isBlock(t)&&!!t.parent)}function ac(t,e,n){return sc(t,e)&&cc(t,n)}function lc(t,e){const n=t.parent.root.document.model.schema,r=t.parent.getAncestors({parentFirst:!0,includeSelf:!0});let i=!1;const o=r.find((t=>!i&&(i=n.isLimit(t),!i&&sc(t,e))));return r.forEach((t=>e.add(t))),o}function cc(t,e){const n=function(t){const e=t.root.document.model.schema;let n=t.parent;for(;n;){if(e.isBlock(n))return n;n=n.parent}}(t);if(!n)return!0;return!e.containsRange(Ql._createOn(n),!0)}function dc(t,e){return!!t&&(!(!e.isCollapsed&&!t.isEmpty)||!e.start.isTouching($l._createAt(t,t.maxOffset))&&cc(t,e))}function hc(t,e){return!!t&&(!(!e.isCollapsed&&!t.isEmpty)||!e.end.isTouching($l._createAt(t,0))&&cc(t,e))}oc.prototype.is=function(t){return"selection"===t||"model:selection"===t};class uc extends(Dr(Ql)){constructor(t,e){super(t,e),mc.call(this)}detach(){this.stopListening()}toRange(){return new Ql(this.start,this.end)}static fromRange(t){return new uc(t.start,t.end)}}function mc(){this.listenTo(this.root.document.model,"applyOperation",((t,e)=>{const n=e[0];n.isDocumentOperation&&gc.call(this,n)}),{priority:"low"})}function gc(t){const e=this.getTransformedByOperation(t),n=Ql._createFromRanges(e),r=!n.isEqual(this),i=function(t,e){switch(e.type){case"insert":return t.containsPosition(e.position);case"move":case"remove":case"reinsert":case"merge":return t.containsPosition(e.sourcePosition)||t.start.isEqual(e.sourcePosition)||t.containsPosition(e.targetPosition);case"split":return t.containsPosition(e.splitPosition)||t.containsPosition(e.insertionPosition)}return!1}(this,t);let o=null;if(r){"$graveyard"==n.root.rootName&&(o="remove"==t.type?t.sourcePosition:t.deletionPosition);const e=this.toRange();this.start=n.start,this.end=n.end,this.fire("change:range",e,{deletionPosition:o})}else i&&this.fire("change:content",this.toRange(),{deletionPosition:o})}uc.prototype.is=function(t){return"liveRange"===t||"model:liveRange"===t||"range"==t||"model:range"===t};const pc="selection:";class fc extends(Dr(Ml)){_selection;constructor(t){super(),this._selection=new bc(t),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(t){return this._selection.containsEntireContent(t)}destroy(){this._selection.destroy()}getAttributeKeys(){return this._selection.getAttributeKeys()}getAttributes(){return this._selection.getAttributes()}getAttribute(t){return this._selection.getAttribute(t)}hasAttribute(t){return this._selection.hasAttribute(t)}refresh(){this._selection.updateMarkers(),this._selection._updateAttributes(!1)}observeMarkers(t){this._selection.observeMarkers(t)}_setFocus(t,e){this._selection.setFocus(t,e)}_setTo(...t){this._selection.setTo(...t)}_setAttribute(t,e){this._selection.setAttribute(t,e)}_removeAttribute(t){this._selection.removeAttribute(t)}_getStoredAttributes(){return this._selection.getStoredAttributes()}_overrideGravity(){return this._selection.overrideGravity()}_restoreGravity(t){this._selection.restoreGravity(t)}static _getStoreAttributeKey(t){return pc+t}static _isStoreAttributeKey(t){return t.startsWith(pc)}}fc.prototype.is=function(t){return"selection"===t||"model:selection"==t||"documentSelection"==t||"model:documentSelection"==t};class bc extends oc{markers=new xo({idProperty:"name"});_model;_document;_attributePriority=new Map;_selectionRestorePosition=null;_hasChangedRange=!1;_overriddenGravityRegister=new Set;_observedMarkers=new Set;constructor(t){super(),this._model=t.model,this._document=t,this.listenTo(this._model,"applyOperation",((t,e)=>{const n=e[0];n.isDocumentOperation&&"marker"!=n.type&&"rename"!=n.type&&"noop"!=n.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",((t,e,n,r)=>{this._updateMarker(e,r)})),this.listenTo(this._document,"change",((t,e)=>{!function(t,e){const n=t.document.differ;for(const r of n.getChanges()){if("insert"!=r.type)continue;const n=r.position.parent;r.length===n.maxOffset&&t.enqueueChange(e,(t=>{const e=Array.from(n.getAttributeKeys()).filter((t=>t.startsWith(pc)));for(const r of e)t.removeAttribute(r,n)}))}}(this._model,e)}))}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 t=0;t{if(this._hasChangedRange=!0,e.root==this._document.graveyard){this._selectionRestorePosition=r.deletionPosition;const t=this._ranges.indexOf(e);this._ranges.splice(t,1),e.detach()}})),e}updateMarkers(){if(!this._observedMarkers.size)return;const t=[];let e=!1;for(const e of this._model.markers){const n=e.name.split(":",1)[0];if(!this._observedMarkers.has(n))continue;const r=e.getRange();for(const n of this.getRanges())r.containsRange(n,!n.isCollapsed)&&t.push(e)}const n=Array.from(this.markers);for(const n of t)this.markers.has(n)||(this.markers.add(n),e=!0);for(const n of Array.from(this.markers))t.includes(n)||(this.markers.remove(n),e=!0);e&&this.fire("change:marker",{oldMarkers:n,directChange:!1})}_updateMarker(t,e){const n=t.name.split(":",1)[0];if(!this._observedMarkers.has(n))return;let r=!1;const i=Array.from(this.markers),o=this.markers.has(t);if(e){let n=!1;for(const t of this.getRanges())if(e.containsRange(t,!t.isCollapsed)){n=!0;break}n&&!o?(this.markers.add(t),r=!0):!n&&o&&(this.markers.remove(t),r=!0)}else o&&(this.markers.remove(t),r=!0);r&&this.fire("change:marker",{oldMarkers:i,directChange:!1})}_updateAttributes(t){const e=So(this._getSurroundingAttributes()),n=So(this.getAttributes());if(t)this._attributePriority=new Map,this._attrs=new Map;else for(const[t,e]of this._attributePriority)"low"==e&&(this._attrs.delete(t),this._attributePriority.delete(t));this._setAttributesTo(e);const r=[];for(const[t,e]of this.getAttributes())n.has(t)&&n.get(t)===e||r.push(t);for(const[t]of n)this.hasAttribute(t)||r.push(t);r.length>0&&this.fire("change:attribute",{attributeKeys:r,directChange:!1})}_setAttribute(t,e,n=!0){const r=n?"normal":"low";if("low"==r&&"normal"==this._attributePriority.get(t))return!1;return super.getAttribute(t)!==e&&(this._attrs.set(t,e),this._attributePriority.set(t,r),!0)}_removeAttribute(t,e=!0){const n=e?"normal":"low";return("low"!=n||"normal"!=this._attributePriority.get(t))&&(this._attributePriority.set(t,n),!!super.hasAttribute(t)&&(this._attrs.delete(t),!0))}_setAttributesTo(t){const e=new Set;for(const[e,n]of this.getAttributes())t.get(e)!==n&&this._removeAttribute(e,!1);for(const[n,r]of t){this._setAttribute(n,r,!1)&&e.add(n)}return e}*getStoredAttributes(){const t=this.getFirstPosition().parent;if(this.isCollapsed&&t.isEmpty)for(const e of t.getAttributeKeys())if(e.startsWith(pc)){const n=e.substr(10);yield[n,t.getAttribute(e)]}}_getSurroundingAttributes(){const t=this.getFirstPosition(),e=this._model.schema;if("$graveyard"==t.root.rootName)return null;let n=null;if(this.isCollapsed){const r=t.textNode?t.textNode:t.nodeBefore,i=t.textNode?t.textNode:t.nodeAfter;if(this.isGravityOverridden||(n=kc(r,e)),n||(n=kc(i,e)),!this.isGravityOverridden&&!n){let t=r;for(;t&&!n;)t=t.previousSibling,n=kc(t,e)}if(!n){let t=i;for(;t&&!n;)t=t.nextSibling,n=kc(t,e)}n||(n=this.getStoredAttributes())}else{const t=this.getFirstRange();for(const r of t){if(r.item.is("element")&&e.isObject(r.item)){n=kc(r.item,e);break}if("text"==r.type){n=r.item.getAttributes();break}}}return n}_fixGraveyardSelection(t){const e=this._model.schema.getNearestSelectionRange(t);e&&this._pushRange(e)}}function kc(t,e){if(!t)return null;if(t instanceof jl||t instanceof Hl)return t.getAttributes();if(!e.isInline(t))return null;if(!e.isObject(t))return[];const n=[];for(const[r,i]of t.getAttributes())e.checkAttribute("$text",r)&&!1!==e.getAttributeProperties(r).copyFromObject&&n.push([r,i]);return n}class wc{_dispatchers;constructor(t){this._dispatchers=t}add(t){for(const e of this._dispatchers)t(e);return this}}class Ac extends wc{elementToElement(t){return this.add(function(t){const e=Ec(t.model),n=Bc(t.view,"container");e.attributes.length&&(e.children=!0);return r=>{r.on(`insert:${e.name}`,vc(n,Pc(e)),{priority:t.converterPriority||"normal"}),(e.children||e.attributes.length)&&r.on("reduceChanges",Ic(e),{priority:"low"})}}(t))}elementToStructure(t){return this.add(function(t){const e=Ec(t.model),n=Bc(t.view,"container");return e.children=!0,r=>{if(r._conversionApi.schema.checkChild(e.name,"$text"))throw new kr("conversion-element-to-structure-disallowed-text",r,{elementName:e.name});var i,o;r.on(`insert:${e.name}`,(i=n,o=Pc(e),(t,e,n)=>{if(!o(e.item,n.consumable,{preflight:!0}))return;const r=new Map;n.writer._registerSlotFactory(function(t,e,n){return(r,i)=>{const o=r.createContainerElement("$slot");let s=null;if("children"===i)s=Array.from(t.getChildren());else{if("function"!=typeof i)throw new kr("conversion-slot-mode-unknown",n.dispatcher,{modeOrFilter:i});s=Array.from(t.getChildren()).filter((t=>i(t)))}return e.set(o,s),o}}(e.item,r,n));const s=i(e.item,n,e);if(n.writer._clearSlotFactory(),!s)return;!function(t,e,n){const r=Array.from(e.values()).flat(),i=new Set(r);if(i.size!=r.length)throw new kr("conversion-slot-filter-overlap",n.dispatcher,{element:t});if(i.size!=t.childCount)throw new kr("conversion-slot-filter-incomplete",n.dispatcher,{element:t})}(e.item,r,n),o(e.item,n.consumable);const a=n.mapper.toViewPosition(e.range.start);n.mapper.bindElements(e.item,s),n.writer.insert(a,s),n.convertAttributes(e.item),function(t,e,n,r){n.mapper.on("modelToViewPosition",s,{priority:"highest"});let i=null,o=null;for([i,o]of e)Vc(t,o,n,r),n.writer.move(n.writer.createRangeIn(i),n.writer.createPositionBefore(i)),n.writer.remove(i);function s(t,e){const n=e.modelPosition.nodeAfter,r=o.indexOf(n);r<0||(e.viewPosition=e.mapper.findPositionIn(i,r))}n.mapper.off("modelToViewPosition",s)}(s,r,n,{reconversion:e.reconversion})}),{priority:t.converterPriority||"normal"}),r.on("reduceChanges",Ic(e),{priority:"low"})}}(t))}attributeToElement(t){return this.add(function(t){t=Ll(t);let e=t.model;"string"==typeof e&&(e={key:e});let n=`attribute:${e.key}`;e.name&&(n+=":"+e.name);if(e.values)for(const n of e.values)t.view[n]=Bc(t.view[n],"attribute");else t.view=Bc(t.view,"attribute");const r=Dc(t);return e=>{e.on(n,Cc(r),{priority:t.converterPriority||"normal"})}}(t))}attributeToAttribute(t){return this.add(function(t){t=Ll(t);let e=t.model;"string"==typeof e&&(e={key:e});let n=`attribute:${e.key}`;e.name&&(n+=":"+e.name);if(e.values)for(const n of e.values)t.view[n]=Sc(t.view[n]);else t.view=Sc(t.view);const r=Dc(t);return e=>{var i;e.on(n,(i=r,(t,e,n)=>{if(!n.consumable.test(e.item,t.name))return;const r=i(e.attributeOldValue,n,e),o=i(e.attributeNewValue,n,e);if(!r&&!o)return;n.consumable.consume(e.item,t.name);const s=n.mapper.toViewElement(e.item),a=n.writer;if(!s)throw new kr("conversion-attribute-to-attribute-on-text",n.dispatcher,e);if(null!==e.attributeOldValue&&r)if("class"==r.key){const t="string"==typeof r.value?r.value.split(/\s+/):r.value;for(const e of t)a.removeClass(e,s)}else if("style"==r.key)if("string"==typeof r.value){const t=new Ls(a.document.stylesProcessor);t.setTo(r.value);for(const[e]of t.getStylesEntries())a.removeStyle(e,s)}else{const t=Object.keys(r.value);for(const e of t)a.removeStyle(e,s)}else a.removeAttribute(r.key,s);if(null!==e.attributeNewValue&&o)if("class"==o.key){const t="string"==typeof o.value?o.value.split(/\s+/):o.value;for(const e of t)a.addClass(e,s)}else if("style"==o.key)if("string"==typeof o.value){const t=new Ls(a.document.stylesProcessor);t.setTo(o.value);for(const[e,n]of t.getStylesEntries())a.setStyle(e,n,s)}else{const t=Object.keys(o.value);for(const e of t)a.setStyle(e,o.value[e],s)}else a.setAttribute(o.key,o.value,s)}),{priority:t.converterPriority||"normal"})}}(t))}markerToElement(t){return this.add(function(t){const e=Bc(t.view,"ui");return n=>{n.on(`addMarker:${t.model}`,yc(e),{priority:t.converterPriority||"normal"}),n.on(`removeMarker:${t.model}`,((t,e,n)=>{const r=n.mapper.markerNameToElements(e.markerName);if(r){for(const t of r)n.mapper.unbindElementFromMarkerName(t,e.markerName),n.writer.clear(n.writer.createRangeOn(t),t);n.writer.clearClonedElementsGroup(e.markerName),t.stop()}}),{priority:t.converterPriority||"normal"})}}(t))}markerToHighlight(t){return this.add(function(t){return e=>{var n;e.on(`addMarker:${t.model}`,(n=t.view,(t,e,r)=>{if(!e.item)return;if(!(e.item instanceof oc||e.item instanceof fc||e.item.is("$textProxy")))return;const i=Tc(n,e,r);if(!i)return;if(!r.consumable.consume(e.item,t.name))return;const o=r.writer,s=_c(o,i),a=o.document.selection;if(e.item instanceof oc||e.item instanceof fc)o.wrap(a.getFirstRange(),s);else{const t=r.mapper.toViewRange(e.range),n=o.wrap(t,s);for(const t of n.getItems())if(t.is("attributeElement")&&t.isSimilar(s)){r.mapper.bindElementToMarker(t,e.markerName);break}}}),{priority:t.converterPriority||"normal"}),e.on(`addMarker:${t.model}`,function(t){return(e,n,r)=>{if(!n.item)return;if(!(n.item instanceof ql))return;const i=Tc(t,n,r);if(!i)return;if(!r.consumable.test(n.item,e.name))return;const o=r.mapper.toViewElement(n.item);if(o&&o.getCustomProperty("addHighlight")){r.consumable.consume(n.item,e.name);for(const t of Ql._createIn(n.item))r.consumable.consume(t.item,e.name);o.getCustomProperty("addHighlight")(o,i,r.writer),r.mapper.bindElementToMarker(o,n.markerName)}}}(t.view),{priority:t.converterPriority||"normal"}),e.on(`removeMarker:${t.model}`,function(t){return(e,n,r)=>{if(n.markerRange.isCollapsed)return;const i=Tc(t,n,r);if(!i)return;const o=_c(r.writer,i),s=r.mapper.markerNameToElements(n.markerName);if(s){for(const t of s)if(r.mapper.unbindElementFromMarkerName(t,n.markerName),t.is("attributeElement"))r.writer.unwrap(r.writer.createRangeOn(t),o);else{t.getCustomProperty("removeHighlight")(t,i.id,r.writer)}r.writer.clearClonedElementsGroup(n.markerName),e.stop()}}}(t.view),{priority:t.converterPriority||"normal"})}}(t))}markerToData(t){return this.add(function(t){t=Ll(t);const e=t.model;let n=t.view;n||(n=n=>({group:e,name:n.substr(t.model.length+1)}));return r=>{var i;r.on(`addMarker:${e}`,(i=n,(t,e,n)=>{const r=i(e.markerName,n);if(!r)return;const o=e.markerRange;n.consumable.consume(o,t.name)&&(xc(o,!1,n,e,r),xc(o,!0,n,e,r),t.stop())}),{priority:t.converterPriority||"normal"}),r.on(`removeMarker:${e}`,function(t){return(e,n,r)=>{const i=t(n.markerName,r);if(!i)return;const o=r.mapper.markerNameToElements(n.markerName);if(o){for(const t of o)r.mapper.unbindElementFromMarkerName(t,n.markerName),t.is("containerElement")?(s(`data-${i.group}-start-before`,t),s(`data-${i.group}-start-after`,t),s(`data-${i.group}-end-before`,t),s(`data-${i.group}-end-after`,t)):r.writer.clear(r.writer.createRangeOn(t),t);r.writer.clearClonedElementsGroup(n.markerName),e.stop()}function s(t,e){if(e.hasAttribute(t)){const n=new Set(e.getAttribute(t).split(","));n.delete(i.name),0==n.size?r.writer.removeAttribute(t,e):r.writer.setAttribute(t,Array.from(n).join(","),e)}}}}(n),{priority:t.converterPriority||"normal"})}}(t))}}function _c(t,e){const n=t.createAttributeElement("span",e.attributes);return e.classes&&n._addClass(e.classes),"number"==typeof e.priority&&(n._priority=e.priority),n._id=e.id,n}function Cc(t){return(e,n,r)=>{if(!r.consumable.test(n.item,e.name))return;const i=t(n.attributeOldValue,r,n),o=t(n.attributeNewValue,r,n);if(!i&&!o)return;r.consumable.consume(n.item,e.name);const s=r.writer,a=s.document.selection;if(n.item instanceof oc||n.item instanceof fc)s.wrap(a.getFirstRange(),o);else{let t=r.mapper.toViewRange(n.range);null!==n.attributeOldValue&&i&&(t=s.unwrap(t,i)),null!==n.attributeNewValue&&o&&s.wrap(t,o)}}}function vc(t,e=Rc){return(n,r,i)=>{if(!e(r.item,i.consumable,{preflight:!0}))return;const o=t(r.item,i,r);if(!o)return;e(r.item,i.consumable);const s=i.mapper.toViewPosition(r.range.start);i.mapper.bindElements(r.item,o),i.writer.insert(s,o),i.convertAttributes(r.item),Vc(o,r.item.getChildren(),i,{reconversion:r.reconversion})}}function yc(t){return(e,n,r)=>{n.isOpening=!0;const i=t(n,r);n.isOpening=!1;const o=t(n,r);if(!i||!o)return;const s=n.markerRange;if(s.isCollapsed&&!r.consumable.consume(s,e.name))return;for(const t of s)if(!r.consumable.consume(t.item,e.name))return;const a=r.mapper,l=r.writer;l.insert(a.toViewPosition(s.start),i),r.mapper.bindElementToMarker(i,n.markerName),s.isCollapsed||(l.insert(a.toViewPosition(s.end),o),r.mapper.bindElementToMarker(o,n.markerName)),e.stop()}}function xc(t,e,n,r,i){const o=e?t.start:t.end,s=o.nodeAfter&&o.nodeAfter.is("element")?o.nodeAfter:null,a=o.nodeBefore&&o.nodeBefore.is("element")?o.nodeBefore:null;if(s||a){let t,o;e&&s||!e&&!a?(t=s,o=!0):(t=a,o=!1);const l=n.mapper.toViewElement(t);if(l)return void function(t,e,n,r,i,o){const s=`data-${o.group}-${e?"start":"end"}-${n?"before":"after"}`,a=t.hasAttribute(s)?t.getAttribute(s).split(","):[];a.unshift(o.name),r.writer.setAttribute(s,a.join(","),t),r.mapper.bindElementToMarker(t,i.markerName)}(l,e,o,n,r,i)}!function(t,e,n,r,i){const o=`${i.group}-${e?"start":"end"}`,s=i.name?{name:i.name}:null,a=n.writer.createUIElement(o,s);n.writer.insert(t,a),n.mapper.bindElementToMarker(a,r.markerName)}(n.mapper.toViewPosition(o),e,n,r,i)}function Ec(t){return"string"==typeof t&&(t={name:t}),{name:t.name,attributes:t.attributes?eo(t.attributes):[],children:!!t.children}}function Bc(t,e){return"function"==typeof t?t:(n,r)=>function(t,e,n){"string"==typeof t&&(t={name:t});let r;const i=e.writer,o=Object.assign({},t.attributes);if("container"==n)r=i.createContainerElement(t.name,o);else if("attribute"==n){const e={priority:t.priority||aa.DEFAULT_PRIORITY};r=i.createAttributeElement(t.name,o,e)}else r=i.createUIElement(t.name,o);if(t.styles){const e=Object.keys(t.styles);for(const n of e)i.setStyle(n,t.styles[n],r)}if(t.classes){const e=t.classes;if("string"==typeof e)i.addClass(e,r);else for(const t of e)i.addClass(t,r)}return r}(t,r,e)}function Dc(t){return t.model.values?(e,n,r)=>{const i=t.view[e];return i?i(e,n,r):null}:t.view}function Sc(t){return"string"==typeof t?e=>({key:t,value:e}):"object"==typeof t?t.value?()=>t:e=>({key:t.key,value:e}):t}function Tc(t,e,n){const r="function"==typeof t?t(e,n):t;return r?(r.priority||(r.priority=10),r.id||(r.id=e.markerName),r):null}function Ic(t){const e=function(t){return(e,n)=>{if(!e.is("element",t.name))return!1;if("attribute"==n.type){if(t.attributes.includes(n.attributeKey))return!0}else if(t.children)return!0;return!1}}(t);return(t,n)=>{const r=[];n.reconvertedElements||(n.reconvertedElements=new Set);for(const t of n.changes){const i="attribute"==t.type?t.range.start.nodeAfter:t.position.parent;if(i&&e(i,t)){if(!n.reconvertedElements.has(i)){n.reconvertedElements.add(i);const t=$l._createBefore(i);let e=r.length;for(let n=r.length-1;n>=0;n--){const i=r[n],o=("attribute"==i.type?i.range.start:i.position).compareWith(t);if("before"==o||"remove"==i.type&&"same"==o)break;e=n}r.splice(e,0,{type:"remove",name:i.name,position:t,length:1},{type:"reinsert",name:i.name,position:t,length:1})}}else r.push(t)}n.changes=r}}function Pc(t){return(e,n,r={})=>{const i=["insert"];for(const n of t.attributes)e.hasAttribute(n)&&i.push(`attribute:${n}`);return!!i.every((t=>n.test(e,t)))&&(r.preflight||i.forEach((t=>n.consume(e,t))),!0)}}function Vc(t,e,n,r){for(const i of e)Fc(t.root,i,n,r)||n.convertItem(i)}function Fc(t,e,n,r){const{writer:i,mapper:o}=n;if(!r.reconversion)return!1;const s=o.toViewElement(e);return!(!s||s.root==t)&&(!!n.canReuseView(s)&&(i.move(i.createRangeOn(s),o.toViewPosition($l._createBefore(e))),!0))}function Rc(t,e,{preflight:n}={}){return n?e.test(t,"insert"):e.consume(t,"insert")}function Lc(t){const{schema:e,document:n}=t.model;for(const r of n.getRoots())if(r.isEmpty&&!e.checkChild(r,"$text")&&e.checkChild(r,"paragraph"))return t.insertElement("paragraph",r),!0;return!1}function zc(t,e,n){const r=n.createContext(t);return!!n.checkChild(r,"paragraph")&&!!n.checkChild(r.push("paragraph"),e)}function Mc(t,e){const n=e.createElement("paragraph");return e.insert(n,t),e.createPositionAt(n,0)}class Nc extends wc{elementToElement(t){return this.add(Oc(t))}elementToAttribute(t){return this.add(function(t){t=Ll(t),qc(t);const e=Uc(t,!1),n=Hc(t.view),r=n?`element:${n}`:"element";return n=>{n.on(r,e,{priority:t.converterPriority||"low"})}}(t))}attributeToAttribute(t){return this.add(function(t){t=Ll(t);let e=null;("string"==typeof t.view||t.view.key)&&(e=function(t){"string"==typeof t.view&&(t.view={key:t.view});const e=t.view.key,n=void 0===t.view.value?/[\s\S]*/:t.view.value;let r;if("class"==e||"style"==e){const t="class"==e?"classes":"styles";r={[t]:n}}else r={attributes:{[e]:n}};t.view.name&&(r.name=t.view.name);return t.view=r,e}(t));qc(t,e);const n=Uc(t,!0);return e=>{e.on("element",n,{priority:t.converterPriority||"low"})}}(t))}elementToMarker(t){return this.add(function(t){const e=function(t){return(e,n)=>{const r="string"==typeof t?t:t(e,n);return n.writer.createElement("$marker",{"data-name":r})}}(t.model);return Oc({...t,model:e})}(t))}dataToMarker(t){return this.add(function(t){t=Ll(t),t.model||(t.model=e=>e?t.view+":"+e:t.view);const e={view:t.view,model:t.model},n=jc(Wc(e,"start")),r=jc(Wc(e,"end"));return i=>{i.on(`element:${t.view}-start`,n,{priority:t.converterPriority||"normal"}),i.on(`element:${t.view}-end`,r,{priority:t.converterPriority||"normal"});const o=fr.low,s=fr.highest,a=fr.get(t.converterPriority)/s;i.on("element",function(t){return(e,n,r)=>{const i=`data-${t.view}`;function o(e,i){for(const o of i){const i=t.model(o,r),s=r.writer.createElement("$marker",{"data-name":i});r.writer.insert(s,e),n.modelCursor.isEqual(e)?n.modelCursor=n.modelCursor.getShiftedBy(1):n.modelCursor=n.modelCursor._getTransformedByInsertion(e,1),n.modelRange=n.modelRange._getTransformedByInsertion(e,1)[0]}}(r.consumable.test(n.viewItem,{attributes:i+"-end-after"})||r.consumable.test(n.viewItem,{attributes:i+"-start-after"})||r.consumable.test(n.viewItem,{attributes:i+"-end-before"})||r.consumable.test(n.viewItem,{attributes:i+"-start-before"}))&&(n.modelRange||Object.assign(n,r.convertChildren(n.viewItem,n.modelCursor)),r.consumable.consume(n.viewItem,{attributes:i+"-end-after"})&&o(n.modelRange.end,n.viewItem.getAttribute(i+"-end-after").split(",")),r.consumable.consume(n.viewItem,{attributes:i+"-start-after"})&&o(n.modelRange.end,n.viewItem.getAttribute(i+"-start-after").split(",")),r.consumable.consume(n.viewItem,{attributes:i+"-end-before"})&&o(n.modelRange.start,n.viewItem.getAttribute(i+"-end-before").split(",")),r.consumable.consume(n.viewItem,{attributes:i+"-start-before"})&&o(n.modelRange.start,n.viewItem.getAttribute(i+"-start-before").split(",")))}}(e),{priority:o+a})}}(t))}}function Oc(t){const e=jc(t=Ll(t)),n=Hc(t.view),r=n?`element:${n}`:"element";return n=>{n.on(r,e,{priority:t.converterPriority||"normal"})}}function Hc(t){return"string"==typeof t?t:"object"==typeof t&&"string"==typeof t.name?t.name:null}function jc(t){const e=new as(t.view);return(n,r,i)=>{const o=e.match(r.viewItem);if(!o)return;const s=o.match;if(s.name=!0,!i.consumable.test(r.viewItem,s))return;const a=function(t,e,n){return t instanceof Function?t(e,n):n.writer.createElement(t)}(t.model,r.viewItem,i);a&&i.safeInsert(a,r.modelCursor)&&(i.consumable.consume(r.viewItem,s),i.convertChildren(r.viewItem,a),i.updateConversionResult(a,r))}}function qc(t,e=null){const n=null===e||(t=>t.getAttribute(e)),r="object"!=typeof t.model?t.model:t.model.key,i="object"!=typeof t.model||void 0===t.model.value?n:t.model.value;t.model={key:r,value:i}}function Uc(t,e){const n=new as(t.view);return(r,i,o)=>{if(!i.modelRange&&e)return;const s=n.match(i.viewItem);if(!s)return;if(!function(t,e){const n="function"==typeof t?t(e):t;if("object"==typeof n&&!Hc(n))return!1;return!n.classes&&!n.attributes&&!n.styles}(t.view,i.viewItem)?delete s.match.name:s.match.name=!0,!o.consumable.test(i.viewItem,s.match))return;const a=t.model.key,l="function"==typeof t.model.value?t.model.value(i.viewItem,o):t.model.value;if(null===l)return;i.modelRange||Object.assign(i,o.convertChildren(i.viewItem,i.modelCursor));const c=function(t,e,n,r){let i=!1;for(const o of Array.from(t.getItems({shallow:n})))r.schema.checkAttribute(o,e.key)&&(i=!0,o.hasAttribute(e.key)||r.writer.setAttribute(e.key,e.value,o));return i}(i.modelRange,{key:a,value:l},e,o);c&&(o.consumable.test(i.viewItem,{name:!0})&&(s.match.name=!0),o.consumable.consume(i.viewItem,s.match))}}function Wc(t,e){return{view:`${t.view}-${e}`,model:(e,n)=>{const r=e.getAttribute("name"),i=t.model(r,n);return n.writer.createElement("$marker",{"data-name":i})}}}function $c(t){t.document.registerPostFixer((e=>function(t,e){const n=e.document.selection,r=e.schema,i=[];let o=!1;for(const t of n.getRanges()){const e=Gc(t,r);e&&!e.isEqual(t)?(i.push(e),o=!0):i.push(t)}o&&t.setSelection(function(t){const e=[...t],n=new Set;let r=1;for(;r!n.has(e)))}(i),{backward:n.isBackward});return!1}(e,t)))}function Gc(t,e){return t.isCollapsed?function(t,e){const n=t.start,r=e.getNearestSelectionRange(n);if(!r){const t=n.getAncestors().reverse().find((t=>e.isObject(t)));return t?Ql._createOn(t):null}if(!r.isCollapsed)return r;const i=r.start;if(n.isEqual(i))return null;return new Ql(i)}(t,e):function(t,e){const{start:n,end:r}=t,i=e.checkChild(n,"$text"),o=e.checkChild(r,"$text"),s=e.getLimitElement(n),a=e.getLimitElement(r);if(s===a){if(i&&o)return null;if(function(t,e,n){const r=t.nodeAfter&&!n.isLimit(t.nodeAfter)||n.checkChild(t,"$text"),i=e.nodeBefore&&!n.isLimit(e.nodeBefore)||n.checkChild(e,"$text");return r||i}(n,r,e)){const t=n.nodeAfter&&e.isSelectable(n.nodeAfter)?null:e.getNearestSelectionRange(n,"forward"),i=r.nodeBefore&&e.isSelectable(r.nodeBefore)?null:e.getNearestSelectionRange(r,"backward"),o=t?t.start:n,s=i?i.end:r;return new Ql(o,s)}}const l=s&&!s.is("rootElement"),c=a&&!a.is("rootElement");if(l||c){const t=n.nodeAfter&&r.nodeBefore&&n.nodeAfter.parent===r.nodeBefore.parent,i=l&&(!t||!Zc(n.nodeAfter,e)),o=c&&(!t||!Zc(r.nodeBefore,e));let d=n,h=r;return i&&(d=$l._createBefore(Kc(s,e))),o&&(h=$l._createAfter(Kc(a,e))),new Ql(d,h)}return null}(t,e)}function Kc(t,e){let n=t,r=n;for(;e.isLimit(r)&&r.parent;)n=r,r=r.parent;return n}function Zc(t,e){return t&&e.isSelectable(t)}class Yc extends(jr()){model;view;mapper;downcastDispatcher;constructor(t,e){super(),this.model=t,this.view=new zl(e),this.mapper=new Xl,this.downcastDispatcher=new nc({mapper:this.mapper,schema:t.schema});const n=this.model.document,r=n.selection,i=this.model.markers;var o,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(n,"change",(()=>{this.view.change((t=>{this.downcastDispatcher.convertChanges(n.differ,i,t),this.downcastDispatcher.convertSelection(r,i,t)}))}),{priority:"low"}),this.listenTo(this.view.document,"selectionChange",function(t,e){return(n,r)=>{const i=r.newSelection,o=[];for(const t of i.getRanges())o.push(e.toModelRange(t));const s=t.createSelection(o,{backward:i.isBackward});s.isEqual(t.document.selection)||t.change((t=>{t.setSelection(s)}))}}(this.model,this.mapper)),this.listenTo(this.view.document,"beforeinput",(o=this.mapper,s=this.model.schema,a=this.view,(t,e)=>{if(!a.document.isComposing||Xn.isAndroid)for(let t=0;t{if(!n.consumable.consume(e.item,t.name))return;const r=n.writer,i=n.mapper.toViewPosition(e.range.start),o=r.createText(e.item.data);r.insert(i,o)}),{priority:"lowest"}),this.downcastDispatcher.on("insert",((t,e,n)=>{n.convertAttributes(e.item),e.reconversion||!e.item.is("element")||e.item.isEmpty||n.convertChildren(e.item)}),{priority:"lowest"}),this.downcastDispatcher.on("remove",((t,e,n)=>{const r=n.mapper.toViewPosition(e.position),i=e.position.getShiftedBy(e.length),o=n.mapper.toViewPosition(i,{isPhantom:!0}),s=n.writer.createRange(r,o),a=n.writer.remove(s.getTrimmed());for(const t of n.writer.createRangeIn(a).getItems())n.mapper.unbindViewElement(t,{defer:!0})}),{priority:"low"}),this.downcastDispatcher.on("cleanSelection",((t,e,n)=>{const r=n.writer,i=r.document.selection;for(const t of i.getRanges())t.isCollapsed&&t.end.parent.isAttached()&&n.writer.mergeAttributes(t.start);r.setSelection(null)})),this.downcastDispatcher.on("selection",((t,e,n)=>{const r=e.selection;if(r.isCollapsed)return;if(!n.consumable.consume(r,"selection"))return;const i=[];for(const t of r.getRanges())i.push(n.mapper.toViewRange(t));n.writer.setSelection(i,{backward:r.isBackward})}),{priority:"low"}),this.downcastDispatcher.on("selection",((t,e,n)=>{const r=e.selection;if(!r.isCollapsed)return;if(!n.consumable.consume(r,"selection"))return;const i=n.writer,o=r.getFirstPosition(),s=n.mapper.toViewPosition(o),a=i.breakAttributes(s);i.setSelection(a)}),{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using((t=>{if("$graveyard"==t.rootName)return null;const e=new $s(this.view.document,t.name);return e.rootName=t.rootName,this.mapper.bindElements(t,e),e}))}destroy(){this.view.destroy(),this.stopListening()}reconvertMarker(t){const e="string"==typeof t?t:t.name,n=this.model.markers.get(e);if(!n)throw new kr("editingcontroller-reconvertmarker-marker-not-exist",this,{markerName:e});this.model.change((()=>{this.model.markers._refresh(n)}))}reconvertItem(t){this.model.change((()=>{this.model.document.differ._refreshItem(t)}))}}class Jc{_consumables=new Map;add(t,e){let n;t.is("$text")||t.is("documentFragment")?this._consumables.set(t,!0):(this._consumables.has(t)?n=this._consumables.get(t):(n=new Xc(t),this._consumables.set(t,n)),n.add(e))}test(t,e){const n=this._consumables.get(t);return void 0===n?null:t.is("$text")||t.is("documentFragment")?n:n.test(e)}consume(t,e){return!!this.test(t,e)&&(t.is("$text")||t.is("documentFragment")?this._consumables.set(t,!1):this._consumables.get(t).consume(e),!0)}revert(t,e){const n=this._consumables.get(t);void 0!==n&&(t.is("$text")||t.is("documentFragment")?this._consumables.set(t,!0):n.revert(e))}static consumablesFromElement(t){const e={element:t,name:!0,attributes:[],classes:[],styles:[]},n=t.getAttributeKeys();for(const t of n)"style"!=t&&"class"!=t&&e.attributes.push(t);const r=t.getClassNames();for(const t of r)e.classes.push(t);const i=t.getStyleNames();for(const t of i)e.styles.push(t);return e}static createFrom(t,e){if(e||(e=new Jc),t.is("$text"))return e.add(t),e;t.is("element")&&e.add(t,Jc.consumablesFromElement(t)),t.is("documentFragment")&&e.add(t);for(const n of t.getChildren())e=Jc.createFrom(n,e);return e}}const Qc=["attributes","classes","styles"];class Xc{element;_canConsumeName;_consumables;constructor(t){this.element=t,this._canConsumeName=null,this._consumables={attributes:new Map,styles:new Map,classes:new Map}}add(t){t.name&&(this._canConsumeName=!0);for(const e of Qc)e in t&&this._add(e,t[e])}test(t){if(t.name&&!this._canConsumeName)return this._canConsumeName;for(const e of Qc)if(e in t){const n=this._test(e,t[e]);if(!0!==n)return n}return!0}consume(t){t.name&&(this._canConsumeName=!1);for(const e of Qc)e in t&&this._consume(e,t[e])}revert(t){t.name&&(this._canConsumeName=!0);for(const e of Qc)e in t&&this._revert(e,t[e])}_add(t,e){const n=eo(e),r=this._consumables[t];for(const e of n){if("attributes"===t&&("class"===e||"style"===e))throw new kr("viewconsumable-invalid-attribute",this);if(r.set(e,!0),"styles"===t)for(const t of this.element.document.stylesProcessor.getRelatedStyles(e))r.set(t,!0)}}_test(t,e){const n=eo(e),r=this._consumables[t];for(const e of n)if("attributes"!==t||"class"!==e&&"style"!==e){const t=r.get(e);if(void 0===t)return null;if(!t)return!1}else{const t="class"==e?"classes":"styles",n=this._test(t,[...this._consumables[t].keys()]);if(!0!==n)return n}return!0}_consume(t,e){const n=eo(e),r=this._consumables[t];for(const e of n)if("attributes"!==t||"class"!==e&&"style"!==e){if(r.set(e,!1),"styles"==t)for(const t of this.element.document.stylesProcessor.getRelatedStyles(e))r.set(t,!1)}else{const t="class"==e?"classes":"styles";this._consume(t,[...this._consumables[t].keys()])}}_revert(t,e){const n=eo(e),r=this._consumables[t];for(const e of n)if("attributes"!==t||"class"!==e&&"style"!==e){!1===r.get(e)&&r.set(e,!0)}else{const t="class"==e?"classes":"styles";this._revert(t,[...this._consumables[t].keys()])}}}class td extends(jr()){_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",((t,e)=>{e[0]=new ed(e[0])}),{priority:"highest"}),this.on("checkChild",((t,e)=>{e[0]=new ed(e[0]),e[1]=this.getDefinition(e[1])}),{priority:"highest"})}register(t,e){if(this._sourceDefinitions[t])throw new kr("schema-cannot-register-item-twice",this,{itemName:t});this._sourceDefinitions[t]=[Object.assign({},e)],this._clearCache()}extend(t,e){if(!this._sourceDefinitions[t])throw new kr("schema-cannot-extend-missing-item",this,{itemName:t});this._sourceDefinitions[t].push(Object.assign({},e)),this._clearCache()}getDefinitions(){return this._compiledDefinitions||this._compile(),this._compiledDefinitions}getDefinition(t){let e;return e="string"==typeof t?t:"is"in t&&(t.is("$text")||t.is("$textProxy"))?"$text":t.name,this.getDefinitions()[e]}isRegistered(t){return!!this.getDefinition(t)}isBlock(t){const e=this.getDefinition(t);return!(!e||!e.isBlock)}isLimit(t){const e=this.getDefinition(t);return!!e&&!(!e.isLimit&&!e.isObject)}isObject(t){const e=this.getDefinition(t);return!!e&&!!(e.isObject||e.isLimit&&e.isSelectable&&e.isContent)}isInline(t){const e=this.getDefinition(t);return!(!e||!e.isInline)}isSelectable(t){const e=this.getDefinition(t);return!!e&&!(!e.isSelectable&&!e.isObject)}isContent(t){const e=this.getDefinition(t);return!!e&&!(!e.isContent&&!e.isObject)}checkChild(t,e){return!!e&&this._checkContextMatch(t,e)}checkAttribute(t,e){const n=this.getDefinition(t.last);if(!n)return!1;const r=this._evaluateAttributeChecks(t,e);return void 0!==r?r:n.allowAttributes.includes(e)}checkMerge(t,e){if(t instanceof $l){const e=t.nodeBefore,n=t.nodeAfter;if(!(e instanceof ql))throw new kr("schema-check-merge-no-element-before",this);if(!(n instanceof ql))throw new kr("schema-check-merge-no-element-after",this);return this.checkMerge(e,n)}if(this.isLimit(t)||this.isLimit(e))return!1;for(const n of e.getChildren())if(!this.checkChild(t,n))return!1;return!0}addChildCheck(t,e){const n=void 0!==e?e:this._genericCheckSymbol,r=this._customChildChecks.get(n)||[];r.push(t),this._customChildChecks.set(n,r)}addAttributeCheck(t,e){const n=void 0!==e?e:this._genericCheckSymbol,r=this._customAttributeChecks.get(n)||[];r.push(t),this._customAttributeChecks.set(n,r)}setAttributeProperties(t,e){this._attributeProperties[t]=Object.assign(this.getAttributeProperties(t),e)}getAttributeProperties(t){return this._attributeProperties[t]||Object.create(null)}getLimitElement(t){let e;if(t instanceof $l)e=t.parent;else{e=(t instanceof Ql?[t]:Array.from(t.getRanges())).reduce(((t,e)=>{const n=e.getCommonAncestor();return t?t.getCommonAncestor(n,{includeSelf:!0}):n}),null)}for(;!this.isLimit(e)&&e.parent;)e=e.parent;return e}checkAttributeInSelection(t,e){if(t.isCollapsed){const n=[...t.getFirstPosition().getAncestors(),new Hl("",t.getAttributes())];return this.checkAttribute(n,e)}{const n=t.getRanges();for(const t of n)for(const n of t)if(this.checkAttribute(n.item,e))return!0}return!1}*getValidRanges(t,e){t=function*(t){for(const e of t)yield*e.getMinimalFlatRanges()}(t);for(const n of t)yield*this._getValidRangesForRange(n,e)}getNearestSelectionRange(t,e="both"){if("$graveyard"==t.root.rootName)return null;if(this.checkChild(t,"$text"))return new Ql(t);let n,r;const i=t.getAncestors().reverse().find((t=>this.isLimit(t)))||t.root;"both"!=e&&"backward"!=e||(n=new Ul({boundaries:Ql._createIn(i),startPosition:t,direction:"backward"})),"both"!=e&&"forward"!=e||(r=new Ul({boundaries:Ql._createIn(i),startPosition:t}));for(const t of function*(t,e){let n=!1;for(;!n;){if(n=!0,t){const e=t.next();e.done||(n=!1,yield{walker:t,value:e.value})}if(e){const t=e.next();t.done||(n=!1,yield{walker:e,value:t.value})}}}(n,r)){const e=t.walker==n?"elementEnd":"elementStart",r=t.value;if(r.type==e&&this.isObject(r.item))return Ql._createOn(r.item);if(this.checkChild(r.nextPosition,"$text"))return new Ql(r.nextPosition)}return null}findAllowedParent(t,e){let n=t.parent;for(;n;){if(this.checkChild(n,e))return n;if(this.isLimit(n))return null;n=n.parent}return null}setAllowedAttributes(t,e,n){const r=n.model;for(const[i,o]of Object.entries(e))r.schema.checkAttribute(t,i)&&n.setAttribute(i,o,t)}removeDisallowedAttributes(t,e){for(const n of t)if(n.is("$text"))gd(this,n,e);else{const t=Ql._createIn(n).getPositions();for(const n of t){gd(this,n.nodeBefore||n.parent,e)}}}getAttributesWithProperty(t,e,n){const r={};for(const[i,o]of t.getAttributes()){const t=this.getAttributeProperties(i);void 0!==t[e]&&(void 0!==n&&n!==t[e]||(r[i]=o))}return r}createContext(t){return new ed(t)}_clearCache(){this._compiledDefinitions=null}_compile(){const t={},e=this._sourceDefinitions,n=Object.keys(e);for(const r of n)t[r]=nd(e[r],r);const r=Object.values(t);for(const e of r)rd(t,e),id(t,e),od(t,e),sd(t,e);for(const e of r)ad(t,e);for(const e of r)ld(t,e);for(const e of r)cd(t,e);for(const e of r)dd(t,e);for(const e of r)hd(t,e);this._compiledDefinitions=function(t){const e={};for(const n of Object.values(t))e[n.name]={name:n.name,isBlock:!!n.isBlock,isContent:!!n.isContent,isInline:!!n.isInline,isLimit:!!n.isLimit,isObject:!!n.isObject,isSelectable:!!n.isSelectable,allowIn:Array.from(n.allowIn).filter((e=>!!t[e])),allowChildren:Array.from(n.allowChildren).filter((e=>!!t[e])),allowAttributes:Array.from(n.allowAttributes)};return e}(t)}_checkContextMatch(t,e){const n=t.last;let r=this._evaluateChildChecks(t,e);if(r=void 0!==r?r:e.allowIn.includes(n.name),!r)return!1;const i=this.getDefinition(n),o=t.trimLast();return!!i&&(0==o.length||this._checkContextMatch(o,i))}_evaluateChildChecks(t,e){const n=this._customChildChecks.get(this._genericCheckSymbol)||[],r=this._customChildChecks.get(e.name)||[];for(const i of[...n,...r]){const n=i(t,e);if(void 0!==n)return n}}_evaluateAttributeChecks(t,e){const n=this._customAttributeChecks.get(this._genericCheckSymbol)||[],r=this._customAttributeChecks.get(e)||[];for(const i of[...n,...r]){const n=i(t,e);if(void 0!==n)return n}}*_getValidRangesForRange(t,e){let n=t.start,r=t.start;for(const i of t.getItems({shallow:!0}))i.is("element")&&(yield*this._getValidRangesForRange(Ql._createIn(i),e)),this.checkAttribute(i,e)||(n.isEqual(r)||(yield new Ql(n,r)),n=$l._createAfter(i)),r=$l._createAfter(i);n.isEqual(r)||(yield new Ql(n,r))}findOptimalInsertionRange(t,e){const n=t.getSelectedElement();if(n&&this.isObject(n)&&!this.isInline(n))return"before"==e||"after"==e?new Ql($l._createAt(n,e)):Ql._createOn(n);const r=Eo(t.getSelectedBlocks());if(!r)return new Ql(t.focus);if(r.isEmpty)return new Ql($l._createAt(r,0));const i=$l._createAfter(r);return t.focus.isTouching(i)?new Ql(i):new Ql($l._createBefore(r))}}class ed{_items;constructor(t){if(t instanceof ed)return t;let e;e="string"==typeof t?[t]:Array.isArray(t)?t:t.getAncestors({includeSelf:!0}),this._items=e.map(md)}get length(){return this._items.length}get last(){return this._items[this._items.length-1]}[Symbol.iterator](){return this._items[Symbol.iterator]()}push(t){const e=new ed([t]);return e._items=[...this._items,...e._items],e}trimLast(){const t=new ed([]);return t._items=this._items.slice(0,-1),t}getItem(t){return this._items[t]}*getNames(){yield*this._items.map((t=>t.name))}endsWith(t){return Array.from(this.getNames()).join(" ").endsWith(t)}startsWith(t){return Array.from(this.getNames()).join(" ").startsWith(t)}}function nd(t,e){const n={name:e,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(t,e){for(const n of t){const t=Object.keys(n).filter((t=>t.startsWith("is")));for(const r of t)e[r]=!!n[r]}}(t,n),ud(t,n,"allowIn"),ud(t,n,"allowChildren"),ud(t,n,"disallowIn"),ud(t,n,"disallowChildren"),ud(t,n,"allowContentOf"),ud(t,n,"allowWhere"),ud(t,n,"allowAttributes"),ud(t,n,"disallowAttributes"),ud(t,n,"allowAttributesOf"),ud(t,n,"inheritTypesFrom"),function(t,e){for(const n of t){const t=n.inheritAllFrom;t&&(e.allowContentOf.add(t),e.allowWhere.add(t),e.allowAttributesOf.add(t),e.inheritTypesFrom.add(t))}}(t,n),n}function rd(t,e){for(const n of e.allowIn){const r=t[n];r?r.allowChildren.add(e.name):e.allowIn.delete(n)}}function id(t,e){for(const n of e.allowChildren){const r=t[n];r?r.allowIn.add(e.name):e.allowChildren.delete(n)}}function od(t,e){for(const n of e.disallowIn){const r=t[n];r?r.disallowChildren.add(e.name):e.disallowIn.delete(n)}}function sd(t,e){for(const n of e.disallowChildren){const r=t[n];r?r.disallowIn.add(e.name):e.disallowChildren.delete(n)}}function ad(t,e){for(const t of e.disallowChildren)e.allowChildren.delete(t);for(const t of e.disallowIn)e.allowIn.delete(t);for(const t of e.disallowAttributes)e.allowAttributes.delete(t)}function ld(t,e){for(const n of e.allowContentOf){const r=t[n];r&&(r.disallowChildren.forEach((n=>{e.allowChildren.has(n)||(e.disallowChildren.add(n),t[n].disallowIn.add(e.name))})),r.allowChildren.forEach((n=>{e.disallowChildren.has(n)||(e.allowChildren.add(n),t[n].allowIn.add(e.name))})))}}function cd(t,e){for(const n of e.allowWhere){const r=t[n];r&&(r.disallowIn.forEach((n=>{e.allowIn.has(n)||(e.disallowIn.add(n),t[n].disallowChildren.add(e.name))})),r.allowIn.forEach((n=>{e.disallowIn.has(n)||(e.allowIn.add(n),t[n].allowChildren.add(e.name))})))}}function dd(t,e){for(const n of e.allowAttributesOf){const r=t[n];if(!r)return;r.allowAttributes.forEach((t=>{e.disallowAttributes.has(t)||e.allowAttributes.add(t)}))}}function hd(t,e){for(const n of e.inheritTypesFrom){const r=t[n];if(r){const t=Object.keys(r).filter((t=>t.startsWith("is")));for(const n of t)n in e||(e[n]=r[n])}}}function ud(t,e,n){for(const r of t){let t=r[n];"string"==typeof t&&(t=[t]),Array.isArray(t)&&t.forEach((t=>e[n].add(t)))}}function md(t){return"string"==typeof t||t.is("documentFragment")?{name:"string"==typeof t?t:"$documentFragment",*getAttributeKeys(){},getAttribute(){}}:{name:t.is("element")?t.name:"$text",*getAttributeKeys(){yield*t.getAttributeKeys()},getAttribute:e=>t.getAttribute(e)}}function gd(t,e,n){for(const r of e.getAttributeKeys())t.checkAttribute(e,r)||n.removeAttribute(r,e)}class pd extends(Dr()){conversionApi;_splitParts=new Map;_cursorParents=new Map;_modelCursor=null;_emptyElementsToKeep=new Set;constructor(t){super(),this.conversionApi={...t,consumable:null,writer:null,store:null,convertItem:(t,e)=>this._convertItem(t,e),convertChildren:(t,e)=>this._convertChildren(t,e),safeInsert:(t,e)=>this._safeInsert(t,e),updateConversionResult:(t,e)=>this._updateConversionResult(t,e),splitToAllowedParent:(t,e)=>this._splitToAllowedParent(t,e),getSplitParts:t=>this._getSplitParts(t),keepEmptyElement:t=>this._keepEmptyElement(t)}}convert(t,e,n=["$root"]){this.fire("viewCleanup",t),this._modelCursor=function(t,e){let n;for(const r of new ed(t)){const t={};for(const e of r.getAttributeKeys())t[e]=r.getAttribute(e);const i=e.createElement(r.name,t);n&&e.insert(i,n),n=$l._createAt(i,0)}return n}(n,e),this.conversionApi.writer=e,this.conversionApi.consumable=Jc.createFrom(t),this.conversionApi.store={};const{modelRange:r}=this._convertItem(t,this._modelCursor),i=e.createDocumentFragment();if(r){this._removeEmptyElements();for(const t of Array.from(this._modelCursor.parent.getChildren()))e.append(t,i);i.markers=function(t,e){const n=new Set,r=new Map,i=Ql._createIn(t).getItems();for(const t of i)t.is("element","$marker")&&n.add(t);for(const t of n){const n=t.getAttribute("data-name"),i=e.createPositionBefore(t);r.has(n)?r.get(n).end=i.clone():r.set(n,new Ql(i.clone())),e.remove(t)}return r}(i,e)}return this._modelCursor=null,this._splitParts.clear(),this._cursorParents.clear(),this._emptyElementsToKeep.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,i}_convertItem(t,e){const n={viewItem:t,modelCursor:e,modelRange:null};if(t.is("element")?this.fire(`element:${t.name}`,n,this.conversionApi):t.is("$text")?this.fire("text",n,this.conversionApi):this.fire("documentFragment",n,this.conversionApi),n.modelRange&&!(n.modelRange instanceof Ql))throw new kr("view-conversion-dispatcher-incorrect-result",this);return{modelRange:n.modelRange,modelCursor:n.modelCursor}}_convertChildren(t,e){let n=e.is("position")?e:$l._createAt(e,0);const r=new Ql(n);for(const e of Array.from(t.getChildren())){const t=this._convertItem(e,n);t.modelRange instanceof Ql&&(r.end=t.modelRange.end,n=t.modelCursor)}return{modelRange:r,modelCursor:n}}_safeInsert(t,e){const n=this._splitToAllowedParent(t,e);return!!n&&(this.conversionApi.writer.insert(t,n.position),!0)}_updateConversionResult(t,e){const n=this._getSplitParts(t),r=this.conversionApi.writer;e.modelRange||(e.modelRange=r.createRange(r.createPositionBefore(t),r.createPositionAfter(n[n.length-1])));const i=this._cursorParents.get(t);e.modelCursor=i?r.createPositionAt(i,0):e.modelRange.end}_splitToAllowedParent(t,e){const{schema:n,writer:r}=this.conversionApi;let i=n.findAllowedParent(e,t);if(i){if(i===e.parent)return{position:e};this._modelCursor.parent.getAncestors().includes(i)&&(i=null)}if(!i)return zc(e,t,n)?{position:Mc(e,r)}:null;const o=this.conversionApi.writer.split(e,i),s=[];for(const t of o.range.getWalker())if("elementEnd"==t.type)s.push(t.item);else{const e=s.pop(),n=t.item;this._registerSplitPair(e,n)}const a=o.range.end.parent;return this._cursorParents.set(t,a),{position:o.position,cursorParent:a}}_registerSplitPair(t,e){this._splitParts.has(t)||this._splitParts.set(t,[t]);const n=this._splitParts.get(t);this._splitParts.set(e,n),n.push(e)}_getSplitParts(t){let e;return e=this._splitParts.has(t)?this._splitParts.get(t):[t],e}_keepEmptyElement(t){this._emptyElementsToKeep.add(t)}_removeEmptyElements(){let t=!1;for(const e of this._splitParts.keys())e.isEmpty&&!this._emptyElementsToKeep.has(e)&&(this.conversionApi.writer.remove(e),this._splitParts.delete(e),t=!0);t&&this._removeEmptyElements()}}class fd{getHtml(t){const e=Yn.document.implementation.createHTMLDocument("").createElement("div");return e.appendChild(t),e.innerHTML}}class bd{domParser;domConverter;htmlWriter;skipComments=!0;constructor(t){this.domParser=new DOMParser,this.domConverter=new Za(t,{renderingMode:"data"}),this.htmlWriter=new fd}toData(t){const e=this.domConverter.viewToDom(t);return this.htmlWriter.getHtml(e)}toView(t){const e=this._toDom(t);return this.domConverter.domToView(e,{skipComments:this.skipComments})}registerRawContentMatcher(t){this.domConverter.registerRawContentMatcher(t)}useFillerType(t){this.domConverter.blockFillerMode="marked"==t?"markedNbsp":"nbsp"}_toDom(t){/<(?:html|body|head|meta)(?:\s[^>]*)?>/i.test(t.trim().slice(0,1e4))||(t=`${t}`);const e=this.domParser.parseFromString(t,"text/html"),n=e.createDocumentFragment(),r=e.body.childNodes;for(;r.length>0;)n.appendChild(r[0]);return n}}class kd extends(Dr()){model;mapper;downcastDispatcher;upcastDispatcher;viewDocument;stylesProcessor;htmlProcessor;processor;_viewWriter;constructor(t,e){super(),this.model=t,this.mapper=new Xl,this.downcastDispatcher=new nc({mapper:this.mapper,schema:t.schema}),this.downcastDispatcher.on("insert:$text",((t,e,n)=>{if(!n.consumable.consume(e.item,t.name))return;const r=n.writer,i=n.mapper.toViewPosition(e.range.start),o=r.createText(e.item.data);r.insert(i,o)}),{priority:"lowest"}),this.downcastDispatcher.on("insert",((t,e,n)=>{n.convertAttributes(e.item),e.reconversion||!e.item.is("element")||e.item.isEmpty||n.convertChildren(e.item)}),{priority:"lowest"}),this.upcastDispatcher=new pd({schema:t.schema}),this.viewDocument=new sa(e),this.stylesProcessor=e,this.htmlProcessor=new bd(this.viewDocument),this.processor=this.htmlProcessor,this._viewWriter=new ka(this.viewDocument),this.upcastDispatcher.on("text",((t,e,{schema:n,consumable:r,writer:i})=>{let o=e.modelCursor;if(!r.test(e.viewItem))return;if(!n.checkChild(o,"$text")){if(!zc(o,"$text",n))return;if(0==e.viewItem.data.trim().length)return;o=Mc(o,i)}r.consume(e.viewItem);const s=i.createText(e.viewItem.data);i.insert(s,o),e.modelRange=i.createRange(o,o.getShiftedBy(s.offsetSize)),e.modelCursor=e.modelRange.end}),{priority:"lowest"}),this.upcastDispatcher.on("element",((t,e,n)=>{if(!e.modelRange&&n.consumable.consume(e.viewItem,{name:!0})){const{modelRange:t,modelCursor:r}=n.convertChildren(e.viewItem,e.modelCursor);e.modelRange=t,e.modelCursor=r}}),{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",((t,e,n)=>{if(!e.modelRange&&n.consumable.consume(e.viewItem,{name:!0})){const{modelRange:t,modelCursor:r}=n.convertChildren(e.viewItem,e.modelCursor);e.modelRange=t,e.modelCursor=r}}),{priority:"lowest"}),jr().prototype.decorate.call(this,"init"),jr().prototype.decorate.call(this,"set"),jr().prototype.decorate.call(this,"get"),jr().prototype.decorate.call(this,"toView"),jr().prototype.decorate.call(this,"toModel"),this.on("init",(()=>{this.fire("ready")}),{priority:"lowest"}),this.on("ready",(()=>{this.model.enqueueChange({isUndoable:!1},Lc)}),{priority:"lowest"})}get(t={}){const{rootName:e="main",trim:n="empty"}=t;if(!this._checkIfRootsExists([e]))throw new kr("datacontroller-get-non-existent-root",this);const r=this.model.document.getRoot(e);return r.isAttached()||wr("datacontroller-get-detached-root",this),"empty"!==n||this.model.hasContent(r,{ignoreWhitespaces:!0})?this.stringify(r,t):""}stringify(t,e={}){const n=this.toView(t,e);return this.processor.toData(n)}toView(t,e={}){const n=this.viewDocument,r=this._viewWriter;this.mapper.clearBindings();const i=Ql._createIn(t),o=new ba(n);this.mapper.bindElements(t,o);const s=t.is("documentFragment")?t.markers:function(t){const e=[],n=t.root.document;if(!n)return new Map;const r=Ql._createIn(t);for(const t of n.model.markers){const n=t.getRange(),i=n.isCollapsed,o=n.start.isEqual(r.start)||n.end.isEqual(r.end);if(i&&o)e.push([t.name,n]);else{const i=r.getIntersection(n);i&&e.push([t.name,i])}}return e.sort((([t,e],[n,r])=>{if("after"!==e.end.compareWith(r.start))return 1;if("before"!==e.start.compareWith(r.end))return-1;switch(e.start.compareWith(r.start)){case"before":return 1;case"after":return-1;default:switch(e.end.compareWith(r.end)){case"before":return 1;case"after":return-1;default:return n.localeCompare(t)}}})),new Map(e)}(t);return this.downcastDispatcher.convert(i,s,r,e),o}init(t){if(this.model.document.version)throw new kr("datacontroller-init-document-not-empty",this);let e={};if("string"==typeof t?e.main=t:e=t,!this._checkIfRootsExists(Object.keys(e)))throw new kr("datacontroller-init-non-existent-root",this);return this.model.enqueueChange({isUndoable:!1},(t=>{for(const n of Object.keys(e)){const r=this.model.document.getRoot(n);t.insert(this.parse(e[n],r),r,0)}})),Promise.resolve()}set(t,e={}){let n={};if("string"==typeof t?n.main=t:n=t,!this._checkIfRootsExists(Object.keys(n)))throw new kr("datacontroller-set-non-existent-root",this);this.model.enqueueChange(e.batchType||{},(t=>{t.setSelection(null),t.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const e of Object.keys(n)){const r=this.model.document.getRoot(e);t.remove(t.createRangeIn(r)),t.insert(this.parse(n[e],r),r,0)}}))}parse(t,e="$root"){const n=this.processor.toView(t);return this.toModel(n,e)}toModel(t,e="$root"){return this.model.change((n=>this.upcastDispatcher.convert(t,n,e)))}addStyleProcessorRules(t){t(this.stylesProcessor)}registerRawContentMatcher(t){this.processor&&this.processor!==this.htmlProcessor&&this.processor.registerRawContentMatcher(t),this.htmlProcessor.registerRawContentMatcher(t)}destroy(){this.stopListening()}_checkIfRootsExists(t){for(const e of t)if(!this.model.document.getRoot(e))return!1;return!0}}class wd{_helpers=new Map;_downcast;_upcast;constructor(t,e){this._downcast=eo(t),this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=eo(e),this._createConversionHelpers({name:"upcast",dispatchers:this._upcast,isDowncast:!1})}addAlias(t,e){const n=this._downcast.includes(e);if(!this._upcast.includes(e)&&!n)throw new kr("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:t,dispatchers:[e],isDowncast:n})}for(t){if(!this._helpers.has(t))throw new kr("conversion-for-unknown-group",this);return this._helpers.get(t)}elementToElement(t){this.for("downcast").elementToElement(t);for(const{model:e,view:n}of Ad(t))this.for("upcast").elementToElement({model:e,view:n,converterPriority:t.converterPriority})}attributeToElement(t){this.for("downcast").attributeToElement(t);for(const{model:e,view:n}of Ad(t))this.for("upcast").elementToAttribute({view:n,model:e,converterPriority:t.converterPriority})}attributeToAttribute(t){this.for("downcast").attributeToAttribute(t);for(const{model:e,view:n}of Ad(t))this.for("upcast").attributeToAttribute({view:n,model:e})}_createConversionHelpers({name:t,dispatchers:e,isDowncast:n}){if(this._helpers.has(t))throw new kr("conversion-group-exists",this);const r=n?new Ac(e):new Nc(e);this._helpers.set(t,r)}}function*Ad(t){if(t.model.values)for(const e of t.model.values){const n={key:t.model.key,value:e},r=t.view[e],i=t.upcastAlso?t.upcastAlso[e]:void 0;yield*_d(n,r,i)}else yield*_d(t.model,t.view,t.upcastAlso)}function*_d(t,e,n){if(yield{model:t,view:e},n)for(const e of eo(n))yield{model:t,view:e}}class Cd{baseVersion;isDocumentOperation;batch;constructor(t){this.baseVersion=t,this.isDocumentOperation=null!==this.baseVersion,this.batch=null}_validate(){}toJSON(){const t=Object.assign({},this);return t.__className=this.constructor.className,delete t.batch,delete t.isDocumentOperation,t}static get className(){return"Operation"}static fromJSON(t,e){return new this(t.baseVersion)}}function vd(t,e){const n=Ed(e),r=n.reduce(((t,e)=>t+e.offsetSize),0),i=t.parent;Dd(t);const o=t.index;return i._insertChild(o,n),Bd(i,o+n.length),Bd(i,o),new Ql(t,t.getShiftedBy(r))}function yd(t){if(!t.isFlat)throw new kr("operation-utils-remove-range-not-flat",this);const e=t.start.parent;Dd(t.start),Dd(t.end);const n=e._removeChildren(t.start.index,t.end.index-t.start.index);return Bd(e,t.start.index),n}function xd(t,e){if(!t.isFlat)throw new kr("operation-utils-move-range-not-flat",this);const n=yd(t);return vd(e=e._getTransformedByDeletion(t.start,t.end.offset-t.start.offset),n)}function Ed(t){const e=[];!function t(n){if("string"==typeof n)e.push(new Hl(n));else if(n instanceof jl)e.push(new Hl(n.data,n.getAttributes()));else if(n instanceof Nl)e.push(n);else if(Yr(n))for(const e of n)t(e);else{}}(t);for(let t=1;tt.maxOffset)throw new kr("move-operation-nodes-do-not-exist",this);if(t===e&&n=n&&this.targetPosition.path[t]t._clone(!0)))),e=new Id(this.position,t,this.baseVersion);return e.shouldReceiveAttributes=this.shouldReceiveAttributes,e}getReversed(){const t=this.position.root.document.graveyard,e=new $l(t,[0]);return new Td(this.position,this.nodes.maxOffset,e,this.baseVersion+1)}_validate(){const t=this.position.parent;if(!t||t.maxOffsett._clone(!0)))),vd(this.position,t)}toJSON(){const t=super.toJSON();return t.position=this.position.toJSON(),t.nodes=this.nodes.toJSON(),t}static get className(){return"InsertOperation"}static fromJSON(t,e){const n=[];for(const e of t.nodes)e.name?n.push(ql.fromJSON(e)):n.push(Hl.fromJSON(e));const r=new Id($l.fromJSON(t.position,e),n,t.baseVersion);return r.shouldReceiveAttributes=t.shouldReceiveAttributes,r}}class Pd extends Cd{splitPosition;howMany;insertionPosition;graveyardPosition;constructor(t,e,n,r,i){super(i),this.splitPosition=t.clone(),this.splitPosition.stickiness="toNext",this.howMany=e,this.insertionPosition=n,this.graveyardPosition=r?r.clone():null,this.graveyardPosition&&(this.graveyardPosition.stickiness="toNext")}get type(){return"split"}get moveTargetPosition(){const t=this.insertionPosition.path.slice();return t.push(0),new $l(this.insertionPosition.root,t)}get movedRange(){const t=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new Ql(this.splitPosition,t)}get affectedSelectable(){const t=[Ql._createFromPositionAndShift(this.splitPosition,0),Ql._createFromPositionAndShift(this.insertionPosition,0)];return this.graveyardPosition&&t.push(Ql._createFromPositionAndShift(this.graveyardPosition,0)),t}clone(){return new Pd(this.splitPosition,this.howMany,this.insertionPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const t=this.splitPosition.root.document.graveyard,e=new $l(t,[0]);return new Vd(this.moveTargetPosition,this.howMany,this.splitPosition,e,this.baseVersion+1)}_validate(){const t=this.splitPosition.parent,e=this.splitPosition.offset;if(!t||t.maxOffset0&&(t.sourcePosition.isEqual(e.sourcePosition.getShiftedBy(e.howMany))&&this._setRelation(t,e,"mergeSourceAffected"),t.targetPosition.isEqual(e.sourcePosition)&&this._setRelation(t,e,"mergeTargetWasBefore"));else if(t instanceof Fd){const n=t.newRange;if(!n)return;if(e instanceof Vd){const r=n.start.isEqual(e.targetPosition),i=n.start.isEqual(e.deletionPosition),o=n.end.isEqual(e.deletionPosition),s=n.end.isEqual(e.sourcePosition);(r||i||o||s)&&this._setRelation(t,e,{wasInLeftElement:r,wasStartBeforeMergedElement:i,wasEndBeforeMergedElement:o,wasInRightElement:s})}}}getContext(t,e,n){return{aIsStrong:n,aWasUndone:this._wasUndone(t),bWasUndone:this._wasUndone(e),abRelation:this._useRelations?this._getRelation(t,e):null,baRelation:this._useRelations?this._getRelation(e,t):null,forceWeakRemove:this._forceWeakRemove}}_wasUndone(t){const e=this.originalOperations.get(t);return e.wasUndone||this._history.isUndoneOperation(e)}_getRelation(t,e){const n=this.originalOperations.get(e),r=this._history.getUndoneOperation(n);if(!r)return null;const i=this.originalOperations.get(t),o=this._relations.get(i);return o&&o.get(r)||null}_setRelation(t,e,n){const r=this.originalOperations.get(t),i=this.originalOperations.get(e);let o=this._relations.get(r);o||(o=new Map,this._relations.set(r,o)),o.set(i,n)}}function Zd(t,e){for(const n of t)n.baseVersion=e++}function Yd(t,e){for(let n=0;n{if(t.key===e.key&&t.range.start.hasSameParentAs(e.range.start)){const r=t.range.getDifference(e.range).map((e=>new Ld(e,t.key,t.oldValue,t.newValue,0))),i=t.range.getIntersection(e.range);return i&&n.aIsStrong&&r.push(new Ld(i,e.key,e.newValue,t.newValue,0)),0==r.length?[new zd(0)]:r}return[t]})),Ud(Ld,Id,((t,e)=>{if(t.range.start.hasSameParentAs(e.position)&&t.range.containsPosition(e.position)){const n=t.range._getTransformedByInsertion(e.position,e.howMany,!e.shouldReceiveAttributes).map((e=>new Ld(e,t.key,t.oldValue,t.newValue,t.baseVersion)));if(e.shouldReceiveAttributes){const r=Qd(e,t.key,t.oldValue);r&&n.unshift(r)}return n}return t.range=t.range._getTransformedByInsertion(e.position,e.howMany,!1)[0],[t]})),Ud(Ld,Vd,((t,e)=>{const n=[];t.range.start.hasSameParentAs(e.deletionPosition)&&(t.range.containsPosition(e.deletionPosition)||t.range.start.isEqual(e.deletionPosition))&&n.push(Ql._createFromPositionAndShift(e.graveyardPosition,1));const r=t.range._getTransformedByMergeOperation(e);return r.isCollapsed||n.push(r),n.map((e=>new Ld(e,t.key,t.oldValue,t.newValue,t.baseVersion)))})),Ud(Ld,Td,((t,e)=>{const n=function(t,e){const n=Ql._createFromPositionAndShift(e.sourcePosition,e.howMany);let r=null,i=[];n.containsRange(t,!0)?r=t:t.start.hasSameParentAs(n.start)?(i=t.getDifference(n),r=t.getIntersection(n)):i=[t];const o=[];for(let t of i){t=t._getTransformedByDeletion(e.sourcePosition,e.howMany);const n=e.getMovedRangeStart(),r=t.start.hasSameParentAs(n),i=t._getTransformedByInsertion(n,e.howMany,r);o.push(...i)}r&&o.push(r._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany,!1)[0]);return o}(t.range,e);return n.map((e=>new Ld(e,t.key,t.oldValue,t.newValue,t.baseVersion)))})),Ud(Ld,Pd,((t,e)=>{if(t.range.end.isEqual(e.insertionPosition))return e.graveyardPosition||t.range.end.offset++,[t];if(t.range.start.hasSameParentAs(e.splitPosition)&&t.range.containsPosition(e.splitPosition)){const n=t.clone();return n.range=new Ql(e.moveTargetPosition.clone(),t.range.end._getCombined(e.splitPosition,e.moveTargetPosition)),t.range.end=e.splitPosition.clone(),t.range.end.stickiness="toPrevious",[t,n]}return t.range=t.range._getTransformedBySplitOperation(e),[t]})),Ud(Id,Ld,((t,e)=>{const n=[t];if(t.shouldReceiveAttributes&&t.position.hasSameParentAs(e.range.start)&&e.range.containsPosition(t.position)){const r=Qd(t,e.key,e.newValue);r&&n.push(r)}return n})),Ud(Id,Id,((t,e,n)=>(t.position.isEqual(e.position)&&n.aIsStrong||(t.position=t.position._getTransformedByInsertOperation(e)),[t]))),Ud(Id,Td,((t,e)=>(t.position=t.position._getTransformedByMoveOperation(e),[t]))),Ud(Id,Pd,((t,e)=>(t.position=t.position._getTransformedBySplitOperation(e),[t]))),Ud(Id,Vd,((t,e)=>(t.position=t.position._getTransformedByMergeOperation(e),[t]))),Ud(Fd,Id,((t,e)=>(t.oldRange&&(t.oldRange=t.oldRange._getTransformedByInsertOperation(e)[0]),t.newRange&&(t.newRange=t.newRange._getTransformedByInsertOperation(e)[0]),[t]))),Ud(Fd,Fd,((t,e,n)=>{if(t.name==e.name){if(!n.aIsStrong)return[new zd(0)];t.oldRange=e.newRange?e.newRange.clone():null}return[t]})),Ud(Fd,Vd,((t,e)=>(t.oldRange&&(t.oldRange=t.oldRange._getTransformedByMergeOperation(e)),t.newRange&&(t.newRange=t.newRange._getTransformedByMergeOperation(e)),[t]))),Ud(Fd,Td,((t,e)=>{const n=[t];if(t.oldRange&&(t.oldRange=Ql._createFromRanges(t.oldRange._getTransformedByMoveOperation(e))),t.newRange){const r=t.newRange._getTransformedByMoveOperation(e);t.newRange=r[0];for(let e=1;e{if(t.oldRange&&(t.oldRange=t.oldRange._getTransformedBySplitOperation(e)),t.newRange){if(n.abRelation){const r=t.newRange._getTransformedBySplitOperation(e);return t.newRange.start.isEqual(e.splitPosition)&&n.abRelation.wasStartBeforeMergedElement?t.newRange.start=$l._createAt(e.insertionPosition):t.newRange.start.isEqual(e.splitPosition)&&!n.abRelation.wasInLeftElement?t.newRange.start=$l._createAt(e.moveTargetPosition):t.newRange.start=r.start,t.newRange.end.isEqual(e.splitPosition)&&n.abRelation.wasInRightElement?t.newRange.end=$l._createAt(e.moveTargetPosition):t.newRange.end.isEqual(e.splitPosition)&&n.abRelation.wasEndBeforeMergedElement?t.newRange.end=$l._createAt(e.insertionPosition):t.newRange.end=r.end,[t]}t.newRange=t.newRange._getTransformedBySplitOperation(e)}return[t]})),Ud(Vd,Id,((t,e)=>(t.sourcePosition.hasSameParentAs(e.position)&&(t.howMany+=e.howMany),t.sourcePosition=t.sourcePosition._getTransformedByInsertOperation(e),t.targetPosition=t.targetPosition._getTransformedByInsertOperation(e),[t]))),Ud(Vd,Vd,((t,e,n)=>{if(t.sourcePosition.isEqual(e.sourcePosition)&&t.targetPosition.isEqual(e.targetPosition)){if(n.bWasUndone){const n=e.graveyardPosition.path.slice();return n.push(0),t.sourcePosition=new $l(e.graveyardPosition.root,n),t.howMany=0,[t]}return[new zd(0)]}if(t.sourcePosition.isEqual(e.sourcePosition)&&!t.targetPosition.isEqual(e.targetPosition)&&!n.bWasUndone&&"splitAtSource"!=n.abRelation){const r="$graveyard"==t.targetPosition.root.rootName,i="$graveyard"==e.targetPosition.root.rootName;if(i&&!r||!(r&&!i)&&n.aIsStrong){const n=e.targetPosition._getTransformedByMergeOperation(e),r=t.targetPosition._getTransformedByMergeOperation(e);return[new Td(n,t.howMany,r,0)]}return[new zd(0)]}return t.sourcePosition.hasSameParentAs(e.targetPosition)&&(t.howMany+=e.howMany),t.sourcePosition=t.sourcePosition._getTransformedByMergeOperation(e),t.targetPosition=t.targetPosition._getTransformedByMergeOperation(e),t.graveyardPosition.isEqual(e.graveyardPosition)&&n.aIsStrong||(t.graveyardPosition=t.graveyardPosition._getTransformedByMergeOperation(e)),[t]})),Ud(Vd,Td,((t,e,n)=>{const r=Ql._createFromPositionAndShift(e.sourcePosition,e.howMany);return"remove"==e.type&&!n.bWasUndone&&t.deletionPosition.hasSameParentAs(e.sourcePosition)&&r.containsPosition(t.sourcePosition)?[new zd(0)]:(e.sourcePosition.getShiftedBy(e.howMany).isEqual(t.sourcePosition)?t.sourcePosition.stickiness="toNone":e.targetPosition.isEqual(t.sourcePosition)&&"mergeSourceAffected"==n.abRelation?t.sourcePosition.stickiness="toNext":e.sourcePosition.isEqual(t.targetPosition)?(t.targetPosition.stickiness="toNone",t.howMany-=e.howMany):e.targetPosition.isEqual(t.targetPosition)&&"mergeTargetWasBefore"==n.abRelation?(t.targetPosition.stickiness="toPrevious",t.howMany+=e.howMany):(t.sourcePosition.hasSameParentAs(e.targetPosition)&&(t.howMany+=e.howMany),t.sourcePosition.hasSameParentAs(e.sourcePosition)&&(t.howMany-=e.howMany)),t.sourcePosition=t.sourcePosition._getTransformedByMoveOperation(e),t.targetPosition=t.targetPosition._getTransformedByMoveOperation(e),t.sourcePosition.stickiness="toPrevious",t.targetPosition.stickiness="toNext",t.graveyardPosition.isEqual(e.targetPosition)||(t.graveyardPosition=t.graveyardPosition._getTransformedByMoveOperation(e)),[t])})),Ud(Vd,Pd,((t,e,n)=>{if(e.graveyardPosition&&(t.graveyardPosition=t.graveyardPosition._getTransformedByDeletion(e.graveyardPosition,1),t.deletionPosition.isEqual(e.graveyardPosition)&&(t.howMany=e.howMany)),t.targetPosition.isEqual(e.splitPosition)){if(e.graveyardPosition&&t.deletionPosition.isEqual(e.graveyardPosition)||"mergeTargetNotMoved"==n.abRelation)return t.sourcePosition=t.sourcePosition._getTransformedBySplitOperation(e),[t]}if(t.sourcePosition.isEqual(e.splitPosition)){if("mergeSourceNotMoved"==n.abRelation)return t.howMany=0,t.targetPosition=t.targetPosition._getTransformedBySplitOperation(e),[t];if("mergeSameElement"==n.abRelation||t.sourcePosition.offset>0)return t.sourcePosition=e.moveTargetPosition.clone(),t.targetPosition=t.targetPosition._getTransformedBySplitOperation(e),[t]}return t.sourcePosition.hasSameParentAs(e.splitPosition)&&(t.howMany=e.splitPosition.offset),t.sourcePosition=t.sourcePosition._getTransformedBySplitOperation(e),t.targetPosition=t.targetPosition._getTransformedBySplitOperation(e),[t]})),Ud(Td,Id,((t,e)=>{const n=Ql._createFromPositionAndShift(t.sourcePosition,t.howMany)._getTransformedByInsertOperation(e,!1)[0];return t.sourcePosition=n.start,t.howMany=n.end.offset-n.start.offset,t.targetPosition.isEqual(e.position)||(t.targetPosition=t.targetPosition._getTransformedByInsertOperation(e)),[t]})),Ud(Td,Td,((t,e,n)=>{const r=Ql._createFromPositionAndShift(t.sourcePosition,t.howMany),i=Ql._createFromPositionAndShift(e.sourcePosition,e.howMany);let o,s=n.aIsStrong,a=!n.aIsStrong;if("insertBefore"==n.abRelation||"insertAfter"==n.baRelation?a=!0:"insertAfter"!=n.abRelation&&"insertBefore"!=n.baRelation||(a=!1),o=t.targetPosition.isEqual(e.targetPosition)&&a?t.targetPosition._getTransformedByDeletion(e.sourcePosition,e.howMany):t.targetPosition._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),Xd(t,e)&&Xd(e,t))return[e.getReversed()];if(r.containsPosition(e.targetPosition)&&r.containsRange(i,!0))return r.start=r.start._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),r.end=r.end._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),th([r],o);if(i.containsPosition(t.targetPosition)&&i.containsRange(r,!0))return r.start=r.start._getCombined(e.sourcePosition,e.getMovedRangeStart()),r.end=r.end._getCombined(e.sourcePosition,e.getMovedRangeStart()),th([r],o);const l=Zr(t.sourcePosition.getParentPath(),e.sourcePosition.getParentPath());if("prefix"==l||"extension"==l)return r.start=r.start._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),r.end=r.end._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany),th([r],o);"remove"!=t.type||"remove"==e.type||n.aWasUndone||n.forceWeakRemove?"remove"==t.type||"remove"!=e.type||n.bWasUndone||n.forceWeakRemove||(s=!1):s=!0;const c=[],d=r.getDifference(i);for(const t of d){t.start=t.start._getTransformedByDeletion(e.sourcePosition,e.howMany),t.end=t.end._getTransformedByDeletion(e.sourcePosition,e.howMany);const n="same"==Zr(t.start.getParentPath(),e.getMovedRangeStart().getParentPath()),r=t._getTransformedByInsertion(e.getMovedRangeStart(),e.howMany,n);c.push(...r)}const h=r.getIntersection(i);return null!==h&&s&&(h.start=h.start._getCombined(e.sourcePosition,e.getMovedRangeStart()),h.end=h.end._getCombined(e.sourcePosition,e.getMovedRangeStart()),0===c.length?c.push(h):1==c.length?i.start.isBefore(r.start)||i.start.isEqual(r.start)?c.unshift(h):c.push(h):c.splice(1,0,h)),0===c.length?[new zd(t.baseVersion)]:th(c,o)})),Ud(Td,Pd,((t,e,n)=>{let r=t.targetPosition.clone();t.targetPosition.isEqual(e.insertionPosition)&&e.graveyardPosition&&"moveTargetAfter"!=n.abRelation||(r=t.targetPosition._getTransformedBySplitOperation(e));const i=Ql._createFromPositionAndShift(t.sourcePosition,t.howMany);if(i.end.isEqual(e.insertionPosition))return e.graveyardPosition||t.howMany++,t.targetPosition=r,[t];if(i.start.hasSameParentAs(e.splitPosition)&&i.containsPosition(e.splitPosition)){let t=new Ql(e.splitPosition,i.end);t=t._getTransformedBySplitOperation(e);return th([new Ql(i.start,e.splitPosition),t],r)}t.targetPosition.isEqual(e.splitPosition)&&"insertAtSource"==n.abRelation&&(r=e.moveTargetPosition),t.targetPosition.isEqual(e.insertionPosition)&&"insertBetween"==n.abRelation&&(r=t.targetPosition);const o=[i._getTransformedBySplitOperation(e)];if(e.graveyardPosition){const r=i.start.isEqual(e.graveyardPosition)||i.containsPosition(e.graveyardPosition);t.howMany>1&&r&&!n.aWasUndone&&o.push(Ql._createFromPositionAndShift(e.insertionPosition,1))}return th(o,r)})),Ud(Td,Vd,((t,e,n)=>{const r=Ql._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.deletionPosition.hasSameParentAs(t.sourcePosition)&&r.containsPosition(e.sourcePosition))if("remove"!=t.type||n.forceWeakRemove){if(1==t.howMany)return n.bWasUndone?(t.sourcePosition=e.graveyardPosition.clone(),t.targetPosition=t.targetPosition._getTransformedByMergeOperation(e),[t]):[new zd(0)]}else if(!n.aWasUndone){const n=[];let r=e.graveyardPosition.clone(),i=e.targetPosition._getTransformedByMergeOperation(e);const o=t.targetPosition.getTransformedByOperation(e);t.howMany>1&&(n.push(new Td(t.sourcePosition,t.howMany-1,o,0)),r=r._getTransformedByMove(t.sourcePosition,o,t.howMany-1),i=i._getTransformedByMove(t.sourcePosition,o,t.howMany-1));const s=e.deletionPosition._getCombined(t.sourcePosition,o),a=new Td(r,1,s,0),l=a.getMovedRangeStart().path.slice();l.push(0);const c=new $l(a.targetPosition.root,l);i=i._getTransformedByMove(r,s,1);const d=new Td(i,e.howMany,c,0);return n.push(a),n.push(d),n}const i=Ql._createFromPositionAndShift(t.sourcePosition,t.howMany)._getTransformedByMergeOperation(e);return t.sourcePosition=i.start,t.howMany=i.end.offset-i.start.offset,t.targetPosition=t.targetPosition._getTransformedByMergeOperation(e),[t]})),Ud(Md,Id,((t,e)=>(t.position=t.position._getTransformedByInsertOperation(e),[t]))),Ud(Md,Vd,((t,e)=>t.position.isEqual(e.deletionPosition)?(t.position=e.graveyardPosition.clone(),t.position.stickiness="toNext",[t]):(t.position=t.position._getTransformedByMergeOperation(e),[t]))),Ud(Md,Td,((t,e)=>(t.position=t.position._getTransformedByMoveOperation(e),[t]))),Ud(Md,Md,((t,e,n)=>{if(t.position.isEqual(e.position)){if(!n.aIsStrong)return[new zd(0)];t.oldName=e.newName}return[t]})),Ud(Md,Pd,((t,e)=>{if("same"==Zr(t.position.path,e.splitPosition.getParentPath())&&!e.graveyardPosition){const e=new Md(t.position.getShiftedBy(1),t.oldName,t.newName,0);return[t,e]}return t.position=t.position._getTransformedBySplitOperation(e),[t]})),Ud(Nd,Nd,((t,e,n)=>{if(t.root===e.root&&t.key===e.key){if(!n.aIsStrong||t.newValue===e.newValue)return[new zd(0)];t.oldValue=e.newValue}return[t]})),Ud(Od,Od,((t,e)=>t.rootName===e.rootName&&t.isAdd===e.isAdd?[new zd(0)]:[t])),Ud(Pd,Id,((t,e)=>(t.splitPosition.hasSameParentAs(e.position)&&t.splitPosition.offset{if(!t.graveyardPosition&&!n.bWasUndone&&t.splitPosition.hasSameParentAs(e.sourcePosition)){const n=e.graveyardPosition.path.slice();n.push(0);const r=new $l(e.graveyardPosition.root,n),i=Pd.getInsertionPosition(new $l(e.graveyardPosition.root,n)),o=new Pd(r,0,i,null,0);return t.splitPosition=t.splitPosition._getTransformedByMergeOperation(e),t.insertionPosition=Pd.getInsertionPosition(t.splitPosition),t.graveyardPosition=o.insertionPosition.clone(),t.graveyardPosition.stickiness="toNext",[o,t]}return t.splitPosition.hasSameParentAs(e.deletionPosition)&&!t.splitPosition.isAfter(e.deletionPosition)&&t.howMany--,t.splitPosition.hasSameParentAs(e.targetPosition)&&(t.howMany+=e.howMany),t.splitPosition=t.splitPosition._getTransformedByMergeOperation(e),t.insertionPosition=Pd.getInsertionPosition(t.splitPosition),t.graveyardPosition&&(t.graveyardPosition=t.graveyardPosition._getTransformedByMergeOperation(e)),[t]})),Ud(Pd,Td,((t,e,n)=>{const r=Ql._createFromPositionAndShift(e.sourcePosition,e.howMany);if(t.graveyardPosition){const i=r.start.isEqual(t.graveyardPosition)||r.containsPosition(t.graveyardPosition);if(!n.bWasUndone&&i){const n=t.splitPosition._getTransformedByMoveOperation(e),r=t.graveyardPosition._getTransformedByMoveOperation(e),i=r.path.slice();i.push(0);const o=new $l(r.root,i);return[new Td(n,t.howMany,o,0)]}t.graveyardPosition=t.graveyardPosition._getTransformedByMoveOperation(e)}const i=t.splitPosition.isEqual(e.targetPosition);if(i&&("insertAtSource"==n.baRelation||"splitBefore"==n.abRelation))return t.howMany+=e.howMany,t.splitPosition=t.splitPosition._getTransformedByDeletion(e.sourcePosition,e.howMany),t.insertionPosition=Pd.getInsertionPosition(t.splitPosition),[t];if(i&&n.abRelation&&n.abRelation.howMany){const{howMany:e,offset:r}=n.abRelation;return t.howMany+=e,t.splitPosition=t.splitPosition.getShiftedBy(r),[t]}if(t.splitPosition.hasSameParentAs(e.sourcePosition)&&r.containsPosition(t.splitPosition)){const n=e.howMany-(t.splitPosition.offset-e.sourcePosition.offset);return t.howMany-=n,t.splitPosition.hasSameParentAs(e.targetPosition)&&t.splitPosition.offset{if(t.splitPosition.isEqual(e.splitPosition)){if(!t.graveyardPosition&&!e.graveyardPosition)return[new zd(0)];if(t.graveyardPosition&&e.graveyardPosition&&t.graveyardPosition.isEqual(e.graveyardPosition))return[new zd(0)];if("splitBefore"==n.abRelation)return t.howMany=0,t.graveyardPosition=t.graveyardPosition._getTransformedBySplitOperation(e),[t]}if(t.graveyardPosition&&e.graveyardPosition&&t.graveyardPosition.isEqual(e.graveyardPosition)){const r="$graveyard"==t.splitPosition.root.rootName,i="$graveyard"==e.splitPosition.root.rootName;if(i&&!r||!(r&&!i)&&n.aIsStrong){const n=[];return e.howMany&&n.push(new Td(e.moveTargetPosition,e.howMany,e.splitPosition,0)),t.howMany&&n.push(new Td(t.splitPosition,t.howMany,t.moveTargetPosition,0)),n}return[new zd(0)]}if(t.graveyardPosition&&(t.graveyardPosition=t.graveyardPosition._getTransformedBySplitOperation(e)),t.splitPosition.isEqual(e.insertionPosition)&&"splitBefore"==n.abRelation)return t.howMany++,[t];if(e.splitPosition.isEqual(t.insertionPosition)&&"splitBefore"==n.baRelation){const n=e.insertionPosition.path.slice();n.push(0);const r=new $l(e.insertionPosition.root,n);return[t,new Td(t.insertionPosition,1,r,0)]}return t.splitPosition.hasSameParentAs(e.splitPosition)&&t.splitPosition.offset{const n=e[0];n.isDocumentOperation&&rh.call(this,n)}),{priority:"low"})}function rh(t){const e=this.getTransformedByOperation(t);if(!this.isEqual(e)){const t=this.toPosition();this.path=e.path,this.root=e.root,this.fire("change",t)}}eh.prototype.is=function(t){return"livePosition"===t||"model:livePosition"===t||"position"==t||"model:position"===t};class ih{operations;isUndoable;isLocal;isUndo;isTyping;constructor(t={}){"string"==typeof t&&(t="transparent"===t?{isUndoable:!1}:{},wr("batch-constructor-deprecated-string-type"));const{isUndoable:e=!0,isLocal:n=!0,isUndo:r=!1,isTyping:i=!1}=t;this.operations=[],this.isUndoable=e,this.isLocal=n,this.isUndo=r,this.isTyping=i}get type(){return wr("batch-type-deprecated"),"default"}get baseVersion(){for(const t of this.operations)if(null!==t.baseVersion)return t.baseVersion;return null}addOperation(t){return t.batch=this,this.operations.push(t),t}}class oh{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(t){this._markerCollection=t}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size&&0==this._changedRoots.size}bufferOperation(t){const e=t;switch(e.type){case"insert":if(this._isInInsertedElement(e.position.parent))return;this._markInsert(e.position.parent,e.position.offset,e.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":for(const t of e.range.getItems({shallow:!0}))this._isInInsertedElement(t.parent)||this._markAttribute(t);break;case"remove":case"move":case"reinsert":{if(e.sourcePosition.isEqual(e.targetPosition)||e.sourcePosition.getShiftedBy(e.howMany).isEqual(e.targetPosition))return;const t=this._isInInsertedElement(e.sourcePosition.parent),n=this._isInInsertedElement(e.targetPosition.parent);t||this._markRemove(e.sourcePosition.parent,e.sourcePosition.offset,e.howMany),n||this._markInsert(e.targetPosition.parent,e.getMovedRangeStart().offset,e.howMany);const r=Ql._createFromPositionAndShift(e.sourcePosition,e.howMany);for(const t of r.getItems({shallow:!0}))this._setElementState(t,"move");break}case"rename":{if(this._isInInsertedElement(e.position.parent))return;this._markRemove(e.position.parent,e.position.offset,1),this._markInsert(e.position.parent,e.position.offset,1);const t=Ql._createFromPositionAndShift(e.position,1);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getData();this.bufferMarkerChange(e.name,t,t)}this._setElementState(e.position.nodeAfter,"rename");break}case"split":{const t=e.splitPosition.parent;if(!this._isInInsertedElement(t)){this._markRemove(t,e.splitPosition.offset,e.howMany);const n=Ql._createFromPositionAndShift(e.splitPosition,e.howMany);for(const t of n.getItems({shallow:!0}))this._setElementState(t,"move")}this._isInInsertedElement(e.insertionPosition.parent)||this._markInsert(e.insertionPosition.parent,e.insertionPosition.offset,1),e.graveyardPosition&&(this._markRemove(e.graveyardPosition.parent,e.graveyardPosition.offset,1),this._setElementState(e.graveyardPosition.nodeAfter,"move"));break}case"merge":{const t=e.sourcePosition.parent;this._isInInsertedElement(t.parent)||this._markRemove(t.parent,t.startOffset,1);const n=e.graveyardPosition.parent;this._markInsert(n,e.graveyardPosition.offset,1),this._setElementState(t,"move");const r=e.targetPosition.parent;if(!this._isInInsertedElement(r)){this._markInsert(r,e.targetPosition.offset,t.maxOffset);const n=Ql._createFromPositionAndShift(e.sourcePosition,e.howMany);for(const t of n.getItems({shallow:!0}))this._setElementState(t,"move")}break}case"detachRoot":case"addRoot":{const t=e.affectedSelectable;if(!t._isLoaded)return;if(t.isAttached()==e.isAdd)return;this._bufferRootStateChange(e.rootName,e.isAdd);break}case"addRootAttribute":case"removeRootAttribute":case"changeRootAttribute":{if(!e.root._isLoaded)return;const t=e.root.rootName;this._bufferRootAttributeChange(t,e.key,e.oldValue,e.newValue);break}}this._cachedChanges=null}bufferMarkerChange(t,e,n){e.range&&e.range.root.is("rootElement")&&!e.range.root._isLoaded&&(e.range=null),n.range&&n.range.root.is("rootElement")&&!n.range.root._isLoaded&&(n.range=null);let r=this._changedMarkers.get(t);r?r.newMarkerData=n:(r={newMarkerData:n,oldMarkerData:e},this._changedMarkers.set(t,r)),null==r.oldMarkerData.range&&null==n.range&&this._changedMarkers.delete(t)}getMarkersToRemove(){const t=[];for(const[e,n]of this._changedMarkers)null!=n.oldMarkerData.range&&t.push({name:e,range:n.oldMarkerData.range});return t}getMarkersToAdd(){const t=[];for(const[e,n]of this._changedMarkers)null!=n.newMarkerData.range&&t.push({name:e,range:n.newMarkerData.range});return t}getChangedMarkers(){return Array.from(this._changedMarkers).map((([t,e])=>({name:t,data:{oldRange:e.oldMarkerData.range,newRange:e.newMarkerData.range}})))}hasDataChanges(){if(this.getChanges().length)return!0;if(this._changedRoots.size>0)return!0;for(const{newMarkerData:t,oldMarkerData:e}of this._changedMarkers.values()){if(t.affectsData!==e.affectsData)return!0;if(t.affectsData){const n=t.range&&!e.range,r=!t.range&&e.range,i=t.range&&e.range&&!t.range.isEqual(e.range);if(n||r||i)return!0}}return!1}getChanges(t={}){if(this._cachedChanges)return t.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();let e=[];for(const t of this._changesInElement.keys()){const n=this._changesInElement.get(t).sort(((t,e)=>t.offset===e.offset?t.type!=e.type?"remove"==t.type?-1:1:0:t.offsett.position.root!=e.position.root?t.position.root.rootNamet));for(const t of e)delete t.changeCount,"attribute"==t.type&&(delete t.position,delete t.length);return this._changeCount=0,this._cachedChangesWithGraveyard=e,this._cachedChanges=e.filter(ch),t.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice()}getChangedRoots(){return Array.from(this._changedRoots.values()).map((t=>{const e={...t};return void 0!==e.state&&delete e.attributes,e}))}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(t){if(this._isInInsertedElement(t.parent))return;this._markRemove(t.parent,t.startOffset,t.offsetSize),this._markInsert(t.parent,t.startOffset,t.offsetSize),this._refreshedItems.add(t),this._setElementState(t,"refresh");const e=Ql._createOn(t);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getData();this.bufferMarkerChange(t.name,e,e)}this._cachedChanges=null}_bufferRootLoad(t){if(t.isAttached()){this._bufferRootStateChange(t.rootName,!0),this._markInsert(t,0,t.maxOffset);for(const e of t.getAttributeKeys())this._bufferRootAttributeChange(t.rootName,e,null,t.getAttribute(e));for(const e of this._markerCollection)if(e.getRange().root==t){const t=e.getData();this.bufferMarkerChange(e.name,{...t,range:null},t)}}}_bufferRootStateChange(t,e){if(!this._changedRoots.has(t))return void this._changedRoots.set(t,{name:t,state:e?"attached":"detached"});const n=this._changedRoots.get(t);void 0!==n.state?(delete n.state,void 0===n.attributes&&this._changedRoots.delete(t)):n.state=e?"attached":"detached"}_bufferRootAttributeChange(t,e,n,r){const i=this._changedRoots.get(t)||{name:t},o=i.attributes||{};if(o[e]){const t=o[e];r===t.oldValue?delete o[e]:t.newValue=r}else o[e]={oldValue:n,newValue:r};0===Object.entries(o).length?(delete i.attributes,void 0===i.state&&this._changedRoots.delete(t)):(i.attributes=o,this._changedRoots.set(t,i))}_markInsert(t,e,n){if(t.root.is("rootElement")&&!t.root._isLoaded)return;const r={type:"insert",offset:e,howMany:n,count:this._changeCount++};this._markChange(t,r)}_markRemove(t,e,n){if(t.root.is("rootElement")&&!t.root._isLoaded)return;const r={type:"remove",offset:e,howMany:n,count:this._changeCount++};this._markChange(t,r),this._removeAllNestedChanges(t,e,n)}_markAttribute(t){if(t.root.is("rootElement")&&!t.root._isLoaded)return;const e={type:"attribute",offset:t.startOffset,howMany:t.offsetSize,count:this._changeCount++};this._markChange(t.parent,e)}_markChange(t,e){this._makeSnapshots(t);const n=this._getChangesForElement(t);this._handleChange(e,n),n.push(e);for(let t=0;tn&&this._elementState.set(t,e)}_getDiffActionForNode(t,e){if(!t.is("element"))return e;if(!this._elementsSnapshots.has(t))return e;const n=this._elementState.get(t);return n&&"move"!=n?n:e}_getChangesForElement(t){let e;return this._changesInElement.has(t)?e=this._changesInElement.get(t):(e=[],this._changesInElement.set(t,e)),e}_makeSnapshots(t){if(this._elementChildrenSnapshots.has(t))return;const e=ah(t.getChildren());this._elementChildrenSnapshots.set(t,e);for(const t of e)this._elementsSnapshots.set(t.node,t)}_handleChange(t,e){t.nodesToHandle=t.howMany;for(const n of e){const r=t.offset+t.howMany,i=n.offset+n.howMany;if("insert"==t.type&&("insert"==n.type&&(t.offset<=n.offset?n.offset+=t.howMany:t.offsetn.offset){if(r>i){const t={type:"attribute",offset:i,howMany:r-i,count:this._changeCount++};this._handleChange(t,e),e.push(t)}t.nodesToHandle=n.offset-t.offset,t.howMany=t.nodesToHandle}else t.offset>=n.offset&&t.offseti?(t.nodesToHandle=r-i,t.offset=i):t.nodesToHandle=0);if("remove"==n.type&&t.offsetn.offset){const i={type:"attribute",offset:n.offset,howMany:r-n.offset,count:this._changeCount++};this._handleChange(i,e),e.push(i),t.nodesToHandle=n.offset-t.offset,t.howMany=t.nodesToHandle}"attribute"==n.type&&(t.offset>=n.offset&&r<=i?(t.nodesToHandle=0,t.howMany=0,t.offset=0):t.offset<=n.offset&&r>=i&&(n.howMany=0))}}t.howMany=t.nodesToHandle,delete t.nodesToHandle}_getInsertDiff(t,e,n,r,i){const o={type:"insert",position:$l._createAt(t,e),name:r.name,attributes:new Map(r.attributes),length:1,changeCount:this._changeCount++,action:n};return"insert"!=n&&i&&(o.before={name:i.name,attributes:new Map(i.attributes)}),o}_getRemoveDiff(t,e,n,r){return{type:"remove",action:n,position:$l._createAt(t,e),name:r.name,attributes:new Map(r.attributes),length:1,changeCount:this._changeCount++}}_getAttributesDiff(t,e,n){const r=[];n=new Map(n);for(const[i,o]of e){const e=n.has(i)?n.get(i):null;e!==o&&r.push({type:"attribute",position:t.start,range:t.clone(),length:1,attributeKey:i,attributeOldValue:o,attributeNewValue:e,changeCount:this._changeCount++}),n.delete(i)}for(const[e,i]of n)r.push({type:"attribute",position:t.start,range:t.clone(),length:1,attributeKey:e,attributeOldValue:null,attributeNewValue:i,changeCount:this._changeCount++});return r}_isInInsertedElement(t){const e=t.parent;if(!e)return!1;const n=this._changesInElement.get(e),r=t.startOffset;if(n)for(const t of n)if("insert"==t.type&&r>=t.offset&&rr){for(let e=0;e1500)for(let e=0;ethis._version+1&&this._gaps.set(this._version,t),this._version=t}get lastOperation(){return this._operations[this._operations.length-1]}addOperation(t){if(t.baseVersion!==this.version)throw new kr("model-document-history-addoperation-incorrect-version",this,{operation:t,historyVersion:this.version});this._operations.push(t),this._version++,this._baseVersionToOperationIndex.set(t.baseVersion,this._operations.length-1)}getOperations(t,e=this.version){if(!this._operations.length)return[];const n=this._operations[0];void 0===t&&(t=n.baseVersion);let r=e-1;for(const[e,n]of this._gaps)t>e&&te&&rthis.lastOperation.baseVersion)return[];let i=this._baseVersionToOperationIndex.get(t);void 0===i&&(i=0);let o=this._baseVersionToOperationIndex.get(r);return void 0===o&&(o=this._operations.length-1),this._operations.slice(i,o+1)}getOperation(t){const e=this._baseVersionToOperationIndex.get(t);if(void 0!==e)return this._operations[e]}setOperationAsUndone(t,e){this._undoPairs.set(e,t),this._undoneOperations.add(t)}isUndoingOperation(t){return this._undoPairs.has(t)}isUndoneOperation(t){return this._undoneOperations.has(t)}getUndoneOperation(t){return this._undoPairs.get(t)}reset(){this._version=0,this._undoPairs=new Map,this._operations=[],this._undoneOperations=new Set,this._gaps=new Map,this._baseVersionToOperationIndex=new Map}}class hh extends ql{rootName;_document;_isAttached=!0;_isLoaded=!0;constructor(t,e,n="main"){super(e),this._document=t,this.rootName=n}get document(){return this._document}isAttached(){return this._isAttached}toJSON(){return this.rootName}}hh.prototype.is=function(t,e){return e?e===this.name&&("rootElement"===t||"model:rootElement"===t||"element"===t||"model:element"===t):"rootElement"===t||"model:rootElement"===t||"element"===t||"model:element"===t||"node"===t||"model:node"===t};const uh="$graveyard";class mh extends(Dr()){model;history;selection;roots;differ;isReadOnly;_postFixers;_hasSelectionChangedFromTheLastChangeBlock;constructor(t){super(),this.model=t,this.history=new dh,this.selection=new fc(this),this.roots=new xo({idProperty:"rootName"}),this.differ=new oh(t.markers),this.isReadOnly=!1,this._postFixers=new Set,this._hasSelectionChangedFromTheLastChangeBlock=!1,this.createRoot("$root",uh),this.listenTo(t,"applyOperation",((t,e)=>{const n=e[0];n.isDocumentOperation&&this.differ.bufferOperation(n)}),{priority:"high"}),this.listenTo(t,"applyOperation",((t,e)=>{const n=e[0];n.isDocumentOperation&&this.history.addOperation(n)}),{priority:"low"}),this.listenTo(this.selection,"change",(()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0})),this.listenTo(t.markers,"update",((t,e,n,r,i)=>{const o={...e.getData(),range:r};this.differ.bufferMarkerChange(e.name,i,o),null===n&&e.on("change",((t,n)=>{const r=e.getData();this.differ.bufferMarkerChange(e.name,{...r,range:n},r)}))})),this.registerPostFixer((t=>{let e=!1;for(const n of this.roots)n.isAttached()||n.isEmpty||(t.remove(t.createRangeIn(n)),e=!0);for(const n of this.model.markers)n.getRange().root.isAttached()||(t.removeMarker(n),e=!0);return e}))}get version(){return this.history.version}set version(t){this.history.version=t}get graveyard(){return this.getRoot(uh)}createRoot(t="$root",e="main"){if(this.roots.get(e))throw new kr("model-document-createroot-name-exists",this,{name:e});const n=new hh(this,t,e);return this.roots.add(n),n}destroy(){this.selection.destroy(),this.stopListening()}getRoot(t="main"){return this.roots.get(t)}getRootNames(t=!1){return this.getRoots(t).map((t=>t.rootName))}getRoots(t=!1){return this.roots.filter((e=>e!=this.graveyard&&(t||e.isAttached())&&e._isLoaded))}registerPostFixer(t){this._postFixers.add(t)}toJSON(){const t=rs(this);return t.selection="[engine.model.DocumentSelection]",t.model="[engine.model.Model]",t}_handleChangeBlock(t){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(t),this.selection.refresh(),this.differ.hasDataChanges()?this.fire("change:data",t.batch):this.fire("change",t.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}_hasDocumentChangedFromTheLastChangeBlock(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}_getDefaultRoot(){const t=this.getRoots();return t.length?t[0]:this.graveyard}_getDefaultRange(){const t=this._getDefaultRoot(),e=this.model,n=e.schema,r=e.createPositionFromPath(t,[0]);return n.getNearestSelectionRange(r)||e.createRange(r)}_validateSelectionRange(t){return gh(t.start)&&gh(t.end)}_callPostFixers(t){let e=!1;do{for(const n of this._postFixers)if(this.selection.refresh(),e=n(t),e)break}while(e)}}function gh(t){const e=t.textNode;if(e){const n=e.data,r=t.offset-e.startOffset;return!Io(n,r)&&!Po(n,r)}return!0}class ph extends(Dr()){_markers=new Map;[Symbol.iterator](){return this._markers.values()}has(t){const e=t instanceof fh?t.name:t;return this._markers.has(e)}get(t){return this._markers.get(t)||null}_set(t,e,n=!1,r=!1){const i=t instanceof fh?t.name:t;if(i.includes(","))throw new kr("markercollection-incorrect-marker-name",this);const o=this._markers.get(i);if(o){const t=o.getData(),s=o.getRange();let a=!1;return s.isEqual(e)||(o._attachLiveRange(uc.fromRange(e)),a=!0),n!=o.managedUsingOperations&&(o._managedUsingOperations=n,a=!0),"boolean"==typeof r&&r!=o.affectsData&&(o._affectsData=r,a=!0),a&&this.fire(`update:${i}`,o,s,e,t),o}const s=uc.fromRange(e),a=new fh(i,s,n,r);return this._markers.set(i,a),this.fire(`update:${i}`,a,null,e,{...a.getData(),range:null}),a}_remove(t){const e=t instanceof fh?t.name:t,n=this._markers.get(e);return!!n&&(this._markers.delete(e),this.fire(`update:${e}`,n,n.getRange(),null,n.getData()),this._destroyMarker(n),!0)}_refresh(t){const e=t instanceof fh?t.name:t,n=this._markers.get(e);if(!n)throw new kr("markercollection-refresh-marker-not-exists",this);const r=n.getRange();this.fire(`update:${e}`,n,r,r,n.getData())}*getMarkersAtPosition(t){for(const e of this)e.getRange().containsPosition(t)&&(yield e)}*getMarkersIntersectingRange(t){for(const e of this)null!==e.getRange().getIntersection(t)&&(yield e)}destroy(){for(const t of this._markers.values())this._destroyMarker(t);this._markers=null,this.stopListening()}*getMarkersGroup(t){for(const e of this._markers.values())e.name.startsWith(t+":")&&(yield e)}_destroyMarker(t){t.stopListening(),t._detachLiveRange()}}class fh extends(Dr(Ml)){name;_managedUsingOperations;_affectsData;_liveRange;constructor(t,e,n,r){super(),this.name=t,this._liveRange=this._attachLiveRange(e),this._managedUsingOperations=n,this._affectsData=r}get managedUsingOperations(){if(!this._liveRange)throw new kr("marker-destroyed",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new kr("marker-destroyed",this);return this._affectsData}getData(){return{range:this.getRange(),affectsData:this.affectsData,managedUsingOperations:this.managedUsingOperations}}getStart(){if(!this._liveRange)throw new kr("marker-destroyed",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new kr("marker-destroyed",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new kr("marker-destroyed",this);return this._liveRange.toRange()}_attachLiveRange(t){return this._liveRange&&this._detachLiveRange(),t.delegate("change:range").to(this),t.delegate("change:content").to(this),this._liveRange=t,t}_detachLiveRange(){this._liveRange.stopDelegating("change:range",this),this._liveRange.stopDelegating("change:content",this),this._liveRange.detach(),this._liveRange=null}}fh.prototype.is=function(t){return"marker"===t||"model:marker"===t};class bh extends Cd{sourcePosition;howMany;constructor(t,e){super(null),this.sourcePosition=t.clone(),this.howMany=e}get type(){return"detach"}get affectedSelectable(){return null}toJSON(){const t=super.toJSON();return t.sourcePosition=this.sourcePosition.toJSON(),t}_validate(){if(this.sourcePosition.root.document)throw new kr("detach-operation-on-document-node",this)}_execute(){yd(Ql._createFromPositionAndShift(this.sourcePosition,this.howMany))}static get className(){return"DetachOperation"}}class kh extends Ml{markers=new Map;_children=new Ol;constructor(t){super(),t&&this._insertChild(0,t)}[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(t){return this._children.getNode(t)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(t){return this._children.getNodeIndex(t)}getChildStartOffset(t){return this._children.getNodeStartOffset(t)}getPath(){return[]}getNodeByPath(t){let e=this;for(const n of t)e=e.getChild(e.offsetToIndex(n));return e}offsetToIndex(t){return this._children.offsetToIndex(t)}toJSON(){const t=[];for(const e of this._children)t.push(e.toJSON());return t}static fromJSON(t){const e=[];for(const n of t)n.name?e.push(ql.fromJSON(n)):e.push(Hl.fromJSON(n));return new kh(e)}_appendChild(t){this._insertChild(this.childCount,t)}_insertChild(t,e){const n=function(t){if("string"==typeof t)return[new Hl(t)];Yr(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new Hl(t):t instanceof jl?new Hl(t.data,t.getAttributes()):t))}(e);for(const t of n)null!==t.parent&&t._remove(),t.parent=this;this._children._insertNodes(t,n)}_removeChildren(t,e=1){const n=this._children._removeNodes(t,e);for(const t of n)t.parent=null;return n}}kh.prototype.is=function(t){return"documentFragment"===t||"model:documentFragment"===t};class wh{model;batch;constructor(t,e){this.model=t,this.batch=e}createText(t,e){return new Hl(t,e)}createElement(t,e){return new ql(t,e)}createDocumentFragment(){return new kh}cloneElement(t,e=!0){return t._clone(e)}insert(t,e,n=0){if(this._assertWriterUsedCorrectly(),t instanceof Hl&&""==t.data)return;const r=$l._createAt(e,n);if(t.parent){if(yh(t.root,r.root))return void this.move(Ql._createOn(t),r);if(t.root.document)throw new kr("model-writer-insert-forbidden-move",this);this.remove(t)}const i=r.root.document?r.root.document.version:null,o=new Id(r,t,i);if(t instanceof Hl&&(o.shouldReceiveAttributes=!0),this.batch.addOperation(o),this.model.applyOperation(o),t instanceof kh)for(const[e,n]of t.markers){const t=$l._createAt(n.root,0),i={range:new Ql(n.start._getCombined(t,r),n.end._getCombined(t,r)),usingOperation:!0,affectsData:!0};this.model.markers.has(e)?this.updateMarker(e,i):this.addMarker(e,i)}}insertText(t,e,n,r){e instanceof kh||e instanceof ql||e instanceof $l?this.insert(this.createText(t),e,n):this.insert(this.createText(t,e),n,r)}insertElement(t,e,n,r){e instanceof kh||e instanceof ql||e instanceof $l?this.insert(this.createElement(t),e,n):this.insert(this.createElement(t,e),n,r)}append(t,e){this.insert(t,e,"end")}appendText(t,e,n){e instanceof kh||e instanceof ql?this.insert(this.createText(t),e,"end"):this.insert(this.createText(t,e),n,"end")}appendElement(t,e,n){e instanceof kh||e instanceof ql?this.insert(this.createElement(t),e,"end"):this.insert(this.createElement(t,e),n,"end")}setAttribute(t,e,n){if(this._assertWriterUsedCorrectly(),n instanceof Ql){const r=n.getMinimalFlatRanges();for(const n of r)Ah(this,t,e,n)}else _h(this,t,e,n)}setAttributes(t,e){for(const[n,r]of So(t))this.setAttribute(n,r,e)}removeAttribute(t,e){if(this._assertWriterUsedCorrectly(),e instanceof Ql){const n=e.getMinimalFlatRanges();for(const e of n)Ah(this,t,null,e)}else _h(this,t,null,e)}clearAttributes(t){this._assertWriterUsedCorrectly();const e=t=>{for(const e of t.getAttributeKeys())this.removeAttribute(e,t)};if(t instanceof Ql)for(const n of t.getItems())e(n);else e(t)}move(t,e,n){if(this._assertWriterUsedCorrectly(),!(t instanceof Ql))throw new kr("writer-move-invalid-range",this);if(!t.isFlat)throw new kr("writer-move-range-not-flat",this);const r=$l._createAt(e,n);if(r.isEqual(t.start))return;if(this._addOperationForAffectedMarkers("move",t),!yh(t.root,r.root))throw new kr("writer-move-different-document",this);const i=t.root.document?t.root.document.version:null,o=new Td(t.start,t.end.offset-t.start.offset,r,i);this.batch.addOperation(o),this.model.applyOperation(o)}remove(t){this._assertWriterUsedCorrectly();const e=(t instanceof Ql?t:Ql._createOn(t)).getMinimalFlatRanges().reverse();for(const t of e)this._addOperationForAffectedMarkers("move",t),vh(t.start,t.end.offset-t.start.offset,this.batch,this.model)}merge(t){this._assertWriterUsedCorrectly();const e=t.nodeBefore,n=t.nodeAfter;if(this._addOperationForAffectedMarkers("merge",t),!(e instanceof ql))throw new kr("writer-merge-no-element-before",this);if(!(n instanceof ql))throw new kr("writer-merge-no-element-after",this);t.root.document?this._merge(t):this._mergeDetached(t)}createPositionFromPath(t,e,n){return this.model.createPositionFromPath(t,e,n)}createPositionAt(t,e){return this.model.createPositionAt(t,e)}createPositionAfter(t){return this.model.createPositionAfter(t)}createPositionBefore(t){return this.model.createPositionBefore(t)}createRange(t,e){return this.model.createRange(t,e)}createRangeIn(t){return this.model.createRangeIn(t)}createRangeOn(t){return this.model.createRangeOn(t)}createSelection(...t){return this.model.createSelection(...t)}_mergeDetached(t){const e=t.nodeBefore,n=t.nodeAfter;this.move(Ql._createIn(n),$l._createAt(e,"end")),this.remove(n)}_merge(t){const e=$l._createAt(t.nodeBefore,"end"),n=$l._createAt(t.nodeAfter,0),r=t.root.document.graveyard,i=new $l(r,[0]),o=t.root.document.version,s=new Vd(n,t.nodeAfter.maxOffset,e,i,o);this.batch.addOperation(s),this.model.applyOperation(s)}rename(t,e){if(this._assertWriterUsedCorrectly(),!(t instanceof ql))throw new kr("writer-rename-not-element-instance",this);const n=t.root.document?t.root.document.version:null,r=new Md($l._createBefore(t),t.name,e,n);this.batch.addOperation(r),this.model.applyOperation(r)}split(t,e){this._assertWriterUsedCorrectly();let n,r,i=t.parent;if(!i.parent)throw new kr("writer-split-element-no-parent",this);if(e||(e=i.parent),!t.parent.getAncestors({includeSelf:!0}).includes(e))throw new kr("writer-split-invalid-limit-element",this);do{const e=i.root.document?i.root.document.version:null,o=i.maxOffset-t.offset,s=Pd.getInsertionPosition(t),a=new Pd(t,o,s,null,e);this.batch.addOperation(a),this.model.applyOperation(a),n||r||(n=i,r=t.parent.nextSibling),i=(t=this.createPositionAfter(t.parent)).parent}while(i!==e);return{position:t,range:new Ql($l._createAt(n,"end"),$l._createAt(r,0))}}wrap(t,e){if(this._assertWriterUsedCorrectly(),!t.isFlat)throw new kr("writer-wrap-range-not-flat",this);const n=e instanceof ql?e:new ql(e);if(n.childCount>0)throw new kr("writer-wrap-element-not-empty",this);if(null!==n.parent)throw new kr("writer-wrap-element-attached",this);this.insert(n,t.start);const r=new Ql(t.start.getShiftedBy(1),t.end.getShiftedBy(1));this.move(r,$l._createAt(n,0))}unwrap(t){if(this._assertWriterUsedCorrectly(),null===t.parent)throw new kr("writer-unwrap-element-no-parent",this);this.move(Ql._createIn(t),this.createPositionAfter(t)),this.remove(t)}addMarker(t,e){if(this._assertWriterUsedCorrectly(),!e||"boolean"!=typeof e.usingOperation)throw new kr("writer-addmarker-no-usingoperation",this);const n=e.usingOperation,r=e.range,i=void 0!==e.affectsData&&e.affectsData;if(this.model.markers.has(t))throw new kr("writer-addmarker-marker-exists",this);if(!r)throw new kr("writer-addmarker-no-range",this);return n?(Ch(this,t,null,r,i),this.model.markers.get(t)):this.model.markers._set(t,r,n,i)}updateMarker(t,e){this._assertWriterUsedCorrectly();const n="string"==typeof t?t:t.name,r=this.model.markers.get(n);if(!r)throw new kr("writer-updatemarker-marker-not-exists",this);if(!e)return wr("writer-updatemarker-reconvert-using-editingcontroller",{markerName:n}),void this.model.markers._refresh(r);const i="boolean"==typeof e.usingOperation,o="boolean"==typeof e.affectsData,s=o?e.affectsData:r.affectsData;if(!i&&!e.range&&!o)throw new kr("writer-updatemarker-wrong-options",this);const a=r.getRange(),l=e.range?e.range:a;i&&e.usingOperation!==r.managedUsingOperations?e.usingOperation?Ch(this,n,null,l,s):(Ch(this,n,a,null,s),this.model.markers._set(n,l,void 0,s)):r.managedUsingOperations?Ch(this,n,a,l,s):this.model.markers._set(n,l,void 0,s)}removeMarker(t){this._assertWriterUsedCorrectly();const e="string"==typeof t?t:t.name;if(!this.model.markers.has(e))throw new kr("writer-removemarker-no-marker",this);const n=this.model.markers.get(e);if(!n.managedUsingOperations)return void this.model.markers._remove(e);Ch(this,e,n.getRange(),null,n.affectsData)}addRoot(t,e="$root"){this._assertWriterUsedCorrectly();const n=this.model.document.getRoot(t);if(n&&n.isAttached())throw new kr("writer-addroot-root-exists",this);const r=this.model.document,i=new Od(t,e,!0,r,r.version);return this.batch.addOperation(i),this.model.applyOperation(i),this.model.document.getRoot(t)}detachRoot(t){this._assertWriterUsedCorrectly();const e="string"==typeof t?this.model.document.getRoot(t):t;if(!e||!e.isAttached())throw new kr("writer-detachroot-no-root",this);for(const t of this.model.markers)t.getRange().root===e&&this.removeMarker(t);for(const t of e.getAttributeKeys())this.removeAttribute(t,e);this.remove(this.createRangeIn(e));const n=this.model.document,r=new Od(e.rootName,e.name,!1,n,n.version);this.batch.addOperation(r),this.model.applyOperation(r)}setSelection(...t){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(...t)}setSelectionFocus(t,e){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(t,e)}setSelectionAttribute(t,e){if(this._assertWriterUsedCorrectly(),"string"==typeof t)this._setSelectionAttribute(t,e);else for(const[e,n]of So(t))this._setSelectionAttribute(e,n)}removeSelectionAttribute(t){if(this._assertWriterUsedCorrectly(),"string"==typeof t)this._removeSelectionAttribute(t);else for(const e of t)this._removeSelectionAttribute(e)}overrideSelectionGravity(){return this.model.document.selection._overrideGravity()}restoreSelectionGravity(t){this.model.document.selection._restoreGravity(t)}_setSelectionAttribute(t,e){const n=this.model.document.selection;if(n.isCollapsed&&n.anchor.parent.isEmpty){const r=fc._getStoreAttributeKey(t);this.setAttribute(r,e,n.anchor.parent)}n._setAttribute(t,e)}_removeSelectionAttribute(t){const e=this.model.document.selection;if(e.isCollapsed&&e.anchor.parent.isEmpty){const n=fc._getStoreAttributeKey(t);this.removeAttribute(n,e.anchor.parent)}e._removeAttribute(t)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new kr("writer-incorrect-use",this)}_addOperationForAffectedMarkers(t,e){for(const n of this.model.markers){if(!n.managedUsingOperations)continue;const r=n.getRange();let i=!1;if("move"===t){const t=e;i=t.containsPosition(r.start)||t.start.isEqual(r.start)||t.containsPosition(r.end)||t.end.isEqual(r.end)}else{const t=e,n=t.nodeBefore,o=t.nodeAfter,s=r.start.parent==n&&r.start.isAtEnd,a=r.end.parent==o&&0==r.end.offset,l=r.end.nodeAfter==o,c=r.start.nodeAfter==o;i=s||a||l||c}i&&this.updateMarker(n.name,{range:r})}}}function Ah(t,e,n,r){const i=t.model,o=i.document;let s,a,l,c=r.start;for(const t of r.getWalker({shallow:!0}))l=t.item.getAttribute(e),s&&a!=l&&(a!=n&&d(),c=s),s=t.nextPosition,a=l;function d(){const r=new Ql(c,s),l=r.root.document?o.version:null,d=new Ld(r,e,a,n,l);t.batch.addOperation(d),i.applyOperation(d)}s instanceof $l&&s!=c&&a!=n&&d()}function _h(t,e,n,r){const i=t.model,o=i.document,s=r.getAttribute(e);let a,l;if(s!=n){if(r.root===r){const t=r.document?o.version:null;l=new Nd(r,e,s,n,t)}else{a=new Ql($l._createBefore(r),t.createPositionAfter(r));const i=a.root.document?o.version:null;l=new Ld(a,e,s,n,i)}t.batch.addOperation(l),i.applyOperation(l)}}function Ch(t,e,n,r,i){const o=t.model,s=o.document,a=new Fd(e,n,r,o.markers,!!i,s.version);t.batch.addOperation(a),o.applyOperation(a)}function vh(t,e,n,r){let i;if(t.root.document){const n=r.document,o=new $l(n.graveyard,[0]);i=new Td(t,e,o,n.version)}else i=new bh(t,e);n.addOperation(i),r.applyOperation(i)}function yh(t,e){return t===e||t instanceof hh&&e instanceof hh}function xh(t,e,n={}){if(e.isCollapsed)return;const r=e.getFirstRange();if("$graveyard"==r.root.rootName)return;const i=t.schema;t.change((t=>{if(!n.doNotResetEntireContent&&function(t,e){const n=t.getLimitElement(e);if(!e.containsEntireContent(n))return!1;const r=e.getFirstRange();if(r.start.parent==r.end.parent)return!1;return t.checkChild(n,"paragraph")}(i,e))return void function(t,e){const n=t.model.schema.getLimitElement(e);t.remove(t.createRangeIn(n)),Sh(t,t.createPositionAt(n,0),e)}(t,e);const o={};if(!n.doNotAutoparagraph){const t=e.getSelectedElement();t&&Object.assign(o,i.getAttributesWithProperty(t,"copyOnReplace",!0))}const[s,a]=function(t){const e=t.root.document.model,n=t.start;let r=t.end;if(e.hasContent(t,{ignoreMarkers:!0})){const n=function(t){const e=t.parent,n=e.root.document.model.schema,r=e.getAncestors({parentFirst:!0,includeSelf:!0});for(const t of r){if(n.isLimit(t))return null;if(n.isBlock(t))return t}}(r);if(n&&r.isTouching(e.createPositionAt(n,0))){const n=e.createSelection(t);e.modifySelection(n,{direction:"backward"});const i=n.getLastPosition(),o=e.createRange(i,r);e.hasContent(o,{ignoreMarkers:!0})||(r=i)}}return[eh.fromPosition(n,"toPrevious"),eh.fromPosition(r,"toNext")]}(r);s.isTouching(a)||t.remove(t.createRange(s,a)),n.leaveUnmerged||(!function(t,e,n){const r=t.model;if(!Dh(t.model.schema,e,n))return;const[i,o]=function(t,e){const n=t.getAncestors(),r=e.getAncestors();let i=0;for(;n[i]&&n[i]==r[i];)i++;return[n[i],r[i]]}(e,n);if(!i||!o)return;!r.hasContent(i,{ignoreMarkers:!0})&&r.hasContent(o,{ignoreMarkers:!0})?Bh(t,e,n,i.parent):Eh(t,e,n,i.parent)}(t,s,a),i.removeDisallowedAttributes(s.parent.getChildren(),t)),Th(t,e,s),!n.doNotAutoparagraph&&function(t,e){const n=t.checkChild(e,"$text"),r=t.checkChild(e,"paragraph");return!n&&r}(i,s)&&Sh(t,s,e,o),s.detach(),a.detach()}))}function Eh(t,e,n,r){const i=e.parent,o=n.parent;if(i!=r&&o!=r){for(e=t.createPositionAfter(i),(n=t.createPositionBefore(o)).isEqual(e)||t.insert(o,e),t.merge(e);n.parent.isEmpty;){const e=n.parent;n=t.createPositionBefore(e),t.remove(e)}Dh(t.model.schema,e,n)&&Eh(t,e,n,r)}}function Bh(t,e,n,r){const i=e.parent,o=n.parent;if(i!=r&&o!=r){for(e=t.createPositionAfter(i),(n=t.createPositionBefore(o)).isEqual(e)||t.insert(i,n);e.parent.isEmpty;){const n=e.parent;e=t.createPositionBefore(n),t.remove(n)}n=t.createPositionBefore(o),function(t,e){const n=e.nodeBefore,r=e.nodeAfter;n.name!=r.name&&t.rename(n,r.name);t.clearAttributes(n),t.setAttributes(Object.fromEntries(r.getAttributes()),n),t.merge(e)}(t,n),Dh(t.model.schema,e,n)&&Bh(t,e,n,r)}}function Dh(t,e,n){const r=e.parent,i=n.parent;return r!=i&&(!t.isLimit(r)&&!t.isLimit(i)&&function(t,e,n){const r=new Ql(t,e);for(const t of r.getWalker())if(n.isLimit(t.item))return!1;return!0}(e,n,t))}function Sh(t,e,n,r={}){const i=t.createElement("paragraph");t.model.schema.setAllowedAttributes(i,r,t),t.insert(i,e),Th(t,n,t.createPositionAt(i,0))}function Th(t,e,n){e instanceof fc?t.setSelection(n):e.setTo(n)}function Ih(t,e){const n=[];Array.from(t.getItems({direction:"backward"})).map((t=>e.createRangeOn(t))).filter((e=>(e.start.isAfter(t.start)||e.start.isEqual(t.start))&&(e.end.isBefore(t.end)||e.end.isEqual(t.end)))).forEach((t=>{n.push(t.start.parent),e.remove(t)})),n.forEach((t=>{let n=t;for(;n.parent&&n.isEmpty;){const t=e.createRangeOn(n);n=n.parent,e.remove(t)}}))}class Ph{model;writer;position;canMergeWith;schema;_documentFragment;_documentFragmentPosition;_firstNode=null;_lastNode=null;_lastAutoParagraph=null;_filterAttributesOf=[];_affectedStart=null;_affectedEnd=null;_nodeToSelect=null;constructor(t,e,n){this.model=t,this.writer=e,this.position=n,this.canMergeWith=new Set([this.position.parent]),this.schema=t.schema,this._documentFragment=e.createDocumentFragment(),this._documentFragmentPosition=e.createPositionAt(this._documentFragment,0)}handleNodes(t){for(const e of Array.from(t))this._handleNode(e);this._insertPartialFragment(),this._lastAutoParagraph&&this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph),this._mergeOnRight(),this.schema.removeDisallowedAttributes(this._filterAttributesOf,this.writer),this._filterAttributesOf=[]}_updateLastNodeFromAutoParagraph(t){const e=this.writer.createPositionAfter(this._lastNode),n=this.writer.createPositionAfter(t);if(n.isAfter(e)){if(this._lastNode=t,this.position.parent!=t||!this.position.isAtEnd)throw new kr("insertcontent-invalid-insertion-position",this);this.position=n,this._setAffectedBoundaries(this.position)}}getSelectionRange(){return this._nodeToSelect?Ql._createOn(this._nodeToSelect):this.model.schema.getNearestSelectionRange(this.position)}getAffectedRange(){return this._affectedStart?new Ql(this._affectedStart,this._affectedEnd):null}destroy(){this._affectedStart&&this._affectedStart.detach(),this._affectedEnd&&this._affectedEnd.detach()}_handleNode(t){this._checkAndSplitToAllowedPosition(t)?(this._appendToFragment(t),this._firstNode||(this._firstNode=t),this._lastNode=t):this.schema.isObject(t)||this._handleDisallowedNode(t)}_insertPartialFragment(){if(this._documentFragment.isEmpty)return;const t=eh.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=t.toPosition()),this._documentFragment.isEmpty||this.writer.insert(this._documentFragment,this.position),this._documentFragmentPosition=this.writer.createPositionAt(this._documentFragment,0),this.position=t.toPosition(),t.detach()}_handleDisallowedNode(t){t.is("element")&&this.handleNodes(t.getChildren())}_appendToFragment(t){if(!this.schema.checkChild(this.position,t))throw new kr("insertcontent-wrong-position",this,{node:t,position:this.position});this.writer.insert(t,this._documentFragmentPosition),this._documentFragmentPosition=this._documentFragmentPosition.getShiftedBy(t.offsetSize),this.schema.isObject(t)&&!this.schema.checkChild(this.position,"$text")?this._nodeToSelect=t:this._nodeToSelect=null,this._filterAttributesOf.push(t)}_setAffectedBoundaries(t){this._affectedStart||(this._affectedStart=eh.fromPosition(t,"toPrevious")),this._affectedEnd&&!this._affectedEnd.isBefore(t)||(this._affectedEnd&&this._affectedEnd.detach(),this._affectedEnd=eh.fromPosition(t,"toNext"))}_mergeOnLeft(){const t=this._firstNode;if(!(t instanceof ql))return;if(!this._canMergeLeft(t))return;const e=eh._createBefore(t);e.stickiness="toNext";const n=eh.fromPosition(this.position,"toNext");this._affectedStart.isEqual(e)&&(this._affectedStart.detach(),this._affectedStart=eh._createAt(e.nodeBefore,"end","toPrevious")),this._firstNode===this._lastNode&&(this._firstNode=e.nodeBefore,this._lastNode=e.nodeBefore),this.writer.merge(e),e.isEqual(this._affectedEnd)&&this._firstNode===this._lastNode&&(this._affectedEnd.detach(),this._affectedEnd=eh._createAt(e.nodeBefore,"end","toNext")),this.position=n.toPosition(),n.detach(),this._filterAttributesOf.push(this.position.parent),e.detach()}_mergeOnRight(){const t=this._lastNode;if(!(t instanceof ql))return;if(!this._canMergeRight(t))return;const e=eh._createAfter(t);if(e.stickiness="toNext",!this.position.isEqual(e))throw new kr("insertcontent-invalid-insertion-position",this);this.position=$l._createAt(e.nodeBefore,"end");const n=eh.fromPosition(this.position,"toPrevious");this._affectedEnd.isEqual(e)&&(this._affectedEnd.detach(),this._affectedEnd=eh._createAt(e.nodeBefore,"end","toNext")),this._firstNode===this._lastNode&&(this._firstNode=e.nodeBefore,this._lastNode=e.nodeBefore),this.writer.merge(e),e.getShiftedBy(-1).isEqual(this._affectedStart)&&this._firstNode===this._lastNode&&(this._affectedStart.detach(),this._affectedStart=eh._createAt(e.nodeBefore,0,"toPrevious")),this.position=n.toPosition(),n.detach(),this._filterAttributesOf.push(this.position.parent),e.detach()}_canMergeLeft(t){const e=t.previousSibling;return e instanceof ql&&this.canMergeWith.has(e)&&this.model.schema.checkMerge(e,t)}_canMergeRight(t){const e=t.nextSibling;return e instanceof ql&&this.canMergeWith.has(e)&&this.model.schema.checkMerge(t,e)}_insertAutoParagraph(){this._insertPartialFragment();const t=this.writer.createElement("paragraph");this.writer.insert(t,this.position),this._setAffectedBoundaries(this.position),this._lastAutoParagraph=t,this.position=this.writer.createPositionAt(t,0)}_checkAndSplitToAllowedPosition(t){const e=this._getAllowedIn(this.position.parent,t);if(!e)return!1;for(e!=this.position.parent&&this._insertPartialFragment();e!=this.position.parent;)if(this.position.isAtStart){const t=this.position.parent;this.position=this.writer.createPositionBefore(t),t.isEmpty&&t.parent===e&&this.writer.remove(t)}else if(this.position.isAtEnd)this.position=this.writer.createPositionAfter(this.position.parent);else{const t=this.writer.createPositionAfter(this.position.parent);this._setAffectedBoundaries(this.position),this.writer.split(this.position),this.position=t,this.canMergeWith.add(this.position.nodeAfter)}return this.schema.checkChild(this.position.parent,t)||this._insertAutoParagraph(),!0}_getAllowedIn(t,e){return this.schema.checkChild(t,e)||this.schema.checkChild(t,"paragraph")&&this.schema.checkChild("paragraph",e)?t:this.schema.isLimit(t)?null:this._getAllowedIn(t.parent,e)}}function Vh(t,e,n,r={}){if(!t.schema.isObject(e))throw new kr("insertobject-element-not-an-object",t,{object:e});const i=n||t.document.selection;let o=i;r.findOptimalPosition&&t.schema.isBlock(e)&&(o=t.createSelection(t.schema.findOptimalInsertionRange(i,r.findOptimalPosition)));const s=Eo(i.getSelectedBlocks()),a={};return s&&Object.assign(a,t.schema.getAttributesWithProperty(s,"copyOnReplace",!0)),t.change((n=>{o.isCollapsed||t.deleteContent(o,{doNotAutoparagraph:!0});let i=e;const s=o.anchor.parent;!t.schema.checkChild(s,e)&&t.schema.checkChild(s,"paragraph")&&t.schema.checkChild("paragraph",e)&&(i=n.createElement("paragraph"),n.insert(e,i)),t.schema.setAllowedAttributes(i,a,n);const l=t.insertContent(i,o);return l.isCollapsed||r.setSelection&&function(t,e,n,r){const i=t.model;if("on"==n)return void t.setSelection(e,"on");if("after"!=n)throw new kr("insertobject-invalid-place-parameter-value",i);let o=e.nextSibling;if(i.schema.isInline(e))return void t.setSelection(e,"after");const s=o&&i.schema.checkChild(o,"$text");!s&&i.schema.checkChild(e.parent,"paragraph")&&(o=t.createElement("paragraph"),i.schema.setAllowedAttributes(o,r,t),i.insertContent(o,t.createPositionAfter(e)));o&&t.setSelection(o,0)}(n,e,r.setSelection,a),l}))}function Fh(t,e){const{isForward:n,walker:r,unit:i,schema:o,treatEmojiAsSingleUnit:s}=t,{type:a,item:l,nextPosition:c}=e;if("text"==a)return"word"===t.unit?function(t,e){let n=t.position.textNode;n||(n=e?t.position.nodeAfter:t.position.nodeBefore);for(;n&&n.is("$text");){const r=t.position.offset-n.startOffset;if(zh(n,r,e))n=e?t.position.nodeAfter:t.position.nodeBefore;else{if(Lh(n.data,r,e))break;t.next()}}return t.position}(r,n):function(t,e,n){const r=t.position.textNode;if(r){const i=r.data;let o=t.position.offset-r.startOffset;for(;Io(i,o)||"character"==e&&Po(i,o)||n&&Fo(i,o);)t.next(),o=t.position.offset-r.startOffset}return t.position}(r,i,s);if(a==(n?"elementStart":"elementEnd")){if(o.isSelectable(l))return $l._createAt(l,n?"after":"before");if(o.checkChild(c,"$text"))return c}else{if(o.isLimit(l))return void r.skip((()=>!0));if(o.checkChild(c,"$text"))return c}}function Rh(t,e){const n=t.root,r=$l._createAt(n,e?"end":0);return e?new Ql(t,r):new Ql(r,t)}function Lh(t,e,n){const r=e+(n?0:-1);return' ,.?!:;"-()'.includes(t.charAt(r))}function zh(t,e,n){return e===(n?t.offsetSize:0)}class Mh extends(jr()){markers;document;schema;_pendingChanges;_currentWriter;constructor(){super(),this.markers=new ph,this.document=new mh(this),this.schema=new td,this._pendingChanges=[],this._currentWriter=null,["deleteContent","modifySelection","getSelectedContent","applyOperation"].forEach((t=>this.decorate(t))),this.on("applyOperation",((t,e)=>{e[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"),$c(this),this.document.registerPostFixer(Lc),this.on("insertContent",((t,[e,n])=>{t.return=function(t,e,n){return t.change((r=>{const i=n||t.document.selection;i.isCollapsed||t.deleteContent(i,{doNotAutoparagraph:!0});const o=new Ph(t,r,i.anchor),s=[];let a;if(e.is("documentFragment")){if(e.markers.size){const t=[];for(const[n,r]of e.markers){const{start:e,end:i}=r,o=e.isEqual(i);t.push({position:e,name:n,isCollapsed:o},{position:i,name:n,isCollapsed:o})}t.sort((({position:t},{position:e})=>t.isBefore(e)?1:-1));for(const{position:n,name:i,isCollapsed:o}of t){let t=null,a=null;const l=n.parent===e&&n.isAtStart,c=n.parent===e&&n.isAtEnd;l||c?o&&(a=l?"start":"end"):(t=r.createElement("$marker"),r.insert(t,n)),s.push({name:i,element:t,collapsed:a})}}a=e.getChildren()}else a=[e];o.handleNodes(a);let l=o.getSelectionRange();if(e.is("documentFragment")&&s.length){const t=l?uc.fromRange(l):null,e={};for(let t=s.length-1;t>=0;t--){const{name:n,element:i,collapsed:a}=s[t],l=!e[n];if(l&&(e[n]=[]),i){const t=r.createPositionAt(i,"before");e[n].push(t),r.remove(i)}else{const t=o.getAffectedRange();if(!t){a&&e[n].push(o.position);continue}a?e[n].push(t[a]):e[n].push(l?t.start:t.end)}}for(const[t,[n,i]]of Object.entries(e))n&&i&&n.root===i.root&&n.root.document&&!r.model.markers.has(t)&&r.addMarker(t,{usingOperation:!0,affectsData:!0,range:new Ql(n,i)});t&&(l=t.toRange(),t.detach())}l&&(i instanceof fc?r.setSelection(l):i.setTo(l));const c=o.getAffectedRange()||t.createRange(i.anchor);return o.destroy(),c}))}(this,e,n)})),this.on("insertObject",((t,[e,n,r])=>{t.return=Vh(this,e,n,r)})),this.on("canEditAt",(t=>{const e=!this.document.isReadOnly;t.return=e,e||t.stop()}))}change(t){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new ih,callback:t}),this._runPendingChanges()[0]):t(this._currentWriter)}catch(t){kr.rethrowUnexpectedError(t,this)}}enqueueChange(t,e){try{t?"function"==typeof t?(e=t,t=new ih):t instanceof ih||(t=new ih(t)):t=new ih,this._pendingChanges.push({batch:t,callback:e}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(t){kr.rethrowUnexpectedError(t,this)}}applyOperation(t){t._execute()}insertContent(t,e,n,...r){const i=Nh(e,n);return this.fire("insertContent",[t,i,n,...r])}insertObject(t,e,n,r,...i){const o=Nh(e,n);return this.fire("insertObject",[t,o,r,r,...i])}deleteContent(t,e){xh(this,t,e)}modifySelection(t,e){!function(t,e,n={}){const r=t.schema,i="backward"!=n.direction,o=n.unit?n.unit:"character",s=!!n.treatEmojiAsSingleUnit,a=e.focus,l=new Ul({boundaries:Rh(a,i),singleCharacters:!0,direction:i?"forward":"backward"}),c={walker:l,schema:r,isForward:i,unit:o,treatEmojiAsSingleUnit:s};let d;for(;d=l.next();){if(d.done)return;const n=Fh(c,d.value);if(n)return void(e instanceof fc?t.change((t=>{t.setSelectionFocus(n)})):e.setFocus(n))}}(this,t,e)}getSelectedContent(t){return function(t,e){return t.change((t=>{const n=t.createDocumentFragment(),r=e.getFirstRange();if(!r||r.isCollapsed)return n;const i=r.start.root,o=r.start.getCommonPath(r.end),s=i.getNodeByPath(o);let a;a=r.start.parent==r.end.parent?r:t.createRange(t.createPositionAt(s,r.start.path[o.length]),t.createPositionAt(s,r.end.path[o.length]+1));const l=a.end.offset-a.start.offset;for(const e of a.getItems({shallow:!0}))e.is("$textProxy")?t.appendText(e.data,e.getAttributes(),n):t.append(t.cloneElement(e,!0),n);if(a!=r){const e=r._getTransformedByMove(a.start,t.createPositionAt(n,0),l)[0],i=t.createRange(t.createPositionAt(n,0),e.start);Ih(t.createRange(e.end,t.createPositionAt(n,"end")),t),Ih(i,t)}return n}))}(this,t)}hasContent(t,e={}){const n=t instanceof Ql?t:Ql._createIn(t);if(n.isCollapsed)return!1;const{ignoreWhitespaces:r=!1,ignoreMarkers:i=!1}=e;if(!i)for(const t of this.markers.getMarkersIntersectingRange(n))if(t.affectsData)return!0;for(const t of n.getItems())if(this.schema.isContent(t)){if(!t.is("$textProxy"))return!0;if(!r)return!0;if(-1!==t.data.search(/\S/))return!0}return!1}canEditAt(t){const e=Nh(t);return this.fire("canEditAt",[e])}createPositionFromPath(t,e,n){return new $l(t,e,n)}createPositionAt(t,e){return $l._createAt(t,e)}createPositionAfter(t){return $l._createAfter(t)}createPositionBefore(t){return $l._createBefore(t)}createRange(t,e){return new Ql(t,e)}createRangeIn(t){return Ql._createIn(t)}createRangeOn(t){return Ql._createOn(t)}createSelection(...t){return new oc(...t)}createBatch(t){return new ih(t)}createOperationFromJSON(t){return jd.fromJSON(t,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const t=[];this.fire("_beforeChanges");try{for(;this._pendingChanges.length;){const e=this._pendingChanges[0].batch;this._currentWriter=new wh(this,e);const n=this._pendingChanges[0].callback(this._currentWriter);t.push(n),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}}finally{this._pendingChanges.length=0,this._currentWriter=null,this.fire("_afterChanges")}return t}}function Nh(t,e){if(t)return t instanceof oc||t instanceof fc?t:t instanceof Nl?e||0===e?new oc(t,e):t.is("rootElement")?new oc(t,"in"):new oc(t,"on"):new oc(t)}class Oh extends nl{domEventType="click";onDomEvent(t){this.fire(t.type,t)}}class Hh extends nl{domEventType=["mousedown","mouseup","mouseover","mouseout"];onDomEvent(t){this.fire(t.type,t)}}class jh{document;constructor(t){this.document=t}createDocumentFragment(t){return new ba(this.document,t)}createElement(t,e,n){return new Os(this.document,t,e,n)}createText(t){return new os(this.document,t)}clone(t,e=!1){return t._clone(e)}appendChild(t,e){return e._appendChild(t)}insertChild(t,e,n){return n._insertChild(t,e)}removeChildren(t,e,n){return n._removeChildren(t,e)}remove(t){const e=t.parent;return e?this.removeChildren(e.getChildIndex(t),1,e):[]}replace(t,e){const n=t.parent;if(n){const r=n.getChildIndex(t);return this.removeChildren(r,1,n),this.insertChild(r,e,n),!0}return!1}unwrapElement(t){const e=t.parent;if(e){const n=e.getChildIndex(t);this.remove(t),this.insertChild(n,t.getChildren(),e)}}rename(t,e){const n=new Os(this.document,t,e.getAttributes(),e.getChildren());return this.replace(e,n)?n:null}setAttribute(t,e,n){n._setAttribute(t,e)}removeAttribute(t,e){e._removeAttribute(t)}addClass(t,e){e._addClass(t)}removeClass(t,e){e._removeClass(t)}setStyle(t,e,n){q(t)&&void 0===n?e._setStyle(t):n._setStyle(t,e)}removeStyle(t,e){e._removeStyle(t)}setCustomProperty(t,e,n){n._setCustomProperty(t,e)}removeCustomProperty(t,e){return e._removeCustomProperty(t)}createPositionAt(t,e){return Ks._createAt(t,e)}createPositionAfter(t){return Ks._createAfter(t)}createPositionBefore(t){return Ks._createBefore(t)}createRange(t,e){return new Zs(t,e)}createRangeOn(t){return Zs._createOn(t)}createRangeIn(t){return Zs._createIn(t)}createSelection(...t){return new Js(...t)}}const qh=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,Uh=/^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i,Wh=/^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,$h=/^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i,Gh=/^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,Kh=/\w+\((?:[^()]|\([^()]*\))*\)|\S+/gi,Zh=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 Yh(t){return t.startsWith("#")?qh.test(t):t.startsWith("rgb")?Uh.test(t)||Wh.test(t):t.startsWith("hsl")?$h.test(t)||Gh.test(t):Zh.has(t.toLowerCase())}const Jh=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"];function Qh(t){return Jh.includes(t)}const Xh=/^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;function tu(t){return Xh.test(t)}const eu=/^[+-]?[0-9]*([.][0-9]+)?%$/;function nu(t){return eu.test(t)}const ru=["repeat-x","repeat-y","repeat","space","round","no-repeat"];function iu(t){return ru.includes(t)}const ou=["center","top","bottom","left","right"];function su(t){return ou.includes(t)}const au=["fixed","scroll","local"];function lu(t){return au.includes(t)}const cu=/^url\(/;function du(t){return cu.test(t)}function hu(t=""){if(""===t)return{top:void 0,right:void 0,bottom:void 0,left:void 0};const e=pu(t),n=e[0],r=e[2]||n,i=e[1]||n;return{top:n,bottom:r,right:i,left:e[3]||i}}function uu(t){return e=>{const{top:n,right:r,bottom:i,left:o}=e,s=[];return[n,r,o,i].every((t=>!!t))?s.push([t,mu(e)]):(n&&s.push([t+"-top",n]),r&&s.push([t+"-right",r]),i&&s.push([t+"-bottom",i]),o&&s.push([t+"-left",o])),s}}function mu({top:t,right:e,bottom:n,left:r}){const i=[];return r!==e?i.push(t,e,n,r):n!==t?i.push(t,e,n):e!==t?i.push(t,e):i.push(t),i.join(" ")}function gu(t){return e=>({path:t,value:hu(e)})}function pu(t){const e=t.trim().slice(0,1500).matchAll(Kh);return Array.from(e).map((t=>t[0]))}function fu(t){t.setNormalizer("background",(t=>{const e={},n=pu(t);for(const t of n)iu(t)?(e.repeat=e.repeat||[],e.repeat.push(t)):su(t)?(e.position=e.position||[],e.position.push(t)):lu(t)?e.attachment=t:Yh(t)?e.color=t:du(t)&&(e.image=t);return{path:"background",value:e}})),t.setNormalizer("background-color",(t=>({path:"background.color",value:t}))),t.setReducer("background",(t=>{const e=[];return e.push(["background-color",t.color]),e})),t.setStyleRelation("background",["background-color"])}function bu(t){t.setNormalizer("border",(t=>{const{color:e,style:n,width:r}=yu(t);return{path:"border",value:{color:hu(e),style:hu(n),width:hu(r)}}})),t.setNormalizer("border-top",ku("top")),t.setNormalizer("border-right",ku("right")),t.setNormalizer("border-bottom",ku("bottom")),t.setNormalizer("border-left",ku("left")),t.setNormalizer("border-color",wu("color")),t.setNormalizer("border-width",wu("width")),t.setNormalizer("border-style",wu("style")),t.setNormalizer("border-top-color",_u("color","top")),t.setNormalizer("border-top-style",_u("style","top")),t.setNormalizer("border-top-width",_u("width","top")),t.setNormalizer("border-right-color",_u("color","right")),t.setNormalizer("border-right-style",_u("style","right")),t.setNormalizer("border-right-width",_u("width","right")),t.setNormalizer("border-bottom-color",_u("color","bottom")),t.setNormalizer("border-bottom-style",_u("style","bottom")),t.setNormalizer("border-bottom-width",_u("width","bottom")),t.setNormalizer("border-left-color",_u("color","left")),t.setNormalizer("border-left-style",_u("style","left")),t.setNormalizer("border-left-width",_u("width","left")),t.setExtractor("border-top",Cu("top")),t.setExtractor("border-right",Cu("right")),t.setExtractor("border-bottom",Cu("bottom")),t.setExtractor("border-left",Cu("left")),t.setExtractor("border-top-color","border.color.top"),t.setExtractor("border-right-color","border.color.right"),t.setExtractor("border-bottom-color","border.color.bottom"),t.setExtractor("border-left-color","border.color.left"),t.setExtractor("border-top-width","border.width.top"),t.setExtractor("border-right-width","border.width.right"),t.setExtractor("border-bottom-width","border.width.bottom"),t.setExtractor("border-left-width","border.width.left"),t.setExtractor("border-top-style","border.style.top"),t.setExtractor("border-right-style","border.style.right"),t.setExtractor("border-bottom-style","border.style.bottom"),t.setExtractor("border-left-style","border.style.left"),t.setReducer("border-color",uu("border-color")),t.setReducer("border-style",uu("border-style")),t.setReducer("border-width",uu("border-width")),t.setReducer("border-top",xu("top")),t.setReducer("border-right",xu("right")),t.setReducer("border-bottom",xu("bottom")),t.setReducer("border-left",xu("left")),t.setReducer("border",function(){return e=>{const n=vu(e,"top"),r=vu(e,"right"),i=vu(e,"bottom"),o=vu(e,"left"),s=[n,r,i,o],a={width:t(s,"width"),style:t(s,"style"),color:t(s,"color")},l=Eu(a,"all");if(l.length)return l;const c=Object.entries(a).reduce(((t,[e,n])=>(n&&(t.push([`border-${e}`,n]),s.forEach((t=>delete t[e]))),t)),[]);return[...c,...Eu(n,"top"),...Eu(r,"right"),...Eu(i,"bottom"),...Eu(o,"left")]};function t(t,e){return t.map((t=>t[e])).reduce(((t,e)=>t==e?t:null))}}()),t.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"]),t.setStyleRelation("border-color",["border-top-color","border-right-color","border-bottom-color","border-left-color"]),t.setStyleRelation("border-style",["border-top-style","border-right-style","border-bottom-style","border-left-style"]),t.setStyleRelation("border-width",["border-top-width","border-right-width","border-bottom-width","border-left-width"]),t.setStyleRelation("border-top",["border-top-color","border-top-style","border-top-width"]),t.setStyleRelation("border-right",["border-right-color","border-right-style","border-right-width"]),t.setStyleRelation("border-bottom",["border-bottom-color","border-bottom-style","border-bottom-width"]),t.setStyleRelation("border-left",["border-left-color","border-left-style","border-left-width"])}function ku(t){return e=>{const{color:n,style:r,width:i}=yu(e),o={};return void 0!==n&&(o.color={[t]:n}),void 0!==r&&(o.style={[t]:r}),void 0!==i&&(o.width={[t]:i}),{path:"border",value:o}}}function wu(t){return e=>({path:"border",value:Au(e,t)})}function Au(t,e){return{[e]:hu(t)}}function _u(t,e){return n=>({path:"border",value:{[t]:{[e]:n}}})}function Cu(t){return(e,n)=>{if(n.border)return vu(n.border,t)}}function vu(t,e){const n={};return t.width&&t.width[e]&&(n.width=t.width[e]),t.style&&t.style[e]&&(n.style=t.style[e]),t.color&&t.color[e]&&(n.color=t.color[e]),n}function yu(t){const e={},n=pu(t);for(const t of n)tu(t)||/thin|medium|thick/.test(t)?e.width=t:Qh(t)?e.style=t:e.color=t;return e}function xu(t){return e=>Eu(e,t)}function Eu(t,e){const n=[];if(t&&t.width&&n.push("width"),t&&t.style&&n.push("style"),t&&t.color&&n.push("color"),3==n.length){const r=n.map((e=>t[e])).join(" ");return["all"==e?["border",r]:[`border-${e}`,r]]}return"all"==e?[]:n.map((n=>[`border-${e}-${n}`,t[n]]))}function Bu(t){t.setNormalizer("margin",gu("margin")),t.setNormalizer("margin-top",(t=>({path:"margin.top",value:t}))),t.setNormalizer("margin-right",(t=>({path:"margin.right",value:t}))),t.setNormalizer("margin-bottom",(t=>({path:"margin.bottom",value:t}))),t.setNormalizer("margin-left",(t=>({path:"margin.left",value:t}))),t.setReducer("margin",uu("margin")),t.setStyleRelation("margin",["margin-top","margin-right","margin-bottom","margin-left"])}function Du(t){t.setNormalizer("padding",gu("padding")),t.setNormalizer("padding-top",(t=>({path:"padding.top",value:t}))),t.setNormalizer("padding-right",(t=>({path:"padding.right",value:t}))),t.setNormalizer("padding-bottom",(t=>({path:"padding.bottom",value:t}))),t.setNormalizer("padding-left",(t=>({path:"padding.left",value:t}))),t.setReducer("padding",uu("padding")),t.setStyleRelation("padding",["padding-top","padding-right","padding-bottom","padding-left"])}class Su{_commands;constructor(){this._commands=new Map}add(t,e){this._commands.set(t,e)}get(t){return this._commands.get(t)}execute(t,...e){const n=this.get(t);if(!n)throw new kr("commandcollection-command-not-found",this,{commandName:t});return n.execute(...e)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const t of this.commands())t.destroy()}}const Tu="contentEditing",Iu="common";class Pu{keystrokeInfos=new Map;_editor;constructor(t){this._editor=t;const e=t.config.get("menuBar.isVisible"),n=t.locale.t;this.addKeystrokeInfoCategory({id:Tu,label:n("Content editing keystrokes"),description:n("These keyboard shortcuts allow for quick access to content editing features.")});const r=[{label:n("Close contextual balloons, dropdowns, and dialogs"),keystroke:"Esc"},{label:n("Open the accessibility help dialog"),keystroke:"Alt+0"},{label:n("Move focus between form fields (inputs, buttons, etc.)"),keystroke:[["Tab"],["Shift+Tab"]]},{label:n("Move focus to the toolbar, navigate between toolbars"),keystroke:"Alt+F10",mayRequireFn:!0},{label:n("Navigate through the toolbar or menu bar"),keystroke:[["arrowup"],["arrowright"],["arrowdown"],["arrowleft"]]},{label:n("Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content."),keystroke:[["Enter"],["Space"]]}];e&&r.push({label:n("Move focus to the menu bar, navigate between menu bars"),keystroke:"Alt+F9",mayRequireFn:!0}),this.addKeystrokeInfoCategory({id:"navigation",label:n("User interface and content navigation keystrokes"),description:n("Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface."),groups:[{id:"common",keystrokes:r}]})}addKeystrokeInfoCategory({id:t,label:e,description:n,groups:r}){this.keystrokeInfos.set(t,{id:t,label:e,description:n,groups:new Map}),this.addKeystrokeInfoGroup({categoryId:t,id:Iu}),r&&r.forEach((e=>{this.addKeystrokeInfoGroup({categoryId:t,...e})}))}addKeystrokeInfoGroup({categoryId:t=Tu,id:e,label:n,keystrokes:r}){const i=this.keystrokeInfos.get(t);if(!i)throw new kr("accessibility-unknown-keystroke-info-category",this._editor,{groupId:e,categoryId:t});i.groups.set(e,{id:e,label:n,keystrokes:r||[]})}addKeystrokeInfos({categoryId:t=Tu,groupId:e=Iu,keystrokes:n}){if(!this.keystrokeInfos.has(t))throw new kr("accessibility-unknown-keystroke-info-category",this._editor,{categoryId:t,keystrokes:n});const r=this.keystrokeInfos.get(t);if(!r.groups.has(e))throw new kr("accessibility-unknown-keystroke-info-group",this._editor,{groupId:e,categoryId:t,keystrokes:n});r.groups.get(e).keystrokes.push(...n)}}class Vu extends(jr()){accessibility;commands;config;conversion;data;editing;locale;model;plugins;keystrokes;t;static defaultConfig;static builtinPlugins;_context;_readOnlyLocks;constructor(t={}){if(super(),"sanitizeHtml"in t)throw new kr("editor-config-sanitizehtml-not-supported");const e=this.constructor,{translations:n,...r}=e.defaultConfig||{},{translations:i=n,...o}=t,s=t.language||r.language;this._context=t.context||new jo({language:s,translations:i}),this._context._addEditor(this,!t.context);const a=Array.from(e.builtinPlugins||[]);this.config=new Xr(o,r),this.config.define("plugins",a),this.config.define(this._context._getEditorConfig()),this.plugins=new Ho(this,a,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this._readOnlyLocks=new Set,this.commands=new Su,this.set("state","initializing"),this.once("ready",(()=>this.state="ready"),{priority:"high"}),this.once("destroy",(()=>this.state="destroyed"),{priority:"high"}),this.model=new Mh,this.on("change:isReadOnly",(()=>{this.model.document.isReadOnly=this.isReadOnly}));const l=new zs;this.data=new kd(this.model,l),this.editing=new Yc(this.model,l),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new wd([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 Uo(this),this.keystrokes.listenTo(this.editing.view.document),this.accessibility=new Pu(this)}get isReadOnly(){return this._readOnlyLocks.size>0}set isReadOnly(t){throw new kr("editor-isreadonly-has-no-setter")}enableReadOnlyMode(t){if("string"!=typeof t&&"symbol"!=typeof t)throw new kr("editor-read-only-lock-id-invalid",null,{lockId:t});this._readOnlyLocks.has(t)||(this._readOnlyLocks.add(t),1===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!0,!1))}disableReadOnlyMode(t){if("string"!=typeof t&&"symbol"!=typeof t)throw new kr("editor-read-only-lock-id-invalid",null,{lockId:t});this._readOnlyLocks.has(t)&&(this._readOnlyLocks.delete(t),0===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!1,!0))}setData(t){this.data.set(t)}getData(t){return this.data.get(t)}initPlugins(){const t=this.config,e=t.get("plugins"),n=t.get("removePlugins")||[],r=t.get("extraPlugins")||[],i=t.get("substitutePlugins")||[];return this.plugins.init(e.concat(r),n,i)}destroy(){let t=Promise.resolve();return"initializing"==this.state&&(t=new Promise((t=>this.once("ready",t)))),t.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(t,...e){try{return this.commands.execute(t,...e)}catch(t){kr.rethrowUnexpectedError(t,this)}}focus(){this.editing.view.focus()}static create(...t){throw new Error("This is an abstract method.")}static Context=jo;static EditorWatchdog=qn;static ContextWatchdog=$n}function Fu(t){return class extends t{sourceElement;updateSourceElement(t){if(!this.sourceElement)throw new kr("editor-missing-sourceelement",this);const e=this.config.get("updateSourceElementOnDestroy"),n=this.sourceElement instanceof HTMLTextAreaElement;if(!e&&!n)return void Ci(this.sourceElement,"");const r="string"==typeof t?t:this.data.get();Ci(this.sourceElement,r)}}}function Ru(t,e){if(e.ckeditorInstance)throw new kr("editor-source-element-already-used",t);e.ckeditorInstance=t,t.once("destroy",(()=>{delete e.ckeditorInstance}))}Fu.updateSourceElement=Fu(Object).prototype.updateSourceElement;class Lu extends qo{_actions;static get pluginName(){return"PendingActions"}init(){this.set("hasAny",!1),this._actions=new xo({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(t){if("string"!=typeof t)throw new kr("pendingactions-add-invalid-message",this);const e=new(jr());return e.set("message",t),this._actions.add(e),this.hasAny=!0,e}remove(t){this._actions.remove(t),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}const zu={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:''};class Mu extends xo{_parentElement;constructor(t=[]){super(t,{idProperty:"viewUid"}),this.on("add",((t,e,n)=>{this._renderViewIntoCollectionParent(e,n)})),this.on("remove",((t,e)=>{e.element&&this._parentElement&&e.element.remove()})),this._parentElement=null}destroy(){this.map((t=>t.destroy()))}setParent(t){this._parentElement=t;for(const t of this)this._renderViewIntoCollectionParent(t)}delegate(...t){if(!t.length||!t.every((t=>"string"==typeof t)))throw new kr("ui-viewcollection-delegate-wrong-events",this);return{to:e=>{for(const n of this)for(const r of t)n.delegate(r).to(e);this.on("add",((n,r)=>{for(const n of t)r.delegate(n).to(e)})),this.on("remove",((n,r)=>{for(const n of t)r.stopDelegating(n,e)}))}}}_renderViewIntoCollectionParent(t,e){t.isRendered||t.render(),t.element&&this._parentElement&&this._parentElement.insertBefore(t.element,this._parentElement.children[e])}remove(t){return super.remove(t)}}class Nu extends(Dr()){ns;tag;text;attributes;children;eventListeners;_isRendered;_revertData;constructor(t){super(),Object.assign(this,Zu(Ku(t))),this._isRendered=!1,this._revertData=null}render(){const t=this._renderNode({intoFragment:!0});return this._isRendered=!0,t}apply(t){return this._revertData={children:[],bindings:[],attributes:{}},this._renderNode({node:t,intoFragment:!1,isApplying:!0,revertData:this._revertData}),t}revert(t){if(!this._revertData)throw new kr("ui-template-revert-not-applied",[this,t]);this._revertTemplateFromNode(t,this._revertData)}*getViews(){yield*function*t(e){if(e.children)for(const n of e.children)em(n)?yield n:nm(n)&&(yield*t(n))}(this)}static bind(t,e){return{to:(n,r)=>new Hu({eventNameOrFunction:n,attribute:n,observable:t,emitter:e,callback:r}),if:(n,r,i)=>new ju({observable:t,emitter:e,attribute:n,valueIfTrue:r,callback:i})}}static extend(t,e){if(t._isRendered)throw new kr("template-extend-render",[this,t]);Xu(t,Zu(Ku(e)))}_renderNode(t){let e;if(e=t.node?this.tag&&this.text:this.tag?this.text:!this.text,e)throw new kr("ui-template-wrong-syntax",this);return this.text?this._renderText(t):this._renderElement(t)}_renderElement(t){let e=t.node;return e||(e=t.node=document.createElementNS(this.ns||"http://www.w3.org/1999/xhtml",this.tag)),this._renderAttributes(t),this._renderElementChildren(t),this._setUpListeners(t),e}_renderText(t){let e=t.node;return e?t.revertData.text=e.textContent:e=t.node=document.createTextNode(""),qu(this.text)?this._bindToObservable({schema:this.text,updater:Wu(e),data:t}):e.textContent=this.text.join(""),e}_renderAttributes(t){if(!this.attributes)return;const e=t.node,n=t.revertData;for(const r in this.attributes){const i=e.getAttribute(r),o=this.attributes[r];n&&(n.attributes[r]=i);const s=im(o)?o[0].ns:null;if(qu(o)){const a=im(o)?o[0].value:o;n&&om(r)&&a.unshift(i),this._bindToObservable({schema:a,updater:$u(e,r,s),data:t})}else if("style"==r&&"string"!=typeof o[0])this._renderStyleAttribute(o[0],t);else{n&&i&&om(r)&&o.unshift(i);const t=o.map((t=>t&&t.value||t)).reduce(((t,e)=>t.concat(e)),[]).reduce(Ju,"");tm(t)||e.setAttributeNS(s,r,t)}}}_renderStyleAttribute(t,e){const n=e.node;for(const r in t){const i=t[r];qu(i)?this._bindToObservable({schema:[i],updater:Gu(n,r),data:e}):n.style[r]=i}}_renderElementChildren(t){const e=t.node,n=t.intoFragment?document.createDocumentFragment():e,r=t.isApplying;let i=0;for(const o of this.children)if(rm(o)){if(!r){o.setParent(e);for(const t of o)n.appendChild(t.element)}}else if(em(o))r||(o.isRendered||o.render(),n.appendChild(o.element));else if(ni(o))n.appendChild(o);else if(r){const e={children:[],bindings:[],attributes:{}};t.revertData.children.push(e),o._renderNode({intoFragment:!1,node:n.childNodes[i++],isApplying:!0,revertData:e})}else n.appendChild(o.render());t.intoFragment&&e.appendChild(n)}_setUpListeners(t){if(this.eventListeners)for(const e in this.eventListeners){const n=this.eventListeners[e].map((n=>{const[r,i]=e.split("@");return n.activateDomEventListener(r,i,t)}));t.revertData&&t.revertData.bindings.push(n)}}_bindToObservable({schema:t,updater:e,data:n}){const r=n.revertData;Uu(t,e,n);const i=t.filter((t=>!tm(t))).filter((t=>t.observable)).map((r=>r.activateAttributeListener(t,e,n)));r&&r.bindings.push(i)}_revertTemplateFromNode(t,e){for(const t of e.bindings)for(const e of t)e();if(e.text)return void(t.textContent=e.text);const n=t;for(const t in e.attributes){const r=e.attributes[t];null===r?n.removeAttribute(t):n.setAttribute(t,r)}for(let t=0;tUu(t,e,n);return this.emitter.listenTo(this.observable,`change:${this.attribute}`,r),()=>{this.emitter.stopListening(this.observable,`change:${this.attribute}`,r)}}}class Hu extends Ou{eventNameOrFunction;constructor(t){super(t),this.eventNameOrFunction=t.eventNameOrFunction}activateDomEventListener(t,e,n){const r=(t,n)=>{e&&!n.target.matches(e)||("function"==typeof this.eventNameOrFunction?this.eventNameOrFunction(n):this.observable.fire(this.eventNameOrFunction,n))};return this.emitter.listenTo(n.node,t,r),()=>{this.emitter.stopListening(n.node,t,r)}}}class ju extends Ou{valueIfTrue;constructor(t){super(t),this.valueIfTrue=t.valueIfTrue}getValue(t){return!tm(super.getValue(t))&&(this.valueIfTrue||!0)}}function qu(t){return!!t&&(t.value&&(t=t.value),Array.isArray(t)?t.some(qu):t instanceof Ou)}function Uu(t,e,{node:n}){const r=function(t,e){return t.map((t=>t instanceof Ou?t.getValue(e):t))}(t,n);let i;i=1==t.length&&t[0]instanceof ju?r[0]:r.reduce(Ju,""),tm(i)?e.remove():e.set(i)}function Wu(t){return{set(e){t.textContent=e},remove(){t.textContent=""}}}function $u(t,e,n){return{set(r){t.setAttributeNS(n,e,r)},remove(){t.removeAttributeNS(n,e)}}}function Gu(t,e){return{set(n){t.style[e]=n},remove(){t.style[e]=null}}}function Ku(t){return jn(t,(t=>{if(t&&(t instanceof Ou||nm(t)||em(t)||rm(t)))return t}))}function Zu(t){if("string"==typeof t?t=function(t){return{text:[t]}}(t):t.text&&function(t){t.text=eo(t.text)}(t),t.on&&(t.eventListeners=function(t){for(const e in t)Yu(t,e);return t}(t.on),delete t.on),!t.text){t.attributes&&function(t){for(const e in t)t[e].value&&(t[e].value=eo(t[e].value)),Yu(t,e)}(t.attributes);const e=[];if(t.children)if(rm(t.children))e.push(t.children);else for(const n of t.children)nm(n)||em(n)||ni(n)?e.push(n):e.push(new Nu(n));t.children=e}return t}function Yu(t,e){t[e]=eo(t[e])}function Ju(t,e){return tm(e)?t:tm(t)?e:`${t} ${e}`}function Qu(t,e){for(const n in e)t[n]?t[n].push(...e[n]):t[n]=e[n]}function Xu(t,e){if(e.attributes&&(t.attributes||(t.attributes={}),Qu(t.attributes,e.attributes)),e.eventListeners&&(t.eventListeners||(t.eventListeners={}),Qu(t.eventListeners,e.eventListeners)),e.text&&t.text.push(...e.text),e.children&&e.children.length){if(t.children.length!=e.children.length)throw new kr("ui-template-extend-children-mismatch",t);let n=0;for(const r of e.children)Xu(t.children[n++],r)}}function tm(t){return!t&&0!==t}function em(t){return t instanceof lm}function nm(t){return t instanceof Nu}function rm(t){return t instanceof Mu}function im(t){return s(t[0])&&t[0].ns}function om(t){return"class"==t||"style"==t}var sm=n(7676),am={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(sm.A,am);sm.A.locals;class lm extends(oi(jr())){element;isRendered;locale;t;template;_viewCollections;_unboundChildren;_bindTemplate;constructor(t){super(),this.element=null,this.isRendered=!1,this.locale=t,this.t=t&&t.t,this._viewCollections=new xo,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",((e,n)=>{n.locale=t,n.t=t&&t.t})),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=Nu.bind(this,this)}createCollection(t){const e=new Mu(t);return this._viewCollections.add(e),e}registerChild(t){Yr(t)||(t=[t]);for(const e of t)this._unboundChildren.add(e)}deregisterChild(t){Yr(t)||(t=[t]);for(const e of t)this._unboundChildren.remove(e)}setTemplate(t){this.template=new Nu(t)}extendTemplate(t){Nu.extend(this.template,t)}render(){if(this.isRendered)throw new kr("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((t=>t.destroy())),this.template&&this.template._revertData&&this.template.revert(this.element)}}function cm({emitter:t,activator:e,callback:n,contextElements:r,listenerOptions:i}){t.listenTo(document,"mousedown",((t,i)=>{if(!e())return;const o="function"==typeof i.composedPath?i.composedPath():[],s="function"==typeof r?r():r;for(const t of s)if(t.contains(i.target)||o.includes(t))return;n()}),i)}function dm(t){return class extends t{disableCssTransitions(){this._isCssTransitionsDisabled=!0}enableCssTransitions(){this._isCssTransitionsDisabled=!1}constructor(...t){super(...t),this.set("_isCssTransitionsDisabled",!1),this.initializeCssTransitionDisablerMixin()}initializeCssTransitionDisablerMixin(){this.extendTemplate({attributes:{class:[this.bindTemplate.if("_isCssTransitionsDisabled","ck-transitions-disabled")]}})}}}function hm({view:t}){t.listenTo(t.element,"submit",((e,n)=>{n.preventDefault(),t.fire("submit")}),{useCapture:!0})}function um({keystrokeHandler:t,focusTracker:e,gridItems:n,numberOfColumns:r,uiLanguageDirection:i}){const o="number"==typeof r?()=>r:r;function s(t){return r=>{const i=n.find((t=>t.element===e.focusedElement)),o=n.getIndex(i),s=t(o,n);n.get(s).focus(),r.stopPropagation(),r.preventDefault()}}function a(t,e){return t===e-1?0:t+1}function l(t,e){return 0===t?e-1:t-1}t.set("arrowright",s(((t,e)=>"rtl"===i?l(t,e.length):a(t,e.length)))),t.set("arrowleft",s(((t,e)=>"rtl"===i?a(t,e.length):l(t,e.length)))),t.set("arrowup",s(((t,e)=>{let n=t-o();return n<0&&(n=t+o()*Math.floor(e.length/o()),n>e.length-1&&(n-=o())),n}))),t.set("arrowdown",s(((t,e)=>{let n=t+o();return n>e.length-1&&(n=t%o()),n})))}var mm=n(7621),gm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(mm.A,gm);mm.A.locals;class pm extends lm{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 t=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",t.if("isVisible","ck-hidden",(t=>!t)),"ck-reset_all-excluded",t.if("isColorInherited","ck-icon_inherit-color")],viewBox:t.to("viewBox")}})}render(){super.render(),this._updateXMLContent(),this._colorFillPaths(),this.on("change:content",(()=>{this._updateXMLContent(),this._colorFillPaths()})),this.on("change:fillColor",(()=>{this._colorFillPaths()}))}_updateXMLContent(){if(this.content){const t=(new DOMParser).parseFromString(this.content.trim(),"image/svg+xml").querySelector("svg"),e=t.getAttribute("viewBox");e&&(this.viewBox=e);for(const{name:e,value:n}of Array.from(t.attributes))pm.presentationalAttributeNames.includes(e)&&this.element.setAttribute(e,n);for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);for(;t.childNodes.length>0;)this.element.appendChild(t.childNodes[0])}}_colorFillPaths(){this.fillColor&&this.element.querySelectorAll(".ck-icon__fill").forEach((t=>{t.style.fill=this.fillColor}))}}class fm extends lm{constructor(){super(),this.set({style:void 0,text:void 0,id:void 0});const t=this.bindTemplate;this.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:t.to("style"),id:t.to("id")},children:[{text:t.to("text")}]})}}var bm=n(9715),km={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(bm.A,km);bm.A.locals;class wm extends lm{children;labelView;iconView;keystrokeView;_focusDelayed=null;constructor(t,e=new fm){super(t);const n=this.bindTemplate,r=pr();this.set("_ariaPressed",!1),this.set("_ariaChecked",!1),this.set("ariaLabel",void 0),this.set("ariaLabelledBy",`ck-editor__aria-label_${r}`),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(e),this.iconView=new pm,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",n.to("class"),n.if("isEnabled","ck-disabled",(t=>!t)),n.if("isVisible","ck-hidden",(t=>!t)),n.to("isOn",(t=>t?"ck-on":"ck-off")),n.if("withText","ck-button_with-text"),n.if("withKeystroke","ck-button_with-keystroke")],role:n.to("role"),type:n.to("type",(t=>t||"button")),tabindex:n.to("tabindex"),"aria-checked":n.to("_ariaChecked"),"aria-pressed":n.to("_ariaPressed"),"aria-label":n.to("ariaLabel"),"aria-labelledby":n.to("ariaLabelledBy"),"aria-disabled":n.if("isEnabled",!0,(t=>!t)),"data-cke-tooltip-text":n.to("_tooltipString"),"data-cke-tooltip-position":n.to("tooltipPosition")},children:this.children,on:{click:n.to((t=>{this.isEnabled?this.fire("execute"):t.preventDefault()}))}};this.bind("_ariaPressed").to(this,"isOn",this,"isToggleable",this,"role",((t,e,n)=>!(!e||Am(n))&&String(!!t))),this.bind("_ariaChecked").to(this,"isOn",this,"isToggleable",this,"role",((t,e,n)=>!(!e||!Am(n))&&String(!!t))),Xn.isSafari&&(this._focusDelayed||(this._focusDelayed=To((()=>this.focus()),0)),i.on.mousedown=n.to((()=>{this._focusDelayed()})),i.on.mouseup=n.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(t){return t.bind("text","style","id").to(this,"label","labelStyle","ariaLabelledBy"),t}_createKeystrokeView(){const t=new lm;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",(t=>Yi(t)))}]}),t}_getTooltipString(t,e,n){return t?"string"==typeof t?t:(n&&(n=Yi(n)),t instanceof Function?t(e,n):`${e}${n?` (${n})`:""}`):""}}function Am(t){switch(t){case"radio":case"checkbox":case"option":case"switch":case"menuitemcheckbox":case"menuitemradio":return!0;default:return!1}}var _m=n(7913),Cm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(_m.A,Cm);_m.A.locals;class vm extends lm{children;iconView;constructor(t,e={}){super(t);const n=this.bindTemplate;this.set("label",e.label||""),this.set("class",e.class||null),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__header",n.to("class")]},children:this.children}),e.icon&&(this.iconView=new pm,this.iconView.content=e.icon,this.children.add(this.iconView));const r=new lm(t);r.setTemplate({tag:"h2",attributes:{class:["ck","ck-form__header__label"],role:"presentation"},children:[{text:n.to("label")}]}),this.children.add(r)}}class ym extends(Dr()){focusables;focusTracker;keystrokeHandler;actions;constructor(t){if(super(),this.focusables=t.focusables,this.focusTracker=t.focusTracker,this.keystrokeHandler=t.keystrokeHandler,this.actions=t.actions,t.actions&&t.keystrokeHandler)for(const e in t.actions){let n=t.actions[e];"string"==typeof n&&(n=[n]);for(const r of n)t.keystrokeHandler.set(r,((t,n)=>{this[e](),n()}),t.keystrokeHandlerOptions)}this.on("forwardCycle",(()=>this.focusFirst()),{priority:"low"}),this.on("backwardCycle",(()=>this.focusLast()),{priority:"low"})}get first(){return this.focusables.find(xm)||null}get last(){return this.focusables.filter(xm).slice(-1)[0]||null}get next(){return this._getDomFocusableItem(1)}get previous(){return this._getDomFocusableItem(-1)}get current(){let t=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find(((e,n)=>{const r=e.element===this.focusTracker.focusedElement;return r&&(t=n),r})),t)}focusFirst(){this._focus(this.first,1)}focusLast(){this._focus(this.last,-1)}focusNext(){const t=this.next;t&&this.focusables.getIndex(t)===this.current||t===this.first?this.fire("forwardCycle"):this._focus(t,1)}focusPrevious(){const t=this.previous;t&&this.focusables.getIndex(t)===this.current||t===this.last?this.fire("backwardCycle"):this._focus(t,-1)}chain(t){const e=()=>null===this.current?null:this.focusables.get(this.current);this.listenTo(t,"forwardCycle",(t=>{const n=e();this.focusNext(),n!==e()&&t.stop()}),{priority:"low"}),this.listenTo(t,"backwardCycle",(t=>{const n=e();this.focusPrevious(),n!==e()&&t.stop()}),{priority:"low"})}unchain(t){this.stopListening(t)}_focus(t,e){t&&this.focusTracker.focusedElement!==t.element&&t.focus(e)}_getDomFocusableItem(t){const e=this.focusables.length;if(!e)return null;const n=this.current;if(null===n)return this[1===t?"first":"last"];let r=this.focusables.get(n),i=(n+e+t)%e;do{const n=this.focusables.get(i);if(xm(n)){r=n;break}i=(i+e+t)%e}while(i!==n);return r}}function xm(t){return Em(t)&&Di(t.element)}function Em(t){return!(!("focus"in t)||"function"!=typeof t.focus)}function Bm(t){return class extends t{_onDragBound=this._onDrag.bind(this);_onDragEndBound=this._onDragEnd.bind(this);_lastDraggingCoordinates={x:0,y:0};constructor(...t){super(...t),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(Yn.document,"mouseup",this._onDragEndBound),this.listenTo(Yn.document,"touchend",this._onDragEndBound),this.listenTo(Yn.document,"mousemove",this._onDragBound),this.listenTo(Yn.document,"touchmove",this._onDragBound)}_detachDragListeners(){this.stopListening(Yn.document,"mouseup",this._onDragEndBound),this.stopListening(Yn.document,"touchend",this._onDragEndBound),this.stopListening(Yn.document,"mousemove",this._onDragBound),this.stopListening(Yn.document,"touchmove",this._onDragBound)}_onDragStart(t,e){if(!this._isHandleElementPressed(e))return;this._attachDragListeners();let n=0,r=0;e instanceof MouseEvent?(n=e.clientX,r=e.clientY):(n=e.touches[0].clientX,r=e.touches[0].clientY),this._lastDraggingCoordinates={x:n,y:r},this.isDragging=!0}_onDrag(t,e){if(!this.isDragging)return void this._detachDragListeners();let n=0,r=0;e instanceof MouseEvent?(n=e.clientX,r=e.clientY):(n=e.touches[0].clientX,r=e.touches[0].clientY),e.preventDefault(),this.fire("drag",{deltaX:Math.round(n-this._lastDraggingCoordinates.x),deltaY:Math.round(r-this._lastDraggingCoordinates.y)}),this._lastDraggingCoordinates={x:n,y:r}}_onDragEnd(){this._detachDragListeners(),this.isDragging=!1}_isHandleElementPressed(t){return!!this.dragHandleElement&&(this.dragHandleElement===t.target||t.target instanceof HTMLElement&&this.dragHandleElement.contains(t.target))}}}var Dm=n(9822),Sm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Dm.A,Sm);Dm.A.locals;class Tm extends lm{children;keystrokes;focusCycler;_focusTracker;_focusables;constructor(t){super(t),this.children=this.createCollection(),this.keystrokes=new Do,this._focusTracker=new Bo,this._focusables=new Mu,this.focusCycler=new ym({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(t){for(const e of t){const t=new wm(this.locale);let n;for(n in t.on("execute",(()=>e.onExecute())),e.onCreate&&e.onCreate(t),e)"onExecute"!=n&&"onCreate"!=n&&t.set(n,e[n]);this.children.add(t)}this._updateFocusCyclableItems()}focus(t){-1===t?this.focusCycler.focusLast():this.focusCycler.focusFirst()}_updateFocusCyclableItems(){Array.from(this.children).forEach((t=>{this._focusables.add(t),this._focusTracker.add(t.element)}))}}class Im extends lm{children;constructor(t){super(t),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 Pm=n(9819),Vm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Pm.A,Vm);Pm.A.locals;const Fm="screen-center",Rm="editor-center",Lm="editor-top-side",zm="editor-top-center",Mm="editor-bottom-center",Nm="editor-above-center",Om="editor-below-center",Hm=vi("px");class jm extends(Bm(lm)){parts;headerView;closeButtonView;actionsView;static defaultOffset=15;contentView;keystrokes;focusTracker;wasMoved=!1;_getCurrentDomRoot;_getViewportOffset;_focusables;_focusCycler;constructor(t,{getCurrentDomRoot:e,getViewportOffset:n}){super(t);const r=this.bindTemplate,i=t.t;this.set("className",""),this.set("ariaLabel",i("Editor dialog")),this.set("isModal",!1),this.set("position",Fm),this.set("_isVisible",!1),this.set("_isTransparent",!1),this.set("_top",0),this.set("_left",0),this._getCurrentDomRoot=e,this._getViewportOffset=n,this.decorate("moveTo"),this.parts=this.createCollection(),this.keystrokes=new Do,this.focusTracker=new Bo,this._focusables=new Mu,this._focusCycler=new ym({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-dialog-overlay",r.if("isModal","ck-dialog-overlay__transparent",(t=>!t)),r.if("_isVisible","ck-hidden",(t=>!t))],tabindex:"-1"},children:[{tag:"div",attributes:{tabindex:"-1",class:["ck","ck-dialog",r.to("className")],role:"dialog","aria-label":r.to("ariaLabel"),style:{top:r.to("_top",(t=>Hm(t))),left:r.to("_left",(t=>Hm(t))),visibility:r.if("_isTransparent","hidden")}},children:this.parts}]})}render(){super.render(),this.keystrokes.set("Esc",((t,e)=>{this.fire("close",{source:"escKeyPress"}),e()})),this.on("drag",((t,{deltaX:e,deltaY:n})=>{this.wasMoved=!0,this.moveBy(e,n)})),this.listenTo(Yn.window,"resize",(()=>{this._isVisible&&!this.wasMoved&&this.updatePosition()})),this.listenTo(Yn.document,"scroll",(()=>{this._isVisible&&!this.wasMoved&&this.updatePosition()})),this.on("change:_isVisible",((t,e,n)=>{n&&(this._isTransparent=!0,setTimeout((()=>{this.updatePosition(),this._isTransparent=!1,this.focus()}),10))})),this.keystrokes.listenTo(this.element)}get dragHandleElement(){return this.headerView?this.headerView.element:null}setupParts({icon:t,title:e,hasCloseButton:n=!0,content:r,actionButtons:i}){e&&(this.headerView=new vm(this.locale,{icon:t}),n&&(this.closeButtonView=this._createCloseButton(),this.headerView.children.add(this.closeButtonView)),this.headerView.label=e,this.ariaLabel=e,this.parts.add(this.headerView,0)),r&&(r instanceof lm&&(r=[r]),this.contentView=new Im(this.locale),this.contentView.children.addMany(r),this.parts.add(this.contentView)),i&&(this.actionsView=new Tm(this.locale),this.actionsView.setButtons(i),this.parts.add(this.actionsView)),this._updateFocusCyclableItems()}focus(){this._focusCycler.focusFirst()}moveTo(t,e){const n=this._getViewportRect(),r=this._getDialogRect();t+r.width>n.right&&(t=n.right-r.width),t{var e;this._focusables.add(t),this.focusTracker.add(t.element),Em(e=t)&&"focusCycler"in e&&e.focusCycler instanceof ym&&this._focusCycler.chain(t.focusCycler)}))}_createCloseButton(){const t=new wm(this.locale),e=this.locale.t;return t.set({label:e("Close"),tooltip:!0,icon:zu.cancel}),t.on("execute",(()=>this.fire("close",{source:"closeButton"}))),t}}class qm extends Lo{view;static _visibleDialogPlugin;_onHide;static get pluginName(){return"Dialog"}constructor(t){super(t);const e=t.t;this._initShowHideListeners(),this._initFocusToggler(),this._initMultiRootIntegration(),this.set({id:null,isOpen:!1}),t.accessibility.addKeystrokeInfos({categoryId:"navigation",keystrokes:[{label:e("Move focus in and out of an active dialog window"),keystroke:"Ctrl+F6",mayRequireFn:!0}]})}_initShowHideListeners(){this.on("show",((t,e)=>{this._show(e)})),this.on("show",((t,e)=>{e.onShow&&e.onShow(this)}),{priority:"low"}),this.on("hide",(()=>{qm._visibleDialogPlugin&&qm._visibleDialogPlugin._hide()})),this.on("hide",(()=>{this._onHide&&(this._onHide(this),this._onHide=void 0)}),{priority:"low"})}_initFocusToggler(){const t=this.editor;t.keystrokes.set("Ctrl+F6",((e,n)=>{this.isOpen&&!this.view.isModal&&(this.view.focusTracker.isFocused?t.editing.view.focus():this.view.focus(),n())}))}_initMultiRootIntegration(){const t=this.editor.model;t.document.on("change:data",(()=>{if(!this.view)return;const e=t.document.differ.getChangedRoots();for(const t of e)t.state&&this.view.updatePosition()}))}show(t){this.hide(),this.fire(`show:${t.id}`,t)}_show({id:t,icon:e,title:n,hasCloseButton:r=!0,content:i,actionButtons:o,className:s,isModal:a,position:l,onHide:c}){const d=this.editor;this.view=new jm(d.locale,{getCurrentDomRoot:()=>d.editing.view.getDomRoot(d.model.document.selection.anchor.root.rootName),getViewportOffset:()=>d.ui.viewportOffset});const h=this.view;h.on("close",(()=>{this.hide()})),d.ui.view.body.add(h),d.keystrokes.listenTo(h.element),l||(l=a?Fm:Rm),h.set({position:l,_isVisible:!0,className:s,isModal:a}),h.setupParts({icon:e,title:n,hasCloseButton:r,content:i,actionButtons:o}),this.id=t,c&&(this._onHide=c),this.isOpen=!0,qm._visibleDialogPlugin=this}hide(){qm._visibleDialogPlugin&&qm._visibleDialogPlugin.fire(`hide:${qm._visibleDialogPlugin.id}`)}_hide(){if(!this.view)return;const t=this.editor,e=this.view;e.contentView&&e.contentView.reset(),t.ui.view.body.remove(e),t.ui.focusTracker.remove(e.element),t.keystrokes.stopListening(e.element),e.destroy(),t.editing.view.focus(),this.id=null,this.isOpen=!1,qm._visibleDialogPlugin=null}}var Um=n(278),Wm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Um.A,Wm);Um.A.locals;class $m extends wm{_checkIconHolderView=new Gm;constructor(t,e=new fm){super(t,e),this.set({hasCheckSpace:!1,_hasCheck:this.isToggleable});const n=this.bindTemplate;this.extendTemplate({attributes:{class:["ck-list-item-button",n.if("isToggleable","ck-list-item-button_toggleable")]}}),this.bind("_hasCheck").to(this,"hasCheckSpace",this,"isToggleable",((t,e)=>t||e))}render(){super.render(),this._hasCheck&&this.children.add(this._checkIconHolderView,0),this._watchCheckIconHolderMount()}_watchCheckIconHolderMount(){this._checkIconHolderView.bind("isOn").to(this,"isOn",(t=>this.isToggleable&&t)),this.on("change:_hasCheck",((t,e,n)=>{const{children:r,_checkIconHolderView:i}=this;n?r.add(i,0):r.remove(i)}))}}class Gm extends lm{children;_checkIconView=this._createCheckIconView();constructor(){super();const t=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",t.to("isOn",(t=>t?"ck-on":"ck-off"))]}})}render(){super.render(),this.isOn&&this.children.add(this._checkIconView,0),this._watchCheckIconMount()}_watchCheckIconMount(){this.on("change:isOn",((t,e,n)=>{const{children:r,_checkIconView:i}=this;n&&!r.has(i)?r.add(i):!n&&r.has(i)&&r.remove(i)}))}_createCheckIconView(){const t=new pm;return t.content=zu.check,t.extendTemplate({attributes:{class:"ck-list-item-button__check-icon"}}),t}}var Km=n(977),Zm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Km.A,Zm);Km.A.locals;class Ym extends $m{constructor(t){super(t),this.set({withText:!0,withKeystroke:!0,tooltip:!1,role:"menuitem"}),this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item__button"]}})}}var Jm=n(7801),Qm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Jm.A,Qm);Jm.A.locals;class Xm extends lm{id;constructor(t){super(t),this.set("text",void 0),this.set("for",void 0),this.id=`ck-editor__label_${pr()}`;const e=this.bindTemplate;this.setTemplate({tag:"label",attributes:{class:["ck","ck-label"],id:this.id,for:e.to("for")},children:[{text:e.to("text")}]})}}var tg=n(8527),eg={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(tg.A,eg);tg.A.locals;class ng extends Mu{locale;_bodyCollectionContainer;constructor(t,e=[]){super(e),this.locale=t}get bodyCollectionContainer(){return this._bodyCollectionContainer}attachToDom(){this._bodyCollectionContainer=new Nu({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection,role:"application"},children:this}).render();let t=document.querySelector(".ck-body-wrapper");t||(t=Qr(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(t)),t.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove();const t=document.querySelector(".ck-body-wrapper");t&&0==t.childElementCount&&t.remove()}}var rg=n(4391),ig={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(rg.A,ig);rg.A.locals;class og extends wm{toggleSwitchView;constructor(t){super(t),this.isToggleable=!0,this.toggleSwitchView=this._createToggleView(),this.extendTemplate({attributes:{class:"ck-switchbutton"}})}render(){super.render(),this.children.add(this.toggleSwitchView)}_createToggleView(){const t=new lm;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),t}}class sg extends(lg(wm)){}class ag extends(lg($m)){}function lg(t){return class extends t{buttonView;_fileInputView;constructor(...t){super(...t),this.buttonView=this,this._fileInputView=new cg(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 cg extends lm{constructor(t){super(t),this.set("acceptedType",void 0),this.set("allowMultipleFiles",!1);const e=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:e.to("acceptedType"),multiple:e.to("allowMultipleFiles")},on:{change:e.to((()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""}))}})}open(){this.element.click()}}const dg='';var hg=n(25),ug={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(hg.A,ug);hg.A.locals;class mg extends lm{buttonView;children;constructor(t,e){super(t);const n=this.bindTemplate;this.set("isCollapsed",!1),this.set("label",""),this.buttonView=this._createButtonView(),this.children=this.createCollection(),this.set("_collapsibleAriaLabelUid",void 0),e&&this.children.addMany(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-collapsible",n.if("isCollapsed","ck-collapsible_collapsed")]},children:[this.buttonView,{tag:"div",attributes:{class:["ck","ck-collapsible__children"],role:"region",hidden:n.if("isCollapsed","hidden"),"aria-labelledby":n.to("_collapsibleAriaLabelUid")},children:this.children}]})}render(){super.render(),this._collapsibleAriaLabelUid=this.buttonView.labelView.element.id}focus(){this.buttonView.focus()}_createButtonView(){const t=new wm(this.locale),e=t.bindTemplate;return t.set({withText:!0,icon:dg}),t.extendTemplate({attributes:{"aria-expanded":e.to("isOn",(t=>String(t)))}}),t.bind("label").to(this),t.bind("isOn").to(this,"isCollapsed",(t=>!t)),t.on("execute",(()=>{this.isCollapsed=!this.isCollapsed})),t}}function gg(t,e){const n=t.t,r={Black:n("Black"),"Dim grey":n("Dim grey"),Grey:n("Grey"),"Light grey":n("Light grey"),White:n("White"),Red:n("Red"),Orange:n("Orange"),Yellow:n("Yellow"),"Light green":n("Light green"),Green:n("Green"),Aquamarine:n("Aquamarine"),Turquoise:n("Turquoise"),"Light blue":n("Light blue"),Blue:n("Blue"),Purple:n("Purple")};return e.map((t=>{const e=r[t.label];return e&&e!=t.label&&(t.label=e),t}))}function pg(t){return t.map(fg).filter((t=>!!t))}function fg(t){return"string"==typeof t?{model:t,label:t,hasBorder:!1,view:{name:"span",styles:{color:t}}}:{model:t.color,label:t.label||t.color,hasBorder:void 0!==t.hasBorder&&t.hasBorder,view:{name:"span",styles:{color:`${t.color}`}}}}class bg extends wm{constructor(t){super(t);const e=this.bindTemplate;this.set("color",void 0),this.set("hasBorder",!1),this.icon='',this.extendTemplate({attributes:{style:{backgroundColor:e.to("color",(t=>Xn.isMediaForcedColors?null:t))},class:["ck","ck-color-grid__tile",e.if("hasBorder","ck-color-selector__color-tile_bordered")]}})}render(){super.render(),this.iconView.fillColor="hsl(0, 0%, 100%)"}}var kg=n(7317),wg={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(kg.A,wg);kg.A.locals;class Ag extends lm{columns;items;focusTracker;keystrokes;constructor(t,e){super(t);const n=e&&e.colorDefinitions?e.colorDefinitions:[];this.columns=e&&e.columns?e.columns:5;const r={gridTemplateColumns:`repeat( ${this.columns}, 1fr)`};this.set("selectedColor",void 0),this.items=this.createCollection(),this.focusTracker=new Bo,this.keystrokes=new Do,this.items.on("add",((t,e)=>{e.isOn=e.color===this.selectedColor})),n.forEach((t=>{const e=new bg;e.set({color:t.color,label:t.label,tooltip:!0,hasBorder:t.options.hasBorder}),e.on("execute",(()=>{this.fire("execute",{value:t.color,hasBorder:t.options.hasBorder,label:t.label})})),this.items.add(e)})),this.setTemplate({tag:"div",children:this.items,attributes:{class:["ck","ck-color-grid"],style:r}}),this.on("change:selectedColor",((t,e,n)=>{for(const t of this.items)t.isOn=t.color===n}))}focus(){this.items.length&&this.items.first.focus()}focusLast(){this.items.length&&this.items.last.focus()}render(){super.render();for(const t of this.items)this.focusTracker.add(t.element);this.items.on("add",((t,e)=>{this.focusTracker.add(e.element)})),this.items.on("remove",((t,e)=>{this.focusTracker.remove(e.element)})),this.keystrokes.listenTo(this.element),um({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 _g=n(6931);const Cg=function(t){var e,n,r=[],i=1;if("string"==typeof t)if(_g[t])r=_g[t].slice(),n="rgb";else if("transparent"===t)i=0,n="rgb",r=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(t)){var o=t.slice(1);i=1,(l=o.length)<=4?(r=[parseInt(o[0]+o[0],16),parseInt(o[1]+o[1],16),parseInt(o[2]+o[2],16)],4===l&&(i=parseInt(o[3]+o[3],16)/255)):(r=[parseInt(o[0]+o[1],16),parseInt(o[2]+o[3],16),parseInt(o[4]+o[5],16)],8===l&&(i=parseInt(o[6]+o[7],16)/255)),r[0]||(r[0]=0),r[1]||(r[1]=0),r[2]||(r[2]=0),n="rgb"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(t)){var s=e[1],a="rgb"===s;n=o=s.replace(/a$/,"");var l="cmyk"===o?4:"gray"===o?1:3;r=e[2].trim().split(/\s*[,\/]\s*|\s+/).map((function(t,e){if(/%$/.test(t))return e===l?parseFloat(t)/100:"rgb"===o?255*parseFloat(t)/100:parseFloat(t);if("h"===o[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==vg[t])return vg[t]}return parseFloat(t)})),s===o&&r.push(1),i=a||void 0===r[l]?1:r[l],r=r.slice(0,l)}else t.length>10&&/[0-9](?:\s|\/)/.test(t)&&(r=t.match(/([0-9]+)/g).map((function(t){return parseFloat(t)})),n=t.match(/([a-z])/gi).join("").toLowerCase());else isNaN(t)?Array.isArray(t)||t.length?(r=[t[0],t[1],t[2]],n="rgb",i=4===t.length?t[3]:1):t instanceof Object&&(null!=t.r||null!=t.red||null!=t.R?(n="rgb",r=[t.r||t.red||t.R||0,t.g||t.green||t.G||0,t.b||t.blue||t.B||0]):(n="hsl",r=[t.h||t.hue||t.H||0,t.s||t.saturation||t.S||0,t.l||t.lightness||t.L||t.b||t.brightness]),i=t.a||t.alpha||t.opacity||1,null!=t.opacity&&(i/=100)):(n="rgb",r=[t>>>16,(65280&t)>>>8,255&t]);return{space:n,values:r,alpha:i}};var vg={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};var yg=n(9047);function xg(t,e){if(!t)return"";const n=Eg(t);if(!n)return"";if(n.space===e)return t;if(r=n,!Object.keys(yg).includes(r.space))return"";var r;const i=yg[n.space][e];if(!i)return"";return function(t,e){switch(e){case"hex":return`#${t}`;case"rgb":return`rgb( ${t[0]}, ${t[1]}, ${t[2]} )`;case"hsl":return`hsl( ${t[0]}, ${t[1]}%, ${t[2]}% )`;case"hwb":return`hwb( ${t[0]}, ${t[1]}, ${t[2]} )`;case"lab":return`lab( ${t[0]}% ${t[1]} ${t[2]} )`;case"lch":return`lch( ${t[0]}% ${t[1]} ${t[2]} )`;default:return""}}(i("hex"===n.space?n.hexValue:n.values),e)}function Eg(t){if(t.startsWith("#")){const e=Cg(t);return{space:"hex",values:e.values,hexValue:t,alpha:e.alpha}}const e=Cg(t);return e.space?e:null}var Bg=n(4962),Dg={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Bg.A,Dg);Bg.A.locals;class Sg extends lm{fieldView;labelView;statusView;fieldWrapperChildren;constructor(t,e){super(t);const n=`ck-labeled-field-view-${pr()}`,r=`ck-labeled-field-view-status-${pr()}`;this.fieldView=e(this,n,r),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(n),this.statusView=this._createStatusView(r),this.fieldWrapperChildren=this.createCollection([this.fieldView,this.labelView]),this.bind("_statusText").to(this,"errorText",this,"infoText",((t,e)=>t||e));const i=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",i.to("class"),i.if("isEnabled","ck-disabled",(t=>!t)),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(t){const e=new Xm(this.locale);return e.for=t,e.bind("text").to(this,"label"),e}_createStatusView(t){const e=new lm(this.locale),n=this.bindTemplate;return e.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view__status",n.if("errorText","ck-labeled-field-view__status_error"),n.if("_statusText","ck-hidden",(t=>!t))],id:t,role:n.if("errorText","alert")},children:[{text:n.to("_statusText")}]}),e}focus(t){this.fieldView.focus(t)}}class Tg extends lm{focusTracker;constructor(t){super(t),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 Bo,this.bind("isFocused").to(this.focusTracker),this.set("isEmpty",!0);const e=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck","ck-input",e.if("isFocused","ck-input_focused"),e.if("isEmpty","ck-input-text_empty"),e.if("hasError","ck-error")],id:e.to("id"),placeholder:e.to("placeholder"),tabindex:e.to("tabIndex"),readonly:e.to("isReadOnly"),"aria-invalid":e.if("hasError",!0),"aria-describedby":e.to("ariaDescribedById"),"aria-label":e.to("ariaLabel")},on:{input:e.to(((...t)=>{this.fire("input",...t),this._updateIsEmpty()})),change:e.to(this._updateIsEmpty.bind(this))}})}render(){super.render(),this.focusTracker.add(this.element),this._setDomElementValue(this.value),this._updateIsEmpty(),this.on("change:value",((t,e,n)=>{this._setDomElementValue(n),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(t){this.element.value=t||0===t?t:""}}var Ig=n(253),Pg={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Ig.A,Pg);Ig.A.locals;class Vg extends Tg{constructor(t){super(t),this.set("inputMode","text");const e=this.bindTemplate;this.extendTemplate({attributes:{inputmode:e.to("inputMode")}})}}class Fg extends Vg{constructor(t){super(t),this.extendTemplate({attributes:{type:"text",class:["ck-input-text"]}})}}class Rg extends Vg{constructor(t,{min:e,max:n,step:r}={}){super(t);const i=this.bindTemplate;this.set("min",e),this.set("max",n),this.set("step",r),this.extendTemplate({attributes:{type:"number",class:["ck-input-number"],min:i.to("min"),max:i.to("max"),step:i.to("step")}})}}var Lg=n(1671),zg={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Lg.A,zg);Lg.A.locals;class Mg extends lm{children;constructor(t){super(t);const e=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",e.to("position",(t=>`ck-dropdown__panel_${t}`)),e.if("isVisible","ck-dropdown__panel-visible")],tabindex:"-1"},children:this.children,on:{selectstart:e.to((t=>{"input"!==t.target.tagName.toLocaleLowerCase()&&t.preventDefault()}))}})}focus(){if(this.children.length){const t=this.children.first;"function"==typeof t.focus?t.focus():wr("ui-dropdown-panel-focus-child-missing-focus",{childView:this.children.first,dropdownPanel:this})}}focusLast(){if(this.children.length){const t=this.children.last;"function"==typeof t.focusLast?t.focusLast():t.focus()}}}var Ng=n(8149),Og={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Ng.A,Og);Ng.A.locals;class Hg extends lm{buttonView;panelView;focusTracker;keystrokes;listView;toolbarView;menuView;constructor(t,e,n){super(t);const r=this.bindTemplate;this.buttonView=e,this.panelView=n,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 Do,this.focusTracker=new Bo,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",r.to("class"),r.if("isEnabled","ck-disabled",(t=>!t))],id:r.to("id"),"aria-describedby":r.to("ariaDescribedById")},children:[e,n]}),e.extendTemplate({attributes:{class:["ck-dropdown__button"],"data-cke-tooltip-disabled":r.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",((t,e,n)=>{if(n)if("auto"===this.panelPosition){const t=Hg._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions});this.panelView.position=t?t.name:this._panelPositions[0].name}else this.panelView.position=this.panelPosition})),this.keystrokes.listenTo(this.element);const t=(t,e)=>{this.isOpen&&(this.isOpen=!1,e())};this.keystrokes.set("arrowdown",((t,e)=>{this.buttonView.isEnabled&&!this.isOpen&&(this.isOpen=!0,e())})),this.keystrokes.set("arrowright",((t,e)=>{this.isOpen&&e()})),this.keystrokes.set("arrowleft",t),this.keystrokes.set("esc",t)}focus(){this.buttonView.focus()}get _panelPositions(){const{south:t,north:e,southEast:n,southWest:r,northEast:i,northWest:o,southMiddleEast:s,southMiddleWest:a,northMiddleEast:l,northMiddleWest:c}=Hg.defaultPanelPositions;return"rtl"!==this.locale.uiLanguageDirection?[n,r,s,a,t,i,o,l,c,e]:[r,n,a,s,t,o,i,c,l,e]}static defaultPanelPositions={south:(t,e)=>({top:t.bottom,left:t.left-(e.width-t.width)/2,name:"s"}),southEast:t=>({top:t.bottom,left:t.left,name:"se"}),southWest:(t,e)=>({top:t.bottom,left:t.left-e.width+t.width,name:"sw"}),southMiddleEast:(t,e)=>({top:t.bottom,left:t.left-(e.width-t.width)/4,name:"sme"}),southMiddleWest:(t,e)=>({top:t.bottom,left:t.left-3*(e.width-t.width)/4,name:"smw"}),north:(t,e)=>({top:t.top-e.height,left:t.left-(e.width-t.width)/2,name:"n"}),northEast:(t,e)=>({top:t.top-e.height,left:t.left,name:"ne"}),northWest:(t,e)=>({top:t.top-e.height,left:t.left-e.width+t.width,name:"nw"}),northMiddleEast:(t,e)=>({top:t.top-e.height,left:t.left-(e.width-t.width)/4,name:"nme"}),northMiddleWest:(t,e)=>({top:t.top-e.height,left:t.left-3*(e.width-t.width)/4,name:"nmw"})};static _getOptimalPosition=Si}class jg extends wm{arrowView;constructor(t){super(t),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0,"aria-expanded":this.bindTemplate.to("isOn",(t=>String(t)))}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const t=new pm;return t.content=dg,t.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),t}}var qg=n(4767),Ug={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(qg.A,Ug);qg.A.locals;var Wg=n(9554),$g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Wg.A,$g);Wg.A.locals;class Gg extends lm{children;constructor(t){super(t);const e=this.bindTemplate;this.set("isVisible",!0),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item",e.if("isVisible","ck-hidden",(t=>!t))],role:"presentation"},children:this.children})}focus(){this.children.first&&this.children.first.focus()}}class Kg extends lm{constructor(t){super(t),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}class Zg extends lm{labelView;items;children;constructor(t,e=new Xm){super(t);const n=this.bindTemplate,r=new Qg(t);this.set({label:"",isVisible:!0}),this.labelView=e,this.labelView.bind("text").to(this,"label"),this.children=this.createCollection(),this.children.addMany([this.labelView,r]),r.set({role:"group",ariaLabelledBy:e.id}),r.focusTracker.destroy(),r.keystrokes.destroy(),this.items=r.items,this.setTemplate({tag:"li",attributes:{role:"presentation",class:["ck","ck-list__group",n.if("isVisible","ck-hidden",(t=>!t))]},children:this.children})}focus(){if(this.items){const t=this.items.find((t=>!(t instanceof Kg)));t&&t.focus()}}}var Yg=n(5199),Jg={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Yg.A,Jg);Yg.A.locals;class Qg extends lm{focusables;items;focusTracker;keystrokes;_focusCycler;_listItemGroupToChangeListeners=new WeakMap;constructor(t){super(t);const e=this.bindTemplate;this.focusables=new Mu,this.items=this.createCollection(),this.focusTracker=new Bo,this.keystrokes=new Do,this._focusCycler=new ym({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:e.to("role"),"aria-label":e.to("ariaLabel"),"aria-labelledby":e.to("ariaLabelledBy")},children:this.items})}render(){super.render();for(const t of this.items)t instanceof Zg?this._registerFocusableItemsGroup(t):t instanceof Gg&&this._registerFocusableListItem(t);this.items.on("change",((t,e)=>{for(const t of e.removed)t instanceof Zg?this._deregisterFocusableItemsGroup(t):t instanceof Gg&&this._deregisterFocusableListItem(t);for(const t of Array.from(e.added).reverse())t instanceof Zg?this._registerFocusableItemsGroup(t,e.index):this._registerFocusableListItem(t,e.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(t,e){this.focusTracker.add(t.element),this.focusables.add(t,e)}_deregisterFocusableListItem(t){this.focusTracker.remove(t.element),this.focusables.remove(t)}_getOnGroupItemsChangeCallback(t){return(e,n)=>{for(const t of n.removed)this._deregisterFocusableListItem(t);for(const e of Array.from(n.added).reverse())this._registerFocusableListItem(e,this.items.getIndex(t)+n.index)}}_registerFocusableItemsGroup(t,e){Array.from(t.items).forEach(((t,n)=>{const r=void 0!==e?e+n:void 0;this._registerFocusableListItem(t,r)}));const n=this._getOnGroupItemsChangeCallback(t);this._listItemGroupToChangeListeners.set(t,n),t.items.on("change",n)}_deregisterFocusableItemsGroup(t){for(const e of t.items)this._deregisterFocusableListItem(e);t.items.off("change",this._listItemGroupToChangeListeners.get(t)),this._listItemGroupToChangeListeners.delete(t)}}var Xg=n(2171),tp={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Xg.A,tp);Xg.A.locals;var ep=n(3710),np={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(ep.A,np);ep.A.locals;const rp=vi("px"),ip={top:-99999,left:-99999,name:"arrowless",config:{withArrow:!1}};class op extends lm{content;_pinWhenIsVisibleCallback;_resizeObserver;constructor(t){super(t);const e=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",e.to("position",(t=>`ck-balloon-panel_${t}`)),e.if("isVisible","ck-balloon-panel_visible"),e.if("withArrow","ck-balloon-panel_with-arrow"),e.to("class")],style:{top:e.to("top",rp),left:e.to("left",rp)}},children:this.content})}destroy(){this.hide(),super.destroy()}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(t){const e=sp(t.target);if(e&&!Di(e))return!1;this.show();const n=op.defaultPositions,r=Object.assign({},{element:this.element,positions:[n.southArrowNorth,n.southArrowNorthMiddleWest,n.southArrowNorthMiddleEast,n.southArrowNorthWest,n.southArrowNorthEast,n.northArrowSouth,n.northArrowSouthMiddleWest,n.northArrowSouthMiddleEast,n.northArrowSouthWest,n.northArrowSouthEast,n.viewportStickyNorth],limiter:Yn.document.body,fitInViewport:!0},t),i=op._getOptimalPosition(r)||ip,o=parseInt(i.left),s=parseInt(i.top),a=i.name,l=i.config||{},{withArrow:c=!0}=l;return this.top=s,this.left=o,this.position=a,this.withArrow=c,!0}pin(t){this.unpin(),this._startPinning(t)&&(this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(t):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(t){if(!this.attachTo(t))return!1;let e=sp(t.target);const n=t.limiter?sp(t.limiter):Yn.document.body;if(this.listenTo(Yn.document,"scroll",((r,i)=>{const o=i.target,s=e&&o.contains(e),a=n&&o.contains(n);!s&&!a&&e&&n||this.attachTo(t)}),{useCapture:!0}),this.listenTo(Yn.window,"resize",(()=>{this.attachTo(t)})),!this._resizeObserver&&(e&&ui(e)&&(e=e.parentElement),e)){const t=()=>{Di(e)||this.unpin()};this._resizeObserver=new _i(e,t)}return!0}_stopPinning(){this.stopListening(Yn.document,"scroll"),this.stopListening(Yn.window,"resize"),this._resizeObserver&&(this._resizeObserver.destroy(),this._resizeObserver=null)}static generatePositions(t={}){const{sideOffset:e=op.arrowSideOffset,heightOffset:n=op.arrowHeightOffset,stickyVerticalOffset:r=op.stickyVerticalOffset,config:i}=t;return{northWestArrowSouthWest:(t,n)=>({top:o(t,n),left:t.left-e,name:"arrow_sw",...i&&{config:i}}),northWestArrowSouthMiddleWest:(t,n)=>({top:o(t,n),left:t.left-.25*n.width-e,name:"arrow_smw",...i&&{config:i}}),northWestArrowSouth:(t,e)=>({top:o(t,e),left:t.left-e.width/2,name:"arrow_s",...i&&{config:i}}),northWestArrowSouthMiddleEast:(t,n)=>({top:o(t,n),left:t.left-.75*n.width+e,name:"arrow_sme",...i&&{config:i}}),northWestArrowSouthEast:(t,n)=>({top:o(t,n),left:t.left-n.width+e,name:"arrow_se",...i&&{config:i}}),northArrowSouthWest:(t,n)=>({top:o(t,n),left:t.left+t.width/2-e,name:"arrow_sw",...i&&{config:i}}),northArrowSouthMiddleWest:(t,n)=>({top:o(t,n),left:t.left+t.width/2-.25*n.width-e,name:"arrow_smw",...i&&{config:i}}),northArrowSouth:(t,e)=>({top:o(t,e),left:t.left+t.width/2-e.width/2,name:"arrow_s",...i&&{config:i}}),northArrowSouthMiddleEast:(t,n)=>({top:o(t,n),left:t.left+t.width/2-.75*n.width+e,name:"arrow_sme",...i&&{config:i}}),northArrowSouthEast:(t,n)=>({top:o(t,n),left:t.left+t.width/2-n.width+e,name:"arrow_se",...i&&{config:i}}),northEastArrowSouthWest:(t,n)=>({top:o(t,n),left:t.right-e,name:"arrow_sw",...i&&{config:i}}),northEastArrowSouthMiddleWest:(t,n)=>({top:o(t,n),left:t.right-.25*n.width-e,name:"arrow_smw",...i&&{config:i}}),northEastArrowSouth:(t,e)=>({top:o(t,e),left:t.right-e.width/2,name:"arrow_s",...i&&{config:i}}),northEastArrowSouthMiddleEast:(t,n)=>({top:o(t,n),left:t.right-.75*n.width+e,name:"arrow_sme",...i&&{config:i}}),northEastArrowSouthEast:(t,n)=>({top:o(t,n),left:t.right-n.width+e,name:"arrow_se",...i&&{config:i}}),southWestArrowNorthWest:t=>({top:s(t),left:t.left-e,name:"arrow_nw",...i&&{config:i}}),southWestArrowNorthMiddleWest:(t,n)=>({top:s(t),left:t.left-.25*n.width-e,name:"arrow_nmw",...i&&{config:i}}),southWestArrowNorth:(t,e)=>({top:s(t),left:t.left-e.width/2,name:"arrow_n",...i&&{config:i}}),southWestArrowNorthMiddleEast:(t,n)=>({top:s(t),left:t.left-.75*n.width+e,name:"arrow_nme",...i&&{config:i}}),southWestArrowNorthEast:(t,n)=>({top:s(t),left:t.left-n.width+e,name:"arrow_ne",...i&&{config:i}}),southArrowNorthWest:t=>({top:s(t),left:t.left+t.width/2-e,name:"arrow_nw",...i&&{config:i}}),southArrowNorthMiddleWest:(t,n)=>({top:s(t),left:t.left+t.width/2-.25*n.width-e,name:"arrow_nmw",...i&&{config:i}}),southArrowNorth:(t,e)=>({top:s(t),left:t.left+t.width/2-e.width/2,name:"arrow_n",...i&&{config:i}}),southArrowNorthMiddleEast:(t,n)=>({top:s(t),left:t.left+t.width/2-.75*n.width+e,name:"arrow_nme",...i&&{config:i}}),southArrowNorthEast:(t,n)=>({top:s(t),left:t.left+t.width/2-n.width+e,name:"arrow_ne",...i&&{config:i}}),southEastArrowNorthWest:t=>({top:s(t),left:t.right-e,name:"arrow_nw",...i&&{config:i}}),southEastArrowNorthMiddleWest:(t,n)=>({top:s(t),left:t.right-.25*n.width-e,name:"arrow_nmw",...i&&{config:i}}),southEastArrowNorth:(t,e)=>({top:s(t),left:t.right-e.width/2,name:"arrow_n",...i&&{config:i}}),southEastArrowNorthMiddleEast:(t,n)=>({top:s(t),left:t.right-.75*n.width+e,name:"arrow_nme",...i&&{config:i}}),southEastArrowNorthEast:(t,n)=>({top:s(t),left:t.right-n.width+e,name:"arrow_ne",...i&&{config:i}}),westArrowEast:(t,e)=>({top:t.top+t.height/2-e.height/2,left:t.left-e.width-n,name:"arrow_e",...i&&{config:i}}),eastArrowWest:(t,e)=>({top:t.top+t.height/2-e.height/2,left:t.right+n,name:"arrow_w",...i&&{config:i}}),viewportStickyNorth:(t,e,n,o)=>{const s=o||n;return t.getIntersection(s)?s.height-t.height>r?null:{top:s.top+r,left:t.left+t.width/2-e.width/2,name:"arrowless",config:{withArrow:!1,...i}}:null}};function o(t,e){return t.top-e.height-n}function s(t){return t.bottom+n}}static arrowSideOffset=25;static arrowHeightOffset=10;static stickyVerticalOffset=20;static _getOptimalPosition=Si;static defaultPositions=op.generatePositions()}function sp(t){return U(t)?t:mi(t)?t.commonAncestorContainer:"function"==typeof t?sp(t()):null}var ap=n(3610),lp={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(ap.A,lp);ap.A.locals;var cp=n(7218),dp={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(cp.A,dp);cp.A.locals;class hp extends lm{constructor(t){super(t),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}class up extends lm{constructor(t){super(t),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__line-break"]}})}}function mp(t){if(Array.isArray(t))return{items:t,removeItems:[]};const e={items:[],removeItems:[]};return t?{...e,...t}:e}var gp=n(9677),pp={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(gp.A,pp);gp.A.locals;const fp=(()=>({alignLeft:zu.alignLeft,bold:zu.bold,importExport:zu.importExport,paragraph:zu.paragraph,plus:zu.plus,text:zu.text,threeVerticalDots:zu.threeVerticalDots,pilcrow:zu.pilcrow,dragIndicator:zu.dragIndicator}))();class bp extends lm{options;items;focusTracker;keystrokes;itemsView;children;focusables;_focusCycler;_behavior;constructor(t,e){super(t);const n=this.bindTemplate,r=this.t;this.options=e||{},this.set("ariaLabel",r("Editor toolbar")),this.set("maxWidth","auto"),this.items=this.createCollection(),this.focusTracker=new Bo,this.keystrokes=new Do,this.set("class",void 0),this.set("isCompact",!1),this.itemsView=new kp(t),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection();const i="rtl"===t.uiLanguageDirection;this._focusCycler=new ym({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[i?"arrowright":"arrowleft","arrowup"],focusNext:[i?"arrowleft":"arrowright","arrowdown"]}});const o=["ck","ck-toolbar",n.to("class"),n.if("isCompact","ck-toolbar_compact")];var s;this.options.shouldGroupWhenFull&&this.options.isFloating&&o.push("ck-toolbar_floating"),this.setTemplate({tag:"div",attributes:{class:o,role:"toolbar","aria-label":n.to("ariaLabel"),style:{maxWidth:n.to("maxWidth")},tabindex:-1},children:this.children,on:{mousedown:(s=this,s.bindTemplate.to((t=>{t.target===s.element&&t.preventDefault()})))}}),this._behavior=this.options.shouldGroupWhenFull?new Ap(this):new wp(this)}render(){super.render(),this.focusTracker.add(this.element);for(const t of this.items)this.focusTracker.add(t.element);this.items.on("add",((t,e)=>{this.focusTracker.add(e.element)})),this.items.on("remove",((t,e)=>{this.focusTracker.remove(e.element)})),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(t,e,n){this.items.addMany(this._buildItemsFromConfig(t,e,n))}_buildItemsFromConfig(t,e,n){const r=mp(t),i=n||r.removeItems;return this._cleanItemsConfiguration(r.items,e,i).map((t=>s(t)?this._createNestedToolbarDropdown(t,e,i):"|"===t?new hp:"-"===t?new up:e.create(t))).filter((t=>!!t))}_cleanItemsConfiguration(t,e,n){const r=t.filter(((t,r,i)=>"|"===t||-1===n.indexOf(t)&&("-"===t?!this.options.shouldGroupWhenFull||(wr("toolbarview-line-break-ignored-when-grouping-items",i),!1):!(!s(t)&&!e.has(t))||(wr("toolbarview-item-unavailable",{item:t}),!1))));return this._cleanSeparatorsAndLineBreaks(r)}_cleanSeparatorsAndLineBreaks(t){const e=t=>"-"!==t&&"|"!==t,n=t.length,r=t.findIndex(e);if(-1===r)return[];const i=n-t.slice().reverse().findIndex(e);return t.slice(r,i).filter(((t,n,r)=>{if(e(t))return!0;return!(n>0&&r[n-1]===t)}))}_createNestedToolbarDropdown(t,e,n){let{label:r,icon:i,items:o,tooltip:s=!0,withText:a=!1}=t;if(o=this._cleanItemsConfiguration(o,e,n),!o.length)return null;const l=Dp(this.locale);return r||wr("toolbarview-nested-toolbar-dropdown-missing-label",t),l.class="ck-toolbar__nested-toolbar-dropdown",l.buttonView.set({label:r,tooltip:s,withText:!!a}),!1!==i?l.buttonView.icon=fp[i]||i||zu.threeVerticalDots:l.buttonView.withText=!0,Sp(l,(()=>l.toolbarView._buildItemsFromConfig(o,e,n))),l}}class kp extends lm{children;constructor(t){super(t),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class wp{constructor(t){const e=t.bindTemplate;t.set("isVertical",!1),t.itemsView.children.bindTo(t.items).using((t=>t)),t.focusables.bindTo(t.items).using((t=>Em(t)?t:null)),t.extendTemplate({attributes:{class:[e.if("isVertical","ck-toolbar_vertical")]}})}render(){}destroy(){}}class Ap{view;viewChildren;viewFocusables;viewItemsView;viewFocusTracker;viewLocale;ungroupedItems;groupedItems;groupedItemsDropdown;resizeObserver=null;cachedPadding=null;shouldUpdateGroupingOnNextResize=!1;viewElement;constructor(t){this.view=t,this.viewChildren=t.children,this.viewFocusables=t.focusables,this.viewItemsView=t.itemsView,this.viewFocusTracker=t.focusTracker,this.viewLocale=t.locale,this.ungroupedItems=t.createCollection(),this.groupedItems=t.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),t.itemsView.children.bindTo(this.ungroupedItems).using((t=>t)),this.ungroupedItems.on("change",this._updateFocusCyclableItems.bind(this)),t.children.on("change",this._updateFocusCyclableItems.bind(this)),t.items.on("change",((t,e)=>{const n=e.index,r=Array.from(e.added);for(const t of e.removed)n>=this.ungroupedItems.length?this.groupedItems.remove(t):this.ungroupedItems.remove(t);for(let t=n;tthis.ungroupedItems.length?this.groupedItems.add(e,t-this.ungroupedItems.length):this.ungroupedItems.add(e,t)}this._updateGrouping()})),t.extendTemplate({attributes:{class:["ck-toolbar_grouping"]}})}render(t){this.viewElement=t.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(t)}destroy(){this.groupedItemsDropdown.destroy(),this.resizeObserver.destroy()}_updateGrouping(){if(!this.viewElement.ownerDocument.body.contains(this.viewElement))return;if(!Di(this.viewElement))return void(this.shouldUpdateGroupingOnNextResize=!0);const t=this.groupedItems.length;let e;for(;this._areItemsOverflowing;)this._groupLastItem(),e=!0;if(!e&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}this.groupedItems.length!==t&&this.view.fire("groupedItemsUpdate")}get _areItemsOverflowing(){if(!this.ungroupedItems.length)return!1;const t=this.viewElement,e=this.viewLocale.uiLanguageDirection,n=new fi(t.lastChild),r=new fi(t);if(!this.cachedPadding){const n=Yn.window.getComputedStyle(t),r="ltr"===e?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(n[r])}return"ltr"===e?n.right>r.right-this.cachedPadding:n.left{t&&t===e.contentRect.width&&!this.shouldUpdateGroupingOnNextResize||(this.shouldUpdateGroupingOnNextResize=!1,this._updateGrouping(),t=e.contentRect.width)})),this._updateGrouping()}_enableGroupingOnMaxWidthChange(t){t.on("change:maxWidth",(()=>{this._updateGrouping()}))}_groupLastItem(){this.groupedItems.length||(this.viewChildren.add(new hp),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 t=this.viewLocale,e=t.t,n=Dp(t);return n.class="ck-toolbar__grouped-dropdown",n.panelPosition="ltr"===t.uiLanguageDirection?"sw":"se",Sp(n,this.groupedItems),n.buttonView.set({label:e("Show more items"),tooltip:!0,tooltipPosition:"rtl"===t.uiLanguageDirection?"se":"sw",icon:zu.threeVerticalDots}),n}_updateFocusCyclableItems(){this.viewFocusables.clear(),this.ungroupedItems.map((t=>{Em(t)&&this.viewFocusables.add(t)})),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}var _p=n(1792),Cp={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(_p.A,Cp);_p.A.locals;class vp extends lm{children;actionView;arrowView;keystrokes;focusTracker;constructor(t,e){super(t);const n=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(e),this.arrowView=this._createArrowView(),this.keystrokes=new Do,this.focusTracker=new Bo,this.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",n.to("class"),n.if("isVisible","ck-hidden",(t=>!t)),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",((t,e)=>{this.focusTracker.focusedElement===this.actionView.element&&(this.arrowView.focus(),e())})),this.keystrokes.set("arrowleft",((t,e)=>{this.focusTracker.focusedElement===this.arrowView.element&&(this.actionView.focus(),e())}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.actionView.focus()}_createActionView(t){const e=t||new wm;return t||e.bind("icon","isEnabled","isOn","isToggleable","keystroke","label","tabindex","tooltip","tooltipPosition","type","withText").to(this),e.extendTemplate({attributes:{class:"ck-splitbutton__action"}}),e.delegate("execute").to(this),e}_createArrowView(){const t=new wm,e=t.bindTemplate;return t.icon=dg,t.extendTemplate({attributes:{class:["ck-splitbutton__arrow"],"data-cke-tooltip-disabled":e.to("isOn"),"aria-haspopup":!0,"aria-expanded":e.to("isOn",(t=>String(t)))}}),t.bind("isEnabled").to(this),t.bind("label").to(this),t.bind("tooltip").to(this),t.delegate("execute").to(this,"open"),t}}var yp=n(1666),xp={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(yp.A,xp);yp.A.locals;var Ep=n(3629),Bp={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Ep.A,Bp);Ep.A.locals;function Dp(t,e=jg){const n="function"==typeof e?new e(t):e,r=new Mg(t),i=new Hg(t,n,r);return n.bind("isEnabled").to(i),n instanceof vp?n.arrowView.bind("isOn").to(i,"isOpen"):n.bind("isOn").to(i,"isOpen"),function(t){(function(t){cm({emitter:t,activator:()=>t.isRendered&&t.isOpen,callback:()=>{t.isOpen=!1},contextElements:()=>[t.element,...t.focusTracker.elements]})})(t),function(t){t.on("execute",(e=>{e.source instanceof og||(t.isOpen=!1)}))}(t),function(t){t.focusTracker.on("change:isFocused",((e,n,r)=>{!r&&t.isOpen&&(t.isOpen=!1)}))}(t),function(t){t.keystrokes.set("arrowdown",((e,n)=>{t.isOpen&&(t.panelView.focus(),n())})),t.keystrokes.set("arrowup",((e,n)=>{t.isOpen&&(t.panelView.focusLast(),n())}))}(t),function(t){t.on("change:isOpen",((e,n,r)=>{if(r)return;t.focusTracker.elements.some((t=>t.contains(Yn.document.activeElement)))&&t.buttonView.focus()}))}(t),function(t){t.on("change:isOpen",((e,n,r)=>{r&&t.panelView.focus()}),{priority:"low"})}(t)}(i),i}function Sp(t,e,n={}){t.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),t.isOpen?Tp(t,e,n):t.once("change:isOpen",(()=>Tp(t,e,n)),{priority:"highest"}),n.enableActiveItemFocusOnDropdownOpen&&Vp(t,(()=>t.toolbarView.items.find((t=>t.isOn))))}function Tp(t,e,n){const r=t.locale,i=r.t,o=t.toolbarView=new bp(r),s="function"==typeof e?e():e;o.ariaLabel=n.ariaLabel||i("Dropdown toolbar"),n.maxWidth&&(o.maxWidth=n.maxWidth),n.class&&(o.class=n.class),n.isCompact&&(o.isCompact=n.isCompact),n.isVertical&&(o.isVertical=!0),s instanceof Mu?o.items.bindTo(s).using((t=>t)):o.items.addMany(s),t.panelView.children.add(o),o.items.delegate("execute").to(t)}function Ip(t,e,n={}){t.isOpen?Pp(t,e,n):t.once("change:isOpen",(()=>Pp(t,e,n)),{priority:"highest"}),Vp(t,(()=>t.listView.items.find((t=>t instanceof Gg&&t.children.first.isOn))))}function Pp(t,e,n){const r=t.locale,i=t.listView=new Qg(r),o="function"==typeof e?e():e;i.ariaLabel=n.ariaLabel,i.role=n.role,Fp(t,i.items,o,r),t.panelView.children.add(i),i.items.delegate("execute").to(t)}function Vp(t,e){t.on("change:isOpen",(()=>{if(!t.isOpen)return;const n=e();n&&("function"==typeof n.focus?n.focus():wr("ui-dropdown-focus-child-on-open-child-missing-focus",{view:n}))}),{priority:fr.low-10})}function Fp(t,e,n,r){e.on("change",(()=>{const t=[...e].reduce(((t,e)=>(e instanceof Gg&&e.children.first instanceof $m&&t.push(e.children.first),t)),[]),n=t.some((t=>t.isToggleable));t.forEach((t=>{t.hasCheckSpace=n}))})),e.bindTo(n).using((e=>{if("separator"===e.type)return new Kg(r);if("group"===e.type){const n=new Zg(r);return n.set({label:e.label}),Fp(t,n.items,e.items,r),n.items.delegate("execute").to(t),n}if("button"===e.type||"switchbutton"===e.type){const t="menuitemcheckbox"===e.model.role||"menuitemradio"===e.model.role,n=new Gg(r);let i;return"button"===e.type?(i=new $m(r),i.set({isToggleable:t})):i=new og(r),i.bind(...Object.keys(e.model)).to(e.model),i.delegate("execute").to(n),n.children.add(i),n}return null}))}const Rp=(t,e,n)=>{const r=new Fg(t.locale);return r.set({id:e,ariaDescribedById:n}),r.bind("isReadOnly").to(t,"isEnabled",(t=>!t)),r.bind("hasError").to(t,"errorText",(t=>!!t)),r.on("input",(()=>{t.errorText=null})),t.bind("isEmpty","isFocused","placeholder").to(r),r},Lp=(t,e,n)=>{const r=new Rg(t.locale);return r.set({id:e,ariaDescribedById:n,inputMode:"numeric"}),r.bind("isReadOnly").to(t,"isEnabled",(t=>!t)),r.bind("hasError").to(t,"errorText",(t=>!!t)),r.on("input",(()=>{t.errorText=null})),t.bind("isEmpty","isFocused","placeholder").to(r),r},zp=(t,e,n)=>{const r=Dp(t.locale);return r.set({id:e,ariaDescribedById:n}),r.bind("isEnabled").to(t),r},Mp=(t,e=0,n=1)=>t>n?n:tMath.round(n*t)/n,Op=(Math.PI,t=>("#"===t[0]&&(t=t.substring(1)),t.length<6?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:4===t.length?Np(parseInt(t[3]+t[3],16)/255,2):1}:{r:parseInt(t.substring(0,2),16),g:parseInt(t.substring(2,4),16),b:parseInt(t.substring(4,6),16),a:8===t.length?Np(parseInt(t.substring(6,8),16)/255,2):1})),Hp=({h:t,s:e,v:n,a:r})=>{const i=(200-e)*n/100;return{h:Np(t),s:Np(i>0&&i<200?e*n/100/(i<=100?i:200-i)*100:0),l:Np(i/2),a:Np(r,2)}},jp=t=>{const{h:e,s:n,l:r}=Hp(t);return`hsl(${e}, ${n}%, ${r}%)`},qp=({h:t,s:e,v:n,a:r})=>{t=t/360*6,e/=100,n/=100;const i=Math.floor(t),o=n*(1-e),s=n*(1-(t-i)*e),a=n*(1-(1-t+i)*e),l=i%6;return{r:Np(255*[n,s,o,o,a,n][l]),g:Np(255*[a,n,n,s,o,o][l]),b:Np(255*[o,o,a,n,n,s][l]),a:Np(r,2)}},Up=t=>{const e=t.toString(16);return e.length<2?"0"+e:e},Wp=({r:t,g:e,b:n,a:r})=>{const i=r<1?Up(Np(255*r)):"";return"#"+Up(t)+Up(e)+Up(n)+i},$p=({r:t,g:e,b:n,a:r})=>{const i=Math.max(t,e,n),o=i-Math.min(t,e,n),s=o?i===t?(e-n)/o:i===e?2+(n-t)/o:4+(t-e)/o:0;return{h:Np(60*(s<0?s+6:s)),s:Np(i?o/i*100:0),v:Np(i/255*100),a:r}},Gp=(t,e)=>{if(t===e)return!0;for(const n in t)if(t[n]!==e[n])return!1;return!0},Kp={},Zp=t=>{let e=Kp[t];return e||(e=document.createElement("template"),e.innerHTML=t,Kp[t]=e),e},Yp=(t,e,n)=>{t.dispatchEvent(new CustomEvent(e,{bubbles:!0,detail:n}))};let Jp=!1;const Qp=t=>"touches"in t,Xp=(t,e)=>{const n=Qp(e)?e.touches[0]:e,r=t.el.getBoundingClientRect();Yp(t.el,"move",t.getMove({x:Mp((n.pageX-(r.left+window.pageXOffset))/r.width),y:Mp((n.pageY-(r.top+window.pageYOffset))/r.height)}))};class tf{constructor(t,e,n,r){const i=Zp(`
                `);t.appendChild(i.content.cloneNode(!0));const o=t.querySelector(`[part=${e}]`);o.addEventListener("mousedown",this),o.addEventListener("touchstart",this),o.addEventListener("keydown",this),this.el=o,this.xy=r,this.nodes=[o.firstChild,o]}set dragging(t){const e=t?document.addEventListener:document.removeEventListener;e(Jp?"touchmove":"mousemove",this),e(Jp?"touchend":"mouseup",this)}handleEvent(t){switch(t.type){case"mousedown":case"touchstart":if(t.preventDefault(),!(t=>!(Jp&&!Qp(t)||(Jp||(Jp=Qp(t)),0)))(t)||!Jp&&0!=t.button)return;this.el.focus(),Xp(this,t),this.dragging=!0;break;case"mousemove":case"touchmove":t.preventDefault(),Xp(this,t);break;case"mouseup":case"touchend":this.dragging=!1;break;case"keydown":((t,e)=>{const n=e.keyCode;n>40||t.xy&&n<37||n<33||(e.preventDefault(),Yp(t.el,"move",t.getMove({x:39===n?.01:37===n?-.01:34===n?.05:33===n?-.05:35===n?1:36===n?-1:0,y:40===n?.01:38===n?-.01:0},!0)))})(this,t)}}style(t){t.forEach(((t,e)=>{for(const n in t)this.nodes[e].style.setProperty(n,t[n])}))}}class ef extends tf{constructor(t){super(t,"hue",'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"',!1)}update({h:t}){this.h=t,this.style([{left:t/360*100+"%",color:jp({h:t,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuenow",`${Np(t)}`)}getMove(t,e){return{h:e?Mp(this.h+360*t.x,0,360):360*t.x}}}class nf extends tf{constructor(t){super(t,"saturation",'aria-label="Color"',!0)}update(t){this.hsva=t,this.style([{top:100-t.v+"%",left:`${t.s}%`,color:jp(t)},{"background-color":jp({h:t.h,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuetext",`Saturation ${Np(t.s)}%, Brightness ${Np(t.v)}%`)}getMove(t,e){return{s:e?Mp(this.hsva.s+100*t.x,0,100):100*t.x,v:e?Mp(this.hsva.v-100*t.y,0,100):Math.round(100-100*t.y)}}}const rf=Symbol("same"),of=Symbol("color"),sf=Symbol("hsva"),af=Symbol("update"),lf=Symbol("parts"),cf=Symbol("css"),df=Symbol("sliders");class hf extends HTMLElement{static get observedAttributes(){return["color"]}get[cf](){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[df](){return[nf,ef]}get color(){return this[of]}set color(t){if(!this[rf](t)){const e=this.colorModel.toHsva(t);this[af](e),this[of]=t}}constructor(){super();const t=Zp(``),e=this.attachShadow({mode:"open"});e.appendChild(t.content.cloneNode(!0)),e.addEventListener("move",this),this[lf]=this[df].map((t=>new t(e)))}connectedCallback(){if(this.hasOwnProperty("color")){const t=this.color;delete this.color,this.color=t}else this.color||(this.color=this.colorModel.defaultColor)}attributeChangedCallback(t,e,n){const r=this.colorModel.fromAttr(n);this[rf](r)||(this.color=r)}handleEvent(t){const e=this[sf],n={...e,...t.detail};let r;this[af](n),Gp(n,e)||this[rf](r=this.colorModel.fromHsva(n))||(this[of]=r,Yp(this,"color-changed",{value:r}))}[rf](t){return this.color&&this.colorModel.equal(t,this.color)}[af](t){this[sf]=t,this[lf].forEach((e=>e.update(t)))}}const uf={defaultColor:"#000",toHsva:t=>$p(Op(t)),fromHsva:({h:t,s:e,v:n})=>Wp(qp({h:t,s:e,v:n,a:1})),equal:(t,e)=>t.toLowerCase()===e.toLowerCase()||Gp(Op(t),Op(e)),fromAttr:t=>t};class mf extends hf{get colorModel(){return uf}}var gf=n(1905),pf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(gf.A,pf);gf.A.locals;class ff extends lm{hexInputRow;_debounceColorPickerEvent;_config;constructor(t,e={}){super(t),this.set({color:"",_hexColor:""}),this.hexInputRow=this._createInputRow();const n=this.createCollection();e.hideInput||n.add(this.hexInputRow),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker"],tabindex:-1},children:n}),this._config=e,this._debounceColorPickerEvent=F((t=>{this.set("color",t),this.fire("colorSelected",{color:this.color})}),150,{leading:!0}),this.on("set:color",((t,e,n)=>{t.return=xg(n,this._config.format||"hsl")})),this.on("change:color",(()=>{this._hexColor=bf(this.color)})),this.on("change:_hexColor",(()=>{document.activeElement!==this.picker&&this.picker.setAttribute("color",this._hexColor),bf(this.color)!=bf(this._hexColor)&&(this.color=this._hexColor)}))}render(){var t,e;if(super.render(),t="hex-color-picker",e=mf,void 0===customElements.get(t)&&customElements.define(t,e),this.picker=Yn.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 t=document.createElement("style");t.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(t)}this.picker.addEventListener("color-changed",(t=>{const e=t.detail.value;this._debounceColorPickerEvent(e)}))}focus(){if(!this._config.hideInput&&(Xn.isGecko||Xn.isiOS||Xn.isSafari)){this.hexInputRow.children.get(1).focus()}this.slidersView.first.focus()}_createSlidersView(){const t=[...this.picker.shadowRoot.children].filter((t=>"slider"===t.getAttribute("role"))).map((t=>new kf(t)));this.slidersView=this.createCollection(),t.forEach((t=>{this.slidersView.add(t)}))}_createInputRow(){const t=this._createColorInput();return new Af(this.locale,t)}_createColorInput(){const t=new Sg(this.locale,Rp),{t:e}=this.locale;return t.set({label:e("HEX"),class:"color-picker-hex-input"}),t.fieldView.bind("value").to(this,"_hexColor",(e=>t.isFocused?t.fieldView.value:e.startsWith("#")?e.substring(1):e)),t.fieldView.on("input",(()=>{const e=t.fieldView.element.value;if(e){const t=_f(e);t&&this._debounceColorPickerEvent(t)}})),t}isValid(){const{t}=this.locale;return!!this._config.hideInput||(this.resetValidationStatus(),!!this.hexInputRow.getParsedColor()||(this.hexInputRow.inputView.errorText=t('Please enter a valid color (e.g. "ff0000").'),!1))}resetValidationStatus(){this.hexInputRow.inputView.errorText=null}}function bf(t){let e=function(t){if(!t)return"";const e=Eg(t);return e?"hex"===e.space?e.hexValue:xg(t,"hex"):"#000"}(t);return e||(e="#000"),4===e.length&&(e="#"+[e[1],e[1],e[2],e[2],e[3],e[3]].join("")),e.toLowerCase()}class kf extends lm{constructor(t){super(),this.element=t}focus(){this.element.focus()}}class wf extends lm{constructor(t){super(t),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker__hash-view"]},children:"#"})}}class Af extends lm{children;inputView;constructor(t,e){super(t),this.inputView=e,this.children=this.createCollection([new wf,this.inputView]),this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-picker__row"]},children:this.children})}getParsedColor(){return _f(this.inputView.fieldView.element.value)}}function _f(t){if(!t)return null;const e=t.trim().replace(/^#/,"");return[3,4,6,8].includes(e.length)&&/^(([0-9a-fA-F]{2}){3,4}|([0-9a-fA-F]){3,4})$/.test(e)?`#${e}`:null}class Cf extends(jr(xo)){constructor(t){super(t),this.set("isEmpty",!0),this.on("change",(()=>{this.set("isEmpty",0===this.length)}))}add(t,e){return this.find((e=>e.color===t.color))?this:super.add(t,e)}hasColor(t){return!!this.find((e=>e.color===t))}}class vf extends lm{items;colorDefinitions;focusTracker;columns;documentColors;documentColorsCount;staticColorsGrid;documentColorsGrid;colorPickerButtonView;removeColorButtonView;_focusables;_documentColorsLabel;_removeButtonLabel;_colorPickerLabel;constructor(t,{colors:e,columns:n,removeButtonLabel:r,documentColorsLabel:i,documentColorsCount:o,colorPickerLabel:s,focusTracker:a,focusables:l}){super(t);const c=this.bindTemplate;this.set("isVisible",!0),this.focusTracker=a,this.items=this.createCollection(),this.colorDefinitions=e,this.columns=n,this.documentColors=new Cf,this.documentColorsCount=o,this._focusables=l,this._removeButtonLabel=r,this._colorPickerLabel=s,this._documentColorsLabel=i,this.setTemplate({tag:"div",attributes:{class:["ck-color-grids-fragment",c.if("isVisible","ck-hidden",(t=>!t))]},children:this.items}),this.removeColorButtonView=this._createRemoveColorButton(),this.items.add(this.removeColorButtonView)}updateDocumentColors(t,e){const n=t.document,r=this.documentColorsCount;this.documentColors.clear();for(const i of n.getRoots()){const n=t.createRangeIn(i);for(const t of n.getItems())if(t.is("$textProxy")&&t.hasAttribute(e)&&(this._addColorToDocumentColors(t.getAttribute(e)),this.documentColors.length>=r))return}}updateSelectedColors(){const t=this.documentColorsGrid,e=this.staticColorsGrid,n=this.selectedColor;e.selectedColor=n,t&&(t.selectedColor=n)}render(){if(super.render(),this.staticColorsGrid=this._createStaticColorsGrid(),this.items.add(this.staticColorsGrid),this.documentColorsCount){const t=Nu.bind(this.documentColors,this.documentColors),e=new lm(this.locale);e.setTemplate({tag:"span",attributes:{class:["ck","ck-color-grid__label",t.if("isEmpty","ck-hidden")]},children:[{text:this._documentColorsLabel}]}),this.items.add(e),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 wm,this.colorPickerButtonView.set({label:this._colorPickerLabel,withText:!0,icon:zu.colorPalette,class:"ck-color-selector__color-picker"}),this.colorPickerButtonView.on("execute",(()=>{this.fire("colorPicker:show")}))}_createRemoveColorButton(){const t=new wm;return t.set({withText:!0,icon:zu.eraser,label:this._removeButtonLabel}),t.class="ck-color-selector__remove-color",t.on("execute",(()=>{this.fire("execute",{value:null,source:"removeColorButton"})})),t.render(),t}_createStaticColorsGrid(){const t=new Ag(this.locale,{colorDefinitions:this.colorDefinitions,columns:this.columns});return t.on("execute",((t,e)=>{this.fire("execute",{value:e.value,source:"staticColorsGrid"})})),t}_createDocumentColorsGrid(){const t=Nu.bind(this.documentColors,this.documentColors),e=new Ag(this.locale,{columns:this.columns});return e.extendTemplate({attributes:{class:t.if("isEmpty","ck-hidden")}}),e.items.bindTo(this.documentColors).using((t=>{const e=new bg;return e.set({color:t.color,hasBorder:t.options&&t.options.hasBorder}),t.label&&e.set({label:t.label,tooltip:!0}),e.on("execute",(()=>{this.fire("execute",{value:t.color,source:"documentColorsGrid"})})),e})),this.documentColors.on("change:isEmpty",((t,n,r)=>{r&&(e.selectedColor=null)})),e}_addColorToDocumentColors(t){const e=this.colorDefinitions.find((e=>e.color===t));e?this.documentColors.add(Object.assign({},e)):this.documentColors.add({color:t,label:t,options:{hasBorder:!1}})}}class yf extends lm{items;colorPickerView;saveButtonView;cancelButtonView;actionBarView;focusTracker;keystrokes;_focusables;_colorPickerViewConfig;constructor(t,{focusTracker:e,focusables:n,keystrokes:r,colorPickerViewConfig:i}){super(t),this.items=this.createCollection(),this.focusTracker=e,this.keystrokes=r,this.set("isVisible",!1),this.set("selectedColor",void 0),this._focusables=n,this._colorPickerViewConfig=i;const o=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",o.if("isVisible","ck-hidden",(t=>!t))]},children:this.items})}render(){super.render();const t=new ff(this.locale,{...this._colorPickerViewConfig});this.colorPickerView=t,this.colorPickerView.render(),this.selectedColor&&(t.color=this.selectedColor),this.listenTo(this,"change:selectedColor",((e,n,r)=>{t.color=r})),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",(t=>{this.isVisible&&this.focusTracker.focusedElement!==this.cancelButtonView.element&&this.colorPickerView.isValid()&&(this.fire("execute",{value:this.selectedColor}),t.stopPropagation(),t.preventDefault())}))}_stopPropagationOnArrowsKeys(){const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t)}_addColorPickersElementsToFocusTracker(){for(const t of this.colorPickerView.slidersView)this.focusTracker.add(t.element),this._focusables.add(t);const t=this.colorPickerView.hexInputRow.children.get(1);t.element&&(this.focusTracker.add(t.element),this._focusables.add(t)),this.focusTracker.add(this.saveButtonView.element),this._focusables.add(this.saveButtonView),this.focusTracker.add(this.cancelButtonView.element),this._focusables.add(this.cancelButtonView)}_createActionBarView({saveButtonView:t,cancelButtonView:e}){const n=new lm,r=this.createCollection();return r.add(t),r.add(e),n.setTemplate({tag:"div",attributes:{class:["ck","ck-color-selector_action-bar"]},children:r}),n}_createActionButtons(){const t=this.locale,e=t.t,n=new wm(t),r=new wm(t);return n.set({icon:zu.check,class:"ck-button-save",type:"button",withText:!1,label:e("Accept")}),r.set({icon:zu.cancel,class:"ck-button-cancel",type:"button",withText:!1,label:e("Cancel")}),n.on("execute",(()=>{this.colorPickerView.isValid()&&this.fire("execute",{source:"colorPickerSaveButton",value:this.selectedColor})})),r.on("execute",(()=>{this.fire("colorPicker:cancel")})),{saveButtonView:n,cancelButtonView:r}}_executeUponColorChange(){this.colorPickerView.on("colorSelected",((t,e)=>{this.fire("execute",{value:e.color,source:"colorPicker"}),this.set("selectedColor",e.color)}))}}var xf=n(6309),Ef={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(xf.A,Ef);xf.A.locals;class Bf extends lm{focusTracker;keystrokes;items;colorGridsFragmentView;colorPickerFragmentView;_focusCycler;_focusables;_colorPickerViewConfig;constructor(t,{colors:e,columns:n,removeButtonLabel:r,documentColorsLabel:i,documentColorsCount:o,colorPickerLabel:s,colorPickerViewConfig:a}){super(t),this.items=this.createCollection(),this.focusTracker=new Bo,this.keystrokes=new Do,this._focusables=new Mu,this._colorPickerViewConfig=a,this._focusCycler=new ym({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.colorGridsFragmentView=new vf(t,{colors:e,columns:n,removeButtonLabel:r,documentColorsLabel:i,documentColorsCount:o,colorPickerLabel:s,focusTracker:this.focusTracker,focusables:this._focusables}),this.colorPickerFragmentView=new yf(t,{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",((t,e,n)=>{this.colorGridsFragmentView.set("selectedColor",n),this.colorPickerFragmentView.set("selectedColor",n)})),this.colorGridsFragmentView.on("change:selectedColor",((t,e,n)=>{this.set("selectedColor",n)})),this.colorPickerFragmentView.on("change:selectedColor",((t,e,n)=>{this.set("selectedColor",n)})),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(t,e){this.colorGridsFragmentView.updateDocumentColors(t,e)}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 Df{editor;_components=new Map;constructor(t){this.editor=t}*names(){for(const t of this._components.values())yield t.originalName}add(t,e){this._components.set(Sf(t),{callback:e,originalName:t})}create(t){if(!this.has(t))throw new kr("componentfactory-item-missing",this,{name:t});return this._components.get(Sf(t)).callback(this.editor.locale)}has(t){return this._components.has(Sf(t))}}function Sf(t){return String(t).toLowerCase()}var Tf=n(9205),If={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Tf.A,If);Tf.A.locals;const Pf="ck-tooltip";class Vf extends(oi()){tooltipTextView;balloonPanelView;static defaultBalloonPositions=op.generatePositions({heightOffset:5,sideOffset:13});_currentElementWithTooltip=null;_currentTooltipPosition=null;_mutationObserver=null;_pinTooltipDebounced;_unpinTooltipDebounced;_watchdogExcluded;static _editors=new Set;static _instance=null;constructor(t){if(super(),Vf._editors.add(t),Vf._instance)return Vf._instance;Vf._instance=this,this.tooltipTextView=new lm(t.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 op(t.locale),this.balloonPanelView.class=Pf,this.balloonPanelView.content.add(this.tooltipTextView),this._mutationObserver=function(t){const e=new MutationObserver((()=>{t()}));return{attach(t){e.observe(t,{attributes:!0,attributeFilter:["data-cke-tooltip-text","data-cke-tooltip-position"]})},detach(){e.disconnect()}}}((()=>{this._updateTooltipPosition()})),this._pinTooltipDebounced=F(this._pinTooltip,600),this._unpinTooltipDebounced=F(this._unpinTooltip,400),this.listenTo(Yn.document,"keydown",this._onKeyDown.bind(this),{useCapture:!0}),this.listenTo(Yn.document,"mouseenter",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(Yn.document,"mouseleave",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(Yn.document,"focus",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(Yn.document,"blur",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(Yn.document,"scroll",this._onScroll.bind(this),{useCapture:!0}),this._watchdogExcluded=!0}destroy(t){const e=t.ui.view&&t.ui.view.body;Vf._editors.delete(t),this.stopListening(t.ui),e&&e.has(this.balloonPanelView)&&e.remove(this.balloonPanelView),Vf._editors.size||(this._unpinTooltip(),this.balloonPanelView.destroy(),this.stopListening(),Vf._instance=null)}static getPositioningFunctions(t){const e=Vf.defaultBalloonPositions;return{s:[e.southArrowNorth,e.southArrowNorthEast,e.southArrowNorthWest],n:[e.northArrowSouth],e:[e.eastArrowWest],w:[e.westArrowEast],sw:[e.southArrowNorthEast],se:[e.southArrowNorthWest]}[t]}_onKeyDown(t,e){"Escape"===e.key&&this._currentElementWithTooltip&&(this._unpinTooltip(),e.stopPropagation())}_onEnterOrFocus(t,{target:e}){const n=Ff(e);n?n!==this._currentElementWithTooltip&&(this._unpinTooltip(),"focus"!==t.name||n.matches(":hover")?this._pinTooltipDebounced(n,Rf(n)):this._pinTooltip(n,Rf(n))):"focus"===t.name&&this._unpinTooltip()}_onLeaveOrBlur(t,{target:e,relatedTarget:n}){if("mouseleave"===t.name){if(!U(e))return;const t=this.balloonPanelView.element,r=t&&(t===n||t.contains(n)),i=!r&&e===t;if(r)return void this._unpinTooltipDebounced.cancel();if(!i&&this._currentElementWithTooltip&&e!==this._currentElementWithTooltip)return;const o=Ff(e),s=Ff(n);(i||o&&o!==s)&&this._unpinTooltipDebounced()}else{if(this._currentElementWithTooltip&&e!==this._currentElementWithTooltip)return;this._unpinTooltipDebounced()}}_onScroll(t,{target:e}){this._currentElementWithTooltip&&(e.contains(this.balloonPanelView.element)&&e.contains(this._currentElementWithTooltip)||this._unpinTooltip())}_pinTooltip(t,{text:e,position:n,cssClass:r}){this._unpinTooltip();const i=Eo(Vf._editors.values()).ui.view.body;i.has(this.balloonPanelView)||i.add(this.balloonPanelView),this.tooltipTextView.text=e,this.balloonPanelView.class=[Pf,r].filter((t=>t)).join(" "),this.balloonPanelView.pin({target:t,positions:Vf.getPositioningFunctions(n)}),this._mutationObserver.attach(t);for(const t of Vf._editors)this.listenTo(t.ui,"update",this._updateTooltipPosition.bind(this),{priority:"low"});this._currentElementWithTooltip=t,this._currentTooltipPosition=n}_unpinTooltip(){this._unpinTooltipDebounced.cancel(),this._pinTooltipDebounced.cancel(),this.balloonPanelView.unpin();for(const t of Vf._editors)this.stopListening(t.ui,"update");this._currentElementWithTooltip=null,this._currentTooltipPosition=null,this.tooltipTextView.text="",this._mutationObserver.detach()}_updateTooltipPosition(){if(!this._currentElementWithTooltip)return;const t=Rf(this._currentElementWithTooltip);Di(this._currentElementWithTooltip)&&t.text?this.balloonPanelView.pin({target:this._currentElementWithTooltip,positions:Vf.getPositioningFunctions(t.position)}):this._unpinTooltip()}}function Ff(t){return U(t)?t.closest("[data-cke-tooltip-text]:not([data-cke-tooltip-disabled])"):null}function Rf(t){return{text:t.dataset.ckeTooltipText,position:t.dataset.ckeTooltipPosition||"s",cssClass:t.dataset.ckeTooltipClass||""}}class Lf extends(oi()){editor;_balloonView;_showBalloonThrottled;_lastFocusedEditableElement;constructor(t){super(),this.editor=t,this._balloonView=null,this._lastFocusedEditableElement=null,this._showBalloonThrottled=R(this._showBalloon.bind(this),50,{leading:!0}),t.on("ready",this._handleEditorReady.bind(this))}destroy(){const t=this._balloonView;t&&(t.unpin(),this._balloonView=null),this._showBalloonThrottled.cancel(),this.stopListening()}_handleEditorReady(){const t=this.editor;(!!t.config.get("ui.poweredBy.forceVisible")||"VALID"!==function(t){function e(t){return t.length>=40&&t.length<=255?"VALID":"INVALID"}if(!t)return"INVALID";let n="";try{n=atob(t)}catch(t){return"INVALID"}const r=n.split("-"),i=r[0],o=r[1];if(!o)return e(t);try{atob(o)}catch(n){try{if(atob(i),!atob(i).length)return e(t)}catch(n){return e(t)}}if(i.length<40||i.length>255)return"INVALID";let s="";try{atob(i),s=atob(o)}catch(t){return"INVALID"}if(8!==s.length)return"INVALID";const a=Number(s.substring(0,4)),l=Number(s.substring(4,6))-1,c=Number(s.substring(6,8)),d=new Date(a,l,c);return d{this._updateLastFocusedEditableElement(),n?this._showBalloon():this._hideBalloon()})),t.ui.focusTracker.on("change:focusedElement",((t,e,n)=>{this._updateLastFocusedEditableElement(),n&&this._showBalloon()})),t.ui.on("update",(()=>{this._showBalloonThrottled()})))}_createBalloonView(){const t=this.editor,e=this._balloonView=new op,n=Nf(t),r=new zf(t.locale,n.label);e.content.add(r),e.set({class:"ck-powered-by-balloon"}),t.ui.view.body.add(e),this._balloonView=e}_showBalloon(){if(!this._lastFocusedEditableElement)return;const t=function(t,e){const n=Nf(t),r="right"===n.side?function(t,e){return Mf(t,e,((t,n)=>t.left+t.width-n.width-e.horizontalOffset))}(e,n):function(t,e){return Mf(t,e,(t=>t.left+e.horizontalOffset))}(e,n);return{target:e,positions:[r]}}(this.editor,this._lastFocusedEditableElement);t&&(this._balloonView||this._createBalloonView(),this._balloonView.pin(t))}_hideBalloon(){this._balloonView&&this._balloonView.unpin()}_updateLastFocusedEditableElement(){const t=this.editor,e=t.ui.focusTracker.isFocused,n=t.ui.focusTracker.focusedElement;if(!e||!n)return void(this._lastFocusedEditableElement=null);const r=Array.from(t.ui.getEditableElementsNames()).map((e=>t.ui.getEditableElement(e)));r.includes(n)?this._lastFocusedEditableElement=n:this._lastFocusedEditableElement=r[0]}}class zf extends lm{constructor(t,e){super(t);const n=new pm,r=this.bindTemplate;n.set({content:'\r\n',isColorInherited:!1}),n.extendTemplate({attributes:{style:{width:"53px",height:"10px"}}}),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:[...e?[{tag:"span",attributes:{class:["ck","ck-powered-by__label"]},children:[e]}]:[],n],on:{dragstart:r.to((t=>t.preventDefault()))}}]})}}function Mf(t,e,n){return(r,i)=>{const o=new fi(t);if(o.width<350||o.height<50)return null;let s;s="inside"===e.position?o.bottom-i.height:o.bottom-i.height/2,s-=e.verticalOffset;const a=n(o,i),l=r.clone().moveTo(a,s).getIntersection(i.clone().moveTo(a,s)).getVisible();return!l||l.getArea(){for(const t of Object.values(jf))this.announce("",t)}))}announce(t,e=jf.POLITE){const n=this.editor;if(!n.ui.view)return;this.view||(this.view=new Uf(n.locale),n.ui.view.body.add(this.view));const{politeness:r,isUnsafeHTML:i}="string"==typeof e?{politeness:e}:e;let o=this.view.regionViews.find((t=>t.politeness===r));o||(o=new Wf(n,r),this.view.regionViews.add(o)),o.announce({announcement:t,isUnsafeHTML:i})}}class Uf extends lm{regionViews;constructor(t){super(t),this.regionViews=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-aria-live-announcer"]},children:this.regionViews})}}class Wf extends lm{politeness;_domConverter;_pruneAnnouncementsInterval;constructor(t,e){super(t.locale),this.setTemplate({tag:"div",attributes:{"aria-live":e,"aria-relevant":"additions"},children:[{tag:"ul",attributes:{class:["ck","ck-aria-live-region-list"]}}]}),t.on("destroy",(()=>{null!==this._pruneAnnouncementsInterval&&(clearInterval(this._pruneAnnouncementsInterval),this._pruneAnnouncementsInterval=null)})),this.politeness=e,this._domConverter=t.data.htmlProcessor.domConverter,this._pruneAnnouncementsInterval=setInterval((()=>{this.element&&this._listElement.firstChild&&this._listElement.firstChild.remove()}),5e3)}announce({announcement:t,isUnsafeHTML:e}){if(!t.trim().length)return;const n=document.createElement("li");e?this._domConverter.setContentOf(n,t):n.innerText=t,this._listElement.appendChild(n)}get _listElement(){return this.element.querySelector("ul")}}var $f=n(9481),Gf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()($f.A,Gf);$f.A.locals;class Kf extends Gg{constructor(t,e){super(t);const n=this.bindTemplate;this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item"]},on:{mouseenter:n.to("mouseenter")}}),this.delegate("mouseenter").to(e)}}const Zf={toggleMenusAndFocusItemsOnHover(t){t.on("menu:mouseenter",(e=>{if(t.isFocusBorderEnabled||t.isOpen){if(t.isOpen)for(const n of t.menus){const t=e.path[0],r=t instanceof Kf&&t.children.first===n;n.isOpen=(e.path.includes(n)||r)&&n.isEnabled}e.source.focus()}}))},focusCycleMenusOnArrows(t){const e="rtl"===t.locale.uiLanguageDirection;function n(e,n){const r=t.children.getIndex(e),i=e.isOpen,o=t.children.length,s=t.children.get((r+o+n)%o);e.isOpen=!1,i&&(s.isOpen=!0),s.buttonView.focus()}t.on("menu:arrowright",(t=>{n(t.source,e?-1:1)})),t.on("menu:arrowleft",(t=>{n(t.source,e?1:-1)}))},closeMenusWhenTheBarCloses(t){t.on("change:isOpen",(()=>{t.isOpen||t.menus.forEach((t=>{t.isOpen=!1}))}))},closeMenuWhenAnotherOnTheSameLevelOpens(t){t.on("menu:change:isOpen",((e,n,r)=>{r&&t.menus.filter((t=>e.source.parentMenuView===t.parentMenuView&&e.source!==t&&t.isOpen)).forEach((t=>{t.isOpen=!1}))}))},closeOnClickOutside(t){cm({emitter:t,activator:()=>t.isOpen,callback:()=>t.close(),contextElements:()=>t.children.map((t=>t.element))})},enableFocusHighlightOnInteraction(t){let e=!1;t.on("change:isOpen",((n,r,i)=>{i||(e||(t.isFocusBorderEnabled=!1),e=!1)})),t.listenTo(t.element,"keydown",(()=>{e=!0}),{useCapture:!0}),t.listenTo(t.element,"keyup",(()=>{e=!1}),{useCapture:!0}),t.listenTo(t.element,"focus",(()=>{e&&(t.isFocusBorderEnabled=!0)}),{useCapture:!0})}},Yf={openAndFocusPanelOnArrowDownKey(t){t.keystrokes.set("arrowdown",((e,n)=>{t.focusTracker.focusedElement===t.buttonView.element&&(t.isOpen||(t.isOpen=!0),t.panelView.focus(),n())}))},openOnArrowRightKey(t){const e="rtl"===t.locale.uiLanguageDirection?"arrowleft":"arrowright";t.keystrokes.set(e,((e,n)=>{t.focusTracker.focusedElement===t.buttonView.element&&t.isEnabled&&(t.isOpen||(t.isOpen=!0),t.panelView.focus(),n())}))},openOnButtonClick(t){t.buttonView.on("execute",(()=>{t.isOpen=!0}))},toggleOnButtonClick(t){t.buttonView.on("execute",(()=>{t.isOpen=!t.isOpen}))},openAndFocusOnEnterKeyPress(t){t.keystrokes.set("enter",((e,n)=>{t.focusTracker.focusedElement===t.buttonView.element&&(t.isOpen=!0,t.panelView.focus(),n())}))},closeOnArrowLeftKey(t){const e="rtl"===t.locale.uiLanguageDirection?"arrowright":"arrowleft";t.keystrokes.set(e,((e,n)=>{t.isOpen&&(t.isOpen=!1,t.focus(),n())}))},closeOnEscKey(t){t.keystrokes.set("esc",((e,n)=>{t.isOpen&&(t.isOpen=!1,t.focus(),n())}))},closeOnParentClose(t){t.parentMenuView.on("change:isOpen",((e,n,r)=>{r||e.source!==t.parentMenuView||(t.isOpen=!1)}))}},Jf={southEast:t=>({top:t.bottom,left:t.left,name:"se"}),southWest:(t,e)=>({top:t.bottom,left:t.left-e.width+t.width,name:"sw"}),northEast:(t,e)=>({top:t.top-e.height,left:t.left,name:"ne"}),northWest:(t,e)=>({top:t.top-e.height,left:t.left-e.width+t.width,name:"nw"}),eastSouth:t=>({top:t.top,left:t.right-5,name:"es"}),eastNorth:(t,e)=>({top:t.top-e.height,left:t.right-5,name:"en"}),westSouth:(t,e)=>({top:t.top,left:t.left-e.width+5,name:"ws"}),westNorth:(t,e)=>({top:t.top-e.height,left:t.left-e.width+5,name:"wn"})},Qf=[{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:"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:comment","menuBar:insertMergeField"]},{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 Xf({normalizedConfig:t,locale:e,componentFactory:n,extraItems:r}){const i=Ll(t);return tb(t,i,r),function(t,e){const n=e.removeItems,r=[];e.items=e.items.filter((({menuId:t})=>!n.includes(t)||(r.push(t),!1))),ib(e.items,(t=>{t.groups=t.groups.filter((({groupId:t})=>!n.includes(t)||(r.push(t),!1)));for(const e of t.groups)e.items=e.items.filter((t=>{const e=lb(t);return!n.includes(e)||(r.push(e),!1)}))}));for(const e of n)r.includes(e)||wr("menu-bar-item-could-not-be-removed",{menuBarConfig:t,itemName:e})}(t,i),tb(t,i,i.addItems),function(t,e,n){ib(e.items,(r=>{for(const i of r.groups)i.items=i.items.filter((i=>{const o="string"==typeof i&&!n.has(i);return o&&!e.isUsingDefaultConfig&&wr("menu-bar-item-unavailable",{menuBarConfig:t,parentMenuConfig:Ll(r),componentName:i}),!o}))}))}(t,i,n),nb(t,i),function(t,e){const n=e.t,r={File:n({string:"File",id:"MENU_BAR_MENU_FILE"}),Edit:n({string:"Edit",id:"MENU_BAR_MENU_EDIT"}),View:n({string:"View",id:"MENU_BAR_MENU_VIEW"}),Insert:n({string:"Insert",id:"MENU_BAR_MENU_INSERT"}),Format:n({string:"Format",id:"MENU_BAR_MENU_FORMAT"}),Tools:n({string:"Tools",id:"MENU_BAR_MENU_TOOLS"}),Help:n({string:"Help",id:"MENU_BAR_MENU_HELP"}),Text:n({string:"Text",id:"MENU_BAR_MENU_TEXT"}),Font:n({string:"Font",id:"MENU_BAR_MENU_FONT"})};ib(t.items,(t=>{t.label in r&&(t.label=r[t.label])}))}(i,e),i}function tb(t,e,n){const r=[];if(0!=n.length){for(const t of n){const n=sb(t.position),o=ab(t.position);if("object"==typeof(i=t)&&"menu"in i)if(o){const i=e.items.findIndex((t=>t.menuId===o));if(-1!=i)"before"===n?(e.items.splice(i,0,t.menu),r.push(t)):"after"===n&&(e.items.splice(i+1,0,t.menu),r.push(t));else{eb(e,t.menu,o,n)&&r.push(t)}}else"start"===n?(e.items.unshift(t.menu),r.push(t)):"end"===n&&(e.items.push(t.menu),r.push(t));else if(ob(t))ib(e.items,(e=>{if(e.menuId===o)"start"===n?(e.groups.unshift(t.group),r.push(t)):"end"===n&&(e.groups.push(t.group),r.push(t));else{const i=e.groups.findIndex((t=>t.groupId===o));-1!==i&&("before"===n?(e.groups.splice(i,0,t.group),r.push(t)):"after"===n&&(e.groups.splice(i+1,0,t.group),r.push(t)))}}));else{eb(e,t.item,o,n)&&r.push(t)}}var i;for(const e of n)r.includes(e)||wr("menu-bar-item-could-not-be-added",{menuBarConfig:t,addedItemConfig:e})}}function eb(t,e,n,r){let i=!1;return ib(t.items,(t=>{for(const{groupId:o,items:s}of t.groups){if(i)return;if(o===n)"start"===r?(s.unshift(e),i=!0):"end"===r&&(s.push(e),i=!0);else{const t=s.findIndex((t=>lb(t)===n));-1!==t&&("before"===r?(s.splice(t,0,e),i=!0):"after"===r&&(s.splice(t+1,0,e),i=!0))}}})),i}function nb(t,e){const n=e.isUsingDefaultConfig;let r=!1;e.items=e.items.filter((e=>!!e.groups.length||(rb(t,e,n),!1))),e.items.length?(ib(e.items,(e=>{e.groups=e.groups.filter((t=>!!t.items.length||(r=!0,!1)));for(const i of e.groups)i.items=i.items.filter((e=>!(cb(e)&&!e.groups.length)||(rb(t,e,n),r=!0,!1)))})),r&&nb(t,e)):rb(t,t,n)}function rb(t,e,n){n||wr("menu-bar-menu-empty",{menuBarConfig:t,emptyMenuConfig:e})}function ib(t,e){if(Array.isArray(t))for(const e of t)n(e);function n(t){e(t);for(const e of t.groups)for(const t of e.items)cb(t)&&n(t)}}function ob(t){return"object"==typeof t&&"group"in t}function sb(t){return t.startsWith("start")?"start":t.startsWith("end")?"end":t.startsWith("after")?"after":"before"}function ab(t){const e=t.match(/^[^:]+:(.+)/);return e?e[1]:null}function lb(t){return"string"==typeof t?t:t.menuId}function cb(t){return"object"==typeof t&&"menuId"in t}class db extends(jr()){editor;componentFactory;focusTracker;tooltipManager;poweredBy;ariaLiveAnnouncer;isReady=!1;_editableElementsMap=new Map;_focusableToolbarDefinitions=[];_extraMenuBarElements=[];_lastFocusedForeignElement=null;constructor(t){super();const e=t.editing.view;this.editor=t,this.componentFactory=new Df(t),this.focusTracker=new Bo,this.tooltipManager=new Vf(t),this.poweredBy=new Lf(t),this.ariaLiveAnnouncer=new qf(t),this.set("viewportOffset",this._readViewportOffsetFromConfig()),this.once("ready",(()=>{this._bindBodyCollectionWithFocusTracker(),this.isReady=!0})),this.listenTo(e.document,"layoutChanged",this.update.bind(this)),this.listenTo(e,"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();for(const t of this._editableElementsMap.values())t.ckeditorInstance=null,this.editor.keystrokes.stopListening(t);this._editableElementsMap=new Map,this._focusableToolbarDefinitions=[]}setEditableElement(t,e){this._editableElementsMap.set(t,e),e.ckeditorInstance||(e.ckeditorInstance=this.editor),this.focusTracker.add(e);const n=()=>{this.editor.editing.view.getDomRoot(t)||this.editor.keystrokes.listenTo(e)};this.isReady?n():this.once("ready",n)}removeEditableElement(t){const e=this._editableElementsMap.get(t);e&&(this._editableElementsMap.delete(t),this.editor.keystrokes.stopListening(e),this.focusTracker.remove(e),e.ckeditorInstance=null)}getEditableElement(t="main"){return this._editableElementsMap.get(t)}getEditableElementsNames(){return this._editableElementsMap.keys()}addToolbar(t,e={}){t.isRendered?(this.focusTracker.add(t.element),this.editor.keystrokes.listenTo(t.element)):t.once("render",(()=>{this.focusTracker.add(t.element),this.editor.keystrokes.listenTo(t.element)})),this._focusableToolbarDefinitions.push({toolbarView:t,options:e})}extendMenuBar(t){this._extraMenuBarElements.push(t)}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(t){const e=t.element;this.focusTracker.add(e),this.editor.keystrokes.listenTo(e);const n=function(t){let e;return e="items"in t&&t.items?{items:t.items,removeItems:[],addItems:[],isVisible:!0,isUsingDefaultConfig:!1,...t}:{items:Ll(Qf),addItems:[],removeItems:[],isVisible:!0,isUsingDefaultConfig:!0,...t},e}(this.editor.config.get("menuBar")||{});t.fillFromConfig(n,this.componentFactory,this._extraMenuBarElements),this.editor.keystrokes.set("Esc",((t,n)=>{e.contains(this.editor.ui.focusTracker.focusedElement)&&(this._lastFocusedForeignElement?(this._lastFocusedForeignElement.focus(),this._lastFocusedForeignElement=null):this.editor.editing.view.focus(),n())})),this.editor.keystrokes.set("Alt+F9",((n,r)=>{e.contains(this.editor.ui.focusTracker.focusedElement)||(this._saveLastFocusedForeignElement(),t.isFocusBorderEnabled=!0,t.focus(),r())}))}_readViewportOffsetFromConfig(){const t=this.editor,e=t.config.get("ui.viewportOffset");if(e)return e;const n=t.config.get("toolbar.viewportTopOffset");return n?(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:n}):{top:0}}_initFocusTracking(){const t=this.editor;let e;t.keystrokes.set("Alt+F10",((t,n)=>{this._saveLastFocusedForeignElement();const r=this._getCurrentFocusedToolbarDefinition();r&&e||(e=this._getFocusableCandidateToolbarDefinitions());for(let t=0;t{const r=this._getCurrentFocusedToolbarDefinition();r&&(this._lastFocusedForeignElement?(this._lastFocusedForeignElement.focus(),this._lastFocusedForeignElement=null):t.editing.view.focus(),r.options.afterBlur&&r.options.afterBlur(),n())}))}_saveLastFocusedForeignElement(){const t=this.focusTracker.focusedElement;Array.from(this._editableElementsMap.values()).includes(t)&&!Array.from(this.editor.editing.view.domRoots.values()).includes(t)&&(this._lastFocusedForeignElement=t)}_getFocusableCandidateToolbarDefinitions(){const t=[];for(const e of this._focusableToolbarDefinitions){const{toolbarView:n,options:r}=e;(Di(n.element)||r.beforeFocus)&&t.push(e)}return t.sort(((t,e)=>hb(t)-hb(e))),t}_getCurrentFocusedToolbarDefinition(){for(const t of this._focusableToolbarDefinitions)if(t.toolbarView.element&&t.toolbarView.element.contains(this.focusTracker.focusedElement))return t;return null}_focusFocusableCandidateToolbar(t){const{toolbarView:e,options:{beforeFocus:n}}=t;return n&&n(),!!Di(e.element)&&(e.focus(),!0)}_handleScrollToTheSelection(t,e){const n={top:0,bottom:0,left:0,right:0,...this.viewportOffset};e.viewportOffset.top+=n.top,e.viewportOffset.bottom+=n.bottom,e.viewportOffset.left+=n.left,e.viewportOffset.right+=n.right}_bindBodyCollectionWithFocusTracker(){const t=this.view.body;for(const e of t)this.focusTracker.add(e.element);t.on("add",((t,e)=>{this.focusTracker.add(e.element)})),t.on("remove",((t,e)=>{this.focusTracker.remove(e.element)}))}}function hb(t){const{toolbarView:e,options:n}=t;let r=10;return Di(e.element)&&r--,n.isContextual&&r--,r}var ub=n(1185),mb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(ub.A,mb);ub.A.locals;class gb extends lm{body;menuBarView;constructor(t){super(t),this.body=new ng(t)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}class pb extends lm{name=null;_editingView;_editableElement;_hasExternalElement;constructor(t,e,n){super(t),this.setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:t.contentLanguage,dir:t.contentLanguageDirection}}),this.set("isFocused",!1),this._editableElement=n,this._hasExternalElement=!!this._editableElement,this._editingView=e}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 t=this._editingView;function e(e){t.change((n=>{const r=t.document.getRoot(e.name);n.addClass(e.isFocused?"ck-focused":"ck-blurred",r),n.removeClass(e.isFocused?"ck-blurred":"ck-focused",r)}))}t.isRenderingInProgress?function n(r){t.once("change:isRenderingInProgress",((t,i,o)=>{o?n(r):e(r)}))}(this):e(this)}}class fb extends pb{_options;constructor(t,e,n,r={}){super(t,e,n),this._options=r,this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}})}render(){super.render();const t=this._editingView;t.change((e=>{const n=t.document.getRoot(this.name);e.setAttribute("aria-label",this.getEditableAriaLabel(),n)}))}getEditableAriaLabel(){const t=this.locale.t,e=this._options.label,n=this._editableElement,r=this.name;if("string"==typeof e)return e;if("object"==typeof e)return e[r];if("function"==typeof e)return e(this);if(n){const t=n.getAttribute("aria-label");if(t)return t}return t("Rich Text Editor. Editing area: %0",r)}}class bb extends qo{static get pluginName(){return"Notification"}init(){this.on("show:warning",((t,e)=>{window.alert(e.message)}),{priority:"lowest"})}showSuccess(t,e={}){this._showNotification({message:t,type:"success",namespace:e.namespace,title:e.title})}showInfo(t,e={}){this._showNotification({message:t,type:"info",namespace:e.namespace,title:e.title})}showWarning(t,e={}){this._showNotification({message:t,type:"warning",namespace:e.namespace,title:e.title})}_showNotification(t){const e=t.namespace?`show:${t.type}:${t.namespace}`:`show:${t.type}`;this.fire(e,{message:t.message,type:t.type,title:t.title||""})}}class kb extends(jr()){constructor(t,e){super(),e&&tl(this,e),t&&this.set(t)}}var wb=n(991),Ab={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(wb.A,Ab);wb.A.locals;var _b=n(5380),Cb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(_b.A,Cb);_b.A.locals;const vb=vi("px");class yb extends Lo{positionLimiter;visibleStack;_viewToStack=new Map;_idToStack=new Map;_view=null;_rotatorView=null;_fakePanelsView=null;static get pluginName(){return"ContextualBalloon"}constructor(t){super(t),this.positionLimiter=()=>{const t=this.editor.editing.view,e=t.document.selection.editableElement;return e?t.domConverter.mapViewToDom(e.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(t){return Array.from(this._viewToStack.keys()).includes(t)}add(t){if(this._view||this._createPanelView(),this.hasView(t.view))throw new kr("contextualballoon-add-view-exist",[this,t]);const e=t.stackId||"main";if(!this._idToStack.has(e))return this._idToStack.set(e,new Map([[t.view,t]])),this._viewToStack.set(t.view,this._idToStack.get(e)),this._numberOfStacks=this._idToStack.size,void(this._visibleStack&&!t.singleViewMode||this.showStack(e));const n=this._idToStack.get(e);t.singleViewMode&&this.showStack(e),n.set(t.view,t),this._viewToStack.set(t.view,n),n===this._visibleStack&&this._showView(t)}remove(t){if(!this.hasView(t))throw new kr("contextualballoon-remove-view-not-exist",[this,t]);const e=this._viewToStack.get(t);this._singleViewMode&&this.visibleView===t&&(this._singleViewMode=!1),this.visibleView===t&&(1===e.size?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(e.values())[e.size-2])),1===e.size?(this._idToStack.delete(this._getStackId(e)),this._numberOfStacks=this._idToStack.size):e.delete(t),this._viewToStack.delete(t)}updatePosition(t){t&&(this._visibleStack.get(this.visibleView).position=t),this.view.pin(this.getPositionOptions()),this._fakePanelsView.updatePosition()}getPositionOptions(){let t=Array.from(this._visibleStack.values()).pop().position;return t&&(t.limiter||(t=Object.assign({},t,{limiter:this.positionLimiter})),t=Object.assign({},t,{viewportOffsetConfig:this.editor.ui.viewportOffset})),t}showStack(t){this.visibleStack=t;const e=this._idToStack.get(t);if(!e)throw new kr("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==e&&this._showView(Array.from(e.values()).pop())}_createPanelView(){this._view=new op(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(t){return Array.from(this._idToStack.entries()).find((e=>e[1]===t))[0]}_showNextStack(){const t=Array.from(this._idToStack.values());let e=t.indexOf(this._visibleStack)+1;t[e]||(e=0),this.showStack(this._getStackId(t[e]))}_showPrevStack(){const t=Array.from(this._idToStack.values());let e=t.indexOf(this._visibleStack)-1;t[e]||(e=t.length-1),this.showStack(this._getStackId(t[e]))}_createRotatorView(){const t=new xb(this.editor.locale),e=this.editor.locale.t;return this.view.content.add(t),t.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",((t,e)=>!e&&t>1)),t.on("change:isNavigationVisible",(()=>this.updatePosition()),{priority:"low"}),t.bind("counter").to(this,"visibleView",this,"_numberOfStacks",((t,n)=>{if(n<2)return"";const r=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return e("%0 of %1",[r,n])})),t.buttonNextView.on("execute",(()=>{t.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showNextStack()})),t.buttonPrevView.on("execute",(()=>{t.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showPrevStack()})),t}_createFakePanelsView(){const t=new Eb(this.editor.locale,this.view);return t.bind("numberOfPanels").to(this,"_numberOfStacks",this,"_singleViewMode",((t,e)=>!e&&t>=2?Math.min(t-1,2):0)),t.listenTo(this.view,"change:top",(()=>t.updatePosition())),t.listenTo(this.view,"change:left",(()=>t.updatePosition())),this.editor.ui.view.body.add(t),t}_showView({view:t,balloonClassName:e="",withArrow:n=!0,singleViewMode:r=!1}){this.view.class=e,this.view.withArrow=n,this._rotatorView.showView(t),this.visibleView=t,this.view.pin(this.getPositionOptions()),this._fakePanelsView.updatePosition(),r&&(this._singleViewMode=!0)}}class xb extends lm{focusTracker;buttonPrevView;buttonNextView;content;constructor(t){super(t);const e=t.t,n=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new Bo,this.buttonPrevView=this._createButtonView(e("Previous"),zu.previousArrow),this.buttonNextView=this._createButtonView(e("Next"),zu.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",n.to("isNavigationVisible",(t=>t?"":"ck-hidden"))]},children:[this.buttonPrevView,{tag:"span",attributes:{class:["ck-balloon-rotator__counter"]},children:[{text:n.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(t){this.hideView(),this.content.add(t)}hideView(){this.content.clear()}_createButtonView(t,e){const n=new wm(this.locale);return n.set({label:t,icon:e,tooltip:!0}),n}}class Eb extends lm{content;_balloonPanelView;constructor(t,e){super(t);const n=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=e,this.setTemplate({tag:"div",attributes:{class:["ck-fake-panel",n.to("numberOfPanels",(t=>t?"":"ck-hidden"))],style:{top:n.to("top",vb),left:n.to("left",vb),width:n.to("width",vb),height:n.to("height",vb)}},children:this.content}),this.on("change:numberOfPanels",((t,e,n,r)=>{n>r?this._addPanels(n-r):this._removePanels(r-n),this.updatePosition()}))}_addPanels(t){for(;t--;){const t=new lm;t.setTemplate({tag:"div"}),this.content.add(t),this.registerChild(t)}}_removePanels(t){for(;t--;){const t=this.content.last;this.content.remove(t),this.deregisterChild(t),t.destroy()}}updatePosition(){if(this.numberOfPanels){const{top:t,left:e}=this._balloonPanelView,{width:n,height:r}=new fi(this._balloonPanelView.element);Object.assign(this,{top:t,left:e,width:n,height:r})}}}var Bb=n(8298),Db={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Bb.A,Db);Bb.A.locals;var Sb=/[\\^$.*+?()[\]{}|]/g,Tb=RegExp(Sb.source);const Ib=function(t){return(t=ys(t))&&Tb.test(t)?t.replace(Sb,"\\$&"):t};var Pb=n(8107),Vb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Pb.A,Vb);Pb.A.locals;var Fb=n(5727),Rb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Fb.A,Rb);Fb.A.locals;const Lb=function(t){return function(e){return null==t?void 0:t[e]}};Lb({"&":"&","<":"<",">":">",'"':""","'":"'"});var zb=/[&<>"']/g;RegExp(zb.source);var Mb=n(9529),Nb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Mb.A,Nb);Mb.A.locals;var Ob=n(109),Hb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Ob.A,Hb);Ob.A.locals;const jb=vi("px");class qb extends Lo{toolbarView;focusTracker;_balloonConfig;_resizeObserver=null;_balloon;_fireSelectionChangeDebounced;static get pluginName(){return"BalloonToolbar"}static get requires(){return[yb]}constructor(t){super(t),this._balloonConfig=mp(t.config.get("balloonToolbar")),this.toolbarView=this._createToolbarView(),this.focusTracker=new Bo,this._trackFocusableEditableElements(),this.focusTracker.add(this.toolbarView.element),t.ui.addToolbar(this.toolbarView,{beforeFocus:()=>this.show(!0),afterBlur:()=>this.hide(),isContextual:!0}),this._balloon=t.plugins.get(yb),this._fireSelectionChangeDebounced=F((()=>this.fire("_selectionChangeDebounced")),200),this.decorate("show")}init(){const t=this.editor,e=t.model.document.selection;this.listenTo(this.focusTracker,"change:isFocused",((t,e,n)=>{const r=this._balloon.visibleView===this.toolbarView;!n&&r?this.hide():n&&this.show()})),this.listenTo(e,"change:range",((t,n)=>{(n.directChange||e.isCollapsed)&&this.hide(),this._fireSelectionChangeDebounced()})),this.listenTo(this,"_selectionChangeDebounced",(()=>{this.editor.editing.view.document.isFocused&&this.show()})),this._balloonConfig.shouldNotGroupWhenFull||this.listenTo(t,"ready",(()=>{const e=t.ui.view.editable.element;this._resizeObserver=new _i(e,(t=>{this.toolbarView.maxWidth=jb(.9*t.contentRect.width)}))})),this.listenTo(this.toolbarView,"groupedItemsUpdate",(()=>{this._updatePosition()})),t.ui.once("ready",(()=>{this.toolbarView.fillFromConfig(this._balloonConfig,this.editor.ui.componentFactory)}))}_createToolbarView(){const t=this.editor.locale.t,e=!this._balloonConfig.shouldNotGroupWhenFull,n=new bp(this.editor.locale,{shouldGroupWhenFull:e,isFloating:!0});return n.ariaLabel=t("Editor contextual toolbar"),n.render(),n}show(t=!1){const e=this.editor,n=e.model.document.selection,r=e.model.schema;this._balloon.hasView(this.toolbarView)||n.isCollapsed&&!t||function(t,e){if(1===t.rangeCount)return!1;return[...t.getRanges()].every((t=>{const n=t.getContainedElement();return n&&e.isSelectable(n)}))}(n,r)||Array.from(this.toolbarView.items).every((t=>void 0!==t.isEnabled&&!t.isEnabled))||(this.listenTo(this.editor.ui,"update",(()=>{this._updatePosition()})),this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"}))}hide(){this._balloon.hasView(this.toolbarView)&&(this.stopListening(this.editor.ui,"update"),this._balloon.remove(this.toolbarView))}_trackFocusableEditableElements(){const{editor:t,focusTracker:e}=this,{editing:n}=t;n.view.addObserver(class extends Xa{observe(t){e.add(t)}stopObserving(t){e.remove(t)}})}_getBalloonPositionData(){const t=this.editor.editing.view,e=t.document,n=e.selection,r=e.selection.isBackward;return{target:()=>{const e=r?n.getFirstRange():n.getLastRange(),i=fi.getDomRangeRects(t.domConverter.viewRangeToDom(e));return r?i[0]:(i.length>1&&0===i[i.length-1].width&&i.pop(),i[i.length-1])},positions:this._getBalloonPositions(r)}}_updatePosition(){this._balloon.updatePosition(this._getBalloonPositionData())}destroy(){super.destroy(),this.stopListening(),this._fireSelectionChangeDebounced.cancel(),this.toolbarView.destroy(),this.focusTracker.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}_getBalloonPositions(t){const e=Xn.isSafari&&Xn.isiOS?op.generatePositions({heightOffset:Math.max(op.arrowHeightOffset,Math.round(20/Yn.window.visualViewport.scale))}):op.defaultPositions;return t?[e.northWestArrowSouth,e.northWestArrowSouthWest,e.northWestArrowSouthEast,e.northWestArrowSouthMiddleEast,e.northWestArrowSouthMiddleWest,e.southWestArrowNorth,e.southWestArrowNorthWest,e.southWestArrowNorthEast,e.southWestArrowNorthMiddleWest,e.southWestArrowNorthMiddleEast]:[e.southEastArrowNorth,e.southEastArrowNorthEast,e.southEastArrowNorthWest,e.southEastArrowNorthMiddleEast,e.southEastArrowNorthMiddleWest,e.northEastArrowSouth,e.northEastArrowSouthEast,e.northEastArrowSouthWest,e.northEastArrowSouthMiddleEast,e.northEastArrowSouthMiddleWest]}}var Ub=n(2710),Wb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Ub.A,Wb);Ub.A.locals;const $b=vi("px");class Gb extends wm{constructor(t){super(t);const e=this.bindTemplate;this.isVisible=!1,this.isToggleable=!0,this.set("top",0),this.set("left",0),this.extendTemplate({attributes:{class:"ck-block-toolbar-button",style:{top:e.to("top",(t=>$b(t))),left:e.to("left",(t=>$b(t)))}}})}}const Kb=vi("px");class Zb extends Lo{toolbarView;panelView;buttonView;_resizeObserver=null;_blockToolbarConfig;static get pluginName(){return"BlockToolbar"}constructor(t){super(t),this._blockToolbarConfig=mp(this.editor.config.get("blockToolbar")),this.toolbarView=this._createToolbarView(),this.panelView=this._createPanelView(),this.buttonView=this._createButtonView(),cm({emitter:this.panelView,contextElements:[this.panelView.element,this.buttonView.element],activator:()=>this.panelView.isVisible,callback:()=>this._hidePanel()})}init(){const t=this.editor,e=t.t,n=e("Click to edit block"),r=e("Drag to move"),i=e("Edit block"),o=t.plugins.has("DragDropBlockToolbar"),s=o?`${n}\n${r}`:i;this.buttonView.label=s,o&&(this.buttonView.element.dataset.ckeTooltipClass="ck-tooltip_multi-line"),this.listenTo(t.model.document.selection,"change:range",((t,e)=>{e.directChange&&this._hidePanel()})),this.listenTo(t.ui,"update",(()=>this._updateButton())),this.listenTo(t,"change:isReadOnly",(()=>this._updateButton()),{priority:"low"}),this.listenTo(t.ui.focusTracker,"change:isFocused",(()=>this._updateButton())),this.listenTo(this.buttonView,"change:isVisible",((t,e,n)=>{n?this.buttonView.listenTo(window,"resize",(()=>this._updateButton())):(this.buttonView.stopListening(window,"resize"),this._hidePanel())})),this._repositionButtonOnScroll(),t.ui.addToolbar(this.toolbarView,{beforeFocus:()=>this._showPanel(),afterBlur:()=>this._hidePanel()}),t.ui.once("ready",(()=>{this.toolbarView.fillFromConfig(this._blockToolbarConfig,this.editor.ui.componentFactory);for(const t of this.toolbarView.items)t.on("execute",(()=>this._hidePanel(!0)),{priority:"high"})}))}destroy(){super.destroy(),this.panelView.destroy(),this.buttonView.destroy(),this.toolbarView.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}_createToolbarView(){const t=this.editor.locale.t,e=!this._blockToolbarConfig.shouldNotGroupWhenFull,n=new bp(this.editor.locale,{shouldGroupWhenFull:e,isFloating:!0});return n.ariaLabel=t("Editor block content toolbar"),n}_createPanelView(){const t=this.editor,e=new op(t.locale);return e.content.add(this.toolbarView),e.class="ck-toolbar-container",t.ui.view.body.add(e),this.toolbarView.keystrokes.set("Esc",((t,e)=>{this._hidePanel(!0),e()})),e}_createButtonView(){const t=this.editor,e=t.t,n=new Gb(t.locale),r=this._blockToolbarConfig.icon,i=fp[r]||r||fp.dragIndicator;return n.set({label:e("Edit block"),icon:i,withText:!1}),n.bind("isOn").to(this.panelView,"isVisible"),n.bind("tooltip").to(this.panelView,"isVisible",(t=>!t)),this.listenTo(n,"execute",(()=>{this.panelView.isVisible?this._hidePanel(!0):this._showPanel()})),this.listenTo(n,"change:isEnabled",((t,e,n)=>{!n&&this.panelView.isVisible&&this._hidePanel(!1)})),t.ui.view.body.add(n),n}_updateButton(){const t=this.editor,e=t.model,n=t.editing.view;if(!t.ui.focusTracker.isFocused)return void this._hideButton();if(!t.model.canEditAt(t.model.document.selection))return void this._hideButton();const r=Array.from(e.document.selection.getSelectedBlocks())[0];if(!r||Array.from(this.toolbarView.items).every((t=>!t.isEnabled)))return void this._hideButton();const i=n.domConverter.mapViewToDom(t.editing.mapper.toViewElement(r));this.buttonView.isVisible=!0,this._setupToolbarResize(),this._attachButtonToElement(i),this.panelView.isVisible&&this._showPanel()}_hideButton(){this.buttonView.isVisible=!1}_showPanel(){if(!this.buttonView.isVisible)return;const t=this.panelView.isVisible;this.panelView.show();const e=this._getSelectedEditableElement();this.toolbarView.maxWidth=this._getToolbarMaxWidth(e),this.panelView.pin({target:this.buttonView.element,limiter:e}),t||this.toolbarView.items.get(0).focus()}_getSelectedEditableElement(){const t=this.editor.model.document.selection.getFirstRange().root.rootName;return this.editor.ui.getEditableElement(t)}_hidePanel(t){this.panelView.isVisible=!1,t&&this.editor.editing.view.focus()}_repositionButtonOnScroll(){const{buttonView:t}=this;let e=!1;const n=(t,n)=>{if(e)return;const r=this._getSelectedEditableElement();(n.target===Yn.document||li(r).includes(n.target))&&(e=!0,Yn.window.requestAnimationFrame((()=>{this._updateButton(),e=!1})))};t.on("change:isVisible",((e,r,i)=>{i?t.listenTo(Yn.document,"scroll",n,{useCapture:!0,usePassive:!0}):t.stopListening(Yn.document,"scroll",n)}))}_attachButtonToElement(t){const e=this.buttonView.element,n=this._getSelectedEditableElement(),r=window.getComputedStyle(t),i=new fi(n),o=parseInt(r.paddingTop,10),s=parseInt(r.lineHeight,10)||1.2*parseInt(r.fontSize,10),a=new fi(e),l=new fi(t);let c;c="ltr"===this.editor.locale.uiLanguageDirection?i.left-a.width:i.right;const d=l.top+o+(s-a.height)/2;a.moveTo(c,d);const h=a.toAbsoluteRect();this.buttonView.top=h.top,this.buttonView.left=h.left,this._clipButtonToViewport(this.buttonView,n)}_clipButtonToViewport(t,e){const n=new fi(t.element),r=new fi(e).getVisible(),i=(...e)=>{t.element.style.clipPath=e.length?`polygon(${e.join(",")})`:""},o=e=>{t.isEnabled=!e,t.element.style.pointerEvents=e?"none":""};if(r&&r.bottom=n.height),i("0 0","100% 0",`100% calc(100% - ${Kb(t)})`,`0 calc(100% - ${Kb(t)}`)}else if(r&&r.top>n.top){const t=Math.min(n.height,r.top-n.top);o(t>=n.height),i(`0 ${Kb(t)}`,`100% ${Kb(t)}`,"100% 100%","0 100%")}else o(!1),i()}_setupToolbarResize(){const t=this._getSelectedEditableElement();this._blockToolbarConfig.shouldNotGroupWhenFull||(this._resizeObserver&&this._resizeObserver.element!==t&&(this._resizeObserver.destroy(),this._resizeObserver=null),this._resizeObserver||(this._resizeObserver=new _i(t,(()=>{this.toolbarView.maxWidth=this._getToolbarMaxWidth(t)}))))}_getToolbarMaxWidth(t){const e=new fi(t),n=new fi(this.buttonView.element),r="rtl"===this.editor.locale.uiLanguageDirection?n.left-e.right+n.width:e.left-n.left;return Kb(e.width+r)}}var Yb=n(3344),Jb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Yb.A,Jb);Yb.A.locals;class Qb extends $m{arrowView;constructor(t){super(t);const e=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",(t=>String(t))),"data-cke-tooltip-disabled":e.to("isOn")},on:{mouseenter:e.to("mouseenter")}})}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const t=new pm;return t.content=dg,t.extendTemplate({attributes:{class:"ck-menu-bar__menu__button__arrow"}}),t}}var Xb=n(9108),tk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Xb.A,tk);Xb.A.locals;class ek extends lm{children;constructor(t){super(t);const e=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",e.to("position",(t=>`ck-menu-bar__menu__panel_position_${t}`)),e.if("isVisible","ck-hidden",(t=>!t))],tabindex:"-1"},children:this.children,on:{selectstart:e.to((t=>{"input"!==t.target.tagName.toLocaleLowerCase()&&t.preventDefault()}))}})}focus(t=1){this.children.length&&(1===t?this.children.first.focus():this.children.last.focus())}}var nk=n(4),rk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(nk.A,rk);nk.A.locals;class ik extends lm{buttonView;panelView;focusTracker;keystrokes;constructor(t){super(t);const e=this.bindTemplate;this.buttonView=new Qb(t),this.buttonView.delegate("mouseenter").to(this),this.buttonView.bind("isOn","isEnabled").to(this,"isOpen","isEnabled"),this.panelView=new ek(t),this.panelView.bind("isVisible").to(this,"isOpen"),this.keystrokes=new Do,this.focusTracker=new Bo,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",e.to("class"),e.if("isEnabled","ck-disabled",(t=>!t)),e.if("parentMenuView","ck-menu-bar__menu_top-level",(t=>!t))]},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),Yf.closeOnEscKey(this),this._repositionPanelOnOpen()}_attachBehaviors(){this.parentMenuView?(Yf.openOnButtonClick(this),Yf.openOnArrowRightKey(this),Yf.closeOnArrowLeftKey(this),Yf.openAndFocusOnEnterKeyPress(this),Yf.closeOnParentClose(this)):(this._propagateArrowKeystrokeEvents(),Yf.openAndFocusPanelOnArrowDownKey(this),Yf.toggleOnButtonClick(this))}_propagateArrowKeystrokeEvents(){this.keystrokes.set("arrowright",((t,e)=>{this.fire("arrowright"),e()})),this.keystrokes.set("arrowleft",((t,e)=>{this.fire("arrowleft"),e()}))}_repositionPanelOnOpen(){this.on("change:isOpen",((t,e,n)=>{if(!n)return;const r=ik._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions});this.panelView.position=r?r.name:this._panelPositions[0].name}))}focus(){this.buttonView.focus()}get _panelPositions(){const{southEast:t,southWest:e,northEast:n,northWest:r,westSouth:i,eastSouth:o,westNorth:s,eastNorth:a}=Jf;return"ltr"===this.locale.uiLanguageDirection?this.parentMenuView?[o,a,i,s]:[t,e,n,r]:this.parentMenuView?[i,s,o,a]:[e,t,r,n]}static _getOptimalPosition=Si}class ok extends Qg{constructor(t){super(t),this.role="menu",this.items.on("change",this._setItemsCheckSpace.bind(this))}_setItemsCheckSpace(){const t=Array.from(this.items).some((t=>{const e=sk(t);return e&&e.isToggleable}));this.items.forEach((e=>{const n=sk(e);n&&(n.hasCheckSpace=t)}))}}function sk(t){return t instanceof Gg?t.children.map((t=>function(t){return"object"==typeof t&&"buttonView"in t&&t.buttonView instanceof wm}(t)?t.buttonView:t)).find((t=>t instanceof $m)):null}class ak extends ag{constructor(t){super(t),this.set({withText:!0,withKeystroke:!0,tooltip:!1,role:"menuitem"}),this.extendTemplate({attributes:{class:["ck-menu-bar__menu__item__button"]}})}}var lk=n(497),ck={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(lk.A,ck);lk.A.locals;const dk=["mouseenter","arrowleft","arrowright","change:isOpen"];class hk extends lm{children;menus=[];constructor(t){super(t);const e=t.t,n=this.bindTemplate;this.set({isOpen:!1,isFocusBorderEnabled:!1}),this._setupIsOpenUpdater(),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-menu-bar",n.if("isFocusBorderEnabled","ck-menu-bar_focus-border-enabled")],"aria-label":e("Editor menu bar"),role:"menubar"},children:this.children})}fillFromConfig(t,e,n=[]){const r=Xf({normalizedConfig:t,locale:this.locale,componentFactory:e,extraItems:n}).items.map((t=>this._createMenu({componentFactory:e,menuDefinition:t})));this.children.addMany(r)}render(){super.render(),Zf.toggleMenusAndFocusItemsOnHover(this),Zf.closeMenusWhenTheBarCloses(this),Zf.closeMenuWhenAnotherOnTheSameLevelOpens(this),Zf.focusCycleMenusOnArrows(this),Zf.closeOnClickOutside(this),Zf.enableFocusHighlightOnInteraction(this)}focus(){this.children.first&&this.children.first.focus()}close(){for(const t of this.children)t.isOpen=!1}registerMenu(t,e=null){e?(t.delegate(...dk).to(e),t.parentMenuView=e):t.delegate(...dk).to(this,(t=>"menu:"+t)),t._attachBehaviors(),this.menus.push(t)}_createMenu({componentFactory:t,menuDefinition:e,parentMenuView:n}){const r=this.locale,i=new ik(r);return this.registerMenu(i,n),i.buttonView.set({label:e.label}),i.once("change:isOpen",(()=>{const n=new ok(r);n.ariaLabel=e.label,i.panelView.children.add(n),n.items.addMany(this._createMenuItems({menuDefinition:e,parentMenuView:i,componentFactory:t}))})),i}_createMenuItems({menuDefinition:t,parentMenuView:e,componentFactory:n}){const r=this.locale,i=[];for(const o of t.groups){for(const t of o.items){const o=new Kf(r,e);if(s(t))o.children.add(this._createMenu({componentFactory:n,menuDefinition:t,parentMenuView:e}));else{const r=this._createMenuItemContentFromFactory({componentName:t,componentFactory:n,parentMenuView:e});if(!r)continue;o.children.add(r)}i.push(o)}o!==t.groups[t.groups.length-1]&&i.push(new Kg(r))}return i}_createMenuItemContentFromFactory({componentName:t,parentMenuView:e,componentFactory:n}){const r=n.create(t);return r instanceof ik||r instanceof Ym||r instanceof ak?(this._registerMenuTree(r,e),r.on("execute",(()=>{this.close()})),r):(wr("menu-bar-component-unsupported",{componentName:t,componentView:r}),null)}_registerMenuTree(t,e){if(!(t instanceof ik))return void t.delegate("mouseenter").to(e);this.registerMenu(t,e);const n=t.panelView.children.filter((t=>t instanceof ok))[0];if(!n)return void t.delegate("mouseenter").to(e);const r=n.items.filter((t=>t instanceof Gg));for(const e of r)this._registerMenuTree(e.children.get(0),t)}_setupIsOpenUpdater(){let t;this.on("menu:change:isOpen",((e,n,r)=>{clearTimeout(t),r?this.isOpen=!0:t=setTimeout((()=>{this.isOpen=Array.from(this.children).some((t=>t.isOpen))}),0)}))}}class uk extends db{view;constructor(t,e){super(t),this.view=e}get element(){return this.view.editable.element}init(){const t=this.editor,e=this.view,n=t.editing.view,r=e.editable,i=n.document.getRoot();r.name=i.rootName,e.render();const o=r.element;this.setEditableElement(r.name,o),r.bind("isFocused").to(this.focusTracker),n.attachDomRoot(o),this._initPlaceholder(),this._initMenuBar(this.view.menuBarView),this.fire("ready")}destroy(){super.destroy();const t=this.view,e=this.editor.editing.view;e.getDomRoot(t.editable.name)&&e.detachDomRoot(t.editable.name),t.destroy()}_initPlaceholder(){const t=this.editor,e=t.editing.view,n=e.document.getRoot(),r=t.config.get("placeholder");if(r){const t="string"==typeof r?r:r[n.rootName];t&&(n.placeholder=t)}Jo({view:e,element:n,isDirectHost:!1,keepOnFocus:!0})}}class mk extends gb{editable;menuBarView;constructor(t,e,n,r){super(t),this.editable=new fb(t,e,n,{label:r}),this.menuBarView=new hk(t),this.menuBarView.extendTemplate({attributes:{class:["ck-reset_all","ck-rounded-corners"],dir:t.uiLanguageDirection}})}render(){super.render(),this.registerChild(this.editable),this.registerChild(this.menuBarView)}}class gk extends(Fu(Vu)){ui;constructor(t,e={}){if(!pk(t)&&void 0!==e.initialData)throw new kr("editor-create-initial-data",null);super(e),void 0===this.config.get("initialData")&&this.config.set("initialData",function(t){return pk(t)?ci(t):t}(t)),pk(t)&&(this.sourceElement=t,Ru(this,t));const n=this.config.get("plugins");n.push(qb),this.config.set("plugins",n),this.config.define("balloonToolbar",this.config.get("toolbar")),this.model.document.createRoot();const r=new mk(this.locale,this.editing.view,this.sourceElement,this.config.get("label"));this.ui=new uk(this,r),function(t){if(!st(t.updateSourceElement))throw new kr("attachtoform-missing-elementapi-interface",t);const e=t.sourceElement;if(function(t){return!!t&&"textarea"===t.tagName.toLowerCase()}(e)&&e.form){let n;const r=e.form,i=()=>t.updateSourceElement();st(r.submit)&&(n=r.submit,r.submit=()=>{i(),n.apply(r)}),r.addEventListener("submit",i),t.on("destroy",(()=>{r.removeEventListener("submit",i),n&&(r.submit=n)}))}}(this)}destroy(){const t=this.getData();return this.ui.destroy(),super.destroy().then((()=>{this.sourceElement&&this.updateSourceElement(t)}))}static create(t,e={}){return new Promise((n=>{if(pk(t)&&"TEXTAREA"===t.tagName)throw new kr("editor-wrong-element",null);const r=new this(t,e);n(r.initPlugins().then((()=>r.ui.init())).then((()=>r.data.init(r.config.get("initialData")))).then((()=>r.fire("ready"))).then((()=>r)))}))}}function pk(t){return U(t)}var fk=n(9826),bk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(fk.A,bk);fk.A.locals;var kk=n(2722),wk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(kk.A,wk);kk.A.locals;var Ak=n(9627),_k={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Ak.A,_k);Ak.A.locals;class Ck extends lm{children;_findInputView;_replaceInputView;_findButtonView;_findPrevButtonView;_findNextButtonView;_advancedOptionsCollapsibleView;_matchCaseSwitchView;_wholeWordsOnlySwitchView;_replaceButtonView;_replaceAllButtonView;_inputsDivView;_actionButtonsDivView;_focusTracker;_keystrokes;_focusables;focusCycler;constructor(t){super(t);const e=t.t;this.children=this.createCollection(),this.set("matchCount",0),this.set("highlightOffset",0),this.set("isDirty",!1),this.set("_areCommandsEnabled",{}),this.set("_resultsCounterText",""),this.set("_matchCase",!1),this.set("_wholeWordsOnly",!1),this.bind("_searchResultsFound").to(this,"matchCount",this,"isDirty",((t,e)=>t>0&&!e)),this._findInputView=this._createInputField(e("Find in text…")),this._findPrevButtonView=this._createButton({label:e("Previous result"),class:"ck-button-prev",icon:zu.previousArrow,keystroke:"Shift+F3",tooltip:!0}),this._findNextButtonView=this._createButton({label:e("Next result"),class:"ck-button-next",icon:zu.previousArrow,keystroke:"F3",tooltip:!0}),this._replaceInputView=this._createInputField(e("Replace with…"),"ck-labeled-field-replace"),this._inputsDivView=this._createInputsDiv(),this._matchCaseSwitchView=this._createMatchCaseSwitch(),this._wholeWordsOnlySwitchView=this._createWholeWordsOnlySwitch(),this._advancedOptionsCollapsibleView=this._createAdvancedOptionsCollapsible(),this._replaceAllButtonView=this._createButton({label:e("Replace all"),class:"ck-button-replaceall",withText:!0}),this._replaceButtonView=this._createButton({label:e("Replace"),class:"ck-button-replace",withText:!0}),this._findButtonView=this._createButton({label:e("Find"),class:"ck-button-find ck-button-action",withText:!0}),this._actionButtonsDivView=this._createActionButtonsDiv(),this._focusTracker=new Bo,this._keystrokes=new Do,this._focusables=new Mu,this.focusCycler=new ym({focusables:this._focusables,focusTracker:this._focusTracker,keystrokeHandler:this._keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.addMany([this._inputsDivView,this._advancedOptionsCollapsibleView,this._actionButtonsDivView]),this.setTemplate({tag:"form",attributes:{class:["ck","ck-find-and-replace-form"],tabindex:"-1"},children:this.children})}render(){super.render(),hm({view:this}),this._initFocusCycling(),this._initKeystrokeHandling()}destroy(){super.destroy(),this._focusTracker.destroy(),this._keystrokes.destroy()}focus(t){-1===t?this.focusCycler.focusLast():this.focusCycler.focusFirst()}reset(){this._findInputView.errorText=null,this.isDirty=!0}get _textToFind(){return this._findInputView.fieldView.element.value}get _textToReplace(){return this._replaceInputView.fieldView.element.value}_createInputsDiv(){const t=this.locale,e=t.t,n=new lm(t);return this._findInputView.fieldView.on("input",(()=>{this.isDirty=!0})),this._findPrevButtonView.delegate("execute").to(this,"findPrevious"),this._findNextButtonView.delegate("execute").to(this,"findNext"),this._findPrevButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",(({findPrevious:t})=>t)),this._findNextButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",(({findNext:t})=>t)),this._injectFindResultsCounter(),this._replaceInputView.bind("isEnabled").to(this,"_areCommandsEnabled",this,"_searchResultsFound",(({replace:t},e)=>t&&e)),this._replaceInputView.bind("infoText").to(this._replaceInputView,"isEnabled",this._replaceInputView,"isFocused",((t,n)=>t||!n?"":e("Tip: Find some text first in order to replace it."))),n.setTemplate({tag:"div",attributes:{class:["ck","ck-find-and-replace-form__inputs"]},children:[this._findInputView,this._findPrevButtonView,this._findNextButtonView,this._replaceInputView]}),n}_onFindButtonExecute(){if(this._textToFind)this.isDirty=!1,this.fire("findNext",{searchText:this._textToFind,matchCase:this._matchCase,wholeWords:this._wholeWordsOnly});else{const t=this.t;this._findInputView.errorText=t("Text to find must not be empty.")}}_injectFindResultsCounter(){const t=this.locale,e=t.t,n=this.bindTemplate,r=new lm(this.locale);this.bind("_resultsCounterText").to(this,"highlightOffset",this,"matchCount",((t,n)=>e("%0 of %1",[t,n]))),r.setTemplate({tag:"span",attributes:{class:["ck","ck-results-counter",n.if("isDirty","ck-hidden")]},children:[{text:n.to("_resultsCounterText")}]});const i=()=>{const e=this._findInputView.fieldView.element;if(!e||!Di(e))return;const n=new fi(r.element).width,i="ltr"===t.uiLanguageDirection?"paddingRight":"paddingLeft";e.style[i]=n?`calc( 2 * var(--ck-spacing-standard) + ${n}px )`:""};this.on("change:_resultsCounterText",i,{priority:"low"}),this.on("change:isDirty",i,{priority:"low"}),this._findInputView.template.children[0].children.push(r)}_createAdvancedOptionsCollapsible(){const t=this.locale.t,e=new mg(this.locale,[this._matchCaseSwitchView,this._wholeWordsOnlySwitchView]);return e.set({label:t("Advanced options"),isCollapsed:!0}),e}_createActionButtonsDiv(){const t=new lm(this.locale);return this._replaceButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",this,"_searchResultsFound",(({replace:t},e)=>t&&e)),this._replaceAllButtonView.bind("isEnabled").to(this,"_areCommandsEnabled",this,"_searchResultsFound",(({replaceAll:t},e)=>t&&e)),this._replaceButtonView.on("execute",(()=>{this.fire("replace",{searchText:this._textToFind,replaceText:this._textToReplace})})),this._replaceAllButtonView.on("execute",(()=>{this.fire("replaceAll",{searchText:this._textToFind,replaceText:this._textToReplace}),this.focus()})),this._findButtonView.on("execute",this._onFindButtonExecute.bind(this)),t.setTemplate({tag:"div",attributes:{class:["ck","ck-find-and-replace-form__actions"]},children:[this._replaceAllButtonView,this._replaceButtonView,this._findButtonView]}),t}_createMatchCaseSwitch(){const t=this.locale.t,e=new og(this.locale);return e.set({label:t("Match case"),withText:!0}),e.bind("isOn").to(this,"_matchCase"),e.on("execute",(()=>{this._matchCase=!this._matchCase,this.isDirty=!0})),e}_createWholeWordsOnlySwitch(){const t=this.locale.t,e=new og(this.locale);return e.set({label:t("Whole words only"),withText:!0}),e.bind("isOn").to(this,"_wholeWordsOnly"),e.on("execute",(()=>{this._wholeWordsOnly=!this._wholeWordsOnly,this.isDirty=!0})),e}_initFocusCycling(){[this._findInputView,this._findPrevButtonView,this._findNextButtonView,this._replaceInputView,this._advancedOptionsCollapsibleView.buttonView,this._matchCaseSwitchView,this._wholeWordsOnlySwitchView,this._replaceAllButtonView,this._replaceButtonView,this._findButtonView].forEach((t=>{this._focusables.add(t),this._focusTracker.add(t.element)}))}_initKeystrokeHandling(){const t=t=>t.stopPropagation(),e=t=>{t.stopPropagation(),t.preventDefault()};this._keystrokes.listenTo(this.element),this._keystrokes.set("f3",(t=>{e(t),this._findNextButtonView.fire("execute")})),this._keystrokes.set("shift+f3",(t=>{e(t),this._findPrevButtonView.fire("execute")})),this._keystrokes.set("enter",(t=>{const n=t.target;n===this._findInputView.fieldView.element?(this._areCommandsEnabled.findNext?this._findNextButtonView.fire("execute"):this._findButtonView.fire("execute"),e(t)):n!==this._replaceInputView.fieldView.element||this.isDirty||(this._replaceButtonView.fire("execute"),e(t))})),this._keystrokes.set("shift+enter",(t=>{t.target===this._findInputView.fieldView.element&&(this._areCommandsEnabled.findPrevious?this._findPrevButtonView.fire("execute"):this._findButtonView.fire("execute"),e(t))})),this._keystrokes.set("arrowright",t),this._keystrokes.set("arrowleft",t),this._keystrokes.set("arrowup",t),this._keystrokes.set("arrowdown",t)}_createButton(t){const e=new wm(this.locale);return e.set(t),e}_createInputField(t,e){const n=new Sg(this.locale,Rp);return n.label=t,n.class=e,n}}const vk='';class yk extends Lo{static get requires(){return[qm]}static get pluginName(){return"FindAndReplaceUI"}formView;constructor(t){super(t),t.config.define("findAndReplace.uiType","dialog"),this.formView=null}init(){const t=this.editor,e="dropdown"===t.config.get("findAndReplace.uiType"),n=t.commands.get("find"),r=this.editor.t;t.ui.componentFactory.add("findAndReplace",(()=>{let r;return e?(r=this._createDropdown(),r.bind("isEnabled").to(n)):r=this._createDialogButtonForToolbar(),t.keystrokes.set("Ctrl+F",((e,i)=>{if(n.isEnabled){if(r instanceof Hg){const t=r.buttonView;t.isOn||t.fire("execute")}else r.isOn?t.plugins.get("Dialog").view.focus():r.fire("execute");i()}})),r})),e||t.ui.componentFactory.add("menuBar:findAndReplace",(()=>this._createDialogButtonForMenuBar())),t.accessibility.addKeystrokeInfos({keystrokes:[{label:r("Find in the document"),keystroke:"CTRL+F"}]})}_createDropdown(){const t=this.editor,e=t.locale.t,n=Dp(t.locale);return n.once("change:isOpen",(()=>{this.formView=this._createFormView(),this.formView.children.add(new vm(t.locale,{label:e("Find and replace")}),0),n.panelView.children.add(this.formView)})),n.on("change:isOpen",((t,e,n)=>{n?this._setupFormView():this.fire("searchReseted")}),{priority:"low"}),n.buttonView.set({icon:vk,label:e("Find and replace"),keystroke:"CTRL+F",tooltip:!0}),n}_createDialogButtonForToolbar(){const t=this.editor,e=this._createButton(wm),n=t.plugins.get("Dialog");return e.set({tooltip:!0}),e.bind("isOn").to(n,"id",(t=>"findAndReplace"===t)),e.on("execute",(()=>{e.isOn?n.hide():this._showDialog()})),e}_createDialogButtonForMenuBar(){const t=this._createButton(Ym),e=this.editor.plugins.get("Dialog"),n=this.editor.plugins.get("Dialog");return t.set({role:"menuitemcheckbox",isToggleable:!0}),t.bind("isOn").to(n,"id",(t=>"findAndReplace"===t)),t.on("execute",(()=>{"findAndReplace"!==e.id?this._showDialog():e.hide()})),t}_createButton(t){const e=this.editor,n=e.commands.get("find"),r=new t(e.locale),i=e.locale.t;return r.bind("isEnabled").to(n),r.set({icon:vk,label:i("Find and replace"),keystroke:"CTRL+F"}),r}_showDialog(){const t=this.editor,e=t.plugins.get("Dialog"),n=t.locale.t;this.formView||(this.formView=this._createFormView()),e.show({id:"findAndReplace",title:n("Find and replace"),content:this.formView,position:Lm,onShow:()=>{this._setupFormView()},onHide:()=>{this.fire("searchReseted")}})}_createFormView(){const t=this.editor,e=new(dm(Ck))(t.locale),n=t.commands,r=this.editor.plugins.get("FindAndReplaceEditing").state;e.bind("highlightOffset").to(r,"highlightedOffset"),e.listenTo(r.results,"change",(()=>{e.matchCount=r.results.length}));const i=n.get("findNext"),o=n.get("findPrevious"),s=n.get("replace"),a=n.get("replaceAll");return e.bind("_areCommandsEnabled").to(i,"isEnabled",o,"isEnabled",s,"isEnabled",a,"isEnabled",((t,e,n,r)=>({findNext:t,findPrevious:e,replace:n,replaceAll:r}))),e.delegate("findNext","findPrevious","replace","replaceAll").to(this),e.on("change:isDirty",((t,e,n)=>{n&&this.fire("searchReseted")})),e}_setupFormView(){this.formView.disableCssTransitions(),this.formView.reset(),this.formView._findInputView.fieldView.select(),this.formView.enableCssTransitions()}}class xk extends Mo{_state;constructor(t,e){super(t),this.isEnabled=!0,this.affectsData=!1,this._state=e}execute(t,{matchCase:e,wholeWords:n}={}){const{editor:r}=this,{model:i}=r,o=r.plugins.get("FindAndReplaceUtils");let s,a="";s="string"==typeof t?(...r)=>({results:o.findByTextCallback(t,{matchCase:e,wholeWords:n})(...r),searchText:t}):t;const l=s;s=(...t)=>{const e=l(...t);return e&&"searchText"in e&&(a=e.searchText),e};const c=i.document.getRootNames().reduce(((t,e)=>o.updateFindResultFromRange(i.createRangeIn(i.document.getRoot(e)),i,s,t)),null);return this._state.clear(i),this._state.results.addMany(c),this._state.highlightedResult=c.get(0),this._state.searchText=a,s&&(this._state.lastSearchCallback=s),s&&(this._state.lastSearchCallback=s),this._state.matchCase=!!e,this._state.matchWholeWords=!!n,{results:c,findCallback:s}}}class Ek extends Mo{_state;constructor(t,e){super(t),this.isEnabled=!0,this._state=e,this._isEnabledBasedOnSelection=!1}_replace(t,e){const{model:n}=this.editor,r=e.marker.getRange();n.canEditAt(r)&&n.change((i=>{if("$graveyard"===r.root.rootName)return void this._state.results.remove(e);let o={};for(const t of r.getItems())if(t.is("$text")||t.is("$textProxy")){o=t.getAttributes();break}n.insertContent(i.createText(t,o),r),this._state.results.has(e)&&this._state.results.remove(e)}))}}class Bk extends Ek{execute(t,e){this._replace(t,e)}}class Dk extends Ek{execute(t,e){const{editor:n}=this,{model:r}=n,i=n.plugins.get("FindAndReplaceUtils"),o=e instanceof xo?e:r.document.getRootNames().reduce(((t,n)=>i.updateFindResultFromRange(r.createRangeIn(r.document.getRoot(n)),r,i.findByTextCallback(e,this._state),t)),null);o.length&&r.change((()=>{[...o].forEach((e=>{this._replace(t,e)}))}))}}class Sk extends Mo{_state;constructor(t,e){super(t),this.affectsData=!1,this._state=e,this.isEnabled=!1,this.listenTo(this._state.results,"change",(()=>{this.isEnabled=this._state.results.length>1}))}refresh(){this.isEnabled=this._state.results.length>1}execute(){const t=this._state.results,e=t.getIndex(this._state.highlightedResult),n=e+1>=t.length?0:e+1;this._state.highlightedResult=this._state.results.get(n)}}class Tk extends Sk{execute(){const t=this._state.results.getIndex(this._state.highlightedResult),e=t-1<0?this._state.results.length-1:t-1;this._state.highlightedResult=this._state.results.get(e)}}class Ik extends(jr()){constructor(t){super(),this.set("results",new xo),this.set("highlightedResult",null),this.set("highlightedOffset",0),this.set("searchText",""),this.set("replaceText",""),this.set("lastSearchCallback",null),this.set("matchCase",!1),this.set("matchWholeWords",!1),this.results.on("change",((e,{removed:n,index:r})=>{if(Array.from(n).length){let e=!1;if(t.change((r=>{for(const i of n)this.highlightedResult===i&&(e=!0),t.markers.has(i.marker.name)&&r.removeMarker(i.marker)})),e){const t=r>=this.results.length?0:r;this.highlightedResult=this.results.get(t)}}})),this.on("change:highlightedResult",(()=>{this.refreshHighlightOffset()}))}clear(t){this.searchText="",t.change((e=>{if(this.highlightedResult){const n=this.highlightedResult.marker.name.split(":")[1],r=t.markers.get(`findResultHighlighted:${n}`);r&&e.removeMarker(r)}[...this.results].forEach((({marker:t})=>{e.removeMarker(t)}))})),this.results.clear()}refreshHighlightOffset(){const{highlightedResult:t,results:e}=this,n={before:-1,same:0,after:1,different:1};this.highlightedOffset=t?Array.from(e).sort(((t,e)=>n[t.marker.getStart().compareWith(e.marker.getStart())])).indexOf(t)+1:0}}class Pk extends Lo{static get pluginName(){return"FindAndReplaceUtils"}updateFindResultFromRange(t,e,n,r){const i=r||new xo;return e.change((r=>{[...t].forEach((({type:t,item:o})=>{if("elementStart"===t&&e.schema.checkChild(o,"$text")){let t=n({item:o,text:this.rangeToText(e.createRangeIn(o))});if(!t)return;"results"in t&&(t=t.results),t.forEach((t=>{const e=`findResult:${pr()}`,n=r.addMarker(e,{usingOperation:!1,affectsData:!1,range:r.createRange(r.createPositionAt(o,t.start),r.createPositionAt(o,t.end))}),s=function(t,e){const n=t.find((({marker:t})=>e.getStart().isBefore(t.getStart())));return n?t.getIndex(n):t.length}(i,n);(t=>i.find((e=>{const{marker:n}=e,r=n.getRange(),i=t.getRange();return r.isEqual(i)})))(n)||i.add({id:e,label:t.label,marker:n},s)}))}}))})),i}rangeToText(t){return Array.from(t.getItems()).reduce(((t,e)=>e.is("$text")||e.is("$textProxy")?t+e.data:`${t}\n`),"")}findByTextCallback(t,e){let n="gu";e.matchCase||(n+="i");let r=`(${Ib(t)})`;if(e.wholeWords){const e="[^a-zA-ZÀ-ɏḀ-ỿ]";new RegExp("^"+e).test(t)||(r=`(^|${e}|_)${r}`),new RegExp(e+"$").test(t)||(r=`${r}(?=_|${e}|$)`)}const i=new RegExp(r,n);return function({text:t}){return[...t.matchAll(i)].map(Vk)}}}function Vk(t){const e=t.length-1;let n=t.index;return 3===t.length&&(n+=t[1].length),{label:t[e],start:n,end:n+t[e].length}}var Fk=n(4341),Rk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Fk.A,Rk);Fk.A.locals;class Lk extends Lo{static get requires(){return[Pk]}static get pluginName(){return"FindAndReplaceEditing"}state;init(){this.state=new Ik(this.editor.model),this.set("_isSearchActive",!1),this._defineConverters(),this._defineCommands(),this.listenTo(this.state,"change:highlightedResult",((t,e,n,r)=>{const{model:i}=this.editor;i.change((t=>{if(r){const e=r.marker.name.split(":")[1],n=i.markers.get(`findResultHighlighted:${e}`);n&&t.removeMarker(n)}if(n){const e=n.marker.name.split(":")[1];t.addMarker(`findResultHighlighted:${e}`,{usingOperation:!1,affectsData:!1,range:n.marker.getRange()})}}))}));const t=F(((t,e,n)=>{if(n){const t=this.editor.editing.view.domConverter,e=this.editor.editing.mapper.toViewRange(n.marker.getRange());Vi({target:t.viewRangeToDom(e),viewportOffset:40})}}).bind(this),32);this.listenTo(this.state,"change:highlightedResult",t,{priority:"low"}),this.listenTo(this.editor,"destroy",t.cancel),this.on("change:_isSearchActive",((t,e,n)=>{n?this.listenTo(this.editor.model.document,"change:data",this._onDocumentChange):this.stopListening(this.editor.model.document,"change:data",this._onDocumentChange)}))}find(t,e){return this._isSearchActive=!0,this.editor.execute("find",t,e),this.state.results}stop(){this.state.clear(this.editor.model),this._isSearchActive=!1}_defineCommands(){this.editor.commands.add("find",new xk(this.editor,this.state)),this.editor.commands.add("findNext",new Sk(this.editor,this.state)),this.editor.commands.add("findPrevious",new Tk(this.editor,this.state)),this.editor.commands.add("replace",new Bk(this.editor,this.state)),this.editor.commands.add("replaceAll",new Dk(this.editor,this.state))}_defineConverters(){const{editor:t}=this;t.conversion.for("editingDowncast").markerToHighlight({model:"findResult",view:({markerName:t})=>{const[,e]=t.split(":");return{name:"span",classes:["ck-find-result"],attributes:{"data-find-result":e}}}}),t.conversion.for("editingDowncast").markerToHighlight({model:"findResultHighlighted",view:({markerName:t})=>{const[,e]=t.split(":");return{name:"span",classes:["ck-find-result_selected"],attributes:{"data-find-result":e}}}})}_onDocumentChange=()=>{const t=new Set,e=new Set,n=this.editor.model,{results:r}=this.state,i=n.document.differ.getChanges(),o=n.document.differ.getChangedMarkers();i.forEach((r=>{r.position&&("$text"===r.name||r.position.nodeAfter&&n.schema.isInline(r.position.nodeAfter)?(t.add(r.position.parent),[...n.markers.getMarkersAtPosition(r.position)].forEach((t=>{e.add(t.name)}))):"insert"===r.type&&r.position.nodeAfter&&t.add(r.position.nodeAfter))})),o.forEach((({name:t,data:{newRange:n}})=>{n&&"$graveyard"===n.start.root.rootName&&e.add(t)})),t.forEach((t=>{[...n.markers.getMarkersIntersectingRange(n.createRangeIn(t))].forEach((t=>e.add(t.name)))})),e.forEach((t=>{r.has(t)&&(r.get(t)===this.state.highlightedResult&&(this.state.highlightedResult=null),r.remove(t))}));const s=[],a=this.editor.plugins.get("FindAndReplaceUtils");t.forEach((t=>{const e=a.updateFindResultFromRange(n.createRangeOn(t),n,this.state.lastSearchCallback,r);s.push(...e)})),o.forEach((t=>{if(t.data.newRange){const e=a.updateFindResultFromRange(t.data.newRange,n,this.state.lastSearchCallback,r);s.push(...e)}})),!this.state.highlightedResult&&s.length?this.state.highlightedResult=s[0]:this.state.refreshHighlightOffset()}}class zk extends(jr()){total;_reader;_data;constructor(){super();const t=new window.FileReader;this._reader=t,this._data=void 0,this.set("loaded",0),t.onprogress=t=>{this.loaded=t.loaded}}get error(){return this._reader.error}get data(){return this._data}read(t){const e=this._reader;return t?(this.total=t.size,new Promise(((n,r)=>{e.onload=()=>{const t=e.result;this._data=t,n(t)},e.onerror=()=>{r("error")},e.onabort=()=>{r("aborted")},this._reader.readAsDataURL(t)}))):new Promise(((t,e)=>{e("error")}))}abort(){this._reader.abort()}}class Mk extends Lo{loaders=new xo;_loadersMap=new Map;_pendingAction=null;static get pluginName(){return"FileRepository"}static get requires(){return[Lu]}init(){this.loaders.on("change",(()=>this._updatePendingAction())),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((t,e)=>e?t/e*100:0))}getLoader(t){return this._loadersMap.get(t)||null}createLoader(t){if(!this.createUploadAdapter)return wr("filerepository-no-upload-adapter"),null;const e=new Nk(Promise.resolve(t),this.createUploadAdapter);return this.loaders.add(e),this._loadersMap.set(t,e),t instanceof Promise&&e.file.then((t=>{this._loadersMap.set(t,e)})).catch((()=>{})),e.on("change:uploaded",(()=>{let t=0;for(const e of this.loaders)t+=e.uploaded;this.uploaded=t})),e.on("change:uploadTotal",(()=>{let t=0;for(const e of this.loaders)e.uploadTotal&&(t+=e.uploadTotal);this.uploadTotal=t})),e}destroyLoader(t){const e=t instanceof Nk?t:this.getLoader(t);e._destroy(),this.loaders.remove(e),this._loadersMap.forEach(((t,n)=>{t===e&&this._loadersMap.delete(n)}))}_updatePendingAction(){const t=this.editor.plugins.get(Lu);if(this.loaders.length){if(!this._pendingAction){const e=this.editor.t,n=t=>`${e("Upload in progress")} ${parseInt(t)}%.`;this._pendingAction=t.add(n(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",n)}}else t.remove(this._pendingAction),this._pendingAction=null}}class Nk extends(jr()){id;_filePromiseWrapper;_adapter;_reader;constructor(t,e){super(),this.id=pr(),this._filePromiseWrapper=this._createFilePromiseWrapper(t),this._adapter=e(this),this._reader=new zk,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((t,e)=>e?t/e*100:0)),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then((t=>this._filePromiseWrapper?t:null)):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new kr("filerepository-read-wrong-status",this);return this.status="reading",this.file.then((t=>this._reader.read(t))).then((t=>{if("reading"!==this.status)throw this.status;return this.status="idle",t})).catch((t=>{if("aborted"===t)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:t}))}upload(){if("idle"!=this.status)throw new kr("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then((()=>this._adapter.upload())).then((t=>(this.uploadResponse=t,this.status="idle",t))).catch((t=>{if("aborted"===this.status)throw"aborted";throw this.status="error",t}))}abort(){const t=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==t?this._reader.abort():"uploading"==t&&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(t){const e={};return e.promise=new Promise(((n,r)=>{e.rejecter=r,e.isFulfilled=!1,t.then((t=>{e.isFulfilled=!0,n(t)})).catch((t=>{e.isFulfilled=!0,r(t)}))})),e}}const Ok="ckCsrfToken",Hk="abcdefghijklmnopqrstuvwxyz0123456789";function jk(){let t=function(t){t=t.toLowerCase();const e=document.cookie.split(";");for(const n of e){const e=n.split("=");if(decodeURIComponent(e[0].trim().toLowerCase())===t)return decodeURIComponent(e[1])}return null}(Ok);var e,n;return t&&40==t.length||(t=function(t){let e="";const n=new Uint8Array(t);window.crypto.getRandomValues(n);for(let t=0;t.5?r.toUpperCase():r}return e}(40),e=Ok,n=t,document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(n)+";path=/"),t}class qk{loader;url;t;xhr;constructor(t,e,n){this.loader=t,this.url=e,this.t=n}upload(){return this.loader.file.then((t=>new Promise(((e,n)=>{this._initRequest(),this._initListeners(e,n,t),this._sendRequest(t)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const t=this.xhr=new XMLHttpRequest;t.open("POST",this.url,!0),t.responseType="json"}_initListeners(t,e,n){const r=this.xhr,i=this.loader,o=(0,this.t)("Cannot upload file:")+` ${n.name}.`;r.addEventListener("error",(()=>e(o))),r.addEventListener("abort",(()=>e())),r.addEventListener("load",(()=>{const n=r.response;if(!n||!n.uploaded)return e(n&&n.error&&n.error.message?n.error.message:o);t({default:n.url})})),r.upload&&r.upload.addEventListener("progress",(t=>{t.lengthComputable&&(i.uploadTotal=t.total,i.uploaded=t.loaded)}))}_sendRequest(t){const e=new FormData;e.append("upload",t),e.append("ckCsrfToken",jk()),this.xhr.send(e)}}class Uk{model;limit;_isLocked;_size;_batch=null;_changeCallback;_selectionChangeCallback;constructor(t,e=20){this.model=t,this._size=0,this.limit=e,this._isLocked=!1,this._changeCallback=(t,e)=>{e.isLocal&&e.isUndoable&&e!==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(t){this._size+=t,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(t=!1){this.isLocked&&!t||(this._batch=null,this._size=0)}}class Wk extends Mo{_buffer;constructor(t,e){super(t),this._buffer=new Uk(t.model,e),this._isEnabledBasedOnSelection=!1}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(t={}){const e=this.editor.model,n=e.document,r=t.text||"",i=r.length;let o=n.selection;if(t.selection?o=t.selection:t.range&&(o=e.createSelection(t.range)),!e.canEditAt(o))return;const s=t.resultRange;e.enqueueChange(this._buffer.batch,(t=>{this._buffer.lock();const a=Array.from(n.selection.getAttributes());e.deleteContent(o),r&&e.insertContent(t.createText(r,a),o),s?t.setSelection(s):o.is("documentSelection")||t.setSelection(o),this._buffer.unlock(),this._buffer.input(i)}))}}const $k=["insertText","insertReplacementText"],Gk=[...$k,"insertCompositionText"];class Kk extends Xa{focusObserver;constructor(t){super(t),this.focusObserver=t.getObserver(Dl);const e=Xn.isAndroid?Gk:$k,n=t.document;n.on("beforeinput",((r,i)=>{if(!this.isEnabled)return;const{data:o,targetRanges:s,inputType:a,domEvent:l}=i;if(!e.includes(a))return;this.focusObserver.flush();const c=new mr(n,"insertText");n.fire(c,new el(t,l,{text:o,selection:t.createSelection(s)})),c.stop.called&&r.stop()})),Xn.isAndroid||n.on("compositionend",((e,{data:r,domEvent:i})=>{this.isEnabled&&r&&n.fire("insertText",new el(t,i,{text:r}))}),{priority:"lowest"})}observe(){}stopObserving(){}}class Zk extends Lo{_compositionQueue;static get pluginName(){return"Input"}init(){const t=this.editor,e=t.model,n=t.editing.view,r=t.editing.mapper,i=e.document.selection;this._compositionQueue=new Yk(t),n.addObserver(Kk);const o=new Wk(t,t.config.get("typing.undoStep")||20);t.commands.add("insertText",o),t.commands.add("input",o),this.listenTo(n.document,"insertText",((o,s)=>{n.document.isComposing||s.preventDefault(),Xn.isAndroid&&n.document.isComposing&&this._compositionQueue.flush("next beforeinput");const{text:a,selection:l}=s;let c;c=l?Array.from(l.getRanges()).map((t=>r.toModelRange(t))):Array.from(i.getRanges());let d=a;if(Xn.isAndroid){const t=Array.from(c[0].getItems()).reduce(((t,e)=>t+(e.is("$textProxy")?e.data:"")),"");if(t&&(t.length<=d.length?d.startsWith(t)&&(d=d.substring(t.length),c[0].start=c[0].start.getShiftedBy(t.length)):t.startsWith(d)&&(c[0].start=c[0].start.getShiftedBy(d.length),d="")),0==d.length&&c[0].isCollapsed)return}const h={text:d,selection:e.createSelection(c)};Xn.isAndroid&&n.document.isComposing?this._compositionQueue.push(h):(t.execute("insertText",h),n.scrollToTheSelection())})),Xn.isAndroid?this.listenTo(n.document,"keydown",((t,r)=>{!i.isCollapsed&&229==r.keyCode&&n.document.isComposing&&Jk(e,o)})):this.listenTo(n.document,"compositionstart",(()=>{i.isCollapsed||Jk(e,o)})),Xn.isAndroid?(this.listenTo(n.document,"mutations",((t,{mutations:e})=>{if(n.document.isComposing)for(const{node:t}of e){const e=Qk(t,r),n=r.toModelElement(e);if(this._compositionQueue.isComposedElement(n))return void this._compositionQueue.flush("mutations")}})),this.listenTo(n.document,"compositionend",(()=>{this._compositionQueue.flush("composition end")})),this.listenTo(n.document,"compositionend",(()=>{const t=[];for(const e of this._compositionQueue.flushComposedElements()){const n=r.toViewElement(e);n&&t.push({type:"children",node:n})}t.length&&n.document.fire("mutations",{mutations:t})}),{priority:"lowest"})):this.listenTo(n.document,"compositionend",(()=>{n.document.fire("mutations",{mutations:[]})}),{priority:"lowest"})}destroy(){super.destroy(),this._compositionQueue.destroy()}}class Yk{editor;flushDebounced=F((()=>this.flush("timeout")),50);_queue=[];_compositionElements=new Set;constructor(t){this.editor=t}destroy(){for(this.flushDebounced.cancel(),this._compositionElements.clear();this._queue.length;)this.shift()}get length(){return this._queue.length}push(t){const e={text:t.text};if(t.selection){e.selectionRanges=[];for(const n of t.selection.getRanges())e.selectionRanges.push(uc.fromRange(n)),this._compositionElements.add(n.start.parent)}this._queue.push(e),this.flushDebounced()}shift(){const t=this._queue.shift(),e={text:t.text};if(t.selectionRanges){const n=t.selectionRanges.map((t=>function(t){const e=t.toRange();if(t.detach(),"$graveyard"==e.root.rootName)return null;return e}(t))).filter((t=>!!t));n.length&&(e.selection=this.editor.model.createSelection(n))}return e}flush(t){const e=this.editor,n=e.model,r=e.editing.view;if(this.flushDebounced.cancel(),!this._queue.length)return;const i=e.commands.get("insertText").buffer;n.enqueueChange(i.batch,(()=>{for(i.lock();this._queue.length;){const t=this.shift();e.execute("insertText",t)}i.unlock()})),r.scrollToTheSelection()}isComposedElement(t){return this._compositionElements.has(t)}flushComposedElements(){const t=Array.from(this._compositionElements);return this._compositionElements.clear(),t}}function Jk(t,e){if(!e.isEnabled)return;const n=e.buffer;n.lock(),t.enqueueChange(n.batch,(()=>{t.deleteContent(t.document.selection)})),n.unlock()}function Qk(t,e){let n=t.is("$text")?t.parent:t;for(;!e.toModelElement(n);)n=n.parent;return n}class Xk extends Mo{direction;_buffer;constructor(t,e){super(t),this.direction=e,this._buffer=new Uk(t.model,t.config.get("typing.undoStep")),this._isEnabledBasedOnSelection=!1}get buffer(){return this._buffer}execute(t={}){const e=this.editor.model,n=e.document;e.enqueueChange(this._buffer.batch,(r=>{this._buffer.lock();const i=r.createSelection(t.selection||n.selection);if(!e.canEditAt(i))return;const o=t.sequence||1,s=i.isCollapsed;if(i.isCollapsed&&e.modifySelection(i,{direction:this.direction,unit:t.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(o))return void this._replaceEntireContentWithParagraph(r);if(this._shouldReplaceFirstBlockWithParagraph(i,o))return void this.editor.execute("paragraph",{selection:i});if(i.isCollapsed)return;let a=0;i.getFirstRange().getMinimalFlatRanges().forEach((t=>{a+=Kr(t.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),e.deleteContent(i,{doNotResetEntireContent:s,direction:this.direction}),this._buffer.input(a),r.setSelection(i),this._buffer.unlock()}))}_shouldEntireContentBeReplacedWithParagraph(t){if(t>1)return!1;const e=this.editor.model,n=e.document.selection,r=e.schema.getLimitElement(n);if(!(n.isCollapsed&&n.containsEntireContent(r)))return!1;if(!e.schema.checkChild(r,"paragraph"))return!1;const i=r.getChild(0);return!i||!i.is("element","paragraph")}_replaceEntireContentWithParagraph(t){const e=this.editor.model,n=e.document.selection,r=e.schema.getLimitElement(n),i=t.createElement("paragraph");t.remove(t.createRangeIn(r)),t.insert(i,r),t.setSelection(i,0)}_shouldReplaceFirstBlockWithParagraph(t,e){const n=this.editor.model;if(e>1||"backward"!=this.direction)return!1;if(!t.isCollapsed)return!1;const r=t.getFirstPosition(),i=n.schema.getLimitElement(r),o=i.getChild(0);return r.parent==o&&(!!t.containsEntireContent(o)&&(!!n.schema.checkChild(i,"paragraph")&&"paragraph"!=o.name))}}const tw="word",ew="selection",nw="backward",rw="forward",iw={deleteContent:{unit:ew,direction:nw},deleteContentBackward:{unit:"codePoint",direction:nw},deleteWordBackward:{unit:tw,direction:nw},deleteHardLineBackward:{unit:ew,direction:nw},deleteSoftLineBackward:{unit:ew,direction:nw},deleteContentForward:{unit:"character",direction:rw},deleteWordForward:{unit:tw,direction:rw},deleteHardLineForward:{unit:ew,direction:rw},deleteSoftLineForward:{unit:ew,direction:rw}};class ow extends Xa{constructor(t){super(t);const e=t.document;let n=0;e.on("keydown",(()=>{n++})),e.on("keyup",(()=>{n=0})),e.on("beforeinput",((r,i)=>{if(!this.isEnabled)return;const{targetRanges:o,domEvent:s,inputType:a}=i,l=iw[a];if(!l)return;const c={direction:l.direction,unit:l.unit,sequence:n};c.unit==ew&&(c.selectionToRemove=t.createSelection(o[0])),"deleteContentBackward"===a&&(Xn.isAndroid&&(c.sequence=1),function(t){if(1!=t.length||t[0].isCollapsed)return!1;const e=t[0].getWalker({direction:"backward",singleCharacters:!0,ignoreElementEnd:!0});let n=0;for(const{nextPosition:t,item:r}of e){if(t.parent.is("$text")){const e=t.parent.data,r=t.offset;if(Io(e,r)||Po(e,r)||Fo(e,r))continue;n++}else(r.is("containerElement")||r.is("emptyElement"))&&n++;if(n>1)return!0}return!1}(o)&&(c.unit=ew,c.selectionToRemove=t.createSelection(o)));const d=new Xs(e,"delete",o[0]);e.fire(d,new el(t,s,c)),d.stop.called&&r.stop()})),Xn.isBlink&&function(t){const e=t.view,n=e.document;let r=null,i=!1;function o(t){return t==$i.backspace||t==$i.delete}function s(t){return t==$i.backspace?nw:rw}n.on("keydown",((t,{keyCode:e})=>{r=e,i=!1})),n.on("keyup",((a,{keyCode:l,domEvent:c})=>{const d=n.selection,h=t.isEnabled&&l==r&&o(l)&&!d.isCollapsed&&!i;if(r=null,h){const t=d.getFirstRange(),r=new Xs(n,"delete",t),i={unit:ew,direction:s(l),selectionToRemove:d};n.fire(r,new el(e,c,i))}})),n.on("beforeinput",((t,{inputType:e})=>{const n=iw[e];o(r)&&n&&n.direction==s(r)&&(i=!0)}),{priority:"high"}),n.on("beforeinput",((t,{inputType:e,data:n})=>{r==$i.delete&&"insertText"==e&&""==n&&t.stop()}),{priority:"high"})}(this)}observe(){}stopObserving(){}}class sw extends Lo{_undoOnBackspace;static get pluginName(){return"Delete"}init(){const t=this.editor,e=t.editing.view,n=e.document,r=t.model.document;e.addObserver(ow),this._undoOnBackspace=!1;const i=new Xk(t,"forward");t.commands.add("deleteForward",i),t.commands.add("forwardDelete",i),t.commands.add("delete",new Xk(t,"backward")),this.listenTo(n,"delete",((r,i)=>{n.isComposing||i.preventDefault();const{direction:o,sequence:s,selectionToRemove:a,unit:l}=i,c="forward"===o?"deleteForward":"delete",d={sequence:s};if("selection"==l){const e=Array.from(a.getRanges()).map((e=>t.editing.mapper.toModelRange(e)));d.selection=t.model.createSelection(e)}else d.unit=l;t.execute(c,d),e.scrollToTheSelection()}),{priority:"low"}),this.editor.plugins.has("UndoEditing")&&(this.listenTo(n,"delete",((e,n)=>{this._undoOnBackspace&&"backward"==n.direction&&1==n.sequence&&"codePoint"==n.unit&&(this._undoOnBackspace=!1,t.execute("undo"),n.preventDefault(),e.stop())}),{context:"$capture"}),this.listenTo(r,"change",(()=>{this._undoOnBackspace=!1})))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}class aw extends Lo{static get requires(){return[Zk,sw]}static get pluginName(){return"Typing"}}function lw(t,e){let n=t.start;return{text:Array.from(t.getWalker({ignoreElementEnd:!1})).reduce(((t,{item:r})=>r.is("$text")||r.is("$textProxy")?t+r.data:(n=e.createPositionAfter(r),"")),""),range:e.createRange(n,t.end)}}class cw extends(jr()){model;testCallback;_hasMatch;constructor(t,e){super(),this.model=t,this.testCallback=e,this._hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",(()=>{this.isEnabled?this._startListening():(this.stopListening(t.document.selection),this.stopListening(t.document))})),this._startListening()}get hasMatch(){return this._hasMatch}_startListening(){const t=this.model.document;this.listenTo(t.selection,"change:range",((e,{directChange:n})=>{n&&(t.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this._hasMatch=!1))})),this.listenTo(t,"change:data",((t,e)=>{!e.isUndo&&e.isLocal&&this._evaluateTextBeforeSelection("data",{batch:e})}))}_evaluateTextBeforeSelection(t,e={}){const n=this.model,r=n.document.selection,i=n.createRange(n.createPositionAt(r.focus.parent,0),r.focus),{text:o,range:s}=lw(i,n),a=this.testCallback(o);if(!a&&this.hasMatch&&this.fire("unmatched"),this._hasMatch=!!a,a){const n=Object.assign(e,{text:o,range:s});"object"==typeof a&&Object.assign(n,a),this.fire(`matched:${t}`,n)}}}class dw extends Lo{attributes;_overrideUid;_isNextGravityRestorationSkipped=!1;static get pluginName(){return"TwoStepCaretMovement"}constructor(t){super(t),this.attributes=new Set,this._overrideUid=null}init(){const t=this.editor,e=t.model,n=t.editing.view,r=t.locale,i=e.document.selection;this.listenTo(n.document,"arrowKey",((t,e)=>{if(!i.isCollapsed)return;if(e.shiftKey||e.altKey||e.ctrlKey)return;const n=e.keyCode==$i.arrowright,o=e.keyCode==$i.arrowleft;if(!n&&!o)return;const s=r.contentLanguageDirection;let a=!1;a="ltr"===s&&n||"rtl"===s&&o?this._handleForwardMovement(e):this._handleBackwardMovement(e),!0===a&&t.stop()}),{context:"$text",priority:"highest"}),this.listenTo(i,"change:range",((t,e)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!e.directChange&&fw(i.getFirstPosition(),this.attributes)||this._restoreGravity())})),this._enableClickingAfterNode(),this._enableInsertContentSelectionAttributesFixer(),this._handleDeleteContentAfterNode()}registerAttribute(t){this.attributes.add(t)}_handleForwardMovement(t){const e=this.attributes,n=this.editor.model,r=n.document.selection,i=r.getFirstPosition();return!this._isGravityOverridden&&((!i.isAtStart||!hw(r,e))&&(!!fw(i,e)&&(gw(t),hw(r,e)&&fw(i,e,!0)?mw(n,e):this._overrideGravity(),!0)))}_handleBackwardMovement(t){const e=this.attributes,n=this.editor.model,r=n.document.selection,i=r.getFirstPosition();return this._isGravityOverridden?(gw(t),this._restoreGravity(),fw(i,e,!0)?mw(n,e):uw(n,e,i),!0):i.isAtStart?!!hw(r,e)&&(gw(t),uw(n,e,i),!0):!hw(r,e)&&fw(i,e,!0)?(gw(t),uw(n,e,i),!0):!!pw(i,e)&&(i.isAtEnd&&!hw(r,e)&&fw(i,e)?(gw(t),uw(n,e,i),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1))}_enableClickingAfterNode(){const t=this.editor,e=t.model,n=e.document.selection,r=t.editing.view.document;t.editing.view.addObserver(Hh);let i=!1;this.listenTo(r,"mousedown",(()=>{i=!0})),this.listenTo(r,"selectionChange",(()=>{const t=this.attributes;if(!i)return;if(i=!1,!n.isCollapsed)return;if(!hw(n,t))return;const r=n.getFirstPosition();fw(r,t)&&(r.isAtStart||fw(r,t,!0)?mw(e,t):this._isGravityOverridden||this._overrideGravity())}))}_enableInsertContentSelectionAttributesFixer(){const t=this.editor.model,e=t.document.selection,n=this.attributes;this.listenTo(t,"insertContent",(()=>{const r=e.getFirstPosition();hw(e,n)&&fw(r,n)&&mw(t,n)}),{priority:"low"})}_handleDeleteContentAfterNode(){const t=this.editor,e=t.model,n=e.document.selection,r=t.editing.view;let i=!1,o=!1;this.listenTo(r.document,"delete",((t,e)=>{i="backward"===e.direction}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{if(!i)return;const t=n.getFirstPosition();o=hw(n,this.attributes)&&!pw(t,this.attributes)}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{i&&(i=!1,o||t.model.enqueueChange((()=>{const t=n.getFirstPosition();hw(n,this.attributes)&&fw(t,this.attributes)&&(t.isAtStart||fw(t,this.attributes,!0)?mw(e,this.attributes):this._isGravityOverridden||this._overrideGravity())})))}),{priority:"low"})}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change((t=>t.overrideSelectionGravity()))}_restoreGravity(){this.editor.model.change((t=>{t.restoreSelectionGravity(this._overrideUid),this._overrideUid=null}))}}function hw(t,e){for(const n of e)if(t.hasAttribute(n))return!0;return!1}function uw(t,e,n){const r=n.nodeBefore;t.change((n=>{if(r){const e=[],i=t.schema.isObject(r)&&t.schema.isInline(r);for(const[n,o]of r.getAttributes())!t.schema.checkAttribute("$text",n)||i&&!1===t.schema.getAttributeProperties(n).copyFromObject||e.push([n,o]);n.setSelectionAttribute(e)}else n.removeSelectionAttribute(e)}))}function mw(t,e){t.change((t=>{t.removeSelectionAttribute(e)}))}function gw(t){t.preventDefault()}function pw(t,e){return fw(t.getShiftedBy(-1),e)}function fw(t,e,n=!1){const{nodeBefore:r,nodeAfter:i}=t;for(const t of e){const e=r?r.getAttribute(t):void 0,o=i?i.getAttribute(t):void 0;if((!n||void 0!==e&&void 0!==o)&&o!==e)return!0}return!1}const bw={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:/(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i,to:[null,"½",null]},oneThird:{from:/(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i,to:[null,"⅓",null]},twoThirds:{from:/(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i,to:[null,"⅔",null]},oneForth:{from:/(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i,to:[null,"¼",null]},threeQuarters:{from:/(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i,to:[null,"¾",null]},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:vw('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:vw("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:vw("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:vw('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:vw('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:vw("'"),to:[null,"‚",null,"’"]}},kw={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},ww=["symbols","mathematical","typography","quotes"];function Aw(t){return"string"==typeof t?new RegExp(`(${Ib(t)})$`):t}function _w(t){return"string"==typeof t?()=>[t]:t instanceof Array?()=>t:t}function Cw(t){return(t.textNode?t.textNode:t.nodeAfter).getAttributes()}function vw(t){return new RegExp(`(^|\\s)(${t})([^${t}]*)(${t})$`)}function yw(t,e,n,r){return r.createRange(xw(t,e,n,!0,r),xw(t,e,n,!1,r))}function xw(t,e,n,r,i){let o=t.textNode||(r?t.nodeBefore:t.nodeAfter),s=null;for(;o&&o.getAttribute(e)==n;)s=o,o=r?o.previousSibling:o.nextSibling;return s?i.createPositionAt(s,r?"before":"after"):t}function Ew(t,e,n,r){const i=t.editing.view,o=new Set;i.document.registerPostFixer((i=>{const s=t.model.document.selection;let a=!1;if(s.hasAttribute(e)){const l=yw(s.getFirstPosition(),e,s.getAttribute(e),t.model),c=t.editing.mapper.toViewRange(l);for(const t of c.getItems())t.is("element",n)&&!t.hasClass(r)&&(i.addClass(r,t),o.add(t),a=!0)}return a})),t.conversion.for("editingDowncast").add((t=>{function e(){i.change((t=>{for(const e of o.values())t.removeClass(r,e),o.delete(e)}))}t.on("insert",e,{priority:"highest"}),t.on("remove",e,{priority:"highest"}),t.on("attribute",e,{priority:"highest"}),t.on("selection",e,{priority:"highest"})}))}function Bw(t,e,n,r){let i,o=null;"function"==typeof r?i=r:(o=t.commands.get(r),i=()=>{t.execute(r)}),t.model.document.on("change:data",((s,a)=>{if(o&&!o.isEnabled||!e.isEnabled)return;const l=Eo(t.model.document.selection.getRanges());if(!l.isCollapsed)return;if(a.isUndo||!a.isLocal)return;const c=Array.from(t.model.document.differ.getChanges()),d=c[0];if(1!=c.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const h=d.position.parent;if(h.is("element","codeBlock"))return;if(h.is("element","listItem")&&"function"!=typeof r&&!["numberedList","bulletedList","todoList"].includes(r))return;if(o&&!0===o.value)return;const u=h.getChild(0),m=t.model.createRangeOn(u);if(!m.containsRange(l)&&!l.end.isEqual(m.end))return;const g=n.exec(u.data.substr(0,l.end.offset));g&&t.model.enqueueChange((e=>{const n=e.createPositionAt(h,0),r=e.createPositionAt(h,g[0].length),o=new uc(n,r);if(!1!==i({match:g})){e.remove(o);const n=t.model.document.selection.getFirstRange(),r=e.createRangeIn(h);!h.isEmpty||r.isEqual(n)||r.containsRange(n,!0)||e.remove(h)}o.detach(),t.model.enqueueChange((()=>{t.plugins.get("Delete").requestUndoOnBackspace()}))}))}))}function Dw(t,e,n,r){let i,o;n instanceof RegExp?i=n:o=n,o=o||(t=>{let e;const n=[],r=[];for(;null!==(e=i.exec(t))&&!(e&&e.length<4);){let{index:t,1:i,2:o,3:s}=e;const a=i+o+s;t+=e[0].length-a.length;const l=[t,t+i.length],c=[t+i.length+o.length,t+i.length+o.length+s.length];n.push(l),n.push(c),r.push([t+i.length,t+i.length+o.length])}return{remove:n,format:r}}),t.model.document.on("change:data",((n,i)=>{if(i.isUndo||!i.isLocal||!e.isEnabled)return;const s=t.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,h=d.parent,{text:u,range:m}=function(t,e){let n=t.start;const r=Array.from(t.getItems()).reduce(((t,r)=>!r.is("$text")&&!r.is("$textProxy")||r.getAttribute("code")?(n=e.createPositionAfter(r),""):t+r.data),"");return{text:r,range:e.createRange(n,t.end)}}(s.createRange(s.createPositionAt(h,0),d),s),g=o(u),p=Sw(m.start,g.format,s),f=Sw(m.start,g.remove,s);p.length&&f.length&&s.enqueueChange((e=>{if(!1!==r(e,p)){for(const t of f.reverse())e.remove(t);s.enqueueChange((()=>{t.plugins.get("Delete").requestUndoOnBackspace()}))}}))}))}function Sw(t,e,n){return e.filter((t=>void 0!==t[0]&&void 0!==t[1])).map((e=>n.createRange(t.getShiftedBy(e[0]),t.getShiftedBy(e[1]))))}class Tw extends Lo{static get requires(){return[sw]}static get pluginName(){return"Autoformat"}afterInit(){const t=this.editor,e=this.editor.t;this._addListAutoformats(),this._addBasicStylesAutoformats(),this._addHeadingAutoformats(),this._addBlockQuoteAutoformats(),this._addCodeBlockAutoformats(),this._addHorizontalLineAutoformats(),t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Revert autoformatting action"),keystroke:"Backspace"}]})}_addListAutoformats(){const t=this.editor.commands;t.get("bulletedList")&&Bw(this.editor,this,/^[*-]\s$/,"bulletedList"),t.get("numberedList")&&Bw(this.editor,this,/^1[.|)]\s$/,"numberedList"),t.get("todoList")&&Bw(this.editor,this,/^\[\s?\]\s$/,"todoList"),t.get("checkTodoList")&&Bw(this.editor,this,/^\[\s?x\s?\]\s$/,(()=>{this.editor.execute("todoList"),this.editor.execute("checkTodoList")}))}_addBasicStylesAutoformats(){const t=this.editor.commands;if(t.get("bold")){const t=Iw(this.editor,"bold");Dw(this.editor,this,/(?:^|\s)(\*\*)([^*]+)(\*\*)$/g,t),Dw(this.editor,this,/(?:^|\s)(__)([^_]+)(__)$/g,t)}if(t.get("italic")){const t=Iw(this.editor,"italic");Dw(this.editor,this,/(?:^|\s)(\*)([^*_]+)(\*)$/g,t),Dw(this.editor,this,/(?:^|\s)(_)([^_]+)(_)$/g,t)}if(t.get("code")){const t=Iw(this.editor,"code");Dw(this.editor,this,/(`)([^`]+)(`)$/g,t)}if(t.get("strikethrough")){const t=Iw(this.editor,"strikethrough");Dw(this.editor,this,/(~~)([^~]+)(~~)$/g,t)}}_addHeadingAutoformats(){const t=this.editor.commands.get("heading");t&&t.modelElements.filter((t=>t.match(/^heading[1-6]$/))).forEach((e=>{const n=e[7],r=new RegExp(`^(#{${n}})\\s$`);Bw(this.editor,this,r,(()=>{if(!t.isEnabled||t.value===e)return!1;this.editor.execute("heading",{value:e})}))}))}_addBlockQuoteAutoformats(){this.editor.commands.get("blockQuote")&&Bw(this.editor,this,/^>\s$/,"blockQuote")}_addCodeBlockAutoformats(){const t=this.editor,e=t.model.document.selection;t.commands.get("codeBlock")&&Bw(t,this,/^```$/,(()=>{if(e.getFirstPosition().parent.is("element","listItem"))return!1;this.editor.execute("codeBlock",{usePreviousLanguageChoice:!0})}))}_addHorizontalLineAutoformats(){this.editor.commands.get("horizontalLine")&&Bw(this.editor,this,/^---$/,"horizontalLine")}}function Iw(t,e){return(n,r)=>{if(!t.commands.get(e).isEnabled)return!1;const i=t.model.schema.getValidRanges(r,e);for(const t of i)n.setAttribute(e,!0,t);n.removeSelectionAttribute(e)}}class Pw extends Mo{attributeKey;constructor(t,e){super(t),this.attributeKey=e}refresh(){const t=this.editor.model,e=t.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=t.schema.checkAttributeInSelection(e.selection,this.attributeKey)}execute(t={}){const e=this.editor.model,n=e.document.selection,r=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(n.isCollapsed)r?t.setSelectionAttribute(this.attributeKey,!0):t.removeSelectionAttribute(this.attributeKey);else{const i=e.schema.getValidRanges(n.getRanges(),this.attributeKey);for(const e of i)r?t.setAttribute(this.attributeKey,r,e):t.removeAttribute(this.attributeKey,e)}}))}_getValueFromFirstAllowedNode(){const t=this.editor.model,e=t.schema,n=t.document.selection;if(n.isCollapsed)return n.hasAttribute(this.attributeKey);for(const t of n.getRanges())for(const n of t.getItems())if(e.checkAttribute(n,this.attributeKey))return n.hasAttribute(this.attributeKey);return!1}}const Vw="bold";class Fw extends Lo{static get pluginName(){return"BoldEditing"}init(){const t=this.editor,e=this.editor.t;t.model.schema.extend("$text",{allowAttributes:Vw}),t.model.schema.setAttributeProperties(Vw,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:Vw,view:"strong",upcastAlso:["b",t=>{const e=t.getStyle("font-weight");return e&&("bold"==e||Number(e)>=600)?{name:!0,styles:["font-weight"]}:null}]}),t.commands.add(Vw,new Pw(t,Vw)),t.keystrokes.set("CTRL+B",Vw),t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Bold text"),keystroke:"CTRL+B"}]})}}function Rw({editor:t,commandName:e,plugin:n,icon:r,label:i,keystroke:o}){return s=>{const a=t.commands.get(e),l=new s(t.locale);return l.set({label:i,icon:r,keystroke:o,isToggleable:!0}),l.bind("isEnabled").to(a,"isEnabled"),l.bind("isOn").to(a,"value"),l instanceof Ym?l.set({role:"menuitemcheckbox"}):l.set({tooltip:!0}),n.listenTo(l,"execute",(()=>{t.execute(e),t.editing.view.focus()})),l}}const Lw="bold";class zw extends Lo{static get pluginName(){return"BoldUI"}init(){const t=this.editor,e=t.locale.t,n=Rw({editor:t,commandName:Lw,plugin:this,icon:zu.bold,label:e("Bold"),keystroke:"CTRL+B"});t.ui.componentFactory.add(Lw,(()=>n(wm))),t.ui.componentFactory.add("menuBar:"+Lw,(()=>n(Ym)))}}const Mw="code";class Nw extends Lo{static get pluginName(){return"CodeEditing"}static get requires(){return[dw]}init(){const t=this.editor,e=this.editor.t;t.model.schema.extend("$text",{allowAttributes:Mw}),t.model.schema.setAttributeProperties(Mw,{isFormatting:!0,copyOnEnter:!1}),t.conversion.attributeToElement({model:Mw,view:"code",upcastAlso:{styles:{"word-wrap":"break-word"}}}),t.commands.add(Mw,new Pw(t,Mw)),t.plugins.get(dw).registerAttribute(Mw),Ew(t,Mw,"code","ck-code_selected"),t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Move out of an inline code style"),keystroke:[["arrowleft","arrowleft"],["arrowright","arrowright"]]}]})}}var Ow=n(4199),Hw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Ow.A,Hw);Ow.A.locals;const jw="code";class qw extends Lo{static get pluginName(){return"CodeUI"}init(){const t=this.editor,e=t.locale.t,n=Rw({editor:t,commandName:jw,plugin:this,icon:'',label:e("Code")});t.ui.componentFactory.add(jw,(()=>n(wm))),t.ui.componentFactory.add("menuBar:"+jw,(()=>n(Ym)))}}const Uw="italic";class Ww extends Lo{static get pluginName(){return"ItalicEditing"}init(){const t=this.editor,e=this.editor.t;t.model.schema.extend("$text",{allowAttributes:Uw}),t.model.schema.setAttributeProperties(Uw,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:Uw,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),t.commands.add(Uw,new Pw(t,Uw)),t.keystrokes.set("CTRL+I",Uw),t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Italic text"),keystroke:"CTRL+I"}]})}}const $w="italic";class Gw extends Lo{static get pluginName(){return"ItalicUI"}init(){const t=this.editor,e=t.locale.t,n=Rw({editor:t,commandName:$w,plugin:this,icon:'',keystroke:"CTRL+I",label:e("Italic")});t.ui.componentFactory.add($w,(()=>n(wm))),t.ui.componentFactory.add("menuBar:"+$w,(()=>n(Ym)))}}const Kw="strikethrough";class Zw extends Lo{static get pluginName(){return"StrikethroughEditing"}init(){const t=this.editor,e=this.editor.t;t.model.schema.extend("$text",{allowAttributes:Kw}),t.model.schema.setAttributeProperties(Kw,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:Kw,view:"s",upcastAlso:["del","strike",{styles:{"text-decoration":"line-through"}}]}),t.commands.add(Kw,new Pw(t,Kw)),t.keystrokes.set("CTRL+SHIFT+X","strikethrough"),t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Strikethrough text"),keystroke:"CTRL+SHIFT+X"}]})}}const Yw="strikethrough";class Jw extends Lo{static get pluginName(){return"StrikethroughUI"}init(){const t=this.editor,e=t.locale.t,n=Rw({editor:t,commandName:Yw,plugin:this,icon:'',keystroke:"CTRL+SHIFT+X",label:e("Strikethrough")});t.ui.componentFactory.add(Yw,(()=>n(wm))),t.ui.componentFactory.add("menuBar:"+Yw,(()=>n(Ym)))}}const Qw="subscript";class Xw extends Lo{static get pluginName(){return"SubscriptEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:Qw}),t.model.schema.setAttributeProperties(Qw,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:Qw,view:"sub",upcastAlso:[{styles:{"vertical-align":"sub"}}]}),t.commands.add(Qw,new Pw(t,Qw))}}const tA="subscript";class eA extends Lo{static get pluginName(){return"SubscriptUI"}init(){const t=this.editor,e=t.locale.t,n=Rw({editor:t,commandName:tA,plugin:this,icon:'',label:e("Subscript")});t.ui.componentFactory.add(tA,(()=>n(wm))),t.ui.componentFactory.add("menuBar:"+tA,(()=>n(Ym)))}}const nA="superscript";class rA extends Lo{static get pluginName(){return"SuperscriptEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:nA}),t.model.schema.setAttributeProperties(nA,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:nA,view:"sup",upcastAlso:[{styles:{"vertical-align":"super"}}]}),t.commands.add(nA,new Pw(t,nA))}}const iA="superscript";class oA extends Lo{static get pluginName(){return"SuperscriptUI"}init(){const t=this.editor,e=t.locale.t,n=Rw({editor:t,commandName:iA,plugin:this,icon:'',label:e("Superscript")});t.ui.componentFactory.add(iA,(()=>n(wm))),t.ui.componentFactory.add("menuBar:"+iA,(()=>n(Ym)))}}const sA="underline";class aA extends Lo{static get pluginName(){return"UnderlineEditing"}init(){const t=this.editor,e=this.editor.t;t.model.schema.extend("$text",{allowAttributes:sA}),t.model.schema.setAttributeProperties(sA,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:sA,view:"u",upcastAlso:{styles:{"text-decoration":"underline"}}}),t.commands.add(sA,new Pw(t,sA)),t.keystrokes.set("CTRL+U","underline"),t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Underline text"),keystroke:"CTRL+U"}]})}}const lA="underline";class cA extends Lo{static get pluginName(){return"UnderlineUI"}init(){const t=this.editor,e=t.locale.t,n=Rw({editor:t,commandName:lA,plugin:this,icon:'',label:e("Underline"),keystroke:"CTRL+U"});t.ui.componentFactory.add(lA,(()=>n(wm))),t.ui.componentFactory.add("menuBar:"+lA,(()=>n(Ym)))}}function*dA(t,e){for(const n of e)n&&t.getAttributeProperties(n[0]).copyOnEnter&&(yield n)}class hA extends Mo{execute(){this.editor.model.change((t=>{this.enterBlock(t),this.fire("afterExecute",{writer:t})}))}enterBlock(t){const e=this.editor.model,n=e.document.selection,r=e.schema,i=n.isCollapsed,o=n.getFirstRange(),s=o.start.parent,a=o.end.parent;if(r.isLimit(s)||r.isLimit(a))return i||s!=a||e.deleteContent(n),!1;if(i){const e=dA(t.model.schema,n.getAttributes());return uA(t,o.start),t.setSelectionAttribute(e),!0}{const r=!(o.start.isAtStart&&o.end.isAtEnd),i=s==a;if(e.deleteContent(n,{leaveUnmerged:r}),r){if(i)return uA(t,n.focus),!0;t.setSelection(a,0)}}return!1}}function uA(t,e){t.split(e),t.setSelection(e.parent.nextSibling,0)}const mA={insertParagraph:{isSoft:!1},insertLineBreak:{isSoft:!0}};class gA extends Xa{constructor(t){super(t);const e=this.document;let n=!1;e.on("keydown",((t,e)=>{n=e.shiftKey})),e.on("beforeinput",((r,i)=>{if(!this.isEnabled)return;let o=i.inputType;Xn.isSafari&&n&&"insertParagraph"==o&&(o="insertLineBreak");const s=i.domEvent,a=mA[o];if(!a)return;const l=new Xs(e,"enter",i.targetRanges[0]);e.fire(l,new el(t,s,{isSoft:a.isSoft})),l.stop.called&&r.stop()}))}observe(){}stopObserving(){}}class pA extends Lo{static get pluginName(){return"Enter"}init(){const t=this.editor,e=t.editing.view,n=e.document,r=this.editor.t;e.addObserver(gA),t.commands.add("enter",new hA(t)),this.listenTo(n,"enter",((r,i)=>{n.isComposing||i.preventDefault(),i.isSoft||(t.execute("enter"),e.scrollToTheSelection())}),{priority:"low"}),t.accessibility.addKeystrokeInfos({keystrokes:[{label:r("Insert a hard break (a new paragraph)"),keystroke:"Enter"}]})}}class fA extends Mo{execute(){const t=this.editor.model,e=t.document;t.change((n=>{!function(t,e,n){const r=n.isCollapsed,i=n.getFirstRange(),o=i.start.parent,s=i.end.parent,a=o==s;if(r){const r=dA(t.schema,n.getAttributes());bA(t,e,i.end),e.removeSelectionAttribute(n.getAttributeKeys()),e.setSelectionAttribute(r)}else{const r=!(i.start.isAtStart&&i.end.isAtEnd);t.deleteContent(n,{leaveUnmerged:r}),a?bA(t,e,n.focus):r&&e.setSelection(s,0)}}(t,n,e.selection),this.fire("afterExecute",{writer:n})}))}refresh(){const t=this.editor.model,e=t.document;this.isEnabled=function(t,e){if(e.rangeCount>1)return!1;const n=e.anchor;if(!n||!t.checkChild(n,"softBreak"))return!1;const r=e.getFirstRange(),i=r.start.parent,o=r.end.parent;if((kA(i,t)||kA(o,t))&&i!==o)return!1;return!0}(t.schema,e.selection)}}function bA(t,e,n){const r=e.createElement("softBreak");t.insertContent(r,n),e.setSelection(r,"after")}function kA(t,e){return!t.is("rootElement")&&(e.isLimit(t)||kA(t.parent,e))}class wA extends Lo{static get pluginName(){return"ShiftEnter"}init(){const t=this.editor,e=t.model.schema,n=t.conversion,r=t.editing.view,i=r.document,o=this.editor.t;e.register("softBreak",{allowWhere:"$text",isInline:!0}),n.for("upcast").elementToElement({model:"softBreak",view:"br"}),n.for("downcast").elementToElement({model:"softBreak",view:(t,{writer:e})=>e.createEmptyElement("br")}),r.addObserver(gA),t.commands.add("shiftEnter",new fA(t)),this.listenTo(i,"enter",((e,n)=>{i.isComposing||n.preventDefault(),n.isSoft&&(t.execute("shiftEnter"),r.scrollToTheSelection())}),{priority:"low"}),t.accessibility.addKeystrokeInfos({keystrokes:[{label:o("Insert a soft break (a <br> element)"),keystroke:"Shift+Enter"}]})}}class AA extends Mo{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.schema,r=e.document.selection,i=Array.from(r.getSelectedBlocks()),o=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(o){const e=i.filter((t=>_A(t)||vA(n,t)));this._applyQuote(t,e)}else this._removeQuote(t,i.filter(_A))}))}_getValue(){const t=Eo(this.editor.model.document.selection.getSelectedBlocks());return!(!t||!_A(t))}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,n=Eo(t.getSelectedBlocks());return!!n&&vA(e,n)}_removeQuote(t,e){CA(t,e).reverse().forEach((e=>{if(e.start.isAtStart&&e.end.isAtEnd)return void t.unwrap(e.start.parent);if(e.start.isAtStart){const n=t.createPositionBefore(e.start.parent);return void t.move(e,n)}e.end.isAtEnd||t.split(e.end);const n=t.createPositionAfter(e.end.parent);t.move(e,n)}))}_applyQuote(t,e){const n=[];CA(t,e).reverse().forEach((e=>{let r=_A(e.start);r||(r=t.createElement("blockQuote"),t.wrap(e,r)),n.push(r)})),n.reverse().reduce(((e,n)=>e.nextSibling==n?(t.merge(t.createPositionAfter(e)),e):n))}}function _A(t){return"blockQuote"==t.parent.name?t.parent:null}function CA(t,e){let n,r=0;const i=[];for(;r{const r=t.model.document.differ.getChanges();for(const t of r)if("insert"==t.type){const r=t.position.nodeAfter;if(!r)continue;if(r.is("element","blockQuote")&&r.isEmpty)return n.remove(r),!0;if(r.is("element","blockQuote")&&!e.checkChild(t.position,r))return n.unwrap(r),!0;if(r.is("element")){const t=n.createRangeIn(r);for(const r of t.getItems())if(r.is("element","blockQuote")&&!e.checkChild(n.createPositionBefore(r),r))return n.unwrap(r),!0}}else if("remove"==t.type){const e=t.position.parent;if(e.is("element","blockQuote")&&e.isEmpty)return n.remove(e),!0}return!1}));const n=this.editor.editing.view.document,r=t.model.document.selection,i=t.commands.get("blockQuote");this.listenTo(n,"enter",((e,n)=>{if(!r.isCollapsed||!i.value)return;r.getLastPosition().parent.isEmpty&&(t.execute("blockQuote"),t.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())}),{context:"blockquote"}),this.listenTo(n,"delete",((e,n)=>{if("backward"!=n.direction||!r.isCollapsed||!i.value)return;const o=r.getLastPosition().parent;o.isEmpty&&!o.previousSibling&&(t.execute("blockQuote"),t.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())}),{context:"blockquote"})}}var xA=n(8708),EA={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(xA.A,EA);xA.A.locals;class BA extends Lo{static get pluginName(){return"BlockQuoteUI"}init(){const t=this.editor;t.ui.componentFactory.add("blockQuote",(()=>{const t=this._createButton(wm);return t.set({tooltip:!0}),t})),t.ui.componentFactory.add("menuBar:blockQuote",(()=>{const t=this._createButton(Ym);return t.set({role:"menuitemcheckbox"}),t}))}_createButton(t){const e=this.editor,n=e.locale,r=e.commands.get("blockQuote"),i=new t(e.locale),o=n.t;return i.set({label:o("Block quote"),icon:zu.quote,isToggleable:!0}),i.bind("isEnabled").to(r,"isEnabled"),i.bind("isOn").to(r,"value"),this.listenTo(i,"execute",(()=>{e.execute("blockQuote"),e.editing.view.focus()})),i}}class DA extends Mo{constructor(t){super(t),this._isEnabledBasedOnSelection=!1}refresh(){const t=this.editor.model,e=Eo(t.document.selection.getSelectedBlocks());this.value=!!e&&e.is("element","paragraph"),this.isEnabled=!!e&&SA(e,t.schema)}execute(t={}){const e=this.editor.model,n=e.document,r=t.selection||n.selection;e.canEditAt(r)&&e.change((t=>{const n=r.getSelectedBlocks();for(const r of n)!r.is("element","paragraph")&&SA(r,e.schema)&&t.rename(r,"paragraph")}))}}function SA(t,e){return e.checkChild(t.parent,"paragraph")&&!e.isObject(t)}class TA extends Mo{constructor(t){super(t),this._isEnabledBasedOnSelection=!1}execute(t){const e=this.editor.model,n=t.attributes;let r=t.position;e.canEditAt(r)&&e.change((t=>{if(r=this._findPositionToInsertParagraph(r,t),!r)return;const i=t.createElement("paragraph");n&&e.schema.setAllowedAttributes(i,n,t),e.insertContent(i,r),t.setSelection(i,"in")}))}_findPositionToInsertParagraph(t,e){const n=this.editor.model;if(n.schema.checkChild(t,"paragraph"))return t;const r=n.schema.findAllowedParent(t,"paragraph");if(!r)return null;const i=t.parent,o=n.schema.checkChild(i,"$text");return i.isEmpty||o&&t.isAtEnd?n.createPositionAfter(i):!i.isEmpty&&o&&t.isAtStart?n.createPositionBefore(i):e.split(t,r).position}}class IA extends Lo{static get pluginName(){return"Paragraph"}init(){const t=this.editor,e=t.model;t.commands.add("paragraph",new DA(t)),t.commands.add("insertParagraph",new TA(t)),e.schema.register("paragraph",{inheritAllFrom:"$block"}),t.conversion.elementToElement({model:"paragraph",view:"p"}),t.conversion.for("upcast").elementToElement({model:(t,{writer:e})=>IA.paragraphLikeElements.has(t.name)?t.isEmpty?null:e.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 PA extends Mo{modelElements;constructor(t,e){super(t),this.modelElements=e}refresh(){const t=Eo(this.editor.model.document.selection.getSelectedBlocks());this.value=!!t&&this.modelElements.includes(t.name)&&t.name,this.isEnabled=!!t&&this.modelElements.some((e=>VA(t,e,this.editor.model.schema)))}execute(t){const e=this.editor.model,n=e.document,r=t.value;e.change((t=>{const i=Array.from(n.selection.getSelectedBlocks()).filter((t=>VA(t,r,e.schema)));for(const e of i)e.is("element",r)||t.rename(e,r)}))}}function VA(t,e,n){return n.checkChild(t.parent,e)&&!n.isObject(t)}const FA="paragraph";class RA extends Lo{static get pluginName(){return"HeadingEditing"}constructor(t){super(t),t.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[IA]}init(){const t=this.editor,e=t.config.get("heading.options"),n=[];for(const r of e)"paragraph"!==r.model&&(t.model.schema.register(r.model,{inheritAllFrom:"$block"}),t.conversion.elementToElement(r),n.push(r.model));this._addDefaultH1Conversion(t),t.commands.add("heading",new PA(t,n))}afterInit(){const t=this.editor,e=t.commands.get("enter"),n=t.config.get("heading.options");e&&this.listenTo(e,"afterExecute",((e,r)=>{const i=t.model.document.selection.getFirstPosition().parent;n.some((t=>i.is("element",t.model)))&&!i.is("element",FA)&&0===i.childCount&&r.writer.rename(i,FA)}))}_addDefaultH1Conversion(t){t.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:fr.low+1})}}function LA(t){const e=t.t,n={Paragraph:e("Paragraph"),"Heading 1":e("Heading 1"),"Heading 2":e("Heading 2"),"Heading 3":e("Heading 3"),"Heading 4":e("Heading 4"),"Heading 5":e("Heading 5"),"Heading 6":e("Heading 6")};return t.config.get("heading.options").map((t=>{const e=n[t.title];return e&&e!=t.title&&(t.title=e),t}))}var zA=n(6269),MA={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(zA.A,MA);zA.A.locals;class NA extends Lo{static get pluginName(){return"HeadingUI"}init(){const t=this.editor,e=t.t,n=LA(t),r=e("Choose heading"),i=e("Heading");t.ui.componentFactory.add("heading",(e=>{const o={},s=new xo,a=t.commands.get("heading"),l=t.commands.get("paragraph"),c=[a];for(const t of n){const e={type:"button",model:new kb({label:t.title,class:t.class,role:"menuitemradio",withText:!0})};"paragraph"===t.model?(e.model.bind("isOn").to(l,"value"),e.model.set("commandName","paragraph"),c.push(l)):(e.model.bind("isOn").to(a,"value",(e=>e===t.model)),e.model.set({commandName:"heading",commandValue:t.model})),s.add(e),o[t.model]=t.title}const d=Dp(e);return Ip(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",((...t)=>t.some((t=>t)))),d.buttonView.bind("label").to(a,"value",l,"value",((t,e)=>{const n=e?"paragraph":t;return"boolean"==typeof n?r:o[n]?o[n]:r})),d.buttonView.bind("ariaLabel").to(a,"value",l,"value",((t,e)=>{const n=e?"paragraph":t;return"boolean"==typeof n?i:o[n]?`${o[n]}, ${i}`:i})),this.listenTo(d,"execute",(e=>{const{commandName:n,commandValue:r}=e.source;t.execute(n,r?{value:r}:void 0),t.editing.view.focus()})),d})),t.ui.componentFactory.add("menuBar:heading",(r=>{const i=new ik(r),o=t.commands.get("heading"),s=t.commands.get("paragraph"),a=[o],l=new ok(r);i.set({class:"ck-heading-dropdown"}),l.set({ariaLabel:e("Heading"),role:"menu"}),i.buttonView.set({label:e("Heading")}),i.panelView.children.add(l);for(const e of n){const n=new Kf(r,i),c=new Ym(r);n.children.add(c),l.items.add(n),c.set({isToggleable:!0,label:e.title,role:"menuitemradio",class:e.class}),c.delegate("execute").to(i),c.on("execute",(()=>{const n="paragraph"===e.model?"paragraph":"heading";t.execute(n,{value:e.model}),t.editing.view.focus()})),"paragraph"===e.model?(c.bind("isOn").to(s,"value"),a.push(s)):c.bind("isOn").to(o,"value",(t=>t===e.model))}return i.bind("isEnabled").toMany(a,"isEnabled",((...t)=>t.some((t=>t)))),i}))}}const OA=(()=>({heading1:zu.heading1,heading2:zu.heading2,heading3:zu.heading3,heading4:zu.heading4,heading5:zu.heading5,heading6:zu.heading6}))();class HA extends nl{domEventType=["paste","copy","cut","drop","dragover","dragstart","dragend","dragenter","dragleave"];constructor(t){super(t);const e=this.document;function n(t){return(n,r)=>{r.preventDefault();const i=r.dropRange?[r.dropRange]:null,o=new mr(e,t);e.fire(o,{dataTransfer:r.dataTransfer,method:n.name,targetRanges:i,target:r.target,domEvent:r.domEvent}),o.stop.called&&r.stopPropagation()}}this.listenTo(e,"paste",n("clipboardInput"),{priority:"low"}),this.listenTo(e,"drop",n("clipboardInput"),{priority:"low"}),this.listenTo(e,"dragover",n("dragging"),{priority:"low"})}onDomEvent(t){const e="clipboardData"in t?t.clipboardData:t.dataTransfer,n="drop"==t.type||"paste"==t.type,r={dataTransfer:new Il(e,{cacheFiles:n})};if("drop"==t.type||"dragover"==t.type){const e=hi(t);r.dropRange=e&&this.view.domConverter.domRangeToView(e)}this.fire(t.type,t,r)}}const jA=["figcaption","li"],qA=["ol","ul"];function UA(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 e="",n=null;for(const r of t.getChildren())e+=WA(r,n)+UA(r),n=r;return e}function WA(t,e){return e?t.is("element","li")&&!t.isEmpty&&t.getChild(0).is("containerElement")||qA.includes(t.name)&&qA.includes(e.name)?"\n\n":t.is("containerElement")||e.is("containerElement")?jA.includes(t.name)||jA.includes(e.name)?"\n":t.is("element")&&t.getCustomProperty("dataPipeline:transparentRendering")||e.is("element")&&e.getCustomProperty("dataPipeline:transparentRendering")?"":"\n\n":"":""}const $A=function(t,e){return t&&ro(t,e,De)};const GA=function(t,e,n,r){var i=n.length,o=i,s=!r;if(null==t)return!o;for(t=Object(t);i--;){var a=n[i];if(s&&a[2]?a[1]!==t[a[0]]:!(a[0]in t))return!1}for(;++it.model.getSelectedContent(t.model.document.selection)){return this.editor.model.change((r=>{const i=r.model.document.selection;r.setSelection(e);const o=this._insertFakeMarkersIntoSelection(r,r.model.document.selection,t),s=n(r),a=this._removeFakeMarkersInsideElement(r,s);for(const[t,e]of Object.entries(o)){a[t]||=r.createRangeIn(s);for(const t of e)r.remove(t)}s.markers.clear();for(const[t,e]of Object.entries(a))s.markers.set(t,e);return r.setSelection(i),s}))}_pasteMarkersIntoTransformedElement(t,e){const n=this._getPasteMarkersFromRangeMap(t);return this.editor.model.change((t=>{const r=this._insertFakeMarkersElements(t,n),i=e(t),o=this._removeFakeMarkersInsideElement(t,i);for(const e of Object.values(r).flat())t.remove(e);for(const[e,n]of Object.entries(o))t.model.markers.has(e)||t.addMarker(e,{usingOperation:!0,affectsData:!0,range:n});return i}))}_pasteFragmentWithMarkers(t){const e=this._getPasteMarkersFromRangeMap(t.markers);t.markers.clear();for(const n of e)t.markers.set(n.name,n.range);return this.editor.model.insertContent(t)}_forceMarkersCopy(t,e,n={allowedActions:"all",copyPartiallySelected:!0,duplicateOnPaste:!0}){const r=this._markersToCopy.get(t);this._markersToCopy.set(t,n),e(),r?this._markersToCopy.set(t,r):this._markersToCopy.delete(t)}_isMarkerCopyable(t,e){const n=this._getMarkerClipboardConfig(t);if(!n)return!1;if(!e)return!0;const{allowedActions:r}=n;return"all"===r||r.includes(e)}_hasMarkerConfiguration(t){return!!this._getMarkerClipboardConfig(t)}_getMarkerClipboardConfig(t){const[e]=t.split(":");return this._markersToCopy.get(e)||null}_insertFakeMarkersIntoSelection(t,e,n){const r=this._getCopyableMarkersFromSelection(t,e,n);return this._insertFakeMarkersElements(t,r)}_getCopyableMarkersFromSelection(t,e,n){const r=Array.from(e.getRanges()),i=new Set(r.flatMap((e=>Array.from(t.model.markers.getMarkersIntersectingRange(e)))));return Array.from(i).filter((t=>{if(!this._isMarkerCopyable(t.name,n))return!1;const{copyPartiallySelected:e}=this._getMarkerClipboardConfig(t.name);if(!e){const e=t.getRange();return r.some((t=>t.containsRange(e,!0)))}return!0})).map((t=>({name:"dragstart"===n?this._getUniqueMarkerName(t.name):t.name,range:t.getRange()})))}_getPasteMarkersFromRangeMap(t,e=null){const{model:n}=this.editor;return(t instanceof Map?Array.from(t.entries()):Object.entries(t)).flatMap((([t,r])=>{if(!this._hasMarkerConfiguration(t))return[{name:t,range:r}];if(this._isMarkerCopyable(t,e)){const e=this._getMarkerClipboardConfig(t),i=n.markers.has(t)&&"$graveyard"===n.markers.get(t).getRange().root.rootName;return(e.duplicateOnPaste||i)&&(t=this._getUniqueMarkerName(t)),[{name:t,range:r}]}return[]}))}_insertFakeMarkersElements(t,e){const n={},r=e.flatMap((t=>{const{start:e,end:n}=t.range;return[{position:e,marker:t,type:"start"},{position:n,marker:t,type:"end"}]})).sort((({position:t},{position:e})=>t.isBefore(e)?1:-1));for(const{position:e,marker:i,type:o}of r){const r=t.createElement("$marker",{"data-name":i.name,"data-type":o});n[i.name]||(n[i.name]=[]),n[i.name].push(r),t.insert(r,e)}return n}_removeFakeMarkersInsideElement(t,e){const n=this._getAllFakeMarkersFromElement(t,e).reduce(((e,n)=>{const r=n.markerElement&&t.createPositionBefore(n.markerElement);let i=e[n.name],o=!1;if(i&&i.start&&i.end){this._getMarkerClipboardConfig(n.name).duplicateOnPaste?e[this._getUniqueMarkerName(n.name)]=e[n.name]:o=!0,i=null}return o||(e[n.name]={...i,[n.type]:r}),n.markerElement&&t.remove(n.markerElement),e}),{});return s_(n,(n=>new Ql(n.start||t.createPositionFromPath(e,[0]),n.end||t.createPositionAt(e,"end"))))}_getAllFakeMarkersFromElement(t,e){const n=Array.from(t.createRangeIn(e)).flatMap((({item:t})=>{if(!t.is("element","$marker"))return[];const e=t.getAttribute("data-name"),n=t.getAttribute("data-type");return[{markerElement:t,name:e,type:n}]})),r=[],i=[];for(const t of n){if("end"===t.type){n.some((e=>e.name===t.name&&"start"===e.type))||r.push({markerElement:null,name:t.name,type:"start"})}if("start"===t.type){n.some((e=>e.name===t.name&&"end"===e.type))||i.unshift({markerElement:null,name:t.name,type:"end"})}}return[...r,...n,...i]}_getUniqueMarkerName(t){const e=t.split(":"),n=pr().substring(1,6);return 3===e.length?`${e.slice(0,2).join(":")}:${n}`:`${e.join(":")}:${n}`}}class l_ extends Lo{static get pluginName(){return"ClipboardPipeline"}static get requires(){return[a_]}init(){this.editor.editing.view.addObserver(HA),this._setupPasteDrop(),this._setupCopyCut()}_fireOutputTransformationEvent(t,e,n){const r=this.editor.plugins.get("ClipboardMarkersUtils");this.editor.model.enqueueChange({isUndoable:"cut"===n},(()=>{const i=r._copySelectedFragmentWithMarkers(n,e);this.fire("outputTransformation",{dataTransfer:t,content:i,method:n})}))}_setupPasteDrop(){const t=this.editor,e=t.model,n=t.editing.view,r=n.document,i=this.editor.plugins.get("ClipboardMarkersUtils");this.listenTo(r,"clipboardInput",((e,n)=>{"paste"!=n.method||t.model.canEditAt(t.model.document.selection)||e.stop()}),{priority:"highest"}),this.listenTo(r,"clipboardInput",((t,e)=>{const r=e.dataTransfer;let i;if(e.content)i=e.content;else{let t="";r.getData("text/html")?t=function(t){return t.replace(/(\s+)<\/span>/g,((t,e)=>1==e.length?" ":e)).replace(//g,"")}(r.getData("text/html")):r.getData("text/plain")&&(((o=(o=r.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("

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

                ${o}

                `),t=o),i=this.editor.data.htmlProcessor.toView(t)}var o;const s=new mr(this,"inputTransformation");this.fire(s,{content:i,dataTransfer:r,targetRanges:e.targetRanges,method:e.method}),s.stop.called&&t.stop(),n.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",((t,n)=>{if(n.content.isEmpty)return;const r=this.editor.data.toModel(n.content,"$clipboardHolder");0!=r.childCount&&(t.stop(),e.change((()=>{this.fire("contentInsertion",{content:r,method:n.method,dataTransfer:n.dataTransfer,targetRanges:n.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((t,e)=>{e.resultRange=i._pasteFragmentWithMarkers(e.content)}),{priority:"low"})}_setupCopyCut(){const t=this.editor,e=t.model.document,n=t.editing.view.document,r=(t,n)=>{const r=n.dataTransfer;n.preventDefault(),this._fireOutputTransformationEvent(r,e.selection,t.name)};this.listenTo(n,"copy",r,{priority:"low"}),this.listenTo(n,"cut",((e,n)=>{t.model.canEditAt(t.model.document.selection)?r(e,n):n.preventDefault()}),{priority:"low"}),this.listenTo(this,"outputTransformation",((e,r)=>{const i=t.data.toView(r.content);n.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:i,method:r.method})}),{priority:"low"}),this.listenTo(n,"clipboardOutput",((n,r)=>{r.content.isEmpty||(r.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(r.content)),r.dataTransfer.setData("text/plain",UA(r.content))),"cut"==r.method&&t.model.deleteContent(e.selection)}),{priority:"low"})}}class c_ extends(Dr()){_stack=[];add(t,e){const n=this._stack,r=n[0];this._insertDescriptor(t);const i=n[0];r===i||d_(r,i)||this.fire("change:top",{oldDescriptor:r,newDescriptor:i,writer:e})}remove(t,e){const n=this._stack,r=n[0];this._removeDescriptor(t);const i=n[0];r===i||d_(r,i)||this.fire("change:top",{oldDescriptor:r,newDescriptor:i,writer:e})}_insertDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t.id));if(d_(t,e[n]))return;n>-1&&e.splice(n,1);let r=0;for(;e[r]&&h_(e[r],t);)r++;e.splice(r,0,t)}_removeDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t));n>-1&&e.splice(n,1)}}function d_(t,e){return t&&e&&t.priority==e.priority&&u_(t.classes)==u_(e.classes)}function h_(t,e){return t.priority>e.priority||!(t.priorityu_(e.classes)}function u_(t){return Array.isArray(t)?t.sort().join(","):t}const m_='',g_="ck-widget_selected";function p_(t){return!!t.is("element")&&!!t.getCustomProperty("widget")}function f_(t,e,n={}){if(!t.is("containerElement"))throw new kr("widget-to-widget-wrong-element-type",null,{element:t});return e.setAttribute("contenteditable","false",t),e.addClass("ck-widget",t),e.setCustomProperty("widget",!0,t),t.getFillerOffset=v_,e.setCustomProperty("widgetLabel",[],t),n.label&&function(t,e){const n=t.getCustomProperty("widgetLabel");n.push(e)}(t,n.label),n.hasSelectionHandle&&function(t,e){const n=e.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(t){const e=this.toDomElement(t),n=new pm;return n.set("content",m_),n.render(),e.appendChild(n.element),e}));e.insert(e.createPositionAt(t,0),n),e.addClass(["ck-widget_with-selection-handle"],t)}(t,e),w_(t,e),t}function b_(t,e,n){if(e.classes&&n.addClass(eo(e.classes),t),e.attributes)for(const r in e.attributes)n.setAttribute(r,e.attributes[r],t)}function k_(t,e,n){if(e.classes&&n.removeClass(eo(e.classes),t),e.attributes)for(const r in e.attributes)n.removeAttribute(r,t)}function w_(t,e,n=b_,r=k_){const i=new c_;i.on("change:top",((e,i)=>{i.oldDescriptor&&r(t,i.oldDescriptor,i.writer),i.newDescriptor&&n(t,i.newDescriptor,i.writer)}));e.setCustomProperty("addHighlight",((t,e,n)=>i.add(e,n)),t),e.setCustomProperty("removeHighlight",((t,e,n)=>i.remove(e,n)),t)}function A_(t,e,n={}){return e.addClass(["ck-editor__editable","ck-editor__nested-editable"],t),e.setAttribute("role","textbox",t),e.setAttribute("tabindex","-1",t),n.label&&e.setAttribute("aria-label",n.label,t),e.setAttribute("contenteditable",t.isReadOnly?"false":"true",t),t.on("change:isReadOnly",((n,r,i)=>{e.setAttribute("contenteditable",i?"false":"true",t)})),t.on("change:isFocused",((n,r,i)=>{i?e.addClass("ck-editor__nested-editable_focused",t):e.removeClass("ck-editor__nested-editable_focused",t)})),w_(t,e),t}function __(t,e){const n=t.getSelectedElement();if(n){const r=B_(t);if(r)return e.createRange(e.createPositionAt(n,r))}return e.schema.findOptimalInsertionRange(t)}function C_(t,e){return(n,r)=>{const{mapper:i,viewPosition:o}=r,s=i.findMappedViewAncestor(o);if(!e(s))return;const a=i.toModelElement(s);r.modelPosition=t.createPositionAt(a,o.isAtStart?"before":"after")}}function v_(){return null}function y_(t){const e=t=>{const{width:e,paddingLeft:n,paddingRight:r}=t.ownerDocument.defaultView.getComputedStyle(t);return parseFloat(e)-(parseFloat(n)||0)-(parseFloat(r)||0)},n=t.parentElement;if(!n)return 0;let r=e(n);let i=0,o=n;for(;isNaN(r);){if(o=o.parentElement,++i>5)return 0;r=e(o)}return r}const x_="widget-type-around";function E_(t,e,n){return!!t&&p_(t)&&!n.isInline(e)}function B_(t){return t.getAttribute(x_)}var D_=n(8508),S_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(D_.A,S_);D_.A.locals;const T_=["before","after"],I_=(new DOMParser).parseFromString('',"image/svg+xml").firstChild,P_="ck-widget__type-around_disabled";class V_ extends Lo{_currentFakeCaretModelElement=null;static get pluginName(){return"WidgetTypeAround"}static get requires(){return[pA,sw]}init(){const t=this.editor,e=t.editing.view;this.on("change:isEnabled",((n,r,i)=>{e.change((t=>{for(const n of e.document.roots)i?t.removeClass(P_,n):t.addClass(P_,n)})),i||t.model.change((t=>{t.removeSelectionAttribute(x_)}))})),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(t,e){const n=this.editor,r=n.editing.view,i=n.model.schema.getAttributesWithProperty(t,"copyOnReplace",!0);n.execute("insertParagraph",{position:n.model.createPositionAt(t,e),attributes:i}),r.focus(),r.scrollToTheSelection()}_listenToIfEnabled(t,e,n,r){this.listenTo(t,e,((...t)=>{this.isEnabled&&n(...t)}),r)}_insertParagraphAccordingToFakeCaretPosition(){const t=this.editor.model.document.selection,e=B_(t);if(!e)return!1;const n=t.getSelectedElement();return this._insertParagraph(n,e),!0}_enableTypeAroundUIInjection(){const t=this.editor,e=t.model.schema,n=t.locale.t,r={before:n("Insert paragraph before block"),after:n("Insert paragraph after block")};t.editing.downcastDispatcher.on("insert",((t,i,o)=>{const s=o.mapper.toViewElement(i.item);if(s&&E_(s,i.item,e)){!function(t,e,n){const r=t.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(t){const n=this.toDomElement(t);return function(t,e){for(const n of T_){const r=new Nu({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${n}`],title:e[n],"aria-hidden":"true"},children:[t.ownerDocument.importNode(I_,!0)]});t.appendChild(r.render())}}(n,e),function(t){const e=new Nu({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});t.appendChild(e.render())}(n),n}));t.insert(t.createPositionAt(n,"end"),r)}(o.writer,r,s);s.getCustomProperty("widgetLabel").push((()=>this.isEnabled?n("Press Enter to type after or press Shift + Enter to type before the widget"):""))}}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const t=this.editor,e=t.model,n=e.document.selection,r=e.schema,i=t.editing.view;function o(t){return`ck-widget_type-around_show-fake-caret_${t}`}this._listenToIfEnabled(i.document,"arrowKey",((t,e)=>{this._handleArrowKeyPress(t,e)}),{context:[p_,"$text"],priority:"high"}),this._listenToIfEnabled(n,"change:range",((e,n)=>{n.directChange&&t.model.change((t=>{t.removeSelectionAttribute(x_)}))})),this._listenToIfEnabled(e.document,"change:data",(()=>{const e=n.getSelectedElement();if(e){if(E_(t.editing.mapper.toViewElement(e),e,r))return}t.model.change((t=>{t.removeSelectionAttribute(x_)}))})),this._listenToIfEnabled(t.editing.downcastDispatcher,"selection",((t,e,n)=>{const i=n.writer;if(this._currentFakeCaretModelElement){const t=n.mapper.toViewElement(this._currentFakeCaretModelElement);t&&(i.removeClass(T_.map(o),t),this._currentFakeCaretModelElement=null)}const s=e.selection.getSelectedElement();if(!s)return;const a=n.mapper.toViewElement(s);if(!E_(a,s,r))return;const l=B_(e.selection);l&&(i.addClass(o(l),a),this._currentFakeCaretModelElement=s)})),this._listenToIfEnabled(t.ui.focusTracker,"change:isFocused",((e,n,r)=>{r||t.model.change((t=>{t.removeSelectionAttribute(x_)}))}))}_handleArrowKeyPress(t,e){const n=this.editor,r=n.model,i=r.document.selection,o=r.schema,s=n.editing.view,a=function(t,e){const n=Ji(t,e);return"down"===n||"right"===n}(e.keyCode,n.locale.contentLanguageDirection),l=s.document.selection.getSelectedElement();let c;E_(l,n.editing.mapper.toModelElement(l),o)?c=this._handleArrowKeyPressOnSelectedWidget(a):i.isCollapsed?c=this._handleArrowKeyPressWhenSelectionNextToAWidget(a):e.shiftKey||(c=this._handleArrowKeyPressWhenNonCollapsedSelection(a)),c&&(e.preventDefault(),t.stop())}_handleArrowKeyPressOnSelectedWidget(t){const e=this.editor.model,n=B_(e.document.selection);return e.change((e=>{if(!n)return e.setSelectionAttribute(x_,t?"after":"before"),!0;if(!(n===(t?"after":"before")))return e.removeSelectionAttribute(x_),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(t){const e=this.editor,n=e.model,r=n.schema,i=e.plugins.get("Widget"),o=i._getObjectElementNextToSelection(t);return!!E_(e.editing.mapper.toViewElement(o),o,r)&&(n.change((e=>{i._setSelectionOverElement(o),e.setSelectionAttribute(x_,t?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(t){const e=this.editor,n=e.model,r=n.schema,i=e.editing.mapper,o=n.document.selection,s=t?o.getLastPosition().nodeBefore:o.getFirstPosition().nodeAfter;return!!E_(i.toViewElement(s),s,r)&&(n.change((e=>{e.setSelection(s,"on"),e.setSelectionAttribute(x_,t?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const t=this.editor,e=t.editing.view;this._listenToIfEnabled(e.document,"mousedown",((n,r)=>{const i=r.domTarget.closest(".ck-widget__type-around__button");if(!i)return;const o=function(t){return t.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(i),s=function(t,e){const n=t.closest(".ck-widget");return e.mapDomToView(n)}(i,e.domConverter),a=t.editing.mapper.toModelElement(s);this._insertParagraph(a,o),r.preventDefault(),n.stop()}))}_enableInsertingParagraphsOnEnterKeypress(){const t=this.editor,e=t.model.document.selection,n=t.editing.view;this._listenToIfEnabled(n.document,"enter",((n,r)=>{if("atTarget"!=n.eventPhase)return;const i=e.getSelectedElement(),o=t.editing.mapper.toViewElement(i),s=t.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:E_(o,i,s)&&(this._insertParagraph(i,r.isSoft?"before":"after"),a=!0),a&&(r.preventDefault(),n.stop())}),{context:p_})}_enableInsertingParagraphsOnTypingKeystroke(){const t=this.editor.editing.view.document;this._listenToIfEnabled(t,"insertText",((e,n)=>{this._insertParagraphAccordingToFakeCaretPosition()&&(n.selection=t.selection)}),{priority:"high"}),Xn.isAndroid?this._listenToIfEnabled(t,"keydown",((t,e)=>{229==e.keyCode&&this._insertParagraphAccordingToFakeCaretPosition()})):this._listenToIfEnabled(t,"compositionstart",(()=>{this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"high"})}_enableDeleteIntegration(){const t=this.editor,e=t.editing.view,n=t.model,r=n.schema;this._listenToIfEnabled(e.document,"delete",((e,i)=>{if("atTarget"!=e.eventPhase)return;const o=B_(n.document.selection);if(!o)return;const s=i.direction,a=n.document.selection.getSelectedElement(),l="forward"==s;if("before"===o===l)t.execute("delete",{selection:n.createSelection(a,"on")});else{const e=r.getNearestSelectionRange(n.createPositionAt(a,o),s);if(e)if(e.isCollapsed){const i=n.createSelection(e.start);if(n.modifySelection(i,{direction:s}),i.focus.isEqual(e.start)){const t=function(t,e){let n=e;for(const r of e.getAncestors({parentFirst:!0})){if(r.childCount>1||t.isLimit(r))break;n=r}return n}(r,e.start.parent);n.deleteContent(n.createSelection(t,"on"),{doNotAutoparagraph:!0})}else n.change((n=>{n.setSelection(e),t.execute(l?"deleteForward":"delete")}))}else n.change((n=>{n.setSelection(e),t.execute(l?"deleteForward":"delete")}))}i.preventDefault(),e.stop()}),{context:p_})}_enableInsertContentIntegration(){const t=this.editor,e=this.editor.model,n=e.document.selection;this._listenToIfEnabled(t.model,"insertContent",((t,[r,i])=>{if(i&&!i.is("documentSelection"))return;const o=B_(n);return o?(t.stop(),e.change((t=>{const i=n.getSelectedElement(),s=e.createPositionAt(i,o),a=t.createSelection(s),l=e.insertContent(r,a);return t.setSelection(a),l}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"insertObject",((t,n)=>{const[,r,i={}]=n;if(r&&!r.is("documentSelection"))return;const o=B_(e);o&&(i.findOptimalPosition=o,n[3]=i)}),{priority:"high"})}_enableDeleteContentIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"deleteContent",((t,[n])=>{if(n&&!n.is("documentSelection"))return;B_(e)&&t.stop()}),{priority:"high"})}}function F_(t){const e=t.model;return(n,r)=>{const i=r.keyCode==$i.arrowup,o=r.keyCode==$i.arrowdown,s=r.shiftKey,a=e.document.selection;if(!i&&!o)return;const l=o;if(s&&function(t,e){return!t.isCollapsed&&t.isBackward==e}(a,l))return;const c=function(t,e,n){const r=t.model;if(n){const t=e.isCollapsed?e.focus:e.getLastPosition(),n=R_(r,t,"forward");if(!n)return null;const i=r.createRange(t,n),o=L_(r.schema,i,"backward");return o?r.createRange(t,o):null}{const t=e.isCollapsed?e.focus:e.getFirstPosition(),n=R_(r,t,"backward");if(!n)return null;const i=r.createRange(n,t),o=L_(r.schema,i,"forward");return o?r.createRange(o,t):null}}(t,a,l);if(c){if(c.isCollapsed){if(a.isCollapsed)return;if(s)return}(c.isCollapsed||function(t,e,n){const r=t.model,i=t.view.domConverter;if(n){const t=r.createSelection(e.start);r.modifySelection(t),t.focus.isAtEnd||e.start.isEqual(t.focus)||(e=r.createRange(t.focus,e.end))}const o=t.mapper.toViewRange(e),s=i.viewRangeToDom(o),a=fi.getDomRangeRects(s);let l;for(const t of a)if(void 0!==l){if(Math.round(t.top)>=l)return!1;l=Math.max(l,Math.round(t.bottom))}else l=Math.round(t.bottom);return!0}(t,c,l))&&(e.change((t=>{const n=l?c.end:c.start;if(s){const r=e.createSelection(a.anchor);r.setFocus(n),t.setSelection(r)}else t.setSelection(n)})),n.stop(),r.preventDefault(),r.stopPropagation())}}}function R_(t,e,n){const r=t.schema,i=t.createRangeIn(e.root),o="forward"==n?"elementStart":"elementEnd";for(const{previousPosition:t,item:s,type:a}of i.getWalker({startPosition:e,direction:n})){if(r.isLimit(s)&&!r.isInline(s))return t;if(a==o&&r.isBlock(s))return null}return null}function L_(t,e,n){const r="backward"==n?e.end:e.start;if(t.checkChild(r,"$text"))return r;for(const{nextPosition:r}of e.getWalker({direction:n}))if(t.checkChild(r,"$text"))return r;return null}var z_=n(695),M_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(z_.A,M_);z_.A.locals;class N_ extends Lo{_previouslySelected=new Set;static get pluginName(){return"Widget"}static get requires(){return[V_,sw]}init(){const t=this.editor,e=t.editing.view,n=e.document,r=t.t;this.editor.editing.downcastDispatcher.on("selection",((e,n,r)=>{const i=r.writer,o=n.selection;if(o.isCollapsed)return;const s=o.getSelectedElement();if(!s)return;const a=t.editing.mapper.toViewElement(s);var l;p_(a)&&(r.consumable.consume(o,"selection")&&i.setSelection(i.createRangeOn(a),{fake:!0,label:(l=a,l.getCustomProperty("widgetLabel").reduce(((t,e)=>"function"==typeof e?t?t+". "+e():e():t?t+". "+e:e),""))}))})),this.editor.editing.downcastDispatcher.on("selection",((t,e,n)=>{this._clearPreviouslySelectedWidgets(n.writer);const r=n.writer,i=r.document.selection;let o=null;for(const t of i.getRanges())for(const e of t){const t=e.item;p_(t)&&!O_(t,o)&&(r.addClass(g_,t),this._previouslySelected.add(t),o=t)}}),{priority:"low"}),e.addObserver(Hh),this.listenTo(n,"mousedown",((...t)=>this._onMousedown(...t))),this.listenTo(n,"arrowKey",((...t)=>{this._handleSelectionChangeOnArrowKeyPress(...t)}),{context:[p_,"$text"]}),this.listenTo(n,"arrowKey",((...t)=>{this._preventDefaultOnArrowKeyPress(...t)}),{context:"$root"}),this.listenTo(n,"arrowKey",F_(this.editor.editing),{context:"$text"}),this.listenTo(n,"delete",((t,e)=>{this._handleDelete("forward"==e.direction)&&(e.preventDefault(),t.stop())}),{context:"$root"}),this.listenTo(n,"tab",((t,e)=>{"atTarget"==t.eventPhase&&(e.shiftKey||this._selectFirstNestedEditable()&&(e.preventDefault(),t.stop()))}),{context:p_,priority:"low"}),this.listenTo(n,"tab",((t,e)=>{e.shiftKey&&this._selectAncestorWidget()&&(e.preventDefault(),t.stop())}),{priority:"low"}),this.listenTo(n,"keydown",((t,e)=>{e.keystroke==$i.esc&&this._selectAncestorWidget()&&(e.preventDefault(),t.stop())}),{priority:"low"}),t.accessibility.addKeystrokeInfoGroup({id:"widget",label:r("Keystrokes that can be used when a widget is selected (for example: image, table, etc.)"),keystrokes:[{label:r("Move focus from an editable area back to the parent widget"),keystroke:"Esc"},{label:r("Insert a new paragraph directly after a widget"),keystroke:"Enter"},{label:r("Insert a new paragraph directly before a widget"),keystroke:"Shift+Enter"},{label:r("Move the caret to allow typing directly before a widget"),keystroke:[["arrowup"],["arrowleft"]]},{label:r("Move the caret to allow typing directly after a widget"),keystroke:[["arrowdown"],["arrowright"]]}]})}_onMousedown(t,e){const n=this.editor,r=n.editing.view,i=r.document;let o=e.target;if(!o)return;if(e.domEvent.detail>=3)return void(this._selectBlockContent(o)&&e.preventDefault());if(!p_(o)){const t=function(t){let e=t;for(;e;){if(e.is("editableElement")||p_(e))return e;e=e.parent}return null}(o);if(!t)return;if(p_(t))o=t;else{const t=function(t,e){const n=hi(e.domEvent);let r=null;r=n?t.domConverter.domRangeToView(n):t.createRange(t.createPositionAt(e.target,0));if(!r)return null;const i=r.start;if(!i.parent)return null;let o=i.parent;i.parent.is("editableElement")&&(i.isAtEnd&&i.nodeBefore?o=i.nodeBefore:i.isAtStart&&i.nodeAfter&&(o=i.nodeAfter));if(o.is("$text"))return o.parent;return o}(r,e);if(!t||!p_(t))return;o=t}}Xn.isAndroid&&e.preventDefault(),i.isFocused||r.focus();const s=n.editing.mapper.toModelElement(o);this._setSelectionOverElement(s)}_selectBlockContent(t){const e=this.editor,n=e.model,r=e.editing.mapper,i=n.schema,o=r.findMappedViewAncestor(this.editor.editing.view.createPositionAt(t,0)),s=function(t,e){for(const n of t.getAncestors({includeSelf:!0,parentFirst:!0})){if(e.checkChild(n,"$text"))return n;if(e.isLimit(n)&&!e.isObject(n))break}return null}(r.toModelElement(o),n.schema);return!!s&&(n.change((t=>{const e=i.isLimit(s)?null:function(t,e){const n=new Ul({startPosition:t});for(const{item:t}of n){if(e.isLimit(t)||!t.is("element"))return null;if(e.checkChild(t,"$text"))return t}return null}(t.createPositionAfter(s),i),n=t.createPositionAt(s,0),r=e?t.createPositionAt(e,0):t.createPositionAt(s,"end");t.setSelection(t.createRange(n,r))})),!0)}_handleSelectionChangeOnArrowKeyPress(t,e){const n=e.keyCode,r=this.editor.model,i=r.schema,o=r.document.selection,s=o.getSelectedElement(),a=Ji(n,this.editor.locale.contentLanguageDirection),l="down"==a||"right"==a,c="up"==a||"down"==a;if(s&&i.isObject(s)){const n=l?o.getLastPosition():o.getFirstPosition(),s=i.getNearestSelectionRange(n,l?"forward":"backward");return void(s&&(r.change((t=>{t.setSelection(s)})),e.preventDefault(),t.stop()))}if(!o.isCollapsed&&!e.shiftKey){const n=o.getFirstPosition(),s=o.getLastPosition(),a=n.nodeAfter,c=s.nodeBefore;return void((a&&i.isObject(a)||c&&i.isObject(c))&&(r.change((t=>{t.setSelection(l?s:n)})),e.preventDefault(),t.stop()))}if(!o.isCollapsed)return;const d=this._getObjectElementNextToSelection(l);if(d&&i.isObject(d)){if(i.isInline(d)&&c)return;this._setSelectionOverElement(d),e.preventDefault(),t.stop()}}_preventDefaultOnArrowKeyPress(t,e){const n=this.editor.model,r=n.schema,i=n.document.selection.getSelectedElement();i&&r.isObject(i)&&(e.preventDefault(),t.stop())}_handleDelete(t){const e=this.editor.model.document.selection;if(!this.editor.model.canEditAt(e))return;if(!e.isCollapsed)return;const n=this._getObjectElementNextToSelection(t);return n?(this.editor.model.change((t=>{let r=e.anchor.parent;for(;r.isEmpty;){const e=r;r=e.parent,t.remove(e)}this._setSelectionOverElement(n)})),!0):void 0}_setSelectionOverElement(t){this.editor.model.change((e=>{e.setSelection(e.createRangeOn(t))}))}_getObjectElementNextToSelection(t){const e=this.editor.model,n=e.schema,r=e.document.selection,i=e.createSelection(r);if(e.modifySelection(i,{direction:t?"forward":"backward"}),i.isEqual(r))return null;const o=t?i.focus.nodeBefore:i.focus.nodeAfter;return o&&n.isObject(o)?o:null}_clearPreviouslySelectedWidgets(t){for(const e of this._previouslySelected)t.removeClass(g_,e);this._previouslySelected.clear()}_selectFirstNestedEditable(){const t=this.editor,e=this.editor.editing.view.document;for(const n of e.selection.getFirstRange().getItems())if(n.is("editableElement")){const e=t.editing.mapper.toModelElement(n);if(!e)continue;const r=t.model.createPositionAt(e,0),i=t.model.schema.getNearestSelectionRange(r,"forward");return t.model.change((t=>{t.setSelection(i)})),!0}return!1}_selectAncestorWidget(){const t=this.editor,e=t.editing.mapper,n=t.editing.view.document.selection.getFirstPosition().parent,r=(n.is("$text")?n.parent:n).findAncestor(p_);if(!r)return!1;const i=e.toModelElement(r);return!!i&&(t.model.change((t=>{t.setSelection(i,"on")})),!0)}}function O_(t,e){return!!e&&Array.from(t.getAncestors()).includes(e)}class H_ extends Lo{_toolbarDefinitions=new Map;_balloon;static get requires(){return[yb]}static get pluginName(){return"WidgetToolbarRepository"}init(){const t=this.editor;if(t.plugins.has("BalloonToolbar")){const e=t.plugins.get("BalloonToolbar");this.listenTo(e,"show",(e=>{(function(t){const e=t.getSelectedElement();return!(!e||!p_(e))})(t.editing.view.document.selection)&&e.stop()}),{priority:"high"})}this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui,"update",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui.focusTracker,"change:isFocused",(()=>{this._updateToolbarsVisibility()}),{priority:"low"})}destroy(){super.destroy();for(const t of this._toolbarDefinitions.values())t.view.destroy()}register(t,{ariaLabel:e,items:n,getRelatedElement:r,balloonClassName:i="ck-toolbar-container"}){if(!n.length)return void wr("widget-toolbar-no-items",{toolbarId:t});const o=this.editor,s=o.t,a=new bp(o.locale);if(a.ariaLabel=e||s("Widget toolbar"),this._toolbarDefinitions.has(t))throw new kr("widget-toolbar-duplicated",this,{toolbarId:t});const l={view:a,getRelatedElement:r,balloonClassName:i,itemsConfig:n,initialized:!1};o.ui.addToolbar(a,{isContextual:!0,beforeFocus:()=>{const t=r(o.editing.view.document.selection);t&&this._showToolbar(l,t)},afterBlur:()=>{this._hideToolbar(l)}}),this._toolbarDefinitions.set(t,l)}_updateToolbarsVisibility(){let t=0,e=null,n=null;for(const r of this._toolbarDefinitions.values()){const i=r.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&i)if(this.editor.ui.focusTracker.isFocused){const o=i.getAncestors().length;o>t&&(t=o,e=i,n=r)}else this._isToolbarVisible(r)&&this._hideToolbar(r);else this._isToolbarInBalloon(r)&&this._hideToolbar(r)}n&&this._showToolbar(n,e)}_hideToolbar(t){this._balloon.remove(t.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(t,e){this._isToolbarVisible(t)?j_(this.editor,e):this._isToolbarInBalloon(t)||(t.initialized||(t.initialized=!0,t.view.fillFromConfig(t.itemsConfig,this.editor.ui.componentFactory)),this._balloon.add({view:t.view,position:q_(this.editor,e),balloonClassName:t.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(()=>{for(const t of this._toolbarDefinitions.values())if(this._isToolbarVisible(t)){const e=t.getRelatedElement(this.editor.editing.view.document.selection);j_(this.editor,e)}})))}_isToolbarVisible(t){return this._balloon.visibleView===t.view}_isToolbarInBalloon(t){return this._balloon.hasView(t.view)}}function j_(t,e){const n=t.plugins.get("ContextualBalloon"),r=q_(t,e);n.updatePosition(r)}function q_(t,e){const n=t.editing.view,r=op.defaultPositions;return{target:n.domConverter.mapViewToDom(e),positions:[r.northArrowSouth,r.northArrowSouthWest,r.northArrowSouthEast,r.southArrowNorth,r.southArrowNorthWest,r.southArrowNorthEast,r.viewportStickyNorth]}}class U_ extends(jr()){_referenceCoordinates;_options;_originalWidth;_originalHeight;_originalWidthPercents;_aspectRatio;constructor(t){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=t,this._referenceCoordinates=null}get originalWidth(){return this._originalWidth}get originalHeight(){return this._originalHeight}get originalWidthPercents(){return this._originalWidthPercents}get aspectRatio(){return this._aspectRatio}begin(t,e,n){const r=new fi(e);this.activeHandlePosition=function(t){const e=["top-left","top-right","bottom-right","bottom-left"];for(const n of e)if(t.classList.contains(W_(n)))return n}(t),this._referenceCoordinates=function(t,e){const n=new fi(t),r=e.split("-"),i={x:"right"==r[1]?n.right:n.left,y:"bottom"==r[0]?n.bottom:n.top};return i.x+=t.ownerDocument.defaultView.scrollX,i.y+=t.ownerDocument.defaultView.scrollY,i}(e,function(t){const e=t.split("-"),n={top:"bottom",bottom:"top",left:"right",right:"left"};return`${n[e[0]]}-${n[e[1]]}`}(this.activeHandlePosition)),this._originalWidth=r.width,this._originalHeight=r.height,this._aspectRatio=r.width/r.height;const i=n.style.width;i&&i.match(/^\d+(\.\d*)?%$/)?this._originalWidthPercents=parseFloat(i):this._originalWidthPercents=function(t,e=new fi(t)){const n=y_(t);return n?e.width/n*100:0}(n,r)}update(t){this.proposedWidth=t.width,this.proposedHeight=t.height,this.proposedWidthPercents=t.widthPercents,this.proposedHandleHostWidth=t.handleHostWidth,this.proposedHandleHostHeight=t.handleHostHeight}}function W_(t){return`ck-widget__resizer__handle-${t}`}class $_ extends lm{constructor(){super();const t=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",t.to("_viewPosition",(t=>t?`ck-orientation-${t}`:""))],style:{display:t.if("_isVisible","none",(t=>!t))}},children:[{text:t.to("_label")}]})}_bindToState(t,e){this.bind("_isVisible").to(e,"proposedWidth",e,"proposedHeight",((t,e)=>null!==t&&null!==e)),this.bind("_label").to(e,"proposedHandleHostWidth",e,"proposedHandleHostHeight",e,"proposedWidthPercents",((e,n,r)=>"px"===t.unit?`${e}×${n}`:`${r}%`)),this.bind("_viewPosition").to(e,"activeHandlePosition",e,"proposedHandleHostWidth",e,"proposedHandleHostHeight",((t,e,n)=>e<50||n<50?"above-center":t))}_dismiss(){this.unbind(),this._isVisible=!1}}class G_ extends(jr()){_state;_sizeView;_options;_viewResizerWrapper=null;_initialViewWidth;constructor(t){super(),this._options=t,this.set("isEnabled",!0),this.set("isSelected",!1),this.bind("isVisible").to(this,"isEnabled",this,"isSelected",((t,e)=>t&&e)),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",(t=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),t.stop())}),{priority:"high"})}get state(){return this._state}show(){this._options.editor.editing.view.change((t=>{t.removeClass("ck-hidden",this._viewResizerWrapper)}))}hide(){this._options.editor.editing.view.change((t=>{t.addClass("ck-hidden",this._viewResizerWrapper)}))}attach(){const t=this,e=this._options.viewElement;this._options.editor.editing.view.change((n=>{const r=n.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(e){const n=this.toDomElement(e);return t._appendHandles(n),t._appendSizeUI(n),n}));n.insert(n.createPositionAt(e,"end"),r),n.addClass("ck-widget_with-resizer",e),this._viewResizerWrapper=r,this.isVisible||this.hide()})),this.on("change:isVisible",(()=>{this.isVisible?(this.show(),this.redraw()):this.hide()}))}begin(t){this._state=new U_(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(t,this._getHandleHost(),this._getResizeHost())}updateSize(t){const e=this._proposeNewSize(t);this._options.editor.editing.view.change((t=>{const n=this._options.unit||"%",r=("%"===n?e.widthPercents:e.width)+n;t.setStyle("width",r,this._options.viewElement)}));const n=this._getHandleHost(),r=new fi(n),i=Math.round(r.width),o=Math.round(r.height),s=new fi(n);e.width=Math.round(s.width),e.height=Math.round(s.height),this.redraw(r),this.state.update({...e,handleHostWidth:i,handleHostHeight:o})}commit(){const t=this._options.unit||"%",e=("%"===t?this.state.proposedWidthPercents:this.state.proposedWidth)+t;this._options.editor.editing.view.change((()=>{this._cleanup(),this._options.onCommit(e)}))}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(t){const e=this._domResizerWrapper;if(!((n=e)&&n.ownerDocument&&n.ownerDocument.contains(n)))return;var n;const r=e.parentElement,i=this._getHandleHost(),o=this._viewResizerWrapper,s=[o.getStyle("width"),o.getStyle("height"),o.getStyle("left"),o.getStyle("top")];let a;if(r.isSameNode(i)){const e=t||new fi(i);a=[e.width+"px",e.height+"px",void 0,void 0]}else a=[i.offsetWidth+"px",i.offsetHeight+"px",i.offsetLeft+"px",i.offsetTop+"px"];"same"!==Zr(s,a)&&this._options.editor.editing.view.change((t=>{t.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},o)}))}containsHandle(t){return this._domResizerWrapper.contains(t)}static isResizeHandle(t){return t.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change((t=>{t.setStyle("width",this._initialViewWidth,this._options.viewElement)}))}_proposeNewSize(t){const e=this.state,n={x:(r=t).pageX,y:r.pageY};var r;const i=!this._options.isCentered||this._options.isCentered(this),o={x:e._referenceCoordinates.x-(n.x+e.originalWidth),y:n.y-e.originalHeight-e._referenceCoordinates.y};i&&e.activeHandlePosition.endsWith("-right")&&(o.x=n.x-(e._referenceCoordinates.x+e.originalWidth)),i&&(o.x*=2);let s=Math.abs(e.originalWidth+o.x),a=Math.abs(e.originalHeight+o.y);return"width"==(s/e.aspectRatio>a?"width":"height")?a=s/e.aspectRatio:s=a*e.aspectRatio,{width:Math.round(s),height:Math.round(a),widthPercents:Math.min(Math.round(e.originalWidthPercents/e.originalWidth*s*100)/100,100)}}_getResizeHost(){const t=this._domResizerWrapper.parentElement;return this._options.getResizeHost(t)}_getHandleHost(){const t=this._domResizerWrapper.parentElement;return this._options.getHandleHost(t)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(t){const e=["top-left","top-right","bottom-right","bottom-left"];for(const r of e)t.appendChild(new Nu({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(n=r,`ck-widget__resizer__handle-${n}`)}}).render());var n}_appendSizeUI(t){this._sizeView=new $_,this._sizeView.render(),t.appendChild(this._sizeView.element)}}var K_=n(4095),Z_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(K_.A,Z_);K_.A.locals;class Y_ extends Lo{_resizers=new Map;_observer;_redrawSelectedResizerThrottled;static get pluginName(){return"WidgetResize"}init(){const t=this.editor.editing,e=Yn.window.document;this.set("selectedResizer",null),this.set("_activeResizer",null),t.view.addObserver(Hh),this._observer=new(oi()),this.listenTo(t.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(e,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(e,"mouseup",this._mouseUpListener.bind(this)),this._redrawSelectedResizerThrottled=R((()=>this.redrawSelectedResizer()),200),this.editor.ui.on("update",this._redrawSelectedResizerThrottled),this.editor.model.document.on("change",(()=>{for(const[t,e]of this._resizers)t.isAttached()||(this._resizers.delete(t),e.destroy())}),{priority:"lowest"}),this._observer.listenTo(Yn.window,"resize",this._redrawSelectedResizerThrottled);const n=this.editor.editing.view.document.selection;n.on("change",(()=>{const t=n.getSelectedElement(),e=this.getResizerByViewElement(t)||null;e?this.select(e):this.deselect()}))}redrawSelectedResizer(){this.selectedResizer&&this.selectedResizer.isVisible&&this.selectedResizer.redraw()}destroy(){super.destroy(),this._observer.stopListening();for(const t of this._resizers.values())t.destroy();this._redrawSelectedResizerThrottled.cancel()}select(t){this.deselect(),this.selectedResizer=t,this.selectedResizer.isSelected=!0}deselect(){this.selectedResizer&&(this.selectedResizer.isSelected=!1),this.selectedResizer=null}attachTo(t){const e=new G_(t),n=this.editor.plugins;if(e.attach(),n.has("WidgetToolbarRepository")){const t=n.get("WidgetToolbarRepository");e.on("begin",(()=>{t.forceDisabled("resize")}),{priority:"lowest"}),e.on("cancel",(()=>{t.clearForceDisabled("resize")}),{priority:"highest"}),e.on("commit",(()=>{t.clearForceDisabled("resize")}),{priority:"highest"})}this._resizers.set(t.viewElement,e);const r=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(r)==e&&this.select(e),e}getResizerByViewElement(t){return this._resizers.get(t)}_getResizerByHandle(t){for(const e of this._resizers.values())if(e.containsHandle(t))return e}_mouseDownListener(t,e){const n=e.domTarget;G_.isResizeHandle(n)&&(this._activeResizer=this._getResizerByHandle(n)||null,this._activeResizer&&(this._activeResizer.begin(n),t.stop(),e.preventDefault()))}_mouseMoveListener(t,e){this._activeResizer&&this._activeResizer.updateSize(e)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}}const J_=vi("px");class Q_ extends lm{constructor(){super();const t=this.bindTemplate;this.set({isVisible:!1,left:null,top:null,width:null}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-clipboard-drop-target-line",t.if("isVisible","ck-hidden",(t=>!t))],style:{left:t.to("left",(t=>J_(t))),top:t.to("top",(t=>J_(t))),width:t.to("width",(t=>J_(t)))}}})}}class X_ extends Lo{removeDropMarkerDelayed=To((()=>this.removeDropMarker()),40);_updateDropMarkerThrottled=R((t=>this._updateDropMarker(t)),40);_reconvertMarkerThrottled=R((()=>{this.editor.model.markers.has("drop-target")&&this.editor.editing.reconvertMarker("drop-target")}),0);_dropTargetLineView=new Q_;_domEmitter=new(oi());_scrollables=new Map;static get pluginName(){return"DragDropTarget"}init(){this._setupDropMarker()}destroy(){this._domEmitter.stopListening();for(const{resizeObserver:t}of this._scrollables.values())t.destroy();return this._updateDropMarkerThrottled.cancel(),this.removeDropMarkerDelayed.cancel(),this._reconvertMarkerThrottled.cancel(),super.destroy()}updateDropMarker(t,e,n,r,i,o){this.removeDropMarkerDelayed.cancel();const s=tC(this.editor,t,e,n,r,i,o);if(s)return o&&o.containsRange(s)?this.removeDropMarker():void this._updateDropMarkerThrottled(s)}getFinalDropRange(t,e,n,r,i,o){const s=tC(this.editor,t,e,n,r,i,o);return this.removeDropMarker(),s}removeDropMarker(){const t=this.editor.model;this.removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),this._dropTargetLineView.isVisible=!1,t.markers.has("drop-target")&&t.change((t=>{t.removeMarker("drop-target")}))}_setupDropMarker(){const t=this.editor;t.ui.view.body.add(this._dropTargetLineView),t.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),t.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(e,{writer:n})=>{if(t.model.schema.checkChild(e.markerRange.start,"$text"))return this._dropTargetLineView.isVisible=!1,this._createDropTargetPosition(n);e.markerRange.isCollapsed?this._updateDropTargetLine(e.markerRange):this._dropTargetLineView.isVisible=!1}})}_updateDropMarker(t){const e=this.editor,n=e.model.markers;e.model.change((e=>{n.has("drop-target")?n.get("drop-target").getRange().isEqual(t)||e.updateMarker("drop-target",{range:t}):e.addMarker("drop-target",{range:t,usingOperation:!1,affectsData:!1})}))}_createDropTargetPosition(t){return t.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(t){const e=this.toDomElement(t);return e.append("⁠",t.createElement("span"),"⁠"),e}))}_updateDropTargetLine(t){const e=this.editor.editing,n=t.start.nodeBefore,r=t.start.nodeAfter,i=t.start.parent,o=n?e.mapper.toViewElement(n):null,s=o?e.view.domConverter.mapViewToDom(o):null,a=r?e.mapper.toViewElement(r):null,l=a?e.view.domConverter.mapViewToDom(a):null,c=e.mapper.toViewElement(i);if(!c)return;const d=e.view.domConverter.mapViewToDom(c),h=this._getScrollableRect(c),{scrollX:u,scrollY:m}=Yn.window,g=s?new fi(s):null,p=l?new fi(l):null,f=new fi(d).excludeScrollbarsAndBorders(),b=g?g.bottom:f.top,k=p?p.top:f.bottom,w=Yn.window.getComputedStyle(d),A=b<=k?(b+k)/2:k;if(h.topa.schema.checkChild(o,t)))){if(a.schema.checkChild(o,"$text"))return a.createRange(o);if(e)return nC(t,iC(t,e.parent),r,i)}}}else if(a.schema.isInline(c))return nC(t,c,r,i);if(a.schema.isBlock(c))return nC(t,c,r,i);if(a.schema.checkChild(c,"$block")){const e=Array.from(c.getChildren()).filter((e=>e.is("element")&&!eC(t,e)));let n=0,o=e.length;if(0==o)return a.createRange(a.createPositionAt(c,"end"));for(;n{n?(this.forceDisabled("readOnlyMode"),this._isBlockDragging=!1):this.clearForceDisabled("readOnlyMode")})),Xn.isAndroid&&this.forceDisabled("noAndroidSupport"),t.plugins.has("BlockToolbar")){const e=t.plugins.get("BlockToolbar").buttonView.element;this._domEmitter.listenTo(e,"dragstart",((t,e)=>this._handleBlockDragStart(e))),this._domEmitter.listenTo(Yn.document,"dragover",((t,e)=>this._handleBlockDragging(e))),this._domEmitter.listenTo(Yn.document,"drop",((t,e)=>this._handleBlockDragging(e))),this._domEmitter.listenTo(Yn.document,"dragend",(()=>this._handleBlockDragEnd()),{useCapture:!0}),this.isEnabled&&e.setAttribute("draggable","true"),this.on("change:isEnabled",((t,n,r)=>{e.setAttribute("draggable",r?"true":"false")}))}}destroy(){return this._domEmitter.stopListening(),super.destroy()}_handleBlockDragStart(t){if(!this.isEnabled)return;const e=this.editor.model,n=e.document.selection,r=this.editor.editing.view,i=Array.from(n.getSelectedBlocks()),o=e.createRange(e.createPositionBefore(i[0]),e.createPositionAfter(i[i.length-1]));e.change((t=>t.setSelection(o))),this._isBlockDragging=!0,r.focus(),r.getObserver(HA).onDomEvent(t)}_handleBlockDragging(t){if(!this.isEnabled||!this._isBlockDragging)return;const e=t.clientX+("ltr"==this.editor.locale.contentLanguageDirection?100:-100),n=t.clientY,r=document.elementFromPoint(e,n),i=this.editor.editing.view;r&&r.closest(".ck-editor__editable")&&i.getObserver(HA).onDomEvent({...t,type:t.type,dataTransfer:t.dataTransfer,target:r,clientX:e,clientY:n,preventDefault:()=>t.preventDefault(),stopPropagation:()=>t.stopPropagation()})}_handleBlockDragEnd(){this._isBlockDragging=!1}}var sC=n(7793),aC={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(sC.A,aC);sC.A.locals;class lC extends Lo{_draggedRange;_draggingUid;_draggableElement;_clearDraggableAttributesDelayed=To((()=>this._clearDraggableAttributes()),40);_blockMode=!1;_domEmitter=new(oi());_previewContainer;static get pluginName(){return"DragDrop"}static get requires(){return[l_,N_,X_,oC]}init(){const t=this.editor,e=t.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,e.addObserver(HA),e.addObserver(Hh),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDraggableAttributeHandling(),this.listenTo(t,"change:isReadOnly",((t,e,n)=>{n?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})),this.on("change:isEnabled",((t,e,n)=>{n||this._finalizeDragging(!1)})),Xn.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 t=this.editor,e=t.model,n=t.editing.view,r=n.document,i=t.plugins.get(X_);this.listenTo(r,"dragstart",((t,n)=>{if(n.target&&n.target.is("editableElement"))return void n.preventDefault();if(this._prepareDraggedRange(n.target),!this._draggedRange)return void n.preventDefault();this._draggingUid=pr(),n.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",n.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const r=e.createSelection(this._draggedRange.toRange());this.editor.plugins.get("ClipboardPipeline")._fireOutputTransformationEvent(n.dataTransfer,r,"dragstart");const{dataTransfer:i,domTarget:o,domEvent:s}=n,{clientX:a}=s;this._updatePreview({dataTransfer:i,domTarget:o,clientX:a}),n.stopPropagation(),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(r,"dragend",((t,e)=>{this._finalizeDragging(!e.dataTransfer.isCanceled&&"move"==e.dataTransfer.dropEffect)}),{priority:"low"}),this._domEmitter.listenTo(Yn.document,"dragend",(()=>{this._blockMode=!1}),{useCapture:!0}),this.listenTo(r,"dragenter",(()=>{this.isEnabled&&n.focus()})),this.listenTo(r,"dragleave",(()=>{i.removeDropMarkerDelayed()})),this.listenTo(r,"dragging",((t,e)=>{if(!this.isEnabled)return void(e.dataTransfer.dropEffect="none");const{clientX:n,clientY:r}=e.domEvent;i.updateDropMarker(e.target,e.targetRanges,n,r,this._blockMode,this._draggedRange),this._draggedRange||(e.dataTransfer.dropEffect="copy"),Xn.isGecko||("copy"==e.dataTransfer.effectAllowed?e.dataTransfer.dropEffect="copy":["all","copyMove"].includes(e.dataTransfer.effectAllowed)&&(e.dataTransfer.dropEffect="move")),t.stop()}),{priority:"low"})}_setupClipboardInputIntegration(){const t=this.editor,e=t.editing.view.document,n=t.plugins.get(X_);this.listenTo(e,"clipboardInput",((e,r)=>{if("drop"!=r.method)return;const{clientX:i,clientY:o}=r.domEvent,s=n.getFinalDropRange(r.target,r.targetRanges,i,o,this._blockMode,this._draggedRange);if(!s)return this._finalizeDragging(!1),void e.stop();this._draggedRange&&this._draggingUid!=r.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==cC(r.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(s,!0))return this._finalizeDragging(!1),void e.stop();r.targetRanges=[t.editing.mapper.toViewRange(s)]}),{priority:"high"})}_setupContentInsertionIntegration(){const t=this.editor.plugins.get(l_);t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n=e.targetRanges.map((t=>this.editor.editing.mapper.toModelRange(t)));this.editor.model.change((t=>t.setSelection(n)))}),{priority:"high"}),t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n="move"==cC(e.dataTransfer),r=!e.resultRange||!e.resultRange.isCollapsed;this._finalizeDragging(r&&n)}),{priority:"lowest"})}_setupDraggableAttributeHandling(){const t=this.editor,e=t.editing.view,n=e.document;this.listenTo(n,"mousedown",((r,i)=>{if(Xn.isAndroid||!i)return;this._clearDraggableAttributesDelayed.cancel();let o=dC(i.target);if(Xn.isBlink&&!t.isReadOnly&&!o&&!n.selection.isCollapsed){const t=n.selection.getSelectedElement();t&&p_(t)||(o=n.selection.editableElement)}o&&(e.change((t=>{t.setAttribute("draggable","true",o)})),this._draggableElement=t.editing.mapper.toModelElement(o))})),this.listenTo(n,"mouseup",(()=>{Xn.isAndroid||this._clearDraggableAttributesDelayed()}))}_clearDraggableAttributes(){const t=this.editor.editing;t.view.change((e=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&e.removeAttribute("draggable",t.mapper.toViewElement(this._draggableElement)),this._draggableElement=null}))}_finalizeDragging(t){const e=this.editor,n=e.model;if(e.plugins.get(X_).removeDropMarker(),this._clearDraggableAttributes(),e.plugins.has("WidgetToolbarRepository")){e.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop")}this._draggingUid="",this._previewContainer&&(this._previewContainer.remove(),this._previewContainer=void 0),this._draggedRange&&(t&&this.isEnabled&&n.change((t=>{const e=n.createSelection(this._draggedRange);n.deleteContent(e,{doNotAutoparagraph:!0});const r=e.getFirstPosition().parent;r.isEmpty&&!n.schema.checkChild(r,"$text")&&n.schema.checkChild(r,"paragraph")&&t.insertElement("paragraph",r,0)})),this._draggedRange.detach(),this._draggedRange=null)}_prepareDraggedRange(t){const e=this.editor,n=e.model,r=n.document.selection,i=t?dC(t):null;if(i){const t=e.editing.mapper.toModelElement(i);if(this._draggedRange=uc.fromRange(n.createRangeOn(t)),this._blockMode=n.schema.isBlock(t),e.plugins.has("WidgetToolbarRepository")){e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}return}if(r.isCollapsed&&!r.getFirstPosition().parent.isEmpty)return;const o=Array.from(r.getSelectedBlocks()),s=r.getFirstRange();if(0==o.length)return void(this._draggedRange=uc.fromRange(s));const a=hC(n,o);if(o.length>1)this._draggedRange=uc.fromRange(a),this._blockMode=!0;else if(1==o.length){const t=s.start.isTouching(a.start)&&s.end.isTouching(a.end);this._draggedRange=uc.fromRange(t?a:s),this._blockMode=t}n.change((t=>t.setSelection(this._draggedRange.toRange())))}_updatePreview({dataTransfer:t,domTarget:e,clientX:n}){const r=this.editor.editing.view,i=r.document.selection.editableElement,o=r.domConverter.mapViewToDom(i),s=Yn.window.getComputedStyle(o);this._previewContainer?this._previewContainer.firstElementChild&&this._previewContainer.removeChild(this._previewContainer.firstElementChild):(this._previewContainer=Qr(Yn.document,"div",{style:"position: fixed; left: -999999px;"}),Yn.document.body.appendChild(this._previewContainer));const a=new fi(o);if(o.contains(e))return;const l=parseFloat(s.paddingLeft),c=Qr(Yn.document,"div");c.className="ck ck-content",c.style.width=s.width,c.style.paddingLeft=`${a.left-n+l}px`,Xn.isiOS&&(c.style.backgroundColor="white"),r.domConverter.setContentOf(c,t.getData("text/html")),t.setDragImage(c,0,0),this._previewContainer.appendChild(c)}}function cC(t){return Xn.isGecko?t.dropEffect:["all","copyMove"].includes(t.effectAllowed)?"move":"copy"}function dC(t){if(t.is("editableElement"))return null;if(t.hasClass("ck-widget__selection-handle"))return t.findAncestor(p_);if(p_(t))return t;const e=t.findAncestor((t=>p_(t)||t.is("editableElement")));return p_(e)?e:null}function hC(t,e){const n=e[0],r=e[e.length-1],i=n.getCommonAncestor(r),o=t.createPositionBefore(n),s=t.createPositionAfter(r);if(i&&i.is("element")&&!t.schema.isLimit(i)){const e=t.createRangeOn(i),n=o.isTouching(e.start),r=s.isTouching(e.end);if(n&&r)return hC(t,[i])}return t.createRange(o,s)}class uC extends Lo{static get pluginName(){return"PastePlainText"}static get requires(){return[l_]}init(){const t=this.editor,e=t.model,n=t.editing.view,r=e.document.selection;n.addObserver(HA),t.plugins.get(l_).on("contentInsertion",((t,n)=>{(function(t,e){let n=e.createRangeIn(t);if(1==t.childCount){const r=t.getChild(0);r.is("element")&&e.schema.isBlock(r)&&!e.schema.isObject(r)&&!e.schema.isLimit(r)&&(n=e.createRangeIn(r))}for(const t of n.getItems()){if(!e.schema.isInline(t))return!1;if(Array.from(t.getAttributeKeys()).find((t=>e.schema.getAttributeProperties(t).isFormatting)))return!1}return!0})(n.content,e)&&e.change((t=>{const i=Array.from(r.getAttributes()).filter((([t])=>e.schema.getAttributeProperties(t).isFormatting));r.isCollapsed||e.deleteContent(r,{doNotAutoparagraph:!0}),i.push(...r.getAttributes());const o=t.createRangeIn(n.content);for(const n of o.getItems())for(const r of i)e.schema.checkAttribute(n,r[0])&&t.setAttribute(r[0],r[1],n)}))}))}}class mC extends Lo{static get pluginName(){return"Clipboard"}static get requires(){return[a_,l_,lC,uC]}init(){const t=this.editor,e=this.editor.t;t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Copy selected content"),keystroke:"CTRL+C"},{label:e("Paste content"),keystroke:"CTRL+V"},{label:e("Paste content as plain text"),keystroke:"CTRL+SHIFT+V"}]})}}class gC extends Mo{_stack=[];_createdBatches=new WeakSet;constructor(t){super(t),this.refresh(),this._isEnabledBasedOnSelection=!1,this.listenTo(t.data,"set",((t,e)=>{e[1]={...e[1]};const n=e[1];n.batchType||(n.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(t.data,"set",((t,e)=>{e[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}get createdBatches(){return this._createdBatches}addBatch(t){const e=this.editor.model.document.selection,n={ranges:e.hasOwnRange?Array.from(e.getRanges()):[],isBackward:e.isBackward};this._stack.push({batch:t,selection:n}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(t,e,n){const r=this.editor.model,i=r.document,o=[],s=t.map((t=>t.getTransformedByOperations(n))),a=s.flat();for(const t of s){const e=t.filter((t=>t.root!=i.graveyard)).filter((t=>!fC(t,a)));e.length&&(pC(e),o.push(e[0]))}o.length&&r.change((t=>{t.setSelection(o,{backward:e})}))}_undo(t,e){const n=this.editor.model,r=n.document;this._createdBatches.add(e);const i=t.operations.slice().filter((t=>t.isDocumentOperation));i.reverse();for(const t of i){const i=t.baseVersion+1,o=Array.from(r.history.getOperations(i)),s=Gd([t.getReversed()],o,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(let i of s){const o=i.affectedSelectable;o&&!n.canEditAt(o)&&(i=new zd(i.baseVersion)),e.addOperation(i),n.applyOperation(i),r.history.setOperationAsUndone(t,i)}}}}function pC(t){t.sort(((t,e)=>t.start.isBefore(e.start)?-1:1));for(let e=1;ee!==t&&e.containsRange(t,!0)))}class bC extends gC{execute(t=null){const e=t?this._stack.findIndex((e=>e.batch==t)):this._stack.length-1,n=this._stack.splice(e,1)[0],r=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(r,(()=>{this._undo(n.batch,r);const t=this.editor.model.document.history.getOperations(n.batch.baseVersion);this._restoreSelection(n.selection.ranges,n.selection.isBackward,t)})),this.fire("revert",n.batch,r),this.refresh()}}class kC extends gC{execute(){const t=this._stack.pop(),e=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(e,(()=>{const n=t.batch.operations[t.batch.operations.length-1].baseVersion+1,r=this.editor.model.document.history.getOperations(n);this._restoreSelection(t.selection.ranges,t.selection.isBackward,r),this._undo(t.batch,e)})),this.refresh()}}class wC extends Lo{_undoCommand;_redoCommand;_batchRegistry=new WeakSet;static get pluginName(){return"UndoEditing"}init(){const t=this.editor,e=t.t;this._undoCommand=new bC(t),this._redoCommand=new kC(t),t.commands.add("undo",this._undoCommand),t.commands.add("redo",this._redoCommand),this.listenTo(t.model,"applyOperation",((t,e)=>{const n=e[0];if(!n.isDocumentOperation)return;const r=n.batch,i=this._redoCommand.createdBatches.has(r),o=this._undoCommand.createdBatches.has(r);this._batchRegistry.has(r)||(this._batchRegistry.add(r),r.isUndoable&&(i?this._undoCommand.addBatch(r):o||(this._undoCommand.addBatch(r),this._redoCommand.clearStack())))}),{priority:"highest"}),this.listenTo(this._undoCommand,"revert",((t,e,n)=>{this._redoCommand.addBatch(n)})),t.keystrokes.set("CTRL+Z","undo"),t.keystrokes.set("CTRL+Y","redo"),t.keystrokes.set("CTRL+SHIFT+Z","redo"),t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Undo"),keystroke:"CTRL+Z"},{label:e("Redo"),keystroke:[["CTRL+Y"],["CTRL+SHIFT+Z"]]}]})}}class AC extends Lo{static get pluginName(){return"UndoUI"}init(){const t=this.editor,e=t.locale,n=t.t,r="ltr"==e.uiLanguageDirection?zu.undo:zu.redo,i="ltr"==e.uiLanguageDirection?zu.redo:zu.undo;this._addButtonsToFactory("undo",n("Undo"),"CTRL+Z",r),this._addButtonsToFactory("redo",n("Redo"),"CTRL+Y",i)}_addButtonsToFactory(t,e,n,r){const i=this.editor;i.ui.componentFactory.add(t,(()=>{const i=this._createButton(wm,t,e,n,r);return i.set({tooltip:!0}),i})),i.ui.componentFactory.add("menuBar:"+t,(()=>this._createButton(Ym,t,e,n,r)))}_createButton(t,e,n,r,i){const o=this.editor,s=o.locale,a=o.commands.get(e),l=new t(s);return l.set({label:n,icon:i,keystroke:r}),l.bind("isEnabled").to(a,"isEnabled"),this.listenTo(l,"execute",(()=>{o.execute(e),o.editing.view.focus()})),l}}class _C extends Lo{static get requires(){return[wC,AC]}static get pluginName(){return"Undo"}}function CC(t){return t.createContainerElement("figure",{class:"image"},[t.createEmptyElement("img"),t.createSlot("children")])}function vC(t,e){const n=t.plugins.get("ImageUtils"),r=t.plugins.has("ImageInlineEditing")&&t.plugins.has("ImageBlockEditing");return t=>{if(!n.isInlineImageView(t))return null;if(!r)return i(t);return("block"==t.getStyle("display")||t.findAncestor(n.isBlockImageView)?"imageBlock":"imageInline")!==e?null:i(t)};function i(t){const e={name:!0};return t.hasAttribute("src")&&(e.attributes=["src"]),e}}function yC(t,e){const n=Eo(e.getSelectedBlocks());return!n||t.isObject(n)||n.isEmpty&&"listItem"!=n.name?"imageBlock":"imageInline"}function xC(t){return t&&t.endsWith("px")?parseInt(t):null}function EC(t){const e=xC(t.getStyle("width")),n=xC(t.getStyle("height"));return!(!e||!n)}const BC=/^(image|image-inline)$/;class DC extends Lo{_domEmitter=new(oi());static get pluginName(){return"ImageUtils"}isImage(t){return this.isInlineImage(t)||this.isBlockImage(t)}isInlineImageView(t){return!!t&&t.is("element","img")}isBlockImageView(t){return!!t&&t.is("element","figure")&&t.hasClass("image")}insertImage(t={},e=null,n=null,r={}){const i=this.editor,o=i.model,s=o.document.selection,a=SC(i,e||s,n);t={...Object.fromEntries(s.getAttributes()),...t};for(const e in t)o.schema.checkAttribute(a,e)||delete t[e];return o.change((n=>{const{setImageSizes:i=!0}=r,s=n.createElement(a,t);return o.insertObject(s,e,null,{setSelection:"on",findOptimalPosition:e||"imageInline"==a?void 0:"auto"}),s.parent?(i&&this.setImageNaturalSizeAttributes(s),s):null}))}setImageNaturalSizeAttributes(t){const e=t.getAttribute("src");e&&(t.getAttribute("width")||t.getAttribute("height")||this.editor.model.change((n=>{const r=new Yn.window.Image;this._domEmitter.listenTo(r,"load",(()=>{t.getAttribute("width")||t.getAttribute("height")||this.editor.model.enqueueChange(n.batch,(e=>{e.setAttribute("width",r.naturalWidth,t),e.setAttribute("height",r.naturalHeight,t)})),this._domEmitter.stopListening(r,"load")})),r.src=e})))}getClosestSelectedImageWidget(t){const e=t.getFirstPosition();if(!e)return null;const n=t.getSelectedElement();if(n&&this.isImageWidget(n))return n;let r=e.parent;for(;r;){if(r.is("element")&&this.isImageWidget(r))return r;r=r.parent}return null}getClosestSelectedImageElement(t){const e=t.getSelectedElement();return this.isImage(e)?e:t.getFirstPosition().findAncestor("imageBlock")}getImageWidgetFromImageView(t){return t.findAncestor({classes:BC})}isImageAllowed(){const t=this.editor.model.document.selection;return function(t,e){const n=SC(t,e,null);if("imageBlock"==n){const n=function(t,e){const n=__(t,e),r=n.start.parent;if(r.isEmpty&&!r.is("element","$root"))return r.parent;return r}(e,t.model);if(t.model.schema.checkChild(n,"imageBlock"))return!0}else if(t.model.schema.checkChild(e.focus,"imageInline"))return!0;return!1}(this.editor,t)&&function(t){return[...t.focus.getAncestors()].every((t=>!t.is("element","imageBlock")))}(t)}toImageWidget(t,e,n){e.setCustomProperty("image",!0,t);return f_(t,e,{label:()=>{const e=this.findViewImgElement(t).getAttribute("alt");return e?`${e} ${n}`:n}})}isImageWidget(t){return!!t.getCustomProperty("image")&&p_(t)}isBlockImage(t){return!!t&&t.is("element","imageBlock")}isInlineImage(t){return!!t&&t.is("element","imageInline")}findViewImgElement(t){if(this.isInlineImageView(t))return t;const e=this.editor.editing.view;for(const{item:n}of e.createRangeIn(t))if(this.isInlineImageView(n))return n}destroy(){return this._domEmitter.stopListening(),super.destroy()}}function SC(t,e,n){const r=t.model.schema,i=t.config.get("image.insert.type");return t.plugins.has("ImageBlockEditing")?t.plugins.has("ImageInlineEditing")?n||("inline"===i?"imageInline":"auto"!==i?"imageBlock":e.is("selection")?yC(r,e):r.checkChild(e,"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 TC extends Mo{refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled&&t.hasAttribute("alt")?this.value=t.getAttribute("alt"):this.value=!1}execute(t){const e=this.editor,n=e.plugins.get("ImageUtils"),r=e.model,i=n.getClosestSelectedImageElement(r.document.selection);r.change((e=>{e.setAttribute("alt",t.newValue,i)}))}}class IC extends Lo{static get requires(){return[DC]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new TC(this.editor))}}var PC=n(4062),VC={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(PC.A,VC);PC.A.locals;class FC extends lm{focusTracker;keystrokes;labeledInput;saveButtonView;cancelButtonView;_focusables;_focusCycler;constructor(t){super(t);const e=this.locale.t;this.focusTracker=new Bo,this.keystrokes=new Do,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(e("Save"),zu.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(e("Cancel"),zu.cancel,"ck-button-cancel","cancel"),this._focusables=new Mu,this._focusCycler=new ym({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),hm({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(t,e,n,r){const i=new wm(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),r&&i.delegate("execute").to(this,r),i}_createLabeledInputView(){const t=this.locale.t,e=new Sg(this.locale,Rp);return e.label=t("Text alternative"),e}}function RC(t){const e=t.editing.view,n=op.defaultPositions,r=t.plugins.get("ImageUtils");return{target:e.domConverter.mapViewToDom(r.getClosestSelectedImageWidget(e.document.selection)),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,n.viewportStickyNorth]}}class LC extends Lo{_balloon;_form;static get requires(){return[yb]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton()}destroy(){super.destroy(),this._form&&this._form.destroy()}_createButton(){const t=this.editor,e=t.t;t.ui.componentFactory.add("imageTextAlternative",(n=>{const r=t.commands.get("imageTextAlternative"),i=new wm(n);return i.set({label:e("Change image text alternative"),icon:zu.textAlternative,tooltip:!0}),i.bind("isEnabled").to(r,"isEnabled"),i.bind("isOn").to(r,"value",(t=>!!t)),this.listenTo(i,"execute",(()=>{this._showForm()})),i}))}_createForm(){const t=this.editor,e=t.editing.view.document,n=t.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(dm(FC))(t.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{t.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",((t,e)=>{this._hideForm(!0),e()})),this.listenTo(t.ui,"update",(()=>{n.getClosestSelectedImageWidget(e.selection)?this._isVisible&&function(t){const e=t.plugins.get("ContextualBalloon");if(t.plugins.get("ImageUtils").getClosestSelectedImageWidget(t.editing.view.document.selection)){const n=RC(t);e.updatePosition(n)}}(t):this._hideForm(!0)})),cm({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;this._form||this._createForm();const t=this.editor,e=t.commands.get("imageTextAlternative"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:RC(t)}),n.fieldView.value=n.fieldView.element.value=e.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(t=!1){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),t&&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 zC extends Lo{static get requires(){return[IC,LC]}static get pluginName(){return"ImageTextAlternative"}}function MC(t,e){const n=(e,n,r)=>{if(!r.consumable.consume(n.item,e.name))return;const i=r.writer,o=r.mapper.toViewElement(n.item),s=t.findViewImgElement(o);null===n.attributeNewValue?(i.removeAttribute("srcset",s),i.removeAttribute("sizes",s)):n.attributeNewValue&&(i.setAttribute("srcset",n.attributeNewValue,s),i.setAttribute("sizes","100vw",s))};return t=>{t.on(`attribute:srcset:${e}`,n)}}function NC(t,e,n){const r=(e,n,r)=>{if(!r.consumable.consume(n.item,e.name))return;const i=r.writer,o=r.mapper.toViewElement(n.item),s=t.findViewImgElement(o);i.setAttribute(n.attributeKey,n.attributeNewValue||"",s)};return t=>{t.on(`attribute:${n}:${e}`,r)}}class OC extends Xa{observe(t){this.listenTo(t,"load",((t,e)=>{const n=e.target;this.checkShouldIgnoreEventFromTarget(n)||"IMG"==n.tagName&&this._fireEvents(e)}),{useCapture:!0})}stopObserving(t){this.stopListening(t)}_fireEvents(t){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",t))}}class HC extends Mo{constructor(t){super(t);const e=t.config.get("image.insert.type");t.plugins.has("ImageBlockEditing")||"block"===e&&wr("image-block-plugin-required"),t.plugins.has("ImageInlineEditing")||"inline"===e&&wr("image-inline-plugin-required")}refresh(){const t=this.editor.plugins.get("ImageUtils");this.isEnabled=t.isImageAllowed()}execute(t){const e=eo(t.source),n=this.editor.model.document.selection,r=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((e,o)=>{const s=n.getSelectedElement();if("string"==typeof e&&(e={src:e}),o&&s&&r.isImage(s)){const n=this.editor.model.createPositionAfter(s);r.insertImage({...e,...i},n,t.imageType)}else r.insertImage({...e,...i},null,t.imageType)}))}}class jC extends Mo{constructor(t){super(t),this.decorate("cleanupImage")}refresh(){const t=this.editor.plugins.get("ImageUtils"),e=this.editor.model.document.selection.getSelectedElement();this.isEnabled=t.isImage(e),this.value=this.isEnabled?e.getAttribute("src"):null}execute(t){const e=this.editor.model.document.selection.getSelectedElement(),n=this.editor.plugins.get("ImageUtils");this.editor.model.change((r=>{r.setAttribute("src",t.source,e),this.cleanupImage(r,e),n.setImageNaturalSizeAttributes(e)}))}cleanupImage(t,e){t.removeAttribute("srcset",e),t.removeAttribute("sizes",e),t.removeAttribute("sources",e),t.removeAttribute("width",e),t.removeAttribute("height",e),t.removeAttribute("alt",e)}}class qC extends Lo{static get requires(){return[DC]}static get pluginName(){return"ImageEditing"}init(){const t=this.editor,e=t.conversion;t.editing.view.addObserver(OC),e.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:"srcset"});const n=new HC(t),r=new jC(t);t.commands.add("insertImage",n),t.commands.add("replaceImageSource",r),t.commands.add("imageInsert",n)}}class UC extends Lo{static get requires(){return[DC]}static get pluginName(){return"ImageSizeAttributes"}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(t){const e=this.editor,n=e.plugins.get("ImageUtils"),r="imageBlock"===t?"figure":"img";function i(e,r,i,o){e.on(`attribute:${r}:${t}`,((e,r,s)=>{if(!s.consumable.consume(r.item,e.name))return;const a=s.writer,l=s.mapper.toViewElement(r.item),c=n.findViewImgElement(l);if(null!==r.attributeNewValue?a.setAttribute(i,r.attributeNewValue,c):a.removeAttribute(i,c),r.item.hasAttribute("sources"))return;const d=r.item.hasAttribute("resizedWidth");if("imageInline"===t&&!d&&!o)return;const h=r.item.getAttribute("width"),u=r.item.getAttribute("height");h&&u&&a.setStyle("aspect-ratio",`${h}/${u}`,c)}))}e.conversion.for("upcast").attributeToAttribute({view:{name:r,styles:{width:/.+/}},model:{key:"width",value:t=>EC(t)?xC(t.getStyle("width")):null}}).attributeToAttribute({view:{name:r,key:"width"},model:"width"}).attributeToAttribute({view:{name:r,styles:{height:/.+/}},model:{key:"height",value:t=>EC(t)?xC(t.getStyle("height")):null}}).attributeToAttribute({view:{name:r,key:"height"},model:"height"}),e.conversion.for("editingDowncast").add((t=>{i(t,"width","width",!0),i(t,"height","height",!0)})),e.conversion.for("dataDowncast").add((t=>{i(t,"width","width",!1),i(t,"height","height",!1)}))}}class WC extends Mo{_modelElementName;constructor(t,e){super(t),this._modelElementName=e}refresh(){const t=this.editor.plugins.get("ImageUtils"),e=t.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=t.isInlineImage(e):this.isEnabled=t.isBlockImage(e)}execute(t={}){const e=this.editor,n=this.editor.model,r=e.plugins.get("ImageUtils"),i=r.getClosestSelectedImageElement(n.document.selection),o=Object.fromEntries(i.getAttributes());return o.src||o.uploadId?n.change((e=>{const{setImageSizes:s=!0}=t,a=Array.from(n.markers).filter((t=>t.getRange().containsItem(i))),l=r.insertImage(o,n.createSelection(i,"on"),this._modelElementName,{setImageSizes:s});if(!l)return null;const c=e.createRangeOn(l);for(const t of a){const n=t.getRange(),r="$graveyard"!=n.root.rootName?n.getJoined(c,!0):c;e.updateMarker(t,{range:r})}return{oldElement:i,newElement:l}})):null}}var $C=n(7378),GC={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()($C.A,GC);$C.A.locals;class KC extends Lo{static get requires(){return[DC]}static get pluginName(){return"ImagePlaceholder"}afterInit(){this._setupSchema(),this._setupConversion(),this._setupLoadListener()}_setupSchema(){const t=this.editor.model.schema;t.isRegistered("imageBlock")&&t.extend("imageBlock",{allowAttributes:["placeholder"]}),t.isRegistered("imageInline")&&t.extend("imageInline",{allowAttributes:["placeholder"]})}_setupConversion(){const t=this.editor,e=t.conversion,n=t.plugins.get("ImageUtils");e.for("editingDowncast").add((t=>{t.on("attribute:placeholder",((t,e,r)=>{if(!r.consumable.test(e.item,t.name))return;if(!e.item.is("element","imageBlock")&&!e.item.is("element","imageInline"))return;r.consumable.consume(e.item,t.name);const i=r.writer,o=r.mapper.toViewElement(e.item),s=n.findViewImgElement(o);e.attributeNewValue?(i.addClass("image_placeholder",s),i.setStyle("background-image",`url(${e.attributeNewValue})`,s),i.setCustomProperty("editingPipeline:doNotReuseOnce",!0,s)):(i.removeClass("image_placeholder",s),i.removeStyle("background-image",s))}))}))}_setupLoadListener(){const t=this.editor,e=t.model,n=t.editing,r=n.view,i=t.plugins.get("ImageUtils");r.addObserver(OC),this.listenTo(r.document,"imageLoaded",((t,o)=>{const s=r.domConverter.mapDomToView(o.target);if(!s)return;const a=i.getImageWidgetFromImageView(s);if(!a)return;const l=n.mapper.toModelElement(a);l&&l.hasAttribute("placeholder")&&e.enqueueChange({isUndoable:!1},(t=>{t.removeAttribute("placeholder",l)}))}))}}class ZC extends Lo{static get requires(){return[qC,UC,DC,KC,l_]}static get pluginName(){return"ImageBlockEditing"}init(){const t=this.editor;t.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),t.plugins.has("ImageInlineEditing")&&(t.commands.add("imageTypeBlock",new WC(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,r=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:e})=>CC(e)}),n.for("editingDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:n})=>r.toImageWidget(CC(n),n,e("image widget"))}),n.for("downcast").add(NC(r,"imageBlock","src")).add(NC(r,"imageBlock","alt")).add(MC(r,"imageBlock")),n.for("upcast").elementToElement({view:vC(t,"imageBlock"),model:(t,{writer:e})=>e.createElement("imageBlock",t.hasAttribute("src")?{src:t.getAttribute("src")}:void 0)}).add(function(t){const e=(e,n,r)=>{if(!r.consumable.test(n.viewItem,{name:!0,classes:"image"}))return;const i=t.findViewImgElement(n.viewItem);if(!i||!r.consumable.test(i,{name:!0}))return;r.consumable.consume(n.viewItem,{name:!0,classes:"image"});const o=Eo(r.convertItem(i,n.modelCursor).modelRange.getItems());o?(r.convertChildren(n.viewItem,o),r.updateConversionResult(o,n)):r.consumable.revert(n.viewItem,{name:!0,classes:"image"})};return t=>{t.on("element:figure",e)}}(r))}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,r=t.plugins.get("ImageUtils"),i=t.plugins.get("ClipboardPipeline");this.listenTo(i,"inputTransformation",((i,o)=>{const s=Array.from(o.content.getChildren());let a;if(!s.every(r.isInlineImageView))return;a=o.targetRanges?t.editing.mapper.toModelRange(o.targetRanges[0]):e.document.selection.getFirstRange();const l=e.createSelection(a);if("imageBlock"===yC(e.schema,l)){const t=new jh(n.document),e=s.map((e=>t.createElement("figure",{class:"image"},e)));o.content=t.createDocumentFragment(e)}})),this.listenTo(i,"contentInsertion",((t,n)=>{"paste"===n.method&&e.change((t=>{const e=t.createRangeIn(n.content);for(const t of e.getItems())t.is("element","imageBlock")&&r.setImageNaturalSizeAttributes(t)}))}))}}var YC=n(3350),JC={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(YC.A,JC);YC.A.locals;class QC extends lm{focusTracker;keystrokes;_focusables;_focusCycler;children;constructor(t,e=[]){super(t),this.focusTracker=new Bo,this.keystrokes=new Do,this._focusables=new Mu,this.children=this.createCollection(),this._focusCycler=new ym({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});for(const t of e)this.children.add(t),this._focusables.add(t),t instanceof mg&&this._focusables.addMany(t.children);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:-1},children:this.children})}render(){super.render(),hm({view:this});for(const t of this._focusables)this.focusTracker.add(t.element);this.keystrokes.listenTo(this.element);const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}}class XC extends Lo{static get pluginName(){return"ImageInsertUI"}static get requires(){return[DC]}dropdownView;_integrations=new Map;constructor(t){super(t),t.config.define("image.insert.integrations",["upload","assetManager","url"])}init(){const t=this.editor,e=t.model.document.selection,n=t.plugins.get("ImageUtils");this.set("isImageSelected",!1),this.listenTo(t.model.document,"change",(()=>{this.isImageSelected=n.isImage(e.getSelectedElement())}));const r=t=>this._createToolbarComponent(t);t.ui.componentFactory.add("insertImage",r),t.ui.componentFactory.add("imageInsert",r),t.ui.componentFactory.add("menuBar:insertImage",(t=>this._createMenuBarComponent(t)))}registerIntegration({name:t,observable:e,buttonViewCreator:n,formViewCreator:r,menuBarButtonViewCreator:i,requiresForm:o=!1}){this._integrations.has(t)&&wr("image-insert-integration-exists",{name:t}),this._integrations.set(t,{observable:e,buttonViewCreator:n,menuBarButtonViewCreator:i,formViewCreator:r,requiresForm:o})}_createToolbarComponent(t){const e=this.editor,n=t.t,r=this._prepareIntegrations();if(!r.length)return null;let i;const o=r[0];if(1==r.length){if(!o.requiresForm)return o.buttonViewCreator(!0);i=o.buttonViewCreator(!0)}else{const e=o.buttonViewCreator(!1);i=new vp(t,e),i.tooltip=!0,i.bind("label").to(this,"isImageSelected",(t=>n(t?"Replace image":"Insert image")))}const s=this.dropdownView=Dp(t,i),a=r.map((({observable:t})=>"function"==typeof t?t():t));return s.bind("isEnabled").toMany(a,"isEnabled",((...t)=>t.some((t=>t)))),s.once("change:isOpen",(()=>{const t=r.map((({formViewCreator:t})=>t(1==r.length))),n=new QC(e.locale,t);s.panelView.children.add(n)})),s}_createMenuBarComponent(t){const e=t.t,n=this._prepareIntegrations();if(!n.length)return null;let r;const i=n[0];if(1==n.length)r=i.menuBarButtonViewCreator(!0);else{r=new ik(t);const i=new ok(t);r.panelView.children.add(i),r.buttonView.set({icon:zu.image,label:e("Image")});for(const e of n){const n=new Kf(t,r),o=e.menuBarButtonViewCreator(!1);n.children.add(o),i.items.add(n)}}return r}_prepareIntegrations(){const t=this.editor.config.get("image.insert.integrations"),e=[];if(!t.length)return wr("image-insert-integrations-not-specified"),e;for(const n of t)this._integrations.has(n)?e.push(this._integrations.get(n)):["upload","assetManager","url"].includes(n)||wr("image-insert-unknown-integration",{item:n});return e.length||wr("image-insert-integrations-not-registered"),e}}var tv=n(265),ev={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(tv.A,ev);tv.A.locals;class nv extends Lo{static get requires(){return[ZC,N_,zC,XC]}static get pluginName(){return"ImageBlock"}}class rv extends Lo{static get requires(){return[qC,UC,DC,KC,l_]}static get pluginName(){return"ImageInlineEditing"}init(){const t=this.editor;t.model.schema.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"],disallowIn:["caption"]}),this._setupConversion(),t.plugins.has("ImageBlockEditing")&&(t.commands.add("imageTypeInline",new WC(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,r=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToElement({model:"imageInline",view:(t,{writer:e})=>e.createEmptyElement("img")}),n.for("editingDowncast").elementToStructure({model:"imageInline",view:(t,{writer:n})=>r.toImageWidget(function(t){return t.createContainerElement("span",{class:"image-inline"},t.createEmptyElement("img"))}(n),n,e("image widget"))}),n.for("downcast").add(NC(r,"imageInline","src")).add(NC(r,"imageInline","alt")).add(MC(r,"imageInline")),n.for("upcast").elementToElement({view:vC(t,"imageInline"),model:(t,{writer:e})=>e.createElement("imageInline",t.hasAttribute("src")?{src:t.getAttribute("src")}:void 0)})}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,r=t.plugins.get("ImageUtils"),i=t.plugins.get("ClipboardPipeline");this.listenTo(i,"inputTransformation",((i,o)=>{const s=Array.from(o.content.getChildren());let a;if(!s.every(r.isBlockImageView))return;a=o.targetRanges?t.editing.mapper.toModelRange(o.targetRanges[0]):e.document.selection.getFirstRange();const l=e.createSelection(a);if("imageInline"===yC(e.schema,l)){const t=new jh(n.document),e=s.map((e=>1===e.childCount?(Array.from(e.getAttributes()).forEach((n=>t.setAttribute(...n,r.findViewImgElement(e)))),e.getChild(0)):e));o.content=t.createDocumentFragment(e)}})),this.listenTo(i,"contentInsertion",((t,n)=>{"paste"===n.method&&e.change((t=>{const e=t.createRangeIn(n.content);for(const t of e.getItems())t.is("element","imageInline")&&r.setImageNaturalSizeAttributes(t)}))}))}}class iv extends Lo{static get requires(){return[rv,N_,zC,XC]}static get pluginName(){return"ImageInline"}}class ov extends Lo{static get pluginName(){return"ImageCaptionUtils"}static get requires(){return[DC]}getCaptionFromImageModelElement(t){for(const e of t.getChildren())if(e&&e.is("element","caption"))return e;return null}getCaptionFromModelSelection(t){const e=this.editor.plugins.get("ImageUtils"),n=t.getFirstPosition().findAncestor("caption");return n&&e.isBlockImage(n.parent)?n:null}matchImageCaptionViewElement(t){const e=this.editor.plugins.get("ImageUtils");return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}}class sv extends Mo{refresh(){const t=this.editor,e=t.plugins.get("ImageCaptionUtils"),n=t.plugins.get("ImageUtils");if(!t.plugins.has(ZC))return this.isEnabled=!1,void(this.value=!1);const r=t.model.document.selection,i=r.getSelectedElement();if(!i){const t=e.getCaptionFromModelSelection(r);return this.isEnabled=!!t,void(this.value=!!t)}this.isEnabled=n.isImage(i),this.isEnabled?this.value=!!e.getCaptionFromImageModelElement(i):this.value=!1}execute(t={}){const{focusCaptionOnShow:e}=t;this.editor.model.change((t=>{this.value?this._hideImageCaption(t):this._showImageCaption(t,e)}))}_showImageCaption(t,e){const n=this.editor.model.document.selection,r=this.editor.plugins.get("ImageCaptionEditing"),i=this.editor.plugins.get("ImageUtils");let o=n.getSelectedElement();const s=r._getSavedCaption(o);i.isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=n.getSelectedElement());const a=s||t.createElement("caption");t.append(a,o),e&&t.setSelection(a,"in")}_hideImageCaption(t){const e=this.editor,n=e.model.document.selection,r=e.plugins.get("ImageCaptionEditing"),i=e.plugins.get("ImageCaptionUtils");let o,s=n.getSelectedElement();s?o=i.getCaptionFromImageModelElement(s):(o=i.getCaptionFromModelSelection(n),s=o.parent),r._saveCaption(s,o),t.setSelection(s,"on"),t.remove(o)}}class av extends Lo{static get requires(){return[DC,ov]}static get pluginName(){return"ImageCaptionEditing"}_savedCaptionsMap;constructor(t){super(t),this._savedCaptionsMap=new WeakMap}init(){const t=this.editor,e=t.model.schema;e.isRegistered("caption")?e.extend("caption",{allowIn:"imageBlock"}):e.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),t.commands.add("toggleImageCaption",new sv(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageUtils"),r=t.plugins.get("ImageCaptionUtils"),i=t.t;t.conversion.for("upcast").elementToElement({view:t=>r.matchImageCaptionViewElement(t),model:"caption"}),t.conversion.for("dataDowncast").elementToElement({model:"caption",view:(t,{writer:e})=>n.isBlockImage(t.parent)?e.createContainerElement("figcaption"):null}),t.conversion.for("editingDowncast").elementToElement({model:"caption",view:(t,{writer:r})=>{if(!n.isBlockImage(t.parent))return null;const o=r.createEditableElement("figcaption");r.setCustomProperty("imageCaption",!0,o),o.placeholder=i("Enter image caption"),Jo({view:e,element:o,keepOnFocus:!0});const s=t.parent.getAttribute("alt");return A_(o,r,{label:s?i("Caption for image: %0",[s]):i("Caption for the image")})}})}_setupImageTypeCommandsIntegration(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.plugins.get("ImageCaptionUtils"),r=t.commands.get("imageTypeInline"),i=t.commands.get("imageTypeBlock"),o=t=>{if(!t.return)return;const{oldElement:r,newElement:i}=t.return;if(!r)return;if(e.isBlockImage(r)){const t=n.getCaptionFromImageModelElement(r);if(t)return void this._saveCaption(i,t)}const o=this._getSavedCaption(r);o&&this._saveCaption(i,o)};r&&this.listenTo(r,"execute",o,{priority:"low"}),i&&this.listenTo(i,"execute",o,{priority:"low"})}_getSavedCaption(t){const e=this._savedCaptionsMap.get(t);return e?ql.fromJSON(e):null}_saveCaption(t,e){this._savedCaptionsMap.set(t,e.toJSON())}_registerCaptionReconversion(){const t=this.editor,e=t.model,n=t.plugins.get("ImageUtils"),r=t.plugins.get("ImageCaptionUtils");e.document.on("change:data",(()=>{const i=e.document.differ.getChanges();for(const e of i){if("alt"!==e.attributeKey)continue;const i=e.range.start.nodeAfter;if(n.isBlockImage(i)){const e=r.getCaptionFromImageModelElement(i);if(!e)return;t.editing.reconvertItem(e)}}}))}}class lv extends Lo{static get requires(){return[ov]}static get pluginName(){return"ImageCaptionUI"}init(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageCaptionUtils"),r=t.t;t.ui.componentFactory.add("toggleImageCaption",(i=>{const o=t.commands.get("toggleImageCaption"),s=new wm(i);return s.set({icon:zu.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(o,"value","isEnabled"),s.bind("label").to(o,"value",(t=>r(t?"Toggle caption off":"Toggle caption on"))),this.listenTo(s,"execute",(()=>{t.execute("toggleImageCaption",{focusCaptionOnShow:!0});const r=n.getCaptionFromModelSelection(t.model.document.selection);if(r){const n=t.editing.mapper.toViewElement(r);e.scrollToTheSelection(),e.change((t=>{t.addClass("image__caption_highlighted",n)}))}t.editing.view.focus()})),s}))}}var cv=n(5247),dv={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(cv.A,dv);cv.A.locals;function hv(t){const e=t.map((t=>t.replace("+","\\+")));return new RegExp(`^image\\/(${e.join("|")})$`)}function uv(t){return new Promise(((e,n)=>{const r=t.getAttribute("src");fetch(r).then((t=>t.blob())).then((t=>{const n=mv(t,r),i=n.replace("image/",""),o=new File([t],`image.${i}`,{type:n});e(o)})).catch((t=>t&&"TypeError"===t.name?function(t){return function(t){return new Promise(((e,n)=>{const r=Yn.document.createElement("img");r.addEventListener("load",(()=>{const t=Yn.document.createElement("canvas");t.width=r.width,t.height=r.height;t.getContext("2d").drawImage(r,0,0),t.toBlob((t=>t?e(t):n()))})),r.addEventListener("error",(()=>n())),r.src=t}))}(t).then((e=>{const n=mv(e,t),r=n.replace("image/","");return new File([e],`image.${r}`,{type:n})}))}(r).then(e).catch(n):n(t)))}))}function mv(t,e){return t.type?t.type:e.match(/data:(image\/\w+);base64/)?e.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class gv extends Lo{static get pluginName(){return"ImageUploadUI"}init(){const t=this.editor;t.ui.componentFactory.add("uploadImage",(()=>this._createToolbarButton())),t.ui.componentFactory.add("imageUpload",(()=>this._createToolbarButton())),t.ui.componentFactory.add("menuBar:uploadImage",(()=>this._createMenuBarButton("standalone"))),t.plugins.has("ImageInsertUI")&&t.plugins.get("ImageInsertUI").registerIntegration({name:"upload",observable:()=>t.commands.get("uploadImage"),buttonViewCreator:()=>this._createToolbarButton(),formViewCreator:()=>this._createDropdownButton(),menuBarButtonViewCreator:t=>this._createMenuBarButton(t?"insertOnly":"insertNested")})}_createButton(t){const e=this.editor,n=e.locale,r=e.commands.get("uploadImage"),i=e.config.get("image.upload.types"),o=hv(i),s=new t(e.locale),a=n.t;return s.set({acceptedType:i.map((t=>`image/${t}`)).join(","),allowMultipleFiles:!0,label:a("Upload from computer"),icon:zu.imageUpload}),s.bind("isEnabled").to(r),s.on("done",((t,n)=>{const r=Array.from(n).filter((t=>o.test(t.type)));r.length&&(e.execute("uploadImage",{file:r}),e.editing.view.focus())})),s}_createToolbarButton(){const t=this.editor.locale.t,e=this.editor.plugins.get("ImageInsertUI"),n=this.editor.commands.get("uploadImage"),r=this._createButton(sg);return r.tooltip=!0,r.bind("label").to(e,"isImageSelected",n,"isAccessAllowed",((e,n)=>t(n?e?"Replace image from computer":"Upload image from computer":"You have no image upload permissions."))),r}_createDropdownButton(){const t=this.editor.locale.t,e=this.editor.plugins.get("ImageInsertUI"),n=this._createButton(sg);return n.withText=!0,n.bind("label").to(e,"isImageSelected",(e=>t(e?"Replace from computer":"Upload from computer"))),n.on("execute",(()=>{e.dropdownView.isOpen=!1})),n}_createMenuBarButton(t){const e=this.editor.locale.t,n=this._createButton(ak);switch(n.withText=!0,t){case"standalone":n.label=e("Image from computer");break;case"insertOnly":n.label=e("Image");break;case"insertNested":n.label=e("From computer")}return n}}var pv=n(2267),fv={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(pv.A,fv);pv.A.locals;var bv=n(7693),kv={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(bv.A,kv);bv.A.locals;var wv=n(1559),Av={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(wv.A,Av);wv.A.locals;class _v extends Lo{static get pluginName(){return"ImageUploadProgress"}placeholder;constructor(t){super(t),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const t=this.editor;t.plugins.has("ImageBlockEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",this.uploadStatusChange),t.plugins.has("ImageInlineEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",this.uploadStatusChange)}uploadStatusChange=(t,e,n)=>{const r=this.editor,i=e.item,o=i.getAttribute("uploadId");if(!n.consumable.consume(e.item,t.name))return;const s=r.plugins.get("ImageUtils"),a=r.plugins.get(Mk),l=o?e.attributeNewValue:null,c=this.placeholder,d=r.editing.mapper.toViewElement(i),h=n.writer;if("reading"==l)return Cv(d,h),void vv(s,c,d,h);if("uploading"==l){const t=a.loaders.get(o);return Cv(d,h),void(t?(yv(d,h),function(t,e,n,r){const i=function(t){const e=t.createUIElement("div",{class:"ck-progress-bar"});return t.setCustomProperty("progressBar",!0,e),e}(e);e.insert(e.createPositionAt(t,"end"),i),n.on("change:uploadedPercent",((t,e,n)=>{r.change((t=>{t.setStyle("width",n+"%",i)}))}))}(d,h,t,r.editing.view),function(t,e,n,r){if(r.data){const i=t.findViewImgElement(e);n.setAttribute("src",r.data,i)}}(s,d,h,t)):vv(s,c,d,h))}"complete"==l&&a.loaders.get(o)&&function(t,e,n){const r=e.createUIElement("div",{class:"ck-image-upload-complete-icon"});e.insert(e.createPositionAt(t,"end"),r),setTimeout((()=>{n.change((t=>t.remove(t.createRangeOn(r))))}),3e3)}(d,h,r.editing.view),function(t,e){Ev(t,e,"progressBar")}(d,h),yv(d,h),function(t,e){e.removeClass("ck-appear",t)}(d,h)}}function Cv(t,e){t.hasClass("ck-appear")||e.addClass("ck-appear",t)}function vv(t,e,n,r){n.hasClass("ck-image-upload-placeholder")||r.addClass("ck-image-upload-placeholder",n);const i=t.findViewImgElement(n);i.getAttribute("src")!==e&&r.setAttribute("src",e,i),xv(n,"placeholder")||r.insert(r.createPositionAfter(i),function(t){const e=t.createUIElement("div",{class:"ck-upload-placeholder-loader"});return t.setCustomProperty("placeholder",!0,e),e}(r))}function yv(t,e){t.hasClass("ck-image-upload-placeholder")&&e.removeClass("ck-image-upload-placeholder",t),Ev(t,e,"placeholder")}function xv(t,e){for(const n of t.getChildren())if(n.getCustomProperty(e))return n}function Ev(t,e,n){const r=xv(t,n);r&&e.remove(e.createRangeOn(r))}class Bv extends Mo{constructor(t){super(t),this.set("isAccessAllowed",!0)}refresh(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.model.document.selection.getSelectedElement();this.isEnabled=e.isImageAllowed()||e.isImage(n)}execute(t){const e=eo(t.file),n=this.editor.model.document.selection,r=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((t,e)=>{const o=n.getSelectedElement();if(e&&o&&r.isImage(o)){const e=this.editor.model.createPositionAfter(o);this._uploadImage(t,i,e)}else this._uploadImage(t,i)}))}_uploadImage(t,e,n){const r=this.editor,i=r.plugins.get(Mk).createLoader(t),o=r.plugins.get("ImageUtils");i&&o.insertImage({...e,uploadId:i.id},n)}}class Dv extends Lo{static get requires(){return[Mk,bb,l_,DC]}static get pluginName(){return"ImageUploadEditing"}_uploadImageElements;constructor(t){super(t),t.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const t=this.editor,e=t.model.document,n=t.conversion,r=t.plugins.get(Mk),i=t.plugins.get("ImageUtils"),o=t.plugins.get("ClipboardPipeline"),s=hv(t.config.get("image.upload.types")),a=new Bv(t);t.commands.add("uploadImage",a),t.commands.add("imageUpload",a),n.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(t.editing.view.document,"clipboardInput",((e,n)=>{if(r=n.dataTransfer,Array.from(r.types).includes("text/html")&&""!==r.getData("text/html"))return;var r;const i=Array.from(n.dataTransfer.files).filter((t=>!!t&&s.test(t.type)));if(!i.length)return;e.stop(),t.model.change((e=>{n.targetRanges&&e.setSelection(n.targetRanges.map((e=>t.editing.mapper.toModelRange(e)))),t.execute("uploadImage",{file:i})}));if(!t.commands.get("uploadImage").isAccessAllowed){const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("You have no image upload permissions."),{namespace:"image"})}})),this.listenTo(o,"inputTransformation",((e,n)=>{const o=Array.from(t.editing.view.createRangeIn(n.content)).map((t=>t.item)).filter((t=>function(t,e){return!(!t.isInlineImageView(e)||!e.getAttribute("src")||!e.getAttribute("src").match(/^data:image\/\w+;base64,/g)&&!e.getAttribute("src").match(/^blob:/g))}(i,t)&&!t.getAttribute("uploadProcessed"))).map((t=>({promise:uv(t),imageElement:t})));if(!o.length)return;const s=new jh(t.editing.view.document);for(const t of o){s.setAttribute("uploadProcessed",!0,t.imageElement);const e=r.createLoader(t.promise);e&&(s.setAttribute("src","",t.imageElement),s.setAttribute("uploadId",e.id,t.imageElement))}})),t.editing.view.document.on("dragover",((t,e)=>{e.preventDefault()})),e.on("change",(()=>{const n=e.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),i=new Set;for(const e of n)if("insert"==e.type&&"$text"!=e.name){const n=e.position.nodeAfter,o="$graveyard"==e.position.root.rootName;for(const e of Sv(t,n)){const t=e.getAttribute("uploadId");if(!t)continue;const n=r.loaders.get(t);n&&(o?i.has(t)||n.abort():(i.add(t),this._uploadImageElements.set(t,e),"idle"==n.status&&this._readAndUpload(n)))}}})),this.on("uploadComplete",((t,{imageElement:e,data:n})=>{const r=n.urls?n.urls:n;this.editor.model.change((t=>{t.setAttribute("src",r.default,e),this._parseAndSetSrcsetAttributeOnImage(r,e,t),i.setImageNaturalSizeAttributes(e)}))}),{priority:"low"})}afterInit(){const t=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&t.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(t){const e=this.editor,n=e.model,r=e.locale.t,i=e.plugins.get(Mk),o=e.plugins.get(bb),s=e.plugins.get("ImageUtils"),a=this._uploadImageElements;return n.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","reading",a.get(t.id))})),t.read().then((()=>{const i=t.upload(),o=a.get(t.id);if(Xn.isSafari){const t=e.editing.mapper.toViewElement(o),n=s.findViewImgElement(t);e.editing.view.once("render",(()=>{if(!n.parent)return;const t=e.editing.view.domConverter.mapViewToDom(n.parent);if(!t)return;const r=t.style.display;t.style.display="none",t._ckHack=t.offsetHeight,t.style.display=r}))}return e.ui&&e.ui.ariaLiveAnnouncer.announce(r("Uploading image")),n.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("uploadStatus","uploading",o)})),i})).then((i=>{n.enqueueChange({isUndoable:!1},(n=>{const o=a.get(t.id);n.setAttribute("uploadStatus","complete",o),e.ui&&e.ui.ariaLiveAnnouncer.announce(r("Image upload complete")),this.fire("uploadComplete",{data:i,imageElement:o})})),l()})).catch((i=>{if(e.ui&&e.ui.ariaLiveAnnouncer.announce(r("Error during image upload")),"error"!==t.status&&"aborted"!==t.status)throw i;"error"==t.status&&i&&o.showWarning(i,{title:r("Upload failed"),namespace:"upload"}),n.enqueueChange({isUndoable:!1},(e=>{e.remove(a.get(t.id))})),l()}));function l(){n.enqueueChange({isUndoable:!1},(e=>{const n=a.get(t.id);e.removeAttribute("uploadId",n),e.removeAttribute("uploadStatus",n),a.delete(t.id)})),i.destroyLoader(t)}}_parseAndSetSrcsetAttributeOnImage(t,e,n){let r=0;const i=Object.keys(t).filter((t=>{const e=parseInt(t,10);if(!isNaN(e))return r=Math.max(r,e),!0})).map((e=>`${t[e]} ${e}w`)).join(", ");if(""!=i){const t={srcset:i};e.hasAttribute("width")||e.hasAttribute("height")||(t.width=r),n.setAttributes(t,e)}}}function Sv(t,e){const n=t.plugins.get("ImageUtils");return Array.from(t.model.createRangeOn(e)).filter((t=>n.isImage(t.item))).map((t=>t.item))}const Tv=function(t,e){return function(n,r){if(null==n)return n;if(!Be(n))return t(n,r);for(var i=n.length,o=e?i:-1,s=Object(n);(e?o--:++o{e.setAttribute("resizedWidth",t.width,i),e.removeAttribute("resizedHeight",i),r.setImageNaturalSizeAttributes(i)}))}}class Fv extends Lo{static get requires(){return[DC]}static get pluginName(){return"ImageResizeEditing"}constructor(t){super(t),t.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 t=this.editor,e=new Vv(t);this._registerConverters("imageBlock"),this._registerConverters("imageInline"),t.commands.add("resizeImage",e),t.commands.add("imageResize",e)}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(t){const e=this.editor,n=e.plugins.get("ImageUtils");e.conversion.for("downcast").add((e=>e.on(`attribute:resizedWidth:${t}`,((t,e,n)=>{if(!n.consumable.consume(e.item,t.name))return;const r=n.writer,i=n.mapper.toViewElement(e.item);null!==e.attributeNewValue?(r.setStyle("width",e.attributeNewValue,i),r.addClass("image_resized",i)):(r.removeStyle("width",i),r.removeClass("image_resized",i))})))),e.conversion.for("dataDowncast").attributeToAttribute({model:{name:t,key:"resizedHeight"},view:t=>({key:"style",value:{height:t}})}),e.conversion.for("editingDowncast").add((e=>e.on(`attribute:resizedHeight:${t}`,((e,r,i)=>{if(!i.consumable.consume(r.item,e.name))return;const o=i.writer,s=i.mapper.toViewElement(r.item),a="imageInline"===t?n.findViewImgElement(s):s;null!==r.attributeNewValue?o.setStyle("height",r.attributeNewValue,a):o.removeStyle("height",a)})))),e.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===t?"figure":"img",styles:{width:/.+/}},model:{key:"resizedWidth",value:t=>EC(t)?null:t.getStyle("width")}}),e.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===t?"figure":"img",styles:{height:/.+/}},model:{key:"resizedHeight",value:t=>EC(t)?null:t.getStyle("height")}})}}const Rv=(()=>({small:zu.objectSizeSmall,medium:zu.objectSizeMedium,large:zu.objectSizeLarge,custom:zu.objectSizeCustom,original:zu.objectSizeFull}))();class Lv extends Lo{static get requires(){return[Fv]}static get pluginName(){return"ImageResizeButtons"}_resizeUnit;constructor(t){super(t),this._resizeUnit=t.config.get("image.resizeUnit")}init(){const t=this.editor,e=t.config.get("image.resizeOptions"),n=t.commands.get("resizeImage");this.bind("isEnabled").to(n);for(const t of e)this._registerImageResizeButton(t);this._registerImageResizeDropdown(e)}_registerImageResizeButton(t){const e=this.editor,{name:n,value:r,icon:i}=t;e.ui.componentFactory.add(n,(n=>{const o=new wm(n),s=e.commands.get("resizeImage"),a=this._getOptionLabelValue(t,!0);if(!Rv[i])throw new kr("imageresizebuttons-missing-icon",e,t);if(o.set({label:a,icon:Rv[i],tooltip:a,isToggleable:!0}),o.bind("isEnabled").to(this),e.plugins.has("ImageCustomResizeUI")&&zv(t)){const t=e.plugins.get("ImageCustomResizeUI");this.listenTo(o,"execute",(()=>{t._showForm(this._resizeUnit)}))}else{const t=r?r+this._resizeUnit:null;o.bind("isOn").to(s,"value",Mv(t)),this.listenTo(o,"execute",(()=>{e.execute("resizeImage",{width:t})}))}return o}))}_registerImageResizeDropdown(t){const e=this.editor,n=e.t,r=t.find((t=>!t.value)),i=i=>{const o=e.commands.get("resizeImage"),s=Dp(i,jg),a=s.buttonView,l=n("Resize image");return a.set({tooltip:l,commandValue:r.value,icon:Rv.medium,isToggleable:!0,label:this._getOptionLabelValue(r),withText:!0,class:"ck-resize-image-button",ariaLabel:l,ariaLabelledBy:void 0}),a.bind("label").to(o,"value",(t=>t&&t.width?t.width:this._getOptionLabelValue(r))),s.bind("isEnabled").to(this),Ip(s,(()=>this._getResizeDropdownListItemDefinitions(t,o)),{ariaLabel:n("Image resize list"),role:"menu"}),this.listenTo(s,"execute",(t=>{"onClick"in t.source?t.source.onClick():(e.execute(t.source.commandName,{width:t.source.commandValue}),e.editing.view.focus())})),s};e.ui.componentFactory.add("resizeImage",i),e.ui.componentFactory.add("imageResize",i)}_getOptionLabelValue(t,e=!1){const n=this.editor.t;return t.label?t.label:e?zv(t)?n("Custom image size"):t.value?n("Resize image to %0",t.value+this._resizeUnit):n("Resize image to the original size"):zv(t)?n("Custom"):t.value?t.value+this._resizeUnit:n("Original")}_getResizeDropdownListItemDefinitions(t,e){const{editor:n}=this,r=new xo,i=t.map((t=>zv(t)?{...t,valueWithUnits:"custom"}:t.value?{...t,valueWithUnits:`${t.value}${this._resizeUnit}`}:{...t,valueWithUnits:null}));for(const t of i){let o=null;if(n.plugins.has("ImageCustomResizeUI")&&zv(t)){const r=n.plugins.get("ImageCustomResizeUI");o={type:"button",model:new kb({label:this._getOptionLabelValue(t),role:"menuitemradio",withText:!0,icon:null,onClick:()=>{r._showForm(this._resizeUnit)}})};const s=Pv(i,"valueWithUnits");o.model.bind("isOn").to(e,"value",Nv(s))}else o={type:"button",model:new kb({commandName:"resizeImage",commandValue:t.valueWithUnits,label:this._getOptionLabelValue(t),role:"menuitemradio",withText:!0,icon:null})},o.model.bind("isOn").to(e,"value",Mv(t.valueWithUnits));o.model.bind("isEnabled").to(e,"isEnabled"),r.add(o)}return r}}function zv(t){return"custom"===t.value}function Mv(t){return e=>null===t&&e===t||null!==e&&e.width===t}function Nv(t){return e=>!t.some((t=>Mv(t)(e)))}const Ov="image_resized";class Hv extends Lo{static get requires(){return[Y_,DC]}static get pluginName(){return"ImageResizeHandles"}init(){const t=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(t),this._setupResizerCreator()}_setupResizerCreator(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageUtils");e.addObserver(OC),this.listenTo(e.document,"imageLoaded",((r,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 o=t.editing.view.domConverter,s=o.domToView(i.target),a=n.getImageWidgetFromImageView(s);let l=this.editor.plugins.get(Y_).getResizerByViewElement(a);if(l)return void l.redraw();const c=t.editing.mapper,d=c.toModelElement(a);l=t.plugins.get(Y_).attachTo({unit:t.config.get("image.resizeUnit"),modelElement:d,viewElement:a,editor:t,getHandleHost:t=>t.querySelector("img"),getResizeHost:()=>o.mapViewToDom(c.toViewElement(d)),isCentered:()=>"alignCenter"==d.getAttribute("imageStyle"),onCommit(n){e.change((t=>{t.removeClass(Ov,a)})),t.execute("resizeImage",{width:n})}}),l.on("updateSize",(()=>{a.hasClass(Ov)||e.change((t=>{t.addClass(Ov,a)}));const t="imageInline"===d.name?s:a;t.getStyle("height")&&e.change((e=>{e.removeStyle("height",t)}))})),l.bind("isEnabled").to(this)}))}}function jv(t){if(!t)return null;const[,e,n]=t.trim().match(/([.,\d]+)(%|px)$/)||[],r=Number.parseFloat(e);return Number.isNaN(r)?null:{value:r,unit:n}}function qv(t,e,n){return"px"===n?{value:e.value,unit:"px"}:{value:e.value/t*100,unit:"%"}}function Uv(t){const{editing:e}=t,n=t.plugins.get("ImageUtils").getClosestSelectedImageElement(t.model.document.selection);if(!n)return null;const r=e.mapper.toViewElement(n);return{model:n,view:r,dom:e.view.domConverter.mapViewToDom(r)}}var Wv=n(4642),$v={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Wv.A,$v);Wv.A.locals;class Gv extends lm{focusTracker;keystrokes;unit;labeledInput;saveButtonView;cancelButtonView;_focusables;_focusCycler;_validators;constructor(t,e,n){super(t);const r=this.locale.t;this.focusTracker=new Bo,this.keystrokes=new Do,this.unit=e,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(r("Save"),zu.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(r("Cancel"),zu.cancel,"ck-button-cancel","cancel"),this._focusables=new Mu,this._validators=n,this._focusCycler=new ym({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),hm({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(t,e,n,r){const i=new wm(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),r&&i.delegate("execute").to(this,r),i}_createLabeledInputView(){const t=this.locale.t,e=new Sg(this.locale,Lp);return e.label=t("Resize image (in %0)",this.unit),e.fieldView.set({step:.1}),e}isValid(){this.resetFormStatus();for(const t of this._validators){const e=t(this);if(e)return this.labeledInput.errorText=e,!1}return!0}resetFormStatus(){this.labeledInput.errorText=null}get rawSize(){const{element:t}=this.labeledInput.fieldView;return t?t.value:null}get parsedSize(){const{rawSize:t}=this;if(null===t)return null;const e=Number.parseFloat(t);return Number.isNaN(e)?null:e}get sizeWithUnits(){const{parsedSize:t,unit:e}=this;return null===t?null:`${t}${e}`}}class Kv extends Lo{_balloon;_form;static get requires(){return[yb]}static get pluginName(){return"ImageCustomResizeUI"}destroy(){super.destroy(),this._form&&this._form.destroy()}_createForm(t){const e=this.editor;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(dm(Gv))(e.locale,t,function(t){const e=t.t;return[t=>""===t.rawSize.trim()?e("The value must not be empty."):null===t.parsedSize?e("The value should be a plain number."):void 0]}(e)),this._form.render(),this.listenTo(this._form,"submit",(()=>{this._form.isValid()&&(e.execute("resizeImage",{width:this._form.sizeWithUnits}),this._hideForm(!0))})),this.listenTo(this._form.labeledInput,"change:errorText",(()=>{e.ui.update()})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((t,e)=>{this._hideForm(!0),e()})),cm({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(t){if(this._isVisible)return;this._form||this._createForm(t);const e=this.editor,n=this._form.labeledInput;this._form.disableCssTransitions(),this._form.resetFormStatus(),this._isInBalloon||this._balloon.add({view:this._form,position:RC(e)});const r=function(t,e){const n=Uv(t);if(!n)return null;const r=jv(n.model.getAttribute("resizedWidth")||null);return r?r.unit===e?r:qv(y_(n.dom),{unit:"px",value:new fi(n.dom).width},e):null}(e,t),i=r?r.value.toFixed(1):"",o=function(t,e){const n=Uv(t);if(!n)return null;const r=y_(n.dom),i=jv(window.getComputedStyle(n.dom).minWidth)||{value:1,unit:"px"};return{unit:e,lower:Math.max(.1,qv(r,i,e).value),upper:"px"===e?r:100}}(e,t);n.fieldView.value=n.fieldView.element.value=i,o&&Object.assign(n.fieldView,{min:o.lower.toFixed(1),max:Math.ceil(o.upper).toFixed(1)}),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(t=!1){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),t&&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 Zv=n(3469),Yv={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Zv.A,Yv);Zv.A.locals;class Jv extends Mo{_defaultStyles;_styles;constructor(t,e){super(t),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(e.map((t=>{if(t.isDefault)for(const e of t.modelElements)this._defaultStyles[e]=t.name;return[t.name,t]})))}refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled?t.hasAttribute("imageStyle")?this.value=t.getAttribute("imageStyle"):this.value=this._defaultStyles[t.name]:this.value=!1}execute(t={}){const e=this.editor,n=e.model,r=e.plugins.get("ImageUtils");n.change((e=>{const i=t.value,{setImageSizes:o=!0}=t;let s=r.getClosestSelectedImageElement(n.document.selection);i&&this.shouldConvertImageType(i,s)&&(this.editor.execute(r.isBlockImage(s)?"imageTypeInline":"imageTypeBlock",{setImageSizes:o}),s=r.getClosestSelectedImageElement(n.document.selection)),!i||this._styles.get(i).isDefault?e.removeAttribute("imageStyle",s):e.setAttribute("imageStyle",i,s),o&&r.setImageNaturalSizeAttributes(s)}))}shouldConvertImageType(t,e){return!this._styles.get(t).modelElements.includes(e.name)}}const Qv={get inline(){return{name:"inline",title:"In line",icon:zu.objectInline,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:zu.objectLeft,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:zu.objectBlockLeft,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:zu.objectCenter,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:zu.objectRight,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:zu.objectBlockRight,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:zu.objectCenter,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:zu.objectRight,modelElements:["imageBlock"],className:"image-style-side"}}},Xv=(()=>({full:zu.objectFullWidth,left:zu.objectBlockLeft,right:zu.objectBlockRight,center:zu.objectCenter,inlineLeft:zu.objectLeft,inlineRight:zu.objectRight,inline:zu.objectInline}))(),ty=[{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 ey(t){wr("image-style-configuration-definition-invalid",t)}const ny={normalizeStyles:function(t){const e=(t.configuredStyles.options||[]).map((t=>function(t){t="string"==typeof t?Qv[t]?{...Qv[t]}:{name:t}:function(t,e){const n={...e};for(const r in t)Object.prototype.hasOwnProperty.call(e,r)||(n[r]=t[r]);return n}(Qv[t.name],t);"string"==typeof t.icon&&(t.icon=Xv[t.icon]||t.icon);return t}(t))).filter((e=>function(t,{isBlockPluginLoaded:e,isInlinePluginLoaded:n}){const{modelElements:r,name:i}=t;if(!(r&&r.length&&i))return ey({style:t}),!1;{const i=[e?"imageBlock":null,n?"imageInline":null];if(!r.some((t=>i.includes(t))))return wr("image-style-missing-dependency",{style:t,missingPlugins:r.map((t=>"imageBlock"===t?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(e,t)));return e},getDefaultStylesConfiguration:function(t,e){return t&&e?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:t?{options:["block","side"]}:e?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(t){return t.has("ImageBlockEditing")&&t.has("ImageInlineEditing")?[...ty]:[]},warnInvalidStyle:ey,DEFAULT_OPTIONS:Qv,DEFAULT_ICONS:Xv,DEFAULT_DROPDOWN_DEFINITIONS:ty};function ry(t,e){for(const n of e)if(n.name===t)return n}class iy extends Lo{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[DC]}normalizedStyles;init(){const{normalizeStyles:t,getDefaultStylesConfiguration:e}=ny,n=this.editor,r=n.plugins.has("ImageBlockEditing"),i=n.plugins.has("ImageInlineEditing");n.config.define("image.styles",e(r,i)),this.normalizedStyles=t({configuredStyles:n.config.get("image.styles"),isBlockPluginLoaded:r,isInlinePluginLoaded:i}),this._setupConversion(r,i),this._setupPostFixer(),n.commands.add("imageStyle",new Jv(n,this.normalizedStyles))}_setupConversion(t,e){const n=this.editor,r=n.model.schema,i=(o=this.normalizedStyles,(t,e,n)=>{if(!n.consumable.consume(e.item,t.name))return;const r=ry(e.attributeNewValue,o),i=ry(e.attributeOldValue,o),s=n.mapper.toViewElement(e.item),a=n.writer;i&&a.removeClass(i.className,s),r&&a.addClass(r.className,s)});var o;const s=function(t){const e={imageInline:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageInline"))),imageBlock:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageBlock")))};return(t,n,r)=>{if(!n.modelRange)return;const i=n.viewItem,o=Eo(n.modelRange.getItems());if(o&&r.schema.checkAttribute(o,"imageStyle"))for(const t of e[o.name])r.consumable.consume(i,{classes:t.className})&&r.writer.setAttribute("imageStyle",t.name,o)}}(this.normalizedStyles);n.editing.downcastDispatcher.on("attribute:imageStyle",i),n.data.downcastDispatcher.on("attribute:imageStyle",i),t&&(r.extend("imageBlock",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),e&&(r.extend("imageInline",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const t=this.editor,e=t.model.document,n=t.plugins.get(DC),r=new Map(this.normalizedStyles.map((t=>[t.name,t])));e.registerPostFixer((t=>{let i=!1;for(const o of e.differ.getChanges())if("insert"==o.type||"attribute"==o.type&&"imageStyle"==o.attributeKey){let e="insert"==o.type?o.position.nodeAfter:o.range.start.nodeAfter;if(e&&e.is("element","paragraph")&&e.childCount>0&&(e=e.getChild(0)),!n.isImage(e))continue;const s=e.getAttribute("imageStyle");if(!s)continue;const a=r.get(s);a&&a.modelElements.includes(e.name)||(t.removeAttribute("imageStyle",e),i=!0)}return i}))}}var oy=n(6386),sy={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(oy.A,sy);oy.A.locals;class ay extends Lo{static get requires(){return[iy]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const t=this.editor.t;return{"Wrap text":t("Wrap text"),"Break text":t("Break text"),"In line":t("In line"),"Full size image":t("Full size image"),"Side image":t("Side image"),"Left aligned image":t("Left aligned image"),"Centered image":t("Centered image"),"Right aligned image":t("Right aligned image")}}init(){const t=this.editor.plugins,e=this.editor.config.get("image.toolbar")||[],n=ly(t.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const t of n)this._createButton(t);const r=ly([...e.filter(s),...ny.getDefaultDropdownDefinitions(t)],this.localizedDefaultStylesTitles);for(const t of r)this._createDropdown(t,n)}_createDropdown(t,e){const n=this.editor.ui.componentFactory;n.add(t.name,(r=>{let i;const{defaultItem:o,items:s,title:a}=t,l=s.filter((t=>e.find((({name:e})=>cy(e)===t)))).map((t=>{const e=n.create(t);return t===o&&(i=e),e}));s.length!==l.length&&ny.warnInvalidStyle({dropdown:t});const c=Dp(r,vp),d=c.buttonView,h=d.arrowView;return Sp(c,l,{enableActiveItemFocusOnDropdownOpen:!0}),d.set({label:dy(a,i.label),class:null,tooltip:!0}),h.unbind("label"),h.set({label:a}),d.bind("icon").toMany(l,"isOn",((...t)=>{const e=t.findIndex(co);return e<0?i.icon:l[e].icon})),d.bind("label").toMany(l,"isOn",((...t)=>{const e=t.findIndex(co);return dy(a,e<0?i.label:l[e].label)})),d.bind("isOn").toMany(l,"isOn",((...t)=>t.some(co))),d.bind("class").toMany(l,"isOn",((...t)=>t.some(co)?"ck-splitbutton_flatten":void 0)),d.on("execute",(()=>{l.some((({isOn:t})=>t))?c.isOpen=!c.isOpen:i.fire("execute")})),c.bind("isEnabled").toMany(l,"isEnabled",((...t)=>t.some(co))),this.listenTo(c,"execute",(()=>{this.editor.editing.view.focus()})),c}))}_createButton(t){const e=t.name;this.editor.ui.componentFactory.add(cy(e),(n=>{const r=this.editor.commands.get("imageStyle"),i=new wm(n);return i.set({label:t.title,icon:t.icon,tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(r,"isEnabled"),i.bind("isOn").to(r,"value",(t=>t===e)),i.on("execute",this._executeCommand.bind(this,e)),i}))}_executeCommand(t){this.editor.execute("imageStyle",{value:t}),this.editor.editing.view.focus()}}function ly(t,e){for(const n of t)e[n.title]&&(n.title=e[n.title]);return t}function cy(t){return`imageStyle:${t}`}function dy(t,e){return(t?t+": ":"")+e}class hy{_definitions=new Set;get length(){return this._definitions.size}add(t){Array.isArray(t)?t.forEach((t=>this._definitions.add(t))):this._definitions.add(t)}getDispatcher(){return t=>{t.on("attribute:linkHref",((t,e,n)=>{if(!n.consumable.test(e.item,"attribute:linkHref"))return;if(!e.item.is("selection")&&!n.schema.isInline(e.item))return;const r=n.writer,i=r.document.selection;for(const t of this._definitions){const o=r.createAttributeElement("a",t.attributes,{priority:5});t.classes&&r.addClass(t.classes,o);for(const e in t.styles)r.setStyle(e,t.styles[e],o);r.setCustomProperty("link",!0,o),t.callback(e.attributeNewValue)?e.item.is("selection")?r.wrap(i.getFirstRange(),o):r.wrap(n.mapper.toViewRange(e.range),o):r.unwrap(n.mapper.toViewRange(e.range),o)}}),{priority:"high"})}}getDispatcherForLinkedImage(){return t=>{t.on("attribute:linkHref:imageBlock",((t,e,{writer:n,mapper:r})=>{const i=r.toViewElement(e.item),o=Array.from(i.getChildren()).find((t=>t.is("element","a")));for(const t of this._definitions){const r=So(t.attributes);if(t.callback(e.attributeNewValue)){for(const[t,e]of r)"class"===t?n.addClass(e,o):n.setAttribute(t,e,o);t.classes&&n.addClass(t.classes,o);for(const e in t.styles)n.setStyle(e,t.styles[e],o)}else{for(const[t,e]of r)"class"===t?n.removeClass(e,o):n.removeAttribute(t,o);t.classes&&n.removeClass(t.classes,o);for(const e in t.styles)n.removeStyle(e,o)}}}))}}}const uy=function(t,e,n){var r=t.length;return n=void 0===n?r:n,!e&&n>=r?t:Ss(t,e,n)};var my=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");const gy=function(t){return my.test(t)};const py=function(t){return t.split("")};var fy="\\ud800-\\udfff",by="["+fy+"]",ky="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",wy="\\ud83c[\\udffb-\\udfff]",Ay="[^"+fy+"]",_y="(?:\\ud83c[\\udde6-\\uddff]){2}",Cy="[\\ud800-\\udbff][\\udc00-\\udfff]",vy="(?:"+ky+"|"+wy+")"+"?",yy="[\\ufe0e\\ufe0f]?",xy=yy+vy+("(?:\\u200d(?:"+[Ay,_y,Cy].join("|")+")"+yy+vy+")*"),Ey="(?:"+[Ay+ky+"?",ky,_y,Cy,by].join("|")+")",By=RegExp(wy+"(?="+wy+")|"+Ey+xy,"g");const Dy=function(t){return t.match(By)||[]};const Sy=function(t){return gy(t)?Dy(t):py(t)};const Ty=function(t){return function(e){e=ys(e);var n=gy(e)?Sy(e):void 0,r=n?n[0]:e.charAt(0),i=n?uy(n,1).join(""):e.slice(1);return r[t]()+i}}("toUpperCase"),Iy=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Py=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Vy=/^((\w+:(\/{2,})?)|(\W))/i,Fy=["https?","ftps?","mailto"],Ry="Ctrl+K";function Ly(t,{writer:e}){const n=e.createAttributeElement("a",{href:t},{priority:5});return e.setCustomProperty("link",!0,n),n}function zy(t,e=Fy){const n=String(t),r=e.join("|");return function(t,e){const n=t.replace(Iy,"");return!!n.match(e)}(n,new RegExp(`${"^(?:(?:):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))".replace("",r)}`,"i"))?n:"#"}function My(t,e){return!!t&&e.checkAttribute(t.name,"linkHref")}function Ny(t,e){const n=(r=t,Py.test(r)?"mailto:":e);var r;const i=!!n&&!Oy(t);return t&&i?n+t:t}function Oy(t){return Vy.test(t)}function Hy(t){window.open(t,"_blank","noopener")}class jy extends Mo{manualDecorators=new xo;automaticDecorators=new hy;restoreManualDecoratorStates(){for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement()||Eo(e.getSelectedBlocks());My(n,t.schema)?(this.value=n.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttribute(n,"linkHref")):(this.value=e.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref"));for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}execute(t,e={}){const n=this.editor.model,r=n.document.selection,i=[],o=[];for(const t in e)e[t]?i.push(t):o.push(t);n.change((e=>{if(r.isCollapsed){const s=r.getFirstPosition();if(r.hasAttribute("linkHref")){const a=qy(r);let l=yw(s,"linkHref",r.getAttribute("linkHref"),n);r.getAttribute("linkHref")===a&&(l=this._updateLinkContent(n,e,l,t)),e.setAttribute("linkHref",t,l),i.forEach((t=>{e.setAttribute(t,!0,l)})),o.forEach((t=>{e.removeAttribute(t,l)})),e.setSelection(e.createPositionAfter(l.end.nodeBefore))}else if(""!==t){const o=So(r.getAttributes());o.set("linkHref",t),i.forEach((t=>{o.set(t,!0)}));const{end:a}=n.insertContent(e.createText(t,o),s);e.setSelection(a)}["linkHref",...i,...o].forEach((t=>{e.removeSelectionAttribute(t)}))}else{const s=n.schema.getValidRanges(r.getRanges(),"linkHref"),a=[];for(const t of r.getSelectedBlocks())n.schema.checkAttribute(t,"linkHref")&&a.push(e.createRangeOn(t));const l=a.slice();for(const t of s)this._isRangeToUpdate(t,a)&&l.push(t);for(const s of l){let a=s;if(1===l.length){const i=qy(r);r.getAttribute("linkHref")===i&&(a=this._updateLinkContent(n,e,s,t),e.setSelection(e.createSelection(a)))}e.setAttribute("linkHref",t,a),i.forEach((t=>{e.setAttribute(t,!0,a)})),o.forEach((t=>{e.removeAttribute(t,a)}))}}}))}_getDecoratorStateFromModel(t){const e=this.editor.model,n=e.document.selection,r=n.getSelectedElement();return My(r,e.schema)?r.getAttribute(t):n.getAttribute(t)}_isRangeToUpdate(t,e){for(const n of e)if(n.containsRange(t))return!1;return!0}_updateLinkContent(t,e,n,r){const i=e.createText(r,{linkHref:r});return t.insertContent(i,n)}}function qy(t){if(t.isCollapsed){const e=t.getFirstPosition();return e.textNode&&e.textNode.data}{const e=Array.from(t.getFirstRange().getItems());if(e.length>1)return null;const n=e[0];return n.is("$text")||n.is("$textProxy")?n.data:null}}class Uy extends Mo{refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement();My(n,t.schema)?this.isEnabled=t.schema.checkAttribute(n,"linkHref"):this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref")}execute(){const t=this.editor,e=this.editor.model,n=e.document.selection,r=t.commands.get("link");e.change((t=>{const i=n.isCollapsed?[yw(n.getFirstPosition(),"linkHref",n.getAttribute("linkHref"),e)]:e.schema.getValidRanges(n.getRanges(),"linkHref");for(const e of i)if(t.removeAttribute("linkHref",e),r)for(const n of r.manualDecorators)t.removeAttribute(n.id,e)}))}}class Wy extends(jr()){id;defaultValue;label;attributes;classes;styles;constructor({id:t,label:e,attributes:n,classes:r,styles:i,defaultValue:o}){super(),this.id=t,this.set("value",void 0),this.defaultValue=o,this.label=e,this.attributes=n,this.classes=r,this.styles=i}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}var $y=n(7719),Gy={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()($y.A,Gy);$y.A.locals;const Ky="automatic",Zy=/^(https?:)?\/\//;class Yy extends Lo{static get pluginName(){return"LinkEditing"}static get requires(){return[dw,Zk,l_]}constructor(t){super(t),t.config.define("link",{allowCreatingEmptyLinks:!1,addTargetToExternalLinks:!1})}init(){const t=this.editor,e=this.editor.config.get("link.allowedProtocols");t.model.schema.extend("$text",{allowAttributes:"linkHref"}),t.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:Ly}),t.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(t,n)=>Ly(zy(t,e),n)}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:t=>t.getAttribute("href")}}),t.commands.add("link",new jy(t)),t.commands.add("unlink",new Uy(t));const n=function(t,e){const n={"Open in a new tab":t("Open in a new tab"),Downloadable:t("Downloadable")};return e.forEach((t=>("label"in t&&n[t.label]&&(t.label=n[t.label]),t))),e}(t.t,function(t){const e=[];if(t)for(const[n,r]of Object.entries(t)){const t=Object.assign({},r,{id:`link${Ty(n)}`});e.push(t)}return e}(t.config.get("link.decorators")));this._enableAutomaticDecorators(n.filter((t=>t.mode===Ky))),this._enableManualDecorators(n.filter((t=>"manual"===t.mode)));t.plugins.get(dw).registerAttribute("linkHref"),Ew(t,"linkHref","a","ck-link_selected"),this._enableSelectionAttributesFixer(),this._enableClipboardIntegration()}_enableAutomaticDecorators(t){const e=this.editor,n=e.commands.get("link").automaticDecorators;e.config.get("link.addTargetToExternalLinks")&&n.add({id:"linkIsExternal",mode:Ky,callback:t=>!!t&&Zy.test(t),attributes:{target:"_blank",rel:"noopener noreferrer"}}),n.add(t),n.length&&e.conversion.for("downcast").add(n.getDispatcher())}_enableManualDecorators(t){if(!t.length)return;const e=this.editor,n=e.commands.get("link").manualDecorators;t.forEach((t=>{e.model.schema.extend("$text",{allowAttributes:t.id});const r=new Wy(t);n.add(r),e.conversion.for("downcast").attributeToElement({model:r.id,view:(t,{writer:e,schema:n},{item:i})=>{if((i.is("selection")||n.isInline(i))&&t){const t=e.createAttributeElement("a",r.attributes,{priority:5});r.classes&&e.addClass(r.classes,t);for(const n in r.styles)e.setStyle(n,r.styles[n],t);return e.setCustomProperty("link",!0,t),t}}}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",...r._createPattern()},model:{key:r.id}})}))}_enableLinkOpen(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"click",((t,e)=>{if(!(Xn.isMac?e.domEvent.metaKey:e.domEvent.ctrlKey))return;let n=e.domTarget;if("a"!=n.tagName.toLowerCase()&&(n=n.closest("a")),!n)return;const r=n.getAttribute("href");r&&(t.stop(),e.preventDefault(),Hy(r))}),{context:"$capture"}),this.listenTo(e,"keydown",((e,n)=>{const r=t.commands.get("link").value;!!r&&n.keyCode===$i.enter&&n.altKey&&(e.stop(),Hy(r))}))}_enableSelectionAttributesFixer(){const t=this.editor.model,e=t.document.selection;this.listenTo(e,"change:attribute",((n,{attributeKeys:r})=>{r.includes("linkHref")&&!e.hasAttribute("linkHref")&&t.change((e=>{var n;!function(t,e){t.removeSelectionAttribute("linkHref");for(const n of e)t.removeSelectionAttribute(n)}(e,(n=t.schema,n.getDefinition("$text").allowAttributes.filter((t=>t.startsWith("link")))))}))}))}_enableClipboardIntegration(){const t=this.editor,e=t.model,n=this.editor.config.get("link.defaultProtocol");n&&this.listenTo(t.plugins.get("ClipboardPipeline"),"contentInsertion",((t,r)=>{e.change((t=>{const e=t.createRangeIn(r.content);for(const r of e.getItems())if(r.hasAttribute("linkHref")){const e=Ny(r.getAttribute("linkHref"),n);t.setAttribute("linkHref",e,r)}}))}))}}var Jy=n(3817),Qy={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Jy.A,Qy);Jy.A.locals;class Xy extends lm{focusTracker=new Bo;keystrokes=new Do;urlInputView;saveButtonView;cancelButtonView;_manualDecoratorSwitches;children;_validators;_focusables=new Mu;_focusCycler;constructor(t,e,n){super(t);const r=t.t;this._validators=n,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(r("Save"),zu.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(r("Cancel"),zu.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(e),this.children=this._createFormChildren(e.manualDecorators),this._focusCycler=new ym({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const i=["ck","ck-link-form","ck-responsive-form"];e.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(((t,e)=>(t[e.name]=e.isOn,t)),{})}render(){super.render(),hm({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}isValid(){this.resetFormStatus();for(const t of this._validators){const e=t(this);if(e)return this.urlInputView.errorText=e,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null}_createUrlInput(){const t=this.locale.t,e=new Sg(this.locale,Rp);return e.fieldView.inputMode="url",e.label=t("Link URL"),e}_createButton(t,e,n,r){const i=new wm(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),r&&i.delegate("execute").to(this,r),i}_createManualDecoratorSwitches(t){const e=this.createCollection();for(const n of t.manualDecorators){const r=new og(this.locale);r.set({name:n.id,label:n.label,withText:!0}),r.bind("isOn").toMany([n,t],"value",((t,e)=>void 0===e&&void 0===t?!!n.defaultValue:!!t)),r.on("execute",(()=>{n.set("value",!r.isOn)})),e.add(r)}return e}_createFormChildren(t){const e=this.createCollection();if(e.add(this.urlInputView),t.length){const t=new lm;t.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map((t=>({tag:"li",children:[t],attributes:{class:["ck","ck-list__item"]}}))),attributes:{class:["ck","ck-reset","ck-list"]}}),e.add(t)}return e.add(this.saveButtonView),e.add(this.cancelButtonView),e}get url(){const{element:t}=this.urlInputView.fieldView;return t?t.value.trim():null}}var tx=n(8762),ex={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(tx.A,ex);tx.A.locals;class nx extends lm{focusTracker=new Bo;keystrokes=new Do;previewButtonView;unlinkButtonView;editButtonView;_focusables=new Mu;_focusCycler;_linkConfig;constructor(t,e={}){super(t);const n=t.t;this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(n("Unlink"),'',"unlink"),this.editButtonView=this._createButton(n("Edit link"),zu.pencil,"edit"),this.set("href",void 0),this._linkConfig=e,this._focusCycler=new ym({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((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createButton(t,e,n){const r=new wm(this.locale);return r.set({label:t,icon:e,tooltip:!0}),r.delegate("execute").to(this,n),r}_createPreviewButton(){const t=new wm(this.locale),e=this.bindTemplate,n=this.t;return t.set({withText:!0,tooltip:n("Open link in new tab")}),t.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:e.to("href",(t=>t&&zy(t,this._linkConfig.allowedProtocols))),target:"_blank",rel:"noopener noreferrer"}}),t.bind("label").to(this,"href",(t=>t||n("This link has no URL"))),t.bind("isEnabled").to(this,"href",(t=>!!t)),t.template.tag="a",t.template.eventListeners={},t}}const rx="link-ui";class ix extends Lo{actionsView=null;formView=null;_balloon;static get requires(){return[yb]}static get pluginName(){return"LinkUI"}init(){const t=this.editor,e=this.editor.t;t.editing.view.addObserver(Oh),this._balloon=t.plugins.get(yb),this._createToolbarLinkButton(),this._enableBalloonActivators(),t.conversion.for("editingDowncast").markerToHighlight({model:rx,view:{classes:["ck-fake-link-selection"]}}),t.conversion.for("editingDowncast").markerToElement({model:rx,view:(t,{writer:e})=>{if(!t.markerRange.isCollapsed)return null;const n=e.createUIElement("span");return e.addClass(["ck-fake-link-selection","ck-fake-link-selection_collapsed"],n),n}}),t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Create link"),keystroke:Ry},{label:e("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 t=this.editor,e=new nx(t.locale,t.config.get("link")),n=t.commands.get("link"),r=t.commands.get("unlink");return e.bind("href").to(n,"value"),e.editButtonView.bind("isEnabled").to(n),e.unlinkButtonView.bind("isEnabled").to(r),this.listenTo(e,"edit",(()=>{this._addFormView()})),this.listenTo(e,"unlink",(()=>{t.execute("unlink"),this._hideUI()})),e.keystrokes.set("Esc",((t,e)=>{this._hideUI(),e()})),e.keystrokes.set(Ry,((t,e)=>{this._addFormView(),e()})),e}_createFormView(){const t=this.editor,e=t.commands.get("link"),n=t.config.get("link.defaultProtocol"),r=new(dm(Xy))(t.locale,e,function(t){const e=t.t,n=t.config.get("link.allowCreatingEmptyLinks");return[t=>{if(!n&&!t.url.length)return e("Link URL must not be empty.")}]}(t));return r.urlInputView.fieldView.bind("value").to(e,"value"),r.urlInputView.bind("isEnabled").to(e,"isEnabled"),r.saveButtonView.bind("isEnabled").to(e,"isEnabled"),this.listenTo(r,"submit",(()=>{if(r.isValid()){const{value:e}=r.urlInputView.fieldView.element,i=Ny(e,n);t.execute("link",i,r.getDecoratorSwitchesState()),this._closeFormView()}})),this.listenTo(r.urlInputView,"change:errorText",(()=>{t.ui.update()})),this.listenTo(r,"cancel",(()=>{this._closeFormView()})),r.keystrokes.set("Esc",((t,e)=>{this._closeFormView(),e()})),r}_createToolbarLinkButton(){const t=this.editor;t.ui.componentFactory.add("link",(()=>{const t=this._createButton(wm);return t.set({tooltip:!0}),t})),t.ui.componentFactory.add("menuBar:link",(()=>{const t=this._createButton(Ym);return t.set({role:"menuitemcheckbox"}),t}))}_createButton(t){const e=this.editor,n=e.locale,r=e.commands.get("link"),i=new t(e.locale),o=n.t;return i.set({label:o("Link"),icon:'',keystroke:Ry,isToggleable:!0}),i.bind("isEnabled").to(r,"isEnabled"),i.bind("isOn").to(r,"value",(t=>!!t)),this.listenTo(i,"execute",(()=>this._showUI(!0))),i}_enableBalloonActivators(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),t.keystrokes.set(Ry,((e,n)=>{n(),t.commands.get("link").isEnabled&&this._showUI(!0)}))}_enableUserBalloonInteractions(){this.editor.keystrokes.set("Tab",((t,e)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),e())}),{priority:"high"}),this.editor.keystrokes.set("Esc",((t,e)=>{this._isUIVisible&&(this._hideUI(),e())})),cm({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 t=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=t.value||"",this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions()}_closeFormView(){const t=this.editor.commands.get("link");t.restoreManualDecoratorStates(),void 0!==t.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(t=!1){this.formView||this._createViews(),this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),t&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),t&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const t=this.editor;this.stopListening(t.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),t.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const t=this.editor,e=t.editing.view.document;let n=this._getSelectedLinkElement(),r=o();const i=()=>{const t=this._getSelectedLinkElement(),e=o();n&&!t||!n&&e!==r?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),n=t,r=e};function o(){return e.selection.focus.getAncestors().reverse().find((t=>t.is("element")))}this.listenTo(t.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 t=this._balloon.visibleView;return!!this.formView&&t==this.formView||this._areActionsVisible}_getBalloonPositionData(){const t=this.editor.editing.view,e=this.editor.model,n=t.document;let r;if(e.markers.has(rx)){const e=Array.from(this.editor.editing.mapper.markerNameToElements(rx)),n=t.createRange(t.createPositionBefore(e[0]),t.createPositionAfter(e[e.length-1]));r=t.domConverter.viewRangeToDom(n)}else r=()=>{const e=this._getSelectedLinkElement();return e?t.domConverter.mapViewToDom(e):t.domConverter.viewRangeToDom(n.selection.getFirstRange())};return{target:r}}_getSelectedLinkElement(){const t=this.editor.editing.view,e=t.document.selection,n=e.getSelectedElement();if(e.isCollapsed||n&&p_(n))return ox(e.getFirstPosition());{const n=e.getFirstRange().getTrimmed(),r=ox(n.start),i=ox(n.end);return r&&r==i&&t.createRangeIn(r).getTrimmed().isEqual(n)?r:null}}_showFakeVisualSelection(){const t=this.editor.model;t.change((e=>{const n=t.document.selection.getFirstRange();if(t.markers.has(rx))e.updateMarker(rx,{range:n});else if(n.start.isAtEnd){const r=n.start.getLastMatchingPosition((({item:e})=>!t.schema.isContent(e)),{boundaries:n});e.addMarker(rx,{usingOperation:!1,affectsData:!1,range:e.createRange(r,n.end)})}else e.addMarker(rx,{usingOperation:!1,affectsData:!1,range:n})}))}_hideFakeVisualSelection(){const t=this.editor.model;t.markers.has(rx)&&t.change((t=>{t.removeMarker(rx)}))}}function ox(t){return t.getAncestors().find((t=>{return(e=t).is("attributeElement")&&!!e.getCustomProperty("link");var e}))||null}const sx=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 ax extends Lo{static get requires(){return[sw,Yy]}static get pluginName(){return"AutoLink"}init(){const t=this.editor.model.document.selection;t.on("change:range",(()=>{this.isEnabled=!t.anchor.parent.is("element","codeBlock")})),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling(),this._enablePasteLinking()}_expandLinkRange(t,e){return e.textNode&&e.textNode.hasAttribute("linkHref")?yw(e,"linkHref",e.textNode.getAttribute("linkHref"),t):null}_selectEntireLinks(t,e){const n=this.editor.model,r=n.document.selection,i=r.getFirstPosition(),o=r.getLastPosition();let s=e.getJoined(this._expandLinkRange(n,i)||e);s&&(s=s.getJoined(this._expandLinkRange(n,o)||e)),s&&(s.start.isBefore(i)||s.end.isAfter(o))&&t.setSelection(s)}_enablePasteLinking(){const t=this.editor,e=t.model,n=e.document.selection,r=t.plugins.get("ClipboardPipeline"),i=t.commands.get("link");r.on("inputTransformation",((t,r)=>{if(!this.isEnabled||!i.isEnabled||n.isCollapsed||"paste"!==r.method)return;if(n.rangeCount>1)return;const o=n.getFirstRange(),s=r.dataTransfer.getData("text/plain");if(!s)return;const a=s.match(sx);a&&a[2]===s&&(e.change((t=>{this._selectEntireLinks(t,o),i.execute(s)})),t.stop())}),{priority:"high"})}_enableTypingHandling(){const t=this.editor,e=new cw(t.model,(t=>{if(!function(t){return t.length>4&&" "===t[t.length-1]&&" "!==t[t.length-2]}(t))return;const e=lx(t.substr(0,t.length-1));return e?{url:e}:void 0}));e.on("matched:data",((e,n)=>{const{batch:r,range:i,url:o}=n;if(!r.isTyping)return;const s=i.end.getShiftedBy(-1),a=s.getShiftedBy(-o.length),l=t.model.createRange(a,s);this._applyAutoLink(o,l)})),e.bind("isEnabled").to(this)}_enableEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("enter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition();if(!t.parent.previousSibling)return;const n=e.createRangeIn(t.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(n)}))}_enableShiftEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("shiftEnter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition(),n=e.createRange(e.createPositionAt(t.parent,0),t.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(n)}))}_checkAndApplyAutoLinkOnRange(t){const e=this.editor.model,{text:n,range:r}=lw(t,e),i=lx(n);if(i){const t=e.createRange(r.end.getShiftedBy(-i.length),r.end);this._applyAutoLink(i,t)}}_applyAutoLink(t,e){const n=this.editor.model,r=Ny(t,this.editor.config.get("link.defaultProtocol"));this.isEnabled&&function(t,e){return e.schema.checkAttributeInSelection(e.createSelection(t),"linkHref")}(e,n)&&Oy(r)&&!function(t){const e=t.start.nodeAfter;return!!e&&e.hasAttribute("linkHref")}(e)&&this._persistAutoLink(r,e)}_persistAutoLink(t,e){const n=this.editor.model,r=this.editor.plugins.get("Delete");n.enqueueChange((i=>{i.setAttribute("linkHref",t,e),n.enqueueChange((()=>{r.requestUndoOnBackspace()}))}))}}function lx(t){const e=sx.exec(t);return e?e[2]:null}var cx=n(4808),dx={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(cx.A,dx);cx.A.locals;class hx{_startElement;_referenceIndent;_isForward;_includeSelf;_sameAttributes;_sameIndent;_lowerIndent;_higherIndent;constructor(t,e){this._startElement=t,this._referenceIndent=t.getAttribute("listIndent"),this._isForward="forward"==e.direction,this._includeSelf=!!e.includeSelf,this._sameAttributes=eo(e.sameAttributes||[]),this._sameIndent=!!e.sameIndent,this._lowerIndent=!!e.lowerIndent,this._higherIndent=!!e.higherIndent}static first(t,e){return Eo(new this(t,e)[Symbol.iterator]())}*[Symbol.iterator](){const t=[];for(const{node:e}of ux(this._getStartNode(),this._isForward?"forward":"backward")){const n=e.getAttribute("listIndent");if(nthis._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){t.push(e);continue}}else{if(!this._sameIndent){if(this._higherIndent){t.length&&(yield*t,t.length=0);break}continue}if(this._sameAttributes.some((t=>e.getAttribute(t)!==this._startElement.getAttribute(t))))break}t.length&&(yield*t,t.length=0),yield e}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}function*ux(t,e="forward"){const n="forward"==e,r=[];let i=null;for(;px(t);){let e=null;if(i){const n=t.getAttribute("listIndent"),o=i.getAttribute("listIndent");n>o?r[o]=i:nt.getAttribute("listItemId")!=e))}function Dx(t){return Array.from(t).filter((t=>"$graveyard"!==t.root.rootName)).sort(((t,e)=>t.index-e.index))}function Sx(t){const e=t.document.selection.getSelectedElement();return e&&t.schema.isObject(e)&&t.schema.isBlock(e)?e:null}function Tx(t,e){return e.checkChild(t.parent,"listItem")&&e.checkChild(t,"$text")&&!e.isObject(t)}function Ix(t){return"numbered"==t||"customNumbered"==t}function Px(t,e,n){return bx(e,{direction:"forward"}).pop().index>t.index?yx(t,e,n):[]}class Vx extends Mo{_direction;constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=Fx(t.document.selection);t.change((t=>{const n=[];Bx(e)&&!wx(e[0])?("forward"==this._direction&&n.push(...xx(e,t)),n.push(...vx(e[0],t))):"forward"==this._direction?n.push(...xx(e,t,{expand:!0})):n.push(...function(t,e){const n=_x(t=eo(t)),r=new Set,i=Math.min(...n.map((t=>t.getAttribute("listIndent")))),o=new Map;for(const t of n)o.set(t,hx.first(t,{lowerIndent:!0}));for(const t of n){if(r.has(t))continue;r.add(t);const n=t.getAttribute("listIndent")-1;if(n<0)Ex(t,e);else{if(t.getAttribute("listIndent")==i){const n=Px(t,o.get(t),e);for(const t of n)r.add(t);if(n.length)continue}e.setAttribute("listIndent",n,t)}}return Dx(r)}(e,t));for(const e of n){if(!e.hasAttribute("listType"))continue;const n=hx.first(e,{sameIndent:!0});n&&t.setAttribute("listType",n.getAttribute("listType"),e)}this._fireAfterExecute(n)}))}_fireAfterExecute(t){this.fire("afterExecute",Dx(new Set(t)))}_checkEnabled(){let t=Fx(this.editor.model.document.selection),e=t[0];if(!e)return!1;if("backward"==this._direction)return!0;if(Bx(t)&&!wx(t[0]))return!0;t=_x(t),e=t[0];const n=hx.first(e,{sameIndent:!0});return!!n&&n.getAttribute("listType")==e.getAttribute("listType")}}function Fx(t){const e=Array.from(t.getSelectedBlocks()),n=e.findIndex((t=>!px(t)));return-1!=n&&(e.length=n),e}class Rx extends Mo{type;_listWalkerOptions;constructor(t,e,n={}){super(t),this.type=e,this._listWalkerOptions=n.multiLevel?{higherIndent:!0,lowerIndent:!0,sameAttributes:[]}:void 0}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.document,r=Sx(e),i=Array.from(n.selection.getSelectedBlocks()).filter((t=>e.schema.checkAttribute(t,"listType")||Tx(t,e.schema))),o=void 0!==t.forceValue?!t.forceValue:this.value;e.change((s=>{if(o){const t=i[i.length-1],e=bx(t,{direction:"forward"}),n=[];e.length>1&&n.push(...vx(e[1],s)),n.push(...Ex(i,s)),n.push(...function(t,e){const n=[];let r=Number.POSITIVE_INFINITY;for(const{node:i}of ux(t.nextSibling,"forward")){const t=i.getAttribute("listIndent");if(0==t)break;t{const{firstElement:o,lastElement:s}=this._getMergeSubjectElements(n,t),a=o.getAttribute("listIndent")||0,l=s.getAttribute("listIndent"),c=s.getAttribute("listItemId");if(a!=l){const t=(d=s,Array.from(new hx(d,{direction:"forward",higherIndent:!0})));r.push(...xx([s,...t],i,{indentBy:a-l,expand:a{const e=vx(this._getStartBlock(),t);this._fireAfterExecute(e)}))}_fireAfterExecute(t){this.fire("afterExecute",Dx(new Set(t)))}_checkEnabled(){const t=this.editor.model.document.selection,e=this._getStartBlock();return t.isCollapsed&&px(e)&&!wx(e)}_getStartBlock(){const t=this.editor.model.document.selection.getFirstPosition().parent;return"before"==this._direction?t:t.nextSibling}}class Mx extends Lo{static get pluginName(){return"ListUtils"}expandListBlocksToCompleteList(t){return Cx(t)}isFirstBlockOfListItem(t){return wx(t)}isListItemBlock(t){return px(t)}expandListBlocksToCompleteItems(t,e={}){return _x(t,e)}isNumberedListType(t){return Ix(t)}}function Nx(t){return t.is("element","ol")||t.is("element","ul")}function Ox(t){return t.is("element","li")}function Hx(t,e,n,r=Ux(n,e)){return t.createAttributeElement(qx(n),null,{priority:2*e/100-100,id:r})}function jx(t,e,n){return t.createAttributeElement("li",null,{priority:(2*e+1)/100-100,id:n})}function qx(t){return"numbered"==t||"customNumbered"==t?"ol":"ul"}function Ux(t,e){return`list-${t}-${e}`}function Wx(t,e){const n=t.nodeBefore;if(px(n)){let t=n;for(const{node:n}of ux(t,"backward"))if(t=n,e.has(t))return;e.set(n,t)}else{const n=t.nodeAfter;px(n)&&e.set(n,n)}}function $x(){return(t,e,n)=>{const{writer:r,schema:i}=n;if(!e.modelRange)return;const o=Array.from(e.modelRange.getItems({shallow:!0})).filter((t=>i.checkAttribute(t,"listItemId")));if(!o.length)return;const s=gx.next(),a=function(t){let e=0,n=t.parent;for(;n;){if(Ox(n))e++;else{const t=n.previousSibling;t&&Ox(t)&&e++}n=n.parent}return e}(e.viewItem);let l=e.viewItem.parent&&e.viewItem.parent.is("element","ol")?"numbered":"bulleted";const c=o[0].getAttribute("listType");c&&(l=c);const d={listItemId:s,listIndent:a,listType:l};for(const t of o)t.hasAttribute("listItemId")||r.setAttributes(d,t);o.length>1&&o[1].getAttribute("listItemId")!=d.listItemId&&n.keepEmptyElement(o[0])}}function Gx(t,e,n,{dataPipeline:r}={}){const i=function(t){return(e,n)=>{const r=[];for(const n of t)e.hasAttribute(n)&&r.push(`attribute:${n}`);return!!r.every((t=>!1!==n.test(e,t)))&&(r.forEach((t=>n.consume(e,t))),!0)}}(t);return(o,s,a)=>{const{writer:l,mapper:c,consumable:d}=a,h=s.item;if(!t.includes(s.attributeKey))return;if(!i(h,d))return;const u=function(t,e,n){const r=n.createRangeOn(t),i=e.toViewRange(r).getTrimmed();return i.end.nodeBefore}(h,c,n);Zx(u,l,c),function(t,e){let n=t.parent;for(;n.is("attributeElement")&&["ul","ol","li"].includes(n.name);){const r=n.parent;e.unwrap(e.createRangeOn(t),n),n=r}}(u,l);const m=function(t,e,n,r,{dataPipeline:i}){let o=r.createRangeOn(e);if(!wx(t))return o;for(const s of n){if("itemMarker"!=s.scope)continue;const n=s.createElement(r,t,{dataPipeline:i});if(!n)continue;if(r.setCustomProperty("listItemMarker",!0,n),s.canInjectMarkerIntoElement&&s.canInjectMarkerIntoElement(t)?r.insert(r.createPositionAt(e,0),n):(r.insert(o.start,n),o=r.createRange(r.createPositionBefore(n),r.createPositionAfter(e))),!s.createWrapperElement||!s.canWrapElement)continue;const a=s.createWrapperElement(r,t,{dataPipeline:i});r.setCustomProperty("listItemWrapper",!0,a),s.canWrapElement(t)?o=r.wrap(o,a):(o=r.wrap(r.createRangeOn(n),a),o=r.createRange(o.start,r.createPositionAfter(e)))}return o}(h,u,e,l,{dataPipeline:r});!function(t,e,n,r){if(!t.hasAttribute("listIndent"))return;const i=t.getAttribute("listIndent");let o=t;for(let t=i;t>=0;t--){const i=jx(r,t,o.getAttribute("listItemId")),s=Hx(r,t,o.getAttribute("listType"));for(const t of n)"list"!=t.scope&&"item"!=t.scope||!o.hasAttribute(t.attributeName)||t.setAttributeOnDowncast(r,o.getAttribute(t.attributeName),"list"==t.scope?s:i);if(e=r.wrap(e,i),e=r.wrap(e,s),0==t)break;if(o=hx.first(o,{lowerIndent:!0}),!o)break}}(h,m,e,l)}}function Kx(t,{dataPipeline:e}={}){return(n,{writer:r})=>{if(!Yx(n,t))return null;if(!e)return r.createContainerElement("span",{class:"ck-list-bogus-paragraph"});const i=r.createContainerElement("p");return r.setCustomProperty("dataPipeline:transparentRendering",!0,i),i}}function Zx(t,e,n){for(;t.parent.is("attributeElement")&&t.parent.getCustomProperty("listItemWrapper");)e.unwrap(e.createRangeOn(t),t.parent);const r=[];i(e.createPositionBefore(t).getWalker({direction:"backward"})),i(e.createRangeIn(t).getWalker());for(const t of r)e.remove(t);function i(t){for(const{item:e}of t){if(e.is("element")&&n.toModelElement(e))break;e.is("element")&&e.getCustomProperty("listItemMarker")&&r.push(e)}}}function Yx(t,e,n=fx(t)){if(!px(t))return!1;for(const n of t.getAttributeKeys())if(!n.startsWith("selection:")&&!e.includes(n))return!1;return n.length<2}var Jx=n(1232),Qx={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Jx.A,Qx);Jx.A.locals;var Xx=n(6903),tE={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Xx.A,tE);Xx.A.locals;const eE=["listType","listIndent","listItemId"];class nE extends Lo{_downcastStrategies=[];static get pluginName(){return"ListEditing"}static get requires(){return[pA,sw,Mx,l_]}constructor(t){super(t),t.config.define("list.multiBlock",!0)}init(){const t=this.editor,e=t.model,n=t.config.get("list.multiBlock");if(t.plugins.has("LegacyListEditing"))throw new kr("list-feature-conflict",this,{conflictPlugin:"LegacyListEditing"});e.schema.register("$listItem",{allowAttributes:eE}),n?(e.schema.extend("$container",{allowAttributesOf:"$listItem"}),e.schema.extend("$block",{allowAttributesOf:"$listItem"}),e.schema.extend("$blockObject",{allowAttributesOf:"$listItem"})):e.schema.register("listItem",{inheritAllFrom:"$block",allowAttributesOf:"$listItem"});for(const t of eE)e.schema.setAttributeProperties(t,{copyOnReplace:!0});t.commands.add("numberedList",new Rx(t,"numbered")),t.commands.add("bulletedList",new Rx(t,"bulleted")),t.commands.add("customNumberedList",new Rx(t,"customNumbered",{multiLevel:!0})),t.commands.add("customBulletedList",new Rx(t,"customBulleted",{multiLevel:!0})),t.commands.add("indentList",new Vx(t,"forward")),t.commands.add("outdentList",new Vx(t,"backward")),t.commands.add("splitListItemBefore",new zx(t,"before")),t.commands.add("splitListItemAfter",new zx(t,"after")),n&&(t.commands.add("mergeListItemBackward",new Lx(t,"backward")),t.commands.add("mergeListItemForward",new Lx(t,"forward"))),this._setupDeleteIntegration(),this._setupEnterIntegration(),this._setupTabIntegration(),this._setupClipboardIntegration(),this._setupAccessibilityIntegration()}afterInit(){const t=this.editor.commands,e=t.get("indent"),n=t.get("outdent");e&&e.registerChildCommand(t.get("indentList"),{priority:"high"}),n&&n.registerChildCommand(t.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(t){this._downcastStrategies.push(t)}getListAttributeNames(){return[...eE,...this._downcastStrategies.map((t=>t.attributeName))]}_setupDeleteIntegration(){const t=this.editor,e=t.commands.get("mergeListItemBackward"),n=t.commands.get("mergeListItemForward");this.listenTo(t.editing.view.document,"delete",((r,i)=>{const o=t.model.document.selection;Sx(t.model)||t.model.change((()=>{const s=o.getFirstPosition();if(o.isCollapsed&&"backward"==i.direction){if(!s.isAtStart)return;const n=s.parent;if(!px(n))return;if(hx.first(n,{sameAttributes:"listType",sameIndent:!0})||0!==n.getAttribute("listIndent")){if(!e||!e.isEnabled)return;e.execute({shouldMergeOnBlocksContentLevel:rE(t.model,"backward")})}else Ax(n)||t.execute("splitListItemAfter"),t.execute("outdentList");i.preventDefault(),r.stop()}else{if(o.isCollapsed&&!o.getLastPosition().isAtEnd)return;if(!n||!n.isEnabled)return;n.execute({shouldMergeOnBlocksContentLevel:rE(t.model,"forward")}),i.preventDefault(),r.stop()}}))}),{context:"li"})}_setupEnterIntegration(){const t=this.editor,e=t.model,n=t.commands,r=n.get("enter");this.listenTo(t.editing.view.document,"enter",((n,r)=>{const i=e.document,o=i.selection.getFirstPosition().parent;if(i.selection.isCollapsed&&px(o)&&o.isEmpty&&!r.isSoft){const e=wx(o),i=Ax(o);e&&i?(t.execute("outdentList"),r.preventDefault(),n.stop()):e&&!i?(t.execute("splitListItemAfter"),r.preventDefault(),n.stop()):i&&(t.execute("splitListItemBefore"),r.preventDefault(),n.stop())}}),{context:"li"}),this.listenTo(r,"afterExecute",(()=>{const e=n.get("splitListItemBefore");if(e.refresh(),!e.isEnabled)return;2===fx(t.model.document.selection.getLastPosition().parent).length&&e.execute()}))}_setupTabIntegration(){const t=this.editor;this.listenTo(t.editing.view.document,"tab",((e,n)=>{const r=n.shiftKey?"outdentList":"indentList";this.editor.commands.get(r).isEnabled&&(t.execute(r),n.stopPropagation(),n.preventDefault(),e.stop())}),{context:"li"})}_setupConversion(){const t=this.editor,e=t.model,n=this.getListAttributeNames(),r=t.config.get("list.multiBlock"),i=r?"paragraph":"listItem";t.conversion.for("upcast").elementToElement({view:"li",model:(t,{writer:e})=>e.createElement(i,{listType:""})}).elementToElement({view:"p",model:(t,{writer:e})=>t.parent&&t.parent.is("element","li")?e.createElement(i,{listType:""}):null,converterPriority:"high"}).add((t=>{t.on("element:li",$x())})),r||t.conversion.for("downcast").elementToElement({model:"listItem",view:"p"}),t.conversion.for("editingDowncast").elementToElement({model:i,view:Kx(n),converterPriority:"high"}).add((t=>{var r;t.on("attribute",Gx(n,this._downcastStrategies,e)),t.on("remove",(r=e.schema,(t,e,n)=>{const{writer:i,mapper:o}=n,s=t.name.split(":")[1];if(!r.checkAttribute(s,"listItemId"))return;const a=o.toViewPosition(e.position),l=e.position.getShiftedBy(e.length),c=o.toViewPosition(l,{isPhantom:!0}),d=i.createRange(a,c).getTrimmed().end.nodeBefore;d&&Zx(d,i,o)}))})),t.conversion.for("dataDowncast").elementToElement({model:i,view:Kx(n,{dataPipeline:!0}),converterPriority:"high"}).add((t=>{t.on("attribute",Gx(n,this._downcastStrategies,e,{dataPipeline:!0}))}));const o=(s=this._downcastStrategies,a=t.editing.view,(t,e)=>{if(e.modelPosition.offset>0)return;const n=e.modelPosition.parent;if(!px(n))return;if(!s.some((t=>"itemMarker"==t.scope&&t.canInjectMarkerIntoElement&&t.canInjectMarkerIntoElement(n))))return;const r=e.mapper.toViewElement(n),i=a.createRangeIn(r),o=i.getWalker();let l=i.start;for(const{item:t}of o){if(t.is("element")&&e.mapper.toModelElement(t)||t.is("$textProxy"))break;t.is("element")&&t.getCustomProperty("listItemMarker")&&(l=a.createPositionAfter(t),o.skip((({previousPosition:t})=>!t.isEqual(l))))}e.viewPosition=l});var s,a;t.editing.mapper.on("modelToViewPosition",o),t.data.mapper.on("modelToViewPosition",o),this.listenTo(e.document,"change:data",function(t,e,n,r){return()=>{const r=t.document.differ.getChanges(),s=[],a=new Map,l=new Set;for(const t of r)if("insert"==t.type&&"$text"!=t.name)Wx(t.position,a),t.attributes.has("listItemId")?l.add(t.position.nodeAfter):Wx(t.position.getShiftedBy(t.length),a);else if("remove"==t.type&&t.attributes.has("listItemId"))Wx(t.position,a);else if("attribute"==t.type){const e=t.range.start.nodeAfter;n.includes(t.attributeKey)?(Wx(t.range.start,a),null===t.attributeNewValue?(Wx(t.range.start.getShiftedBy(1),a),o(e)&&s.push(e)):l.add(e)):px(e)&&o(e)&&s.push(e)}for(const t of a.values())s.push(...i(t,l));for(const t of new Set(s))e.reconvertItem(t)};function i(t,e){const r=[],i=new Set,a=[];for(const{node:l,previous:c}of ux(t,"forward")){if(i.has(l))continue;const t=l.getAttribute("listIndent");c&&tn.includes(t))));const d=bx(l,{direction:"forward"});for(const t of d)i.add(t),(o(t,d)||s(t,a,e))&&r.push(t)}return r}function o(t,i){const o=e.mapper.toViewElement(t);if(!o)return!1;if(r.fire("checkElement",{modelElement:t,viewElement:o}))return!0;if(!t.is("element","paragraph")&&!t.is("element","listItem"))return!1;const s=Yx(t,n,i);return!(!s||!o.is("element","p"))||!(s||!o.is("element","span"))}function s(t,n,i){if(i.has(t))return!1;const o=e.mapper.toViewElement(t);let s=n.length-1;for(let t=o.parent;!t.is("editableElement");t=t.parent){const e=Ox(t),i=Nx(t);if(!i&&!e)continue;const o="checkAttributes:"+(e?"item":"list");if(r.fire(o,{viewElement:t,modelAttributes:n[s]}))break;if(i&&(s--,s<0))return!1}return!0}}(e,t.editing,n,this),{priority:"high"}),this.on("checkAttributes:item",((t,{viewElement:e,modelAttributes:n})=>{e.id!=n.listItemId&&(t.return=!0,t.stop())})),this.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:n})=>{e.name==qx(n.listType)&&e.id==Ux(n.listType,n.listIndent)||(t.return=!0,t.stop())}))}_setupModelPostFixing(){const t=this.editor.model,e=this.getListAttributeNames();t.document.registerPostFixer((n=>function(t,e,n,r){const i=t.document.differ.getChanges(),o=new Map,s=r.editor.config.get("list.multiBlock");let a=!1;for(const r of i){if("insert"==r.type&&"$text"!=r.name){const i=r.position.nodeAfter;if(!t.schema.checkAttribute(i,"listItemId"))for(const t of Array.from(i.getAttributeKeys()))n.includes(t)&&(e.removeAttribute(t,i),a=!0);Wx(r.position,o),r.attributes.has("listItemId")||Wx(r.position.getShiftedBy(r.length),o);for(const{item:e,previousPosition:n}of t.createRangeIn(i))px(e)&&Wx(n,o)}else"remove"==r.type?Wx(r.position,o):"attribute"==r.type&&n.includes(r.attributeKey)&&(Wx(r.range.start,o),null===r.attributeNewValue&&Wx(r.range.start.getShiftedBy(1),o));if(!s&&"attribute"==r.type&&eE.includes(r.attributeKey)){const t=r.range.start.nodeAfter;null===r.attributeNewValue&&t&&t.is("element","listItem")?(e.rename(t,"paragraph"),a=!0):null===r.attributeOldValue&&t&&t.is("element")&&"listItem"!=t.name&&(e.rename(t,"listItem"),a=!0)}}const l=new Set;for(const t of o.values())a=r.fire("postFixer",{listNodes:new mx(t),listHead:t,writer:e,seenIds:l})||a;return a}(t,n,e,this))),this.on("postFixer",((t,{listNodes:e,writer:n})=>{t.return=function(t,e){let n=0,r=-1,i=null,o=!1;for(const{node:s}of t){const t=s.getAttribute("listIndent");if(t>n){let a;null===i?(i=t-n,a=n):(i>t&&(i=t),a=t-i),a>r+1&&(a=r+1),e.setAttribute("listIndent",a,s),o=!0,r=a}else i=null,n=t+1,r=t}return o}(e,n)||t.return}),{priority:"high"}),this.on("postFixer",((t,{listNodes:e,writer:n,seenIds:r})=>{t.return=function(t,e,n){const r=new Set;let i=!1;for(const{node:o}of t){if(r.has(o))continue;let t=o.getAttribute("listType"),s=o.getAttribute("listItemId");if(e.has(s)&&(s=gx.next()),e.add(s),o.is("element","listItem"))o.getAttribute("listItemId")!=s&&(n.setAttribute("listItemId",s,o),i=!0);else for(const e of bx(o,{direction:"forward"}))r.add(e),e.getAttribute("listType")!=t&&(s=gx.next(),t=e.getAttribute("listType")),e.getAttribute("listItemId")!=s&&(n.setAttribute("listItemId",s,e),i=!0)}return i}(e,r,n)||t.return}),{priority:"high"})}_setupClipboardIntegration(){const t=this.editor.model,e=this.editor.plugins.get("ClipboardPipeline");this.listenTo(t,"insertContent",function(t){return(e,[n,r])=>{const i=n.is("documentFragment")?Array.from(n.getChildren()):[n];if(!i.length)return;const o=(r?t.createSelection(r):t.document.selection).getFirstPosition();let s;if(px(o.parent))s=o.parent;else{if(!px(o.nodeBefore))return;s=o.nodeBefore}t.change((t=>{const e=s.getAttribute("listType"),n=s.getAttribute("listIndent"),r=i[0].getAttribute("listIndent")||0,o=Math.max(n-r,0);for(const n of i){const r=px(n);s.is("element","listItem")&&n.is("element","paragraph")&&t.rename(n,"listItem"),t.setAttributes({listIndent:(r?n.getAttribute("listIndent"):0)+o,listItemId:r?n.getAttribute("listItemId"):gx.next(),listType:e},n)}}))}}(t),{priority:"high"}),this.listenTo(e,"outputTransformation",((e,n)=>{t.change((t=>{const e=Array.from(n.content.getChildren()),r=e[e.length-1];if(e.length>1&&r.is("element")&&r.isEmpty){e.slice(0,-1).every(px)&&t.remove(r)}if("copy"==n.method||"cut"==n.method){const e=Array.from(n.content.getChildren());Bx(e)&&Ex(e,t)}}))}))}_setupAccessibilityIntegration(){const t=this.editor,e=t.t;t.accessibility.addKeystrokeInfoGroup({id:"list",label:e("Keystrokes that can be used in a list"),keystrokes:[{label:e("Increase list item indent"),keystroke:"Tab"},{label:e("Decrease list item indent"),keystroke:"Shift+Tab"}]})}}function rE(t,e){const n=t.document.selection;if(!n.isCollapsed)return!Sx(t);if("forward"===e)return!0;const r=n.getFirstPosition().parent,i=r.previousSibling;return!t.schema.isObject(i)&&(!!i.isEmpty||Bx([r,i]))}function iE(t,e,n,r){t.ui.componentFactory.add(e,(()=>{const i=oE(wm,t,e,n,r);return i.set({tooltip:!0,isToggleable:!0}),i})),t.ui.componentFactory.add(`menuBar:${e}`,(()=>{const i=oE(Ym,t,e,n,r);return i.set({role:"menuitemcheckbox",isToggleable:!0}),i}))}function oE(t,e,n,r,i){const o=e.commands.get(n),s=new t(e.locale);return s.set({label:r,icon:i}),s.bind("isOn","isEnabled").to(o,"value","isEnabled"),s.on("execute",(()=>{e.execute(n),e.editing.view.focus()})),s}class sE extends Lo{static get pluginName(){return"ListUI"}init(){const t=this.editor.t;this.editor.ui.componentFactory.has("numberedList")||iE(this.editor,"numberedList",t("Numbered List"),zu.numberedList),this.editor.ui.componentFactory.has("bulletedList")||iE(this.editor,"bulletedList",t("Bulleted List"),zu.bulletedList)}}class aE extends Lo{static get requires(){return[nE,sE]}static get pluginName(){return"List"}}class lE extends Mo{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute({startIndex:t=1}={}){const e=this.editor.model,n=e.document;let r=Array.from(n.selection.getSelectedBlocks()).filter((t=>px(t)&&Ix(t.getAttribute("listType"))));r=Cx(r),e.change((e=>{for(const n of r)e.setAttribute("listStart",t>=0?t:1,n)}))}_getValue(){const t=Eo(this.editor.model.document.selection.getSelectedBlocks());return t&&px(t)&&Ix(t.getAttribute("listType"))?t.getAttribute("listStart"):null}}const cE={},dE={},hE={},uE=[{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:t,typeAttribute:e,listType:n}of uE)cE[t]=n,dE[t]=e,e&&(hE[e]=t);function mE(){return uE.map((t=>t.listStyle))}function gE(t){return cE[t]||null}function pE(t){return hE[t]||null}function fE(t){return dE[t]||null}class bE extends Mo{defaultType;_supportedTypes;constructor(t,e,n){super(t),this.defaultType=e,this._supportedTypes=n}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.document;e.change((e=>{this._tryToConvertItemsToList(t);let r=Array.from(n.selection.getSelectedBlocks()).filter((t=>t.hasAttribute("listType")));if(r.length){r=Cx(r);for(const n of r)e.setAttribute("listStyle",t.type||this.defaultType,n)}}))}isStyleTypeSupported(t){return!this._supportedTypes||this._supportedTypes.includes(t)}_getValue(){const t=Eo(this.editor.model.document.selection.getSelectedBlocks());return px(t)?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),n=t.commands.get("bulletedList");return e.isEnabled||n.isEnabled}_tryToConvertItemsToList(t){if(!t.type)return;const e=gE(t.type);if(!e)return;const n=this.editor,r=`${e}List`;n.commands.get(r).value||n.execute(r)}}class kE extends Mo{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,n=e.document;let r=Array.from(n.selection.getSelectedBlocks()).filter((t=>px(t)&&"numbered"==t.getAttribute("listType")));r=Cx(r),e.change((e=>{for(const n of r)e.setAttribute("listReversed",!!t.reversed,n)}))}_getValue(){const t=Eo(this.editor.model.document.selection.getSelectedBlocks());return px(t)&&"numbered"==t.getAttribute("listType")?t.getAttribute("listReversed"):null}}function wE(t){return(e,n,r)=>{const{writer:i,schema:o,consumable:s}=r;if(!1===s.test(n.viewItem,t.viewConsumables))return;n.modelRange||Object.assign(n,r.convertChildren(n.viewItem,n.modelCursor));let a=!1;for(const e of n.modelRange.getItems({shallow:!0}))o.checkAttribute(e,t.attributeName)&&t.appliesToListItem(e)&&(e.hasAttribute(t.attributeName)||(i.setAttribute(t.attributeName,t.getAttributeOnUpcast(n.viewItem),e),a=!0));a&&s.consume(n.viewItem,t.viewConsumables)}}class AE extends Lo{static get pluginName(){return"ListPropertiesUtils"}getAllSupportedStyleTypes(){return mE()}getListTypeFromListStyleType(t){return gE(t)}getListStyleTypeFromTypeAttribute(t){return pE(t)}getTypeAttributeFromListStyleType(t){return fE(t)}}function _E(t){const{startIndex:e,reversed:n,styles:r}=t;return{styles:CE(r),startIndex:e||!1,reversed:n||!1}}function CE(t){const e={listTypes:["bulleted","numbered"],useAttribute:!1};return!0===t||(t?Array.isArray(t)||"string"==typeof t?e.listTypes=eo(t):(e.listTypes=t.listTypes?eo(t.listTypes):e.listTypes,e.useAttribute=!!t.useAttribute):e.listTypes=[]),e}const vE="default";class yE extends Lo{static get requires(){return[nE,AE]}static get pluginName(){return"ListPropertiesEditing"}constructor(t){super(t),t.config.define("list.properties",{styles:!0,startIndex:!1,reversed:!1})}init(){const t=this.editor,e=t.model,n=t.plugins.get(nE),r=function(t){const e=[],n=_E(t);if(t.styles){const t=n.styles.useAttribute;e.push({attributeName:"listStyle",defaultValue:vE,viewConsumables:{styles:"list-style-type"},addCommand(e){let n=mE();t&&(n=n.filter((t=>!!fE(t)))),e.commands.add("listStyle",new bE(e,vE,n))},appliesToListItem:t=>"numbered"==t.getAttribute("listType")||"bulleted"==t.getAttribute("listType"),hasValidAttribute(t){if(!this.appliesToListItem(t))return!t.hasAttribute("listStyle");if(!t.hasAttribute("listStyle"))return!1;const e=t.getAttribute("listStyle");return e==vE||gE(e)==t.getAttribute("listType")},setAttributeOnDowncast(e,n,r){if(n&&n!==vE){if(!t)return void e.setStyle("list-style-type",n,r);{const t=fE(n);if(t)return void e.setAttribute("type",t,r)}}e.removeStyle("list-style-type",r),e.removeAttribute("type",r)},getAttributeOnUpcast(t){const e=t.getStyle("list-style-type");if(e)return e;const n=t.getAttribute("type");return n?pE(n):vE}})}t.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,viewConsumables:{attributes:"reversed"},addCommand(t){t.commands.add("listReversed",new kE(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listReversed")},setAttributeOnDowncast(t,e,n){e?t.setAttribute("reversed","reversed",n):t.removeAttribute("reversed",n)},getAttributeOnUpcast:t=>t.hasAttribute("reversed")});t.startIndex&&e.push({attributeName:"listStart",defaultValue:1,viewConsumables:{attributes:"start"},addCommand(t){t.commands.add("listStart",new lE(t))},appliesToListItem:t=>Ix(t.getAttribute("listType")),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listStart")},setAttributeOnDowncast(t,e,n){0==e||e>1?t.setAttribute("start",e,n):t.removeAttribute("start",n)},getAttributeOnUpcast(t){const e=t.getAttribute("start");return e>=0?e:1}});return e}(t.config.get("list.properties"));for(const i of r)i.addCommand(t),e.schema.extend("$listItem",{allowAttributes:i.attributeName}),n.registerDowncastStrategy({scope:"list",attributeName:i.attributeName,setAttributeOnDowncast(t,e,n){i.setAttributeOnDowncast(t,e,n)}});t.conversion.for("upcast").add((t=>{for(const e of r)t.on("element:ol",wE(e)),t.on("element:ul",wE(e))})),n.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:n})=>{for(const i of r)i.getAttributeOnUpcast(e)!=n[i.attributeName]&&(t.return=!0,t.stop())})),this.listenTo(t.commands.get("indentList"),"afterExecute",((t,n)=>{e.change((t=>{for(const e of n)for(const n of r)n.appliesToListItem(e)&&t.setAttribute(n.attributeName,n.defaultValue,e)}))})),n.on("postFixer",((t,{listNodes:e,writer:n})=>{for(const{node:i}of e)for(const e of r)e.hasValidAttribute(i)||(e.appliesToListItem(i)?n.setAttribute(e.attributeName,e.defaultValue,i):n.removeAttribute(e.attributeName,i),t.return=!0)})),n.on("postFixer",((t,{listNodes:e,writer:n})=>{for(const{node:i,previousNodeInList:o}of e)if(o&&o.getAttribute("listType")==i.getAttribute("listType"))for(const e of r){const{attributeName:r}=e;if(!e.appliesToListItem(i))continue;const s=o.getAttribute(r);i.getAttribute(r)!=s&&(n.setAttribute(r,s,i),t.return=!0)}}))}}var xE=n(9968),EE={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(xE.A,EE);xE.A.locals;class BE extends lm{children;stylesView=null;additionalPropertiesCollapsibleView=null;startIndexFieldView=null;reversedSwitchButtonView=null;focusTracker=new Bo;keystrokes=new Do;focusables=new Mu;focusCycler;constructor(t,{enabledProperties:e,styleButtonViews:n,styleGridAriaLabel:r}){super(t);const i=["ck","ck-list-properties"];this.children=this.createCollection(),this.focusCycler=new ym({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),n&&n.length?(this.stylesView=this._createStylesView(n,r),this.children.add(this.stylesView)):i.push("ck-list-properties_without-styles"),(e.startIndex||e.reversed)&&(this._addNumberedListPropertyViews(e),i.push("ck-list-properties_with-numbered-properties")),this.setTemplate({tag:"div",attributes:{class:i},children:this.children})}render(){if(super.render(),this.stylesView){this.focusables.add(this.stylesView),this.focusTracker.add(this.stylesView.element),(this.startIndexFieldView||this.reversedSwitchButtonView)&&(this.focusables.add(this.children.last.buttonView),this.focusTracker.add(this.children.last.buttonView.element));for(const t of this.stylesView.children)this.stylesView.focusTracker.add(t.element);um({keystrokeHandler:this.stylesView.keystrokes,focusTracker:this.stylesView.focusTracker,gridItems:this.stylesView.children,numberOfColumns:()=>Yn.window.getComputedStyle(this.stylesView.element).getPropertyValue("grid-template-columns").split(" ").length,uiLanguageDirection:this.locale&&this.locale.uiLanguageDirection})}if(this.startIndexFieldView){this.focusables.add(this.startIndexFieldView),this.focusTracker.add(this.startIndexFieldView.element);const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t)}this.reversedSwitchButtonView&&(this.focusables.add(this.reversedSwitchButtonView),this.focusTracker.add(this.reversedSwitchButtonView.element)),this.keystrokes.listenTo(this.element)}focus(){this.focusCycler.focusFirst()}focusLast(){this.focusCycler.focusLast()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createStylesView(t,e){const n=new lm(this.locale);return n.children=n.createCollection(),n.children.addMany(t),n.setTemplate({tag:"div",attributes:{"aria-label":e,class:["ck","ck-list-styles-list"]},children:n.children}),n.children.delegate("execute").to(this),n.focus=function(){this.children.first.focus()},n.focusTracker=new Bo,n.keystrokes=new Do,n.render(),n.keystrokes.listenTo(n.element),n}_addNumberedListPropertyViews(t){const e=this.locale.t,n=[];t.startIndex&&(this.startIndexFieldView=this._createStartIndexField(),n.push(this.startIndexFieldView)),t.reversed&&(this.reversedSwitchButtonView=this._createReversedSwitchButton(),n.push(this.reversedSwitchButtonView)),this.stylesView?(this.additionalPropertiesCollapsibleView=new mg(this.locale,n),this.additionalPropertiesCollapsibleView.set({label:e("List properties"),isCollapsed:!0}),this.additionalPropertiesCollapsibleView.buttonView.bind("isEnabled").toMany(n,"isEnabled",((...t)=>t.some((t=>t)))),this.additionalPropertiesCollapsibleView.buttonView.on("change:isEnabled",((t,e,n)=>{n||(this.additionalPropertiesCollapsibleView.isCollapsed=!0)})),this.children.add(this.additionalPropertiesCollapsibleView)):this.children.addMany(n)}_createStartIndexField(){const t=this.locale.t,e=new Sg(this.locale,Lp);return e.set({label:t("Start at"),class:"ck-numbered-list-properties__start-index"}),e.fieldView.set({min:0,step:1,value:1,inputMode:"numeric"}),e.fieldView.on("input",(()=>{const n=e.fieldView.element,r=n.valueAsNumber;Number.isNaN(r)?e.errorText=t("Invalid start index value."):n.checkValidity()?this.fire("listStart",{startIndex:r}):e.errorText=t("Start index must be greater than 0.")})),e}_createReversedSwitchButton(){const t=this.locale.t,e=new og(this.locale);return e.set({withText:!0,label:t("Reversed order"),class:"ck-numbered-list-properties__reversed-order"}),e.delegate("execute").to(this,"listReversed"),e}}var DE=n(7141),SE={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(DE.A,SE);DE.A.locals;class TE extends Lo{static get pluginName(){return"ListPropertiesUI"}init(){const t=this.editor,e=t.locale.t,n=t.config.get("list.properties"),r=_E(n),i=r.styles.listTypes;if(i.includes("bulleted")){const n=[{label:e("Toggle the disc list style"),tooltip:e("Disc"),type:"disc",icon:''},{label:e("Toggle the circle list style"),tooltip:e("Circle"),type:"circle",icon:''},{label:e("Toggle the square list style"),tooltip:e("Square"),type:"square",icon:''}],i=e("Bulleted List"),o=e("Bulleted list styles toolbar"),s="bulletedList";t.ui.componentFactory.add(s,IE({editor:t,normalizedConfig:r,parentCommandName:s,buttonLabel:i,buttonIcon:zu.bulletedList,styleGridAriaLabel:o,styleDefinitions:n})),t.ui.componentFactory.add(`menuBar:${s}`,VE({editor:t,normalizedConfig:r,parentCommandName:s,buttonLabel:i,styleGridAriaLabel:o,styleDefinitions:n}))}if(i.includes("numbered")||n.startIndex||n.reversed){const n=[{label:e("Toggle the decimal list style"),tooltip:e("Decimal"),type:"decimal",icon:''},{label:e("Toggle the decimal with leading zero list style"),tooltip:e("Decimal with leading zero"),type:"decimal-leading-zero",icon:''},{label:e("Toggle the lower–roman list style"),tooltip:e("Lower–roman"),type:"lower-roman",icon:''},{label:e("Toggle the upper–roman list style"),tooltip:e("Upper-roman"),type:"upper-roman",icon:''},{label:e("Toggle the lower–latin list style"),tooltip:e("Lower-latin"),type:"lower-latin",icon:''},{label:e("Toggle the upper–latin list style"),tooltip:e("Upper-latin"),type:"upper-latin",icon:''}],o=e("Numbered List"),s=e("Numbered list styles toolbar"),a="numberedList";t.ui.componentFactory.add(a,IE({editor:t,normalizedConfig:r,parentCommandName:a,buttonLabel:o,buttonIcon:zu.numberedList,styleGridAriaLabel:s,styleDefinitions:n})),i.includes("numbered")&&t.ui.componentFactory.add(`menuBar:${a}`,VE({editor:t,normalizedConfig:r,parentCommandName:a,buttonLabel:o,styleGridAriaLabel:s,styleDefinitions:n}))}}}function IE({editor:t,normalizedConfig:e,parentCommandName:n,buttonLabel:r,buttonIcon:i,styleGridAriaLabel:o,styleDefinitions:s}){const a=t.commands.get(n);return l=>{const c=Dp(l,vp),d=c.buttonView;return c.bind("isEnabled").to(a),c.class="ck-list-styles-dropdown",d.on("execute",(()=>{t.execute(n),t.editing.view.focus()})),d.set({label:r,icon:i,tooltip:!0,isToggleable:!0}),d.bind("isOn").to(a,"value",(t=>!!t)),c.once("change:isOpen",(()=>{const r=function({editor:t,normalizedConfig:e,dropdownView:n,parentCommandName:r,styleDefinitions:i,styleGridAriaLabel:o}){const s=t.locale,a={...e,..."numberedList"!=r?{startIndex:!1,reversed:!1}:null},l=r.replace("List","");let c=null;if(e.styles.listTypes.includes(l)){const e=t.commands.get("listStyle"),n=PE({editor:t,parentCommandName:r,listStyleCommand:e}),o=FE(e);c=i.filter(o).map(n)}const d=new BE(s,{styleGridAriaLabel:o,enabledProperties:a,styleButtonViews:c});e.styles.listTypes.includes(l)&&Vp(n,(()=>d.stylesView.children.find((t=>t.isOn))));if(a.startIndex){const e=t.commands.get("listStart");d.startIndexFieldView.bind("isEnabled").to(e),d.startIndexFieldView.fieldView.bind("value").to(e),d.on("listStart",((e,n)=>t.execute("listStart",n)))}if(a.reversed){const e=t.commands.get("listReversed");d.reversedSwitchButtonView.bind("isEnabled").to(e),d.reversedSwitchButtonView.bind("isOn").to(e,"value",(t=>!!t)),d.on("listReversed",(()=>{const n=e.value;t.execute("listReversed",{reversed:!n})}))}return d.delegate("execute").to(n),d}({editor:t,normalizedConfig:e,dropdownView:c,parentCommandName:n,styleGridAriaLabel:o,styleDefinitions:s});c.panelView.children.add(r)})),c.on("execute",(()=>{t.editing.view.focus()})),c}}function PE({editor:t,listStyleCommand:e,parentCommandName:n}){const r=t.locale,i=t.commands.get(n);return({label:o,type:s,icon:a,tooltip:l})=>{const c=new wm(r);return c.set({label:o,icon:a,tooltip:l}),e.on("change:value",(()=>{c.isOn=e.value===s})),c.on("execute",(()=>{i.value?e.value===s?t.execute(n):e.value!==s&&t.execute("listStyle",{type:s}):t.model.change((()=>{t.execute("listStyle",{type:s})}))})),c}}function VE({editor:t,normalizedConfig:e,parentCommandName:n,buttonLabel:r,styleGridAriaLabel:i,styleDefinitions:o}){return s=>{const a=new ik(s),l=t.commands.get(n),c=t.commands.get("listStyle"),d=FE(c),h=PE({editor:t,parentCommandName:n,listStyleCommand:c}),u=o.filter(d).map(h),m=new BE(s,{styleGridAriaLabel:i,enabledProperties:{...e,startIndex:!1,reversed:!1},styleButtonViews:u});return m.delegate("execute").to(a),a.buttonView.set({label:r,icon:zu[n]}),a.panelView.children.add(m),a.bind("isEnabled").to(l,"isEnabled"),a.on("execute",(()=>{t.editing.view.focus()})),a}}function FE(t){return"function"==typeof t.isStyleTypeSupported?e=>t.isStyleTypeSupported(e.type):()=>!0}class RE extends Lo{static get requires(){return[yE,TE]}static get pluginName(){return"ListProperties"}}class LE extends Mo{constructor(t){super(t),this.on("execute",(()=>{this.refresh()}),{priority:"highest"})}refresh(){const t=this._getSelectedItems();this.value=this._getValue(t),this.isEnabled=!!t.length}execute(t={}){this.editor.model.change((e=>{const n=this._getSelectedItems(),r=void 0===t.forceValue?!this._getValue(n):t.forceValue;for(const t of n)r?e.setAttribute("todoListChecked",!0,t):e.removeAttribute("todoListChecked",t)}))}_getValue(t){return t.every((t=>t.getAttribute("todoListChecked")))}_getSelectedItems(){const t=this.editor.model,e=t.schema,n=t.document.selection.getFirstRange(),r=n.start.parent,i=[];e.checkAttribute(r,"todoListChecked")&&i.push(...fx(r));for(const t of n.getItems({shallow:!0}))e.checkAttribute(t,"todoListChecked")&&!i.includes(t)&&i.push(...fx(t));return i}}class zE extends nl{domEventType=["change"];onDomEvent(t){if(t.target){const e=this.view.domConverter.mapDomToView(t.target);e&&e.is("element","input")&&"checkbox"==e.getAttribute("type")&&e.findAncestor({classes:"todo-list__label"})&&this.fire("todoCheckboxChange",t)}}}const ME=Zi("Ctrl+Enter");class NE extends Lo{static get pluginName(){return"TodoListEditing"}static get requires(){return[nE]}init(){const t=this.editor,e=t.model,n=t.editing,r=t.plugins.get(nE),i=t.config.get("list.multiBlock")?"paragraph":"listItem";t.commands.add("todoList",new Rx(t,"todo")),t.commands.add("checkTodoList",new LE(t)),n.view.addObserver(zE),e.schema.extend("$listItem",{allowAttributes:"todoListChecked"}),e.schema.addAttributeCheck((t=>{const e=t.last;if(!e.getAttribute("listItemId")||"todo"!=e.getAttribute("listType"))return!1}),"todoListChecked"),t.conversion.for("upcast").add((t=>{t.on("element:input",((t,e,n)=>{const r=e.modelCursor,i=r.parent,o=e.viewItem;if(!n.consumable.test(o,{name:!0}))return;if("checkbox"!=o.getAttribute("type")||!r.isAtStart||!i.hasAttribute("listType"))return;n.consumable.consume(o,{name:!0});const s=n.writer;s.setAttribute("listType","todo",i),e.viewItem.hasAttribute("checked")&&s.setAttribute("todoListChecked",!0,i),e.modelRange=s.createRange(r)})),t.on("element:li",((t,e,n)=>{const{writer:r,schema:i}=n;if(!e.modelRange)return;const o=Array.from(e.modelRange.getItems({shallow:!0})).filter((t=>"todo"===t.getAttribute("listType")&&i.checkAttribute(t,"listItemId"))).reduce(((t,e)=>{const n=e.getAttribute("listItemId");return t.has(n)||t.set(n,fx(e)),t}),new Map);for(const[,t]of o.entries())if(t.some((t=>t.getAttribute("todoListChecked"))))for(const e of t)r.setAttribute("todoListChecked",!0,e)}),{priority:"low"}),t.on("element:label",OE({name:"label",classes:"todo-list__label"})),t.on("element:label",OE({name:"label",classes:["todo-list__label","todo-list__label_without-description"]})),t.on("element:span",OE({name:"span",classes:"todo-list__label__description"})),t.on("element:ul",function(t){const e=new as(t);return(t,n,r)=>{const i=e.match(n.viewItem);if(!i)return;const o=i.match;o.name=!1,r.consumable.consume(n.viewItem,o)}}({name:"ul",classes:"todo-list"}))})),t.conversion.for("downcast").elementToElement({model:i,view:(t,{writer:e})=>{if(HE(t,r.getListAttributeNames()))return e.createContainerElement("span",{class:"todo-list__label__description"})},converterPriority:"highest"}),r.registerDowncastStrategy({scope:"list",attributeName:"listType",setAttributeOnDowncast(t,e,n){"todo"==e?t.addClass("todo-list",n):t.removeClass("todo-list",n)}}),r.registerDowncastStrategy({scope:"itemMarker",attributeName:"todoListChecked",createElement(t,e,{dataPipeline:n}){if("todo"!=e.getAttribute("listType"))return null;const r=t.createUIElement("input",{type:"checkbox",...e.getAttribute("todoListChecked")?{checked:"checked"}:null,...n?{disabled:"disabled"}:{tabindex:"-1"}});if(n)return r;const i=t.createContainerElement("span",{contenteditable:"false"},r);return i.getFillerOffset=()=>null,i},canWrapElement:t=>HE(t,r.getListAttributeNames()),createWrapperElement(t,e,{dataPipeline:n}){const i=["todo-list__label"];return HE(e,r.getListAttributeNames())||i.push("todo-list__label_without-description"),t.createAttributeElement(n?"label":"span",{class:i.join(" ")})}}),r.on("checkElement",((t,{modelElement:e,viewElement:n})=>{const i=HE(e,r.getListAttributeNames());n.hasClass("todo-list__label__description")!=i&&(t.return=!0,t.stop())})),r.on("checkElement",((e,{modelElement:n,viewElement:r})=>{const i="todo"==n.getAttribute("listType")&&wx(n);let o=!1;const s=t.editing.view.createPositionBefore(r).getWalker({direction:"backward"});for(const{item:e}of s){if(e.is("element")&&t.editing.mapper.toModelElement(e))break;e.is("element","input")&&"checkbox"==e.getAttribute("type")&&(o=!0)}o!=i&&(e.return=!0,e.stop())})),r.on("postFixer",((t,{listNodes:e,writer:n})=>{for(const{node:r,previousNodeInList:i}of e){if(!i)continue;if(i.getAttribute("listItemId")!=r.getAttribute("listItemId"))continue;const e=i.hasAttribute("todoListChecked"),o=r.hasAttribute("todoListChecked");o&&!e?(n.removeAttribute("todoListChecked",r),t.return=!0):!o&&e&&(n.setAttribute("todoListChecked",!0,r),t.return=!0)}})),e.document.registerPostFixer((t=>{const n=e.document.differ.getChanges();let r=!1;for(const e of n)if("attribute"==e.type&&"listType"==e.attributeKey){const n=e.range.start.nodeAfter;"todo"==e.attributeOldValue&&n.hasAttribute("todoListChecked")&&(t.removeAttribute("todoListChecked",n),r=!0)}else if("insert"==e.type&&"$text"!=e.name)for(const{item:n}of t.createRangeOn(e.position.nodeAfter))n.is("element")&&"todo"!=n.getAttribute("listType")&&n.hasAttribute("todoListChecked")&&(t.removeAttribute("todoListChecked",n),r=!0);return r})),this.listenTo(n.view.document,"keydown",((e,n)=>{Ki(n)===ME&&(t.execute("checkTodoList"),e.stop())}),{priority:"high"}),this.listenTo(n.view.document,"todoCheckboxChange",((t,e)=>{const r=e.target;if(!r||!r.is("element","input"))return;const i=n.view.createPositionAfter(r),o=n.mapper.toModelPosition(i).parent;o&&px(o)&&"todo"==o.getAttribute("listType")&&this._handleCheckmarkChange(o)})),this.listenTo(n.view.document,"arrowKey",function(t,e){return(n,r)=>{const i=Ji(r.keyCode,e.contentLanguageDirection),o=t.schema,s=t.document.selection;if(!s.isCollapsed)return;const a=s.getFirstPosition(),l=a.parent;if("right"==i&&a.isAtEnd){const e=o.getNearestSelectionRange(t.createPositionAfter(l),"forward");if(!e)return;const i=e.start.parent;i&&px(i)&&"todo"==i.getAttribute("listType")&&(t.change((t=>t.setSelection(e))),r.preventDefault(),r.stopPropagation(),n.stop())}else if("left"==i&&a.isAtStart&&px(l)&&"todo"==l.getAttribute("listType")){const e=o.getNearestSelectionRange(t.createPositionBefore(l),"backward");if(!e)return;t.change((t=>t.setSelection(e))),r.preventDefault(),r.stopPropagation(),n.stop()}}}(e,t.locale),{context:"$text"}),this.listenTo(n.mapper,"viewToModelPosition",((t,n)=>{const r=n.viewPosition.parent,i=r.is("attributeElement","li")&&0==n.viewPosition.offset,o=jE(r)&&n.viewPosition.offset<=1,s=r.is("element","span")&&"false"==r.getAttribute("contenteditable")&&jE(r.parent);if(!i&&!o&&!s)return;const a=n.modelPosition.nodeAfter;a&&"todo"==a.getAttribute("listType")&&(n.modelPosition=e.createPositionAt(a,0))}),{priority:"low"}),this._initAriaAnnouncements()}_handleCheckmarkChange(t){const e=this.editor,n=e.model,r=Array.from(n.document.selection.getRanges());n.change((n=>{n.setSelection(t,"end"),e.execute("checkTodoList"),n.setSelection(r)}))}_initAriaAnnouncements(){const{model:t,ui:e,t:n}=this.editor;let r=null;e&&t.document.selection.on("change:range",(()=>{const i=t.document.selection.focus.parent,o=qE(r),s=qE(i);o&&!s?e.ariaLiveAnnouncer.announce(n("Leaving a to-do list")):!o&&s&&e.ariaLiveAnnouncer.announce(n("Entering a to-do list")),r=i}))}}function OE(t){const e=new as(t);return(t,n,r)=>{const i=e.match(n.viewItem);i&&r.consumable.consume(n.viewItem,i.match)&&Object.assign(n,r.convertChildren(n.viewItem,n.modelCursor))}}function HE(t,e){return(t.is("element","paragraph")||t.is("element","listItem"))&&"todo"==t.getAttribute("listType")&&wx(t)&&function(t,e){for(const n of t.getAttributeKeys())if(!n.startsWith("selection:")&&!e.includes(n))return!1;return!0}(t,e)}function jE(t){return!!t&&t.is("attributeElement")&&t.hasClass("todo-list__label")}function qE(t){return!!t&&(!(!t.is("element","paragraph")&&!t.is("element","listItem"))&&"todo"==t.getAttribute("listType"))}class UE extends Lo{static get pluginName(){return"TodoListUI"}init(){const t=this.editor.t;iE(this.editor,"todoList",t("To-do List"),zu.todoList)}}var WE=n(8991),$E={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(WE.A,$E);WE.A.locals;class GE extends Lo{static get requires(){return[NE,UE]}static get pluginName(){return"TodoList"}}function KE(t){return void 0!==t&&t.endsWith("px")}function ZE(t){return t.toFixed(2).replace(/\.?0+$/,"")+"px"}function YE(t,e,n){if(!t.childCount)return;const r=new jh(t.document),i=function(t,e){const n=e.createRangeIn(t),r=[],i=new Set;for(const t of n.getItems()){if(!t.is("element")||!t.name.match(/^(p|h\d+|li|div)$/))continue;let e=iB(t);if(void 0===e||0!=parseFloat(e)||Array.from(t.getClassNames()).find((t=>t.startsWith("MsoList")))||(e=void 0),t.hasStyle("mso-list")||void 0!==e&&i.has(e)){const n=nB(t);r.push({element:t,id:n.id,order:n.order,indent:n.indent,marginLeft:e}),void 0!==e&&i.add(e)}else i.clear()}return r}(t,r);if(!i.length)return;const o={},s=[];for(const t of i)if(void 0!==t.indent){JE(t)||(s.length=0);const i=`${t.id}:${t.indent}`,a=Math.min(t.indent-1,s.length);if(as.length-1||s[a].listElement.name!=l.type){0==a&&"ol"==l.type&&void 0!==t.id&&o[i]&&(l.startIndex=o[i]);const e=eB(l,r,n);if(KE(t.marginLeft)&&(0==a||KE(s[a-1].marginLeft))){let n=t.marginLeft;a>0&&(n=ZE(parseFloat(n)-parseFloat(s[a-1].marginLeft))),r.setStyle("padding-left",n,e)}if(0==s.length){const n=t.element.parent,i=n.getChildIndex(t.element)+1;r.insertChild(i,e,n)}else{const t=s[a-1].listItemElements;r.appendChild(e,t[t.length-1])}s[a]={...t,listElement:e,listItemElements:[]},0==a&&void 0!==t.id&&(o[i]=l.startIndex||1)}}const l="li"==t.element.name?t.element:r.createElement("li");r.appendChild(l,s[a].listElement),s[a].listItemElements.push(l),0==a&&void 0!==t.id&&o[i]++,t.element!=l&&r.appendChild(t.element,l),rB(t.element,r),r.removeStyle("text-indent",t.element),r.removeStyle("margin-left",t.element)}else{const e=s.find((e=>e.marginLeft==t.marginLeft));if(e){const n=e.listItemElements;r.appendChild(t.element,n[n.length-1]),r.removeStyle("margin-left",t.element)}else s.length=0}}function JE(t){const e=t.element.previousSibling;return QE(e||t.element.parent)}function QE(t){return t.is("element","ol")||t.is("element","ul")}function XE(t,e){const n=new RegExp(`@list l${t.id}:level${t.indent}\\s*({[^}]*)`,"gi"),r=/mso-level-number-format:([^;]{0,100});/gi,i=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,o=new RegExp(`@list\\s+l${t.id}:level\\d\\s*{[^{]*mso-level-text:"%\\d\\\\.`,"gi"),s=new RegExp(`@list l${t.id}:level\\d\\s*{[^{]*mso-level-number-format:`,"gi"),a=o.exec(e),l=s.exec(e),c=a&&!l,d=n.exec(e);let h="decimal",u="ol",m=null;if(d&&d[1]){const e=r.exec(d[1]);if(e&&e[1]&&(h=e[1].trim(),u="bullet"!==h&&"image"!==h?"ol":"ul"),"bullet"===h){const e=function(t){if("li"==t.name&&"ul"==t.parent.name&&t.parent.hasAttribute("type"))return t.parent.getAttribute("type");const e=function(t){if(t.getChild(0).is("$text"))return null;for(const e of t.getChildren()){if(!e.is("element","span"))continue;const t=e.getChild(0);if(t)return t.is("$text")?t:t.getChild(0)}return null}(t);if(!e)return null;const n=e._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(t.element);e&&(h=e)}else{const t=i.exec(d[1]);t&&t[1]&&(m=parseInt(t[1]))}c&&(u="ol")}return{type:u,startIndex:m,style:tB(h),isLegalStyleList:c}}function tB(t){if(t.startsWith("arabic-leading-zero"))return"decimal-leading-zero";switch(t){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 t;default:return null}}function eB(t,e,n){const r=e.createElement(t.type);return t.style&&e.setStyle("list-style-type",t.style,r),t.startIndex&&t.startIndex>1&&e.setAttribute("start",t.startIndex,r),t.isLegalStyleList&&n&&e.addClass("legal-list",r),r}function nB(t){const e=t.getStyle("mso-list");if(void 0===e)return{};const n=e.match(/(^|\s{1,100})l(\d+)/i),r=e.match(/\s{0,100}lfo(\d+)/i),i=e.match(/\s{0,100}level(\d+)/i);return n&&r&&i?{id:n[2],order:r[1],indent:parseInt(i[1])}:{indent:1}}function rB(t,e){const n=new as({name:"span",styles:{"mso-list":"Ignore"}}),r=e.createRangeIn(t);for(const t of r)"elementStart"===t.type&&n.match(t.item)&&e.remove(t.item)}function iB(t){const e=t.getStyle("margin-left");return void 0===e||e.endsWith("px")?e:function(t){const e=parseFloat(t);return t.endsWith("pt")?ZE(96*e/72):t.endsWith("pc")?ZE(12*e*96/72):t.endsWith("in")?ZE(96*e):t.endsWith("cm")?ZE(96*e/2.54):t.endsWith("mm")?ZE(e/10*96/2.54):t}(e)}function oB(t,e){if(!t.childCount)return;const n=new jh(t.document),r=function(t,e){const n=e.createRangeIn(t),r=new as({name:/v:(.+)/}),i=[];for(const t of n){if("elementStart"!=t.type)continue;const e=t.item,n=e.previousSibling,o=n&&n.is("element")?n.name:null,s=["Chart"],a=r.match(e),l=e.getAttribute("o:gfxdata"),c="v:shapetype"===o,d=l&&s.some((t=>e.getAttribute("id").includes(t)));a&&l&&!c&&!d&&i.push(t.item.getAttribute("id"))}return i}(t,n);!function(t,e,n){const r=n.createRangeIn(e),i=new as({name:"img"}),o=[];for(const e of r)if(e.item.is("element")&&i.match(e.item)){const n=e.item,r=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];r.length&&r.every((e=>t.indexOf(e)>-1))?o.push(n):n.getAttribute("src")||o.push(n)}for(const t of o)n.remove(t)}(r,t,n),function(t,e,n){const r=n.createRangeIn(e),i=[];for(const e of r)if("elementStart"==e.type&&e.item.is("element","v:shape")){const n=e.item.getAttribute("id");if(t.includes(n))continue;o(e.item.parent.getChildren(),n)||i.push(e.item)}for(const t of i){const e={src:s(t)};t.hasAttribute("alt")&&(e.alt=t.getAttribute("alt"));const r=n.createElement("img",e);n.insertChild(t.index+1,r,t.parent)}function o(t,e){for(const n of t)if(n.is("element")){if("img"==n.name&&n.getAttribute("v:shapes")==e)return!0;if(o(n.getChildren(),e))return!0}return!1}function s(t){for(const e of t.getChildren())if(e.is("element")&&e.getAttribute("src"))return e.getAttribute("src")}}(r,t,n),function(t,e){const n=e.createRangeIn(t),r=new as({name:/v:(.+)/}),i=[];for(const t of n)"elementStart"==t.type&&r.match(t.item)&&i.push(t.item);for(const t of i)e.remove(t)}(t,n);const i=function(t,e){const n=e.createRangeIn(t),r=new as({name:"img"}),i=[];for(const t of n)t.item.is("element")&&r.match(t.item)&&t.item.getAttribute("src").startsWith("file://")&&i.push(t.item);return i}(t,n);i.length&&function(t,e,n){if(t.length===e.length)for(let r=0;rString.fromCharCode(parseInt(t,16)))).join(""))}const aB=//i,lB=/xmlns:o="urn:schemas-microsoft-com/i;class cB{document;hasMultiLevelListPlugin;constructor(t,e=!1){this.document=t,this.hasMultiLevelListPlugin=e}isActive(t){return aB.test(t)||lB.test(t)}execute(t){const{body:e,stylesString:n}=t._parsedData;YE(e,n,this.hasMultiLevelListPlugin),oB(e,t.dataTransfer.getData("text/rtf")),function(t){const e=[],n=new jh(t.document);for(const{item:r}of n.createRangeIn(t))if(r.is("element")){for(const t of r.getClassNames())/\bmso/gi.exec(t)&&n.removeClass(t,r);for(const t of r.getStyleNames())/\bmso/gi.exec(t)&&n.removeStyle(t,r);(r.is("element","w:sdt")||r.is("element","w:sdtpr")&&r.isEmpty||r.is("element","o:p")&&r.isEmpty)&&e.push(r)}for(const t of e){const e=t.parent,r=e.getChildIndex(t);n.insertChild(r,t.getChildren(),e),n.remove(t)}}(e),t.content=e}}function dB(t,e,n,{blockElements:r,inlineObjectElements:i}){let o=n.createPositionAt(t,"forward"==e?"after":"before");return o=o.getLastMatchingPosition((({item:t})=>t.is("element")&&!r.includes(t.name)&&!i.includes(t.name)),{direction:e}),"forward"==e?o.nodeAfter:o.nodeBefore}function hB(t,e){return!!t&&t.is("element")&&e.includes(t.name)}const uB=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class mB{document;constructor(t){this.document=t}isActive(t){return uB.test(t)}execute(t){const e=new jh(this.document),{body:n}=t._parsedData;!function(t,e){for(const n of t.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const r=t.getChildIndex(n);e.remove(n),e.insertChild(r,n.getChildren(),t)}}(n,e),function(t,e){for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","li")){const n=t.getChild(0);n&&n.is("element","p")&&e.unwrapElement(n)}}}(n,e),function(t,e){const n=new sa(e.document.stylesProcessor),r=new Za(n,{renderingMode:"data"}),i=r.blockElements,o=r.inlineObjectElements,s=[];for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","br")){const n=dB(t,"forward",e,{blockElements:i,inlineObjectElements:o}),r=dB(t,"backward",e,{blockElements:i,inlineObjectElements:o}),a=hB(n,i);(hB(r,i)||a)&&s.push(t)}}for(const t of s)t.hasClass("Apple-interchange-newline")?e.remove(t):e.replace(t,e.createElement("p"))}(n,e),t.content=n}}const gB=/(\s+)<\/span>/g,((t,e)=>1===e.length?" ":Array(e.length+1).join("  ").substr(0,e.length)))}function bB(t,e){const n=new DOMParser,r=function(t){return fB(fB(t)).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(t){const e="",n="",r=t.indexOf(e);if(r<0)return t;const i=t.indexOf(n,r+e.length);return t.substring(0,r+e.length)+(i>=0?t.substring(i):"")}(t=(t=t.replace(//g,"")}(r.getData("text/html")):r.getData("text/plain")&&(((o=(o=r.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("

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

                ${o}

                `),t=o),i=this.editor.data.htmlProcessor.toView(t)}var o;const s=new mr(this,"inputTransformation");this.fire(s,{content:i,dataTransfer:r,targetRanges:e.targetRanges,method:e.method}),s.stop.called&&t.stop(),n.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",((t,n)=>{if(n.content.isEmpty)return;const r=this.editor.data.toModel(n.content,"$clipboardHolder");0!=r.childCount&&(t.stop(),e.change((()=>{this.fire("contentInsertion",{content:r,method:n.method,dataTransfer:n.dataTransfer,targetRanges:n.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((t,e)=>{e.resultRange=i._pasteFragmentWithMarkers(e.content)}),{priority:"low"})}_setupCopyCut(){const t=this.editor,e=t.model.document,n=t.editing.view.document,r=(t,n)=>{const r=n.dataTransfer;n.preventDefault(),this._fireOutputTransformationEvent(r,e.selection,t.name)};this.listenTo(n,"copy",r,{priority:"low"}),this.listenTo(n,"cut",((e,n)=>{t.model.canEditAt(t.model.document.selection)?r(e,n):n.preventDefault()}),{priority:"low"}),this.listenTo(this,"outputTransformation",((e,r)=>{const i=t.data.toView(r.content);n.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:i,method:r.method})}),{priority:"low"}),this.listenTo(n,"clipboardOutput",((n,r)=>{r.content.isEmpty||(r.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(r.content)),r.dataTransfer.setData("text/plain",UA(r.content))),"cut"==r.method&&t.model.deleteContent(e.selection)}),{priority:"low"})}}class c_ extends(Dr()){_stack=[];add(t,e){const n=this._stack,r=n[0];this._insertDescriptor(t);const i=n[0];r===i||d_(r,i)||this.fire("change:top",{oldDescriptor:r,newDescriptor:i,writer:e})}remove(t,e){const n=this._stack,r=n[0];this._removeDescriptor(t);const i=n[0];r===i||d_(r,i)||this.fire("change:top",{oldDescriptor:r,newDescriptor:i,writer:e})}_insertDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t.id));if(d_(t,e[n]))return;n>-1&&e.splice(n,1);let r=0;for(;e[r]&&h_(e[r],t);)r++;e.splice(r,0,t)}_removeDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t));n>-1&&e.splice(n,1)}}function d_(t,e){return t&&e&&t.priority==e.priority&&u_(t.classes)==u_(e.classes)}function h_(t,e){return t.priority>e.priority||!(t.priorityu_(e.classes)}function u_(t){return Array.isArray(t)?t.sort().join(","):t}const m_='',g_="ck-widget_selected";function p_(t){return!!t.is("element")&&!!t.getCustomProperty("widget")}function f_(t,e,n={}){if(!t.is("containerElement"))throw new kr("widget-to-widget-wrong-element-type",null,{element:t});return e.setAttribute("contenteditable","false",t),e.addClass("ck-widget",t),e.setCustomProperty("widget",!0,t),t.getFillerOffset=v_,e.setCustomProperty("widgetLabel",[],t),n.label&&function(t,e){const n=t.getCustomProperty("widgetLabel");n.push(e)}(t,n.label),n.hasSelectionHandle&&function(t,e){const n=e.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(t){const e=this.toDomElement(t),n=new pm;return n.set("content",m_),n.render(),e.appendChild(n.element),e}));e.insert(e.createPositionAt(t,0),n),e.addClass(["ck-widget_with-selection-handle"],t)}(t,e),w_(t,e),t}function b_(t,e,n){if(e.classes&&n.addClass(eo(e.classes),t),e.attributes)for(const r in e.attributes)n.setAttribute(r,e.attributes[r],t)}function k_(t,e,n){if(e.classes&&n.removeClass(eo(e.classes),t),e.attributes)for(const r in e.attributes)n.removeAttribute(r,t)}function w_(t,e,n=b_,r=k_){const i=new c_;i.on("change:top",((e,i)=>{i.oldDescriptor&&r(t,i.oldDescriptor,i.writer),i.newDescriptor&&n(t,i.newDescriptor,i.writer)}));e.setCustomProperty("addHighlight",((t,e,n)=>i.add(e,n)),t),e.setCustomProperty("removeHighlight",((t,e,n)=>i.remove(e,n)),t)}function A_(t,e,n={}){return e.addClass(["ck-editor__editable","ck-editor__nested-editable"],t),e.setAttribute("role","textbox",t),e.setAttribute("tabindex","-1",t),n.label&&e.setAttribute("aria-label",n.label,t),e.setAttribute("contenteditable",t.isReadOnly?"false":"true",t),t.on("change:isReadOnly",((n,r,i)=>{e.setAttribute("contenteditable",i?"false":"true",t)})),t.on("change:isFocused",((n,r,i)=>{i?e.addClass("ck-editor__nested-editable_focused",t):e.removeClass("ck-editor__nested-editable_focused",t)})),w_(t,e),t}function __(t,e){const n=t.getSelectedElement();if(n){const r=B_(t);if(r)return e.createRange(e.createPositionAt(n,r))}return e.schema.findOptimalInsertionRange(t)}function C_(t,e){return(n,r)=>{const{mapper:i,viewPosition:o}=r,s=i.findMappedViewAncestor(o);if(!e(s))return;const a=i.toModelElement(s);r.modelPosition=t.createPositionAt(a,o.isAtStart?"before":"after")}}function v_(){return null}function y_(t){const e=t=>{const{width:e,paddingLeft:n,paddingRight:r}=t.ownerDocument.defaultView.getComputedStyle(t);return parseFloat(e)-(parseFloat(n)||0)-(parseFloat(r)||0)},n=t.parentElement;if(!n)return 0;let r=e(n);let i=0,o=n;for(;isNaN(r);){if(o=o.parentElement,++i>5)return 0;r=e(o)}return r}const x_="widget-type-around";function E_(t,e,n){return!!t&&p_(t)&&!n.isInline(e)}function B_(t){return t.getAttribute(x_)}var D_=n(8508),S_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(D_.A,S_);D_.A.locals;const T_=["before","after"],I_=(new DOMParser).parseFromString('',"image/svg+xml").firstChild,P_="ck-widget__type-around_disabled";class V_ extends Lo{_currentFakeCaretModelElement=null;static get pluginName(){return"WidgetTypeAround"}static get requires(){return[pA,sw]}init(){const t=this.editor,e=t.editing.view;this.on("change:isEnabled",((n,r,i)=>{e.change((t=>{for(const n of e.document.roots)i?t.removeClass(P_,n):t.addClass(P_,n)})),i||t.model.change((t=>{t.removeSelectionAttribute(x_)}))})),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(t,e){const n=this.editor,r=n.editing.view,i=n.model.schema.getAttributesWithProperty(t,"copyOnReplace",!0);n.execute("insertParagraph",{position:n.model.createPositionAt(t,e),attributes:i}),r.focus(),r.scrollToTheSelection()}_listenToIfEnabled(t,e,n,r){this.listenTo(t,e,((...t)=>{this.isEnabled&&n(...t)}),r)}_insertParagraphAccordingToFakeCaretPosition(){const t=this.editor.model.document.selection,e=B_(t);if(!e)return!1;const n=t.getSelectedElement();return this._insertParagraph(n,e),!0}_enableTypeAroundUIInjection(){const t=this.editor,e=t.model.schema,n=t.locale.t,r={before:n("Insert paragraph before block"),after:n("Insert paragraph after block")};t.editing.downcastDispatcher.on("insert",((t,i,o)=>{const s=o.mapper.toViewElement(i.item);if(s&&E_(s,i.item,e)){!function(t,e,n){const r=t.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(t){const n=this.toDomElement(t);return function(t,e){for(const n of T_){const r=new Nu({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${n}`],title:e[n],"aria-hidden":"true"},children:[t.ownerDocument.importNode(I_,!0)]});t.appendChild(r.render())}}(n,e),function(t){const e=new Nu({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});t.appendChild(e.render())}(n),n}));t.insert(t.createPositionAt(n,"end"),r)}(o.writer,r,s);s.getCustomProperty("widgetLabel").push((()=>this.isEnabled?n("Press Enter to type after or press Shift + Enter to type before the widget"):""))}}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const t=this.editor,e=t.model,n=e.document.selection,r=e.schema,i=t.editing.view;function o(t){return`ck-widget_type-around_show-fake-caret_${t}`}this._listenToIfEnabled(i.document,"arrowKey",((t,e)=>{this._handleArrowKeyPress(t,e)}),{context:[p_,"$text"],priority:"high"}),this._listenToIfEnabled(n,"change:range",((e,n)=>{n.directChange&&t.model.change((t=>{t.removeSelectionAttribute(x_)}))})),this._listenToIfEnabled(e.document,"change:data",(()=>{const e=n.getSelectedElement();if(e){if(E_(t.editing.mapper.toViewElement(e),e,r))return}t.model.change((t=>{t.removeSelectionAttribute(x_)}))})),this._listenToIfEnabled(t.editing.downcastDispatcher,"selection",((t,e,n)=>{const i=n.writer;if(this._currentFakeCaretModelElement){const t=n.mapper.toViewElement(this._currentFakeCaretModelElement);t&&(i.removeClass(T_.map(o),t),this._currentFakeCaretModelElement=null)}const s=e.selection.getSelectedElement();if(!s)return;const a=n.mapper.toViewElement(s);if(!E_(a,s,r))return;const l=B_(e.selection);l&&(i.addClass(o(l),a),this._currentFakeCaretModelElement=s)})),this._listenToIfEnabled(t.ui.focusTracker,"change:isFocused",((e,n,r)=>{r||t.model.change((t=>{t.removeSelectionAttribute(x_)}))}))}_handleArrowKeyPress(t,e){const n=this.editor,r=n.model,i=r.document.selection,o=r.schema,s=n.editing.view,a=function(t,e){const n=Ji(t,e);return"down"===n||"right"===n}(e.keyCode,n.locale.contentLanguageDirection),l=s.document.selection.getSelectedElement();let c;E_(l,n.editing.mapper.toModelElement(l),o)?c=this._handleArrowKeyPressOnSelectedWidget(a):i.isCollapsed?c=this._handleArrowKeyPressWhenSelectionNextToAWidget(a):e.shiftKey||(c=this._handleArrowKeyPressWhenNonCollapsedSelection(a)),c&&(e.preventDefault(),t.stop())}_handleArrowKeyPressOnSelectedWidget(t){const e=this.editor.model,n=B_(e.document.selection);return e.change((e=>{if(!n)return e.setSelectionAttribute(x_,t?"after":"before"),!0;if(!(n===(t?"after":"before")))return e.removeSelectionAttribute(x_),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(t){const e=this.editor,n=e.model,r=n.schema,i=e.plugins.get("Widget"),o=i._getObjectElementNextToSelection(t);return!!E_(e.editing.mapper.toViewElement(o),o,r)&&(n.change((e=>{i._setSelectionOverElement(o),e.setSelectionAttribute(x_,t?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(t){const e=this.editor,n=e.model,r=n.schema,i=e.editing.mapper,o=n.document.selection,s=t?o.getLastPosition().nodeBefore:o.getFirstPosition().nodeAfter;return!!E_(i.toViewElement(s),s,r)&&(n.change((e=>{e.setSelection(s,"on"),e.setSelectionAttribute(x_,t?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const t=this.editor,e=t.editing.view;this._listenToIfEnabled(e.document,"mousedown",((n,r)=>{const i=r.domTarget.closest(".ck-widget__type-around__button");if(!i)return;const o=function(t){return t.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(i),s=function(t,e){const n=t.closest(".ck-widget");return e.mapDomToView(n)}(i,e.domConverter),a=t.editing.mapper.toModelElement(s);this._insertParagraph(a,o),r.preventDefault(),n.stop()}))}_enableInsertingParagraphsOnEnterKeypress(){const t=this.editor,e=t.model.document.selection,n=t.editing.view;this._listenToIfEnabled(n.document,"enter",((n,r)=>{if("atTarget"!=n.eventPhase)return;const i=e.getSelectedElement(),o=t.editing.mapper.toViewElement(i),s=t.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:E_(o,i,s)&&(this._insertParagraph(i,r.isSoft?"before":"after"),a=!0),a&&(r.preventDefault(),n.stop())}),{context:p_})}_enableInsertingParagraphsOnTypingKeystroke(){const t=this.editor.editing.view.document;this._listenToIfEnabled(t,"insertText",((e,n)=>{this._insertParagraphAccordingToFakeCaretPosition()&&(n.selection=t.selection)}),{priority:"high"}),Xn.isAndroid?this._listenToIfEnabled(t,"keydown",((t,e)=>{229==e.keyCode&&this._insertParagraphAccordingToFakeCaretPosition()})):this._listenToIfEnabled(t,"compositionstart",(()=>{this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"high"})}_enableDeleteIntegration(){const t=this.editor,e=t.editing.view,n=t.model,r=n.schema;this._listenToIfEnabled(e.document,"delete",((e,i)=>{if("atTarget"!=e.eventPhase)return;const o=B_(n.document.selection);if(!o)return;const s=i.direction,a=n.document.selection.getSelectedElement(),l="forward"==s;if("before"===o===l)t.execute("delete",{selection:n.createSelection(a,"on")});else{const e=r.getNearestSelectionRange(n.createPositionAt(a,o),s);if(e)if(e.isCollapsed){const i=n.createSelection(e.start);if(n.modifySelection(i,{direction:s}),i.focus.isEqual(e.start)){const t=function(t,e){let n=e;for(const r of e.getAncestors({parentFirst:!0})){if(r.childCount>1||t.isLimit(r))break;n=r}return n}(r,e.start.parent);n.deleteContent(n.createSelection(t,"on"),{doNotAutoparagraph:!0})}else n.change((n=>{n.setSelection(e),t.execute(l?"deleteForward":"delete")}))}else n.change((n=>{n.setSelection(e),t.execute(l?"deleteForward":"delete")}))}i.preventDefault(),e.stop()}),{context:p_})}_enableInsertContentIntegration(){const t=this.editor,e=this.editor.model,n=e.document.selection;this._listenToIfEnabled(t.model,"insertContent",((t,[r,i])=>{if(i&&!i.is("documentSelection"))return;const o=B_(n);return o?(t.stop(),e.change((t=>{const i=n.getSelectedElement(),s=e.createPositionAt(i,o),a=t.createSelection(s),l=e.insertContent(r,a);return t.setSelection(a),l}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"insertObject",((t,n)=>{const[,r,i={}]=n;if(r&&!r.is("documentSelection"))return;const o=B_(e);o&&(i.findOptimalPosition=o,n[3]=i)}),{priority:"high"})}_enableDeleteContentIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"deleteContent",((t,[n])=>{if(n&&!n.is("documentSelection"))return;B_(e)&&t.stop()}),{priority:"high"})}}function F_(t){const e=t.model;return(n,r)=>{const i=r.keyCode==$i.arrowup,o=r.keyCode==$i.arrowdown,s=r.shiftKey,a=e.document.selection;if(!i&&!o)return;const l=o;if(s&&function(t,e){return!t.isCollapsed&&t.isBackward==e}(a,l))return;const c=function(t,e,n){const r=t.model;if(n){const t=e.isCollapsed?e.focus:e.getLastPosition(),n=R_(r,t,"forward");if(!n)return null;const i=r.createRange(t,n),o=L_(r.schema,i,"backward");return o?r.createRange(t,o):null}{const t=e.isCollapsed?e.focus:e.getFirstPosition(),n=R_(r,t,"backward");if(!n)return null;const i=r.createRange(n,t),o=L_(r.schema,i,"forward");return o?r.createRange(o,t):null}}(t,a,l);if(c){if(c.isCollapsed){if(a.isCollapsed)return;if(s)return}(c.isCollapsed||function(t,e,n){const r=t.model,i=t.view.domConverter;if(n){const t=r.createSelection(e.start);r.modifySelection(t),t.focus.isAtEnd||e.start.isEqual(t.focus)||(e=r.createRange(t.focus,e.end))}const o=t.mapper.toViewRange(e),s=i.viewRangeToDom(o),a=fi.getDomRangeRects(s);let l;for(const t of a)if(void 0!==l){if(Math.round(t.top)>=l)return!1;l=Math.max(l,Math.round(t.bottom))}else l=Math.round(t.bottom);return!0}(t,c,l))&&(e.change((t=>{const n=l?c.end:c.start;if(s){const r=e.createSelection(a.anchor);r.setFocus(n),t.setSelection(r)}else t.setSelection(n)})),n.stop(),r.preventDefault(),r.stopPropagation())}}}function R_(t,e,n){const r=t.schema,i=t.createRangeIn(e.root),o="forward"==n?"elementStart":"elementEnd";for(const{previousPosition:t,item:s,type:a}of i.getWalker({startPosition:e,direction:n})){if(r.isLimit(s)&&!r.isInline(s))return t;if(a==o&&r.isBlock(s))return null}return null}function L_(t,e,n){const r="backward"==n?e.end:e.start;if(t.checkChild(r,"$text"))return r;for(const{nextPosition:r}of e.getWalker({direction:n}))if(t.checkChild(r,"$text"))return r;return null}var z_=n(695),M_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(z_.A,M_);z_.A.locals;class N_ extends Lo{_previouslySelected=new Set;static get pluginName(){return"Widget"}static get requires(){return[V_,sw]}init(){const t=this.editor,e=t.editing.view,n=e.document,r=t.t;this.editor.editing.downcastDispatcher.on("selection",((e,n,r)=>{const i=r.writer,o=n.selection;if(o.isCollapsed)return;const s=o.getSelectedElement();if(!s)return;const a=t.editing.mapper.toViewElement(s);var l;p_(a)&&(r.consumable.consume(o,"selection")&&i.setSelection(i.createRangeOn(a),{fake:!0,label:(l=a,l.getCustomProperty("widgetLabel").reduce(((t,e)=>"function"==typeof e?t?t+". "+e():e():t?t+". "+e:e),""))}))})),this.editor.editing.downcastDispatcher.on("selection",((t,e,n)=>{this._clearPreviouslySelectedWidgets(n.writer);const r=n.writer,i=r.document.selection;let o=null;for(const t of i.getRanges())for(const e of t){const t=e.item;p_(t)&&!O_(t,o)&&(r.addClass(g_,t),this._previouslySelected.add(t),o=t)}}),{priority:"low"}),e.addObserver(Hh),this.listenTo(n,"mousedown",((...t)=>this._onMousedown(...t))),this.listenTo(n,"arrowKey",((...t)=>{this._handleSelectionChangeOnArrowKeyPress(...t)}),{context:[p_,"$text"]}),this.listenTo(n,"arrowKey",((...t)=>{this._preventDefaultOnArrowKeyPress(...t)}),{context:"$root"}),this.listenTo(n,"arrowKey",F_(this.editor.editing),{context:"$text"}),this.listenTo(n,"delete",((t,e)=>{this._handleDelete("forward"==e.direction)&&(e.preventDefault(),t.stop())}),{context:"$root"}),this.listenTo(n,"tab",((t,e)=>{"atTarget"==t.eventPhase&&(e.shiftKey||this._selectFirstNestedEditable()&&(e.preventDefault(),t.stop()))}),{context:p_,priority:"low"}),this.listenTo(n,"tab",((t,e)=>{e.shiftKey&&this._selectAncestorWidget()&&(e.preventDefault(),t.stop())}),{priority:"low"}),this.listenTo(n,"keydown",((t,e)=>{e.keystroke==$i.esc&&this._selectAncestorWidget()&&(e.preventDefault(),t.stop())}),{priority:"low"}),t.accessibility.addKeystrokeInfoGroup({id:"widget",label:r("Keystrokes that can be used when a widget is selected (for example: image, table, etc.)"),keystrokes:[{label:r("Move focus from an editable area back to the parent widget"),keystroke:"Esc"},{label:r("Insert a new paragraph directly after a widget"),keystroke:"Enter"},{label:r("Insert a new paragraph directly before a widget"),keystroke:"Shift+Enter"},{label:r("Move the caret to allow typing directly before a widget"),keystroke:[["arrowup"],["arrowleft"]]},{label:r("Move the caret to allow typing directly after a widget"),keystroke:[["arrowdown"],["arrowright"]]}]})}_onMousedown(t,e){const n=this.editor,r=n.editing.view,i=r.document;let o=e.target;if(!o)return;if(e.domEvent.detail>=3)return void(this._selectBlockContent(o)&&e.preventDefault());if(!p_(o)){const t=function(t){let e=t;for(;e;){if(e.is("editableElement")||p_(e))return e;e=e.parent}return null}(o);if(!t)return;if(p_(t))o=t;else{const t=function(t,e){const n=hi(e.domEvent);let r=null;r=n?t.domConverter.domRangeToView(n):t.createRange(t.createPositionAt(e.target,0));if(!r)return null;const i=r.start;if(!i.parent)return null;let o=i.parent;i.parent.is("editableElement")&&(i.isAtEnd&&i.nodeBefore?o=i.nodeBefore:i.isAtStart&&i.nodeAfter&&(o=i.nodeAfter));if(o.is("$text"))return o.parent;return o}(r,e);if(!t||!p_(t))return;o=t}}Xn.isAndroid&&e.preventDefault(),i.isFocused||r.focus();const s=n.editing.mapper.toModelElement(o);this._setSelectionOverElement(s)}_selectBlockContent(t){const e=this.editor,n=e.model,r=e.editing.mapper,i=n.schema,o=r.findMappedViewAncestor(this.editor.editing.view.createPositionAt(t,0)),s=function(t,e){for(const n of t.getAncestors({includeSelf:!0,parentFirst:!0})){if(e.checkChild(n,"$text"))return n;if(e.isLimit(n)&&!e.isObject(n))break}return null}(r.toModelElement(o),n.schema);return!!s&&(n.change((t=>{const e=i.isLimit(s)?null:function(t,e){const n=new Ul({startPosition:t});for(const{item:t}of n){if(e.isLimit(t)||!t.is("element"))return null;if(e.checkChild(t,"$text"))return t}return null}(t.createPositionAfter(s),i),n=t.createPositionAt(s,0),r=e?t.createPositionAt(e,0):t.createPositionAt(s,"end");t.setSelection(t.createRange(n,r))})),!0)}_handleSelectionChangeOnArrowKeyPress(t,e){const n=e.keyCode,r=this.editor.model,i=r.schema,o=r.document.selection,s=o.getSelectedElement(),a=Ji(n,this.editor.locale.contentLanguageDirection),l="down"==a||"right"==a,c="up"==a||"down"==a;if(s&&i.isObject(s)){const n=l?o.getLastPosition():o.getFirstPosition(),s=i.getNearestSelectionRange(n,l?"forward":"backward");return void(s&&(r.change((t=>{t.setSelection(s)})),e.preventDefault(),t.stop()))}if(!o.isCollapsed&&!e.shiftKey){const n=o.getFirstPosition(),s=o.getLastPosition(),a=n.nodeAfter,c=s.nodeBefore;return void((a&&i.isObject(a)||c&&i.isObject(c))&&(r.change((t=>{t.setSelection(l?s:n)})),e.preventDefault(),t.stop()))}if(!o.isCollapsed)return;const d=this._getObjectElementNextToSelection(l);if(d&&i.isObject(d)){if(i.isInline(d)&&c)return;this._setSelectionOverElement(d),e.preventDefault(),t.stop()}}_preventDefaultOnArrowKeyPress(t,e){const n=this.editor.model,r=n.schema,i=n.document.selection.getSelectedElement();i&&r.isObject(i)&&(e.preventDefault(),t.stop())}_handleDelete(t){const e=this.editor.model.document.selection;if(!this.editor.model.canEditAt(e))return;if(!e.isCollapsed)return;const n=this._getObjectElementNextToSelection(t);return n?(this.editor.model.change((t=>{let r=e.anchor.parent;for(;r.isEmpty;){const e=r;r=e.parent,t.remove(e)}this._setSelectionOverElement(n)})),!0):void 0}_setSelectionOverElement(t){this.editor.model.change((e=>{e.setSelection(e.createRangeOn(t))}))}_getObjectElementNextToSelection(t){const e=this.editor.model,n=e.schema,r=e.document.selection,i=e.createSelection(r);if(e.modifySelection(i,{direction:t?"forward":"backward"}),i.isEqual(r))return null;const o=t?i.focus.nodeBefore:i.focus.nodeAfter;return o&&n.isObject(o)?o:null}_clearPreviouslySelectedWidgets(t){for(const e of this._previouslySelected)t.removeClass(g_,e);this._previouslySelected.clear()}_selectFirstNestedEditable(){const t=this.editor,e=this.editor.editing.view.document;for(const n of e.selection.getFirstRange().getItems())if(n.is("editableElement")){const e=t.editing.mapper.toModelElement(n);if(!e)continue;const r=t.model.createPositionAt(e,0),i=t.model.schema.getNearestSelectionRange(r,"forward");return t.model.change((t=>{t.setSelection(i)})),!0}return!1}_selectAncestorWidget(){const t=this.editor,e=t.editing.mapper,n=t.editing.view.document.selection.getFirstPosition().parent,r=(n.is("$text")?n.parent:n).findAncestor(p_);if(!r)return!1;const i=e.toModelElement(r);return!!i&&(t.model.change((t=>{t.setSelection(i,"on")})),!0)}}function O_(t,e){return!!e&&Array.from(t.getAncestors()).includes(e)}class H_ extends Lo{_toolbarDefinitions=new Map;_balloon;static get requires(){return[yb]}static get pluginName(){return"WidgetToolbarRepository"}init(){const t=this.editor;if(t.plugins.has("BalloonToolbar")){const e=t.plugins.get("BalloonToolbar");this.listenTo(e,"show",(e=>{(function(t){const e=t.getSelectedElement();return!(!e||!p_(e))})(t.editing.view.document.selection)&&e.stop()}),{priority:"high"})}this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui,"update",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui.focusTracker,"change:isFocused",(()=>{this._updateToolbarsVisibility()}),{priority:"low"})}destroy(){super.destroy();for(const t of this._toolbarDefinitions.values())t.view.destroy()}register(t,{ariaLabel:e,items:n,getRelatedElement:r,balloonClassName:i="ck-toolbar-container"}){if(!n.length)return void wr("widget-toolbar-no-items",{toolbarId:t});const o=this.editor,s=o.t,a=new bp(o.locale);if(a.ariaLabel=e||s("Widget toolbar"),this._toolbarDefinitions.has(t))throw new kr("widget-toolbar-duplicated",this,{toolbarId:t});const l={view:a,getRelatedElement:r,balloonClassName:i,itemsConfig:n,initialized:!1};o.ui.addToolbar(a,{isContextual:!0,beforeFocus:()=>{const t=r(o.editing.view.document.selection);t&&this._showToolbar(l,t)},afterBlur:()=>{this._hideToolbar(l)}}),this._toolbarDefinitions.set(t,l)}_updateToolbarsVisibility(){let t=0,e=null,n=null;for(const r of this._toolbarDefinitions.values()){const i=r.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&i)if(this.editor.ui.focusTracker.isFocused){const o=i.getAncestors().length;o>t&&(t=o,e=i,n=r)}else this._isToolbarVisible(r)&&this._hideToolbar(r);else this._isToolbarInBalloon(r)&&this._hideToolbar(r)}n&&this._showToolbar(n,e)}_hideToolbar(t){this._balloon.remove(t.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(t,e){this._isToolbarVisible(t)?j_(this.editor,e):this._isToolbarInBalloon(t)||(t.initialized||(t.initialized=!0,t.view.fillFromConfig(t.itemsConfig,this.editor.ui.componentFactory)),this._balloon.add({view:t.view,position:q_(this.editor,e),balloonClassName:t.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(()=>{for(const t of this._toolbarDefinitions.values())if(this._isToolbarVisible(t)){const e=t.getRelatedElement(this.editor.editing.view.document.selection);j_(this.editor,e)}})))}_isToolbarVisible(t){return this._balloon.visibleView===t.view}_isToolbarInBalloon(t){return this._balloon.hasView(t.view)}}function j_(t,e){const n=t.plugins.get("ContextualBalloon"),r=q_(t,e);n.updatePosition(r)}function q_(t,e){const n=t.editing.view,r=op.defaultPositions;return{target:n.domConverter.mapViewToDom(e),positions:[r.northArrowSouth,r.northArrowSouthWest,r.northArrowSouthEast,r.southArrowNorth,r.southArrowNorthWest,r.southArrowNorthEast,r.viewportStickyNorth]}}class U_ extends(jr()){_referenceCoordinates;_options;_originalWidth;_originalHeight;_originalWidthPercents;_aspectRatio;constructor(t){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=t,this._referenceCoordinates=null}get originalWidth(){return this._originalWidth}get originalHeight(){return this._originalHeight}get originalWidthPercents(){return this._originalWidthPercents}get aspectRatio(){return this._aspectRatio}begin(t,e,n){const r=new fi(e);this.activeHandlePosition=function(t){const e=["top-left","top-right","bottom-right","bottom-left"];for(const n of e)if(t.classList.contains(W_(n)))return n}(t),this._referenceCoordinates=function(t,e){const n=new fi(t),r=e.split("-"),i={x:"right"==r[1]?n.right:n.left,y:"bottom"==r[0]?n.bottom:n.top};return i.x+=t.ownerDocument.defaultView.scrollX,i.y+=t.ownerDocument.defaultView.scrollY,i}(e,function(t){const e=t.split("-"),n={top:"bottom",bottom:"top",left:"right",right:"left"};return`${n[e[0]]}-${n[e[1]]}`}(this.activeHandlePosition)),this._originalWidth=r.width,this._originalHeight=r.height,this._aspectRatio=r.width/r.height;const i=n.style.width;i&&i.match(/^\d+(\.\d*)?%$/)?this._originalWidthPercents=parseFloat(i):this._originalWidthPercents=function(t,e=new fi(t)){const n=y_(t);return n?e.width/n*100:0}(n,r)}update(t){this.proposedWidth=t.width,this.proposedHeight=t.height,this.proposedWidthPercents=t.widthPercents,this.proposedHandleHostWidth=t.handleHostWidth,this.proposedHandleHostHeight=t.handleHostHeight}}function W_(t){return`ck-widget__resizer__handle-${t}`}class $_ extends lm{constructor(){super();const t=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",t.to("_viewPosition",(t=>t?`ck-orientation-${t}`:""))],style:{display:t.if("_isVisible","none",(t=>!t))}},children:[{text:t.to("_label")}]})}_bindToState(t,e){this.bind("_isVisible").to(e,"proposedWidth",e,"proposedHeight",((t,e)=>null!==t&&null!==e)),this.bind("_label").to(e,"proposedHandleHostWidth",e,"proposedHandleHostHeight",e,"proposedWidthPercents",((e,n,r)=>"px"===t.unit?`${e}×${n}`:`${r}%`)),this.bind("_viewPosition").to(e,"activeHandlePosition",e,"proposedHandleHostWidth",e,"proposedHandleHostHeight",((t,e,n)=>e<50||n<50?"above-center":t))}_dismiss(){this.unbind(),this._isVisible=!1}}class G_ extends(jr()){_state;_sizeView;_options;_viewResizerWrapper=null;_initialViewWidth;constructor(t){super(),this._options=t,this.set("isEnabled",!0),this.set("isSelected",!1),this.bind("isVisible").to(this,"isEnabled",this,"isSelected",((t,e)=>t&&e)),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",(t=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),t.stop())}),{priority:"high"})}get state(){return this._state}show(){this._options.editor.editing.view.change((t=>{t.removeClass("ck-hidden",this._viewResizerWrapper)}))}hide(){this._options.editor.editing.view.change((t=>{t.addClass("ck-hidden",this._viewResizerWrapper)}))}attach(){const t=this,e=this._options.viewElement;this._options.editor.editing.view.change((n=>{const r=n.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(e){const n=this.toDomElement(e);return t._appendHandles(n),t._appendSizeUI(n),n}));n.insert(n.createPositionAt(e,"end"),r),n.addClass("ck-widget_with-resizer",e),this._viewResizerWrapper=r,this.isVisible||this.hide()})),this.on("change:isVisible",(()=>{this.isVisible?(this.show(),this.redraw()):this.hide()}))}begin(t){this._state=new U_(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(t,this._getHandleHost(),this._getResizeHost())}updateSize(t){const e=this._proposeNewSize(t);this._options.editor.editing.view.change((t=>{const n=this._options.unit||"%",r=("%"===n?e.widthPercents:e.width)+n;t.setStyle("width",r,this._options.viewElement)}));const n=this._getHandleHost(),r=new fi(n),i=Math.round(r.width),o=Math.round(r.height),s=new fi(n);e.width=Math.round(s.width),e.height=Math.round(s.height),this.redraw(r),this.state.update({...e,handleHostWidth:i,handleHostHeight:o})}commit(){const t=this._options.unit||"%",e=("%"===t?this.state.proposedWidthPercents:this.state.proposedWidth)+t;this._options.editor.editing.view.change((()=>{this._cleanup(),this._options.onCommit(e)}))}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(t){const e=this._domResizerWrapper;if(!((n=e)&&n.ownerDocument&&n.ownerDocument.contains(n)))return;var n;const r=e.parentElement,i=this._getHandleHost(),o=this._viewResizerWrapper,s=[o.getStyle("width"),o.getStyle("height"),o.getStyle("left"),o.getStyle("top")];let a;if(r.isSameNode(i)){const e=t||new fi(i);a=[e.width+"px",e.height+"px",void 0,void 0]}else a=[i.offsetWidth+"px",i.offsetHeight+"px",i.offsetLeft+"px",i.offsetTop+"px"];"same"!==Zr(s,a)&&this._options.editor.editing.view.change((t=>{t.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},o)}))}containsHandle(t){return this._domResizerWrapper.contains(t)}static isResizeHandle(t){return t.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change((t=>{t.setStyle("width",this._initialViewWidth,this._options.viewElement)}))}_proposeNewSize(t){const e=this.state,n={x:(r=t).pageX,y:r.pageY};var r;const i=!this._options.isCentered||this._options.isCentered(this),o={x:e._referenceCoordinates.x-(n.x+e.originalWidth),y:n.y-e.originalHeight-e._referenceCoordinates.y};i&&e.activeHandlePosition.endsWith("-right")&&(o.x=n.x-(e._referenceCoordinates.x+e.originalWidth)),i&&(o.x*=2);let s=Math.abs(e.originalWidth+o.x),a=Math.abs(e.originalHeight+o.y);return"width"==(s/e.aspectRatio>a?"width":"height")?a=s/e.aspectRatio:s=a*e.aspectRatio,{width:Math.round(s),height:Math.round(a),widthPercents:Math.min(Math.round(e.originalWidthPercents/e.originalWidth*s*100)/100,100)}}_getResizeHost(){const t=this._domResizerWrapper.parentElement;return this._options.getResizeHost(t)}_getHandleHost(){const t=this._domResizerWrapper.parentElement;return this._options.getHandleHost(t)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(t){const e=["top-left","top-right","bottom-right","bottom-left"];for(const r of e)t.appendChild(new Nu({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(n=r,`ck-widget__resizer__handle-${n}`)}}).render());var n}_appendSizeUI(t){this._sizeView=new $_,this._sizeView.render(),t.appendChild(this._sizeView.element)}}var K_=n(4095),Z_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(K_.A,Z_);K_.A.locals;class Y_ extends Lo{_resizers=new Map;_observer;_redrawSelectedResizerThrottled;static get pluginName(){return"WidgetResize"}init(){const t=this.editor.editing,e=Yn.window.document;this.set("selectedResizer",null),this.set("_activeResizer",null),t.view.addObserver(Hh),this._observer=new(oi()),this.listenTo(t.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(e,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(e,"mouseup",this._mouseUpListener.bind(this)),this._redrawSelectedResizerThrottled=R((()=>this.redrawSelectedResizer()),200),this.editor.ui.on("update",this._redrawSelectedResizerThrottled),this.editor.model.document.on("change",(()=>{for(const[t,e]of this._resizers)t.isAttached()||(this._resizers.delete(t),e.destroy())}),{priority:"lowest"}),this._observer.listenTo(Yn.window,"resize",this._redrawSelectedResizerThrottled);const n=this.editor.editing.view.document.selection;n.on("change",(()=>{const t=n.getSelectedElement(),e=this.getResizerByViewElement(t)||null;e?this.select(e):this.deselect()}))}redrawSelectedResizer(){this.selectedResizer&&this.selectedResizer.isVisible&&this.selectedResizer.redraw()}destroy(){super.destroy(),this._observer.stopListening();for(const t of this._resizers.values())t.destroy();this._redrawSelectedResizerThrottled.cancel()}select(t){this.deselect(),this.selectedResizer=t,this.selectedResizer.isSelected=!0}deselect(){this.selectedResizer&&(this.selectedResizer.isSelected=!1),this.selectedResizer=null}attachTo(t){const e=new G_(t),n=this.editor.plugins;if(e.attach(),n.has("WidgetToolbarRepository")){const t=n.get("WidgetToolbarRepository");e.on("begin",(()=>{t.forceDisabled("resize")}),{priority:"lowest"}),e.on("cancel",(()=>{t.clearForceDisabled("resize")}),{priority:"highest"}),e.on("commit",(()=>{t.clearForceDisabled("resize")}),{priority:"highest"})}this._resizers.set(t.viewElement,e);const r=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(r)==e&&this.select(e),e}getResizerByViewElement(t){return this._resizers.get(t)}_getResizerByHandle(t){for(const e of this._resizers.values())if(e.containsHandle(t))return e}_mouseDownListener(t,e){const n=e.domTarget;G_.isResizeHandle(n)&&(this._activeResizer=this._getResizerByHandle(n)||null,this._activeResizer&&(this._activeResizer.begin(n),t.stop(),e.preventDefault()))}_mouseMoveListener(t,e){this._activeResizer&&this._activeResizer.updateSize(e)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}}const J_=vi("px");class Q_ extends lm{constructor(){super();const t=this.bindTemplate;this.set({isVisible:!1,left:null,top:null,width:null}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-clipboard-drop-target-line",t.if("isVisible","ck-hidden",(t=>!t))],style:{left:t.to("left",(t=>J_(t))),top:t.to("top",(t=>J_(t))),width:t.to("width",(t=>J_(t)))}}})}}class X_ extends Lo{removeDropMarkerDelayed=To((()=>this.removeDropMarker()),40);_updateDropMarkerThrottled=R((t=>this._updateDropMarker(t)),40);_reconvertMarkerThrottled=R((()=>{this.editor.model.markers.has("drop-target")&&this.editor.editing.reconvertMarker("drop-target")}),0);_dropTargetLineView=new Q_;_domEmitter=new(oi());_scrollables=new Map;static get pluginName(){return"DragDropTarget"}init(){this._setupDropMarker()}destroy(){this._domEmitter.stopListening();for(const{resizeObserver:t}of this._scrollables.values())t.destroy();return this._updateDropMarkerThrottled.cancel(),this.removeDropMarkerDelayed.cancel(),this._reconvertMarkerThrottled.cancel(),super.destroy()}updateDropMarker(t,e,n,r,i,o){this.removeDropMarkerDelayed.cancel();const s=tC(this.editor,t,e,n,r,i,o);if(s)return o&&o.containsRange(s)?this.removeDropMarker():void this._updateDropMarkerThrottled(s)}getFinalDropRange(t,e,n,r,i,o){const s=tC(this.editor,t,e,n,r,i,o);return this.removeDropMarker(),s}removeDropMarker(){const t=this.editor.model;this.removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),this._dropTargetLineView.isVisible=!1,t.markers.has("drop-target")&&t.change((t=>{t.removeMarker("drop-target")}))}_setupDropMarker(){const t=this.editor;t.ui.view.body.add(this._dropTargetLineView),t.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),t.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(e,{writer:n})=>{if(t.model.schema.checkChild(e.markerRange.start,"$text"))return this._dropTargetLineView.isVisible=!1,this._createDropTargetPosition(n);e.markerRange.isCollapsed?this._updateDropTargetLine(e.markerRange):this._dropTargetLineView.isVisible=!1}})}_updateDropMarker(t){const e=this.editor,n=e.model.markers;e.model.change((e=>{n.has("drop-target")?n.get("drop-target").getRange().isEqual(t)||e.updateMarker("drop-target",{range:t}):e.addMarker("drop-target",{range:t,usingOperation:!1,affectsData:!1})}))}_createDropTargetPosition(t){return t.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(t){const e=this.toDomElement(t);return e.append("⁠",t.createElement("span"),"⁠"),e}))}_updateDropTargetLine(t){const e=this.editor.editing,n=t.start.nodeBefore,r=t.start.nodeAfter,i=t.start.parent,o=n?e.mapper.toViewElement(n):null,s=o?e.view.domConverter.mapViewToDom(o):null,a=r?e.mapper.toViewElement(r):null,l=a?e.view.domConverter.mapViewToDom(a):null,c=e.mapper.toViewElement(i);if(!c)return;const d=e.view.domConverter.mapViewToDom(c),h=this._getScrollableRect(c),{scrollX:u,scrollY:m}=Yn.window,g=s?new fi(s):null,p=l?new fi(l):null,f=new fi(d).excludeScrollbarsAndBorders(),b=g?g.bottom:f.top,k=p?p.top:f.bottom,w=Yn.window.getComputedStyle(d),A=b<=k?(b+k)/2:k;if(h.topa.schema.checkChild(o,t)))){if(a.schema.checkChild(o,"$text"))return a.createRange(o);if(e)return nC(t,iC(t,e.parent),r,i)}}}else if(a.schema.isInline(c))return nC(t,c,r,i);if(a.schema.isBlock(c))return nC(t,c,r,i);if(a.schema.checkChild(c,"$block")){const e=Array.from(c.getChildren()).filter((e=>e.is("element")&&!eC(t,e)));let n=0,o=e.length;if(0==o)return a.createRange(a.createPositionAt(c,"end"));for(;n{n?(this.forceDisabled("readOnlyMode"),this._isBlockDragging=!1):this.clearForceDisabled("readOnlyMode")})),Xn.isAndroid&&this.forceDisabled("noAndroidSupport"),t.plugins.has("BlockToolbar")){const e=t.plugins.get("BlockToolbar").buttonView.element;this._domEmitter.listenTo(e,"dragstart",((t,e)=>this._handleBlockDragStart(e))),this._domEmitter.listenTo(Yn.document,"dragover",((t,e)=>this._handleBlockDragging(e))),this._domEmitter.listenTo(Yn.document,"drop",((t,e)=>this._handleBlockDragging(e))),this._domEmitter.listenTo(Yn.document,"dragend",(()=>this._handleBlockDragEnd()),{useCapture:!0}),this.isEnabled&&e.setAttribute("draggable","true"),this.on("change:isEnabled",((t,n,r)=>{e.setAttribute("draggable",r?"true":"false")}))}}destroy(){return this._domEmitter.stopListening(),super.destroy()}_handleBlockDragStart(t){if(!this.isEnabled)return;const e=this.editor.model,n=e.document.selection,r=this.editor.editing.view,i=Array.from(n.getSelectedBlocks()),o=e.createRange(e.createPositionBefore(i[0]),e.createPositionAfter(i[i.length-1]));e.change((t=>t.setSelection(o))),this._isBlockDragging=!0,r.focus(),r.getObserver(HA).onDomEvent(t)}_handleBlockDragging(t){if(!this.isEnabled||!this._isBlockDragging)return;const e=t.clientX+("ltr"==this.editor.locale.contentLanguageDirection?100:-100),n=t.clientY,r=document.elementFromPoint(e,n),i=this.editor.editing.view;r&&r.closest(".ck-editor__editable")&&i.getObserver(HA).onDomEvent({...t,type:t.type,dataTransfer:t.dataTransfer,target:r,clientX:e,clientY:n,preventDefault:()=>t.preventDefault(),stopPropagation:()=>t.stopPropagation()})}_handleBlockDragEnd(){this._isBlockDragging=!1}}var sC=n(7793),aC={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(sC.A,aC);sC.A.locals;class lC extends Lo{_draggedRange;_draggingUid;_draggableElement;_clearDraggableAttributesDelayed=To((()=>this._clearDraggableAttributes()),40);_blockMode=!1;_domEmitter=new(oi());_previewContainer;static get pluginName(){return"DragDrop"}static get requires(){return[l_,N_,X_,oC]}init(){const t=this.editor,e=t.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,e.addObserver(HA),e.addObserver(Hh),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDraggableAttributeHandling(),this.listenTo(t,"change:isReadOnly",((t,e,n)=>{n?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})),this.on("change:isEnabled",((t,e,n)=>{n||this._finalizeDragging(!1)})),Xn.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 t=this.editor,e=t.model,n=t.editing.view,r=n.document,i=t.plugins.get(X_);this.listenTo(r,"dragstart",((t,n)=>{if(n.target&&n.target.is("editableElement"))return void n.preventDefault();if(this._prepareDraggedRange(n.target),!this._draggedRange)return void n.preventDefault();this._draggingUid=pr(),n.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",n.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const r=e.createSelection(this._draggedRange.toRange());this.editor.plugins.get("ClipboardPipeline")._fireOutputTransformationEvent(n.dataTransfer,r,"dragstart");const{dataTransfer:i,domTarget:o,domEvent:s}=n,{clientX:a}=s;this._updatePreview({dataTransfer:i,domTarget:o,clientX:a}),n.stopPropagation(),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(r,"dragend",((t,e)=>{this._finalizeDragging(!e.dataTransfer.isCanceled&&"move"==e.dataTransfer.dropEffect)}),{priority:"low"}),this._domEmitter.listenTo(Yn.document,"dragend",(()=>{this._blockMode=!1}),{useCapture:!0}),this.listenTo(r,"dragenter",(()=>{this.isEnabled&&n.focus()})),this.listenTo(r,"dragleave",(()=>{i.removeDropMarkerDelayed()})),this.listenTo(r,"dragging",((t,e)=>{if(!this.isEnabled)return void(e.dataTransfer.dropEffect="none");const{clientX:n,clientY:r}=e.domEvent;i.updateDropMarker(e.target,e.targetRanges,n,r,this._blockMode,this._draggedRange),this._draggedRange||(e.dataTransfer.dropEffect="copy"),Xn.isGecko||("copy"==e.dataTransfer.effectAllowed?e.dataTransfer.dropEffect="copy":["all","copyMove"].includes(e.dataTransfer.effectAllowed)&&(e.dataTransfer.dropEffect="move")),t.stop()}),{priority:"low"})}_setupClipboardInputIntegration(){const t=this.editor,e=t.editing.view.document,n=t.plugins.get(X_);this.listenTo(e,"clipboardInput",((e,r)=>{if("drop"!=r.method)return;const{clientX:i,clientY:o}=r.domEvent,s=n.getFinalDropRange(r.target,r.targetRanges,i,o,this._blockMode,this._draggedRange);if(!s)return this._finalizeDragging(!1),void e.stop();this._draggedRange&&this._draggingUid!=r.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==cC(r.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(s,!0))return this._finalizeDragging(!1),void e.stop();r.targetRanges=[t.editing.mapper.toViewRange(s)]}),{priority:"high"})}_setupContentInsertionIntegration(){const t=this.editor.plugins.get(l_);t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n=e.targetRanges.map((t=>this.editor.editing.mapper.toModelRange(t)));this.editor.model.change((t=>t.setSelection(n)))}),{priority:"high"}),t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n="move"==cC(e.dataTransfer),r=!e.resultRange||!e.resultRange.isCollapsed;this._finalizeDragging(r&&n)}),{priority:"lowest"})}_setupDraggableAttributeHandling(){const t=this.editor,e=t.editing.view,n=e.document;this.listenTo(n,"mousedown",((r,i)=>{if(Xn.isAndroid||!i)return;this._clearDraggableAttributesDelayed.cancel();let o=dC(i.target);if(Xn.isBlink&&!t.isReadOnly&&!o&&!n.selection.isCollapsed){const t=n.selection.getSelectedElement();t&&p_(t)||(o=n.selection.editableElement)}o&&(e.change((t=>{t.setAttribute("draggable","true",o)})),this._draggableElement=t.editing.mapper.toModelElement(o))})),this.listenTo(n,"mouseup",(()=>{Xn.isAndroid||this._clearDraggableAttributesDelayed()}))}_clearDraggableAttributes(){const t=this.editor.editing;t.view.change((e=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&e.removeAttribute("draggable",t.mapper.toViewElement(this._draggableElement)),this._draggableElement=null}))}_finalizeDragging(t){const e=this.editor,n=e.model;if(e.plugins.get(X_).removeDropMarker(),this._clearDraggableAttributes(),e.plugins.has("WidgetToolbarRepository")){e.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop")}this._draggingUid="",this._previewContainer&&(this._previewContainer.remove(),this._previewContainer=void 0),this._draggedRange&&(t&&this.isEnabled&&n.change((t=>{const e=n.createSelection(this._draggedRange);n.deleteContent(e,{doNotAutoparagraph:!0});const r=e.getFirstPosition().parent;r.isEmpty&&!n.schema.checkChild(r,"$text")&&n.schema.checkChild(r,"paragraph")&&t.insertElement("paragraph",r,0)})),this._draggedRange.detach(),this._draggedRange=null)}_prepareDraggedRange(t){const e=this.editor,n=e.model,r=n.document.selection,i=t?dC(t):null;if(i){const t=e.editing.mapper.toModelElement(i);if(this._draggedRange=uc.fromRange(n.createRangeOn(t)),this._blockMode=n.schema.isBlock(t),e.plugins.has("WidgetToolbarRepository")){e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}return}if(r.isCollapsed&&!r.getFirstPosition().parent.isEmpty)return;const o=Array.from(r.getSelectedBlocks()),s=r.getFirstRange();if(0==o.length)return void(this._draggedRange=uc.fromRange(s));const a=hC(n,o);if(o.length>1)this._draggedRange=uc.fromRange(a),this._blockMode=!0;else if(1==o.length){const t=s.start.isTouching(a.start)&&s.end.isTouching(a.end);this._draggedRange=uc.fromRange(t?a:s),this._blockMode=t}n.change((t=>t.setSelection(this._draggedRange.toRange())))}_updatePreview({dataTransfer:t,domTarget:e,clientX:n}){const r=this.editor.editing.view,i=r.document.selection.editableElement,o=r.domConverter.mapViewToDom(i),s=Yn.window.getComputedStyle(o);this._previewContainer?this._previewContainer.firstElementChild&&this._previewContainer.removeChild(this._previewContainer.firstElementChild):(this._previewContainer=Qr(Yn.document,"div",{style:"position: fixed; left: -999999px;"}),Yn.document.body.appendChild(this._previewContainer));const a=new fi(o);if(o.contains(e))return;const l=parseFloat(s.paddingLeft),c=Qr(Yn.document,"div");c.className="ck ck-content",c.style.width=s.width,c.style.paddingLeft=`${a.left-n+l}px`,Xn.isiOS&&(c.style.backgroundColor="white"),r.domConverter.setContentOf(c,t.getData("text/html")),t.setDragImage(c,0,0),this._previewContainer.appendChild(c)}}function cC(t){return Xn.isGecko?t.dropEffect:["all","copyMove"].includes(t.effectAllowed)?"move":"copy"}function dC(t){if(t.is("editableElement"))return null;if(t.hasClass("ck-widget__selection-handle"))return t.findAncestor(p_);if(p_(t))return t;const e=t.findAncestor((t=>p_(t)||t.is("editableElement")));return p_(e)?e:null}function hC(t,e){const n=e[0],r=e[e.length-1],i=n.getCommonAncestor(r),o=t.createPositionBefore(n),s=t.createPositionAfter(r);if(i&&i.is("element")&&!t.schema.isLimit(i)){const e=t.createRangeOn(i),n=o.isTouching(e.start),r=s.isTouching(e.end);if(n&&r)return hC(t,[i])}return t.createRange(o,s)}class uC extends Lo{static get pluginName(){return"PastePlainText"}static get requires(){return[l_]}init(){const t=this.editor,e=t.model,n=t.editing.view,r=e.document.selection;n.addObserver(HA),t.plugins.get(l_).on("contentInsertion",((t,n)=>{(function(t,e){let n=e.createRangeIn(t);if(1==t.childCount){const r=t.getChild(0);r.is("element")&&e.schema.isBlock(r)&&!e.schema.isObject(r)&&!e.schema.isLimit(r)&&(n=e.createRangeIn(r))}for(const t of n.getItems()){if(!e.schema.isInline(t))return!1;if(Array.from(t.getAttributeKeys()).find((t=>e.schema.getAttributeProperties(t).isFormatting)))return!1}return!0})(n.content,e)&&e.change((t=>{const i=Array.from(r.getAttributes()).filter((([t])=>e.schema.getAttributeProperties(t).isFormatting));r.isCollapsed||e.deleteContent(r,{doNotAutoparagraph:!0}),i.push(...r.getAttributes());const o=t.createRangeIn(n.content);for(const n of o.getItems())for(const r of i)e.schema.checkAttribute(n,r[0])&&t.setAttribute(r[0],r[1],n)}))}))}}class mC extends Lo{static get pluginName(){return"Clipboard"}static get requires(){return[a_,l_,lC,uC]}init(){const t=this.editor,e=this.editor.t;t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Copy selected content"),keystroke:"CTRL+C"},{label:e("Paste content"),keystroke:"CTRL+V"},{label:e("Paste content as plain text"),keystroke:"CTRL+SHIFT+V"}]})}}class gC extends Mo{_stack=[];_createdBatches=new WeakSet;constructor(t){super(t),this.refresh(),this._isEnabledBasedOnSelection=!1,this.listenTo(t.data,"set",((t,e)=>{e[1]={...e[1]};const n=e[1];n.batchType||(n.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(t.data,"set",((t,e)=>{e[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}get createdBatches(){return this._createdBatches}addBatch(t){const e=this.editor.model.document.selection,n={ranges:e.hasOwnRange?Array.from(e.getRanges()):[],isBackward:e.isBackward};this._stack.push({batch:t,selection:n}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(t,e,n){const r=this.editor.model,i=r.document,o=[],s=t.map((t=>t.getTransformedByOperations(n))),a=s.flat();for(const t of s){const e=t.filter((t=>t.root!=i.graveyard)).filter((t=>!fC(t,a)));e.length&&(pC(e),o.push(e[0]))}o.length&&r.change((t=>{t.setSelection(o,{backward:e})}))}_undo(t,e){const n=this.editor.model,r=n.document;this._createdBatches.add(e);const i=t.operations.slice().filter((t=>t.isDocumentOperation));i.reverse();for(const t of i){const i=t.baseVersion+1,o=Array.from(r.history.getOperations(i)),s=Gd([t.getReversed()],o,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(let i of s){const o=i.affectedSelectable;o&&!n.canEditAt(o)&&(i=new zd(i.baseVersion)),e.addOperation(i),n.applyOperation(i),r.history.setOperationAsUndone(t,i)}}}}function pC(t){t.sort(((t,e)=>t.start.isBefore(e.start)?-1:1));for(let e=1;ee!==t&&e.containsRange(t,!0)))}class bC extends gC{execute(t=null){const e=t?this._stack.findIndex((e=>e.batch==t)):this._stack.length-1,n=this._stack.splice(e,1)[0],r=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(r,(()=>{this._undo(n.batch,r);const t=this.editor.model.document.history.getOperations(n.batch.baseVersion);this._restoreSelection(n.selection.ranges,n.selection.isBackward,t)})),this.fire("revert",n.batch,r),this.refresh()}}class kC extends gC{execute(){const t=this._stack.pop(),e=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(e,(()=>{const n=t.batch.operations[t.batch.operations.length-1].baseVersion+1,r=this.editor.model.document.history.getOperations(n);this._restoreSelection(t.selection.ranges,t.selection.isBackward,r),this._undo(t.batch,e)})),this.refresh()}}class wC extends Lo{_undoCommand;_redoCommand;_batchRegistry=new WeakSet;static get pluginName(){return"UndoEditing"}init(){const t=this.editor,e=t.t;this._undoCommand=new bC(t),this._redoCommand=new kC(t),t.commands.add("undo",this._undoCommand),t.commands.add("redo",this._redoCommand),this.listenTo(t.model,"applyOperation",((t,e)=>{const n=e[0];if(!n.isDocumentOperation)return;const r=n.batch,i=this._redoCommand.createdBatches.has(r),o=this._undoCommand.createdBatches.has(r);this._batchRegistry.has(r)||(this._batchRegistry.add(r),r.isUndoable&&(i?this._undoCommand.addBatch(r):o||(this._undoCommand.addBatch(r),this._redoCommand.clearStack())))}),{priority:"highest"}),this.listenTo(this._undoCommand,"revert",((t,e,n)=>{this._redoCommand.addBatch(n)})),t.keystrokes.set("CTRL+Z","undo"),t.keystrokes.set("CTRL+Y","redo"),t.keystrokes.set("CTRL+SHIFT+Z","redo"),t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Undo"),keystroke:"CTRL+Z"},{label:e("Redo"),keystroke:[["CTRL+Y"],["CTRL+SHIFT+Z"]]}]})}}class AC extends Lo{static get pluginName(){return"UndoUI"}init(){const t=this.editor,e=t.locale,n=t.t,r="ltr"==e.uiLanguageDirection?zu.undo:zu.redo,i="ltr"==e.uiLanguageDirection?zu.redo:zu.undo;this._addButtonsToFactory("undo",n("Undo"),"CTRL+Z",r),this._addButtonsToFactory("redo",n("Redo"),"CTRL+Y",i)}_addButtonsToFactory(t,e,n,r){const i=this.editor;i.ui.componentFactory.add(t,(()=>{const i=this._createButton(wm,t,e,n,r);return i.set({tooltip:!0}),i})),i.ui.componentFactory.add("menuBar:"+t,(()=>this._createButton(Ym,t,e,n,r)))}_createButton(t,e,n,r,i){const o=this.editor,s=o.locale,a=o.commands.get(e),l=new t(s);return l.set({label:n,icon:i,keystroke:r}),l.bind("isEnabled").to(a,"isEnabled"),this.listenTo(l,"execute",(()=>{o.execute(e),o.editing.view.focus()})),l}}class _C extends Lo{static get requires(){return[wC,AC]}static get pluginName(){return"Undo"}}function CC(t){return t.createContainerElement("figure",{class:"image"},[t.createEmptyElement("img"),t.createSlot("children")])}function vC(t,e){const n=t.plugins.get("ImageUtils"),r=t.plugins.has("ImageInlineEditing")&&t.plugins.has("ImageBlockEditing");return t=>{if(!n.isInlineImageView(t))return null;if(!r)return i(t);return("block"==t.getStyle("display")||t.findAncestor(n.isBlockImageView)?"imageBlock":"imageInline")!==e?null:i(t)};function i(t){const e={name:!0};return t.hasAttribute("src")&&(e.attributes=["src"]),e}}function yC(t,e){const n=Eo(e.getSelectedBlocks());return!n||t.isObject(n)||n.isEmpty&&"listItem"!=n.name?"imageBlock":"imageInline"}function xC(t){return t&&t.endsWith("px")?parseInt(t):null}function EC(t){const e=xC(t.getStyle("width")),n=xC(t.getStyle("height"));return!(!e||!n)}const BC=/^(image|image-inline)$/;class DC extends Lo{_domEmitter=new(oi());static get pluginName(){return"ImageUtils"}isImage(t){return this.isInlineImage(t)||this.isBlockImage(t)}isInlineImageView(t){return!!t&&t.is("element","img")}isBlockImageView(t){return!!t&&t.is("element","figure")&&t.hasClass("image")}insertImage(t={},e=null,n=null,r={}){const i=this.editor,o=i.model,s=o.document.selection,a=SC(i,e||s,n);t={...Object.fromEntries(s.getAttributes()),...t};for(const e in t)o.schema.checkAttribute(a,e)||delete t[e];return o.change((n=>{const{setImageSizes:i=!0}=r,s=n.createElement(a,t);return o.insertObject(s,e,null,{setSelection:"on",findOptimalPosition:e||"imageInline"==a?void 0:"auto"}),s.parent?(i&&this.setImageNaturalSizeAttributes(s),s):null}))}setImageNaturalSizeAttributes(t){const e=t.getAttribute("src");e&&(t.getAttribute("width")||t.getAttribute("height")||this.editor.model.change((n=>{const r=new Yn.window.Image;this._domEmitter.listenTo(r,"load",(()=>{t.getAttribute("width")||t.getAttribute("height")||this.editor.model.enqueueChange(n.batch,(e=>{e.setAttribute("width",r.naturalWidth,t),e.setAttribute("height",r.naturalHeight,t)})),this._domEmitter.stopListening(r,"load")})),r.src=e})))}getClosestSelectedImageWidget(t){const e=t.getFirstPosition();if(!e)return null;const n=t.getSelectedElement();if(n&&this.isImageWidget(n))return n;let r=e.parent;for(;r;){if(r.is("element")&&this.isImageWidget(r))return r;r=r.parent}return null}getClosestSelectedImageElement(t){const e=t.getSelectedElement();return this.isImage(e)?e:t.getFirstPosition().findAncestor("imageBlock")}getImageWidgetFromImageView(t){return t.findAncestor({classes:BC})}isImageAllowed(){const t=this.editor.model.document.selection;return function(t,e){const n=SC(t,e,null);if("imageBlock"==n){const n=function(t,e){const n=__(t,e),r=n.start.parent;if(r.isEmpty&&!r.is("element","$root"))return r.parent;return r}(e,t.model);if(t.model.schema.checkChild(n,"imageBlock"))return!0}else if(t.model.schema.checkChild(e.focus,"imageInline"))return!0;return!1}(this.editor,t)&&function(t){return[...t.focus.getAncestors()].every((t=>!t.is("element","imageBlock")))}(t)}toImageWidget(t,e,n){e.setCustomProperty("image",!0,t);return f_(t,e,{label:()=>{const e=this.findViewImgElement(t).getAttribute("alt");return e?`${e} ${n}`:n}})}isImageWidget(t){return!!t.getCustomProperty("image")&&p_(t)}isBlockImage(t){return!!t&&t.is("element","imageBlock")}isInlineImage(t){return!!t&&t.is("element","imageInline")}findViewImgElement(t){if(this.isInlineImageView(t))return t;const e=this.editor.editing.view;for(const{item:n}of e.createRangeIn(t))if(this.isInlineImageView(n))return n}destroy(){return this._domEmitter.stopListening(),super.destroy()}}function SC(t,e,n){const r=t.model.schema,i=t.config.get("image.insert.type");return t.plugins.has("ImageBlockEditing")?t.plugins.has("ImageInlineEditing")?n||("inline"===i?"imageInline":"auto"!==i?"imageBlock":e.is("selection")?yC(r,e):r.checkChild(e,"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 TC extends Mo{refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled&&t.hasAttribute("alt")?this.value=t.getAttribute("alt"):this.value=!1}execute(t){const e=this.editor,n=e.plugins.get("ImageUtils"),r=e.model,i=n.getClosestSelectedImageElement(r.document.selection);r.change((e=>{e.setAttribute("alt",t.newValue,i)}))}}class IC extends Lo{static get requires(){return[DC]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new TC(this.editor))}}var PC=n(4062),VC={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(PC.A,VC);PC.A.locals;class FC extends lm{focusTracker;keystrokes;labeledInput;saveButtonView;cancelButtonView;_focusables;_focusCycler;constructor(t){super(t);const e=this.locale.t;this.focusTracker=new Bo,this.keystrokes=new Do,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(e("Save"),zu.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(e("Cancel"),zu.cancel,"ck-button-cancel","cancel"),this._focusables=new Mu,this._focusCycler=new ym({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),hm({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(t,e,n,r){const i=new wm(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),r&&i.delegate("execute").to(this,r),i}_createLabeledInputView(){const t=this.locale.t,e=new Sg(this.locale,Rp);return e.label=t("Text alternative"),e}}function RC(t){const e=t.editing.view,n=op.defaultPositions,r=t.plugins.get("ImageUtils");return{target:e.domConverter.mapViewToDom(r.getClosestSelectedImageWidget(e.document.selection)),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,n.viewportStickyNorth]}}class LC extends Lo{_balloon;_form;static get requires(){return[yb]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton()}destroy(){super.destroy(),this._form&&this._form.destroy()}_createButton(){const t=this.editor,e=t.t;t.ui.componentFactory.add("imageTextAlternative",(n=>{const r=t.commands.get("imageTextAlternative"),i=new wm(n);return i.set({label:e("Change image text alternative"),icon:zu.textAlternative,tooltip:!0}),i.bind("isEnabled").to(r,"isEnabled"),i.bind("isOn").to(r,"value",(t=>!!t)),this.listenTo(i,"execute",(()=>{this._showForm()})),i}))}_createForm(){const t=this.editor,e=t.editing.view.document,n=t.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(dm(FC))(t.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{t.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",((t,e)=>{this._hideForm(!0),e()})),this.listenTo(t.ui,"update",(()=>{n.getClosestSelectedImageWidget(e.selection)?this._isVisible&&function(t){const e=t.plugins.get("ContextualBalloon");if(t.plugins.get("ImageUtils").getClosestSelectedImageWidget(t.editing.view.document.selection)){const n=RC(t);e.updatePosition(n)}}(t):this._hideForm(!0)})),cm({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;this._form||this._createForm();const t=this.editor,e=t.commands.get("imageTextAlternative"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:RC(t)}),n.fieldView.value=n.fieldView.element.value=e.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(t=!1){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),t&&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 zC extends Lo{static get requires(){return[IC,LC]}static get pluginName(){return"ImageTextAlternative"}}function MC(t,e){const n=(e,n,r)=>{if(!r.consumable.consume(n.item,e.name))return;const i=r.writer,o=r.mapper.toViewElement(n.item),s=t.findViewImgElement(o);null===n.attributeNewValue?(i.removeAttribute("srcset",s),i.removeAttribute("sizes",s)):n.attributeNewValue&&(i.setAttribute("srcset",n.attributeNewValue,s),i.setAttribute("sizes","100vw",s))};return t=>{t.on(`attribute:srcset:${e}`,n)}}function NC(t,e,n){const r=(e,n,r)=>{if(!r.consumable.consume(n.item,e.name))return;const i=r.writer,o=r.mapper.toViewElement(n.item),s=t.findViewImgElement(o);i.setAttribute(n.attributeKey,n.attributeNewValue||"",s)};return t=>{t.on(`attribute:${n}:${e}`,r)}}class OC extends Xa{observe(t){this.listenTo(t,"load",((t,e)=>{const n=e.target;this.checkShouldIgnoreEventFromTarget(n)||"IMG"==n.tagName&&this._fireEvents(e)}),{useCapture:!0})}stopObserving(t){this.stopListening(t)}_fireEvents(t){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",t))}}class HC extends Mo{constructor(t){super(t);const e=t.config.get("image.insert.type");t.plugins.has("ImageBlockEditing")||"block"===e&&wr("image-block-plugin-required"),t.plugins.has("ImageInlineEditing")||"inline"===e&&wr("image-inline-plugin-required")}refresh(){const t=this.editor.plugins.get("ImageUtils");this.isEnabled=t.isImageAllowed()}execute(t){const e=eo(t.source),n=this.editor.model.document.selection,r=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((e,o)=>{const s=n.getSelectedElement();if("string"==typeof e&&(e={src:e}),o&&s&&r.isImage(s)){const n=this.editor.model.createPositionAfter(s);r.insertImage({...e,...i},n,t.imageType)}else r.insertImage({...e,...i},null,t.imageType)}))}}class jC extends Mo{constructor(t){super(t),this.decorate("cleanupImage")}refresh(){const t=this.editor.plugins.get("ImageUtils"),e=this.editor.model.document.selection.getSelectedElement();this.isEnabled=t.isImage(e),this.value=this.isEnabled?e.getAttribute("src"):null}execute(t){const e=this.editor.model.document.selection.getSelectedElement(),n=this.editor.plugins.get("ImageUtils");this.editor.model.change((r=>{r.setAttribute("src",t.source,e),this.cleanupImage(r,e),n.setImageNaturalSizeAttributes(e)}))}cleanupImage(t,e){t.removeAttribute("srcset",e),t.removeAttribute("sizes",e),t.removeAttribute("sources",e),t.removeAttribute("width",e),t.removeAttribute("height",e),t.removeAttribute("alt",e)}}class qC extends Lo{static get requires(){return[DC]}static get pluginName(){return"ImageEditing"}init(){const t=this.editor,e=t.conversion;t.editing.view.addObserver(OC),e.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:"srcset"});const n=new HC(t),r=new jC(t);t.commands.add("insertImage",n),t.commands.add("replaceImageSource",r),t.commands.add("imageInsert",n)}}class UC extends Lo{static get requires(){return[DC]}static get pluginName(){return"ImageSizeAttributes"}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(t){const e=this.editor,n=e.plugins.get("ImageUtils"),r="imageBlock"===t?"figure":"img";function i(e,r,i,o){e.on(`attribute:${r}:${t}`,((e,r,s)=>{if(!s.consumable.consume(r.item,e.name))return;const a=s.writer,l=s.mapper.toViewElement(r.item),c=n.findViewImgElement(l);if(null!==r.attributeNewValue?a.setAttribute(i,r.attributeNewValue,c):a.removeAttribute(i,c),r.item.hasAttribute("sources"))return;const d=r.item.hasAttribute("resizedWidth");if("imageInline"===t&&!d&&!o)return;const h=r.item.getAttribute("width"),u=r.item.getAttribute("height");h&&u&&a.setStyle("aspect-ratio",`${h}/${u}`,c)}))}e.conversion.for("upcast").attributeToAttribute({view:{name:r,styles:{width:/.+/}},model:{key:"width",value:t=>EC(t)?xC(t.getStyle("width")):null}}).attributeToAttribute({view:{name:r,key:"width"},model:"width"}).attributeToAttribute({view:{name:r,styles:{height:/.+/}},model:{key:"height",value:t=>EC(t)?xC(t.getStyle("height")):null}}).attributeToAttribute({view:{name:r,key:"height"},model:"height"}),e.conversion.for("editingDowncast").add((t=>{i(t,"width","width",!0),i(t,"height","height",!0)})),e.conversion.for("dataDowncast").add((t=>{i(t,"width","width",!1),i(t,"height","height",!1)}))}}class WC extends Mo{_modelElementName;constructor(t,e){super(t),this._modelElementName=e}refresh(){const t=this.editor.plugins.get("ImageUtils"),e=t.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=t.isInlineImage(e):this.isEnabled=t.isBlockImage(e)}execute(t={}){const e=this.editor,n=this.editor.model,r=e.plugins.get("ImageUtils"),i=r.getClosestSelectedImageElement(n.document.selection),o=Object.fromEntries(i.getAttributes());return o.src||o.uploadId?n.change((e=>{const{setImageSizes:s=!0}=t,a=Array.from(n.markers).filter((t=>t.getRange().containsItem(i))),l=r.insertImage(o,n.createSelection(i,"on"),this._modelElementName,{setImageSizes:s});if(!l)return null;const c=e.createRangeOn(l);for(const t of a){const n=t.getRange(),r="$graveyard"!=n.root.rootName?n.getJoined(c,!0):c;e.updateMarker(t,{range:r})}return{oldElement:i,newElement:l}})):null}}var $C=n(7378),GC={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()($C.A,GC);$C.A.locals;class KC extends Lo{static get requires(){return[DC]}static get pluginName(){return"ImagePlaceholder"}afterInit(){this._setupSchema(),this._setupConversion(),this._setupLoadListener()}_setupSchema(){const t=this.editor.model.schema;t.isRegistered("imageBlock")&&t.extend("imageBlock",{allowAttributes:["placeholder"]}),t.isRegistered("imageInline")&&t.extend("imageInline",{allowAttributes:["placeholder"]})}_setupConversion(){const t=this.editor,e=t.conversion,n=t.plugins.get("ImageUtils");e.for("editingDowncast").add((t=>{t.on("attribute:placeholder",((t,e,r)=>{if(!r.consumable.test(e.item,t.name))return;if(!e.item.is("element","imageBlock")&&!e.item.is("element","imageInline"))return;r.consumable.consume(e.item,t.name);const i=r.writer,o=r.mapper.toViewElement(e.item),s=n.findViewImgElement(o);e.attributeNewValue?(i.addClass("image_placeholder",s),i.setStyle("background-image",`url(${e.attributeNewValue})`,s),i.setCustomProperty("editingPipeline:doNotReuseOnce",!0,s)):(i.removeClass("image_placeholder",s),i.removeStyle("background-image",s))}))}))}_setupLoadListener(){const t=this.editor,e=t.model,n=t.editing,r=n.view,i=t.plugins.get("ImageUtils");r.addObserver(OC),this.listenTo(r.document,"imageLoaded",((t,o)=>{const s=r.domConverter.mapDomToView(o.target);if(!s)return;const a=i.getImageWidgetFromImageView(s);if(!a)return;const l=n.mapper.toModelElement(a);l&&l.hasAttribute("placeholder")&&e.enqueueChange({isUndoable:!1},(t=>{t.removeAttribute("placeholder",l)}))}))}}class ZC extends Lo{static get requires(){return[qC,UC,DC,KC,l_]}static get pluginName(){return"ImageBlockEditing"}init(){const t=this.editor;t.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),t.plugins.has("ImageInlineEditing")&&(t.commands.add("imageTypeBlock",new WC(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,r=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:e})=>CC(e)}),n.for("editingDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:n})=>r.toImageWidget(CC(n),n,e("image widget"))}),n.for("downcast").add(NC(r,"imageBlock","src")).add(NC(r,"imageBlock","alt")).add(MC(r,"imageBlock")),n.for("upcast").elementToElement({view:vC(t,"imageBlock"),model:(t,{writer:e})=>e.createElement("imageBlock",t.hasAttribute("src")?{src:t.getAttribute("src")}:void 0)}).add(function(t){const e=(e,n,r)=>{if(!r.consumable.test(n.viewItem,{name:!0,classes:"image"}))return;const i=t.findViewImgElement(n.viewItem);if(!i||!r.consumable.test(i,{name:!0}))return;r.consumable.consume(n.viewItem,{name:!0,classes:"image"});const o=Eo(r.convertItem(i,n.modelCursor).modelRange.getItems());o?(r.convertChildren(n.viewItem,o),r.updateConversionResult(o,n)):r.consumable.revert(n.viewItem,{name:!0,classes:"image"})};return t=>{t.on("element:figure",e)}}(r))}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,r=t.plugins.get("ImageUtils"),i=t.plugins.get("ClipboardPipeline");this.listenTo(i,"inputTransformation",((i,o)=>{const s=Array.from(o.content.getChildren());let a;if(!s.every(r.isInlineImageView))return;a=o.targetRanges?t.editing.mapper.toModelRange(o.targetRanges[0]):e.document.selection.getFirstRange();const l=e.createSelection(a);if("imageBlock"===yC(e.schema,l)){const t=new jh(n.document),e=s.map((e=>t.createElement("figure",{class:"image"},e)));o.content=t.createDocumentFragment(e)}})),this.listenTo(i,"contentInsertion",((t,n)=>{"paste"===n.method&&e.change((t=>{const e=t.createRangeIn(n.content);for(const t of e.getItems())t.is("element","imageBlock")&&r.setImageNaturalSizeAttributes(t)}))}))}}var YC=n(3350),JC={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(YC.A,JC);YC.A.locals;class QC extends lm{focusTracker;keystrokes;_focusables;_focusCycler;children;constructor(t,e=[]){super(t),this.focusTracker=new Bo,this.keystrokes=new Do,this._focusables=new Mu,this.children=this.createCollection(),this._focusCycler=new ym({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});for(const t of e)this.children.add(t),this._focusables.add(t),t instanceof mg&&this._focusables.addMany(t.children);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:-1},children:this.children})}render(){super.render(),hm({view:this});for(const t of this._focusables)this.focusTracker.add(t.element);this.keystrokes.listenTo(this.element);const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}}class XC extends Lo{static get pluginName(){return"ImageInsertUI"}static get requires(){return[DC]}dropdownView;_integrations=new Map;constructor(t){super(t),t.config.define("image.insert.integrations",["upload","assetManager","url"])}init(){const t=this.editor,e=t.model.document.selection,n=t.plugins.get("ImageUtils");this.set("isImageSelected",!1),this.listenTo(t.model.document,"change",(()=>{this.isImageSelected=n.isImage(e.getSelectedElement())}));const r=t=>this._createToolbarComponent(t);t.ui.componentFactory.add("insertImage",r),t.ui.componentFactory.add("imageInsert",r),t.ui.componentFactory.add("menuBar:insertImage",(t=>this._createMenuBarComponent(t)))}registerIntegration({name:t,observable:e,buttonViewCreator:n,formViewCreator:r,menuBarButtonViewCreator:i,requiresForm:o=!1}){this._integrations.has(t)&&wr("image-insert-integration-exists",{name:t}),this._integrations.set(t,{observable:e,buttonViewCreator:n,menuBarButtonViewCreator:i,formViewCreator:r,requiresForm:o})}_createToolbarComponent(t){const e=this.editor,n=t.t,r=this._prepareIntegrations();if(!r.length)return null;let i;const o=r[0];if(1==r.length){if(!o.requiresForm)return o.buttonViewCreator(!0);i=o.buttonViewCreator(!0)}else{const e=o.buttonViewCreator(!1);i=new vp(t,e),i.tooltip=!0,i.bind("label").to(this,"isImageSelected",(t=>n(t?"Replace image":"Insert image")))}const s=this.dropdownView=Dp(t,i),a=r.map((({observable:t})=>"function"==typeof t?t():t));return s.bind("isEnabled").toMany(a,"isEnabled",((...t)=>t.some((t=>t)))),s.once("change:isOpen",(()=>{const t=r.map((({formViewCreator:t})=>t(1==r.length))),n=new QC(e.locale,t);s.panelView.children.add(n)})),s}_createMenuBarComponent(t){const e=t.t,n=this._prepareIntegrations();if(!n.length)return null;let r;const i=n[0];if(1==n.length)r=i.menuBarButtonViewCreator(!0);else{r=new ik(t);const i=new ok(t);r.panelView.children.add(i),r.buttonView.set({icon:zu.image,label:e("Image")});for(const e of n){const n=new Kf(t,r),o=e.menuBarButtonViewCreator(!1);n.children.add(o),i.items.add(n)}}return r}_prepareIntegrations(){const t=this.editor.config.get("image.insert.integrations"),e=[];if(!t.length)return wr("image-insert-integrations-not-specified"),e;for(const n of t)this._integrations.has(n)?e.push(this._integrations.get(n)):["upload","assetManager","url"].includes(n)||wr("image-insert-unknown-integration",{item:n});return e.length||wr("image-insert-integrations-not-registered"),e}}var tv=n(265),ev={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(tv.A,ev);tv.A.locals;class nv extends Lo{static get requires(){return[ZC,N_,zC,XC]}static get pluginName(){return"ImageBlock"}}class rv extends Lo{static get requires(){return[qC,UC,DC,KC,l_]}static get pluginName(){return"ImageInlineEditing"}init(){const t=this.editor;t.model.schema.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"],disallowIn:["caption"]}),this._setupConversion(),t.plugins.has("ImageBlockEditing")&&(t.commands.add("imageTypeInline",new WC(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,r=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToElement({model:"imageInline",view:(t,{writer:e})=>e.createEmptyElement("img")}),n.for("editingDowncast").elementToStructure({model:"imageInline",view:(t,{writer:n})=>r.toImageWidget(function(t){return t.createContainerElement("span",{class:"image-inline"},t.createEmptyElement("img"))}(n),n,e("image widget"))}),n.for("downcast").add(NC(r,"imageInline","src")).add(NC(r,"imageInline","alt")).add(MC(r,"imageInline")),n.for("upcast").elementToElement({view:vC(t,"imageInline"),model:(t,{writer:e})=>e.createElement("imageInline",t.hasAttribute("src")?{src:t.getAttribute("src")}:void 0)})}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,r=t.plugins.get("ImageUtils"),i=t.plugins.get("ClipboardPipeline");this.listenTo(i,"inputTransformation",((i,o)=>{const s=Array.from(o.content.getChildren());let a;if(!s.every(r.isBlockImageView))return;a=o.targetRanges?t.editing.mapper.toModelRange(o.targetRanges[0]):e.document.selection.getFirstRange();const l=e.createSelection(a);if("imageInline"===yC(e.schema,l)){const t=new jh(n.document),e=s.map((e=>1===e.childCount?(Array.from(e.getAttributes()).forEach((n=>t.setAttribute(...n,r.findViewImgElement(e)))),e.getChild(0)):e));o.content=t.createDocumentFragment(e)}})),this.listenTo(i,"contentInsertion",((t,n)=>{"paste"===n.method&&e.change((t=>{const e=t.createRangeIn(n.content);for(const t of e.getItems())t.is("element","imageInline")&&r.setImageNaturalSizeAttributes(t)}))}))}}class iv extends Lo{static get requires(){return[rv,N_,zC,XC]}static get pluginName(){return"ImageInline"}}class ov extends Lo{static get pluginName(){return"ImageCaptionUtils"}static get requires(){return[DC]}getCaptionFromImageModelElement(t){for(const e of t.getChildren())if(e&&e.is("element","caption"))return e;return null}getCaptionFromModelSelection(t){const e=this.editor.plugins.get("ImageUtils"),n=t.getFirstPosition().findAncestor("caption");return n&&e.isBlockImage(n.parent)?n:null}matchImageCaptionViewElement(t){const e=this.editor.plugins.get("ImageUtils");return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}}class sv extends Mo{refresh(){const t=this.editor,e=t.plugins.get("ImageCaptionUtils"),n=t.plugins.get("ImageUtils");if(!t.plugins.has(ZC))return this.isEnabled=!1,void(this.value=!1);const r=t.model.document.selection,i=r.getSelectedElement();if(!i){const t=e.getCaptionFromModelSelection(r);return this.isEnabled=!!t,void(this.value=!!t)}this.isEnabled=n.isImage(i),this.isEnabled?this.value=!!e.getCaptionFromImageModelElement(i):this.value=!1}execute(t={}){const{focusCaptionOnShow:e}=t;this.editor.model.change((t=>{this.value?this._hideImageCaption(t):this._showImageCaption(t,e)}))}_showImageCaption(t,e){const n=this.editor.model.document.selection,r=this.editor.plugins.get("ImageCaptionEditing"),i=this.editor.plugins.get("ImageUtils");let o=n.getSelectedElement();const s=r._getSavedCaption(o);i.isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=n.getSelectedElement());const a=s||t.createElement("caption");t.append(a,o),e&&t.setSelection(a,"in")}_hideImageCaption(t){const e=this.editor,n=e.model.document.selection,r=e.plugins.get("ImageCaptionEditing"),i=e.plugins.get("ImageCaptionUtils");let o,s=n.getSelectedElement();s?o=i.getCaptionFromImageModelElement(s):(o=i.getCaptionFromModelSelection(n),s=o.parent),r._saveCaption(s,o),t.setSelection(s,"on"),t.remove(o)}}class av extends Lo{static get requires(){return[DC,ov]}static get pluginName(){return"ImageCaptionEditing"}_savedCaptionsMap;constructor(t){super(t),this._savedCaptionsMap=new WeakMap}init(){const t=this.editor,e=t.model.schema;e.isRegistered("caption")?e.extend("caption",{allowIn:"imageBlock"}):e.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),t.commands.add("toggleImageCaption",new sv(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageUtils"),r=t.plugins.get("ImageCaptionUtils"),i=t.t;t.conversion.for("upcast").elementToElement({view:t=>r.matchImageCaptionViewElement(t),model:"caption"}),t.conversion.for("dataDowncast").elementToElement({model:"caption",view:(t,{writer:e})=>n.isBlockImage(t.parent)?e.createContainerElement("figcaption"):null}),t.conversion.for("editingDowncast").elementToElement({model:"caption",view:(t,{writer:r})=>{if(!n.isBlockImage(t.parent))return null;const o=r.createEditableElement("figcaption");r.setCustomProperty("imageCaption",!0,o),o.placeholder=i("Enter image caption"),Jo({view:e,element:o,keepOnFocus:!0});const s=t.parent.getAttribute("alt");return A_(o,r,{label:s?i("Caption for image: %0",[s]):i("Caption for the image")})}})}_setupImageTypeCommandsIntegration(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.plugins.get("ImageCaptionUtils"),r=t.commands.get("imageTypeInline"),i=t.commands.get("imageTypeBlock"),o=t=>{if(!t.return)return;const{oldElement:r,newElement:i}=t.return;if(!r)return;if(e.isBlockImage(r)){const t=n.getCaptionFromImageModelElement(r);if(t)return void this._saveCaption(i,t)}const o=this._getSavedCaption(r);o&&this._saveCaption(i,o)};r&&this.listenTo(r,"execute",o,{priority:"low"}),i&&this.listenTo(i,"execute",o,{priority:"low"})}_getSavedCaption(t){const e=this._savedCaptionsMap.get(t);return e?ql.fromJSON(e):null}_saveCaption(t,e){this._savedCaptionsMap.set(t,e.toJSON())}_registerCaptionReconversion(){const t=this.editor,e=t.model,n=t.plugins.get("ImageUtils"),r=t.plugins.get("ImageCaptionUtils");e.document.on("change:data",(()=>{const i=e.document.differ.getChanges();for(const e of i){if("alt"!==e.attributeKey)continue;const i=e.range.start.nodeAfter;if(n.isBlockImage(i)){const e=r.getCaptionFromImageModelElement(i);if(!e)return;t.editing.reconvertItem(e)}}}))}}class lv extends Lo{static get requires(){return[ov]}static get pluginName(){return"ImageCaptionUI"}init(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageCaptionUtils"),r=t.t;t.ui.componentFactory.add("toggleImageCaption",(i=>{const o=t.commands.get("toggleImageCaption"),s=new wm(i);return s.set({icon:zu.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(o,"value","isEnabled"),s.bind("label").to(o,"value",(t=>r(t?"Toggle caption off":"Toggle caption on"))),this.listenTo(s,"execute",(()=>{t.execute("toggleImageCaption",{focusCaptionOnShow:!0});const r=n.getCaptionFromModelSelection(t.model.document.selection);if(r){const n=t.editing.mapper.toViewElement(r);e.scrollToTheSelection(),e.change((t=>{t.addClass("image__caption_highlighted",n)}))}t.editing.view.focus()})),s}))}}var cv=n(5247),dv={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(cv.A,dv);cv.A.locals;function hv(t){const e=t.map((t=>t.replace("+","\\+")));return new RegExp(`^image\\/(${e.join("|")})$`)}function uv(t){return new Promise(((e,n)=>{const r=t.getAttribute("src");fetch(r).then((t=>t.blob())).then((t=>{const n=mv(t,r),i=n.replace("image/",""),o=new File([t],`image.${i}`,{type:n});e(o)})).catch((t=>t&&"TypeError"===t.name?function(t){return function(t){return new Promise(((e,n)=>{const r=Yn.document.createElement("img");r.addEventListener("load",(()=>{const t=Yn.document.createElement("canvas");t.width=r.width,t.height=r.height;t.getContext("2d").drawImage(r,0,0),t.toBlob((t=>t?e(t):n()))})),r.addEventListener("error",(()=>n())),r.src=t}))}(t).then((e=>{const n=mv(e,t),r=n.replace("image/","");return new File([e],`image.${r}`,{type:n})}))}(r).then(e).catch(n):n(t)))}))}function mv(t,e){return t.type?t.type:e.match(/data:(image\/\w+);base64/)?e.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class gv extends Lo{static get pluginName(){return"ImageUploadUI"}init(){const t=this.editor;t.ui.componentFactory.add("uploadImage",(()=>this._createToolbarButton())),t.ui.componentFactory.add("imageUpload",(()=>this._createToolbarButton())),t.ui.componentFactory.add("menuBar:uploadImage",(()=>this._createMenuBarButton("standalone"))),t.plugins.has("ImageInsertUI")&&t.plugins.get("ImageInsertUI").registerIntegration({name:"upload",observable:()=>t.commands.get("uploadImage"),buttonViewCreator:()=>this._createToolbarButton(),formViewCreator:()=>this._createDropdownButton(),menuBarButtonViewCreator:t=>this._createMenuBarButton(t?"insertOnly":"insertNested")})}_createButton(t){const e=this.editor,n=e.locale,r=e.commands.get("uploadImage"),i=e.config.get("image.upload.types"),o=hv(i),s=new t(e.locale),a=n.t;return s.set({acceptedType:i.map((t=>`image/${t}`)).join(","),allowMultipleFiles:!0,label:a("Upload from computer"),icon:zu.imageUpload}),s.bind("isEnabled").to(r),s.on("done",((t,n)=>{const r=Array.from(n).filter((t=>o.test(t.type)));r.length&&(e.execute("uploadImage",{file:r}),e.editing.view.focus())})),s}_createToolbarButton(){const t=this.editor.locale.t,e=this.editor.plugins.get("ImageInsertUI"),n=this.editor.commands.get("uploadImage"),r=this._createButton(sg);return r.tooltip=!0,r.bind("label").to(e,"isImageSelected",n,"isAccessAllowed",((e,n)=>t(n?e?"Replace image from computer":"Upload image from computer":"You have no image upload permissions."))),r}_createDropdownButton(){const t=this.editor.locale.t,e=this.editor.plugins.get("ImageInsertUI"),n=this._createButton(sg);return n.withText=!0,n.bind("label").to(e,"isImageSelected",(e=>t(e?"Replace from computer":"Upload from computer"))),n.on("execute",(()=>{e.dropdownView.isOpen=!1})),n}_createMenuBarButton(t){const e=this.editor.locale.t,n=this._createButton(ak);switch(n.withText=!0,t){case"standalone":n.label=e("Image from computer");break;case"insertOnly":n.label=e("Image");break;case"insertNested":n.label=e("From computer")}return n}}var pv=n(2267),fv={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(pv.A,fv);pv.A.locals;var bv=n(7693),kv={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(bv.A,kv);bv.A.locals;var wv=n(1559),Av={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(wv.A,Av);wv.A.locals;class _v extends Lo{static get pluginName(){return"ImageUploadProgress"}placeholder;constructor(t){super(t),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const t=this.editor;t.plugins.has("ImageBlockEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",this.uploadStatusChange),t.plugins.has("ImageInlineEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",this.uploadStatusChange)}uploadStatusChange=(t,e,n)=>{const r=this.editor,i=e.item,o=i.getAttribute("uploadId");if(!n.consumable.consume(e.item,t.name))return;const s=r.plugins.get("ImageUtils"),a=r.plugins.get(Mk),l=o?e.attributeNewValue:null,c=this.placeholder,d=r.editing.mapper.toViewElement(i),h=n.writer;if("reading"==l)return Cv(d,h),void vv(s,c,d,h);if("uploading"==l){const t=a.loaders.get(o);return Cv(d,h),void(t?(yv(d,h),function(t,e,n,r){const i=function(t){const e=t.createUIElement("div",{class:"ck-progress-bar"});return t.setCustomProperty("progressBar",!0,e),e}(e);e.insert(e.createPositionAt(t,"end"),i),n.on("change:uploadedPercent",((t,e,n)=>{r.change((t=>{t.setStyle("width",n+"%",i)}))}))}(d,h,t,r.editing.view),function(t,e,n,r){if(r.data){const i=t.findViewImgElement(e);n.setAttribute("src",r.data,i)}}(s,d,h,t)):vv(s,c,d,h))}"complete"==l&&a.loaders.get(o)&&function(t,e,n){const r=e.createUIElement("div",{class:"ck-image-upload-complete-icon"});e.insert(e.createPositionAt(t,"end"),r),setTimeout((()=>{n.change((t=>t.remove(t.createRangeOn(r))))}),3e3)}(d,h,r.editing.view),function(t,e){Ev(t,e,"progressBar")}(d,h),yv(d,h),function(t,e){e.removeClass("ck-appear",t)}(d,h)}}function Cv(t,e){t.hasClass("ck-appear")||e.addClass("ck-appear",t)}function vv(t,e,n,r){n.hasClass("ck-image-upload-placeholder")||r.addClass("ck-image-upload-placeholder",n);const i=t.findViewImgElement(n);i.getAttribute("src")!==e&&r.setAttribute("src",e,i),xv(n,"placeholder")||r.insert(r.createPositionAfter(i),function(t){const e=t.createUIElement("div",{class:"ck-upload-placeholder-loader"});return t.setCustomProperty("placeholder",!0,e),e}(r))}function yv(t,e){t.hasClass("ck-image-upload-placeholder")&&e.removeClass("ck-image-upload-placeholder",t),Ev(t,e,"placeholder")}function xv(t,e){for(const n of t.getChildren())if(n.getCustomProperty(e))return n}function Ev(t,e,n){const r=xv(t,n);r&&e.remove(e.createRangeOn(r))}class Bv extends Mo{constructor(t){super(t),this.set("isAccessAllowed",!0)}refresh(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.model.document.selection.getSelectedElement();this.isEnabled=e.isImageAllowed()||e.isImage(n)}execute(t){const e=eo(t.file),n=this.editor.model.document.selection,r=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((t,e)=>{const o=n.getSelectedElement();if(e&&o&&r.isImage(o)){const e=this.editor.model.createPositionAfter(o);this._uploadImage(t,i,e)}else this._uploadImage(t,i)}))}_uploadImage(t,e,n){const r=this.editor,i=r.plugins.get(Mk).createLoader(t),o=r.plugins.get("ImageUtils");i&&o.insertImage({...e,uploadId:i.id},n)}}class Dv extends Lo{static get requires(){return[Mk,bb,l_,DC]}static get pluginName(){return"ImageUploadEditing"}_uploadImageElements;constructor(t){super(t),t.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const t=this.editor,e=t.model.document,n=t.conversion,r=t.plugins.get(Mk),i=t.plugins.get("ImageUtils"),o=t.plugins.get("ClipboardPipeline"),s=hv(t.config.get("image.upload.types")),a=new Bv(t);t.commands.add("uploadImage",a),t.commands.add("imageUpload",a),n.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(t.editing.view.document,"clipboardInput",((e,n)=>{if(r=n.dataTransfer,Array.from(r.types).includes("text/html")&&""!==r.getData("text/html"))return;var r;const i=Array.from(n.dataTransfer.files).filter((t=>!!t&&s.test(t.type)));if(!i.length)return;e.stop(),t.model.change((e=>{n.targetRanges&&e.setSelection(n.targetRanges.map((e=>t.editing.mapper.toModelRange(e)))),t.execute("uploadImage",{file:i})}));if(!t.commands.get("uploadImage").isAccessAllowed){const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("You have no image upload permissions."),{namespace:"image"})}})),this.listenTo(o,"inputTransformation",((e,n)=>{const o=Array.from(t.editing.view.createRangeIn(n.content)).map((t=>t.item)).filter((t=>function(t,e){return!(!t.isInlineImageView(e)||!e.getAttribute("src")||!e.getAttribute("src").match(/^data:image\/\w+;base64,/g)&&!e.getAttribute("src").match(/^blob:/g))}(i,t)&&!t.getAttribute("uploadProcessed"))).map((t=>({promise:uv(t),imageElement:t})));if(!o.length)return;const s=new jh(t.editing.view.document);for(const t of o){s.setAttribute("uploadProcessed",!0,t.imageElement);const e=r.createLoader(t.promise);e&&(s.setAttribute("src","",t.imageElement),s.setAttribute("uploadId",e.id,t.imageElement))}})),t.editing.view.document.on("dragover",((t,e)=>{e.preventDefault()})),e.on("change",(()=>{const n=e.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),i=new Set;for(const e of n)if("insert"==e.type&&"$text"!=e.name){const n=e.position.nodeAfter,o="$graveyard"==e.position.root.rootName;for(const e of Sv(t,n)){const t=e.getAttribute("uploadId");if(!t)continue;const n=r.loaders.get(t);n&&(o?i.has(t)||n.abort():(i.add(t),this._uploadImageElements.set(t,e),"idle"==n.status&&this._readAndUpload(n)))}}})),this.on("uploadComplete",((t,{imageElement:e,data:n})=>{const r=n.urls?n.urls:n;this.editor.model.change((t=>{t.setAttribute("src",r.default,e),this._parseAndSetSrcsetAttributeOnImage(r,e,t),i.setImageNaturalSizeAttributes(e)}))}),{priority:"low"})}afterInit(){const t=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&t.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(t){const e=this.editor,n=e.model,r=e.locale.t,i=e.plugins.get(Mk),o=e.plugins.get(bb),s=e.plugins.get("ImageUtils"),a=this._uploadImageElements;return n.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","reading",a.get(t.id))})),t.read().then((()=>{const i=t.upload(),o=a.get(t.id);if(Xn.isSafari){const t=e.editing.mapper.toViewElement(o),n=s.findViewImgElement(t);e.editing.view.once("render",(()=>{if(!n.parent)return;const t=e.editing.view.domConverter.mapViewToDom(n.parent);if(!t)return;const r=t.style.display;t.style.display="none",t._ckHack=t.offsetHeight,t.style.display=r}))}return e.ui&&e.ui.ariaLiveAnnouncer.announce(r("Uploading image")),n.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("uploadStatus","uploading",o)})),i})).then((i=>{n.enqueueChange({isUndoable:!1},(n=>{const o=a.get(t.id);n.setAttribute("uploadStatus","complete",o),e.ui&&e.ui.ariaLiveAnnouncer.announce(r("Image upload complete")),this.fire("uploadComplete",{data:i,imageElement:o})})),l()})).catch((i=>{if(e.ui&&e.ui.ariaLiveAnnouncer.announce(r("Error during image upload")),"error"!==t.status&&"aborted"!==t.status)throw i;"error"==t.status&&i&&o.showWarning(i,{title:r("Upload failed"),namespace:"upload"}),n.enqueueChange({isUndoable:!1},(e=>{e.remove(a.get(t.id))})),l()}));function l(){n.enqueueChange({isUndoable:!1},(e=>{const n=a.get(t.id);e.removeAttribute("uploadId",n),e.removeAttribute("uploadStatus",n),a.delete(t.id)})),i.destroyLoader(t)}}_parseAndSetSrcsetAttributeOnImage(t,e,n){let r=0;const i=Object.keys(t).filter((t=>{const e=parseInt(t,10);if(!isNaN(e))return r=Math.max(r,e),!0})).map((e=>`${t[e]} ${e}w`)).join(", ");if(""!=i){const t={srcset:i};e.hasAttribute("width")||e.hasAttribute("height")||(t.width=r),n.setAttributes(t,e)}}}function Sv(t,e){const n=t.plugins.get("ImageUtils");return Array.from(t.model.createRangeOn(e)).filter((t=>n.isImage(t.item))).map((t=>t.item))}const Tv=function(t,e){return function(n,r){if(null==n)return n;if(!Be(n))return t(n,r);for(var i=n.length,o=e?i:-1,s=Object(n);(e?o--:++o{e.setAttribute("resizedWidth",t.width,i),e.removeAttribute("resizedHeight",i),r.setImageNaturalSizeAttributes(i)}))}}class Fv extends Lo{static get requires(){return[DC]}static get pluginName(){return"ImageResizeEditing"}constructor(t){super(t),t.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 t=this.editor,e=new Vv(t);this._registerConverters("imageBlock"),this._registerConverters("imageInline"),t.commands.add("resizeImage",e),t.commands.add("imageResize",e)}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(t){const e=this.editor,n=e.plugins.get("ImageUtils");e.conversion.for("downcast").add((e=>e.on(`attribute:resizedWidth:${t}`,((t,e,n)=>{if(!n.consumable.consume(e.item,t.name))return;const r=n.writer,i=n.mapper.toViewElement(e.item);null!==e.attributeNewValue?(r.setStyle("width",e.attributeNewValue,i),r.addClass("image_resized",i)):(r.removeStyle("width",i),r.removeClass("image_resized",i))})))),e.conversion.for("dataDowncast").attributeToAttribute({model:{name:t,key:"resizedHeight"},view:t=>({key:"style",value:{height:t}})}),e.conversion.for("editingDowncast").add((e=>e.on(`attribute:resizedHeight:${t}`,((e,r,i)=>{if(!i.consumable.consume(r.item,e.name))return;const o=i.writer,s=i.mapper.toViewElement(r.item),a="imageInline"===t?n.findViewImgElement(s):s;null!==r.attributeNewValue?o.setStyle("height",r.attributeNewValue,a):o.removeStyle("height",a)})))),e.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===t?"figure":"img",styles:{width:/.+/}},model:{key:"resizedWidth",value:t=>EC(t)?null:t.getStyle("width")}}),e.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===t?"figure":"img",styles:{height:/.+/}},model:{key:"resizedHeight",value:t=>EC(t)?null:t.getStyle("height")}})}}const Rv=(()=>({small:zu.objectSizeSmall,medium:zu.objectSizeMedium,large:zu.objectSizeLarge,custom:zu.objectSizeCustom,original:zu.objectSizeFull}))();class Lv extends Lo{static get requires(){return[Fv]}static get pluginName(){return"ImageResizeButtons"}_resizeUnit;constructor(t){super(t),this._resizeUnit=t.config.get("image.resizeUnit")}init(){const t=this.editor,e=t.config.get("image.resizeOptions"),n=t.commands.get("resizeImage");this.bind("isEnabled").to(n);for(const t of e)this._registerImageResizeButton(t);this._registerImageResizeDropdown(e)}_registerImageResizeButton(t){const e=this.editor,{name:n,value:r,icon:i}=t;e.ui.componentFactory.add(n,(n=>{const o=new wm(n),s=e.commands.get("resizeImage"),a=this._getOptionLabelValue(t,!0);if(!Rv[i])throw new kr("imageresizebuttons-missing-icon",e,t);if(o.set({label:a,icon:Rv[i],tooltip:a,isToggleable:!0}),o.bind("isEnabled").to(this),e.plugins.has("ImageCustomResizeUI")&&zv(t)){const t=e.plugins.get("ImageCustomResizeUI");this.listenTo(o,"execute",(()=>{t._showForm(this._resizeUnit)}))}else{const t=r?r+this._resizeUnit:null;o.bind("isOn").to(s,"value",Mv(t)),this.listenTo(o,"execute",(()=>{e.execute("resizeImage",{width:t})}))}return o}))}_registerImageResizeDropdown(t){const e=this.editor,n=e.t,r=t.find((t=>!t.value)),i=i=>{const o=e.commands.get("resizeImage"),s=Dp(i,jg),a=s.buttonView,l=n("Resize image");return a.set({tooltip:l,commandValue:r.value,icon:Rv.medium,isToggleable:!0,label:this._getOptionLabelValue(r),withText:!0,class:"ck-resize-image-button",ariaLabel:l,ariaLabelledBy:void 0}),a.bind("label").to(o,"value",(t=>t&&t.width?t.width:this._getOptionLabelValue(r))),s.bind("isEnabled").to(this),Ip(s,(()=>this._getResizeDropdownListItemDefinitions(t,o)),{ariaLabel:n("Image resize list"),role:"menu"}),this.listenTo(s,"execute",(t=>{"onClick"in t.source?t.source.onClick():(e.execute(t.source.commandName,{width:t.source.commandValue}),e.editing.view.focus())})),s};e.ui.componentFactory.add("resizeImage",i),e.ui.componentFactory.add("imageResize",i)}_getOptionLabelValue(t,e=!1){const n=this.editor.t;return t.label?t.label:e?zv(t)?n("Custom image size"):t.value?n("Resize image to %0",t.value+this._resizeUnit):n("Resize image to the original size"):zv(t)?n("Custom"):t.value?t.value+this._resizeUnit:n("Original")}_getResizeDropdownListItemDefinitions(t,e){const{editor:n}=this,r=new xo,i=t.map((t=>zv(t)?{...t,valueWithUnits:"custom"}:t.value?{...t,valueWithUnits:`${t.value}${this._resizeUnit}`}:{...t,valueWithUnits:null}));for(const t of i){let o=null;if(n.plugins.has("ImageCustomResizeUI")&&zv(t)){const r=n.plugins.get("ImageCustomResizeUI");o={type:"button",model:new kb({label:this._getOptionLabelValue(t),role:"menuitemradio",withText:!0,icon:null,onClick:()=>{r._showForm(this._resizeUnit)}})};const s=Pv(i,"valueWithUnits");o.model.bind("isOn").to(e,"value",Nv(s))}else o={type:"button",model:new kb({commandName:"resizeImage",commandValue:t.valueWithUnits,label:this._getOptionLabelValue(t),role:"menuitemradio",withText:!0,icon:null})},o.model.bind("isOn").to(e,"value",Mv(t.valueWithUnits));o.model.bind("isEnabled").to(e,"isEnabled"),r.add(o)}return r}}function zv(t){return"custom"===t.value}function Mv(t){return e=>null===t&&e===t||null!==e&&e.width===t}function Nv(t){return e=>!t.some((t=>Mv(t)(e)))}const Ov="image_resized";class Hv extends Lo{static get requires(){return[Y_,DC]}static get pluginName(){return"ImageResizeHandles"}init(){const t=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(t),this._setupResizerCreator()}_setupResizerCreator(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageUtils");e.addObserver(OC),this.listenTo(e.document,"imageLoaded",((r,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 o=t.editing.view.domConverter,s=o.domToView(i.target),a=n.getImageWidgetFromImageView(s);let l=this.editor.plugins.get(Y_).getResizerByViewElement(a);if(l)return void l.redraw();const c=t.editing.mapper,d=c.toModelElement(a);l=t.plugins.get(Y_).attachTo({unit:t.config.get("image.resizeUnit"),modelElement:d,viewElement:a,editor:t,getHandleHost:t=>t.querySelector("img"),getResizeHost:()=>o.mapViewToDom(c.toViewElement(d)),isCentered:()=>"alignCenter"==d.getAttribute("imageStyle"),onCommit(n){e.change((t=>{t.removeClass(Ov,a)})),t.execute("resizeImage",{width:n})}}),l.on("updateSize",(()=>{a.hasClass(Ov)||e.change((t=>{t.addClass(Ov,a)}));const t="imageInline"===d.name?s:a;t.getStyle("height")&&e.change((e=>{e.removeStyle("height",t)}))})),l.bind("isEnabled").to(this)}))}}function jv(t){if(!t)return null;const[,e,n]=t.trim().match(/([.,\d]+)(%|px)$/)||[],r=Number.parseFloat(e);return Number.isNaN(r)?null:{value:r,unit:n}}function qv(t,e,n){return"px"===n?{value:e.value,unit:"px"}:{value:e.value/t*100,unit:"%"}}function Uv(t){const{editing:e}=t,n=t.plugins.get("ImageUtils").getClosestSelectedImageElement(t.model.document.selection);if(!n)return null;const r=e.mapper.toViewElement(n);return{model:n,view:r,dom:e.view.domConverter.mapViewToDom(r)}}var Wv=n(4642),$v={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Wv.A,$v);Wv.A.locals;class Gv extends lm{focusTracker;keystrokes;unit;labeledInput;saveButtonView;cancelButtonView;_focusables;_focusCycler;_validators;constructor(t,e,n){super(t);const r=this.locale.t;this.focusTracker=new Bo,this.keystrokes=new Do,this.unit=e,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(r("Save"),zu.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(r("Cancel"),zu.cancel,"ck-button-cancel","cancel"),this._focusables=new Mu,this._validators=n,this._focusCycler=new ym({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),hm({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(t,e,n,r){const i=new wm(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),r&&i.delegate("execute").to(this,r),i}_createLabeledInputView(){const t=this.locale.t,e=new Sg(this.locale,Lp);return e.label=t("Resize image (in %0)",this.unit),e.fieldView.set({step:.1}),e}isValid(){this.resetFormStatus();for(const t of this._validators){const e=t(this);if(e)return this.labeledInput.errorText=e,!1}return!0}resetFormStatus(){this.labeledInput.errorText=null}get rawSize(){const{element:t}=this.labeledInput.fieldView;return t?t.value:null}get parsedSize(){const{rawSize:t}=this;if(null===t)return null;const e=Number.parseFloat(t);return Number.isNaN(e)?null:e}get sizeWithUnits(){const{parsedSize:t,unit:e}=this;return null===t?null:`${t}${e}`}}class Kv extends Lo{_balloon;_form;static get requires(){return[yb]}static get pluginName(){return"ImageCustomResizeUI"}destroy(){super.destroy(),this._form&&this._form.destroy()}_createForm(t){const e=this.editor;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(dm(Gv))(e.locale,t,function(t){const e=t.t;return[t=>""===t.rawSize.trim()?e("The value must not be empty."):null===t.parsedSize?e("The value should be a plain number."):void 0]}(e)),this._form.render(),this.listenTo(this._form,"submit",(()=>{this._form.isValid()&&(e.execute("resizeImage",{width:this._form.sizeWithUnits}),this._hideForm(!0))})),this.listenTo(this._form.labeledInput,"change:errorText",(()=>{e.ui.update()})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((t,e)=>{this._hideForm(!0),e()})),cm({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(t){if(this._isVisible)return;this._form||this._createForm(t);const e=this.editor,n=this._form.labeledInput;this._form.disableCssTransitions(),this._form.resetFormStatus(),this._isInBalloon||this._balloon.add({view:this._form,position:RC(e)});const r=function(t,e){const n=Uv(t);if(!n)return null;const r=jv(n.model.getAttribute("resizedWidth")||null);return r?r.unit===e?r:qv(y_(n.dom),{unit:"px",value:new fi(n.dom).width},e):null}(e,t),i=r?r.value.toFixed(1):"",o=function(t,e){const n=Uv(t);if(!n)return null;const r=y_(n.dom),i=jv(window.getComputedStyle(n.dom).minWidth)||{value:1,unit:"px"};return{unit:e,lower:Math.max(.1,qv(r,i,e).value),upper:"px"===e?r:100}}(e,t);n.fieldView.value=n.fieldView.element.value=i,o&&Object.assign(n.fieldView,{min:o.lower.toFixed(1),max:Math.ceil(o.upper).toFixed(1)}),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(t=!1){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),t&&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 Zv=n(3469),Yv={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Zv.A,Yv);Zv.A.locals;class Jv extends Mo{_defaultStyles;_styles;constructor(t,e){super(t),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(e.map((t=>{if(t.isDefault)for(const e of t.modelElements)this._defaultStyles[e]=t.name;return[t.name,t]})))}refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled?t.hasAttribute("imageStyle")?this.value=t.getAttribute("imageStyle"):this.value=this._defaultStyles[t.name]:this.value=!1}execute(t={}){const e=this.editor,n=e.model,r=e.plugins.get("ImageUtils");n.change((e=>{const i=t.value,{setImageSizes:o=!0}=t;let s=r.getClosestSelectedImageElement(n.document.selection);i&&this.shouldConvertImageType(i,s)&&(this.editor.execute(r.isBlockImage(s)?"imageTypeInline":"imageTypeBlock",{setImageSizes:o}),s=r.getClosestSelectedImageElement(n.document.selection)),!i||this._styles.get(i).isDefault?e.removeAttribute("imageStyle",s):e.setAttribute("imageStyle",i,s),o&&r.setImageNaturalSizeAttributes(s)}))}shouldConvertImageType(t,e){return!this._styles.get(t).modelElements.includes(e.name)}}const Qv={get inline(){return{name:"inline",title:"In line",icon:zu.objectInline,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:zu.objectLeft,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:zu.objectBlockLeft,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:zu.objectCenter,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:zu.objectRight,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:zu.objectBlockRight,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:zu.objectCenter,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:zu.objectRight,modelElements:["imageBlock"],className:"image-style-side"}}},Xv=(()=>({full:zu.objectFullWidth,left:zu.objectBlockLeft,right:zu.objectBlockRight,center:zu.objectCenter,inlineLeft:zu.objectLeft,inlineRight:zu.objectRight,inline:zu.objectInline}))(),ty=[{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 ey(t){wr("image-style-configuration-definition-invalid",t)}const ny={normalizeStyles:function(t){const e=(t.configuredStyles.options||[]).map((t=>function(t){t="string"==typeof t?Qv[t]?{...Qv[t]}:{name:t}:function(t,e){const n={...e};for(const r in t)Object.prototype.hasOwnProperty.call(e,r)||(n[r]=t[r]);return n}(Qv[t.name],t);"string"==typeof t.icon&&(t.icon=Xv[t.icon]||t.icon);return t}(t))).filter((e=>function(t,{isBlockPluginLoaded:e,isInlinePluginLoaded:n}){const{modelElements:r,name:i}=t;if(!(r&&r.length&&i))return ey({style:t}),!1;{const i=[e?"imageBlock":null,n?"imageInline":null];if(!r.some((t=>i.includes(t))))return wr("image-style-missing-dependency",{style:t,missingPlugins:r.map((t=>"imageBlock"===t?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(e,t)));return e},getDefaultStylesConfiguration:function(t,e){return t&&e?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:t?{options:["block","side"]}:e?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(t){return t.has("ImageBlockEditing")&&t.has("ImageInlineEditing")?[...ty]:[]},warnInvalidStyle:ey,DEFAULT_OPTIONS:Qv,DEFAULT_ICONS:Xv,DEFAULT_DROPDOWN_DEFINITIONS:ty};function ry(t,e){for(const n of e)if(n.name===t)return n}class iy extends Lo{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[DC]}normalizedStyles;init(){const{normalizeStyles:t,getDefaultStylesConfiguration:e}=ny,n=this.editor,r=n.plugins.has("ImageBlockEditing"),i=n.plugins.has("ImageInlineEditing");n.config.define("image.styles",e(r,i)),this.normalizedStyles=t({configuredStyles:n.config.get("image.styles"),isBlockPluginLoaded:r,isInlinePluginLoaded:i}),this._setupConversion(r,i),this._setupPostFixer(),n.commands.add("imageStyle",new Jv(n,this.normalizedStyles))}_setupConversion(t,e){const n=this.editor,r=n.model.schema,i=(o=this.normalizedStyles,(t,e,n)=>{if(!n.consumable.consume(e.item,t.name))return;const r=ry(e.attributeNewValue,o),i=ry(e.attributeOldValue,o),s=n.mapper.toViewElement(e.item),a=n.writer;i&&a.removeClass(i.className,s),r&&a.addClass(r.className,s)});var o;const s=function(t){const e={imageInline:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageInline"))),imageBlock:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageBlock")))};return(t,n,r)=>{if(!n.modelRange)return;const i=n.viewItem,o=Eo(n.modelRange.getItems());if(o&&r.schema.checkAttribute(o,"imageStyle"))for(const t of e[o.name])r.consumable.consume(i,{classes:t.className})&&r.writer.setAttribute("imageStyle",t.name,o)}}(this.normalizedStyles);n.editing.downcastDispatcher.on("attribute:imageStyle",i),n.data.downcastDispatcher.on("attribute:imageStyle",i),t&&(r.extend("imageBlock",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),e&&(r.extend("imageInline",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const t=this.editor,e=t.model.document,n=t.plugins.get(DC),r=new Map(this.normalizedStyles.map((t=>[t.name,t])));e.registerPostFixer((t=>{let i=!1;for(const o of e.differ.getChanges())if("insert"==o.type||"attribute"==o.type&&"imageStyle"==o.attributeKey){let e="insert"==o.type?o.position.nodeAfter:o.range.start.nodeAfter;if(e&&e.is("element","paragraph")&&e.childCount>0&&(e=e.getChild(0)),!n.isImage(e))continue;const s=e.getAttribute("imageStyle");if(!s)continue;const a=r.get(s);a&&a.modelElements.includes(e.name)||(t.removeAttribute("imageStyle",e),i=!0)}return i}))}}var oy=n(6386),sy={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(oy.A,sy);oy.A.locals;class ay extends Lo{static get requires(){return[iy]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const t=this.editor.t;return{"Wrap text":t("Wrap text"),"Break text":t("Break text"),"In line":t("In line"),"Full size image":t("Full size image"),"Side image":t("Side image"),"Left aligned image":t("Left aligned image"),"Centered image":t("Centered image"),"Right aligned image":t("Right aligned image")}}init(){const t=this.editor.plugins,e=this.editor.config.get("image.toolbar")||[],n=ly(t.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const t of n)this._createButton(t);const r=ly([...e.filter(s),...ny.getDefaultDropdownDefinitions(t)],this.localizedDefaultStylesTitles);for(const t of r)this._createDropdown(t,n)}_createDropdown(t,e){const n=this.editor.ui.componentFactory;n.add(t.name,(r=>{let i;const{defaultItem:o,items:s,title:a}=t,l=s.filter((t=>e.find((({name:e})=>cy(e)===t)))).map((t=>{const e=n.create(t);return t===o&&(i=e),e}));s.length!==l.length&&ny.warnInvalidStyle({dropdown:t});const c=Dp(r,vp),d=c.buttonView,h=d.arrowView;return Sp(c,l,{enableActiveItemFocusOnDropdownOpen:!0}),d.set({label:dy(a,i.label),class:null,tooltip:!0}),h.unbind("label"),h.set({label:a}),d.bind("icon").toMany(l,"isOn",((...t)=>{const e=t.findIndex(co);return e<0?i.icon:l[e].icon})),d.bind("label").toMany(l,"isOn",((...t)=>{const e=t.findIndex(co);return dy(a,e<0?i.label:l[e].label)})),d.bind("isOn").toMany(l,"isOn",((...t)=>t.some(co))),d.bind("class").toMany(l,"isOn",((...t)=>t.some(co)?"ck-splitbutton_flatten":void 0)),d.on("execute",(()=>{l.some((({isOn:t})=>t))?c.isOpen=!c.isOpen:i.fire("execute")})),c.bind("isEnabled").toMany(l,"isEnabled",((...t)=>t.some(co))),this.listenTo(c,"execute",(()=>{this.editor.editing.view.focus()})),c}))}_createButton(t){const e=t.name;this.editor.ui.componentFactory.add(cy(e),(n=>{const r=this.editor.commands.get("imageStyle"),i=new wm(n);return i.set({label:t.title,icon:t.icon,tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(r,"isEnabled"),i.bind("isOn").to(r,"value",(t=>t===e)),i.on("execute",this._executeCommand.bind(this,e)),i}))}_executeCommand(t){this.editor.execute("imageStyle",{value:t}),this.editor.editing.view.focus()}}function ly(t,e){for(const n of t)e[n.title]&&(n.title=e[n.title]);return t}function cy(t){return`imageStyle:${t}`}function dy(t,e){return(t?t+": ":"")+e}class hy{_definitions=new Set;get length(){return this._definitions.size}add(t){Array.isArray(t)?t.forEach((t=>this._definitions.add(t))):this._definitions.add(t)}getDispatcher(){return t=>{t.on("attribute:linkHref",((t,e,n)=>{if(!n.consumable.test(e.item,"attribute:linkHref"))return;if(!e.item.is("selection")&&!n.schema.isInline(e.item))return;const r=n.writer,i=r.document.selection;for(const t of this._definitions){const o=r.createAttributeElement("a",t.attributes,{priority:5});t.classes&&r.addClass(t.classes,o);for(const e in t.styles)r.setStyle(e,t.styles[e],o);r.setCustomProperty("link",!0,o),t.callback(e.attributeNewValue)?e.item.is("selection")?r.wrap(i.getFirstRange(),o):r.wrap(n.mapper.toViewRange(e.range),o):r.unwrap(n.mapper.toViewRange(e.range),o)}}),{priority:"high"})}}getDispatcherForLinkedImage(){return t=>{t.on("attribute:linkHref:imageBlock",((t,e,{writer:n,mapper:r})=>{const i=r.toViewElement(e.item),o=Array.from(i.getChildren()).find((t=>t.is("element","a")));for(const t of this._definitions){const r=So(t.attributes);if(t.callback(e.attributeNewValue)){for(const[t,e]of r)"class"===t?n.addClass(e,o):n.setAttribute(t,e,o);t.classes&&n.addClass(t.classes,o);for(const e in t.styles)n.setStyle(e,t.styles[e],o)}else{for(const[t,e]of r)"class"===t?n.removeClass(e,o):n.removeAttribute(t,o);t.classes&&n.removeClass(t.classes,o);for(const e in t.styles)n.removeStyle(e,o)}}}))}}}const uy=function(t,e,n){var r=t.length;return n=void 0===n?r:n,!e&&n>=r?t:Ss(t,e,n)};var my=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");const gy=function(t){return my.test(t)};const py=function(t){return t.split("")};var fy="\\ud800-\\udfff",by="["+fy+"]",ky="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",wy="\\ud83c[\\udffb-\\udfff]",Ay="[^"+fy+"]",_y="(?:\\ud83c[\\udde6-\\uddff]){2}",Cy="[\\ud800-\\udbff][\\udc00-\\udfff]",vy="(?:"+ky+"|"+wy+")"+"?",yy="[\\ufe0e\\ufe0f]?",xy=yy+vy+("(?:\\u200d(?:"+[Ay,_y,Cy].join("|")+")"+yy+vy+")*"),Ey="(?:"+[Ay+ky+"?",ky,_y,Cy,by].join("|")+")",By=RegExp(wy+"(?="+wy+")|"+Ey+xy,"g");const Dy=function(t){return t.match(By)||[]};const Sy=function(t){return gy(t)?Dy(t):py(t)};const Ty=function(t){return function(e){e=ys(e);var n=gy(e)?Sy(e):void 0,r=n?n[0]:e.charAt(0),i=n?uy(n,1).join(""):e.slice(1);return r[t]()+i}}("toUpperCase"),Iy=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Py=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Vy=/^((\w+:(\/{2,})?)|(\W))/i,Fy=["https?","ftps?","mailto"],Ry="Ctrl+K";function Ly(t,{writer:e}){const n=e.createAttributeElement("a",{href:t},{priority:5});return e.setCustomProperty("link",!0,n),n}function zy(t,e=Fy){const n=String(t),r=e.join("|");return function(t,e){const n=t.replace(Iy,"");return!!n.match(e)}(n,new RegExp(`${"^(?:(?:):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))".replace("",r)}`,"i"))?n:"#"}function My(t,e){return!!t&&e.checkAttribute(t.name,"linkHref")}function Ny(t,e){const n=(r=t,Py.test(r)?"mailto:":e);var r;const i=!!n&&!Oy(t);return t&&i?n+t:t}function Oy(t){return Vy.test(t)}function Hy(t){window.open(t,"_blank","noopener")}class jy extends Mo{manualDecorators=new xo;automaticDecorators=new hy;restoreManualDecoratorStates(){for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement()||Eo(e.getSelectedBlocks());My(n,t.schema)?(this.value=n.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttribute(n,"linkHref")):(this.value=e.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref"));for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}execute(t,e={}){const n=this.editor.model,r=n.document.selection,i=[],o=[];for(const t in e)e[t]?i.push(t):o.push(t);n.change((e=>{if(r.isCollapsed){const s=r.getFirstPosition();if(r.hasAttribute("linkHref")){const a=qy(r);let l=yw(s,"linkHref",r.getAttribute("linkHref"),n);r.getAttribute("linkHref")===a&&(l=this._updateLinkContent(n,e,l,t)),e.setAttribute("linkHref",t,l),i.forEach((t=>{e.setAttribute(t,!0,l)})),o.forEach((t=>{e.removeAttribute(t,l)})),e.setSelection(e.createPositionAfter(l.end.nodeBefore))}else if(""!==t){const o=So(r.getAttributes());o.set("linkHref",t),i.forEach((t=>{o.set(t,!0)}));const{end:a}=n.insertContent(e.createText(t,o),s);e.setSelection(a)}["linkHref",...i,...o].forEach((t=>{e.removeSelectionAttribute(t)}))}else{const s=n.schema.getValidRanges(r.getRanges(),"linkHref"),a=[];for(const t of r.getSelectedBlocks())n.schema.checkAttribute(t,"linkHref")&&a.push(e.createRangeOn(t));const l=a.slice();for(const t of s)this._isRangeToUpdate(t,a)&&l.push(t);for(const s of l){let a=s;if(1===l.length){const i=qy(r);r.getAttribute("linkHref")===i&&(a=this._updateLinkContent(n,e,s,t),e.setSelection(e.createSelection(a)))}e.setAttribute("linkHref",t,a),i.forEach((t=>{e.setAttribute(t,!0,a)})),o.forEach((t=>{e.removeAttribute(t,a)}))}}}))}_getDecoratorStateFromModel(t){const e=this.editor.model,n=e.document.selection,r=n.getSelectedElement();return My(r,e.schema)?r.getAttribute(t):n.getAttribute(t)}_isRangeToUpdate(t,e){for(const n of e)if(n.containsRange(t))return!1;return!0}_updateLinkContent(t,e,n,r){const i=e.createText(r,{linkHref:r});return t.insertContent(i,n)}}function qy(t){if(t.isCollapsed){const e=t.getFirstPosition();return e.textNode&&e.textNode.data}{const e=Array.from(t.getFirstRange().getItems());if(e.length>1)return null;const n=e[0];return n.is("$text")||n.is("$textProxy")?n.data:null}}class Uy extends Mo{refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement();My(n,t.schema)?this.isEnabled=t.schema.checkAttribute(n,"linkHref"):this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref")}execute(){const t=this.editor,e=this.editor.model,n=e.document.selection,r=t.commands.get("link");e.change((t=>{const i=n.isCollapsed?[yw(n.getFirstPosition(),"linkHref",n.getAttribute("linkHref"),e)]:e.schema.getValidRanges(n.getRanges(),"linkHref");for(const e of i)if(t.removeAttribute("linkHref",e),r)for(const n of r.manualDecorators)t.removeAttribute(n.id,e)}))}}class Wy extends(jr()){id;defaultValue;label;attributes;classes;styles;constructor({id:t,label:e,attributes:n,classes:r,styles:i,defaultValue:o}){super(),this.id=t,this.set("value",void 0),this.defaultValue=o,this.label=e,this.attributes=n,this.classes=r,this.styles=i}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}var $y=n(7719),Gy={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()($y.A,Gy);$y.A.locals;const Ky="automatic",Zy=/^(https?:)?\/\//;class Yy extends Lo{static get pluginName(){return"LinkEditing"}static get requires(){return[dw,Zk,l_]}constructor(t){super(t),t.config.define("link",{allowCreatingEmptyLinks:!1,addTargetToExternalLinks:!1})}init(){const t=this.editor,e=this.editor.config.get("link.allowedProtocols");t.model.schema.extend("$text",{allowAttributes:"linkHref"}),t.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:Ly}),t.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(t,n)=>Ly(zy(t,e),n)}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:t=>t.getAttribute("href")}}),t.commands.add("link",new jy(t)),t.commands.add("unlink",new Uy(t));const n=function(t,e){const n={"Open in a new tab":t("Open in a new tab"),Downloadable:t("Downloadable")};return e.forEach((t=>("label"in t&&n[t.label]&&(t.label=n[t.label]),t))),e}(t.t,function(t){const e=[];if(t)for(const[n,r]of Object.entries(t)){const t=Object.assign({},r,{id:`link${Ty(n)}`});e.push(t)}return e}(t.config.get("link.decorators")));this._enableAutomaticDecorators(n.filter((t=>t.mode===Ky))),this._enableManualDecorators(n.filter((t=>"manual"===t.mode)));t.plugins.get(dw).registerAttribute("linkHref"),Ew(t,"linkHref","a","ck-link_selected"),this._enableSelectionAttributesFixer(),this._enableClipboardIntegration()}_enableAutomaticDecorators(t){const e=this.editor,n=e.commands.get("link").automaticDecorators;e.config.get("link.addTargetToExternalLinks")&&n.add({id:"linkIsExternal",mode:Ky,callback:t=>!!t&&Zy.test(t),attributes:{target:"_blank",rel:"noopener noreferrer"}}),n.add(t),n.length&&e.conversion.for("downcast").add(n.getDispatcher())}_enableManualDecorators(t){if(!t.length)return;const e=this.editor,n=e.commands.get("link").manualDecorators;t.forEach((t=>{e.model.schema.extend("$text",{allowAttributes:t.id});const r=new Wy(t);n.add(r),e.conversion.for("downcast").attributeToElement({model:r.id,view:(t,{writer:e,schema:n},{item:i})=>{if((i.is("selection")||n.isInline(i))&&t){const t=e.createAttributeElement("a",r.attributes,{priority:5});r.classes&&e.addClass(r.classes,t);for(const n in r.styles)e.setStyle(n,r.styles[n],t);return e.setCustomProperty("link",!0,t),t}}}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",...r._createPattern()},model:{key:r.id}})}))}_enableLinkOpen(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"click",((t,e)=>{if(!(Xn.isMac?e.domEvent.metaKey:e.domEvent.ctrlKey))return;let n=e.domTarget;if("a"!=n.tagName.toLowerCase()&&(n=n.closest("a")),!n)return;const r=n.getAttribute("href");r&&(t.stop(),e.preventDefault(),Hy(r))}),{context:"$capture"}),this.listenTo(e,"keydown",((e,n)=>{const r=t.commands.get("link").value;!!r&&n.keyCode===$i.enter&&n.altKey&&(e.stop(),Hy(r))}))}_enableSelectionAttributesFixer(){const t=this.editor.model,e=t.document.selection;this.listenTo(e,"change:attribute",((n,{attributeKeys:r})=>{r.includes("linkHref")&&!e.hasAttribute("linkHref")&&t.change((e=>{var n;!function(t,e){t.removeSelectionAttribute("linkHref");for(const n of e)t.removeSelectionAttribute(n)}(e,(n=t.schema,n.getDefinition("$text").allowAttributes.filter((t=>t.startsWith("link")))))}))}))}_enableClipboardIntegration(){const t=this.editor,e=t.model,n=this.editor.config.get("link.defaultProtocol");n&&this.listenTo(t.plugins.get("ClipboardPipeline"),"contentInsertion",((t,r)=>{e.change((t=>{const e=t.createRangeIn(r.content);for(const r of e.getItems())if(r.hasAttribute("linkHref")){const e=Ny(r.getAttribute("linkHref"),n);t.setAttribute("linkHref",e,r)}}))}))}}var Jy=n(3817),Qy={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Jy.A,Qy);Jy.A.locals;class Xy extends lm{focusTracker=new Bo;keystrokes=new Do;urlInputView;saveButtonView;cancelButtonView;_manualDecoratorSwitches;children;_validators;_focusables=new Mu;_focusCycler;constructor(t,e,n){super(t);const r=t.t;this._validators=n,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(r("Save"),zu.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(r("Cancel"),zu.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(e),this.children=this._createFormChildren(e.manualDecorators),this._focusCycler=new ym({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const i=["ck","ck-link-form","ck-responsive-form"];e.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(((t,e)=>(t[e.name]=e.isOn,t)),{})}render(){super.render(),hm({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}isValid(){this.resetFormStatus();for(const t of this._validators){const e=t(this);if(e)return this.urlInputView.errorText=e,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null}_createUrlInput(){const t=this.locale.t,e=new Sg(this.locale,Rp);return e.fieldView.inputMode="url",e.label=t("Link URL"),e}_createButton(t,e,n,r){const i=new wm(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),r&&i.delegate("execute").to(this,r),i}_createManualDecoratorSwitches(t){const e=this.createCollection();for(const n of t.manualDecorators){const r=new og(this.locale);r.set({name:n.id,label:n.label,withText:!0}),r.bind("isOn").toMany([n,t],"value",((t,e)=>void 0===e&&void 0===t?!!n.defaultValue:!!t)),r.on("execute",(()=>{n.set("value",!r.isOn)})),e.add(r)}return e}_createFormChildren(t){const e=this.createCollection();if(e.add(this.urlInputView),t.length){const t=new lm;t.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map((t=>({tag:"li",children:[t],attributes:{class:["ck","ck-list__item"]}}))),attributes:{class:["ck","ck-reset","ck-list"]}}),e.add(t)}return e.add(this.saveButtonView),e.add(this.cancelButtonView),e}get url(){const{element:t}=this.urlInputView.fieldView;return t?t.value.trim():null}}var tx=n(8762),ex={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(tx.A,ex);tx.A.locals;class nx extends lm{focusTracker=new Bo;keystrokes=new Do;previewButtonView;unlinkButtonView;editButtonView;_focusables=new Mu;_focusCycler;_linkConfig;constructor(t,e={}){super(t);const n=t.t;this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(n("Unlink"),'',"unlink"),this.editButtonView=this._createButton(n("Edit link"),zu.pencil,"edit"),this.set("href",void 0),this._linkConfig=e,this._focusCycler=new ym({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((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createButton(t,e,n){const r=new wm(this.locale);return r.set({label:t,icon:e,tooltip:!0}),r.delegate("execute").to(this,n),r}_createPreviewButton(){const t=new wm(this.locale),e=this.bindTemplate,n=this.t;return t.set({withText:!0,tooltip:n("Open link in new tab")}),t.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:e.to("href",(t=>t&&zy(t,this._linkConfig.allowedProtocols))),target:"_blank",rel:"noopener noreferrer"}}),t.bind("label").to(this,"href",(t=>t||n("This link has no URL"))),t.bind("isEnabled").to(this,"href",(t=>!!t)),t.template.tag="a",t.template.eventListeners={},t}}const rx="link-ui";class ix extends Lo{actionsView=null;formView=null;_balloon;static get requires(){return[yb]}static get pluginName(){return"LinkUI"}init(){const t=this.editor,e=this.editor.t;t.editing.view.addObserver(Oh),this._balloon=t.plugins.get(yb),this._createToolbarLinkButton(),this._enableBalloonActivators(),t.conversion.for("editingDowncast").markerToHighlight({model:rx,view:{classes:["ck-fake-link-selection"]}}),t.conversion.for("editingDowncast").markerToElement({model:rx,view:(t,{writer:e})=>{if(!t.markerRange.isCollapsed)return null;const n=e.createUIElement("span");return e.addClass(["ck-fake-link-selection","ck-fake-link-selection_collapsed"],n),n}}),t.accessibility.addKeystrokeInfos({keystrokes:[{label:e("Create link"),keystroke:Ry},{label:e("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 t=this.editor,e=new nx(t.locale,t.config.get("link")),n=t.commands.get("link"),r=t.commands.get("unlink");return e.bind("href").to(n,"value"),e.editButtonView.bind("isEnabled").to(n),e.unlinkButtonView.bind("isEnabled").to(r),this.listenTo(e,"edit",(()=>{this._addFormView()})),this.listenTo(e,"unlink",(()=>{t.execute("unlink"),this._hideUI()})),e.keystrokes.set("Esc",((t,e)=>{this._hideUI(),e()})),e.keystrokes.set(Ry,((t,e)=>{this._addFormView(),e()})),e}_createFormView(){const t=this.editor,e=t.commands.get("link"),n=t.config.get("link.defaultProtocol"),r=new(dm(Xy))(t.locale,e,function(t){const e=t.t,n=t.config.get("link.allowCreatingEmptyLinks");return[t=>{if(!n&&!t.url.length)return e("Link URL must not be empty.")}]}(t));return r.urlInputView.fieldView.bind("value").to(e,"value"),r.urlInputView.bind("isEnabled").to(e,"isEnabled"),r.saveButtonView.bind("isEnabled").to(e,"isEnabled"),this.listenTo(r,"submit",(()=>{if(r.isValid()){const{value:e}=r.urlInputView.fieldView.element,i=Ny(e,n);t.execute("link",i,r.getDecoratorSwitchesState()),this._closeFormView()}})),this.listenTo(r.urlInputView,"change:errorText",(()=>{t.ui.update()})),this.listenTo(r,"cancel",(()=>{this._closeFormView()})),r.keystrokes.set("Esc",((t,e)=>{this._closeFormView(),e()})),r}_createToolbarLinkButton(){const t=this.editor;t.ui.componentFactory.add("link",(()=>{const t=this._createButton(wm);return t.set({tooltip:!0}),t})),t.ui.componentFactory.add("menuBar:link",(()=>{const t=this._createButton(Ym);return t.set({role:"menuitemcheckbox"}),t}))}_createButton(t){const e=this.editor,n=e.locale,r=e.commands.get("link"),i=new t(e.locale),o=n.t;return i.set({label:o("Link"),icon:'',keystroke:Ry,isToggleable:!0}),i.bind("isEnabled").to(r,"isEnabled"),i.bind("isOn").to(r,"value",(t=>!!t)),this.listenTo(i,"execute",(()=>this._showUI(!0))),i}_enableBalloonActivators(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),t.keystrokes.set(Ry,((e,n)=>{n(),t.commands.get("link").isEnabled&&this._showUI(!0)}))}_enableUserBalloonInteractions(){this.editor.keystrokes.set("Tab",((t,e)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),e())}),{priority:"high"}),this.editor.keystrokes.set("Esc",((t,e)=>{this._isUIVisible&&(this._hideUI(),e())})),cm({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 t=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=t.value||"",this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions()}_closeFormView(){const t=this.editor.commands.get("link");t.restoreManualDecoratorStates(),void 0!==t.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(t=!1){this.formView||this._createViews(),this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),t&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),t&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const t=this.editor;this.stopListening(t.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),t.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const t=this.editor,e=t.editing.view.document;let n=this._getSelectedLinkElement(),r=o();const i=()=>{const t=this._getSelectedLinkElement(),e=o();n&&!t||!n&&e!==r?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),n=t,r=e};function o(){return e.selection.focus.getAncestors().reverse().find((t=>t.is("element")))}this.listenTo(t.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 t=this._balloon.visibleView;return!!this.formView&&t==this.formView||this._areActionsVisible}_getBalloonPositionData(){const t=this.editor.editing.view,e=this.editor.model,n=t.document;let r;if(e.markers.has(rx)){const e=Array.from(this.editor.editing.mapper.markerNameToElements(rx)),n=t.createRange(t.createPositionBefore(e[0]),t.createPositionAfter(e[e.length-1]));r=t.domConverter.viewRangeToDom(n)}else r=()=>{const e=this._getSelectedLinkElement();return e?t.domConverter.mapViewToDom(e):t.domConverter.viewRangeToDom(n.selection.getFirstRange())};return{target:r}}_getSelectedLinkElement(){const t=this.editor.editing.view,e=t.document.selection,n=e.getSelectedElement();if(e.isCollapsed||n&&p_(n))return ox(e.getFirstPosition());{const n=e.getFirstRange().getTrimmed(),r=ox(n.start),i=ox(n.end);return r&&r==i&&t.createRangeIn(r).getTrimmed().isEqual(n)?r:null}}_showFakeVisualSelection(){const t=this.editor.model;t.change((e=>{const n=t.document.selection.getFirstRange();if(t.markers.has(rx))e.updateMarker(rx,{range:n});else if(n.start.isAtEnd){const r=n.start.getLastMatchingPosition((({item:e})=>!t.schema.isContent(e)),{boundaries:n});e.addMarker(rx,{usingOperation:!1,affectsData:!1,range:e.createRange(r,n.end)})}else e.addMarker(rx,{usingOperation:!1,affectsData:!1,range:n})}))}_hideFakeVisualSelection(){const t=this.editor.model;t.markers.has(rx)&&t.change((t=>{t.removeMarker(rx)}))}}function ox(t){return t.getAncestors().find((t=>{return(e=t).is("attributeElement")&&!!e.getCustomProperty("link");var e}))||null}const sx=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 ax extends Lo{static get requires(){return[sw,Yy]}static get pluginName(){return"AutoLink"}init(){const t=this.editor.model.document.selection;t.on("change:range",(()=>{this.isEnabled=!t.anchor.parent.is("element","codeBlock")})),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling(),this._enablePasteLinking()}_expandLinkRange(t,e){return e.textNode&&e.textNode.hasAttribute("linkHref")?yw(e,"linkHref",e.textNode.getAttribute("linkHref"),t):null}_selectEntireLinks(t,e){const n=this.editor.model,r=n.document.selection,i=r.getFirstPosition(),o=r.getLastPosition();let s=e.getJoined(this._expandLinkRange(n,i)||e);s&&(s=s.getJoined(this._expandLinkRange(n,o)||e)),s&&(s.start.isBefore(i)||s.end.isAfter(o))&&t.setSelection(s)}_enablePasteLinking(){const t=this.editor,e=t.model,n=e.document.selection,r=t.plugins.get("ClipboardPipeline"),i=t.commands.get("link");r.on("inputTransformation",((t,r)=>{if(!this.isEnabled||!i.isEnabled||n.isCollapsed||"paste"!==r.method)return;if(n.rangeCount>1)return;const o=n.getFirstRange(),s=r.dataTransfer.getData("text/plain");if(!s)return;const a=s.match(sx);a&&a[2]===s&&(e.change((t=>{this._selectEntireLinks(t,o),i.execute(s)})),t.stop())}),{priority:"high"})}_enableTypingHandling(){const t=this.editor,e=new cw(t.model,(t=>{if(!function(t){return t.length>4&&" "===t[t.length-1]&&" "!==t[t.length-2]}(t))return;const e=lx(t.substr(0,t.length-1));return e?{url:e}:void 0}));e.on("matched:data",((e,n)=>{const{batch:r,range:i,url:o}=n;if(!r.isTyping)return;const s=i.end.getShiftedBy(-1),a=s.getShiftedBy(-o.length),l=t.model.createRange(a,s);this._applyAutoLink(o,l)})),e.bind("isEnabled").to(this)}_enableEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("enter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition();if(!t.parent.previousSibling)return;const n=e.createRangeIn(t.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(n)}))}_enableShiftEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("shiftEnter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition(),n=e.createRange(e.createPositionAt(t.parent,0),t.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(n)}))}_checkAndApplyAutoLinkOnRange(t){const e=this.editor.model,{text:n,range:r}=lw(t,e),i=lx(n);if(i){const t=e.createRange(r.end.getShiftedBy(-i.length),r.end);this._applyAutoLink(i,t)}}_applyAutoLink(t,e){const n=this.editor.model,r=Ny(t,this.editor.config.get("link.defaultProtocol"));this.isEnabled&&function(t,e){return e.schema.checkAttributeInSelection(e.createSelection(t),"linkHref")}(e,n)&&Oy(r)&&!function(t){const e=t.start.nodeAfter;return!!e&&e.hasAttribute("linkHref")}(e)&&this._persistAutoLink(r,e)}_persistAutoLink(t,e){const n=this.editor.model,r=this.editor.plugins.get("Delete");n.enqueueChange((i=>{i.setAttribute("linkHref",t,e),n.enqueueChange((()=>{r.requestUndoOnBackspace()}))}))}}function lx(t){const e=sx.exec(t);return e?e[2]:null}var cx=n(4808),dx={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(cx.A,dx);cx.A.locals;class hx{_startElement;_referenceIndent;_isForward;_includeSelf;_sameAttributes;_sameIndent;_lowerIndent;_higherIndent;constructor(t,e){this._startElement=t,this._referenceIndent=t.getAttribute("listIndent"),this._isForward="forward"==e.direction,this._includeSelf=!!e.includeSelf,this._sameAttributes=eo(e.sameAttributes||[]),this._sameIndent=!!e.sameIndent,this._lowerIndent=!!e.lowerIndent,this._higherIndent=!!e.higherIndent}static first(t,e){return Eo(new this(t,e)[Symbol.iterator]())}*[Symbol.iterator](){const t=[];for(const{node:e}of ux(this._getStartNode(),this._isForward?"forward":"backward")){const n=e.getAttribute("listIndent");if(nthis._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){t.push(e);continue}}else{if(!this._sameIndent){if(this._higherIndent){t.length&&(yield*t,t.length=0);break}continue}if(this._sameAttributes.some((t=>e.getAttribute(t)!==this._startElement.getAttribute(t))))break}t.length&&(yield*t,t.length=0),yield e}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}function*ux(t,e="forward"){const n="forward"==e,r=[];let i=null;for(;px(t);){let e=null;if(i){const n=t.getAttribute("listIndent"),o=i.getAttribute("listIndent");n>o?r[o]=i:nt.getAttribute("listItemId")!=e))}function Dx(t){return Array.from(t).filter((t=>"$graveyard"!==t.root.rootName)).sort(((t,e)=>t.index-e.index))}function Sx(t){const e=t.document.selection.getSelectedElement();return e&&t.schema.isObject(e)&&t.schema.isBlock(e)?e:null}function Tx(t,e){return e.checkChild(t.parent,"listItem")&&e.checkChild(t,"$text")&&!e.isObject(t)}function Ix(t){return"numbered"==t||"customNumbered"==t}function Px(t,e,n){return bx(e,{direction:"forward"}).pop().index>t.index?yx(t,e,n):[]}class Vx extends Mo{_direction;constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=Fx(t.document.selection);t.change((t=>{const n=[];Bx(e)&&!wx(e[0])?("forward"==this._direction&&n.push(...xx(e,t)),n.push(...vx(e[0],t))):"forward"==this._direction?n.push(...xx(e,t,{expand:!0})):n.push(...function(t,e){const n=_x(t=eo(t)),r=new Set,i=Math.min(...n.map((t=>t.getAttribute("listIndent")))),o=new Map;for(const t of n)o.set(t,hx.first(t,{lowerIndent:!0}));for(const t of n){if(r.has(t))continue;r.add(t);const n=t.getAttribute("listIndent")-1;if(n<0)Ex(t,e);else{if(t.getAttribute("listIndent")==i){const n=Px(t,o.get(t),e);for(const t of n)r.add(t);if(n.length)continue}e.setAttribute("listIndent",n,t)}}return Dx(r)}(e,t));for(const e of n){if(!e.hasAttribute("listType"))continue;const n=hx.first(e,{sameIndent:!0});n&&t.setAttribute("listType",n.getAttribute("listType"),e)}this._fireAfterExecute(n)}))}_fireAfterExecute(t){this.fire("afterExecute",Dx(new Set(t)))}_checkEnabled(){let t=Fx(this.editor.model.document.selection),e=t[0];if(!e)return!1;if("backward"==this._direction)return!0;if(Bx(t)&&!wx(t[0]))return!0;t=_x(t),e=t[0];const n=hx.first(e,{sameIndent:!0});return!!n&&n.getAttribute("listType")==e.getAttribute("listType")}}function Fx(t){const e=Array.from(t.getSelectedBlocks()),n=e.findIndex((t=>!px(t)));return-1!=n&&(e.length=n),e}class Rx extends Mo{type;_listWalkerOptions;constructor(t,e,n={}){super(t),this.type=e,this._listWalkerOptions=n.multiLevel?{higherIndent:!0,lowerIndent:!0,sameAttributes:[]}:void 0}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.document,r=Sx(e),i=Array.from(n.selection.getSelectedBlocks()).filter((t=>e.schema.checkAttribute(t,"listType")||Tx(t,e.schema))),o=void 0!==t.forceValue?!t.forceValue:this.value;e.change((s=>{if(o){const t=i[i.length-1],e=bx(t,{direction:"forward"}),n=[];e.length>1&&n.push(...vx(e[1],s)),n.push(...Ex(i,s)),n.push(...function(t,e){const n=[];let r=Number.POSITIVE_INFINITY;for(const{node:i}of ux(t.nextSibling,"forward")){const t=i.getAttribute("listIndent");if(0==t)break;t{const{firstElement:o,lastElement:s}=this._getMergeSubjectElements(n,t),a=o.getAttribute("listIndent")||0,l=s.getAttribute("listIndent"),c=s.getAttribute("listItemId");if(a!=l){const t=(d=s,Array.from(new hx(d,{direction:"forward",higherIndent:!0})));r.push(...xx([s,...t],i,{indentBy:a-l,expand:a{const e=vx(this._getStartBlock(),t);this._fireAfterExecute(e)}))}_fireAfterExecute(t){this.fire("afterExecute",Dx(new Set(t)))}_checkEnabled(){const t=this.editor.model.document.selection,e=this._getStartBlock();return t.isCollapsed&&px(e)&&!wx(e)}_getStartBlock(){const t=this.editor.model.document.selection.getFirstPosition().parent;return"before"==this._direction?t:t.nextSibling}}class Mx extends Lo{static get pluginName(){return"ListUtils"}expandListBlocksToCompleteList(t){return Cx(t)}isFirstBlockOfListItem(t){return wx(t)}isListItemBlock(t){return px(t)}expandListBlocksToCompleteItems(t,e={}){return _x(t,e)}isNumberedListType(t){return Ix(t)}}function Nx(t){return t.is("element","ol")||t.is("element","ul")}function Ox(t){return t.is("element","li")}function Hx(t,e,n,r=Ux(n,e)){return t.createAttributeElement(qx(n),null,{priority:2*e/100-100,id:r})}function jx(t,e,n){return t.createAttributeElement("li",null,{priority:(2*e+1)/100-100,id:n})}function qx(t){return"numbered"==t||"customNumbered"==t?"ol":"ul"}function Ux(t,e){return`list-${t}-${e}`}function Wx(t,e){const n=t.nodeBefore;if(px(n)){let t=n;for(const{node:n}of ux(t,"backward"))if(t=n,e.has(t))return;e.set(n,t)}else{const n=t.nodeAfter;px(n)&&e.set(n,n)}}function $x(){return(t,e,n)=>{const{writer:r,schema:i}=n;if(!e.modelRange)return;const o=Array.from(e.modelRange.getItems({shallow:!0})).filter((t=>i.checkAttribute(t,"listItemId")));if(!o.length)return;const s=gx.next(),a=function(t){let e=0,n=t.parent;for(;n;){if(Ox(n))e++;else{const t=n.previousSibling;t&&Ox(t)&&e++}n=n.parent}return e}(e.viewItem);let l=e.viewItem.parent&&e.viewItem.parent.is("element","ol")?"numbered":"bulleted";const c=o[0].getAttribute("listType");c&&(l=c);const d={listItemId:s,listIndent:a,listType:l};for(const t of o)t.hasAttribute("listItemId")||r.setAttributes(d,t);o.length>1&&o[1].getAttribute("listItemId")!=d.listItemId&&n.keepEmptyElement(o[0])}}function Gx(t,e,n,{dataPipeline:r}={}){const i=function(t){return(e,n)=>{const r=[];for(const n of t)e.hasAttribute(n)&&r.push(`attribute:${n}`);return!!r.every((t=>!1!==n.test(e,t)))&&(r.forEach((t=>n.consume(e,t))),!0)}}(t);return(o,s,a)=>{const{writer:l,mapper:c,consumable:d}=a,h=s.item;if(!t.includes(s.attributeKey))return;if(!i(h,d))return;const u=function(t,e,n){const r=n.createRangeOn(t),i=e.toViewRange(r).getTrimmed();return i.end.nodeBefore}(h,c,n);Zx(u,l,c),function(t,e){let n=t.parent;for(;n.is("attributeElement")&&["ul","ol","li"].includes(n.name);){const r=n.parent;e.unwrap(e.createRangeOn(t),n),n=r}}(u,l);const m=function(t,e,n,r,{dataPipeline:i}){let o=r.createRangeOn(e);if(!wx(t))return o;for(const s of n){if("itemMarker"!=s.scope)continue;const n=s.createElement(r,t,{dataPipeline:i});if(!n)continue;if(r.setCustomProperty("listItemMarker",!0,n),s.canInjectMarkerIntoElement&&s.canInjectMarkerIntoElement(t)?r.insert(r.createPositionAt(e,0),n):(r.insert(o.start,n),o=r.createRange(r.createPositionBefore(n),r.createPositionAfter(e))),!s.createWrapperElement||!s.canWrapElement)continue;const a=s.createWrapperElement(r,t,{dataPipeline:i});r.setCustomProperty("listItemWrapper",!0,a),s.canWrapElement(t)?o=r.wrap(o,a):(o=r.wrap(r.createRangeOn(n),a),o=r.createRange(o.start,r.createPositionAfter(e)))}return o}(h,u,e,l,{dataPipeline:r});!function(t,e,n,r){if(!t.hasAttribute("listIndent"))return;const i=t.getAttribute("listIndent");let o=t;for(let t=i;t>=0;t--){const i=jx(r,t,o.getAttribute("listItemId")),s=Hx(r,t,o.getAttribute("listType"));for(const t of n)"list"!=t.scope&&"item"!=t.scope||!o.hasAttribute(t.attributeName)||t.setAttributeOnDowncast(r,o.getAttribute(t.attributeName),"list"==t.scope?s:i);if(e=r.wrap(e,i),e=r.wrap(e,s),0==t)break;if(o=hx.first(o,{lowerIndent:!0}),!o)break}}(h,m,e,l)}}function Kx(t,{dataPipeline:e}={}){return(n,{writer:r})=>{if(!Yx(n,t))return null;if(!e)return r.createContainerElement("span",{class:"ck-list-bogus-paragraph"});const i=r.createContainerElement("p");return r.setCustomProperty("dataPipeline:transparentRendering",!0,i),i}}function Zx(t,e,n){for(;t.parent.is("attributeElement")&&t.parent.getCustomProperty("listItemWrapper");)e.unwrap(e.createRangeOn(t),t.parent);const r=[];i(e.createPositionBefore(t).getWalker({direction:"backward"})),i(e.createRangeIn(t).getWalker());for(const t of r)e.remove(t);function i(t){for(const{item:e}of t){if(e.is("element")&&n.toModelElement(e))break;e.is("element")&&e.getCustomProperty("listItemMarker")&&r.push(e)}}}function Yx(t,e,n=fx(t)){if(!px(t))return!1;for(const n of t.getAttributeKeys())if(!n.startsWith("selection:")&&!e.includes(n))return!1;return n.length<2}var Jx=n(1232),Qx={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Jx.A,Qx);Jx.A.locals;var Xx=n(6903),tE={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(Xx.A,tE);Xx.A.locals;const eE=["listType","listIndent","listItemId"];class nE extends Lo{_downcastStrategies=[];static get pluginName(){return"ListEditing"}static get requires(){return[pA,sw,Mx,l_]}constructor(t){super(t),t.config.define("list.multiBlock",!0)}init(){const t=this.editor,e=t.model,n=t.config.get("list.multiBlock");if(t.plugins.has("LegacyListEditing"))throw new kr("list-feature-conflict",this,{conflictPlugin:"LegacyListEditing"});e.schema.register("$listItem",{allowAttributes:eE}),n?(e.schema.extend("$container",{allowAttributesOf:"$listItem"}),e.schema.extend("$block",{allowAttributesOf:"$listItem"}),e.schema.extend("$blockObject",{allowAttributesOf:"$listItem"})):e.schema.register("listItem",{inheritAllFrom:"$block",allowAttributesOf:"$listItem"});for(const t of eE)e.schema.setAttributeProperties(t,{copyOnReplace:!0});t.commands.add("numberedList",new Rx(t,"numbered")),t.commands.add("bulletedList",new Rx(t,"bulleted")),t.commands.add("customNumberedList",new Rx(t,"customNumbered",{multiLevel:!0})),t.commands.add("customBulletedList",new Rx(t,"customBulleted",{multiLevel:!0})),t.commands.add("indentList",new Vx(t,"forward")),t.commands.add("outdentList",new Vx(t,"backward")),t.commands.add("splitListItemBefore",new zx(t,"before")),t.commands.add("splitListItemAfter",new zx(t,"after")),n&&(t.commands.add("mergeListItemBackward",new Lx(t,"backward")),t.commands.add("mergeListItemForward",new Lx(t,"forward"))),this._setupDeleteIntegration(),this._setupEnterIntegration(),this._setupTabIntegration(),this._setupClipboardIntegration(),this._setupAccessibilityIntegration()}afterInit(){const t=this.editor.commands,e=t.get("indent"),n=t.get("outdent");e&&e.registerChildCommand(t.get("indentList"),{priority:"high"}),n&&n.registerChildCommand(t.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(t){this._downcastStrategies.push(t)}getListAttributeNames(){return[...eE,...this._downcastStrategies.map((t=>t.attributeName))]}_setupDeleteIntegration(){const t=this.editor,e=t.commands.get("mergeListItemBackward"),n=t.commands.get("mergeListItemForward");this.listenTo(t.editing.view.document,"delete",((r,i)=>{const o=t.model.document.selection;Sx(t.model)||t.model.change((()=>{const s=o.getFirstPosition();if(o.isCollapsed&&"backward"==i.direction){if(!s.isAtStart)return;const n=s.parent;if(!px(n))return;if(hx.first(n,{sameAttributes:"listType",sameIndent:!0})||0!==n.getAttribute("listIndent")){if(!e||!e.isEnabled)return;e.execute({shouldMergeOnBlocksContentLevel:rE(t.model,"backward")})}else Ax(n)||t.execute("splitListItemAfter"),t.execute("outdentList");i.preventDefault(),r.stop()}else{if(o.isCollapsed&&!o.getLastPosition().isAtEnd)return;if(!n||!n.isEnabled)return;n.execute({shouldMergeOnBlocksContentLevel:rE(t.model,"forward")}),i.preventDefault(),r.stop()}}))}),{context:"li"})}_setupEnterIntegration(){const t=this.editor,e=t.model,n=t.commands,r=n.get("enter");this.listenTo(t.editing.view.document,"enter",((n,r)=>{const i=e.document,o=i.selection.getFirstPosition().parent;if(i.selection.isCollapsed&&px(o)&&o.isEmpty&&!r.isSoft){const e=wx(o),i=Ax(o);e&&i?(t.execute("outdentList"),r.preventDefault(),n.stop()):e&&!i?(t.execute("splitListItemAfter"),r.preventDefault(),n.stop()):i&&(t.execute("splitListItemBefore"),r.preventDefault(),n.stop())}}),{context:"li"}),this.listenTo(r,"afterExecute",(()=>{const e=n.get("splitListItemBefore");if(e.refresh(),!e.isEnabled)return;2===fx(t.model.document.selection.getLastPosition().parent).length&&e.execute()}))}_setupTabIntegration(){const t=this.editor;this.listenTo(t.editing.view.document,"tab",((e,n)=>{const r=n.shiftKey?"outdentList":"indentList";this.editor.commands.get(r).isEnabled&&(t.execute(r),n.stopPropagation(),n.preventDefault(),e.stop())}),{context:"li"})}_setupConversion(){const t=this.editor,e=t.model,n=this.getListAttributeNames(),r=t.config.get("list.multiBlock"),i=r?"paragraph":"listItem";t.conversion.for("upcast").elementToElement({view:"li",model:(t,{writer:e})=>e.createElement(i,{listType:""})}).elementToElement({view:"p",model:(t,{writer:e})=>t.parent&&t.parent.is("element","li")?e.createElement(i,{listType:""}):null,converterPriority:"high"}).add((t=>{t.on("element:li",$x())})),r||t.conversion.for("downcast").elementToElement({model:"listItem",view:"p"}),t.conversion.for("editingDowncast").elementToElement({model:i,view:Kx(n),converterPriority:"high"}).add((t=>{var r;t.on("attribute",Gx(n,this._downcastStrategies,e)),t.on("remove",(r=e.schema,(t,e,n)=>{const{writer:i,mapper:o}=n,s=t.name.split(":")[1];if(!r.checkAttribute(s,"listItemId"))return;const a=o.toViewPosition(e.position),l=e.position.getShiftedBy(e.length),c=o.toViewPosition(l,{isPhantom:!0}),d=i.createRange(a,c).getTrimmed().end.nodeBefore;d&&Zx(d,i,o)}))})),t.conversion.for("dataDowncast").elementToElement({model:i,view:Kx(n,{dataPipeline:!0}),converterPriority:"high"}).add((t=>{t.on("attribute",Gx(n,this._downcastStrategies,e,{dataPipeline:!0}))}));const o=(s=this._downcastStrategies,a=t.editing.view,(t,e)=>{if(e.modelPosition.offset>0)return;const n=e.modelPosition.parent;if(!px(n))return;if(!s.some((t=>"itemMarker"==t.scope&&t.canInjectMarkerIntoElement&&t.canInjectMarkerIntoElement(n))))return;const r=e.mapper.toViewElement(n),i=a.createRangeIn(r),o=i.getWalker();let l=i.start;for(const{item:t}of o){if(t.is("element")&&e.mapper.toModelElement(t)||t.is("$textProxy"))break;t.is("element")&&t.getCustomProperty("listItemMarker")&&(l=a.createPositionAfter(t),o.skip((({previousPosition:t})=>!t.isEqual(l))))}e.viewPosition=l});var s,a;t.editing.mapper.on("modelToViewPosition",o),t.data.mapper.on("modelToViewPosition",o),this.listenTo(e.document,"change:data",function(t,e,n,r){return()=>{const r=t.document.differ.getChanges(),s=[],a=new Map,l=new Set;for(const t of r)if("insert"==t.type&&"$text"!=t.name)Wx(t.position,a),t.attributes.has("listItemId")?l.add(t.position.nodeAfter):Wx(t.position.getShiftedBy(t.length),a);else if("remove"==t.type&&t.attributes.has("listItemId"))Wx(t.position,a);else if("attribute"==t.type){const e=t.range.start.nodeAfter;n.includes(t.attributeKey)?(Wx(t.range.start,a),null===t.attributeNewValue?(Wx(t.range.start.getShiftedBy(1),a),o(e)&&s.push(e)):l.add(e)):px(e)&&o(e)&&s.push(e)}for(const t of a.values())s.push(...i(t,l));for(const t of new Set(s))e.reconvertItem(t)};function i(t,e){const r=[],i=new Set,a=[];for(const{node:l,previous:c}of ux(t,"forward")){if(i.has(l))continue;const t=l.getAttribute("listIndent");c&&tn.includes(t))));const d=bx(l,{direction:"forward"});for(const t of d)i.add(t),(o(t,d)||s(t,a,e))&&r.push(t)}return r}function o(t,i){const o=e.mapper.toViewElement(t);if(!o)return!1;if(r.fire("checkElement",{modelElement:t,viewElement:o}))return!0;if(!t.is("element","paragraph")&&!t.is("element","listItem"))return!1;const s=Yx(t,n,i);return!(!s||!o.is("element","p"))||!(s||!o.is("element","span"))}function s(t,n,i){if(i.has(t))return!1;const o=e.mapper.toViewElement(t);let s=n.length-1;for(let t=o.parent;!t.is("editableElement");t=t.parent){const e=Ox(t),i=Nx(t);if(!i&&!e)continue;const o="checkAttributes:"+(e?"item":"list");if(r.fire(o,{viewElement:t,modelAttributes:n[s]}))break;if(i&&(s--,s<0))return!1}return!0}}(e,t.editing,n,this),{priority:"high"}),this.on("checkAttributes:item",((t,{viewElement:e,modelAttributes:n})=>{e.id!=n.listItemId&&(t.return=!0,t.stop())})),this.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:n})=>{e.name==qx(n.listType)&&e.id==Ux(n.listType,n.listIndent)||(t.return=!0,t.stop())}))}_setupModelPostFixing(){const t=this.editor.model,e=this.getListAttributeNames();t.document.registerPostFixer((n=>function(t,e,n,r){const i=t.document.differ.getChanges(),o=new Map,s=r.editor.config.get("list.multiBlock");let a=!1;for(const r of i){if("insert"==r.type&&"$text"!=r.name){const i=r.position.nodeAfter;if(!t.schema.checkAttribute(i,"listItemId"))for(const t of Array.from(i.getAttributeKeys()))n.includes(t)&&(e.removeAttribute(t,i),a=!0);Wx(r.position,o),r.attributes.has("listItemId")||Wx(r.position.getShiftedBy(r.length),o);for(const{item:e,previousPosition:n}of t.createRangeIn(i))px(e)&&Wx(n,o)}else"remove"==r.type?Wx(r.position,o):"attribute"==r.type&&n.includes(r.attributeKey)&&(Wx(r.range.start,o),null===r.attributeNewValue&&Wx(r.range.start.getShiftedBy(1),o));if(!s&&"attribute"==r.type&&eE.includes(r.attributeKey)){const t=r.range.start.nodeAfter;null===r.attributeNewValue&&t&&t.is("element","listItem")?(e.rename(t,"paragraph"),a=!0):null===r.attributeOldValue&&t&&t.is("element")&&"listItem"!=t.name&&(e.rename(t,"listItem"),a=!0)}}const l=new Set;for(const t of o.values())a=r.fire("postFixer",{listNodes:new mx(t),listHead:t,writer:e,seenIds:l})||a;return a}(t,n,e,this))),this.on("postFixer",((t,{listNodes:e,writer:n})=>{t.return=function(t,e){let n=0,r=-1,i=null,o=!1;for(const{node:s}of t){const t=s.getAttribute("listIndent");if(t>n){let a;null===i?(i=t-n,a=n):(i>t&&(i=t),a=t-i),a>r+1&&(a=r+1),e.setAttribute("listIndent",a,s),o=!0,r=a}else i=null,n=t+1,r=t}return o}(e,n)||t.return}),{priority:"high"}),this.on("postFixer",((t,{listNodes:e,writer:n,seenIds:r})=>{t.return=function(t,e,n){const r=new Set;let i=!1;for(const{node:o}of t){if(r.has(o))continue;let t=o.getAttribute("listType"),s=o.getAttribute("listItemId");if(e.has(s)&&(s=gx.next()),e.add(s),o.is("element","listItem"))o.getAttribute("listItemId")!=s&&(n.setAttribute("listItemId",s,o),i=!0);else for(const e of bx(o,{direction:"forward"}))r.add(e),e.getAttribute("listType")!=t&&(s=gx.next(),t=e.getAttribute("listType")),e.getAttribute("listItemId")!=s&&(n.setAttribute("listItemId",s,e),i=!0)}return i}(e,r,n)||t.return}),{priority:"high"})}_setupClipboardIntegration(){const t=this.editor.model,e=this.editor.plugins.get("ClipboardPipeline");this.listenTo(t,"insertContent",function(t){return(e,[n,r])=>{const i=n.is("documentFragment")?Array.from(n.getChildren()):[n];if(!i.length)return;const o=(r?t.createSelection(r):t.document.selection).getFirstPosition();let s;if(px(o.parent))s=o.parent;else{if(!px(o.nodeBefore))return;s=o.nodeBefore}t.change((t=>{const e=s.getAttribute("listType"),n=s.getAttribute("listIndent"),r=i[0].getAttribute("listIndent")||0,o=Math.max(n-r,0);for(const n of i){const r=px(n);s.is("element","listItem")&&n.is("element","paragraph")&&t.rename(n,"listItem"),t.setAttributes({listIndent:(r?n.getAttribute("listIndent"):0)+o,listItemId:r?n.getAttribute("listItemId"):gx.next(),listType:e},n)}}))}}(t),{priority:"high"}),this.listenTo(e,"outputTransformation",((e,n)=>{t.change((t=>{const e=Array.from(n.content.getChildren()),r=e[e.length-1];if(e.length>1&&r.is("element")&&r.isEmpty){e.slice(0,-1).every(px)&&t.remove(r)}if("copy"==n.method||"cut"==n.method){const e=Array.from(n.content.getChildren());Bx(e)&&Ex(e,t)}}))}))}_setupAccessibilityIntegration(){const t=this.editor,e=t.t;t.accessibility.addKeystrokeInfoGroup({id:"list",label:e("Keystrokes that can be used in a list"),keystrokes:[{label:e("Increase list item indent"),keystroke:"Tab"},{label:e("Decrease list item indent"),keystroke:"Shift+Tab"}]})}}function rE(t,e){const n=t.document.selection;if(!n.isCollapsed)return!Sx(t);if("forward"===e)return!0;const r=n.getFirstPosition().parent,i=r.previousSibling;return!t.schema.isObject(i)&&(!!i.isEmpty||Bx([r,i]))}function iE(t,e,n,r){t.ui.componentFactory.add(e,(()=>{const i=oE(wm,t,e,n,r);return i.set({tooltip:!0,isToggleable:!0}),i})),t.ui.componentFactory.add(`menuBar:${e}`,(()=>{const i=oE(Ym,t,e,n,r);return i.set({role:"menuitemcheckbox",isToggleable:!0}),i}))}function oE(t,e,n,r,i){const o=e.commands.get(n),s=new t(e.locale);return s.set({label:r,icon:i}),s.bind("isOn","isEnabled").to(o,"value","isEnabled"),s.on("execute",(()=>{e.execute(n),e.editing.view.focus()})),s}class sE extends Lo{static get pluginName(){return"ListUI"}init(){const t=this.editor.t;this.editor.ui.componentFactory.has("numberedList")||iE(this.editor,"numberedList",t("Numbered List"),zu.numberedList),this.editor.ui.componentFactory.has("bulletedList")||iE(this.editor,"bulletedList",t("Bulleted List"),zu.bulletedList)}}class aE extends Lo{static get requires(){return[nE,sE]}static get pluginName(){return"List"}}class lE extends Mo{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute({startIndex:t=1}={}){const e=this.editor.model,n=e.document;let r=Array.from(n.selection.getSelectedBlocks()).filter((t=>px(t)&&Ix(t.getAttribute("listType"))));r=Cx(r),e.change((e=>{for(const n of r)e.setAttribute("listStart",t>=0?t:1,n)}))}_getValue(){const t=Eo(this.editor.model.document.selection.getSelectedBlocks());return t&&px(t)&&Ix(t.getAttribute("listType"))?t.getAttribute("listStart"):null}}const cE={},dE={},hE={},uE=[{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:t,typeAttribute:e,listType:n}of uE)cE[t]=n,dE[t]=e,e&&(hE[e]=t);function mE(){return uE.map((t=>t.listStyle))}function gE(t){return cE[t]||null}function pE(t){return hE[t]||null}function fE(t){return dE[t]||null}class bE extends Mo{defaultType;_supportedTypes;constructor(t,e,n){super(t),this.defaultType=e,this._supportedTypes=n}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.document;e.change((e=>{this._tryToConvertItemsToList(t);let r=Array.from(n.selection.getSelectedBlocks()).filter((t=>t.hasAttribute("listType")));if(r.length){r=Cx(r);for(const n of r)e.setAttribute("listStyle",t.type||this.defaultType,n)}}))}isStyleTypeSupported(t){return!this._supportedTypes||this._supportedTypes.includes(t)}_getValue(){const t=Eo(this.editor.model.document.selection.getSelectedBlocks());return px(t)?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),n=t.commands.get("bulletedList");return e.isEnabled||n.isEnabled}_tryToConvertItemsToList(t){if(!t.type)return;const e=gE(t.type);if(!e)return;const n=this.editor,r=`${e}List`;n.commands.get(r).value||n.execute(r)}}class kE extends Mo{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,n=e.document;let r=Array.from(n.selection.getSelectedBlocks()).filter((t=>px(t)&&"numbered"==t.getAttribute("listType")));r=Cx(r),e.change((e=>{for(const n of r)e.setAttribute("listReversed",!!t.reversed,n)}))}_getValue(){const t=Eo(this.editor.model.document.selection.getSelectedBlocks());return px(t)&&"numbered"==t.getAttribute("listType")?t.getAttribute("listReversed"):null}}function wE(t){return(e,n,r)=>{const{writer:i,schema:o,consumable:s}=r;if(!1===s.test(n.viewItem,t.viewConsumables))return;n.modelRange||Object.assign(n,r.convertChildren(n.viewItem,n.modelCursor));let a=!1;for(const e of n.modelRange.getItems({shallow:!0}))o.checkAttribute(e,t.attributeName)&&t.appliesToListItem(e)&&(e.hasAttribute(t.attributeName)||(i.setAttribute(t.attributeName,t.getAttributeOnUpcast(n.viewItem),e),a=!0));a&&s.consume(n.viewItem,t.viewConsumables)}}class AE extends Lo{static get pluginName(){return"ListPropertiesUtils"}getAllSupportedStyleTypes(){return mE()}getListTypeFromListStyleType(t){return gE(t)}getListStyleTypeFromTypeAttribute(t){return pE(t)}getTypeAttributeFromListStyleType(t){return fE(t)}}function _E(t){const{startIndex:e,reversed:n,styles:r}=t;return{styles:CE(r),startIndex:e||!1,reversed:n||!1}}function CE(t){const e={listTypes:["bulleted","numbered"],useAttribute:!1};return!0===t||(t?Array.isArray(t)||"string"==typeof t?e.listTypes=eo(t):(e.listTypes=t.listTypes?eo(t.listTypes):e.listTypes,e.useAttribute=!!t.useAttribute):e.listTypes=[]),e}const vE="default";class yE extends Lo{static get requires(){return[nE,AE]}static get pluginName(){return"ListPropertiesEditing"}constructor(t){super(t),t.config.define("list.properties",{styles:!0,startIndex:!1,reversed:!1})}init(){const t=this.editor,e=t.model,n=t.plugins.get(nE),r=function(t){const e=[],n=_E(t);if(t.styles){const t=n.styles.useAttribute;e.push({attributeName:"listStyle",defaultValue:vE,viewConsumables:{styles:"list-style-type"},addCommand(e){let n=mE();t&&(n=n.filter((t=>!!fE(t)))),e.commands.add("listStyle",new bE(e,vE,n))},appliesToListItem:t=>"numbered"==t.getAttribute("listType")||"bulleted"==t.getAttribute("listType"),hasValidAttribute(t){if(!this.appliesToListItem(t))return!t.hasAttribute("listStyle");if(!t.hasAttribute("listStyle"))return!1;const e=t.getAttribute("listStyle");return e==vE||gE(e)==t.getAttribute("listType")},setAttributeOnDowncast(e,n,r){if(n&&n!==vE){if(!t)return void e.setStyle("list-style-type",n,r);{const t=fE(n);if(t)return void e.setAttribute("type",t,r)}}e.removeStyle("list-style-type",r),e.removeAttribute("type",r)},getAttributeOnUpcast(t){const e=t.getStyle("list-style-type");if(e)return e;const n=t.getAttribute("type");return n?pE(n):vE}})}t.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,viewConsumables:{attributes:"reversed"},addCommand(t){t.commands.add("listReversed",new kE(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listReversed")},setAttributeOnDowncast(t,e,n){e?t.setAttribute("reversed","reversed",n):t.removeAttribute("reversed",n)},getAttributeOnUpcast:t=>t.hasAttribute("reversed")});t.startIndex&&e.push({attributeName:"listStart",defaultValue:1,viewConsumables:{attributes:"start"},addCommand(t){t.commands.add("listStart",new lE(t))},appliesToListItem:t=>Ix(t.getAttribute("listType")),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listStart")},setAttributeOnDowncast(t,e,n){0==e||e>1?t.setAttribute("start",e,n):t.removeAttribute("start",n)},getAttributeOnUpcast(t){const e=t.getAttribute("start");return e>=0?e:1}});return e}(t.config.get("list.properties"));for(const i of r)i.addCommand(t),e.schema.extend("$listItem",{allowAttributes:i.attributeName}),n.registerDowncastStrategy({scope:"list",attributeName:i.attributeName,setAttributeOnDowncast(t,e,n){i.setAttributeOnDowncast(t,e,n)}});t.conversion.for("upcast").add((t=>{for(const e of r)t.on("element:ol",wE(e)),t.on("element:ul",wE(e))})),n.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:n})=>{for(const i of r)i.getAttributeOnUpcast(e)!=n[i.attributeName]&&(t.return=!0,t.stop())})),this.listenTo(t.commands.get("indentList"),"afterExecute",((t,n)=>{e.change((t=>{for(const e of n)for(const n of r)n.appliesToListItem(e)&&t.setAttribute(n.attributeName,n.defaultValue,e)}))})),n.on("postFixer",((t,{listNodes:e,writer:n})=>{for(const{node:i}of e)for(const e of r)e.hasValidAttribute(i)||(e.appliesToListItem(i)?n.setAttribute(e.attributeName,e.defaultValue,i):n.removeAttribute(e.attributeName,i),t.return=!0)})),n.on("postFixer",((t,{listNodes:e,writer:n})=>{for(const{node:i,previousNodeInList:o}of e)if(o&&o.getAttribute("listType")==i.getAttribute("listType"))for(const e of r){const{attributeName:r}=e;if(!e.appliesToListItem(i))continue;const s=o.getAttribute(r);i.getAttribute(r)!=s&&(n.setAttribute(r,s,i),t.return=!0)}}))}}var xE=n(9968),EE={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(xE.A,EE);xE.A.locals;class BE extends lm{children;stylesView=null;additionalPropertiesCollapsibleView=null;startIndexFieldView=null;reversedSwitchButtonView=null;focusTracker=new Bo;keystrokes=new Do;focusables=new Mu;focusCycler;constructor(t,{enabledProperties:e,styleButtonViews:n,styleGridAriaLabel:r}){super(t);const i=["ck","ck-list-properties"];this.children=this.createCollection(),this.focusCycler=new ym({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),n&&n.length?(this.stylesView=this._createStylesView(n,r),this.children.add(this.stylesView)):i.push("ck-list-properties_without-styles"),(e.startIndex||e.reversed)&&(this._addNumberedListPropertyViews(e),i.push("ck-list-properties_with-numbered-properties")),this.setTemplate({tag:"div",attributes:{class:i},children:this.children})}render(){if(super.render(),this.stylesView){this.focusables.add(this.stylesView),this.focusTracker.add(this.stylesView.element),(this.startIndexFieldView||this.reversedSwitchButtonView)&&(this.focusables.add(this.children.last.buttonView),this.focusTracker.add(this.children.last.buttonView.element));for(const t of this.stylesView.children)this.stylesView.focusTracker.add(t.element);um({keystrokeHandler:this.stylesView.keystrokes,focusTracker:this.stylesView.focusTracker,gridItems:this.stylesView.children,numberOfColumns:()=>Yn.window.getComputedStyle(this.stylesView.element).getPropertyValue("grid-template-columns").split(" ").length,uiLanguageDirection:this.locale&&this.locale.uiLanguageDirection})}if(this.startIndexFieldView){this.focusables.add(this.startIndexFieldView),this.focusTracker.add(this.startIndexFieldView.element);const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t)}this.reversedSwitchButtonView&&(this.focusables.add(this.reversedSwitchButtonView),this.focusTracker.add(this.reversedSwitchButtonView.element)),this.keystrokes.listenTo(this.element)}focus(){this.focusCycler.focusFirst()}focusLast(){this.focusCycler.focusLast()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createStylesView(t,e){const n=new lm(this.locale);return n.children=n.createCollection(),n.children.addMany(t),n.setTemplate({tag:"div",attributes:{"aria-label":e,class:["ck","ck-list-styles-list"]},children:n.children}),n.children.delegate("execute").to(this),n.focus=function(){this.children.first.focus()},n.focusTracker=new Bo,n.keystrokes=new Do,n.render(),n.keystrokes.listenTo(n.element),n}_addNumberedListPropertyViews(t){const e=this.locale.t,n=[];t.startIndex&&(this.startIndexFieldView=this._createStartIndexField(),n.push(this.startIndexFieldView)),t.reversed&&(this.reversedSwitchButtonView=this._createReversedSwitchButton(),n.push(this.reversedSwitchButtonView)),this.stylesView?(this.additionalPropertiesCollapsibleView=new mg(this.locale,n),this.additionalPropertiesCollapsibleView.set({label:e("List properties"),isCollapsed:!0}),this.additionalPropertiesCollapsibleView.buttonView.bind("isEnabled").toMany(n,"isEnabled",((...t)=>t.some((t=>t)))),this.additionalPropertiesCollapsibleView.buttonView.on("change:isEnabled",((t,e,n)=>{n||(this.additionalPropertiesCollapsibleView.isCollapsed=!0)})),this.children.add(this.additionalPropertiesCollapsibleView)):this.children.addMany(n)}_createStartIndexField(){const t=this.locale.t,e=new Sg(this.locale,Lp);return e.set({label:t("Start at"),class:"ck-numbered-list-properties__start-index"}),e.fieldView.set({min:0,step:1,value:1,inputMode:"numeric"}),e.fieldView.on("input",(()=>{const n=e.fieldView.element,r=n.valueAsNumber;Number.isNaN(r)?e.errorText=t("Invalid start index value."):n.checkValidity()?this.fire("listStart",{startIndex:r}):e.errorText=t("Start index must be greater than 0.")})),e}_createReversedSwitchButton(){const t=this.locale.t,e=new og(this.locale);return e.set({withText:!0,label:t("Reversed order"),class:"ck-numbered-list-properties__reversed-order"}),e.delegate("execute").to(this,"listReversed"),e}}var DE=n(7141),SE={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(DE.A,SE);DE.A.locals;class TE extends Lo{static get pluginName(){return"ListPropertiesUI"}init(){const t=this.editor,e=t.locale.t,n=t.config.get("list.properties"),r=_E(n),i=r.styles.listTypes;if(i.includes("bulleted")){const n=[{label:e("Toggle the disc list style"),tooltip:e("Disc"),type:"disc",icon:''},{label:e("Toggle the circle list style"),tooltip:e("Circle"),type:"circle",icon:''},{label:e("Toggle the square list style"),tooltip:e("Square"),type:"square",icon:''}],i=e("Bulleted List"),o=e("Bulleted list styles toolbar"),s="bulletedList";t.ui.componentFactory.add(s,IE({editor:t,normalizedConfig:r,parentCommandName:s,buttonLabel:i,buttonIcon:zu.bulletedList,styleGridAriaLabel:o,styleDefinitions:n})),t.ui.componentFactory.add(`menuBar:${s}`,VE({editor:t,normalizedConfig:r,parentCommandName:s,buttonLabel:i,styleGridAriaLabel:o,styleDefinitions:n}))}if(i.includes("numbered")||n.startIndex||n.reversed){const n=[{label:e("Toggle the decimal list style"),tooltip:e("Decimal"),type:"decimal",icon:''},{label:e("Toggle the decimal with leading zero list style"),tooltip:e("Decimal with leading zero"),type:"decimal-leading-zero",icon:''},{label:e("Toggle the lower–roman list style"),tooltip:e("Lower–roman"),type:"lower-roman",icon:''},{label:e("Toggle the upper–roman list style"),tooltip:e("Upper-roman"),type:"upper-roman",icon:''},{label:e("Toggle the lower–latin list style"),tooltip:e("Lower-latin"),type:"lower-latin",icon:''},{label:e("Toggle the upper–latin list style"),tooltip:e("Upper-latin"),type:"upper-latin",icon:''}],o=e("Numbered List"),s=e("Numbered list styles toolbar"),a="numberedList";t.ui.componentFactory.add(a,IE({editor:t,normalizedConfig:r,parentCommandName:a,buttonLabel:o,buttonIcon:zu.numberedList,styleGridAriaLabel:s,styleDefinitions:n})),i.includes("numbered")&&t.ui.componentFactory.add(`menuBar:${a}`,VE({editor:t,normalizedConfig:r,parentCommandName:a,buttonLabel:o,styleGridAriaLabel:s,styleDefinitions:n}))}}}function IE({editor:t,normalizedConfig:e,parentCommandName:n,buttonLabel:r,buttonIcon:i,styleGridAriaLabel:o,styleDefinitions:s}){const a=t.commands.get(n);return l=>{const c=Dp(l,vp),d=c.buttonView;return c.bind("isEnabled").to(a),c.class="ck-list-styles-dropdown",d.on("execute",(()=>{t.execute(n),t.editing.view.focus()})),d.set({label:r,icon:i,tooltip:!0,isToggleable:!0}),d.bind("isOn").to(a,"value",(t=>!!t)),c.once("change:isOpen",(()=>{const r=function({editor:t,normalizedConfig:e,dropdownView:n,parentCommandName:r,styleDefinitions:i,styleGridAriaLabel:o}){const s=t.locale,a={...e,..."numberedList"!=r?{startIndex:!1,reversed:!1}:null},l=r.replace("List","");let c=null;if(e.styles.listTypes.includes(l)){const e=t.commands.get("listStyle"),n=PE({editor:t,parentCommandName:r,listStyleCommand:e}),o=FE(e);c=i.filter(o).map(n)}const d=new BE(s,{styleGridAriaLabel:o,enabledProperties:a,styleButtonViews:c});e.styles.listTypes.includes(l)&&Vp(n,(()=>d.stylesView.children.find((t=>t.isOn))));if(a.startIndex){const e=t.commands.get("listStart");d.startIndexFieldView.bind("isEnabled").to(e),d.startIndexFieldView.fieldView.bind("value").to(e),d.on("listStart",((e,n)=>t.execute("listStart",n)))}if(a.reversed){const e=t.commands.get("listReversed");d.reversedSwitchButtonView.bind("isEnabled").to(e),d.reversedSwitchButtonView.bind("isOn").to(e,"value",(t=>!!t)),d.on("listReversed",(()=>{const n=e.value;t.execute("listReversed",{reversed:!n})}))}return d.delegate("execute").to(n),d}({editor:t,normalizedConfig:e,dropdownView:c,parentCommandName:n,styleGridAriaLabel:o,styleDefinitions:s});c.panelView.children.add(r)})),c.on("execute",(()=>{t.editing.view.focus()})),c}}function PE({editor:t,listStyleCommand:e,parentCommandName:n}){const r=t.locale,i=t.commands.get(n);return({label:o,type:s,icon:a,tooltip:l})=>{const c=new wm(r);return c.set({label:o,icon:a,tooltip:l}),e.on("change:value",(()=>{c.isOn=e.value===s})),c.on("execute",(()=>{i.value?e.value===s?t.execute(n):e.value!==s&&t.execute("listStyle",{type:s}):t.model.change((()=>{t.execute("listStyle",{type:s})}))})),c}}function VE({editor:t,normalizedConfig:e,parentCommandName:n,buttonLabel:r,styleGridAriaLabel:i,styleDefinitions:o}){return s=>{const a=new ik(s),l=t.commands.get(n),c=t.commands.get("listStyle"),d=FE(c),h=PE({editor:t,parentCommandName:n,listStyleCommand:c}),u=o.filter(d).map(h),m=new BE(s,{styleGridAriaLabel:i,enabledProperties:{...e,startIndex:!1,reversed:!1},styleButtonViews:u});return m.delegate("execute").to(a),a.buttonView.set({label:r,icon:zu[n]}),a.panelView.children.add(m),a.bind("isEnabled").to(l,"isEnabled"),a.on("execute",(()=>{t.editing.view.focus()})),a}}function FE(t){return"function"==typeof t.isStyleTypeSupported?e=>t.isStyleTypeSupported(e.type):()=>!0}class RE extends Lo{static get requires(){return[yE,TE]}static get pluginName(){return"ListProperties"}}class LE extends Mo{constructor(t){super(t),this.on("execute",(()=>{this.refresh()}),{priority:"highest"})}refresh(){const t=this._getSelectedItems();this.value=this._getValue(t),this.isEnabled=!!t.length}execute(t={}){this.editor.model.change((e=>{const n=this._getSelectedItems(),r=void 0===t.forceValue?!this._getValue(n):t.forceValue;for(const t of n)r?e.setAttribute("todoListChecked",!0,t):e.removeAttribute("todoListChecked",t)}))}_getValue(t){return t.every((t=>t.getAttribute("todoListChecked")))}_getSelectedItems(){const t=this.editor.model,e=t.schema,n=t.document.selection.getFirstRange(),r=n.start.parent,i=[];e.checkAttribute(r,"todoListChecked")&&i.push(...fx(r));for(const t of n.getItems({shallow:!0}))e.checkAttribute(t,"todoListChecked")&&!i.includes(t)&&i.push(...fx(t));return i}}class zE extends nl{domEventType=["change"];onDomEvent(t){if(t.target){const e=this.view.domConverter.mapDomToView(t.target);e&&e.is("element","input")&&"checkbox"==e.getAttribute("type")&&e.findAncestor({classes:"todo-list__label"})&&this.fire("todoCheckboxChange",t)}}}const ME=Zi("Ctrl+Enter");class NE extends Lo{static get pluginName(){return"TodoListEditing"}static get requires(){return[nE]}init(){const t=this.editor,e=t.model,n=t.editing,r=t.plugins.get(nE),i=t.config.get("list.multiBlock")?"paragraph":"listItem";t.commands.add("todoList",new Rx(t,"todo")),t.commands.add("checkTodoList",new LE(t)),n.view.addObserver(zE),e.schema.extend("$listItem",{allowAttributes:"todoListChecked"}),e.schema.addAttributeCheck((t=>{const e=t.last;if(!e.getAttribute("listItemId")||"todo"!=e.getAttribute("listType"))return!1}),"todoListChecked"),t.conversion.for("upcast").add((t=>{t.on("element:input",((t,e,n)=>{const r=e.modelCursor,i=r.parent,o=e.viewItem;if(!n.consumable.test(o,{name:!0}))return;if("checkbox"!=o.getAttribute("type")||!r.isAtStart||!i.hasAttribute("listType"))return;n.consumable.consume(o,{name:!0});const s=n.writer;s.setAttribute("listType","todo",i),e.viewItem.hasAttribute("checked")&&s.setAttribute("todoListChecked",!0,i),e.modelRange=s.createRange(r)})),t.on("element:li",((t,e,n)=>{const{writer:r,schema:i}=n;if(!e.modelRange)return;const o=Array.from(e.modelRange.getItems({shallow:!0})).filter((t=>"todo"===t.getAttribute("listType")&&i.checkAttribute(t,"listItemId"))).reduce(((t,e)=>{const n=e.getAttribute("listItemId");return t.has(n)||t.set(n,fx(e)),t}),new Map);for(const[,t]of o.entries())if(t.some((t=>t.getAttribute("todoListChecked"))))for(const e of t)r.setAttribute("todoListChecked",!0,e)}),{priority:"low"}),t.on("element:label",OE({name:"label",classes:"todo-list__label"})),t.on("element:label",OE({name:"label",classes:["todo-list__label","todo-list__label_without-description"]})),t.on("element:span",OE({name:"span",classes:"todo-list__label__description"})),t.on("element:ul",function(t){const e=new as(t);return(t,n,r)=>{const i=e.match(n.viewItem);if(!i)return;const o=i.match;o.name=!1,r.consumable.consume(n.viewItem,o)}}({name:"ul",classes:"todo-list"}))})),t.conversion.for("downcast").elementToElement({model:i,view:(t,{writer:e})=>{if(HE(t,r.getListAttributeNames()))return e.createContainerElement("span",{class:"todo-list__label__description"})},converterPriority:"highest"}),r.registerDowncastStrategy({scope:"list",attributeName:"listType",setAttributeOnDowncast(t,e,n){"todo"==e?t.addClass("todo-list",n):t.removeClass("todo-list",n)}}),r.registerDowncastStrategy({scope:"itemMarker",attributeName:"todoListChecked",createElement(t,e,{dataPipeline:n}){if("todo"!=e.getAttribute("listType"))return null;const r=t.createUIElement("input",{type:"checkbox",...e.getAttribute("todoListChecked")?{checked:"checked"}:null,...n?{disabled:"disabled"}:{tabindex:"-1"}});if(n)return r;const i=t.createContainerElement("span",{contenteditable:"false"},r);return i.getFillerOffset=()=>null,i},canWrapElement:t=>HE(t,r.getListAttributeNames()),createWrapperElement(t,e,{dataPipeline:n}){const i=["todo-list__label"];return HE(e,r.getListAttributeNames())||i.push("todo-list__label_without-description"),t.createAttributeElement(n?"label":"span",{class:i.join(" ")})}}),r.on("checkElement",((t,{modelElement:e,viewElement:n})=>{const i=HE(e,r.getListAttributeNames());n.hasClass("todo-list__label__description")!=i&&(t.return=!0,t.stop())})),r.on("checkElement",((e,{modelElement:n,viewElement:r})=>{const i="todo"==n.getAttribute("listType")&&wx(n);let o=!1;const s=t.editing.view.createPositionBefore(r).getWalker({direction:"backward"});for(const{item:e}of s){if(e.is("element")&&t.editing.mapper.toModelElement(e))break;e.is("element","input")&&"checkbox"==e.getAttribute("type")&&(o=!0)}o!=i&&(e.return=!0,e.stop())})),r.on("postFixer",((t,{listNodes:e,writer:n})=>{for(const{node:r,previousNodeInList:i}of e){if(!i)continue;if(i.getAttribute("listItemId")!=r.getAttribute("listItemId"))continue;const e=i.hasAttribute("todoListChecked"),o=r.hasAttribute("todoListChecked");o&&!e?(n.removeAttribute("todoListChecked",r),t.return=!0):!o&&e&&(n.setAttribute("todoListChecked",!0,r),t.return=!0)}})),e.document.registerPostFixer((t=>{const n=e.document.differ.getChanges();let r=!1;for(const e of n)if("attribute"==e.type&&"listType"==e.attributeKey){const n=e.range.start.nodeAfter;"todo"==e.attributeOldValue&&n.hasAttribute("todoListChecked")&&(t.removeAttribute("todoListChecked",n),r=!0)}else if("insert"==e.type&&"$text"!=e.name)for(const{item:n}of t.createRangeOn(e.position.nodeAfter))n.is("element")&&"todo"!=n.getAttribute("listType")&&n.hasAttribute("todoListChecked")&&(t.removeAttribute("todoListChecked",n),r=!0);return r})),this.listenTo(n.view.document,"keydown",((e,n)=>{Ki(n)===ME&&(t.execute("checkTodoList"),e.stop())}),{priority:"high"}),this.listenTo(n.view.document,"todoCheckboxChange",((t,e)=>{const r=e.target;if(!r||!r.is("element","input"))return;const i=n.view.createPositionAfter(r),o=n.mapper.toModelPosition(i).parent;o&&px(o)&&"todo"==o.getAttribute("listType")&&this._handleCheckmarkChange(o)})),this.listenTo(n.view.document,"arrowKey",function(t,e){return(n,r)=>{const i=Ji(r.keyCode,e.contentLanguageDirection),o=t.schema,s=t.document.selection;if(!s.isCollapsed)return;const a=s.getFirstPosition(),l=a.parent;if("right"==i&&a.isAtEnd){const e=o.getNearestSelectionRange(t.createPositionAfter(l),"forward");if(!e)return;const i=e.start.parent;i&&px(i)&&"todo"==i.getAttribute("listType")&&(t.change((t=>t.setSelection(e))),r.preventDefault(),r.stopPropagation(),n.stop())}else if("left"==i&&a.isAtStart&&px(l)&&"todo"==l.getAttribute("listType")){const e=o.getNearestSelectionRange(t.createPositionBefore(l),"backward");if(!e)return;t.change((t=>t.setSelection(e))),r.preventDefault(),r.stopPropagation(),n.stop()}}}(e,t.locale),{context:"$text"}),this.listenTo(n.mapper,"viewToModelPosition",((t,n)=>{const r=n.viewPosition.parent,i=r.is("attributeElement","li")&&0==n.viewPosition.offset,o=jE(r)&&n.viewPosition.offset<=1,s=r.is("element","span")&&"false"==r.getAttribute("contenteditable")&&jE(r.parent);if(!i&&!o&&!s)return;const a=n.modelPosition.nodeAfter;a&&"todo"==a.getAttribute("listType")&&(n.modelPosition=e.createPositionAt(a,0))}),{priority:"low"}),this._initAriaAnnouncements()}_handleCheckmarkChange(t){const e=this.editor,n=e.model,r=Array.from(n.document.selection.getRanges());n.change((n=>{n.setSelection(t,"end"),e.execute("checkTodoList"),n.setSelection(r)}))}_initAriaAnnouncements(){const{model:t,ui:e,t:n}=this.editor;let r=null;e&&t.document.selection.on("change:range",(()=>{const i=t.document.selection.focus.parent,o=qE(r),s=qE(i);o&&!s?e.ariaLiveAnnouncer.announce(n("Leaving a to-do list")):!o&&s&&e.ariaLiveAnnouncer.announce(n("Entering a to-do list")),r=i}))}}function OE(t){const e=new as(t);return(t,n,r)=>{const i=e.match(n.viewItem);i&&r.consumable.consume(n.viewItem,i.match)&&Object.assign(n,r.convertChildren(n.viewItem,n.modelCursor))}}function HE(t,e){return(t.is("element","paragraph")||t.is("element","listItem"))&&"todo"==t.getAttribute("listType")&&wx(t)&&function(t,e){for(const n of t.getAttributeKeys())if(!n.startsWith("selection:")&&!e.includes(n))return!1;return!0}(t,e)}function jE(t){return!!t&&t.is("attributeElement")&&t.hasClass("todo-list__label")}function qE(t){return!!t&&(!(!t.is("element","paragraph")&&!t.is("element","listItem"))&&"todo"==t.getAttribute("listType"))}class UE extends Lo{static get pluginName(){return"TodoListUI"}init(){const t=this.editor.t;iE(this.editor,"todoList",t("To-do List"),zu.todoList)}}var WE=n(8991),$E={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};$o()(WE.A,$E);WE.A.locals;class GE extends Lo{static get requires(){return[NE,UE]}static get pluginName(){return"TodoList"}}function KE(t){return void 0!==t&&t.endsWith("px")}function ZE(t){return t.toFixed(2).replace(/\.?0+$/,"")+"px"}function YE(t,e,n){if(!t.childCount)return;const r=new jh(t.document),i=function(t,e){const n=e.createRangeIn(t),r=[],i=new Set;for(const t of n.getItems()){if(!t.is("element")||!t.name.match(/^(p|h\d+|li|div)$/))continue;let e=iB(t);if(void 0===e||0!=parseFloat(e)||Array.from(t.getClassNames()).find((t=>t.startsWith("MsoList")))||(e=void 0),t.hasStyle("mso-list")||void 0!==e&&i.has(e)){const n=nB(t);r.push({element:t,id:n.id,order:n.order,indent:n.indent,marginLeft:e}),void 0!==e&&i.add(e)}else i.clear()}return r}(t,r);if(!i.length)return;const o={},s=[];for(const t of i)if(void 0!==t.indent){JE(t)||(s.length=0);const i=`${t.id}:${t.indent}`,a=Math.min(t.indent-1,s.length);if(as.length-1||s[a].listElement.name!=l.type){0==a&&"ol"==l.type&&void 0!==t.id&&o[i]&&(l.startIndex=o[i]);const e=eB(l,r,n);if(KE(t.marginLeft)&&(0==a||KE(s[a-1].marginLeft))){let n=t.marginLeft;a>0&&(n=ZE(parseFloat(n)-parseFloat(s[a-1].marginLeft))),r.setStyle("padding-left",n,e)}if(0==s.length){const n=t.element.parent,i=n.getChildIndex(t.element)+1;r.insertChild(i,e,n)}else{const t=s[a-1].listItemElements;r.appendChild(e,t[t.length-1])}s[a]={...t,listElement:e,listItemElements:[]},0==a&&void 0!==t.id&&(o[i]=l.startIndex||1)}}const l="li"==t.element.name?t.element:r.createElement("li");r.appendChild(l,s[a].listElement),s[a].listItemElements.push(l),0==a&&void 0!==t.id&&o[i]++,t.element!=l&&r.appendChild(t.element,l),rB(t.element,r),r.removeStyle("text-indent",t.element),r.removeStyle("margin-left",t.element)}else{const e=s.find((e=>e.marginLeft==t.marginLeft));if(e){const n=e.listItemElements;r.appendChild(t.element,n[n.length-1]),r.removeStyle("margin-left",t.element)}else s.length=0}}function JE(t){const e=t.element.previousSibling;return QE(e||t.element.parent)}function QE(t){return t.is("element","ol")||t.is("element","ul")}function XE(t,e){const n=new RegExp(`@list l${t.id}:level${t.indent}\\s*({[^}]*)`,"gi"),r=/mso-level-number-format:([^;]{0,100});/gi,i=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,o=new RegExp(`@list\\s+l${t.id}:level\\d\\s*{[^{]*mso-level-text:"%\\d\\\\.`,"gi"),s=new RegExp(`@list l${t.id}:level\\d\\s*{[^{]*mso-level-number-format:`,"gi"),a=o.exec(e),l=s.exec(e),c=a&&!l,d=n.exec(e);let h="decimal",u="ol",m=null;if(d&&d[1]){const e=r.exec(d[1]);if(e&&e[1]&&(h=e[1].trim(),u="bullet"!==h&&"image"!==h?"ol":"ul"),"bullet"===h){const e=function(t){if("li"==t.name&&"ul"==t.parent.name&&t.parent.hasAttribute("type"))return t.parent.getAttribute("type");const e=function(t){if(t.getChild(0).is("$text"))return null;for(const e of t.getChildren()){if(!e.is("element","span"))continue;const t=e.getChild(0);if(t)return t.is("$text")?t:t.getChild(0)}return null}(t);if(!e)return null;const n=e._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(t.element);e&&(h=e)}else{const t=i.exec(d[1]);t&&t[1]&&(m=parseInt(t[1]))}c&&(u="ol")}return{type:u,startIndex:m,style:tB(h),isLegalStyleList:c}}function tB(t){if(t.startsWith("arabic-leading-zero"))return"decimal-leading-zero";switch(t){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 t;default:return null}}function eB(t,e,n){const r=e.createElement(t.type);return t.style&&e.setStyle("list-style-type",t.style,r),t.startIndex&&t.startIndex>1&&e.setAttribute("start",t.startIndex,r),t.isLegalStyleList&&n&&e.addClass("legal-list",r),r}function nB(t){const e=t.getStyle("mso-list");if(void 0===e)return{};const n=e.match(/(^|\s{1,100})l(\d+)/i),r=e.match(/\s{0,100}lfo(\d+)/i),i=e.match(/\s{0,100}level(\d+)/i);return n&&r&&i?{id:n[2],order:r[1],indent:parseInt(i[1])}:{indent:1}}function rB(t,e){const n=new as({name:"span",styles:{"mso-list":"Ignore"}}),r=e.createRangeIn(t);for(const t of r)"elementStart"===t.type&&n.match(t.item)&&e.remove(t.item)}function iB(t){const e=t.getStyle("margin-left");return void 0===e||e.endsWith("px")?e:function(t){const e=parseFloat(t);return t.endsWith("pt")?ZE(96*e/72):t.endsWith("pc")?ZE(12*e*96/72):t.endsWith("in")?ZE(96*e):t.endsWith("cm")?ZE(96*e/2.54):t.endsWith("mm")?ZE(e/10*96/2.54):t}(e)}function oB(t,e){if(!t.childCount)return;const n=new jh(t.document),r=function(t,e){const n=e.createRangeIn(t),r=new as({name:/v:(.+)/}),i=[];for(const t of n){if("elementStart"!=t.type)continue;const e=t.item,n=e.previousSibling,o=n&&n.is("element")?n.name:null,s=["Chart"],a=r.match(e),l=e.getAttribute("o:gfxdata"),c="v:shapetype"===o,d=l&&s.some((t=>e.getAttribute("id").includes(t)));a&&l&&!c&&!d&&i.push(t.item.getAttribute("id"))}return i}(t,n);!function(t,e,n){const r=n.createRangeIn(e),i=new as({name:"img"}),o=[];for(const e of r)if(e.item.is("element")&&i.match(e.item)){const n=e.item,r=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];r.length&&r.every((e=>t.indexOf(e)>-1))?o.push(n):n.getAttribute("src")||o.push(n)}for(const t of o)n.remove(t)}(r,t,n),function(t,e,n){const r=n.createRangeIn(e),i=[];for(const e of r)if("elementStart"==e.type&&e.item.is("element","v:shape")){const n=e.item.getAttribute("id");if(t.includes(n))continue;o(e.item.parent.getChildren(),n)||i.push(e.item)}for(const t of i){const e={src:s(t)};t.hasAttribute("alt")&&(e.alt=t.getAttribute("alt"));const r=n.createElement("img",e);n.insertChild(t.index+1,r,t.parent)}function o(t,e){for(const n of t)if(n.is("element")){if("img"==n.name&&n.getAttribute("v:shapes")==e)return!0;if(o(n.getChildren(),e))return!0}return!1}function s(t){for(const e of t.getChildren())if(e.is("element")&&e.getAttribute("src"))return e.getAttribute("src")}}(r,t,n),function(t,e){const n=e.createRangeIn(t),r=new as({name:/v:(.+)/}),i=[];for(const t of n)"elementStart"==t.type&&r.match(t.item)&&i.push(t.item);for(const t of i)e.remove(t)}(t,n);const i=function(t,e){const n=e.createRangeIn(t),r=new as({name:"img"}),i=[];for(const t of n)t.item.is("element")&&r.match(t.item)&&t.item.getAttribute("src").startsWith("file://")&&i.push(t.item);return i}(t,n);i.length&&function(t,e,n){if(t.length===e.length)for(let r=0;rString.fromCharCode(parseInt(t,16)))).join(""))}const aB=//i,lB=/xmlns:o="urn:schemas-microsoft-com/i;class cB{document;hasMultiLevelListPlugin;constructor(t,e=!1){this.document=t,this.hasMultiLevelListPlugin=e}isActive(t){return aB.test(t)||lB.test(t)}execute(t){const{body:e,stylesString:n}=t._parsedData;YE(e,n,this.hasMultiLevelListPlugin),oB(e,t.dataTransfer.getData("text/rtf")),function(t){const e=[],n=new jh(t.document);for(const{item:r}of n.createRangeIn(t))if(r.is("element")){for(const t of r.getClassNames())/\bmso/gi.exec(t)&&n.removeClass(t,r);for(const t of r.getStyleNames())/\bmso/gi.exec(t)&&n.removeStyle(t,r);(r.is("element","w:sdt")||r.is("element","w:sdtpr")&&r.isEmpty||r.is("element","o:p")&&r.isEmpty)&&e.push(r)}for(const t of e){const e=t.parent,r=e.getChildIndex(t);n.insertChild(r,t.getChildren(),e),n.remove(t)}}(e),t.content=e}}function dB(t,e,n,{blockElements:r,inlineObjectElements:i}){let o=n.createPositionAt(t,"forward"==e?"after":"before");return o=o.getLastMatchingPosition((({item:t})=>t.is("element")&&!r.includes(t.name)&&!i.includes(t.name)),{direction:e}),"forward"==e?o.nodeAfter:o.nodeBefore}function hB(t,e){return!!t&&t.is("element")&&e.includes(t.name)}const uB=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class mB{document;constructor(t){this.document=t}isActive(t){return uB.test(t)}execute(t){const e=new jh(this.document),{body:n}=t._parsedData;!function(t,e){for(const n of t.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const r=t.getChildIndex(n);e.remove(n),e.insertChild(r,n.getChildren(),t)}}(n,e),function(t,e){for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","li")){const n=t.getChild(0);n&&n.is("element","p")&&e.unwrapElement(n)}}}(n,e),function(t,e){const n=new sa(e.document.stylesProcessor),r=new Za(n,{renderingMode:"data"}),i=r.blockElements,o=r.inlineObjectElements,s=[];for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","br")){const n=dB(t,"forward",e,{blockElements:i,inlineObjectElements:o}),r=dB(t,"backward",e,{blockElements:i,inlineObjectElements:o}),a=hB(n,i);(hB(r,i)||a)&&s.push(t)}}for(const t of s)t.hasClass("Apple-interchange-newline")?e.remove(t):e.replace(t,e.createElement("p"))}(n,e),t.content=n}}const gB=/(\s+)<\/span>/g,((t,e)=>1===e.length?" ":Array(e.length+1).join("  ").substr(0,e.length)))}function bB(t,e){const n=new DOMParser,r=function(t){return fB(fB(t)).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(t){const e="",n="",r=t.indexOf(e);if(r<0)return t;const i=t.indexOf(n,r+e.length);return t.substring(0,r+e.length)+(i>=0?t.substring(i):"")}(t=(t=t.replace(/

                abc

                \r\n\t\t\t//\r\n\t\t\tif ( isAttribute && this._wrapAttributeElement( wrapElement, child ) ) {\r\n\t\t\t\twrapPositions.push( new Position( parent, i ) );\r\n\t\t\t}\r\n\t\t\t//\r\n\t\t\t// Wrap the child if it is not an attribute element or if it is an attribute element that should be inside\r\n\t\t\t// `wrapElement` (due to priority).\r\n\t\t\t//\r\n\t\t\t//

                abc

                -->

                abc

                \r\n\t\t\t//

                abc

                -->

                abc

                \r\n\t\t\telse if ( isText || !isAttribute || shouldABeOutsideB( wrapElement, child ) ) {\r\n\t\t\t\t// Clone attribute.\r\n\t\t\t\tconst newAttribute = wrapElement._clone();\r\n\r\n\t\t\t\t// Wrap current node with new attribute.\r\n\t\t\t\tchild._remove();\r\n\t\t\t\tnewAttribute._appendChild( child );\r\n\r\n\t\t\t\tparent._insertChild( i, newAttribute );\r\n\t\t\t\tthis._addToClonedElementsGroup( newAttribute );\r\n\r\n\t\t\t\twrapPositions.push( new Position( parent, i ) );\r\n\t\t\t}\r\n\t\t\t//\r\n\t\t\t// If other nested attribute is found and it wasn't wrapped (see above), continue wrapping inside it.\r\n\t\t\t//\r\n\t\t\t//

                abc

                -->

                abc

                \r\n\t\t\t//\r\n\t\t\telse /* if ( isAttribute ) */ {\r\n\t\t\t\tthis._wrapChildren( child, 0, child.childCount, wrapElement );\r\n\t\t\t}\r\n\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\t// Merge at each wrap.\r\n\t\tlet offsetChange = 0;\r\n\r\n\t\tfor ( const position of wrapPositions ) {\r\n\t\t\tposition.offset -= offsetChange;\r\n\r\n\t\t\t// Do not merge with elements outside selected children.\r\n\t\t\tif ( position.offset == startOffset ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst newPosition = this.mergeAttributes( position );\r\n\r\n\t\t\t// If nodes were merged - other merge offsets will change.\r\n\t\t\tif ( !newPosition.isEqual( position ) ) {\r\n\t\t\t\toffsetChange++;\r\n\t\t\t\tendOffset--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Range._createFromParentsAndOffsets( parent, startOffset, parent, endOffset );\r\n\t}\r\n\r\n\t/**\r\n\t * Unwraps children from provided `unwrapElement`. Only children contained in `parent` element between\r\n\t * `startOffset` and `endOffset` will be unwrapped.\r\n\t */\r\n\tprivate _unwrapChildren( parent: Element, startOffset: number, endOffset: number, unwrapElement: AttributeElement ) {\r\n\t\tlet i = startOffset;\r\n\t\tconst unwrapPositions: Array = [];\r\n\r\n\t\t// Iterate over each element between provided offsets inside parent.\r\n\t\t// We don't use tree walker or range iterator because we will be removing and merging potentially multiple nodes,\r\n\t\t// so it could get messy. It is safer to it manually in this case.\r\n\t\twhile ( i < endOffset ) {\r\n\t\t\tconst child = parent.getChild( i )!;\r\n\r\n\t\t\t// Skip all text nodes. There should be no container element's here either.\r\n\t\t\tif ( !child.is( 'attributeElement' ) ) {\r\n\t\t\t\ti++;\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t//\r\n\t\t\t// (In all examples, assume that `unwrapElement` is `` element.)\r\n\t\t\t//\r\n\t\t\t// If the child is similar to the given attribute element, unwrap it - it will be completely removed.\r\n\t\t\t//\r\n\t\t\t//

                abcxyz

                -->

                abcxyz

                \r\n\t\t\t//\r\n\t\t\tif ( child.isSimilar( unwrapElement ) ) {\r\n\t\t\t\tconst unwrapped = child.getChildren();\r\n\t\t\t\tconst count = child.childCount;\r\n\r\n\t\t\t\t// Replace wrapper element with its children\r\n\t\t\t\tchild._remove();\r\n\t\t\t\tparent._insertChild( i, unwrapped );\r\n\r\n\t\t\t\tthis._removeFromClonedElementsGroup( child );\r\n\r\n\t\t\t\t// Save start and end position of moved items.\r\n\t\t\t\tunwrapPositions.push(\r\n\t\t\t\t\tnew Position( parent, i ),\r\n\t\t\t\t\tnew Position( parent, i + count )\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// Skip elements that were unwrapped. Assuming there won't be another element to unwrap in child elements.\r\n\t\t\t\ti += count;\r\n\t\t\t\tendOffset += count - 1;\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t//\r\n\t\t\t// If the child is not similar but is an attribute element, try partial unwrapping - remove the same attributes/styles/classes.\r\n\t\t\t// Partial unwrapping will happen only if the elements have the same name.\r\n\t\t\t//\r\n\t\t\t//

                abcxyz

                -->

                abcxyz

                \r\n\t\t\t//

                abcxyz

                -->

                abcxyz

                \r\n\t\t\t//\r\n\t\t\tif ( this._unwrapAttributeElement( unwrapElement, child ) ) {\r\n\t\t\t\tunwrapPositions.push(\r\n\t\t\t\t\tnew Position( parent, i ),\r\n\t\t\t\t\tnew Position( parent, i + 1 )\r\n\t\t\t\t);\r\n\r\n\t\t\t\ti++;\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t//\r\n\t\t\t// If other nested attribute is found, look through it's children for elements to unwrap.\r\n\t\t\t//\r\n\t\t\t//

                abc

                -->

                abc

                \r\n\t\t\t//\r\n\t\t\tthis._unwrapChildren( child, 0, child.childCount, unwrapElement );\r\n\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\t// Merge at each unwrap.\r\n\t\tlet offsetChange = 0;\r\n\r\n\t\tfor ( const position of unwrapPositions ) {\r\n\t\t\tposition.offset -= offsetChange;\r\n\r\n\t\t\t// Do not merge with elements outside selected children.\r\n\t\t\tif ( position.offset == startOffset || position.offset == endOffset ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst newPosition = this.mergeAttributes( position );\r\n\r\n\t\t\t// If nodes were merged - other merge offsets will change.\r\n\t\t\tif ( !newPosition.isEqual( position ) ) {\r\n\t\t\t\toffsetChange++;\r\n\t\t\t\tendOffset--;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn Range._createFromParentsAndOffsets( parent, startOffset, parent, endOffset );\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function for `view.writer.wrap`. Wraps range with provided attribute element.\r\n\t * This method will also merge newly added attribute element with its siblings whenever possible.\r\n\t *\r\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not\r\n\t * an instance of {@link module:engine/view/attributeelement~AttributeElement AttributeElement}.\r\n\t *\r\n\t * @returns New range after wrapping, spanning over wrapping attribute element.\r\n\t */\r\n\tprivate _wrapRange( range: Range, attribute: AttributeElement ): Range {\r\n\t\t// Break attributes at range start and end.\r\n\t\tconst { start: breakStart, end: breakEnd } = this._breakAttributesRange( range, true );\r\n\t\tconst parentContainer = breakStart.parent as Element;\r\n\r\n\t\t// Wrap all children with attribute.\r\n\t\tconst newRange = this._wrapChildren( parentContainer, breakStart.offset, breakEnd.offset, attribute );\r\n\r\n\t\t// Merge attributes at the both ends and return a new range.\r\n\t\tconst start = this.mergeAttributes( newRange.start );\r\n\r\n\t\t// If start position was merged - move end position back.\r\n\t\tif ( !start.isEqual( newRange.start ) ) {\r\n\t\t\tnewRange.end.offset--;\r\n\t\t}\r\n\t\tconst end = this.mergeAttributes( newRange.end );\r\n\r\n\t\treturn new Range( start, end );\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function for {@link #wrap}. Wraps position with provided attribute element.\r\n\t * This method will also merge newly added attribute element with its siblings whenever possible.\r\n\t *\r\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError} `view-writer-wrap-invalid-attribute` when passed attribute element is not\r\n\t * an instance of {@link module:engine/view/attributeelement~AttributeElement AttributeElement}.\r\n\t *\r\n\t * @returns New position after wrapping.\r\n\t */\r\n\tprivate _wrapPosition( position: Position, attribute: AttributeElement ): Position {\r\n\t\t// Return same position when trying to wrap with attribute similar to position parent.\r\n\t\tif ( attribute.isSimilar( position.parent as any ) ) {\r\n\t\t\treturn movePositionToTextNode( position.clone() );\r\n\t\t}\r\n\r\n\t\t// When position is inside text node - break it and place new position between two text nodes.\r\n\t\tif ( position.parent.is( '$text' ) ) {\r\n\t\t\tposition = breakTextNode( position );\r\n\t\t}\r\n\r\n\t\t// Create fake element that will represent position, and will not be merged with other attributes.\r\n\t\tconst fakeElement = this.createAttributeElement( '_wrapPosition-fake-element' );\r\n\t\t( fakeElement as any )._priority = Number.POSITIVE_INFINITY;\r\n\t\tfakeElement.isSimilar = () => false;\r\n\r\n\t\t// Insert fake element in position location.\r\n\t\t( position.parent as Element )._insertChild( position.offset, fakeElement );\r\n\r\n\t\t// Range around inserted fake attribute element.\r\n\t\tconst wrapRange = new Range( position, position.getShiftedBy( 1 ) );\r\n\r\n\t\t// Wrap fake element with attribute (it will also merge if possible).\r\n\t\tthis.wrap( wrapRange, attribute );\r\n\r\n\t\t// Remove fake element and place new position there.\r\n\t\tconst newPosition = new Position( fakeElement.parent!, fakeElement.index! );\r\n\t\tfakeElement._remove();\r\n\r\n\t\t// If position is placed between text nodes - merge them and return position inside.\r\n\t\tconst nodeBefore = newPosition.nodeBefore;\r\n\t\tconst nodeAfter = newPosition.nodeAfter;\r\n\r\n\t\tif ( nodeBefore instanceof Text && nodeAfter instanceof Text ) {\r\n\t\t\treturn mergeTextNodes( nodeBefore, nodeAfter );\r\n\t\t}\r\n\r\n\t\t// If position is next to text node - move position inside.\r\n\t\treturn movePositionToTextNode( newPosition );\r\n\t}\r\n\r\n\t/**\r\n\t * Wraps one {@link module:engine/view/attributeelement~AttributeElement AttributeElement} into another by\r\n\t * merging them if possible. When merging is possible - all attributes, styles and classes are moved from wrapper\r\n\t * element to element being wrapped.\r\n\t *\r\n\t * @param wrapper Wrapper AttributeElement.\r\n\t * @param toWrap AttributeElement to wrap using wrapper element.\r\n\t * @returns Returns `true` if elements are merged.\r\n\t */\r\n\tprivate _wrapAttributeElement( wrapper: AttributeElement, toWrap: AttributeElement ): boolean {\r\n\t\tif ( !canBeJoined( wrapper, toWrap ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Can't merge if name or priority differs.\r\n\t\tif ( wrapper.name !== toWrap.name || wrapper.priority !== toWrap.priority ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Check if attributes can be merged.\r\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\r\n\t\t\t// Classes and styles should be checked separately.\r\n\t\t\tif ( key === 'class' || key === 'style' ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// If some attributes are different we cannot wrap.\r\n\t\t\tif ( toWrap.hasAttribute( key ) && toWrap.getAttribute( key ) !== wrapper.getAttribute( key ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Check if styles can be merged.\r\n\t\tfor ( const key of wrapper.getStyleNames() ) {\r\n\t\t\tif ( toWrap.hasStyle( key ) && toWrap.getStyle( key ) !== wrapper.getStyle( key ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Move all attributes/classes/styles from wrapper to wrapped AttributeElement.\r\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\r\n\t\t\t// Classes and styles should be checked separately.\r\n\t\t\tif ( key === 'class' || key === 'style' ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// Move only these attributes that are not present - other are similar.\r\n\t\t\tif ( !toWrap.hasAttribute( key ) ) {\r\n\t\t\t\tthis.setAttribute( key, wrapper.getAttribute( key )!, toWrap );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor ( const key of wrapper.getStyleNames() ) {\r\n\t\t\tif ( !toWrap.hasStyle( key ) ) {\r\n\t\t\t\tthis.setStyle( key, wrapper.getStyle( key )!, toWrap );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor ( const key of wrapper.getClassNames() ) {\r\n\t\t\tif ( !toWrap.hasClass( key ) ) {\r\n\t\t\t\tthis.addClass( key, toWrap );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Unwraps {@link module:engine/view/attributeelement~AttributeElement AttributeElement} from another by removing\r\n\t * corresponding attributes, classes and styles. All attributes, classes and styles from wrapper should be present\r\n\t * inside element being unwrapped.\r\n\t *\r\n\t * @param wrapper Wrapper AttributeElement.\r\n\t * @param toUnwrap AttributeElement to unwrap using wrapper element.\r\n\t * @returns Returns `true` if elements are unwrapped.\r\n\t **/\r\n\tprivate _unwrapAttributeElement( wrapper: AttributeElement, toUnwrap: AttributeElement ): boolean {\r\n\t\tif ( !canBeJoined( wrapper, toUnwrap ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Can't unwrap if name or priority differs.\r\n\t\tif ( wrapper.name !== toUnwrap.name || wrapper.priority !== toUnwrap.priority ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Check if AttributeElement has all wrapper attributes.\r\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\r\n\t\t\t// Classes and styles should be checked separately.\r\n\t\t\tif ( key === 'class' || key === 'style' ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// If some attributes are missing or different we cannot unwrap.\r\n\t\t\tif ( !toUnwrap.hasAttribute( key ) || toUnwrap.getAttribute( key ) !== wrapper.getAttribute( key ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Check if AttributeElement has all wrapper classes.\r\n\t\tif ( !toUnwrap.hasClass( ...wrapper.getClassNames() ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Check if AttributeElement has all wrapper styles.\r\n\t\tfor ( const key of wrapper.getStyleNames() ) {\r\n\t\t\t// If some styles are missing or different we cannot unwrap.\r\n\t\t\tif ( !toUnwrap.hasStyle( key ) || toUnwrap.getStyle( key ) !== wrapper.getStyle( key ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove all wrapper's attributes from unwrapped element.\r\n\t\tfor ( const key of wrapper.getAttributeKeys() ) {\r\n\t\t\t// Classes and styles should be checked separately.\r\n\t\t\tif ( key === 'class' || key === 'style' ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tthis.removeAttribute( key, toUnwrap );\r\n\t\t}\r\n\r\n\t\t// Remove all wrapper's classes from unwrapped element.\r\n\t\tthis.removeClass( Array.from( wrapper.getClassNames() ), toUnwrap );\r\n\r\n\t\t// Remove all wrapper's styles from unwrapped element.\r\n\t\tthis.removeStyle( Array.from( wrapper.getStyleNames() ), toUnwrap );\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function used by other `DowncastWriter` methods. Breaks attribute elements at the boundaries of given range.\r\n\t *\r\n\t * @param range Range which `start` and `end` positions will be used to break attributes.\r\n\t * @param forceSplitText If set to `true`, will break text nodes even if they are directly in container element.\r\n\t * This behavior will result in incorrect view state, but is needed by other view writing methods which then fixes view state.\r\n\t * @returns New range with located at break positions.\r\n\t */\r\n\tprivate _breakAttributesRange( range: Range, forceSplitText: boolean = false ) {\r\n\t\tconst rangeStart = range.start;\r\n\t\tconst rangeEnd = range.end;\r\n\r\n\t\tvalidateRangeContainer( range, this.document );\r\n\r\n\t\t// Break at the collapsed position. Return new collapsed range.\r\n\t\tif ( range.isCollapsed ) {\r\n\t\t\tconst position = this._breakAttributes( range.start, forceSplitText );\r\n\r\n\t\t\treturn new Range( position, position );\r\n\t\t}\r\n\r\n\t\tconst breakEnd = this._breakAttributes( rangeEnd, forceSplitText );\r\n\t\tconst count = ( breakEnd.parent as Element ).childCount;\r\n\t\tconst breakStart = this._breakAttributes( rangeStart, forceSplitText );\r\n\r\n\t\t// Calculate new break end offset.\r\n\t\tbreakEnd.offset += ( breakEnd.parent as Element ).childCount - count;\r\n\r\n\t\treturn new Range( breakStart, breakEnd );\r\n\t}\r\n\r\n\t/**\r\n\t * Helper function used by other `DowncastWriter` methods. Breaks attribute elements at given position.\r\n\t *\r\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-empty-element` when break position\r\n\t * is placed inside {@link module:engine/view/emptyelement~EmptyElement EmptyElement}.\r\n\t *\r\n\t * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-cannot-break-ui-element` when break position\r\n\t * is placed inside {@link module:engine/view/uielement~UIElement UIElement}.\r\n\t *\r\n\t * @param position Position where to break attributes.\r\n\t * @param forceSplitText If set to `true`, will break text nodes even if they are directly in container element.\r\n\t * This behavior will result in incorrect view state, but is needed by other view writing methods which then fixes view state.\r\n\t * @returns New position after breaking the attributes.\r\n\t */\r\n\tprivate _breakAttributes( position: Position, forceSplitText: boolean = false ): Position {\r\n\t\tconst positionOffset = position.offset;\r\n\t\tconst positionParent = position.parent;\r\n\r\n\t\t// If position is placed inside EmptyElement - throw an exception as we cannot break inside.\r\n\t\tif ( position.parent.is( 'emptyElement' ) ) {\r\n\t\t\t/**\r\n\t\t\t * Cannot break an `EmptyElement` instance.\r\n\t\t\t *\r\n\t\t\t * This error is thrown if\r\n\t\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#breakAttributes `DowncastWriter#breakAttributes()`}\r\n\t\t\t * was executed in an incorrect position.\r\n\t\t\t *\r\n\t\t\t * @error view-writer-cannot-break-empty-element\r\n\t\t\t */\r\n\t\t\tthrow new CKEditorError( 'view-writer-cannot-break-empty-element', this.document );\r\n\t\t}\r\n\r\n\t\t// If position is placed inside UIElement - throw an exception as we cannot break inside.\r\n\t\tif ( position.parent.is( 'uiElement' ) ) {\r\n\t\t\t/**\r\n\t\t\t * Cannot break a `UIElement` instance.\r\n\t\t\t *\r\n\t\t\t * This error is thrown if\r\n\t\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#breakAttributes `DowncastWriter#breakAttributes()`}\r\n\t\t\t * was executed in an incorrect position.\r\n\t\t\t *\r\n\t\t\t * @error view-writer-cannot-break-ui-element\r\n\t\t\t */\r\n\t\t\tthrow new CKEditorError( 'view-writer-cannot-break-ui-element', this.document );\r\n\t\t}\r\n\r\n\t\t// If position is placed inside RawElement - throw an exception as we cannot break inside.\r\n\t\tif ( position.parent.is( 'rawElement' ) ) {\r\n\t\t\t/**\r\n\t\t\t * Cannot break a `RawElement` instance.\r\n\t\t\t *\r\n\t\t\t * This error is thrown if\r\n\t\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#breakAttributes `DowncastWriter#breakAttributes()`}\r\n\t\t\t * was executed in an incorrect position.\r\n\t\t\t *\r\n\t\t\t * @error view-writer-cannot-break-raw-element\r\n\t\t\t */\r\n\t\t\tthrow new CKEditorError( 'view-writer-cannot-break-raw-element', this.document );\r\n\t\t}\r\n\r\n\t\t// There are no attributes to break and text nodes breaking is not forced.\r\n\t\tif ( !forceSplitText && positionParent.is( '$text' ) && isContainerOrFragment( positionParent.parent! ) ) {\r\n\t\t\treturn position.clone();\r\n\t\t}\r\n\r\n\t\t// Position's parent is container, so no attributes to break.\r\n\t\tif ( isContainerOrFragment( positionParent ) ) {\r\n\t\t\treturn position.clone();\r\n\t\t}\r\n\r\n\t\t// Break text and start again in new position.\r\n\t\tif ( positionParent.is( '$text' ) ) {\r\n\t\t\treturn this._breakAttributes( breakTextNode( position ), forceSplitText );\r\n\t\t}\r\n\r\n\t\tconst length = ( positionParent as any ).childCount;\r\n\r\n\t\t//

                foobar{}

                \r\n\t\t//

                foobar[]

                \r\n\t\t//

                foobar[]

                \r\n\t\tif ( positionOffset == length ) {\r\n\t\t\tconst newPosition = new Position( positionParent.parent as any, ( positionParent as any ).index + 1 );\r\n\r\n\t\t\treturn this._breakAttributes( newPosition, forceSplitText );\r\n\t\t} else {\r\n\t\t\t//

                foo{}bar

                \r\n\t\t\t//

                foo[]bar

                \r\n\t\t\t//

                foo{}bar

                \r\n\t\t\tif ( positionOffset === 0 ) {\r\n\t\t\t\tconst newPosition = new Position( positionParent.parent as Element, ( positionParent as any ).index );\r\n\r\n\t\t\t\treturn this._breakAttributes( newPosition, forceSplitText );\r\n\t\t\t}\r\n\t\t\t//

                foob{}ar

                \r\n\t\t\t//

                foob[]ar

                \r\n\t\t\t//

                foob[]ar

                \r\n\t\t\t//

                foob[]ar

                \r\n\t\t\telse {\r\n\t\t\t\tconst offsetAfter = ( positionParent as any ).index + 1;\r\n\r\n\t\t\t\t// Break element.\r\n\t\t\t\tconst clonedNode = ( positionParent as any )._clone();\r\n\r\n\t\t\t\t// Insert cloned node to position's parent node.\r\n\t\t\t\t( positionParent.parent as any )._insertChild( offsetAfter, clonedNode );\r\n\t\t\t\tthis._addToClonedElementsGroup( clonedNode );\r\n\r\n\t\t\t\t// Get nodes to move.\r\n\t\t\t\tconst count = ( positionParent as any ).childCount - positionOffset;\r\n\t\t\t\tconst nodesToMove = ( positionParent as any )._removeChildren( positionOffset, count );\r\n\r\n\t\t\t\t// Move nodes to cloned node.\r\n\t\t\t\tclonedNode._appendChild( nodesToMove );\r\n\r\n\t\t\t\t// Create new position to work on.\r\n\t\t\t\tconst newPosition = new Position( ( positionParent as any ).parent, offsetAfter );\r\n\r\n\t\t\t\treturn this._breakAttributes( newPosition, forceSplitText );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Stores the information that an {@link module:engine/view/attributeelement~AttributeElement attribute element} was\r\n\t * added to the tree. Saves the reference to the group in the given element and updates the group, so other elements\r\n\t * from the group now keep a reference to the given attribute element.\r\n\t *\r\n\t * The clones group can be obtained using {@link module:engine/view/attributeelement~AttributeElement#getElementsWithSameId}.\r\n\t *\r\n\t * Does nothing if added element has no {@link module:engine/view/attributeelement~AttributeElement#id id}.\r\n\t *\r\n\t * @param element Attribute element to save.\r\n\t */\r\n\tprivate _addToClonedElementsGroup( element: Node ): void {\r\n\t\t// Add only if the element is in document tree.\r\n\t\tif ( !element.root.is( 'rootElement' ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Traverse the element's children recursively to find other attribute elements that also might got inserted.\r\n\t\t// The loop is at the beginning so we can make fast returns later in the code.\r\n\t\tif ( element.is( 'element' ) ) {\r\n\t\t\tfor ( const child of element.getChildren() ) {\r\n\t\t\t\tthis._addToClonedElementsGroup( child );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst id = ( element as any ).id;\r\n\r\n\t\tif ( !id ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet group = this._cloneGroups.get( id );\r\n\r\n\t\tif ( !group ) {\r\n\t\t\tgroup = new Set();\r\n\t\t\tthis._cloneGroups.set( id, group );\r\n\t\t}\r\n\r\n\t\tgroup.add( element as AttributeElement );\r\n\t\t( element as any )._clonesGroup = group;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes all the information about the given {@link module:engine/view/attributeelement~AttributeElement attribute element}\r\n\t * from its clones group.\r\n\t *\r\n\t * Keep in mind, that the element will still keep a reference to the group (but the group will not keep a reference to it).\r\n\t * This allows to reference the whole group even if the element was already removed from the tree.\r\n\t *\r\n\t * Does nothing if the element has no {@link module:engine/view/attributeelement~AttributeElement#id id}.\r\n\t *\r\n\t * @param element Attribute element to remove.\r\n\t */\r\n\tprivate _removeFromClonedElementsGroup( element: Node ) {\r\n\t\t// Traverse the element's children recursively to find other attribute elements that also got removed.\r\n\t\t// The loop is at the beginning so we can make fast returns later in the code.\r\n\t\tif ( element.is( 'element' ) ) {\r\n\t\t\tfor ( const child of element.getChildren() ) {\r\n\t\t\t\tthis._removeFromClonedElementsGroup( child );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst id = ( element as any ).id;\r\n\r\n\t\tif ( !id ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst group = this._cloneGroups.get( id );\r\n\r\n\t\tif ( !group ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tgroup.delete( element as AttributeElement );\r\n\t\t// Not removing group from element on purpose!\r\n\t\t// If other parts of code have reference to this element, they will be able to get references to other elements from the group.\r\n\t}\r\n}\r\n\r\n// Helper function for `view.writer.wrap`. Checks if given element has any children that are not ui elements.\r\nfunction _hasNonUiChildren( parent: Element ): boolean {\r\n\treturn Array.from( parent.getChildren() ).some( child => !child.is( 'uiElement' ) );\r\n}\r\n\r\n/**\r\n * The `attribute` passed to {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#wrap()`}\r\n * must be an instance of {@link module:engine/view/attributeelement~AttributeElement `AttributeElement`}.\r\n *\r\n * @error view-writer-wrap-invalid-attribute\r\n */\r\n\r\n/**\r\n * Returns first parent container of specified {@link module:engine/view/position~Position Position}.\r\n * Position's parent node is checked as first, then next parents are checked.\r\n * Note that {@link module:engine/view/documentfragment~DocumentFragment DocumentFragment} is treated like a container.\r\n *\r\n * @param position Position used as a start point to locate parent container.\r\n * @returns Parent container element or `undefined` if container is not found.\r\n */\r\nfunction getParentContainer( position: Position ): ContainerElement | DocumentFragment | undefined {\r\n\tlet parent = position.parent;\r\n\r\n\twhile ( !isContainerOrFragment( parent ) ) {\r\n\t\tif ( !parent ) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tparent = parent.parent as any;\r\n\t}\r\n\r\n\treturn ( parent as ContainerElement | DocumentFragment );\r\n}\r\n\r\n/**\r\n * Checks if first {@link module:engine/view/attributeelement~AttributeElement AttributeElement} provided to the function\r\n * can be wrapped outside second element. It is done by comparing elements'\r\n * {@link module:engine/view/attributeelement~AttributeElement#priority priorities}, if both have same priority\r\n * {@link module:engine/view/element~Element#getIdentity identities} are compared.\r\n */\r\nfunction shouldABeOutsideB( a: AttributeElement, b: AttributeElement ): boolean {\r\n\tif ( a.priority < b.priority ) {\r\n\t\treturn true;\r\n\t} else if ( a.priority > b.priority ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// When priorities are equal and names are different - use identities.\r\n\treturn a.getIdentity() < b.getIdentity();\r\n}\r\n\r\n/**\r\n * Returns new position that is moved to near text node. Returns same position if there is no text node before of after\r\n * specified position.\r\n *\r\n * ```html\r\n *

                foo[]

                ->

                foo{}

                \r\n *

                []foo

                ->

                {}foo

                \r\n * ```\r\n *\r\n * @returns Position located inside text node or same position if there is no text nodes\r\n * before or after position location.\r\n */\r\nfunction movePositionToTextNode( position: Position ): Position {\r\n\tconst nodeBefore = position.nodeBefore;\r\n\r\n\tif ( nodeBefore && nodeBefore.is( '$text' ) ) {\r\n\t\treturn new Position( nodeBefore, nodeBefore.data.length );\r\n\t}\r\n\r\n\tconst nodeAfter = position.nodeAfter;\r\n\r\n\tif ( nodeAfter && nodeAfter.is( '$text' ) ) {\r\n\t\treturn new Position( nodeAfter, 0 );\r\n\t}\r\n\r\n\treturn position;\r\n}\r\n\r\n/**\r\n * Breaks text node into two text nodes when possible.\r\n *\r\n * ```html\r\n *

                foo{}bar

                ->

                foo[]bar

                \r\n *

                {}foobar

                ->

                []foobar

                \r\n *

                foobar{}

                ->

                foobar[]

                \r\n * ```\r\n *\r\n * @param position Position that need to be placed inside text node.\r\n * @returns New position after breaking text node.\r\n */\r\nfunction breakTextNode( position: Position ): Position {\r\n\tif ( position.offset == ( position.parent as Text ).data.length ) {\r\n\t\treturn new Position( position.parent.parent as any, ( position.parent as Text ).index! + 1 );\r\n\t}\r\n\r\n\tif ( position.offset === 0 ) {\r\n\t\treturn new Position( position.parent.parent as any, ( position.parent as Text ).index! );\r\n\t}\r\n\r\n\t// Get part of the text that need to be moved.\r\n\tconst textToMove = ( position.parent as Text ).data.slice( position.offset );\r\n\r\n\t// Leave rest of the text in position's parent.\r\n\t( position.parent as Text )._data = ( position.parent as Text ).data.slice( 0, position.offset );\r\n\r\n\t// Insert new text node after position's parent text node.\r\n\t( position.parent.parent as any )._insertChild(\r\n\t\t( position.parent as Text ).index! + 1,\r\n\t\tnew Text( position.root.document, textToMove )\r\n\t);\r\n\r\n\t// Return new position between two newly created text nodes.\r\n\treturn new Position( position.parent.parent as any, ( position.parent as Text ).index! + 1 );\r\n}\r\n\r\n/**\r\n * Merges two text nodes into first node. Removes second node and returns merge position.\r\n *\r\n * @param t1 First text node to merge. Data from second text node will be moved at the end of this text node.\r\n * @param t2 Second text node to merge. This node will be removed after merging.\r\n * @returns Position after merging text nodes.\r\n */\r\nfunction mergeTextNodes( t1: Text, t2: Text ): Position {\r\n\t// Merge text data into first text node and remove second one.\r\n\tconst nodeBeforeLength = t1.data.length;\r\n\tt1._data += t2.data;\r\n\tt2._remove();\r\n\r\n\treturn new Position( t1, nodeBeforeLength );\r\n}\r\n\r\nconst validNodesToInsert = [ Text, AttributeElement, ContainerElement, EmptyElement, RawElement, UIElement ];\r\n\r\n/**\r\n * Checks if provided nodes are valid to insert.\r\n *\r\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-insert-invalid-node` when nodes to insert\r\n * contains instances that are not supported ones (see error description for valid ones.\r\n */\r\nfunction validateNodesToInsert( nodes: Iterable, errorContext: Document ): void {\r\n\tfor ( const node of nodes ) {\r\n\t\tif ( !validNodesToInsert.some( ( validNode => node instanceof validNode ) ) ) { // eslint-disable-line no-use-before-define\r\n\t\t\t/**\r\n\t\t\t * One of the nodes to be inserted is of an invalid type.\r\n\t\t\t *\r\n\t\t\t * Nodes to be inserted with {@link module:engine/view/downcastwriter~DowncastWriter#insert `DowncastWriter#insert()`} should be\r\n\t\t\t * of the following types:\r\n\t\t\t *\r\n\t\t\t * * {@link module:engine/view/attributeelement~AttributeElement AttributeElement},\r\n\t\t\t * * {@link module:engine/view/containerelement~ContainerElement ContainerElement},\r\n\t\t\t * * {@link module:engine/view/emptyelement~EmptyElement EmptyElement},\r\n\t\t\t * * {@link module:engine/view/uielement~UIElement UIElement},\r\n\t\t\t * * {@link module:engine/view/rawelement~RawElement RawElement},\r\n\t\t\t * * {@link module:engine/view/text~Text Text}.\r\n\t\t\t *\r\n\t\t\t * @error view-writer-insert-invalid-node-type\r\n\t\t\t */\r\n\t\t\tthrow new CKEditorError( 'view-writer-insert-invalid-node-type', errorContext );\r\n\t\t}\r\n\r\n\t\tif ( !node.is( '$text' ) ) {\r\n\t\t\tvalidateNodesToInsert( ( node as Element ).getChildren(), errorContext );\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks if node is ContainerElement or DocumentFragment, because in most cases they should be treated the same way.\r\n *\r\n * @returns Returns `true` if node is instance of ContainerElement or DocumentFragment.\r\n */\r\nfunction isContainerOrFragment( node: Node | DocumentFragment ): boolean {\r\n\treturn node && ( node.is( 'containerElement' ) || node.is( 'documentFragment' ) );\r\n}\r\n\r\n/**\r\n * Checks if {@link module:engine/view/range~Range#start range start} and {@link module:engine/view/range~Range#end range end} are placed\r\n * inside same {@link module:engine/view/containerelement~ContainerElement container element}.\r\n * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `view-writer-invalid-range-container` when validation fails.\r\n */\r\nfunction validateRangeContainer( range: Range, errorContext: Document ) {\r\n\tconst startContainer = getParentContainer( range.start );\r\n\tconst endContainer = getParentContainer( range.end );\r\n\r\n\tif ( !startContainer || !endContainer || startContainer !== endContainer ) {\r\n\t\t/**\r\n\t\t * The container of the given range is invalid.\r\n\t\t *\r\n\t\t * This may happen if {@link module:engine/view/range~Range#start range start} and\r\n\t\t * {@link module:engine/view/range~Range#end range end} positions are not placed inside the same container element or\r\n\t\t * a parent container for these positions cannot be found.\r\n\t\t *\r\n\t\t * Methods like {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#remove()`},\r\n\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#clean()`},\r\n\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#wrap()`},\r\n\t\t * {@link module:engine/view/downcastwriter~DowncastWriter#wrap `DowncastWriter#unwrap()`} need to be called\r\n\t\t * on a range that has its start and end positions located in the same container element. Both positions can be\r\n\t\t * nested within other elements (e.g. an attribute element) but the closest container ancestor must be the same.\r\n\t\t *\r\n\t\t * @error view-writer-invalid-range-container\r\n\t\t */\r\n\t\tthrow new CKEditorError( 'view-writer-invalid-range-container', errorContext );\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks if two attribute elements can be joined together. Elements can be joined together if, and only if\r\n * they do not have ids specified.\r\n */\r\nfunction canBeJoined( a: AttributeElement, b: AttributeElement ) {\r\n\treturn a.id === null && b.id === null;\r\n}\r\n","/**\r\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\nimport { keyCodes, isText, type KeystrokeInfo } from '@ckeditor/ckeditor5-utils';\r\nimport type View from './view.js';\r\nimport type DomEventData from './observer/domeventdata.js';\r\nimport type { ViewDocumentArrowKeyEvent } from './observer/arrowkeysobserver.js';\r\n\r\n/**\r\n * Set of utilities related to handling block and inline fillers.\r\n *\r\n * Browsers do not allow to put caret in elements which does not have height. Because of it, we need to fill all\r\n * empty elements which should be selectable with elements or characters called \"fillers\". Unfortunately there is no one\r\n * universal filler, this is why two types are uses:\r\n *\r\n * * Block filler is an element which fill block elements, like `

                `. CKEditor uses `
                ` as a block filler during the editing,\r\n * as browsers do natively. So instead of an empty `

                ` there will be `


                `. The advantage of block filler is that\r\n * it is transparent for the selection, so when the caret is before the `
                ` and user presses right arrow he will be\r\n * moved to the next paragraph, not after the `
                `. The disadvantage is that it breaks a block, so it can not be used\r\n * in the middle of a line of text. The {@link module:engine/view/filler~BR_FILLER `
                ` filler} can be replaced with any other\r\n * character in the data output, for instance {@link module:engine/view/filler~NBSP_FILLER non-breaking space} or\r\n * {@link module:engine/view/filler~MARKED_NBSP_FILLER marked non-breaking space}.\r\n *\r\n * * Inline filler is a filler which does not break a line of text, so it can be used inside the text, for instance in the empty\r\n * `` surrendered by text: `foobar`, if we want to put the caret there. CKEditor uses a sequence of the zero-width\r\n * spaces as an {@link module:engine/view/filler~INLINE_FILLER inline filler} having the predetermined\r\n * {@link module:engine/view/filler~INLINE_FILLER_LENGTH length}. A sequence is used, instead of a single character to\r\n * avoid treating random zero-width spaces as the inline filler. Disadvantage of the inline filler is that it is not\r\n * transparent for the selection. The arrow key moves the caret between zero-width spaces characters, so the additional\r\n * code is needed to handle the caret.\r\n *\r\n * Both inline and block fillers are handled by the {@link module:engine/view/renderer~Renderer renderer} and are not present in the\r\n * view.\r\n *\r\n * @module engine/view/filler\r\n */\r\n\r\n/**\r\n * Non-breaking space filler creator. This function creates the ` ` text node.\r\n * It defines how the filler is created.\r\n *\r\n * @see module:engine/view/filler~MARKED_NBSP_FILLER\r\n * @see module:engine/view/filler~BR_FILLER\r\n */\r\nexport const NBSP_FILLER = ( domDocument: Document ): Text => domDocument.createTextNode( '\\u00A0' );\r\n\r\n/**\r\n * Marked non-breaking space filler creator. This function creates the ` ` element.\r\n * It defines how the filler is created.\r\n *\r\n * @see module:engine/view/filler~NBSP_FILLER\r\n * @see module:engine/view/filler~BR_FILLER\r\n */\r\nexport const MARKED_NBSP_FILLER = ( domDocument: Document ): HTMLSpanElement => {\r\n\tconst span = domDocument.createElement( 'span' );\r\n\tspan.dataset.ckeFiller = 'true';\r\n\tspan.innerText = '\\u00A0';\r\n\r\n\treturn span;\r\n};\r\n\r\n/**\r\n * `
                ` filler creator. This function creates the `
                ` element.\r\n * It defines how the filler is created.\r\n *\r\n * @see module:engine/view/filler~NBSP_FILLER\r\n * @see module:engine/view/filler~MARKED_NBSP_FILLER\r\n */\r\nexport const BR_FILLER = ( domDocument: Document ): HTMLBRElement => {\r\n\tconst fillerBr = domDocument.createElement( 'br' );\r\n\tfillerBr.dataset.ckeFiller = 'true';\r\n\r\n\treturn fillerBr;\r\n};\r\n\r\n/**\r\n * Length of the {@link module:engine/view/filler~INLINE_FILLER INLINE_FILLER}.\r\n */\r\nexport const INLINE_FILLER_LENGTH = 7;\r\n\r\n/**\r\n * Inline filler which is a sequence of the word joiners.\r\n */\r\nexport const INLINE_FILLER = '\\u2060'.repeat( INLINE_FILLER_LENGTH );\r\n\r\n/**\r\n * Checks if the node is a text node which starts with the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\r\n *\r\n * ```ts\r\n * startsWithFiller( document.createTextNode( INLINE_FILLER ) ); // true\r\n * startsWithFiller( document.createTextNode( INLINE_FILLER + 'foo' ) ); // true\r\n * startsWithFiller( document.createTextNode( 'foo' ) ); // false\r\n * startsWithFiller( document.createElement( 'p' ) ); // false\r\n * ```\r\n *\r\n * @param domNode DOM node.\r\n * @returns True if the text node starts with the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\r\n */\r\nexport function startsWithFiller( domNode: Node | string ): boolean {\r\n\tif ( typeof domNode == 'string' ) {\r\n\t\treturn domNode.substr( 0, INLINE_FILLER_LENGTH ) === INLINE_FILLER;\r\n\t}\r\n\r\n\treturn isText( domNode ) && ( domNode.data.substr( 0, INLINE_FILLER_LENGTH ) === INLINE_FILLER );\r\n}\r\n\r\n/**\r\n * Checks if the text node contains only the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\r\n *\r\n * ```ts\r\n * isInlineFiller( document.createTextNode( INLINE_FILLER ) ); // true\r\n * isInlineFiller( document.createTextNode( INLINE_FILLER + 'foo' ) ); // false\r\n * ```\r\n *\r\n * @param domText DOM text node.\r\n * @returns True if the text node contains only the {@link module:engine/view/filler~INLINE_FILLER inline filler}.\r\n */\r\nexport function isInlineFiller( domText: Text ): boolean {\r\n\treturn domText.data.length == INLINE_FILLER_LENGTH && startsWithFiller( domText );\r\n}\r\n\r\n/**\r\n * Get string data from the text node, removing an {@link module:engine/view/filler~INLINE_FILLER inline filler} from it,\r\n * if text node contains it.\r\n *\r\n * ```ts\r\n * getDataWithoutFiller( document.createTextNode( INLINE_FILLER + 'foo' ) ) == 'foo' // true\r\n * getDataWithoutFiller( document.createTextNode( 'foo' ) ) == 'foo' // true\r\n * ```\r\n *\r\n * @param domText DOM text node, possible with inline filler.\r\n * @returns Data without filler.\r\n */\r\nexport function getDataWithoutFiller( domText: Text | string ): string {\r\n\tconst data = typeof domText == 'string' ? domText : domText.data;\r\n\r\n\tif ( startsWithFiller( domText ) ) {\r\n\t\treturn data.slice( INLINE_FILLER_LENGTH );\r\n\t}\r\n\r\n\treturn data;\r\n}\r\n\r\n/**\r\n * Assign key observer which move cursor from the end of the inline filler to the beginning of it when\r\n * the left arrow is pressed, so the filler does not break navigation.\r\n *\r\n * @param view View controller instance we should inject quirks handling on.\r\n */\r\nexport function injectQuirksHandling( view: View ): void {\r\n\tview.document.on( 'arrowKey', jumpOverInlineFiller, { priority: 'low' } );\r\n}\r\n\r\n/**\r\n * Move cursor from the end of the inline filler to the beginning of it when, so the filler does not break navigation.\r\n */\r\nfunction jumpOverInlineFiller( evt: unknown, data: DomEventData & KeystrokeInfo ) {\r\n\tif ( data.keyCode == keyCodes.arrowleft ) {\r\n\t\tconst domSelection = data.domTarget.ownerDocument.defaultView!.getSelection()!;\r\n\r\n\t\tif ( domSelection.rangeCount == 1 && domSelection.getRangeAt( 0 ).collapsed ) {\r\n\t\t\tconst domParent = domSelection.getRangeAt( 0 ).startContainer;\r\n\t\t\tconst domOffset = domSelection.getRangeAt( 0 ).startOffset;\r\n\r\n\t\t\tif ( startsWithFiller( domParent ) && domOffset <= INLINE_FILLER_LENGTH ) {\r\n\t\t\t\tdomSelection.collapse( domParent, 0 );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./renderer.css\";\n\nvar options = {\"injectType\":\"singletonStyleTag\",\"attributes\":{\"data-cke\":true}};\n\noptions.insert = \"head\";\noptions.singleton = true;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\r\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * @module engine/view/renderer\r\n */\r\n\r\nimport ViewText from './text.js';\r\nimport ViewPosition from './position.js';\r\nimport { INLINE_FILLER, INLINE_FILLER_LENGTH, startsWithFiller, isInlineFiller } from './filler.js';\r\n\r\nimport {\r\n\tCKEditorError,\r\n\tObservableMixin,\r\n\tdiff,\r\n\tenv,\r\n\tfastDiff,\r\n\tinsertAt,\r\n\tisComment,\r\n\tisNode,\r\n\tisText,\r\n\tremove,\r\n\tindexOf,\r\n\ttype DiffResult,\r\n\ttype ObservableChangeEvent\r\n} from '@ckeditor/ckeditor5-utils';\r\n\r\nimport type { ChangeType } from './document.js';\r\nimport type DocumentSelection from './documentselection.js';\r\nimport type DomConverter from './domconverter.js';\r\nimport type ViewElement from './element.js';\r\nimport type ViewNode from './node.js';\r\n\r\nimport '../../theme/renderer.css';\r\n\r\ntype DomText = globalThis.Text;\r\ntype DomNode = globalThis.Node;\r\ntype DomDocument = globalThis.Document;\r\ntype DomElement = globalThis.HTMLElement;\r\ntype DomSelection = globalThis.Selection;\r\n\r\n/**\r\n * Renderer is responsible for updating the DOM structure and the DOM selection based on\r\n * the {@link module:engine/view/renderer~Renderer#markToSync information about updated view nodes}.\r\n * In other words, it renders the view to the DOM.\r\n *\r\n * Its main responsibility is to make only the necessary, minimal changes to the DOM. However, unlike in many\r\n * virtual DOM implementations, the primary reason for doing minimal changes is not the performance but ensuring\r\n * that native editing features such as text composition, autocompletion, spell checking, selection's x-index are\r\n * affected as little as possible.\r\n *\r\n * Renderer uses {@link module:engine/view/domconverter~DomConverter} to transform view nodes and positions\r\n * to and from the DOM.\r\n */\r\nexport default class Renderer extends /* #__PURE__ */ ObservableMixin() {\r\n\t/**\r\n\t * Set of DOM Documents instances.\r\n\t */\r\n\tpublic readonly domDocuments: Set = new Set();\r\n\r\n\t/**\r\n\t * Converter instance.\r\n\t */\r\n\tpublic readonly domConverter: DomConverter;\r\n\r\n\t/**\r\n\t * Set of nodes which attributes changed and may need to be rendered.\r\n\t */\r\n\tpublic readonly markedAttributes: Set = new Set();\r\n\r\n\t/**\r\n\t * Set of elements which child lists changed and may need to be rendered.\r\n\t */\r\n\tpublic readonly markedChildren: Set = new Set();\r\n\r\n\t/**\r\n\t * Set of text nodes which text data changed and may need to be rendered.\r\n\t */\r\n\tpublic readonly markedTexts: Set = new Set();\r\n\r\n\t/**\r\n\t * View selection. Renderer updates DOM selection based on the view selection.\r\n\t */\r\n\tpublic readonly selection: DocumentSelection;\r\n\r\n\t/**\r\n\t * Indicates if the view document is focused and selection can be rendered. Selection will not be rendered if\r\n\t * this is set to `false`.\r\n\t *\r\n\t * @observable\r\n\t */\r\n\tdeclare public readonly isFocused: boolean;\r\n\r\n\t/**\r\n\t * Indicates whether the user is making a selection in the document (e.g. holding the mouse button and moving the cursor).\r\n\t * When they stop selecting, the property goes back to `false`.\r\n\t *\r\n\t * Note: In some browsers, the renderer will stop rendering the selection and inline fillers while the user is making\r\n\t * a selection to avoid glitches in DOM selection\r\n\t * (https://github.com/ckeditor/ckeditor5/issues/10562, https://github.com/ckeditor/ckeditor5/issues/10723).\r\n\t *\r\n\t * @observable\r\n\t */\r\n\tdeclare public readonly isSelecting: boolean;\r\n\r\n\t/**\r\n\t * True if composition is in progress inside the document.\r\n\t *\r\n\t * This property is bound to the {@link module:engine/view/document~Document#isComposing `Document#isComposing`} property.\r\n\t *\r\n\t * @observable\r\n\t */\r\n\tdeclare public readonly isComposing: boolean;\r\n\r\n\t/**\r\n\t * The text node in which the inline filler was rendered.\r\n\t */\r\n\tprivate _inlineFiller: DomText | null = null;\r\n\r\n\t/**\r\n\t * DOM element containing fake selection.\r\n\t */\r\n\tprivate _fakeSelectionContainer: DomElement | null = null;\r\n\r\n\t/**\r\n\t * Creates a renderer instance.\r\n\t *\r\n\t * @param domConverter Converter instance.\r\n\t * @param selection View selection.\r\n\t */\r\n\tconstructor( domConverter: DomConverter, selection: DocumentSelection ) {\r\n\t\tsuper();\r\n\r\n\t\tthis.domConverter = domConverter;\r\n\t\tthis.selection = selection;\r\n\r\n\t\tthis.set( 'isFocused', false );\r\n\t\tthis.set( 'isSelecting', false );\r\n\t\tthis.set( 'isComposing', false );\r\n\r\n\t\t// Rendering the selection and inline filler manipulation should be postponed in (non-Android) Blink until the user finishes\r\n\t\t// creating the selection in DOM to avoid accidental selection collapsing\r\n\t\t// (https://github.com/ckeditor/ckeditor5/issues/10562, https://github.com/ckeditor/ckeditor5/issues/10723).\r\n\t\t// When the user stops selecting, all pending changes should be rendered ASAP, though.\r\n\t\tif ( env.isBlink && !env.isAndroid ) {\r\n\t\t\tthis.on( 'change:isSelecting', () => {\r\n\t\t\t\tif ( !this.isSelecting ) {\r\n\t\t\t\t\tthis.render();\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Marks a view node to be updated in the DOM by {@link #render `render()`}.\r\n\t *\r\n\t * Note that only view nodes whose parents have corresponding DOM elements need to be marked to be synchronized.\r\n\t *\r\n\t * @see #markedAttributes\r\n\t * @see #markedChildren\r\n\t * @see #markedTexts\r\n\t *\r\n\t * @param type Type of the change.\r\n\t * @param node ViewNode to be marked.\r\n\t */\r\n\tpublic markToSync( type: ChangeType, node: ViewNode ): void {\r\n\t\tif ( type === 'text' ) {\r\n\t\t\tif ( this.domConverter.mapViewToDom( node.parent! ) ) {\r\n\t\t\t\tthis.markedTexts.add( node );\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// If the node has no DOM element it is not rendered yet,\r\n\t\t\t// its children/attributes do not need to be marked to be sync.\r\n\t\t\tif ( !this.domConverter.mapViewToDom( node as ViewElement ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( type === 'attributes' ) {\r\n\t\t\t\tthis.markedAttributes.add( node as ViewElement );\r\n\t\t\t} else if ( type === 'children' ) {\r\n\t\t\t\tthis.markedChildren.add( node as ViewElement );\r\n\t\t\t} else {\r\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\t\t\t\tconst unreachable: never = type;\r\n\r\n\t\t\t\t/**\r\n\t\t\t\t * Unknown type passed to Renderer.markToSync.\r\n\t\t\t\t *\r\n\t\t\t\t * @error view-renderer-unknown-type\r\n\t\t\t\t */\r\n\t\t\t\tthrow new CKEditorError( 'view-renderer-unknown-type', this );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Renders all buffered changes ({@link #markedAttributes}, {@link #markedChildren} and {@link #markedTexts}) and\r\n\t * the current view selection (if needed) to the DOM by applying a minimal set of changes to it.\r\n\t *\r\n\t * Renderer tries not to break the text composition (e.g. IME) and x-index of the selection,\r\n\t * so it does as little as it is needed to update the DOM.\r\n\t *\r\n\t * Renderer also handles {@link module:engine/view/filler fillers}. Especially, it checks if the inline filler is needed\r\n\t * at the selection position and adds or removes it. To prevent breaking text composition inline filler will not be\r\n\t * removed as long as the selection is in the text node which needed it at first.\r\n\t */\r\n\tpublic render(): void {\r\n\t\t// Ignore rendering while in the composition mode. Composition events are not cancellable and browser will modify the DOM tree.\r\n\t\t// All marked elements, attributes, etc. will wait until next render after the composition ends.\r\n\t\t// On Android composition events are immediately applied to the model, so we don't need to skip rendering,\r\n\t\t// and we should not do it because the difference between view and DOM could lead to position mapping problems.\r\n\t\tif ( this.isComposing && !env.isAndroid ) {\r\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Rendering aborted while isComposing.',\r\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green; font-weight: bold', 'font-style: italic'\r\n\t\t\t// @if CK_DEBUG_TYPING // \t);\r\n\t\t\t// @if CK_DEBUG_TYPING // }\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t// @if CK_DEBUG_TYPING // \tconsole.group( '%c[Renderer]%c Rendering',\r\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green; font-weight: bold', 'font-weight: bold'\r\n\t\t// @if CK_DEBUG_TYPING // \t);\r\n\t\t// @if CK_DEBUG_TYPING // }\r\n\r\n\t\tlet inlineFillerPosition: ViewPosition | null = null;\r\n\t\tconst isInlineFillerRenderingPossible = env.isBlink && !env.isAndroid ? !this.isSelecting : true;\r\n\r\n\t\t// Refresh mappings.\r\n\t\tfor ( const element of this.markedChildren ) {\r\n\t\t\tthis._updateChildrenMappings( element );\r\n\t\t}\r\n\r\n\t\t// Don't manipulate inline fillers while the selection is being made in (non-Android) Blink to prevent accidental\r\n\t\t// DOM selection collapsing\r\n\t\t// (https://github.com/ckeditor/ckeditor5/issues/10562, https://github.com/ckeditor/ckeditor5/issues/10723).\r\n\t\tif ( isInlineFillerRenderingPossible ) {\r\n\t\t\t// There was inline filler rendered in the DOM but it's not\r\n\t\t\t// at the selection position any more, so we can remove it\r\n\t\t\t// (cause even if it's needed, it must be placed in another location).\r\n\t\t\tif ( this._inlineFiller && !this._isSelectionInInlineFiller() ) {\r\n\t\t\t\tthis._removeInlineFiller();\r\n\t\t\t}\r\n\r\n\t\t\t// If we've got the filler, let's try to guess its position in the view.\r\n\t\t\tif ( this._inlineFiller ) {\r\n\t\t\t\tinlineFillerPosition = this._getInlineFillerPosition();\r\n\t\t\t}\r\n\t\t\t// Otherwise, if it's needed, create it at the selection position.\r\n\t\t\telse if ( this._needsInlineFillerAtSelection() ) {\r\n\t\t\t\tinlineFillerPosition = this.selection.getFirstPosition()!;\r\n\r\n\t\t\t\t// Do not use `markToSync` so it will be added even if the parent is already added.\r\n\t\t\t\tthis.markedChildren.add( inlineFillerPosition.parent as ViewElement );\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Make sure the inline filler has any parent, so it can be mapped to view position by DomConverter.\r\n\t\telse if ( this._inlineFiller && this._inlineFiller.parentNode ) {\r\n\t\t\t// While the user is making selection, preserve the inline filler at its original position.\r\n\t\t\tinlineFillerPosition = this.domConverter.domPositionToView( this._inlineFiller )!;\r\n\r\n\t\t\t// While down-casting the document selection attributes, all existing empty\r\n\t\t\t// attribute elements (for selection position) are removed from the view and DOM,\r\n\t\t\t// so make sure that we were able to map filler position.\r\n\t\t\t// https://github.com/ckeditor/ckeditor5/issues/12026\r\n\t\t\tif ( inlineFillerPosition && inlineFillerPosition.parent.is( '$text' ) ) {\r\n\t\t\t\t// The inline filler position is expected to be before the text node.\r\n\t\t\t\tinlineFillerPosition = ViewPosition._createBefore( inlineFillerPosition.parent );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor ( const element of this.markedAttributes ) {\r\n\t\t\tthis._updateAttrs( element );\r\n\t\t}\r\n\r\n\t\tfor ( const element of this.markedChildren ) {\r\n\t\t\tthis._updateChildren( element, { inlineFillerPosition } );\r\n\t\t}\r\n\r\n\t\tfor ( const node of this.markedTexts ) {\r\n\t\t\tif ( !this.markedChildren.has( node.parent as ViewElement ) && this.domConverter.mapViewToDom( node.parent as ViewElement ) ) {\r\n\t\t\t\tthis._updateText( node as ViewText, { inlineFillerPosition } );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// * Check whether the inline filler is required and where it really is in the DOM.\r\n\t\t// At this point in most cases it will be in the DOM, but there are exceptions.\r\n\t\t// For example, if the inline filler was deep in the created DOM structure, it will not be created.\r\n\t\t// Similarly, if it was removed at the beginning of this function and then neither text nor children were updated,\r\n\t\t// it will not be present. Fix those and similar scenarios.\r\n\t\t// * Don't manipulate inline fillers while the selection is being made in (non-Android) Blink to prevent accidental\r\n\t\t// DOM selection collapsing\r\n\t\t// (https://github.com/ckeditor/ckeditor5/issues/10562, https://github.com/ckeditor/ckeditor5/issues/10723).\r\n\t\tif ( isInlineFillerRenderingPossible ) {\r\n\t\t\tif ( inlineFillerPosition ) {\r\n\t\t\t\tconst fillerDomPosition = this.domConverter.viewPositionToDom( inlineFillerPosition )!;\r\n\t\t\t\tconst domDocument = fillerDomPosition.parent.ownerDocument!;\r\n\r\n\t\t\t\tif ( !startsWithFiller( fillerDomPosition.parent ) ) {\r\n\t\t\t\t\t// Filler has not been created at filler position. Create it now.\r\n\t\t\t\t\tthis._inlineFiller = addInlineFiller( domDocument, fillerDomPosition.parent, fillerDomPosition.offset );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Filler has been found, save it.\r\n\t\t\t\t\tthis._inlineFiller = fillerDomPosition.parent as DomText;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// There is no filler needed.\r\n\t\t\t\tthis._inlineFiller = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// First focus the new editing host, then update the selection.\r\n\t\t// Otherwise, FF may throw an error (https://github.com/ckeditor/ckeditor5/issues/721).\r\n\t\tthis._updateFocus();\r\n\t\tthis._updateSelection();\r\n\r\n\t\tthis.domConverter._clearTemporaryCustomProperties();\r\n\r\n\t\tthis.markedTexts.clear();\r\n\t\tthis.markedAttributes.clear();\r\n\t\tthis.markedChildren.clear();\r\n\r\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\r\n\t\t// @if CK_DEBUG_TYPING // }\r\n\t}\r\n\r\n\t/**\r\n\t * Updates mappings of view element's children.\r\n\t *\r\n\t * Children that were replaced in the view structure by similar elements (same tag name) are treated as 'replaced'.\r\n\t * This means that their mappings can be updated so the new view elements are mapped to the existing DOM elements.\r\n\t * Thanks to that these elements do not need to be re-rendered completely.\r\n\t *\r\n\t * @param viewElement The view element whose children mappings will be updated.\r\n\t */\r\n\tprivate _updateChildrenMappings( viewElement: ViewElement ): void {\r\n\t\tconst domElement = this.domConverter.mapViewToDom( viewElement );\r\n\r\n\t\tif ( !domElement ) {\r\n\t\t\t// If there is no `domElement` it means that it was already removed from DOM and there is no need to process it.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Removing nodes from the DOM as we iterate can cause `actualDomChildren`\r\n\t\t// (which is a live-updating `NodeList`) to get out of sync with the\r\n\t\t// indices that we compute as we iterate over `actions`.\r\n\t\t// This would produce incorrect element mappings.\r\n\t\t//\r\n\t\t// Converting live list to an array to make the list static.\r\n\t\tconst actualDomChildren = Array.from(\r\n\t\t\tdomElement.childNodes\r\n\t\t);\r\n\t\tconst expectedDomChildren = Array.from(\r\n\t\t\tthis.domConverter.viewChildrenToDom( viewElement, { withChildren: false } )\r\n\t\t);\r\n\t\tconst diff = this._diffNodeLists( actualDomChildren, expectedDomChildren );\r\n\t\tconst actions = this._findUpdateActions( diff, actualDomChildren, expectedDomChildren, areSimilarElements );\r\n\r\n\t\tif ( actions.indexOf( 'update' ) !== -1 ) {\r\n\t\t\tconst counter = { equal: 0, insert: 0, delete: 0 };\r\n\r\n\t\t\tfor ( const action of actions ) {\r\n\t\t\t\tif ( action === 'update' ) {\r\n\t\t\t\t\tconst insertIndex = counter.equal + counter.insert;\r\n\t\t\t\t\tconst deleteIndex = counter.equal + counter.delete;\r\n\t\t\t\t\tconst viewChild = viewElement.getChild( insertIndex );\r\n\r\n\t\t\t\t\t// UIElement and RawElement are special cases. Their children are not stored in a view (#799)\r\n\t\t\t\t\t// so we cannot use them with replacing flow (since they use view children during rendering\r\n\t\t\t\t\t// which will always result in rendering empty elements).\r\n\t\t\t\t\tif ( viewChild && !viewChild.is( 'uiElement' ) && !viewChild.is( 'rawElement' ) ) {\r\n\t\t\t\t\t\tthis._updateElementMappings( viewChild as ViewElement, actualDomChildren[ deleteIndex ] as DomElement );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tremove( expectedDomChildren[ insertIndex ] );\r\n\t\t\t\t\tcounter.equal++;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcounter[ action ]++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates mappings of a given view element.\r\n\t *\r\n\t * @param viewElement The view element whose mappings will be updated.\r\n\t * @param domElement The DOM element representing the given view element.\r\n\t */\r\n\tprivate _updateElementMappings( viewElement: ViewElement, domElement: DomElement ): void {\r\n\t\t// Remap 'DomConverter' bindings.\r\n\t\tthis.domConverter.unbindDomElement( domElement );\r\n\t\tthis.domConverter.bindElements( domElement, viewElement );\r\n\r\n\t\t// View element may have children which needs to be updated, but are not marked, mark them to update.\r\n\t\tthis.markedChildren.add( viewElement );\r\n\r\n\t\t// Because we replace new view element mapping with the existing one, the corresponding DOM element\r\n\t\t// will not be rerendered. The new view element may have different attributes than the previous one.\r\n\t\t// Since its corresponding DOM element will not be rerendered, new attributes will not be added\r\n\t\t// to the DOM, so we need to mark it here to make sure its attributes gets updated. See #1427 for more\r\n\t\t// detailed case study.\r\n\t\t// Also there are cases where replaced element is removed from the view structure and then has\r\n\t\t// its attributes changed or removed. In such cases the element will not be present in `markedAttributes`\r\n\t\t// and also may be the same (`element.isSimilar()`) as the reused element not having its attributes updated.\r\n\t\t// To prevent such situations we always mark reused element to have its attributes rerenderd (#1560).\r\n\t\tthis.markedAttributes.add( viewElement );\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the position of the inline filler based on the current selection.\r\n\t * Here, we assume that we know that the filler is needed and\r\n\t * {@link #_isSelectionInInlineFiller is at the selection position}, and, since it is needed,\r\n\t * it is somewhere at the selection position.\r\n\t *\r\n\t * Note: The filler position cannot be restored based on the filler's DOM text node, because\r\n\t * when this method is called (before rendering), the bindings will often be broken. View-to-DOM\r\n\t * bindings are only dependable after rendering.\r\n\t */\r\n\tprivate _getInlineFillerPosition(): ViewPosition {\r\n\t\tconst firstPos = this.selection.getFirstPosition()!;\r\n\r\n\t\tif ( firstPos.parent.is( '$text' ) ) {\r\n\t\t\treturn ViewPosition._createBefore( firstPos.parent );\r\n\t\t} else {\r\n\t\t\treturn firstPos;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the selection has not left the inline filler's text node.\r\n\t * If it is `true`, it means that the filler had been added for a reason and the selection did not\r\n\t * leave the filler's text node. For example, the user can be in the middle of a composition so it should not be touched.\r\n\t *\r\n\t * @returns `true` if the inline filler and selection are in the same place.\r\n\t */\r\n\tprivate _isSelectionInInlineFiller(): boolean {\r\n\t\tif ( this.selection.rangeCount != 1 || !this.selection.isCollapsed ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Note, we can't check if selection's position equals position of the\r\n\t\t// this._inlineFiller node, because of #663. We may not be able to calculate\r\n\t\t// the filler's position in the view at this stage.\r\n\t\t// Instead, we check it the other way – whether selection is anchored in\r\n\t\t// that text node or next to it.\r\n\r\n\t\t// Possible options are:\r\n\t\t// \"FILLER{}\"\r\n\t\t// \"FILLERadded-text{}\"\r\n\t\tconst selectionPosition = this.selection.getFirstPosition()!;\r\n\t\tconst position = this.domConverter.viewPositionToDom( selectionPosition );\r\n\r\n\t\tif ( position && isText( position.parent ) && startsWithFiller( position.parent ) ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the inline filler.\r\n\t */\r\n\tprivate _removeInlineFiller(): void {\r\n\t\tconst domFillerNode = this._inlineFiller!;\r\n\r\n\t\t// Something weird happened and the stored node doesn't contain the filler's text.\r\n\t\tif ( !startsWithFiller( domFillerNode ) ) {\r\n\t\t\t/**\r\n\t\t\t * The inline filler node was lost. Most likely, something overwrote the filler text node\r\n\t\t\t * in the DOM.\r\n\t\t\t *\r\n\t\t\t * @error view-renderer-filler-was-lost\r\n\t\t\t */\r\n\t\t\tthrow new CKEditorError( 'view-renderer-filler-was-lost', this );\r\n\t\t}\r\n\r\n\t\tif ( isInlineFiller( domFillerNode ) ) {\r\n\t\t\tdomFillerNode.remove();\r\n\t\t} else {\r\n\t\t\tdomFillerNode.data = domFillerNode.data.substr( INLINE_FILLER_LENGTH );\r\n\t\t}\r\n\r\n\t\tthis._inlineFiller = null;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the inline {@link module:engine/view/filler filler} should be added.\r\n\t *\r\n\t * @returns `true` if the inline filler should be added.\r\n\t */\r\n\tprivate _needsInlineFillerAtSelection(): boolean {\r\n\t\tif ( this.selection.rangeCount != 1 || !this.selection.isCollapsed ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst selectionPosition = this.selection.getFirstPosition()!;\r\n\t\tconst selectionParent = selectionPosition.parent;\r\n\t\tconst selectionOffset = selectionPosition.offset;\r\n\r\n\t\t// If there is no DOM root we do not care about fillers.\r\n\t\tif ( !this.domConverter.mapViewToDom( selectionParent.root ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif ( !( selectionParent.is( 'element' ) ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Prevent adding inline filler inside elements with contenteditable=false.\r\n\t\t// https://github.com/ckeditor/ckeditor5-engine/issues/1170\r\n\t\tif ( !isEditable( selectionParent ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst nodeBefore = selectionPosition.nodeBefore;\r\n\t\tconst nodeAfter = selectionPosition.nodeAfter;\r\n\r\n\t\tif ( nodeBefore instanceof ViewText || nodeAfter instanceof ViewText ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// We have block filler, we do not need inline one.\r\n\t\tif ( selectionOffset === selectionParent.getFillerOffset!() && ( !nodeBefore || !nodeBefore.is( 'element', 'br' ) ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Do not use inline filler while typing outside inline elements on Android.\r\n\t\t// The deleteContentBackward would remove part of the inline filler instead of removing last letter in a link.\r\n\t\tif ( env.isAndroid && ( nodeBefore || nodeAfter ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if text needs to be updated and possibly updates it.\r\n\t *\r\n\t * @param viewText View text to update.\r\n\t * @param options.inlineFillerPosition The position where the inline filler should be rendered.\r\n\t */\r\n\tprivate _updateText( viewText: ViewText, options: { inlineFillerPosition?: ViewPosition | null } ) {\r\n\t\tconst domText = this.domConverter.findCorrespondingDomText( viewText )!;\r\n\t\tconst newDomText = this.domConverter.viewToDom( viewText );\r\n\r\n\t\tlet expectedText = newDomText.data;\r\n\t\tconst filler = options.inlineFillerPosition;\r\n\r\n\t\tif ( filler && filler.parent == viewText.parent && filler.offset == viewText.index ) {\r\n\t\t\texpectedText = INLINE_FILLER + expectedText;\r\n\t\t}\r\n\r\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t// @if CK_DEBUG_TYPING // \tconsole.group( '%c[Renderer]%c Update text',\r\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green; font-weight: bold', 'font-weight: normal'\r\n\t\t// @if CK_DEBUG_TYPING // \t);\r\n\t\t// @if CK_DEBUG_TYPING // }\r\n\r\n\t\tthis._updateTextNode( domText, expectedText );\r\n\r\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\r\n\t\t// @if CK_DEBUG_TYPING // }\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if attribute list needs to be updated and possibly updates it.\r\n\t *\r\n\t * @param viewElement The view element to update.\r\n\t */\r\n\tprivate _updateAttrs( viewElement: ViewElement ): void {\r\n\t\tconst domElement = this.domConverter.mapViewToDom( viewElement );\r\n\r\n\t\tif ( !domElement ) {\r\n\t\t\t// If there is no `domElement` it means that 'viewElement' is outdated as its mapping was updated\r\n\t\t\t// in 'this._updateChildrenMappings()'. There is no need to process it as new view element which\r\n\t\t\t// replaced old 'viewElement' mapping was also added to 'this.markedAttributes'\r\n\t\t\t// in 'this._updateChildrenMappings()' so it will be processed separately.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Remove attributes from DOM elements if they do not exist in the view.\r\n\t\t//\r\n\t\t// Note: It is important to first remove DOM attributes and then set new ones, because some view attributes may be renamed\r\n\t\t// as they are set on DOM (due to unsafe attributes handling). If we set the view attribute first, and then remove\r\n\t\t// non-existing DOM attributes, then we would remove the attribute that we just set.\r\n\t\tfor ( const domAttr of ( domElement as DomElement ).attributes ) {\r\n\t\t\tconst key = domAttr.name;\r\n\r\n\t\t\t// All other attributes not present in the DOM should be removed.\r\n\t\t\tif ( !viewElement.hasAttribute( key ) ) {\r\n\t\t\t\tthis.domConverter.removeDomElementAttribute( domElement as DomElement, key );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add or overwrite attributes.\r\n\t\tfor ( const key of viewElement.getAttributeKeys() ) {\r\n\t\t\tthis.domConverter.setDomElementAttribute( domElement as DomElement, key, viewElement.getAttribute( key )!, viewElement );\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if elements child list needs to be updated and possibly updates it.\r\n\t *\r\n\t * Note that on Android, to reduce the risk of composition breaks, it tries to update data of an existing\r\n\t * child text nodes instead of replacing them completely.\r\n\t *\r\n\t * @param viewElement View element to update.\r\n\t * @param options.inlineFillerPosition The position where the inline filler should be rendered.\r\n\t */\r\n\tprivate _updateChildren( viewElement: ViewElement, options: { inlineFillerPosition: ViewPosition | null } ) {\r\n\t\tconst domElement = this.domConverter.mapViewToDom( viewElement );\r\n\r\n\t\tif ( !domElement ) {\r\n\t\t\t// If there is no `domElement` it means that it was already removed from DOM.\r\n\t\t\t// There is no need to process it. It will be processed when re-inserted.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t// @if CK_DEBUG_TYPING // \tconsole.group( '%c[Renderer]%c Update children',\r\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green; font-weight: bold', 'font-weight: normal'\r\n\t\t// @if CK_DEBUG_TYPING // \t);\r\n\t\t// @if CK_DEBUG_TYPING // }\r\n\r\n\t\t// IME on Android inserts a new text node while typing after a link\r\n\t\t// instead of updating an existing text node that follows the link.\r\n\t\t// We must normalize those text nodes so the diff won't get confused.\r\n\t\t// https://github.com/ckeditor/ckeditor5/issues/12574.\r\n\t\tif ( env.isAndroid ) {\r\n\t\t\tlet previousDomNode = null;\r\n\r\n\t\t\tfor ( const domNode of Array.from( domElement.childNodes ) ) {\r\n\t\t\t\tif ( previousDomNode && isText( previousDomNode ) && isText( domNode ) ) {\r\n\t\t\t\t\tdomElement.normalize();\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tpreviousDomNode = domNode;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst inlineFillerPosition = options.inlineFillerPosition;\r\n\t\tconst actualDomChildren = domElement.childNodes;\r\n\t\tconst expectedDomChildren = Array.from(\r\n\t\t\tthis.domConverter.viewChildrenToDom( viewElement, { bind: true } )\r\n\t\t);\r\n\r\n\t\t// Inline filler element has to be created as it is present in the DOM, but not in the view. It is required\r\n\t\t// during diffing so text nodes could be compared correctly and also during rendering to maintain\r\n\t\t// proper order and indexes while updating the DOM.\r\n\t\tif ( inlineFillerPosition && inlineFillerPosition.parent === viewElement ) {\r\n\t\t\taddInlineFiller( ( domElement as DomElement ).ownerDocument, expectedDomChildren, inlineFillerPosition.offset );\r\n\t\t}\r\n\r\n\t\tconst diff = this._diffNodeLists( actualDomChildren, expectedDomChildren );\r\n\r\n\t\t// We need to make sure that we update the existing text node and not replace it with another one.\r\n\t\t// The composition and different \"language\" browser extensions are fragile to text node being completely replaced.\r\n\t\tconst actions = this._findUpdateActions( diff, actualDomChildren, expectedDomChildren, areTextNodes );\r\n\r\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping && actions.every( a => a == 'equal' ) ) {\r\n\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Nothing to update.',\r\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green; font-weight: bold', 'font-style: italic'\r\n\t\t// @if CK_DEBUG_TYPING // \t);\r\n\t\t// @if CK_DEBUG_TYPING // }\r\n\r\n\t\tlet i = 0;\r\n\t\tconst nodesToUnbind: Set = new Set();\r\n\r\n\t\t// Handle deletions first.\r\n\t\t// This is to prevent a situation where an element that already exists in `actualDomChildren` is inserted at a different\r\n\t\t// index in `actualDomChildren`. Since `actualDomChildren` is a `NodeList`, this works like move, not like an insert,\r\n\t\t// and it disrupts the whole algorithm. See https://github.com/ckeditor/ckeditor5/issues/6367.\r\n\t\t//\r\n\t\t// It doesn't matter in what order we remove or add nodes, as long as we remove and add correct nodes at correct indexes.\r\n\t\tfor ( const action of actions ) {\r\n\t\t\tif ( action === 'delete' ) {\r\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\tconst node = actualDomChildren[ i ];\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \tif ( isText( node ) ) {\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\tconsole.info( '%c[Renderer]%c Remove text node' +\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\t`${ this.isComposing ? ' while composing (may break composition)' : '' }: ` +\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\t`%c${ _escapeTextNodeData( node.data ) }%c (${ node.data.length })`,\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\t'color: green; font-weight: bold',\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\tthis.isComposing ? 'color: red; font-weight: bold' : '', 'color: blue', ''\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t);\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t} else {\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\tconsole.info( '%c[Renderer]%c Remove element' +\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\t`${ this.isComposing ? ' while composing (may break composition)' : '' }: `,\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\t'color: green; font-weight: bold',\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\tthis.isComposing ? 'color: red; font-weight: bold' : '',\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t\tnode\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t\t);\r\n\t\t\t\t// @if CK_DEBUG_TYPING // \t}\r\n\t\t\t\t// @if CK_DEBUG_TYPING // }\r\n\r\n\t\t\t\tnodesToUnbind.add( actualDomChildren[ i ] as DomElement );\r\n\t\t\t\tremove( actualDomChildren[ i ] );\r\n\t\t\t} else if ( action === 'equal' || action === 'update' ) {\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ti = 0;\r\n\r\n\t\tfor ( const action of actions ) {\r\n\t\t\tif ( action === 'insert' ) {\r\n\t\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\tconst node = expectedDomChildren[ i ];\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\tif ( isText( node ) ) {\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t\tconsole.info( '%c[Renderer]%c Insert text node' +\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t\t\t`${ this.isComposing ? ' while composing (may break composition)' : '' }: ` +\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t\t\t`%c${ _escapeTextNodeData( node.data ) }%c (${ node.data.length })`,\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t\t\t'color: green; font-weight: bold',\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t\t\tthis.isComposing ? 'color: red; font-weight: bold' : '',\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t\t\t'color: blue', ''\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t\t);\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t} else {\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t\tconsole.info( '%c[Renderer]%c Insert element:',\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t\t\t'color: green; font-weight: bold', 'font-weight: normal',\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t\t\tnode\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t\t);\r\n\t\t\t\t// @if CK_DEBUG_TYPING //\t}\r\n\t\t\t\t// @if CK_DEBUG_TYPING // }\r\n\r\n\t\t\t\tinsertAt( domElement as DomElement, i, expectedDomChildren[ i ] );\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t\t// Update the existing text node data.\r\n\t\t\telse if ( action === 'update' ) {\r\n\t\t\t\tthis._updateTextNode( actualDomChildren[ i ] as DomText, ( expectedDomChildren[ i ] as DomText ).data );\r\n\t\t\t\ti++;\r\n\t\t\t} else if ( action === 'equal' ) {\r\n\t\t\t\t// Force updating text nodes inside elements which did not change and do not need to be re-rendered (#1125).\r\n\t\t\t\t// Do it here (not in the loop above) because only after insertions the `i` index is correct.\r\n\t\t\t\tthis._markDescendantTextToSync( this.domConverter.domToView( expectedDomChildren[ i ] ) as any );\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Unbind removed nodes. When node does not have a parent it means that it was removed from DOM tree during\r\n\t\t// comparison with the expected DOM. We don't need to check child nodes, because if child node was reinserted,\r\n\t\t// it was moved to DOM tree out of the removed node.\r\n\t\tfor ( const node of nodesToUnbind ) {\r\n\t\t\tif ( !node.parentNode ) {\r\n\t\t\t\tthis.domConverter.unbindDomElement( node as DomElement );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t// @if CK_DEBUG_TYPING // \tconsole.groupEnd();\r\n\t\t// @if CK_DEBUG_TYPING // }\r\n\t}\r\n\r\n\t/**\r\n\t * Shorthand for diffing two arrays or node lists of DOM nodes.\r\n\t *\r\n\t * @param actualDomChildren Actual DOM children\r\n\t * @param expectedDomChildren Expected DOM children.\r\n\t * @returns The list of actions based on the {@link module:utils/diff~diff} function.\r\n\t */\r\n\tprivate _diffNodeLists( actualDomChildren: Array | NodeList, expectedDomChildren: Array | NodeList ) {\r\n\t\tactualDomChildren = filterOutFakeSelectionContainer( actualDomChildren, this._fakeSelectionContainer );\r\n\r\n\t\treturn diff( actualDomChildren, expectedDomChildren, sameNodes.bind( null, this.domConverter ) );\r\n\t}\r\n\r\n\t/**\r\n\t * Finds DOM nodes that were replaced with the similar nodes (same tag name) in the view. All nodes are compared\r\n\t * within one `insert`/`delete` action group, for example:\r\n\t *\r\n\t * ```\r\n\t * Actual DOM:\t\t

                FooBarBazBax

                \r\n\t * Expected DOM:\t

                Bar123Baz456

                \r\n\t * Input actions:\t[ insert, insert, delete, delete, equal, insert, delete ]\r\n\t * Output actions:\t[ insert, replace, delete, equal, replace ]\r\n\t * ```\r\n\t *\r\n\t * @param actions Actions array which is a result of the {@link module:utils/diff~diff} function.\r\n\t * @param actualDom Actual DOM children\r\n\t * @param expectedDom Expected DOM children.\r\n\t * @param comparator A comparator function that should return `true` if the given node should be reused\r\n\t * (either by the update of a text node data or an element children list for similar elements).\r\n\t * @returns Actions array modified with the `update` actions.\r\n\t */\r\n\tprivate _findUpdateActions(\r\n\t\tactions: Array,\r\n\t\tactualDom: Array | NodeList,\r\n\t\texpectedDom: Array,\r\n\t\tcomparator: ( a: DomNode, b: DomNode ) => boolean\r\n\t): Array {\r\n\t\t// If there is no both 'insert' and 'delete' actions, no need to check for replaced elements.\r\n\t\tif ( actions.indexOf( 'insert' ) === -1 || actions.indexOf( 'delete' ) === -1 ) {\r\n\t\t\treturn actions;\r\n\t\t}\r\n\r\n\t\tlet newActions: Array = [];\r\n\t\tlet actualSlice = [];\r\n\t\tlet expectedSlice = [];\r\n\r\n\t\tconst counter = { equal: 0, insert: 0, delete: 0 };\r\n\r\n\t\tfor ( const action of actions ) {\r\n\t\t\tif ( action === 'insert' ) {\r\n\t\t\t\texpectedSlice.push( expectedDom[ counter.equal + counter.insert ] );\r\n\t\t\t} else if ( action === 'delete' ) {\r\n\t\t\t\tactualSlice.push( actualDom[ counter.equal + counter.delete ] );\r\n\t\t\t} else { // equal\r\n\t\t\t\tnewActions = newActions.concat(\r\n\t\t\t\t\tdiff( actualSlice, expectedSlice, comparator )\r\n\t\t\t\t\t\t.map( action => action === 'equal' ? 'update' : action )\r\n\t\t\t\t);\r\n\r\n\t\t\t\tnewActions.push( 'equal' );\r\n\r\n\t\t\t\t// Reset stored elements on 'equal'.\r\n\t\t\t\tactualSlice = [];\r\n\t\t\t\texpectedSlice = [];\r\n\t\t\t}\r\n\t\t\tcounter[ action ]++;\r\n\t\t}\r\n\r\n\t\treturn newActions.concat(\r\n\t\t\tdiff( actualSlice, expectedSlice, comparator )\r\n\t\t\t\t.map( action => action === 'equal' ? 'update' : action )\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if text needs to be updated and possibly updates it by removing and inserting only parts\r\n\t * of the data from the existing text node to reduce impact on the IME composition.\r\n\t *\r\n\t * @param domText DOM text node to update.\r\n\t * @param expectedText The expected data of a text node.\r\n\t */\r\n\tprivate _updateTextNode( domText: DomText, expectedText: string ): void {\r\n\t\tconst actualText = domText.data;\r\n\r\n\t\tif ( actualText == expectedText ) {\r\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Text node does not need update:%c ' +\r\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`${ _escapeTextNodeData( actualText ) }%c (${ actualText.length })`,\r\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green; font-weight: bold', 'font-style: italic', 'color: blue', ''\r\n\t\t\t// @if CK_DEBUG_TYPING // \t);\r\n\t\t\t// @if CK_DEBUG_TYPING // }\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Our approach to interleaving space character with NBSP might differ with the one implemented by the browser.\r\n\t\t// Avoid modifying the text node in the DOM if only NBSPs and spaces are interchanged.\r\n\t\t// We should avoid DOM modifications while composing to avoid breakage of composition.\r\n\t\t// See: https://github.com/ckeditor/ckeditor5/issues/13994.\r\n\t\tif ( env.isAndroid && this.isComposing && actualText.replace( /\\u00A0/g, ' ' ) == expectedText.replace( /\\u00A0/g, ' ' ) ) {\r\n\t\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Text node ignore NBSP changes while composing: ' +\r\n\t\t\t// @if CK_DEBUG_TYPING // \t\t`%c${ _escapeTextNodeData( actualText ) }%c (${ actualText.length }) ->` +\r\n\t\t\t// @if CK_DEBUG_TYPING // \t\t` %c${ _escapeTextNodeData( expectedText ) }%c (${ expectedText.length })`,\r\n\t\t\t// @if CK_DEBUG_TYPING // \t\t'color: green; font-weight: bold', 'font-style: italic', 'color: blue', '', 'color: blue', ''\r\n\t\t\t// @if CK_DEBUG_TYPING // \t);\r\n\t\t\t// @if CK_DEBUG_TYPING // }\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Update text node' +\r\n\t\t// @if CK_DEBUG_TYPING // \t\t`${ this.isComposing ? ' while composing (may break composition)' : '' }: ` +\r\n\t\t// @if CK_DEBUG_TYPING // \t\t`%c${ _escapeTextNodeData( actualText ) }%c (${ actualText.length }) ->` +\r\n\t\t// @if CK_DEBUG_TYPING // \t\t` %c${ _escapeTextNodeData( expectedText ) }%c (${ expectedText.length })`,\r\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green; font-weight: bold', this.isComposing ? 'color: red; font-weight: bold' : '',\r\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: blue', '', 'color: blue', ''\r\n\t\t// @if CK_DEBUG_TYPING // \t);\r\n\t\t// @if CK_DEBUG_TYPING // }\r\n\r\n\t\tthis._updateTextNodeInternal( domText, expectedText );\r\n\t}\r\n\r\n\t/**\r\n\t * Part of the `_updateTextNode` method extracted for easier testing.\r\n\t */\r\n\tprivate _updateTextNodeInternal( domText: DomText, expectedText: string ): void {\r\n\t\tconst actions = fastDiff( domText.data, expectedText );\r\n\r\n\t\tfor ( const action of actions ) {\r\n\t\t\tif ( action.type === 'insert' ) {\r\n\t\t\t\tdomText.insertData( action.index, action.values.join( '' ) );\r\n\t\t\t} else { // 'delete'\r\n\t\t\t\tdomText.deleteData( action.index, action.howMany );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Marks text nodes to be synchronized.\r\n\t *\r\n\t * If a text node is passed, it will be marked. If an element is passed, all descendant text nodes inside it will be marked.\r\n\t *\r\n\t * @param viewNode View node to sync.\r\n\t */\r\n\tprivate _markDescendantTextToSync( viewNode: ViewNode | undefined ): void {\r\n\t\tif ( !viewNode ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( viewNode.is( '$text' ) ) {\r\n\t\t\tthis.markedTexts.add( viewNode );\r\n\t\t} else if ( viewNode.is( 'element' ) ) {\r\n\t\t\tfor ( const child of viewNode.getChildren() ) {\r\n\t\t\t\tthis._markDescendantTextToSync( child );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the selection needs to be updated and possibly updates it.\r\n\t */\r\n\tprivate _updateSelection(): void {\r\n\t\t// Block updating DOM selection in (non-Android) Blink while the user is selecting to prevent accidental selection collapsing.\r\n\t\t// Note: Structural changes in DOM must trigger selection rendering, though. Nodes the selection was anchored\r\n\t\t// to, may disappear in DOM which would break the selection (e.g. in real-time collaboration scenarios).\r\n\t\t// https://github.com/ckeditor/ckeditor5/issues/10562, https://github.com/ckeditor/ckeditor5/issues/10723\r\n\t\tif ( env.isBlink && !env.isAndroid && this.isSelecting && !this.markedChildren.size ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If there is no selection - remove DOM and fake selections.\r\n\t\tif ( this.selection.rangeCount === 0 ) {\r\n\t\t\tthis._removeDomSelection();\r\n\t\t\tthis._removeFakeSelection();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst domRoot = this.domConverter.mapViewToDom( this.selection.editableElement! );\r\n\r\n\t\t// Do nothing if there is no focus, or there is no DOM element corresponding to selection's editable element.\r\n\t\tif ( !this.isFocused || !domRoot ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Render fake selection - create the fake selection container (if needed) and move DOM selection to it.\r\n\t\tif ( this.selection.isFake ) {\r\n\t\t\tthis._updateFakeSelection( domRoot );\r\n\t\t}\r\n\t\t// There was a fake selection so remove it and update the DOM selection.\r\n\t\t// This is especially important on Android because otherwise IME will try to compose over the fake selection container.\r\n\t\telse if ( this._fakeSelectionContainer && this._fakeSelectionContainer.isConnected ) {\r\n\t\t\tthis._removeFakeSelection();\r\n\t\t\tthis._updateDomSelection( domRoot );\r\n\t\t}\r\n\t\t// Update the DOM selection in case of a plain selection change (no fake selection is involved).\r\n\t\t// On non-Android the whole rendering is disabled in composition mode (including DOM selection update),\r\n\t\t// but updating DOM selection should be also disabled on Android if in the middle of the composition\r\n\t\t// (to not interrupt it).\r\n\t\telse if ( !( this.isComposing && env.isAndroid ) ) {\r\n\t\t\tthis._updateDomSelection( domRoot );\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the fake selection.\r\n\t *\r\n\t * @param domRoot A valid DOM root where the fake selection container should be added.\r\n\t */\r\n\tprivate _updateFakeSelection( domRoot: DomElement ): void {\r\n\t\tconst domDocument = domRoot.ownerDocument;\r\n\r\n\t\tif ( !this._fakeSelectionContainer ) {\r\n\t\t\tthis._fakeSelectionContainer = createFakeSelectionContainer( domDocument );\r\n\t\t}\r\n\r\n\t\tconst container = this._fakeSelectionContainer;\r\n\r\n\t\t// Bind fake selection container with the current selection *position*.\r\n\t\tthis.domConverter.bindFakeSelection( container, this.selection );\r\n\r\n\t\tif ( !this._fakeSelectionNeedsUpdate( domRoot ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !container.parentElement || container.parentElement != domRoot ) {\r\n\t\t\tdomRoot.appendChild( container );\r\n\t\t}\r\n\r\n\t\tcontainer.textContent = this.selection.fakeSelectionLabel || '\\u00A0';\r\n\r\n\t\tconst domSelection = domDocument.getSelection()!;\r\n\t\tconst domRange = domDocument.createRange();\r\n\r\n\t\tdomSelection.removeAllRanges();\r\n\t\tdomRange.selectNodeContents( container );\r\n\t\tdomSelection.addRange( domRange );\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the DOM selection.\r\n\t *\r\n\t * @param domRoot A valid DOM root where the DOM selection should be rendered.\r\n\t */\r\n\tprivate _updateDomSelection( domRoot: DomElement ) {\r\n\t\tconst domSelection = domRoot.ownerDocument.defaultView!.getSelection()!;\r\n\r\n\t\t// Let's check whether DOM selection needs updating at all.\r\n\t\tif ( !this._domSelectionNeedsUpdate( domSelection ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Multi-range selection is not available in most browsers, and, at least in Chrome, trying to\r\n\t\t// set such selection, that is not continuous, throws an error. Because of that, we will just use anchor\r\n\t\t// and focus of view selection.\r\n\t\t// Since we are not supporting multi-range selection, we also do not need to check if proper editable is\r\n\t\t// selected. If there is any editable selected, it is okay (editable is taken from selection anchor).\r\n\t\tconst anchor = this.domConverter.viewPositionToDom( this.selection.anchor! )!;\r\n\t\tconst focus = this.domConverter.viewPositionToDom( this.selection.focus! )!;\r\n\r\n\t\t// @if CK_DEBUG_TYPING // if ( ( window as any ).logCKETyping ) {\r\n\t\t// @if CK_DEBUG_TYPING // \tconsole.info( '%c[Renderer]%c Update DOM selection:',\r\n\t\t// @if CK_DEBUG_TYPING // \t\t'color: green; font-weight: bold', '', anchor, focus\r\n\t\t// @if CK_DEBUG_TYPING // \t);\r\n\t\t// @if CK_DEBUG_TYPING // }\r\n\r\n\t\tdomSelection.setBaseAndExtent( anchor.parent, anchor.offset, focus.parent, focus.offset );\r\n\r\n\t\t// Firefox–specific hack (https://github.com/ckeditor/ckeditor5-engine/issues/1439).\r\n\t\tif ( env.isGecko ) {\r\n\t\t\tfixGeckoSelectionAfterBr( focus, domSelection );\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks whether a given DOM selection needs to be updated.\r\n\t *\r\n\t * @param domSelection The DOM selection to check.\r\n\t */\r\n\tprivate _domSelectionNeedsUpdate( domSelection: Selection ): boolean {\r\n\t\tif ( !this.domConverter.isDomSelectionCorrect( domSelection ) ) {\r\n\t\t\t// Current DOM selection is in incorrect position. We need to update it.\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst oldViewSelection = domSelection && this.domConverter.domSelectionToView( domSelection );\r\n\r\n\t\tif ( oldViewSelection && this.selection.isEqual( oldViewSelection ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// If selection is not collapsed, it does not need to be updated if it is similar.\r\n\t\tif ( !this.selection.isCollapsed && this.selection.isSimilar( oldViewSelection ) ) {\r\n\t\t\t// Selection did not changed and is correct, do not update.\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Selections are not similar.\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks whether the fake selection needs to be updated.\r\n\t *\r\n\t * @param domRoot A valid DOM root where a new fake selection container should be added.\r\n\t */\r\n\tprivate _fakeSelectionNeedsUpdate( domRoot: DomElement ): boolean {\r\n\t\tconst container = this._fakeSelectionContainer;\r\n\t\tconst domSelection = domRoot.ownerDocument.getSelection()!;\r\n\r\n\t\t// Fake selection needs to be updated if there's no fake selection container, or the container currently sits\r\n\t\t// in a different root.\r\n\t\tif ( !container || container.parentElement !== domRoot ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Make sure that the selection actually is within the fake selection.\r\n\t\tif ( domSelection.anchorNode !== container && !container.contains( domSelection.anchorNode ) ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn container.textContent !== this.selection.fakeSelectionLabel;\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the DOM selection.\r\n\t */\r\n\tprivate _removeDomSelection(): void {\r\n\t\tfor ( const doc of this.domDocuments ) {\r\n\t\t\tconst domSelection = doc.getSelection()!;\r\n\r\n\t\t\tif ( domSelection.rangeCount ) {\r\n\t\t\t\tconst activeDomElement = doc.activeElement!;\r\n\t\t\t\tconst viewElement = this.domConverter.mapDomToView( activeDomElement as DomElement );\r\n\r\n\t\t\t\tif ( activeDomElement && viewElement ) {\r\n\t\t\t\t\tdomSelection.removeAllRanges();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes the fake selection.\r\n\t */\r\n\tprivate _removeFakeSelection(): void {\r\n\t\tconst container = this._fakeSelectionContainer;\r\n\r\n\t\tif ( container ) {\r\n\t\t\tcontainer.remove();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if focus needs to be updated and possibly updates it.\r\n\t */\r\n\tprivate _updateFocus(): void {\r\n\t\tif ( this.isFocused ) {\r\n\t\t\tconst editable = this.selection.editableElement;\r\n\r\n\t\t\tif ( editable ) {\r\n\t\t\t\tthis.domConverter.focus( editable );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks if provided element is editable.\r\n */\r\nfunction isEditable( element: ViewElement ): boolean {\r\n\tif ( element.getAttribute( 'contenteditable' ) == 'false' ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconst parent = element.findAncestor( element => element.hasAttribute( 'contenteditable' ) );\r\n\r\n\treturn !parent || parent.getAttribute( 'contenteditable' ) == 'true';\r\n}\r\n\r\n/**\r\n * Adds inline filler at a given position.\r\n *\r\n * The position can be given as an array of DOM nodes and an offset in that array,\r\n * or a DOM parent element and an offset in that element.\r\n *\r\n * @returns The DOM text node that contains an inline filler.\r\n */\r\nfunction addInlineFiller( domDocument: DomDocument, domParentOrArray: DomNode | Array, offset: number ): DomText {\r\n\tconst childNodes = domParentOrArray instanceof Array ? domParentOrArray : domParentOrArray.childNodes;\r\n\tconst nodeAfterFiller = childNodes[ offset ];\r\n\r\n\tif ( isText( nodeAfterFiller ) ) {\r\n\t\tnodeAfterFiller.data = INLINE_FILLER + nodeAfterFiller.data;\r\n\r\n\t\treturn nodeAfterFiller;\r\n\t} else {\r\n\t\tconst fillerNode = domDocument.createTextNode( INLINE_FILLER );\r\n\r\n\t\tif ( Array.isArray( domParentOrArray ) ) {\r\n\t\t\t( childNodes as Array ).splice( offset, 0, fillerNode );\r\n\t\t} else {\r\n\t\t\tinsertAt( domParentOrArray as DomElement, offset, fillerNode );\r\n\t\t}\r\n\r\n\t\treturn fillerNode;\r\n\t}\r\n}\r\n\r\n/**\r\n * Whether two DOM nodes should be considered as similar.\r\n * Nodes are considered similar if they have the same tag name.\r\n */\r\nfunction areSimilarElements( node1: DomNode, node2: DomNode ): boolean {\r\n\treturn isNode( node1 ) && isNode( node2 ) &&\r\n\t\t!isText( node1 ) && !isText( node2 ) &&\r\n\t\t!isComment( node1 ) && !isComment( node2 ) &&\r\n\t\t( node1 as DomElement ).tagName.toLowerCase() === ( node2 as DomElement ).tagName.toLowerCase();\r\n}\r\n\r\n/**\r\n * Whether two DOM nodes are text nodes.\r\n */\r\nfunction areTextNodes( node1: DomNode, node2: DomNode ): boolean {\r\n\treturn isNode( node1 ) && isNode( node2 ) &&\r\n\t\tisText( node1 ) && isText( node2 );\r\n}\r\n\r\n/**\r\n * Whether two dom nodes should be considered as the same.\r\n * Two nodes which are considered the same are:\r\n *\r\n * * Text nodes with the same text.\r\n * * Element nodes represented by the same object.\r\n * * Two block filler elements.\r\n *\r\n * @param blockFillerMode Block filler mode, see {@link module:engine/view/domconverter~DomConverter#blockFillerMode}.\r\n */\r\nfunction sameNodes( domConverter: DomConverter, actualDomChild: DomNode, expectedDomChild: DomNode ): boolean {\r\n\t// Elements.\r\n\tif ( actualDomChild === expectedDomChild ) {\r\n\t\treturn true;\r\n\t}\r\n\t// Texts.\r\n\telse if ( isText( actualDomChild ) && isText( expectedDomChild ) ) {\r\n\t\treturn actualDomChild.data === expectedDomChild.data;\r\n\t}\r\n\t// Block fillers.\r\n\telse if ( domConverter.isBlockFiller( actualDomChild ) &&\r\n\t\tdomConverter.isBlockFiller( expectedDomChild ) ) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// Not matching types.\r\n\treturn false;\r\n}\r\n\r\n/**\r\n * The following is a Firefox–specific hack (https://github.com/ckeditor/ckeditor5-engine/issues/1439).\r\n * When the native DOM selection is at the end of the block and preceded by
                e.g.\r\n *\r\n * ```html\r\n *

                foo
                []

                \r\n * ```\r\n *\r\n * which happens a lot when using the soft line break, the browser fails to (visually) move the\r\n * caret to the new line. A quick fix is as simple as force–refreshing the selection with the same range.\r\n */\r\nfunction fixGeckoSelectionAfterBr( focus: ReturnType, domSelection: DomSelection ) {\r\n\tlet parent = focus!.parent;\r\n\tlet offset = focus!.offset;\r\n\r\n\tif ( isText( parent ) && isInlineFiller( parent ) ) {\r\n\t\toffset = indexOf( parent ) + 1;\r\n\t\tparent = parent.parentNode!;\r\n\t}\r\n\r\n\t// This fix works only when the focus point is at the very end of an element.\r\n\t// There is no point in running it in cases unrelated to the browser bug.\r\n\tif ( parent.nodeType != Node.ELEMENT_NODE || offset != parent.childNodes.length - 1 ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst childAtOffset = parent.childNodes[ offset ];\r\n\r\n\t// To stay on the safe side, the fix being as specific as possible, it targets only the\r\n\t// selection which is at the very end of the element and preceded by
                .\r\n\tif ( childAtOffset && ( childAtOffset as DomElement ).tagName == 'BR' ) {\r\n\t\tdomSelection.addRange( domSelection.getRangeAt( 0 ) );\r\n\t}\r\n}\r\n\r\nfunction filterOutFakeSelectionContainer( domChildList: Array | NodeList, fakeSelectionContainer: DomElement | null ) {\r\n\tconst childList = Array.from( domChildList );\r\n\r\n\tif ( childList.length == 0 || !fakeSelectionContainer ) {\r\n\t\treturn childList;\r\n\t}\r\n\r\n\tconst last = childList[ childList.length - 1 ];\r\n\r\n\tif ( last == fakeSelectionContainer ) {\r\n\t\tchildList.pop();\r\n\t}\r\n\r\n\treturn childList;\r\n}\r\n\r\n/**\r\n * Creates a fake selection container for a given document.\r\n */\r\nfunction createFakeSelectionContainer( domDocument: DomDocument ): DomElement {\r\n\tconst container = domDocument.createElement( 'div' );\r\n\r\n\tcontainer.className = 'ck-fake-selection-container';\r\n\r\n\tObject.assign( container.style, {\r\n\t\tposition: 'fixed',\r\n\t\ttop: 0,\r\n\t\tleft: '-9999px',\r\n\t\t// See https://github.com/ckeditor/ckeditor5/issues/752.\r\n\t\twidth: '42px'\r\n\t} );\r\n\r\n\t// Fill it with a text node so we can update it later.\r\n\tcontainer.textContent = '\\u00A0';\r\n\r\n\treturn container;\r\n}\r\n\r\n// @if CK_DEBUG_TYPING // function _escapeTextNodeData( text ) {\r\n// @if CK_DEBUG_TYPING // \tconst escapedText = text\r\n// @if CK_DEBUG_TYPING // \t\t.replace( /&/g, '&' )\r\n// @if CK_DEBUG_TYPING // \t\t.replace( /\\u00A0/g, ' ' )\r\n// @if CK_DEBUG_TYPING // \t\t.replace( /\\u2060/g, '⁠' );\r\n// @if CK_DEBUG_TYPING //\r\n// @if CK_DEBUG_TYPING // \treturn `\"${ escapedText }\"`;\r\n// @if CK_DEBUG_TYPING // }\r\n","/**\r\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\r\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\r\n */\r\n\r\n/**\r\n * @module engine/view/domconverter\r\n */\r\n\r\n/* globals Node, NodeFilter, DOMParser */\r\n\r\nimport ViewText from './text.js';\r\nimport ViewElement from './element.js';\r\nimport ViewUIElement from './uielement.js';\r\nimport ViewPosition from './position.js';\r\nimport ViewRange from './range.js';\r\nimport ViewSelection from './selection.js';\r\nimport ViewDocumentFragment from './documentfragment.js';\r\nimport ViewTreeWalker from './treewalker.js';\r\nimport { default as Matcher, type MatcherPattern } from './matcher.js';\r\nimport {\r\n\tBR_FILLER, INLINE_FILLER_LENGTH, NBSP_FILLER, MARKED_NBSP_FILLER,\r\n\tgetDataWithoutFiller, isInlineFiller, startsWithFiller\r\n} from './filler.js';\r\n\r\nimport {\r\n\tglobal,\r\n\tlogWarning,\r\n\tindexOf,\r\n\tgetAncestors,\r\n\tisText,\r\n\tisComment,\r\n\tisValidAttributeName,\r\n\tfirst,\r\n\tenv\r\n} from '@ckeditor/ckeditor5-utils';\r\n\r\nimport type ViewNode from './node.js';\r\nimport type Document from './document.js';\r\nimport type DocumentSelection from './documentselection.js';\r\nimport type EditableElement from './editableelement.js';\r\nimport type ViewTextProxy from './textproxy.js';\r\nimport type ViewRawElement from './rawelement.js';\r\n\r\ntype DomNode = globalThis.Node;\r\ntype DomElement = globalThis.HTMLElement;\r\ntype DomDocument = globalThis.Document;\r\ntype DomDocumentFragment = globalThis.DocumentFragment;\r\ntype DomComment = globalThis.Comment;\r\ntype DomRange = globalThis.Range;\r\ntype DomText = globalThis.Text;\r\ntype DomSelection = globalThis.Selection;\r\n\r\nconst BR_FILLER_REF = BR_FILLER( global.document ); // eslint-disable-line new-cap\r\nconst NBSP_FILLER_REF = NBSP_FILLER( global.document ); // eslint-disable-line new-cap\r\nconst MARKED_NBSP_FILLER_REF = MARKED_NBSP_FILLER( global.document ); // eslint-disable-line new-cap\r\nconst UNSAFE_ATTRIBUTE_NAME_PREFIX = 'data-ck-unsafe-attribute-';\r\nconst UNSAFE_ELEMENT_REPLACEMENT_ATTRIBUTE = 'data-ck-unsafe-element';\r\n\r\n/**\r\n * `DomConverter` is a set of tools to do transformations between DOM nodes and view nodes. It also handles\r\n * {@link module:engine/view/domconverter~DomConverter#bindElements bindings} between these nodes.\r\n *\r\n * An instance of the DOM converter is available under\r\n * {@link module:engine/view/view~View#domConverter `editor.editing.view.domConverter`}.\r\n *\r\n * The DOM converter does not check which nodes should be rendered (use {@link module:engine/view/renderer~Renderer}), does not keep the\r\n * state of a tree nor keeps the synchronization between the tree view and the DOM tree (use {@link module:engine/view/document~Document}).\r\n *\r\n * The DOM converter keeps DOM elements to view element bindings, so when the converter gets destroyed, the bindings are lost.\r\n * Two converters will keep separate binding maps, so one tree view can be bound with two DOM trees.\r\n */\r\nexport default class DomConverter {\r\n\tpublic readonly document: Document;\r\n\r\n\t/**\r\n\t * Whether to leave the View-to-DOM conversion result unchanged or improve editing experience by filtering out interactive data.\r\n\t */\r\n\tpublic readonly renderingMode: 'data' | 'editing';\r\n\r\n\t/**\r\n\t * The mode of a block filler used by the DOM converter.\r\n\t */\r\n\tpublic blockFillerMode: BlockFillerMode;\r\n\r\n\t/**\r\n\t * Elements which are considered pre-formatted elements.\r\n\t */\r\n\tpublic readonly preElements: Array;\r\n\r\n\t/**\r\n\t * Elements which are considered block elements (and hence should be filled with a\r\n\t * {@link #isBlockFiller block filler}).\r\n\t *\r\n\t * Whether an element is considered a block element also affects handling of trailing whitespaces.\r\n\t *\r\n\t * You can extend this array if you introduce support for block elements which are not yet recognized here.\r\n\t */\r\n\tpublic readonly blockElements: Array;\r\n\r\n\t/**\r\n\t * A list of elements that exist inline (in text) but their inner structure cannot be edited because\r\n\t * of the way they are rendered by the browser. They are mostly HTML form elements but there are other\r\n\t * elements such as `` or `