@ncino/web-components 5.0.0-preview.1 → 5.0.0-preview.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/dist/_virtual/_commonjsHelpers.js +1 -1
  2. package/dist/_virtual/index_html.js +1 -1
  3. package/dist/_virtual/index_react.js +1 -1
  4. package/dist/_virtual/preload-helper.js +1 -1
  5. package/dist/assets/node_modules/.pnpm/ckeditor5@45.2.1/node_modules/ckeditor5/dist/ckeditor5.css +1 -1
  6. package/dist/components/accordion/gator/base/accordion.gator.js +6 -6
  7. package/dist/components/accordion/gator/group/accordion-group.gator.js +2 -2
  8. package/dist/components/alert/gator/base/alert.gator.js +2 -2
  9. package/dist/components/alert/gator/subtitle/alert-subtitle.gator.js +2 -2
  10. package/dist/components/alert/gator/title/alert-title.gator.js +2 -2
  11. package/dist/components/avatar/gator/avatar.gator.js +2 -2
  12. package/dist/components/badge/gator/badge.gator.js +2 -2
  13. package/dist/components/banner/gator/banner.gator.js +2 -2
  14. package/dist/components/boolean/boolean.gator.js +6 -6
  15. package/dist/components/breadcrumbs/gator/breadcrumb/breadcrumb.gator.js +2 -2
  16. package/dist/components/button/gator/button.gator.js +4 -4
  17. package/dist/components/button-group/gator/button-group.gator.js +2 -2
  18. package/dist/components/card/gator/footer/card-footer.gator.js +2 -2
  19. package/dist/components/card/gator/header/card-header.gator.js +2 -2
  20. package/dist/components/checkbox/checkbox.gator.js +5 -5
  21. package/dist/components/checkbox-group/checkbox-group.gator.js +8 -8
  22. package/dist/components/chip/chip.js +1 -1
  23. package/dist/components/chip/gator/chip.gator.js +15 -5
  24. package/dist/components/combobox/base/combobox.js +1 -1
  25. package/dist/components/combobox/base/combobox.slds.js +13 -13
  26. package/dist/components/date-picker/base/gator/datepicker.gator.js +18 -18
  27. package/dist/components/date-picker/year-month-selector/year-month-selector.gator.js +2 -2
  28. package/dist/components/headline-card/gator/headline-card.gator.js +2 -2
  29. package/dist/components/icon/gator/icon.gator.js +2 -2
  30. package/dist/components/illustration/gator/illustration.gator.js +2 -2
  31. package/dist/components/input/base/input-base.gator.js +1 -1
  32. package/dist/components/input/gator/dropdown/input-dropdown.gator.js +11 -11
  33. package/dist/components/input/gator/input-currency/input-currency.gator.js +2 -2
  34. package/dist/components/input/gator/input-date/input-date.gator.js +15 -15
  35. package/dist/components/input/gator/input-file/input-file.gator.js +3 -3
  36. package/dist/components/input/gator/input-masked/input-masked.gator.js +1 -1
  37. package/dist/components/input/gator/input-phone/input-phone.gator.js +2 -2
  38. package/dist/components/input/gator/input-search/input-search.gator.js +2 -2
  39. package/dist/components/input/gator/input-text/input-text.gator.js +1 -1
  40. package/dist/components/input/gator/input-time/input-time.gator.js +2 -2
  41. package/dist/components/list/gator/list/list.gator.js +2 -2
  42. package/dist/components/list/gator/list-item/list-item.gator.js +6 -6
  43. package/dist/components/menu/base/gator/menu.gator.js +3 -3
  44. package/dist/components/menu/base/slds/menu.slds.js +2 -2
  45. package/dist/components/menu/menu-item/gator/menu-item.gator.js +2 -2
  46. package/dist/components/menu/menu-submenu/menu-submenu.js +1 -1
  47. package/dist/components/modal/gator/modal.gator.js +38 -39
  48. package/dist/components/page-header/gator/page-header.gator.js +2 -2
  49. package/dist/components/panel/gator/panel.gator.js +13 -13
  50. package/dist/components/panel/gator/panel.storybook-test.js +1 -1
  51. package/dist/components/pill/pill.slds.js +3 -3
  52. package/dist/components/popover/gator/popover.gator.js +10 -10
  53. package/dist/components/popover/popover.js +1 -1
  54. package/dist/components/radio/radio.gator.js +2 -2
  55. package/dist/components/radio-group/radio-group.gator.js +2 -2
  56. package/dist/components/selection-box-group/selection-box-group.gator.js +5 -5
  57. package/dist/components/selector/gator/selector.gator.js +2 -2
  58. package/dist/components/switch/gator/switch.gator.js +2 -2
  59. package/dist/components/table/gator/table-bulk-controls/table-bulk-controls.gator.js +16 -0
  60. package/dist/components/table/gator/table.gator.js +55 -36
  61. package/dist/components/tabs/gator/tabset/tabset.gator.js +3 -3
  62. package/dist/components/text-detail/gator/text-detail.gator.js +17 -18
  63. package/dist/components/time-picker/gator/time-picker.gator.js +19 -19
  64. package/dist/components/toast/gator/base/toast.gator.js +8 -9
  65. package/dist/components/toast/gator/subtitle/toast-subtitle.gator.js +2 -2
  66. package/dist/components/toast/gator/title/toast-title.gator.js +2 -2
  67. package/dist/components/toast/toast.js +1 -1
  68. package/dist/components/toast-container/gator/toast-container.gator.js +18 -0
  69. package/dist/components/toast-container/index.js +1 -0
  70. package/dist/components/toaster/gator/toaster.gator.js +5 -0
  71. package/dist/components/toaster/index.js +1 -0
  72. package/dist/components/tooltip/tooltip.js +1 -1
  73. package/dist/index.gator.js +1 -1
  74. package/dist/index.js +1 -1
  75. package/dist/index.services.js +1 -0
  76. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-autosave@45.2.1/node_modules/@ckeditor/ckeditor5-autosave/dist/index.js +2 -2
  77. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-basic-styles@45.2.1/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js +2 -2
  78. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-clipboard@45.2.1/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js +10 -10
  79. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-cloud-services@45.2.1/node_modules/@ckeditor/ckeditor5-cloud-services/dist/index.js +2 -2
  80. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-code-block@45.2.1/node_modules/@ckeditor/ckeditor5-code-block/dist/index.js +5 -5
  81. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js +2 -2
  82. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-editor-classic@45.2.1/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js +2 -2
  83. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js +12 -12
  84. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-find-and-replace@45.2.1/node_modules/@ckeditor/ckeditor5-find-and-replace/dist/index.js +3 -3
  85. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-font@45.2.1/node_modules/@ckeditor/ckeditor5-font/dist/index.js +3 -3
  86. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-heading@45.2.1/node_modules/@ckeditor/ckeditor5-heading/dist/index.js +3 -3
  87. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-html-embed@45.2.1/node_modules/@ckeditor/ckeditor5-html-embed/dist/index.js +2 -2
  88. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-html-support@45.2.1/node_modules/@ckeditor/ckeditor5-html-support/dist/index.js +6 -6
  89. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-image@45.2.1/node_modules/@ckeditor/ckeditor5-image/dist/index.js +4 -4
  90. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-indent@45.2.1/node_modules/@ckeditor/ckeditor5-indent/dist/index.js +4 -4
  91. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-link@45.2.1/node_modules/@ckeditor/ckeditor5-link/dist/index.js +2 -2
  92. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-list@45.2.1/node_modules/@ckeditor/ckeditor5-list/dist/index.js +5 -5
  93. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-markdown-gfm@45.2.1/node_modules/@ckeditor/ckeditor5-markdown-gfm/dist/index.js +4 -4
  94. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-media-embed@45.2.1/node_modules/@ckeditor/ckeditor5-media-embed/dist/index.js +2 -2
  95. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-paragraph@45.2.1/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +2 -2
  96. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-paste-from-office@45.2.1/node_modules/@ckeditor/ckeditor5-paste-from-office/dist/index.js +9 -9
  97. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-source-editing@45.2.1/node_modules/@ckeditor/ckeditor5-source-editing/dist/index.js +2 -2
  98. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-special-characters@45.2.1/node_modules/@ckeditor/ckeditor5-special-characters/dist/index.js +2 -2
  99. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-style@45.2.1/node_modules/@ckeditor/ckeditor5-style/dist/index.js +2 -2
  100. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-table@45.2.1/node_modules/@ckeditor/ckeditor5-table/dist/index.js +6 -6
  101. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-typing@45.2.1/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +4 -4
  102. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +10 -10
  103. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-undo@45.2.1/node_modules/@ckeditor/ckeditor5-undo/dist/index.js +2 -2
  104. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-upload@45.2.1/node_modules/@ckeditor/ckeditor5-upload/dist/index.js +2 -2
  105. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js +38 -38
  106. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-watchdog@45.2.1/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js +3 -3
  107. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-widget@45.2.1/node_modules/@ckeditor/ckeditor5-widget/dist/index.js +2 -2
  108. package/dist/node_modules/.pnpm/@deltablot_dropzone@7.3.1/node_modules/@deltablot/dropzone/dist/dropzone.js +1 -1
  109. package/dist/node_modules/.pnpm/@fastify_busboy@2.1.1/node_modules/@fastify/busboy/lib/main.js +1 -1
  110. package/dist/node_modules/.pnpm/@figma_code-connect@1.3.4/node_modules/@figma/code-connect/dist/common/fetch.js +1 -0
  111. package/dist/node_modules/.pnpm/@figma_code-connect@1.3.4/node_modules/@figma/code-connect/dist/connect/figma_rest_api.js +1 -0
  112. package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/connect/helpers.js +1 -1
  113. package/dist/node_modules/.pnpm/@figma_code-connect@1.3.4/node_modules/@figma/code-connect/package.json.js +1 -0
  114. package/dist/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +1 -1
  115. package/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.4/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +1 -0
  116. package/dist/node_modules/.pnpm/@lit_reactive-element@2.1.0/node_modules/@lit/reactive-element/reactive-element.js +2 -2
  117. package/dist/node_modules/.pnpm/@storybook_core@8.6.14_prettier@3.6.2_storybook@8.6.14_prettier@3.6.2_/node_modules/@storybook/core/dist/channels/index.js +9 -9
  118. package/dist/node_modules/.pnpm/@storybook_core@8.6.14_prettier@3.6.2_storybook@8.6.14_prettier@3.6.2_/node_modules/@storybook/core/dist/csf/index.js +1 -1
  119. package/dist/node_modules/.pnpm/@storybook_core@8.6.14_prettier@3.6.2_storybook@8.6.14_prettier@3.6.2_/node_modules/@storybook/core/dist/preview-api/index.js +22 -22
  120. package/dist/node_modules/.pnpm/@storybook_instrumenter@8.6.14_storybook@8.6.14_prettier@3.6.2_/node_modules/@storybook/instrumenter/dist/index.js +36 -36
  121. package/dist/node_modules/.pnpm/@storybook_test@8.6.14_storybook@8.6.14_prettier@3.6.2_/node_modules/@storybook/test/dist/index.js +111 -111
  122. package/dist/node_modules/.pnpm/@vitest_browser@3.2.4_msw@2.7.3_@types_node@24.0.10_typescript@5.8.3__playwright@1.53.2_77c47ac19cbe97978028e1e5ac862536/node_modules/@vitest/browser/context.js +1 -0
  123. package/dist/node_modules/.pnpm/@vitest_expect@3.2.4/node_modules/@vitest/expect/dist/index.js +8 -8
  124. package/dist/node_modules/.pnpm/@vitest_pretty-format@3.2.4/node_modules/@vitest/pretty-format/dist/index.js +2 -2
  125. package/dist/node_modules/.pnpm/@vitest_runner@3.2.4/node_modules/@vitest/runner/dist/chunk-hooks.js +5 -5
  126. package/dist/node_modules/.pnpm/@vitest_snapshot@3.2.4/node_modules/@vitest/snapshot/dist/index.js +12 -12
  127. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/diff.js +21 -21
  128. package/dist/node_modules/.pnpm/@vitest_utils@3.2.4/node_modules/@vitest/utils/dist/error.js +2 -2
  129. package/dist/node_modules/.pnpm/axe-core@4.10.3/node_modules/axe-core/axe.js +4 -4
  130. package/dist/node_modules/.pnpm/chai@5.2.0/node_modules/chai/chai.js +3 -3
  131. package/dist/node_modules/.pnpm/es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/_internal/isPrototype.js +1 -1
  132. package/dist/node_modules/.pnpm/es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.js +1 -1
  133. package/dist/node_modules/.pnpm/es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/object/get.js +1 -1
  134. package/dist/node_modules/.pnpm/es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/object/unset.js +1 -1
  135. package/dist/node_modules/.pnpm/es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/predicate/isPlainObject.js +1 -1
  136. package/dist/node_modules/.pnpm/es-toolkit@1.32.0/node_modules/es-toolkit/dist/function/debounce.js +1 -1
  137. package/dist/node_modules/.pnpm/es-toolkit@1.32.0/node_modules/es-toolkit/dist/object/cloneDeepWith.js +1 -1
  138. package/dist/node_modules/.pnpm/lit-element@4.2.0/node_modules/lit-element/lit-element.js +2 -2
  139. package/dist/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/async-directive.js +1 -1
  140. package/dist/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/directive-helpers.js +2 -2
  141. package/dist/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/directives/class-map.js +2 -2
  142. package/dist/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/directives/ref.js +2 -2
  143. package/dist/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/directives/repeat.js +5 -0
  144. package/dist/node_modules/.pnpm/lit-html@3.3.0/node_modules/lit-html/lit-html.js +3 -3
  145. package/dist/node_modules/.pnpm/magic-string@0.30.17/node_modules/magic-string/dist/magic-string.es.js +1 -1
  146. package/dist/node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js +1 -1
  147. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/cache/cache.js +1 -1
  148. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/cache/cachestorage.js +1 -1
  149. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/cookies/parse.js +1 -1
  150. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/constants.js +1 -1
  151. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/headers.js +1 -1
  152. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/index.js +1 -1
  153. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/request.js +1 -1
  154. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/response.js +1 -1
  155. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/util.js +2 -2
  156. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/fetch/webidl.js +1 -1
  157. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/websocket/connection.js +1 -1
  158. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/websocket/events.js +1 -1
  159. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/websocket/frame.js +1 -1
  160. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/websocket/receiver.js +1 -1
  161. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/websocket/util.js +1 -1
  162. package/dist/node_modules/.pnpm/undici@5.29.0/node_modules/undici/lib/websocket/websocket.js +1 -1
  163. package/dist/node_modules/.pnpm/vitest@3.2.4_@types_debug@4.1.12_@types_node@24.0.10_@vitest_browser@3.2.4_@vitest_ui@3_8c34ee540b1f52c214debce201d1e515/node_modules/vitest/dist/chunks/utils.XdZDrNZV.js +1 -1
  164. package/dist/node_modules/.pnpm/vitest@3.2.4_@types_debug@4.1.12_@types_node@24.0.10_@vitest_browser@3.2.4_@vitest_ui@3_8c34ee540b1f52c214debce201d1e515/node_modules/vitest/dist/chunks/vi.bdSIJ99Y.js +8 -8
  165. package/dist/packages/web-components/src/components/accordion/gator/base/accordion.gator.scss.js +1 -1
  166. package/dist/packages/web-components/src/components/accordion/gator/group/accordion-group.gator.scss.js +1 -1
  167. package/dist/packages/web-components/src/components/button/gator/button.gator.scss.js +1 -1
  168. package/dist/packages/web-components/src/components/button-card/gator/button-card.gator.scss.js +1 -1
  169. package/dist/packages/web-components/src/components/chip/gator/chip.gator.scss.js +1 -1
  170. package/dist/packages/web-components/src/components/modal/gator/modal.gator.scss.js +1 -1
  171. package/dist/packages/web-components/src/components/switch/gator/switch.gator.scss.js +1 -1
  172. package/dist/packages/web-components/src/components/table/gator/table-bulk-controls/table-bulk-controls.gator.scss.js +1 -0
  173. package/dist/packages/web-components/src/components/text-detail/gator/text-detail.gator.scss.js +1 -1
  174. package/dist/packages/web-components/src/components/toast/gator/base/toast.gator.scss.js +1 -1
  175. package/dist/packages/web-components/src/components/toast-container/gator/toast-container.gator.scss.js +1 -0
  176. package/dist/packages/web-components/src/components/toaster/gator/toaster.gator.scss.js +1 -0
  177. package/dist/packages/web-components/src/index.slds.scss.js +1 -1
  178. package/dist/services/toaster-service.js +1 -0
  179. package/dist/types/components/accordion/gator/group/accordion-group.gator.d.ts +5 -0
  180. package/dist/types/components/chip/chip.d.ts +10 -0
  181. package/dist/types/components/chip/gator/chip.gator.d.ts +1 -0
  182. package/dist/types/components/modal/gator/modal.gator.d.ts +1 -1
  183. package/dist/types/components/table/gator/table-bulk-controls/table-bulk-controls.gator.d.ts +29 -0
  184. package/dist/types/components/table/gator/table-bulk-controls/table-bulk-controls.gator.test.d.ts +0 -0
  185. package/dist/types/components/table/gator/table.gator.d.ts +9 -0
  186. package/dist/types/components/text-detail/gator/text-detail.gator.d.ts +4 -2
  187. package/dist/types/components/toast/toast.d.ts +14 -0
  188. package/dist/types/components/toast-container/gator/toast-container.gator.d.ts +15 -0
  189. package/dist/types/components/toast-container/gator/toast-container.gator.test.d.ts +0 -0
  190. package/dist/types/components/toast-container/index.d.ts +1 -0
  191. package/dist/types/components/toaster/gator/toaster.gator.d.ts +32 -0
  192. package/dist/types/components/toaster/gator/toaster.gator.test.d.ts +0 -0
  193. package/dist/types/components/toaster/index.d.ts +1 -0
  194. package/dist/types/index.d.ts +2 -0
  195. package/dist/types/index.gator.d.ts +2 -0
  196. package/dist/types/index.services.d.ts +1 -0
  197. package/dist/types/services/toaster-service.d.ts +117 -0
  198. package/dist/types/services/toaster-service.test.d.ts +1 -0
  199. package/dist/utils/accessibility-utils.js +1 -1
  200. package/dist/utils/datatestid-utils.js +1 -1
  201. package/dist/utils/lightdom-utils.js +1 -1
  202. package/dist/utils/vitest-a11y-utils.js +1 -1
  203. package/dist/utils/vitest-utils.js +1 -1
  204. package/package.json +15 -11
  205. package/web-types.json +286 -113
  206. package/dist/_virtual/sourcemap-codec.umd.js +0 -1
  207. package/dist/_virtual/sourcemap-codec.umd2.js +0 -1
  208. package/dist/node_modules/.pnpm/@figma_code-connect@1.3.3/node_modules/@figma/code-connect/dist/common/fetch.js +0 -1
  209. package/dist/node_modules/.pnpm/@figma_code-connect@1.3.3/node_modules/@figma/code-connect/dist/connect/figma_rest_api.js +0 -1
  210. package/dist/node_modules/.pnpm/@figma_code-connect@1.3.3/node_modules/@figma/code-connect/package.json.js +0 -1
  211. package/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.0/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js +0 -1
  212. package/dist/node_modules/.pnpm/@vitest_browser@3.2.4_msw@2.7.3_@types_node@24.0.10_typescript@5.8.3__playwright@1.53.1_5fd2997ee9a97429a51e07bc2023c338/node_modules/@vitest/browser/context.js +0 -1
  213. /package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/client/external.js +0 -0
  214. /package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/client/figma_client.js +0 -0
  215. /package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/common/logging.js +0 -0
  216. /package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/common/updates.js +0 -0
  217. /package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/connect/external_types.js +0 -0
  218. /package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/connect/index_common.js +0 -0
  219. /package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/html/external.js +0 -0
  220. /package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/html/index_html.js +0 -0
  221. /package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/html/template_literal.js +0 -0
  222. /package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/react/external.js +0 -0
  223. /package/dist/node_modules/.pnpm/{@figma_code-connect@1.3.3 → @figma_code-connect@1.3.4}/node_modules/@figma/code-connect/dist/react/index_react.js +0 -0
@@ -1,4 +1,4 @@
1
- var me=Object.defineProperty;var fe=(l,o,e)=>o in l?me(l,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):l[o]=e;var d=(l,o,e)=>fe(l,typeof o!="symbol"?o+"":o,e);import{Plugin as V,Command as ie}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Delete as ke,findAttributeRange as x,TextWatcher as ge,getLastTextLine as we,TwoStepCaretMovement as G,Input as be,inlineHighlight as pe}from"../../../../../@ckeditor_ckeditor5-typing@45.2.1/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{ClipboardPipeline as _e}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.1/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{env as Ve,keyCodes as ve,Collection as se,first as ne,toMap as S,ObservableMixin as Le,FocusTracker as B,KeystrokeHandler as F,diff as Ie}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{ClickObserver as ye,LivePosition as W,Matcher as Te}from"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{IconUnlink as Pe,IconPencil as Ee,IconSettings as Ce,IconLink as oe,IconPreviousArrow as H,IconNextArrow as Ae}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ContextualBalloon as X,ToolbarView as xe,CssTransitionDisablerMixin as j,ButtonView as p,SwitchButtonView as Se,MenuBarMenuListItemButtonView as Be,clickOutsideHandler as Fe,View as y,ViewCollection as R,FocusCycler as D,ListView as U,ListItemView as O,FormHeaderView as M,IconView as He,submitHandler as Re,LabeledFieldView as J,createLabeledInputText as Y,FormRowView as Q}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{isWidget as De}from"../../../../../@ckeditor_ckeditor5-widget@45.2.1/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{upperFirst as Ue}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/string/upperFirst.js";/**
1
+ import{Plugin as p,Command as ee}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Delete as ue,findAttributeRange as C,TextWatcher as he,getLastTextLine as me,TwoStepCaretMovement as K,Input as fe,inlineHighlight as ke}from"../../../../../@ckeditor_ckeditor5-typing@45.2.1/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{ClipboardPipeline as ge}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.1/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{env as we,keyCodes as be,Collection as te,first as ie,toMap as A,ObservableMixin as pe,FocusTracker as x,KeystrokeHandler as S,diff as _e}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{ClickObserver as Ve,LivePosition as $,Matcher as ve}from"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{IconUnlink as Le,IconPencil as Ie,IconSettings as ye,IconLink as se,IconPreviousArrow as B,IconNextArrow as Te}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ContextualBalloon as G,ToolbarView as Pe,CssTransitionDisablerMixin as W,ButtonView as w,SwitchButtonView as Ee,MenuBarMenuListItemButtonView as Ce,clickOutsideHandler as Ae,View as L,ViewCollection as F,FocusCycler as H,ListView as R,ListItemView as D,FormHeaderView as U,IconView as xe,submitHandler as Se,LabeledFieldView as X,createLabeledInputText as j,FormRowView as J}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{isWidget as Be}from"../../../../../@ckeditor_ckeditor5-widget@45.2.1/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{upperFirst as Fe}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/string/upperFirst.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */class Oe{constructor(){d(this,"_definitions",new Set)}get length(){return this._definitions.size}add(o){Array.isArray(o)?o.forEach(e=>this._definitions.add(e)):this._definitions.add(o)}getDispatcher(){return o=>{o.on("attribute:linkHref",(e,t,i)=>{if(!i.consumable.test(t.item,"attribute:linkHref")||!(t.item.is("selection")||i.schema.isInline(t.item)))return;const s=i.writer,n=s.document.selection;for(const r of this._definitions){const c=s.createAttributeElement("a",r.attributes,{priority:5});r.classes&&s.addClass(r.classes,c);for(const a in r.styles)s.setStyle(a,r.styles[a],c);s.setCustomProperty("link",!0,c),r.callback(t.attributeNewValue)?t.item.is("selection")?s.wrap(n.getFirstRange(),c):s.wrap(i.mapper.toViewRange(t.range),c):s.unwrap(i.mapper.toViewRange(t.range),c)}},{priority:"high"})}}getDispatcherForLinkedImage(){return o=>{o.on("attribute:linkHref:imageBlock",(e,t,{writer:i,mapper:s})=>{const n=s.toViewElement(t.item),r=Array.from(n.getChildren()).find(c=>c.is("element","a"));if(r)for(const c of this._definitions){const a=S(c.attributes);if(c.callback(t.attributeNewValue)){for(const[u,m]of a)u==="class"?i.addClass(m,r):i.setAttribute(u,m,r);c.classes&&i.addClass(c.classes,r);for(const u in c.styles)i.setStyle(u,c.styles[u],r)}else{for(const[u,m]of a)u==="class"?i.removeClass(m,r):i.removeAttribute(u,r);c.classes&&i.removeClass(c.classes,r);for(const u in c.styles)i.removeStyle(u,r)}}})}}}const Me=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Ne="^(?:(?:<protocols>):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))",qe=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,ze=/^((\w+:(\/{2,})?)|(\W))/i,Ke=["https?","ftps?","mailto"],I="Ctrl+K";function $e(l){return l.is("attributeElement")&&!!l.getCustomProperty("link")}function Z(l,{writer:o}){const e=o.createAttributeElement("a",{href:l},{priority:5});return o.setCustomProperty("link",!0,e),e}function re(l,o=Ke){const e=String(l),t=o.join("|"),i=new RegExp(`${Ne.replace("<protocols>",t)}`,"i");return Ge(e,i)?e:"#"}function Ge(l,o){return!!l.replace(Me,"").match(o)}function We(l,o){const e={"Open in a new tab":l("Open in a new tab"),Downloadable:l("Downloadable")};return o.forEach(t=>("label"in t&&e[t.label]&&(t.label=e[t.label]),t)),o}function Xe(l){const o=[];if(l)for(const[e,t]of Object.entries(l)){const i=Object.assign({},t,{id:`link${Ue(e)}`});o.push(i)}return o}function C(l,o){return l?o.checkAttribute(l.name,"linkHref"):!1}function je(l){return qe.test(l)}function N(l,o){const e=je(l)?"mailto:":o,t=!!e&&!le(l);return l&&t?e+l:l}function le(l){return ze.test(l)}function Je(l){window.open(l,"_blank","noopener")}function A(l){let o="";for(const e of l.getItems()){if(!e.is("$text")&&!e.is("$textProxy"))return;o+=e.data}return o}class Ye extends ie{constructor(){super(...arguments);d(this,"manualDecorators",new se);d(this,"automaticDecorators",new Oe)}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||ne(t.getSelectedBlocks());C(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const s of this.manualDecorators)s.value=this._getDecoratorStateFromModel(s.id)}execute(e,t={},i){const s=this.editor.model,n=s.document.selection,r=[],c=[];for(const a in t)t[a]?r.push(a):c.push(a);s.change(a=>{const u=h=>{a.setAttribute("linkHref",e,h),r.forEach(k=>a.setAttribute(k,!0,h)),c.forEach(k=>a.removeAttribute(k,h))},m=(h,k)=>{const w=A(h);if(!w)return h;let b=i;if(b||(b=k&&k==w?e:w),b!=w){const T=Qe(w,b);let f=0;for(const{offset:L,actual:P,expected:q}of T){const z=L+f,K=a.createRange(h.start.getShiftedBy(z),h.start.getShiftedBy(z+P.length)),de=Ze(K,h).getAttributes(),ue=Array.from(de).filter(([he])=>s.schema.getAttributeProperties(he).isFormatting),$=a.createText(q,ue);u($),s.insertContent($,K),f+=q.length}return a.createRange(h.start,h.start.getShiftedBy(b.length))}},g=h=>{const{plugins:k}=this.editor;if(a.setSelection(h.end),k.has("TwoStepCaretMovement"))k.get("TwoStepCaretMovement")._handleForwardMovement();else for(const w of["linkHref",...r,...c])a.removeSelectionAttribute(w)};if(n.isCollapsed){const h=n.getFirstPosition();if(n.hasAttribute("linkHref")){const k=n.getAttribute("linkHref"),w=x(h,"linkHref",k,s),b=m(w,k);u(b||w),b&&g(b)}else if(e!==""){const k=S(n.getAttributes());k.set("linkHref",e),r.forEach(b=>{k.set(b,!0)});const w=s.insertContent(a.createText(i||e,k),h);g(w)}}else{const h=Array.from(n.getRanges()),k=s.schema.getValidRanges(h,"linkHref"),w=[];for(const f of n.getSelectedBlocks())s.schema.checkAttribute(f,"linkHref")&&w.push(a.createRangeOn(f));const b=w.slice();for(const f of k)this._isRangeToUpdate(f,w)&&b.push(f);const T=h.map(f=>({start:W.fromPosition(f.start,"toPrevious"),end:W.fromPosition(f.end,"toNext")}));for(let f of b){const L=(f.start.textNode||f.start.nodeAfter).getAttribute("linkHref");f=m(f,L)||f,u(f)}a.setSelection(T.map(f=>{const L=f.start.toPosition(),P=f.end.toPosition();return f.start.detach(),f.end.detach(),s.createRange(L,P)}))}})}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,s=i.getSelectedElement();return C(s,t.schema)?s.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}function Qe(l,o){const e=Ie(l,o),t={equal:0,insert:0,delete:0},i=[];let s="",n="";for(const r of[...e,null])r=="insert"?n+=o[t.equal+t.insert]:r=="delete"?s+=l[t.equal+t.delete]:(s.length||n.length)&&(i.push({offset:t.equal,actual:s,expected:n}),s="",n=""),r&&t[r]++;return i}function Ze(l,o){if(!l.isCollapsed)return ne(l.getItems());const e=l.start;return e.textNode?e.textNode:!e.nodeBefore||e.isEqual(o.start)?e.nodeAfter:e.nodeBefore}class et extends ie{refresh(){const o=this.editor.model,e=o.document.selection,t=e.getSelectedElement();C(t,o.schema)?this.isEnabled=o.schema.checkAttribute(t,"linkHref"):this.isEnabled=o.schema.checkAttributeInSelection(e,"linkHref")}execute(){const o=this.editor,e=this.editor.model,t=e.document.selection,i=o.commands.get("link");e.change(s=>{const n=t.isCollapsed?[x(t.getFirstPosition(),"linkHref",t.getAttribute("linkHref"),e)]:e.schema.getValidRanges(t.getRanges(),"linkHref");for(const r of n)if(s.removeAttribute("linkHref",r),i)for(const c of i.manualDecorators)s.removeAttribute(c.id,r)})}}class tt extends Le(){constructor({id:e,label:t,attributes:i,classes:s,styles:n,defaultValue:r}){super();d(this,"id");d(this,"defaultValue");d(this,"label");d(this,"attributes");d(this,"classes");d(this,"styles");this.id=e,this.set("value",void 0),this.defaultValue=r,this.label=t,this.attributes=i,this.classes=s,this.styles=n}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}const it="ck-link_selected",ee="automatic",st="manual",nt=/^(https?:)?\/\//;class v extends V{constructor(e){super(e);d(this,"_linkOpeners",[]);e.config.define("link",{allowCreatingEmptyLinks:!1,addTargetToExternalLinks:!1,toolbar:["linkPreview","|","editLink","linkProperties","unlink"]})}static get pluginName(){return"LinkEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[G,be,_e]}init(){const e=this.editor,t=this.editor.config.get("link.allowedProtocols");e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:Z}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(n,r)=>Z(re(n,t),r)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:n=>n.getAttribute("href")}}),e.commands.add("link",new Ye(e)),e.commands.add("unlink",new et(e));const i=We(e.t,Xe(e.config.get("link.decorators")));this._enableAutomaticDecorators(i.filter(n=>n.mode===ee)),this._enableManualDecorators(i.filter(n=>n.mode===st)),e.plugins.get(G).registerAttribute("linkHref"),pe(e,"linkHref","a",it),this._enableLinkOpen(),this._enableSelectionAttributesFixer(),this._enableClipboardIntegration()}_registerLinkOpener(e){this._linkOpeners.push(e)}_enableAutomaticDecorators(e){const t=this.editor,s=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&s.add({id:"linkIsExternal",mode:ee,callback:n=>!!n&&nt.test(n),attributes:{target:"_blank",rel:"noopener noreferrer"}}),s.add(e),s.length&&t.conversion.for("downcast").add(s.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,s=t.commands.get("link").manualDecorators;e.forEach(n=>{t.model.schema.extend("$text",{allowAttributes:n.id});const r=new tt(n);s.add(r),t.conversion.for("downcast").attributeToElement({model:r.id,view:(c,{writer:a,schema:u},{item:m})=>{if((m.is("selection")||u.isInline(m))&&c){const g=a.createAttributeElement("a",r.attributes,{priority:5});r.classes&&a.addClass(r.classes,g);for(const h in r.styles)a.setStyle(h,r.styles[h],g);return a.setCustomProperty("link",!0,g),g}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...r._createPattern()},model:{key:r.id}})})}_enableLinkOpen(){const e=this.editor,i=e.editing.view.document,s=n=>{this._linkOpeners.some(r=>r(n))||Je(n)};this.listenTo(i,"click",(n,r)=>{if(!(Ve.isMac?r.domEvent.metaKey:r.domEvent.ctrlKey))return;let a=r.domTarget;if(a.tagName.toLowerCase()!="a"&&(a=a.closest("a")),!a)return;const u=a.getAttribute("href");u&&(n.stop(),r.preventDefault(),s(u))},{context:"$capture"}),this.listenTo(i,"keydown",(n,r)=>{const a=e.commands.get("link").value;a&&r.keyCode===ve.enter&&r.altKey&&(n.stop(),s(a))})}_enableSelectionAttributesFixer(){const t=this.editor.model,i=t.document.selection;this.listenTo(i,"change:attribute",(s,{attributeKeys:n})=>{!n.includes("linkHref")||i.hasAttribute("linkHref")||t.change(r=>{ot(r,rt(t.schema))})})}_enableClipboardIntegration(){const e=this.editor,t=e.model,i=this.editor.config.get("link.defaultProtocol");i&&this.listenTo(e.plugins.get("ClipboardPipeline"),"contentInsertion",(s,n)=>{t.change(r=>{const c=r.createRangeIn(n.content);for(const a of c.getItems())if(a.hasAttribute("linkHref")){const u=N(a.getAttribute("linkHref"),i);r.setAttribute("linkHref",u,a)}})})}}function ot(l,o){l.removeSelectionAttribute("linkHref");for(const e of o)l.removeSelectionAttribute(e)}function rt(l){return l.getDefinition("$text").allowAttributes.filter(e=>e.startsWith("link"))}class lt extends p{constructor(o){super(o);const e=this.bindTemplate;this.set({href:void 0,withText:!0}),this.extendTemplate({attributes:{class:["ck-link-toolbar__preview"],href:e.to("href"),target:"_blank",rel:"noopener noreferrer"},on:{click:e.to(t=>{if(this.href){const i=()=>t.preventDefault();this.fire("navigate",this.href,i)}})}}),this.template.tag="a"}}class at extends y{constructor(e,t){super(e);d(this,"focusTracker",new B);d(this,"keystrokes",new F);d(this,"backButtonView");d(this,"saveButtonView");d(this,"displayedTextInputView");d(this,"urlInputView");d(this,"children");d(this,"providersListChildren");d(this,"_validators");d(this,"_focusables",new R);d(this,"_focusCycler");this._validators=t,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.displayedTextInputView=this._createDisplayedTextInput(),this.urlInputView=this._createUrlInput(),this.providersListChildren=this.createCollection(),this.children=this.createCollection([this._createHeaderView()]),this._createFormChildren(),this.listenTo(this.providersListChildren,"add",()=>{this.stopListening(this.providersListChildren,"add"),this.children.add(this._createProvidersListView())}),this._focusCycler=new D({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-link-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),Re({view:this}),[this.urlInputView,this.saveButtonView,...this.providersListChildren,this.backButtonView,this.displayedTextInputView].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 e of this._validators){const t=e(this);if(t)return this.urlInputView.errorText=t,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null}_createBackButton(){const e=this.locale.t,t=new p(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:H,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new p(this.locale);return t.set({label:e("Insert"),tooltip:!1,withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){const e=this.locale.t,t=new M(this.locale,{label:e("Link")});return t.children.add(this.backButtonView,0),t}_createProvidersListView(){const e=new U(this.locale);return e.extendTemplate({attributes:{class:["ck-link-form__providers-list"]}}),e.items.bindTo(this.providersListChildren).using(t=>{const i=new O(this.locale);return i.children.add(t),i}),e}_createDisplayedTextInput(){const e=this.locale.t,t=new J(this.locale,Y);return t.label=e("Displayed text"),t.class="ck-labeled-field-view_full-width",t}_createUrlInput(){const e=this.locale.t,t=new J(this.locale,Y);return t.fieldView.inputMode="url",t.label=e("Link URL"),t.class="ck-labeled-field-view_full-width",t}_createFormChildren(){this.children.add(new Q(this.locale,{children:[this.displayedTextInputView],class:["ck-form__row_large-top-padding"]})),this.children.add(new Q(this.locale,{children:[this.urlInputView,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding","ck-form__row_large-bottom-padding"]}))}get url(){const{element:e}=this.urlInputView.fieldView;return e?e.value.trim():null}}class ct extends y{constructor(e){super(e);d(this,"focusTracker",new B);d(this,"keystrokes",new F);d(this,"backButtonView");d(this,"listView");d(this,"listChildren");d(this,"emptyListInformation");d(this,"children");d(this,"_focusables",new R);d(this,"_focusCycler");this.listChildren=this.createCollection(),this.backButtonView=this._createBackButton(),this.listView=this._createListView(),this.emptyListInformation=this._createEmptyLinksListItemView(),this.children=this.createCollection([this._createHeaderView(),this.emptyListInformation]),this.set("title",""),this.set("emptyListPlaceholder",""),this.set("hasItems",!1),this.listenTo(this.listChildren,"change",()=>{this.hasItems=this.listChildren.length>0}),this.on("change:hasItems",(t,i,s)=>{s?(this.children.remove(this.emptyListInformation),this.children.add(this.listView)):(this.children.remove(this.listView),this.children.add(this.emptyListInformation))}),this.keystrokes.set("Esc",(t,i)=>{this.fire("cancel"),i()}),this._focusCycler=new D({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-providers"],tabindex:"-1"},children:this.children})}render(){super.render(),[this.listView,this.backButtonView].forEach(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()}_createListView(){const e=new U(this.locale);return e.extendTemplate({attributes:{class:["ck-link-providers__list"]}}),e.items.bindTo(this.listChildren).using(t=>{const i=new O(this.locale);return i.children.add(t),i}),e}_createBackButton(){const e=this.locale.t,t=new p(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:H,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createHeaderView(){const e=new M(this.locale);return e.bind("label").to(this,"title"),e.children.add(this.backButtonView,0),e}_createEmptyLinksListItemView(){const e=new y(this.locale);return e.setTemplate({tag:"p",attributes:{class:["ck","ck-link__empty-list-info"]},children:[{text:this.bindTemplate.to("emptyListPlaceholder")}]}),e}}class dt extends y{constructor(e){super(e);d(this,"focusTracker",new B);d(this,"keystrokes",new F);d(this,"backButtonView");d(this,"children");d(this,"listChildren");d(this,"_focusables",new R);d(this,"_focusCycler");this.backButtonView=this._createBackButton(),this.listChildren=this.createCollection(),this.children=this.createCollection([this._createHeaderView(),this._createListView()]),this._focusCycler=new D({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-properties"],tabindex:"-1"},children:this.children}),this.keystrokes.set("Esc",(t,i)=>{this.fire("back"),i()})}render(){super.render(),[...this.listChildren,this.backButtonView].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()}_createBackButton(){const e=this.locale.t,t=new p(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:H,tooltip:!0}),t.delegate("execute").to(this,"back"),t}_createHeaderView(){const e=this.locale.t,t=new M(this.locale,{label:e("Link properties")});return t.children.add(this.backButtonView,0),t}_createListView(){const e=new U(this.locale);return e.extendTemplate({attributes:{class:["ck-link__list"]}}),e.items.bindTo(this.listChildren).using(t=>{const i=new O(this.locale);return i.children.add(t),i}),e}}class ut extends p{constructor(e){super(e);d(this,"arrowView");this.set({withText:!0}),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{class:["ck-link__button"]}})}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new He;return e.content=Ae,e}}const _="link-ui";class ae extends V{constructor(){super(...arguments);d(this,"toolbarView",null);d(this,"formView",null);d(this,"linkProviderItemsView",null);d(this,"propertiesView",null);d(this,"_balloon");d(this,"_linksProviders",new se)}static get requires(){return[X,v]}static get pluginName(){return"LinkUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=this.editor.t;this.set("selectedLinkableText",void 0),e.editing.view.addObserver(ye),this._balloon=e.plugins.get(X),this._registerComponents(),this._registerEditingOpeners(),this._enableBalloonActivators(),e.conversion.for("editingDowncast").markerToHighlight({model:_,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:_,view:(i,{writer:s})=>{if(!i.markerRange.isCollapsed)return null;const n=s.createUIElement("span");return s.addClass(["ck-fake-link-selection","ck-fake-link-selection_collapsed"],n),n}}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Create link"),keystroke:I},{label:t("Move out of a link"),keystroke:[["arrowleft","arrowleft"],["arrowright","arrowright"]]}]})}destroy(){super.destroy(),this.propertiesView&&this.propertiesView.destroy(),this.formView&&this.formView.destroy(),this.toolbarView&&this.toolbarView.destroy(),this.linkProviderItemsView&&this.linkProviderItemsView.destroy()}registerLinksListProvider(e){const t=this._linksProviders.filter(i=>(i.order||0)<=(e.order||0)).length;this._linksProviders.add(e,t)}_createViews(){const e=this.editor.commands.get("link");this.toolbarView=this._createToolbarView(),this.formView=this._createFormView(),e.manualDecorators.length&&(this.propertiesView=this._createPropertiesView()),this._enableUserBalloonInteractions()}_createToolbarView(){const e=this.editor,t=new xe(e.locale),i=e.commands.get("link");t.class="ck-link-toolbar";let s=e.config.get("link.toolbar");return i.manualDecorators.length||(s=s.filter(n=>n!=="linkProperties")),t.fillFromConfig(s,e.ui.componentFactory),t.keystrokes.set("Esc",(n,r)=>{this._hideUI(),r()}),t.keystrokes.set(I,(n,r)=>{this._addFormView(),r()}),e.ui.addToolbar(t,{isContextual:!0,beforeFocus:()=>{this._getSelectedLinkElement()&&!this._isToolbarVisible&&this._showUI(!0)},afterBlur:()=>{this._hideUI(!1)}}),t}_createFormView(){const e=this.editor,t=e.locale.t,i=e.commands.get("link"),s=e.config.get("link.defaultProtocol"),n=new(j(at))(e.locale,ht(e));return n.displayedTextInputView.bind("isEnabled").to(this,"selectedLinkableText",r=>r!==void 0),n.urlInputView.bind("isEnabled").to(i,"isEnabled"),n.saveButtonView.bind("isEnabled").to(i,"isEnabled"),n.saveButtonView.bind("label").to(i,"value",r=>t(r?"Update":"Insert")),this.listenTo(n,"submit",()=>{if(n.isValid()){const r=n.urlInputView.fieldView.element.value,c=N(r,s),a=n.displayedTextInputView.fieldView.element.value;e.execute("link",c,this._getDecoratorSwitchesState(),a!==this.selectedLinkableText?a:void 0),this._closeFormView()}}),this.listenTo(n.urlInputView,"change:errorText",()=>{e.ui.update()}),this.listenTo(n,"cancel",()=>{this._closeFormView()}),n.keystrokes.set("Esc",(r,c)=>{this._closeFormView(),c()}),n.providersListChildren.bindTo(this._linksProviders).using(r=>this._createLinksListProviderButton(r)),n}_createLinkProviderListView(e){return e.getListItems().map(({href:t,label:i,icon:s})=>{const n=new p;return n.set({label:i,icon:s,tooltip:!1,withText:!0}),n.on("execute",()=>{this.formView.resetFormStatus(),this.formView.urlInputView.fieldView.value=t,this.editor.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()}),n})}_createLinkProviderItemsView(e){const t=this.editor,i=t.locale.t,s=new ct(t.locale),{emptyListPlaceholder:n,label:r}=e;return s.emptyListPlaceholder=n||i("No links available"),s.title=r,this.listenTo(s,"cancel",()=>{t.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()}),s}_createPropertiesView(){const e=this.editor,t=this.editor.commands.get("link"),i=new(j(dt))(e.locale);return this.listenTo(i,"back",()=>{e.editing.view.focus(),this._removePropertiesView()}),i.listChildren.bindTo(t.manualDecorators).using(s=>{const n=new Se(e.locale);return n.set({label:s.label,withText:!0}),n.bind("isOn").toMany([s,t],"value",(r,c)=>c===void 0&&r===void 0?!!s.defaultValue:!!r),n.on("execute",()=>{s.set("value",!n.isOn),e.execute("link",t.value,this._getDecoratorSwitchesState())}),n}),i}_getDecoratorSwitchesState(){const e=this.editor.commands.get("link");return Array.from(e.manualDecorators).reduce((t,i)=>{const s=e.value===void 0&&i.value===void 0?i.defaultValue:i.value;return{...t,[i.id]:!!s}},{})}_registerEditingOpeners(){this.editor.plugins.get(v)._registerLinkOpener(t=>{const i=this._getLinkProviderLinkByHref(t);if(!i)return!1;const{item:s,provider:n}=i;return n.navigate?n.navigate(s):!1})}_registerComponents(){const e=this.editor;e.ui.componentFactory.add("link",()=>{const t=this._createButton(p);return t.set({tooltip:!0}),t}),e.ui.componentFactory.add("menuBar:link",()=>{const t=this._createButton(Be);return t.set({role:"menuitemcheckbox"}),t}),e.ui.componentFactory.add("linkPreview",t=>{const i=new lt(t),s=e.config.get("link.allowedProtocols"),n=e.commands.get("link"),r=t.t;i.bind("isEnabled").to(n,"value",a=>!!a),i.bind("href").to(n,"value",a=>a&&re(a,s));const c=a=>{if(!a){i.label=void 0,i.icon=void 0,i.tooltip=r("Open link in new tab");return}const u=this._getLinkProviderLinkByHref(a);if(u){const{label:m,tooltip:g,icon:h}=u.item;i.label=m,i.tooltip=g||!1,i.icon=h}else i.label=a,i.icon=void 0,i.tooltip=r("Open link in new tab")};return c(n.value),this.listenTo(n,"change:value",(a,u,m)=>{c(m)}),this.listenTo(i,"navigate",(a,u,m)=>{const g=this._getLinkProviderLinkByHref(u);if(!g)return;const{provider:h,item:k}=g,{navigate:w}=h;w&&w(k)&&(a.stop(),m())}),i}),e.ui.componentFactory.add("unlink",t=>{const i=e.commands.get("unlink"),s=new p(t),n=t.t;return s.set({label:n("Unlink"),icon:Pe,tooltip:!0}),s.bind("isEnabled").to(i),this.listenTo(s,"execute",()=>{e.execute("unlink"),this._hideUI()}),s}),e.ui.componentFactory.add("editLink",t=>{const i=e.commands.get("link"),s=new p(t),n=t.t;return s.set({label:n("Edit link"),icon:Ee,tooltip:!0}),s.bind("isEnabled").to(i),this.listenTo(s,"execute",()=>{this._addFormView()}),s}),e.ui.componentFactory.add("linkProperties",t=>{const i=e.commands.get("link"),s=new p(t),n=t.t;return s.set({label:n("Link properties"),icon:Ce,tooltip:!0}),s.bind("isEnabled").to(i,"isEnabled",i,"value",i,"manualDecorators",(r,c,a)=>r&&!!c&&a.length>0),this.listenTo(s,"execute",()=>{this._addPropertiesView()}),s})}_createLinksListProviderButton(e){const t=this.editor.locale,i=new ut(t);return i.set({label:e.label}),this.listenTo(i,"execute",()=>{this._showLinksProviderView(e)}),i}_createButton(e){const t=this.editor,i=t.locale,s=t.commands.get("link"),n=new e(t.locale),r=i.t;return n.set({label:r("Link"),icon:oe,keystroke:I,isToggleable:!0}),n.bind("isEnabled").to(s,"isEnabled"),n.bind("isOn").to(s,"value",c=>!!c),this.listenTo(n,"execute",()=>{t.editing.view.scrollToTheSelection(),this._showUI(!0),this._getSelectedLinkElement()&&this._addFormView()}),n}_enableBalloonActivators(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),e.keystrokes.set(I,(i,s)=>{s(),e.commands.get("link").isEnabled&&(e.editing.view.scrollToTheSelection(),this._showUI(!0))})}_enableUserBalloonInteractions(){this.editor.keystrokes.set("Tab",(e,t)=>{this._isToolbarVisible&&!this.toolbarView.focusTracker.isFocused&&(this.toolbarView.focus(),t())},{priority:"high"}),this.editor.keystrokes.set("Esc",(e,t)=>{this._isUIVisible&&(this._hideUI(),t())}),Fe({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:()=>[this._balloon.view.element],callback:()=>{this._hideUI(!1)}})}_addToolbarView(){this.toolbarView||this._createViews(),!this._isToolbarInPanel&&this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"})}_addFormView(){if(this.formView||this._createViews(),this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this.formView.resetFormStatus(),this.formView.backButtonView.isVisible=e.isEnabled&&!!e.value,this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this.selectedLinkableText=this._getSelectedLinkableText(),this.formView.displayedTextInputView.fieldView.value=this.selectedLinkableText||"",this.formView.urlInputView.fieldView.value=e.value||"",this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions()}_addPropertiesView(){this.propertiesView||this._createViews(),!this._arePropertiesInPanel&&(this.propertiesView.disableCssTransitions(),this._balloon.add({view:this.propertiesView,position:this._getBalloonPositionData()}),this.propertiesView.enableCssTransitions(),this.propertiesView.focus())}_showLinksProviderView(e){this.linkProviderItemsView&&this._removeLinksProviderView(),this.linkProviderItemsView=this._createLinkProviderItemsView(e),this._addLinkProviderItemsView(e)}_addLinkProviderItemsView(e){this.linkProviderItemsView.listChildren.clear(),this.linkProviderItemsView.listChildren.addMany(this._createLinkProviderListView(e)),this._balloon.add({view:this.linkProviderItemsView,position:this._getBalloonPositionData()}),this.linkProviderItemsView.focus()}_closeFormView(){const e=this.editor.commands.get("link");this.selectedLinkableText=void 0,e.value!==void 0?this._removeFormView():this._hideUI()}_removePropertiesView(){this._arePropertiesInPanel&&this._balloon.remove(this.propertiesView)}_removeLinksProviderView(){this._isLinksListInPanel&&this._balloon.remove(this.linkProviderItemsView)}_removeFormView(e=!0){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this.formView.displayedTextInputView.fieldView.reset(),this.formView.urlInputView.fieldView.reset(),this._balloon.remove(this.formView),e&&this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this.formView||this._createViews(),this._getSelectedLinkElement()?(this._isToolbarVisible?this._addFormView():this._addToolbarView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addToolbarView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(e=!0){const t=this.editor;this._isUIInPanel&&(this.stopListening(t.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e&&t.editing.view.focus(),this._removeLinksProviderView(),this._removePropertiesView(),this._removeFormView(e),this._isToolbarInPanel&&this._balloon.remove(this.toolbarView),this._hideFakeVisualSelection())}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),s=r();const n=()=>{const c=this._getSelectedLinkElement(),a=r();i&&!c||!i&&a!==s?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=c,s=a};function r(){return t.selection.focus.getAncestors().reverse().find(c=>c.is("element"))}this.listenTo(e.ui,"update",n),this.listenTo(this._balloon,"change:visibleView",n)}get _arePropertiesInPanel(){return!!this.propertiesView&&this._balloon.hasView(this.propertiesView)}get _isLinksListInPanel(){return!!this.linkProviderItemsView&&this._balloon.hasView(this.linkProviderItemsView)}get _isFormInPanel(){return!!this.formView&&this._balloon.hasView(this.formView)}get _isToolbarInPanel(){return!!this.toolbarView&&this._balloon.hasView(this.toolbarView)}get _isPropertiesVisible(){return!!this.propertiesView&&this._balloon.visibleView===this.propertiesView}get _isFormVisible(){return!!this.formView&&this._balloon.visibleView==this.formView}get _isToolbarVisible(){return!!this.toolbarView&&this._balloon.visibleView===this.toolbarView}get _isUIInPanel(){return this._arePropertiesInPanel||this._isLinksListInPanel||this._isFormInPanel||this._isToolbarInPanel}get _isUIVisible(){return this._isPropertiesVisible||this._isLinksListInPanel||this._isFormVisible||this._isToolbarVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document;if(this.editor.model.markers.has(_)){const s=this.editor.editing.mapper.markerNameToElements(_);if(s){const n=Array.from(s),r=e.createRange(e.createPositionBefore(n[0]),e.createPositionAfter(n[n.length-1]));return{target:e.domConverter.viewRangeToDom(r)}}}return{target:()=>{const s=this._getSelectedLinkElement();return s?e.domConverter.mapViewToDom(s):e.domConverter.viewRangeToDom(t.selection.getFirstRange())}}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&De(i))return E(t.getFirstPosition());{const s=t.getFirstRange().getTrimmed(),n=E(s.start),r=E(s.end);return!n||n!=r?null:e.createRangeIn(n).getTrimmed().isEqual(s)?n:null}}_getSelectedLinkableText(){const e=this.editor.model,t=this.editor.editing,i=this._getSelectedLinkElement();if(!i)return A(e.document.selection.getFirstRange());const s=t.view.createRangeOn(i),n=t.mapper.toModelRange(s);return A(n)}_getLinkProviderLinkByHref(e){if(!e)return null;for(const t of this._linksProviders){const i=t.getItem?t.getItem(e):t.getListItems().find(s=>s.href===e);if(i)return{provider:t,item:i}}return null}_showFakeVisualSelection(){const e=this.editor.model;e.change(t=>{const i=e.document.selection.getFirstRange();if(e.markers.has(_))t.updateMarker(_,{range:i});else if(i.start.isAtEnd){const s=i.start.getLastMatchingPosition(({item:n})=>!e.schema.isContent(n),{boundaries:i});t.addMarker(_,{usingOperation:!1,affectsData:!1,range:t.createRange(s,i.end)})}else t.addMarker(_,{usingOperation:!1,affectsData:!1,range:i})})}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(_)&&e.change(t=>{t.removeMarker(_)})}}function E(l){return l.getAncestors().find(o=>$e(o))||null}function ht(l){const o=l.t,e=l.config.get("link.allowCreatingEmptyLinks");return[t=>{if(!e&&!t.url.length)return o("Link URL must not be empty.")}]}const mt=4,ce=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63}))|localhost)(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i"),ft=2;class kt extends V{static get requires(){return[ke,v]}static get pluginName(){return"AutoLink"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.model.document.selection;e.on("change:range",()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")}),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling(),this._enablePasteLinking()}_expandLinkRange(o,e){return e.textNode&&e.textNode.hasAttribute("linkHref")?x(e,"linkHref",e.textNode.getAttribute("linkHref"),o):null}_selectEntireLinks(o,e){const i=this.editor.model,s=i.document.selection,n=s.getFirstPosition(),r=s.getLastPosition();let c=e.getJoined(this._expandLinkRange(i,n)||e);c&&(c=c.getJoined(this._expandLinkRange(i,r)||e)),c&&(c.start.isBefore(n)||c.end.isAfter(r))&&o.setSelection(c)}_enablePasteLinking(){const o=this.editor,e=o.model,t=e.document.selection,i=o.plugins.get("ClipboardPipeline"),s=o.commands.get("link");i.on("inputTransformation",(n,r)=>{if(!this.isEnabled||!s.isEnabled||t.isCollapsed||r.method!=="paste"||t.rangeCount>1)return;const c=t.getFirstRange(),a=r.dataTransfer.getData("text/plain");if(!a)return;const u=a.match(ce);u&&u[2]===a&&(e.change(m=>{this._selectEntireLinks(m,c),s.execute(a)}),n.stop())},{priority:"high"})}_enableTypingHandling(){const o=this.editor,e=new ge(o.model,t=>{let i=t;if(!gt(i))return;i=i.slice(0,-1),"!.:,;?".includes(i[i.length-1])&&(i=i.slice(0,-1));const s=te(i);if(s)return{url:s,removedTrailingCharacters:t.length-i.length}});e.on("matched:data",(t,i)=>{const{batch:s,range:n,url:r,removedTrailingCharacters:c}=i;if(!s.isTyping)return;const a=n.end.getShiftedBy(-c),u=a.getShiftedBy(-r.length),m=o.model.createRange(u,a);this._applyAutoLink(r,m)}),e.bind("isEnabled").to(this)}_enableEnterHandling(){const o=this.editor,e=o.model,t=o.commands.get("enter");t&&t.on("execute",()=>{var n;const i=e.document.selection.getFirstPosition();let s;(n=i.parent.previousSibling)!=null&&n.is("element")?s=e.createRangeIn(i.parent.previousSibling):s=e.createRange(e.createPositionAt(i.parent,0),i),this._checkAndApplyAutoLinkOnRange(s)})}_enableShiftEnterHandling(){const o=this.editor,e=o.model,t=o.commands.get("shiftEnter");t&&t.on("execute",()=>{const i=e.document.selection.getFirstPosition(),s=e.createRange(e.createPositionAt(i.parent,0),i.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(s)})}_checkAndApplyAutoLinkOnRange(o){const e=this.editor.model,{text:t,range:i}=we(o,e),s=te(t);if(s){const n=e.createRange(i.end.getShiftedBy(-s.length),i.end);this._applyAutoLink(s,n)}}_applyAutoLink(o,e){const t=this.editor.model,i=this.editor.config.get("link.defaultProtocol"),s=N(o,i);!this.isEnabled||!wt(e,t)||!le(s)||bt(e)||this._persistAutoLink(s,e)}_persistAutoLink(o,e){const t=this.editor.model,i=this.editor.plugins.get("Delete");t.enqueueChange(s=>{s.setAttribute("linkHref",o,e),t.enqueueChange(()=>{i.requestUndoOnBackspace()})})}}function gt(l){return l.length>mt&&l[l.length-1]===" "&&l[l.length-2]!==" "}function te(l){const o=ce.exec(l);return o?o[ft]:null}function wt(l,o){return o.schema.checkAttributeInSelection(o.createSelection(l),"linkHref")}function bt(l){const o=l.start.nodeAfter;return!!o&&o.hasAttribute("linkHref")}class Rt extends V{static get requires(){return[v,ae,kt]}static get pluginName(){return"Link"}static get isOfficialPlugin(){return!0}}class pt extends V{static get requires(){return["ImageEditing","ImageUtils",v]}static get pluginName(){return"LinkImageEditing"}static get isOfficialPlugin(){return!0}afterInit(){const o=this.editor,e=o.model.schema;o.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["linkHref"]}),o.conversion.for("upcast").add(_t(o)),o.conversion.for("downcast").add(Vt(o)),this._enableAutomaticDecorators(),this._enableManualDecorators()}_enableAutomaticDecorators(){const o=this.editor,t=o.commands.get("link").automaticDecorators;t.length&&o.conversion.for("downcast").add(t.getDispatcherForLinkedImage())}_enableManualDecorators(){const o=this.editor,e=o.commands.get("link");for(const t of e.manualDecorators)o.plugins.has("ImageBlockEditing")&&o.model.schema.extend("imageBlock",{allowAttributes:t.id}),o.plugins.has("ImageInlineEditing")&&o.model.schema.extend("imageInline",{allowAttributes:t.id}),o.conversion.for("downcast").add(vt(t)),o.conversion.for("upcast").add(Lt(o,t))}}function _t(l){const o=l.plugins.has("ImageInlineEditing"),e=l.plugins.get("ImageUtils");return t=>{t.on("element:a",(i,s,n)=>{const r=s.viewItem,c=e.findViewImgElement(r);if(!c)return;const a=c.findAncestor(h=>e.isBlockImageView(h));if(o&&!a)return;const u={attributes:["href"]};if(!n.consumable.consume(r,u))return;const m=r.getAttribute("href");if(!m)return;let g=s.modelCursor.parent;if(!g.is("element","imageBlock")){const h=n.convertItem(c,s.modelCursor);s.modelRange=h.modelRange,s.modelCursor=h.modelCursor,g=s.modelCursor.nodeBefore}g&&g.is("element","imageBlock")&&n.writer.setAttribute("linkHref",m,g)},{priority:"high"})}}function Vt(l){const o=l.plugins.get("ImageUtils");return e=>{e.on("attribute:linkHref:imageBlock",(t,i,s)=>{if(!s.consumable.consume(i.item,t.name))return;const n=s.mapper.toViewElement(i.item),r=s.writer,c=Array.from(n.getChildren()).find(m=>m.is("element","a")),a=o.findViewImgElement(n),u=a.parent.is("element","picture")?a.parent:a;if(c)i.attributeNewValue?r.setAttribute("href",i.attributeNewValue,c):(r.move(r.createRangeOn(u),r.createPositionAt(n,0)),r.remove(c));else{const m=r.createContainerElement("a",{href:i.attributeNewValue});r.insert(r.createPositionAt(n,0),m),r.move(r.createRangeOn(u),r.createPositionAt(m,0))}},{priority:"high"})}}function vt(l){return o=>{o.on(`attribute:${l.id}:imageBlock`,(e,t,i)=>{const s=i.mapper.toViewElement(t.item),n=Array.from(s.getChildren()).find(r=>r.is("element","a"));if(n){if(l.value===void 0){for(const r in l.attributes)i.writer.removeAttribute(r,n);l.classes&&i.writer.removeClass(l.classes,n);for(const r in l.styles)i.writer.removeStyle(r,n);return}for(const[r,c]of S(l.attributes))i.writer.setAttribute(r,c,n);l.classes&&i.writer.addClass(l.classes,n);for(const r in l.styles)i.writer.setStyle(r,l.styles[r],n)}})}}function Lt(l,o){const e=l.plugins.has("ImageInlineEditing"),t=l.plugins.get("ImageUtils");return i=>{i.on("element:a",(s,n,r)=>{const c=n.viewItem,a=t.findViewImgElement(c);if(!a)return;const u=a.findAncestor(k=>t.isBlockImageView(k));if(e&&!u)return;const g=new Te(o._createPattern()).match(c);if(!g||!r.consumable.consume(c,g.match))return;const h=n.modelCursor.nodeBefore||n.modelCursor.parent;r.writer.setAttribute(o.id,!0,h)},{priority:"high"})}}class It extends V{static get requires(){return[v,ae,"ImageBlockEditing"]}static get pluginName(){return"LinkImageUI"}static get isOfficialPlugin(){return!0}init(){const o=this.editor,e=o.editing.view.document;this.listenTo(e,"click",(t,i)=>{this._isSelectedLinkedImage(o.model.document.selection)&&(i.preventDefault(),t.stop())},{priority:"high"}),this._createToolbarLinkImageButton()}_createToolbarLinkImageButton(){const o=this.editor,e=o.t;o.ui.componentFactory.add("linkImage",t=>{const i=new p(t),s=o.plugins.get("LinkUI"),n=o.commands.get("link");return i.set({isEnabled:!0,label:e("Link image"),icon:oe,keystroke:I,tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(n,"isEnabled"),i.bind("isOn").to(n,"value",r=>!!r),this.listenTo(i,"execute",()=>{this._isSelectedLinkedImage(o.model.document.selection)?s._addToolbarView():s._showUI(!0)}),i})}_isSelectedLinkedImage(o){const e=o.getSelectedElement();return this.editor.plugins.get("ImageUtils").isImage(e)&&e.hasAttribute("linkHref")}}class Dt extends V{static get requires(){return[pt,It]}static get pluginName(){return"LinkImage"}static get isOfficialPlugin(){return!0}}export{kt as AutoLink,Rt as Link,Ye as LinkCommand,v as LinkEditing,at as LinkFormView,Dt as LinkImage,pt as LinkImageEditing,It as LinkImageUI,ae as LinkUI,et as UnlinkCommand,N as addLinkProtocolIfApplicable,re as ensureSafeUrl,C as isLinkableElement};
4
+ */class He{_definitions=new Set;get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach(t=>this._definitions.add(t)):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",(t,i,s)=>{if(!s.consumable.test(i.item,"attribute:linkHref")||!(i.item.is("selection")||s.schema.isInline(i.item)))return;const n=s.writer,o=n.document.selection;for(const a of this._definitions){const r=n.createAttributeElement("a",a.attributes,{priority:5});a.classes&&n.addClass(a.classes,r);for(const c in a.styles)n.setStyle(c,a.styles[c],r);n.setCustomProperty("link",!0,r),a.callback(i.attributeNewValue)?i.item.is("selection")?n.wrap(o.getFirstRange(),r):n.wrap(s.mapper.toViewRange(i.range),r):n.unwrap(s.mapper.toViewRange(i.range),r)}},{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",(t,i,{writer:s,mapper:n})=>{const o=n.toViewElement(i.item),a=Array.from(o.getChildren()).find(r=>r.is("element","a"));if(a)for(const r of this._definitions){const c=A(r.attributes);if(r.callback(i.attributeNewValue)){for(const[u,h]of c)u==="class"?s.addClass(h,a):s.setAttribute(u,h,a);r.classes&&s.addClass(r.classes,a);for(const u in r.styles)s.setStyle(u,r.styles[u],a)}else{for(const[u,h]of c)u==="class"?s.removeClass(h,a):s.removeAttribute(u,a);r.classes&&s.removeClass(r.classes,a);for(const u in r.styles)s.removeStyle(u,a)}}})}}}const Re=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,De="^(?:(?:<protocols>):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))",Ue=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Oe=/^((\w+:(\/{2,})?)|(\W))/i,Me=["https?","ftps?","mailto"],v="Ctrl+K";function Ne(l){return l.is("attributeElement")&&!!l.getCustomProperty("link")}function Y(l,{writer:e}){const t=e.createAttributeElement("a",{href:l},{priority:5});return e.setCustomProperty("link",!0,t),t}function ne(l,e=Me){const t=String(l),i=e.join("|"),s=new RegExp(`${De.replace("<protocols>",i)}`,"i");return qe(t,s)?t:"#"}function qe(l,e){return!!l.replace(Re,"").match(e)}function ze(l,e){const t={"Open in a new tab":l("Open in a new tab"),Downloadable:l("Downloadable")};return e.forEach(i=>("label"in i&&t[i.label]&&(i.label=t[i.label]),i)),e}function Ke(l){const e=[];if(l)for(const[t,i]of Object.entries(l)){const s=Object.assign({},i,{id:`link${Fe(t)}`});e.push(s)}return e}function P(l,e){return l?e.checkAttribute(l.name,"linkHref"):!1}function $e(l){return Ue.test(l)}function O(l,e){const t=$e(l)?"mailto:":e,i=!!t&&!oe(l);return l&&i?t+l:l}function oe(l){return Oe.test(l)}function Ge(l){window.open(l,"_blank","noopener")}function E(l){let e="";for(const t of l.getItems()){if(!t.is("$text")&&!t.is("$textProxy"))return;e+=t.data}return e}class We extends ee{manualDecorators=new te;automaticDecorators=new He;restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||ie(t.getSelectedBlocks());P(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const s of this.manualDecorators)s.value=this._getDecoratorStateFromModel(s.id)}execute(e,t={},i){const s=this.editor.model,n=s.document.selection,o=[],a=[];for(const r in t)t[r]?o.push(r):a.push(r);s.change(r=>{const c=d=>{r.setAttribute("linkHref",e,d),o.forEach(m=>r.setAttribute(m,!0,d)),a.forEach(m=>r.removeAttribute(m,d))},u=(d,m)=>{const k=E(d);if(!k)return d;let g=i;if(g||(g=m&&m==k?e:k),g!=k){const I=Xe(k,g);let f=0;for(const{offset:V,actual:y,expected:M}of I){const N=V+f,q=r.createRange(d.start.getShiftedBy(N),d.start.getShiftedBy(N+y.length)),ae=je(q,d).getAttributes(),ce=Array.from(ae).filter(([de])=>s.schema.getAttributeProperties(de).isFormatting),z=r.createText(M,ce);c(z),s.insertContent(z,q),f+=M.length}return r.createRange(d.start,d.start.getShiftedBy(g.length))}},h=d=>{const{plugins:m}=this.editor;if(r.setSelection(d.end),m.has("TwoStepCaretMovement"))m.get("TwoStepCaretMovement")._handleForwardMovement();else for(const k of["linkHref",...o,...a])r.removeSelectionAttribute(k)};if(n.isCollapsed){const d=n.getFirstPosition();if(n.hasAttribute("linkHref")){const m=n.getAttribute("linkHref"),k=C(d,"linkHref",m,s),g=u(k,m);c(g||k),g&&h(g)}else if(e!==""){const m=A(n.getAttributes());m.set("linkHref",e),o.forEach(g=>{m.set(g,!0)});const k=s.insertContent(r.createText(i||e,m),d);h(k)}}else{const d=Array.from(n.getRanges()),m=s.schema.getValidRanges(d,"linkHref"),k=[];for(const f of n.getSelectedBlocks())s.schema.checkAttribute(f,"linkHref")&&k.push(r.createRangeOn(f));const g=k.slice();for(const f of m)this._isRangeToUpdate(f,k)&&g.push(f);const I=d.map(f=>({start:$.fromPosition(f.start,"toPrevious"),end:$.fromPosition(f.end,"toNext")}));for(let f of g){const V=(f.start.textNode||f.start.nodeAfter).getAttribute("linkHref");f=u(f,V)||f,c(f)}r.setSelection(I.map(f=>{const V=f.start.toPosition(),y=f.end.toPosition();return f.start.detach(),f.end.detach(),s.createRange(V,y)}))}})}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,s=i.getSelectedElement();return P(s,t.schema)?s.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}function Xe(l,e){const t=_e(l,e),i={equal:0,insert:0,delete:0},s=[];let n="",o="";for(const a of[...t,null])a=="insert"?o+=e[i.equal+i.insert]:a=="delete"?n+=l[i.equal+i.delete]:(n.length||o.length)&&(s.push({offset:i.equal,actual:n,expected:o}),n="",o=""),a&&i[a]++;return s}function je(l,e){if(!l.isCollapsed)return ie(l.getItems());const t=l.start;return t.textNode?t.textNode:!t.nodeBefore||t.isEqual(e.start)?t.nodeAfter:t.nodeBefore}class Je extends ee{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();P(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,s=e.commands.get("link");t.change(n=>{const o=i.isCollapsed?[C(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const a of o)if(n.removeAttribute("linkHref",a),s)for(const r of s.manualDecorators)n.removeAttribute(r.id,a)})}}class Ye extends pe(){id;defaultValue;label;attributes;classes;styles;constructor({id:e,label:t,attributes:i,classes:s,styles:n,defaultValue:o}){super(),this.id=e,this.set("value",void 0),this.defaultValue=o,this.label=t,this.attributes=i,this.classes=s,this.styles=n}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}const Qe="ck-link_selected",Q="automatic",Ze="manual",et=/^(https?:)?\/\//;class _ extends p{_linkOpeners=[];static get pluginName(){return"LinkEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[K,fe,ge]}constructor(e){super(e),e.config.define("link",{allowCreatingEmptyLinks:!1,addTargetToExternalLinks:!1,toolbar:["linkPreview","|","editLink","linkProperties","unlink"]})}init(){const e=this.editor,t=this.editor.config.get("link.allowedProtocols");e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:Y}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(n,o)=>Y(ne(n,t),o)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:n=>n.getAttribute("href")}}),e.commands.add("link",new We(e)),e.commands.add("unlink",new Je(e));const i=ze(e.t,Ke(e.config.get("link.decorators")));this._enableAutomaticDecorators(i.filter(n=>n.mode===Q)),this._enableManualDecorators(i.filter(n=>n.mode===Ze)),e.plugins.get(K).registerAttribute("linkHref"),ke(e,"linkHref","a",Qe),this._enableLinkOpen(),this._enableSelectionAttributesFixer(),this._enableClipboardIntegration()}_registerLinkOpener(e){this._linkOpeners.push(e)}_enableAutomaticDecorators(e){const t=this.editor,s=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&s.add({id:"linkIsExternal",mode:Q,callback:n=>!!n&&et.test(n),attributes:{target:"_blank",rel:"noopener noreferrer"}}),s.add(e),s.length&&t.conversion.for("downcast").add(s.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,s=t.commands.get("link").manualDecorators;e.forEach(n=>{t.model.schema.extend("$text",{allowAttributes:n.id});const o=new Ye(n);s.add(o),t.conversion.for("downcast").attributeToElement({model:o.id,view:(a,{writer:r,schema:c},{item:u})=>{if((u.is("selection")||c.isInline(u))&&a){const h=r.createAttributeElement("a",o.attributes,{priority:5});o.classes&&r.addClass(o.classes,h);for(const d in o.styles)r.setStyle(d,o.styles[d],h);return r.setCustomProperty("link",!0,h),h}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...o._createPattern()},model:{key:o.id}})})}_enableLinkOpen(){const e=this.editor,i=e.editing.view.document,s=n=>{this._linkOpeners.some(o=>o(n))||Ge(n)};this.listenTo(i,"click",(n,o)=>{if(!(we.isMac?o.domEvent.metaKey:o.domEvent.ctrlKey))return;let r=o.domTarget;if(r.tagName.toLowerCase()!="a"&&(r=r.closest("a")),!r)return;const c=r.getAttribute("href");c&&(n.stop(),o.preventDefault(),s(c))},{context:"$capture"}),this.listenTo(i,"keydown",(n,o)=>{const r=e.commands.get("link").value;r&&o.keyCode===be.enter&&o.altKey&&(n.stop(),s(r))})}_enableSelectionAttributesFixer(){const t=this.editor.model,i=t.document.selection;this.listenTo(i,"change:attribute",(s,{attributeKeys:n})=>{!n.includes("linkHref")||i.hasAttribute("linkHref")||t.change(o=>{tt(o,it(t.schema))})})}_enableClipboardIntegration(){const e=this.editor,t=e.model,i=this.editor.config.get("link.defaultProtocol");i&&this.listenTo(e.plugins.get("ClipboardPipeline"),"contentInsertion",(s,n)=>{t.change(o=>{const a=o.createRangeIn(n.content);for(const r of a.getItems())if(r.hasAttribute("linkHref")){const c=O(r.getAttribute("linkHref"),i);o.setAttribute("linkHref",c,r)}})})}}function tt(l,e){l.removeSelectionAttribute("linkHref");for(const t of e)l.removeSelectionAttribute(t)}function it(l){return l.getDefinition("$text").allowAttributes.filter(t=>t.startsWith("link"))}class st extends w{constructor(e){super(e);const t=this.bindTemplate;this.set({href:void 0,withText:!0}),this.extendTemplate({attributes:{class:["ck-link-toolbar__preview"],href:t.to("href"),target:"_blank",rel:"noopener noreferrer"},on:{click:t.to(i=>{if(this.href){const s=()=>i.preventDefault();this.fire("navigate",this.href,s)}})}}),this.template.tag="a"}}class nt extends L{focusTracker=new x;keystrokes=new S;backButtonView;saveButtonView;displayedTextInputView;urlInputView;children;providersListChildren;_validators;_focusables=new F;_focusCycler;constructor(e,t){super(e),this._validators=t,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.displayedTextInputView=this._createDisplayedTextInput(),this.urlInputView=this._createUrlInput(),this.providersListChildren=this.createCollection(),this.children=this.createCollection([this._createHeaderView()]),this._createFormChildren(),this.listenTo(this.providersListChildren,"add",()=>{this.stopListening(this.providersListChildren,"add"),this.children.add(this._createProvidersListView())}),this._focusCycler=new H({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-link-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),Se({view:this}),[this.urlInputView,this.saveButtonView,...this.providersListChildren,this.backButtonView,this.displayedTextInputView].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 e of this._validators){const t=e(this);if(t)return this.urlInputView.errorText=t,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null}_createBackButton(){const e=this.locale.t,t=new w(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:B,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new w(this.locale);return t.set({label:e("Insert"),tooltip:!1,withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){const e=this.locale.t,t=new U(this.locale,{label:e("Link")});return t.children.add(this.backButtonView,0),t}_createProvidersListView(){const e=new R(this.locale);return e.extendTemplate({attributes:{class:["ck-link-form__providers-list"]}}),e.items.bindTo(this.providersListChildren).using(t=>{const i=new D(this.locale);return i.children.add(t),i}),e}_createDisplayedTextInput(){const e=this.locale.t,t=new X(this.locale,j);return t.label=e("Displayed text"),t.class="ck-labeled-field-view_full-width",t}_createUrlInput(){const e=this.locale.t,t=new X(this.locale,j);return t.fieldView.inputMode="url",t.label=e("Link URL"),t.class="ck-labeled-field-view_full-width",t}_createFormChildren(){this.children.add(new J(this.locale,{children:[this.displayedTextInputView],class:["ck-form__row_large-top-padding"]})),this.children.add(new J(this.locale,{children:[this.urlInputView,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding","ck-form__row_large-bottom-padding"]}))}get url(){const{element:e}=this.urlInputView.fieldView;return e?e.value.trim():null}}class ot extends L{focusTracker=new x;keystrokes=new S;backButtonView;listView;listChildren;emptyListInformation;children;_focusables=new F;_focusCycler;constructor(e){super(e),this.listChildren=this.createCollection(),this.backButtonView=this._createBackButton(),this.listView=this._createListView(),this.emptyListInformation=this._createEmptyLinksListItemView(),this.children=this.createCollection([this._createHeaderView(),this.emptyListInformation]),this.set("title",""),this.set("emptyListPlaceholder",""),this.set("hasItems",!1),this.listenTo(this.listChildren,"change",()=>{this.hasItems=this.listChildren.length>0}),this.on("change:hasItems",(t,i,s)=>{s?(this.children.remove(this.emptyListInformation),this.children.add(this.listView)):(this.children.remove(this.listView),this.children.add(this.emptyListInformation))}),this.keystrokes.set("Esc",(t,i)=>{this.fire("cancel"),i()}),this._focusCycler=new H({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-providers"],tabindex:"-1"},children:this.children})}render(){super.render(),[this.listView,this.backButtonView].forEach(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()}_createListView(){const e=new R(this.locale);return e.extendTemplate({attributes:{class:["ck-link-providers__list"]}}),e.items.bindTo(this.listChildren).using(t=>{const i=new D(this.locale);return i.children.add(t),i}),e}_createBackButton(){const e=this.locale.t,t=new w(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:B,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createHeaderView(){const e=new U(this.locale);return e.bind("label").to(this,"title"),e.children.add(this.backButtonView,0),e}_createEmptyLinksListItemView(){const e=new L(this.locale);return e.setTemplate({tag:"p",attributes:{class:["ck","ck-link__empty-list-info"]},children:[{text:this.bindTemplate.to("emptyListPlaceholder")}]}),e}}class rt extends L{focusTracker=new x;keystrokes=new S;backButtonView;children;listChildren;_focusables=new F;_focusCycler;constructor(e){super(e),this.backButtonView=this._createBackButton(),this.listChildren=this.createCollection(),this.children=this.createCollection([this._createHeaderView(),this._createListView()]),this._focusCycler=new H({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-properties"],tabindex:"-1"},children:this.children}),this.keystrokes.set("Esc",(t,i)=>{this.fire("back"),i()})}render(){super.render(),[...this.listChildren,this.backButtonView].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()}_createBackButton(){const e=this.locale.t,t=new w(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:B,tooltip:!0}),t.delegate("execute").to(this,"back"),t}_createHeaderView(){const e=this.locale.t,t=new U(this.locale,{label:e("Link properties")});return t.children.add(this.backButtonView,0),t}_createListView(){const e=new R(this.locale);return e.extendTemplate({attributes:{class:["ck-link__list"]}}),e.items.bindTo(this.listChildren).using(t=>{const i=new D(this.locale);return i.children.add(t),i}),e}}class lt extends w{arrowView;constructor(e){super(e),this.set({withText:!0}),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{class:["ck-link__button"]}})}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new xe;return e.content=Te,e}}const b="link-ui";class re extends p{toolbarView=null;formView=null;linkProviderItemsView=null;propertiesView=null;_balloon;_linksProviders=new te;static get requires(){return[G,_]}static get pluginName(){return"LinkUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=this.editor.t;this.set("selectedLinkableText",void 0),e.editing.view.addObserver(Ve),this._balloon=e.plugins.get(G),this._registerComponents(),this._registerEditingOpeners(),this._enableBalloonActivators(),e.conversion.for("editingDowncast").markerToHighlight({model:b,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:b,view:(i,{writer:s})=>{if(!i.markerRange.isCollapsed)return null;const n=s.createUIElement("span");return s.addClass(["ck-fake-link-selection","ck-fake-link-selection_collapsed"],n),n}}),e.accessibility.addKeystrokeInfos({keystrokes:[{label:t("Create link"),keystroke:v},{label:t("Move out of a link"),keystroke:[["arrowleft","arrowleft"],["arrowright","arrowright"]]}]})}destroy(){super.destroy(),this.propertiesView&&this.propertiesView.destroy(),this.formView&&this.formView.destroy(),this.toolbarView&&this.toolbarView.destroy(),this.linkProviderItemsView&&this.linkProviderItemsView.destroy()}registerLinksListProvider(e){const t=this._linksProviders.filter(i=>(i.order||0)<=(e.order||0)).length;this._linksProviders.add(e,t)}_createViews(){const e=this.editor.commands.get("link");this.toolbarView=this._createToolbarView(),this.formView=this._createFormView(),e.manualDecorators.length&&(this.propertiesView=this._createPropertiesView()),this._enableUserBalloonInteractions()}_createToolbarView(){const e=this.editor,t=new Pe(e.locale),i=e.commands.get("link");t.class="ck-link-toolbar";let s=e.config.get("link.toolbar");return i.manualDecorators.length||(s=s.filter(n=>n!=="linkProperties")),t.fillFromConfig(s,e.ui.componentFactory),t.keystrokes.set("Esc",(n,o)=>{this._hideUI(),o()}),t.keystrokes.set(v,(n,o)=>{this._addFormView(),o()}),e.ui.addToolbar(t,{isContextual:!0,beforeFocus:()=>{this._getSelectedLinkElement()&&!this._isToolbarVisible&&this._showUI(!0)},afterBlur:()=>{this._hideUI(!1)}}),t}_createFormView(){const e=this.editor,t=e.locale.t,i=e.commands.get("link"),s=e.config.get("link.defaultProtocol"),n=new(W(nt))(e.locale,at(e));return n.displayedTextInputView.bind("isEnabled").to(this,"selectedLinkableText",o=>o!==void 0),n.urlInputView.bind("isEnabled").to(i,"isEnabled"),n.saveButtonView.bind("isEnabled").to(i,"isEnabled"),n.saveButtonView.bind("label").to(i,"value",o=>t(o?"Update":"Insert")),this.listenTo(n,"submit",()=>{if(n.isValid()){const o=n.urlInputView.fieldView.element.value,a=O(o,s),r=n.displayedTextInputView.fieldView.element.value;e.execute("link",a,this._getDecoratorSwitchesState(),r!==this.selectedLinkableText?r:void 0),this._closeFormView()}}),this.listenTo(n.urlInputView,"change:errorText",()=>{e.ui.update()}),this.listenTo(n,"cancel",()=>{this._closeFormView()}),n.keystrokes.set("Esc",(o,a)=>{this._closeFormView(),a()}),n.providersListChildren.bindTo(this._linksProviders).using(o=>this._createLinksListProviderButton(o)),n}_createLinkProviderListView(e){return e.getListItems().map(({href:t,label:i,icon:s})=>{const n=new w;return n.set({label:i,icon:s,tooltip:!1,withText:!0}),n.on("execute",()=>{this.formView.resetFormStatus(),this.formView.urlInputView.fieldView.value=t,this.editor.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()}),n})}_createLinkProviderItemsView(e){const t=this.editor,i=t.locale.t,s=new ot(t.locale),{emptyListPlaceholder:n,label:o}=e;return s.emptyListPlaceholder=n||i("No links available"),s.title=o,this.listenTo(s,"cancel",()=>{t.editing.view.focus(),this._removeLinksProviderView(),this.formView.focus()}),s}_createPropertiesView(){const e=this.editor,t=this.editor.commands.get("link"),i=new(W(rt))(e.locale);return this.listenTo(i,"back",()=>{e.editing.view.focus(),this._removePropertiesView()}),i.listChildren.bindTo(t.manualDecorators).using(s=>{const n=new Ee(e.locale);return n.set({label:s.label,withText:!0}),n.bind("isOn").toMany([s,t],"value",(o,a)=>a===void 0&&o===void 0?!!s.defaultValue:!!o),n.on("execute",()=>{s.set("value",!n.isOn),e.execute("link",t.value,this._getDecoratorSwitchesState())}),n}),i}_getDecoratorSwitchesState(){const e=this.editor.commands.get("link");return Array.from(e.manualDecorators).reduce((t,i)=>{const s=e.value===void 0&&i.value===void 0?i.defaultValue:i.value;return{...t,[i.id]:!!s}},{})}_registerEditingOpeners(){this.editor.plugins.get(_)._registerLinkOpener(t=>{const i=this._getLinkProviderLinkByHref(t);if(!i)return!1;const{item:s,provider:n}=i;return n.navigate?n.navigate(s):!1})}_registerComponents(){const e=this.editor;e.ui.componentFactory.add("link",()=>{const t=this._createButton(w);return t.set({tooltip:!0}),t}),e.ui.componentFactory.add("menuBar:link",()=>{const t=this._createButton(Ce);return t.set({role:"menuitemcheckbox"}),t}),e.ui.componentFactory.add("linkPreview",t=>{const i=new st(t),s=e.config.get("link.allowedProtocols"),n=e.commands.get("link"),o=t.t;i.bind("isEnabled").to(n,"value",r=>!!r),i.bind("href").to(n,"value",r=>r&&ne(r,s));const a=r=>{if(!r){i.label=void 0,i.icon=void 0,i.tooltip=o("Open link in new tab");return}const c=this._getLinkProviderLinkByHref(r);if(c){const{label:u,tooltip:h,icon:d}=c.item;i.label=u,i.tooltip=h||!1,i.icon=d}else i.label=r,i.icon=void 0,i.tooltip=o("Open link in new tab")};return a(n.value),this.listenTo(n,"change:value",(r,c,u)=>{a(u)}),this.listenTo(i,"navigate",(r,c,u)=>{const h=this._getLinkProviderLinkByHref(c);if(!h)return;const{provider:d,item:m}=h,{navigate:k}=d;k&&k(m)&&(r.stop(),u())}),i}),e.ui.componentFactory.add("unlink",t=>{const i=e.commands.get("unlink"),s=new w(t),n=t.t;return s.set({label:n("Unlink"),icon:Le,tooltip:!0}),s.bind("isEnabled").to(i),this.listenTo(s,"execute",()=>{e.execute("unlink"),this._hideUI()}),s}),e.ui.componentFactory.add("editLink",t=>{const i=e.commands.get("link"),s=new w(t),n=t.t;return s.set({label:n("Edit link"),icon:Ie,tooltip:!0}),s.bind("isEnabled").to(i),this.listenTo(s,"execute",()=>{this._addFormView()}),s}),e.ui.componentFactory.add("linkProperties",t=>{const i=e.commands.get("link"),s=new w(t),n=t.t;return s.set({label:n("Link properties"),icon:ye,tooltip:!0}),s.bind("isEnabled").to(i,"isEnabled",i,"value",i,"manualDecorators",(o,a,r)=>o&&!!a&&r.length>0),this.listenTo(s,"execute",()=>{this._addPropertiesView()}),s})}_createLinksListProviderButton(e){const t=this.editor.locale,i=new lt(t);return i.set({label:e.label}),this.listenTo(i,"execute",()=>{this._showLinksProviderView(e)}),i}_createButton(e){const t=this.editor,i=t.locale,s=t.commands.get("link"),n=new e(t.locale),o=i.t;return n.set({label:o("Link"),icon:se,keystroke:v,isToggleable:!0}),n.bind("isEnabled").to(s,"isEnabled"),n.bind("isOn").to(s,"value",a=>!!a),this.listenTo(n,"execute",()=>{t.editing.view.scrollToTheSelection(),this._showUI(!0),this._getSelectedLinkElement()&&this._addFormView()}),n}_enableBalloonActivators(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",()=>{this._getSelectedLinkElement()&&this._showUI()}),e.keystrokes.set(v,(i,s)=>{s(),e.commands.get("link").isEnabled&&(e.editing.view.scrollToTheSelection(),this._showUI(!0))})}_enableUserBalloonInteractions(){this.editor.keystrokes.set("Tab",(e,t)=>{this._isToolbarVisible&&!this.toolbarView.focusTracker.isFocused&&(this.toolbarView.focus(),t())},{priority:"high"}),this.editor.keystrokes.set("Esc",(e,t)=>{this._isUIVisible&&(this._hideUI(),t())}),Ae({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:()=>[this._balloon.view.element],callback:()=>{this._hideUI(!1)}})}_addToolbarView(){this.toolbarView||this._createViews(),!this._isToolbarInPanel&&this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"})}_addFormView(){if(this.formView||this._createViews(),this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this.formView.resetFormStatus(),this.formView.backButtonView.isVisible=e.isEnabled&&!!e.value,this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this.selectedLinkableText=this._getSelectedLinkableText(),this.formView.displayedTextInputView.fieldView.value=this.selectedLinkableText||"",this.formView.urlInputView.fieldView.value=e.value||"",this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions()}_addPropertiesView(){this.propertiesView||this._createViews(),!this._arePropertiesInPanel&&(this.propertiesView.disableCssTransitions(),this._balloon.add({view:this.propertiesView,position:this._getBalloonPositionData()}),this.propertiesView.enableCssTransitions(),this.propertiesView.focus())}_showLinksProviderView(e){this.linkProviderItemsView&&this._removeLinksProviderView(),this.linkProviderItemsView=this._createLinkProviderItemsView(e),this._addLinkProviderItemsView(e)}_addLinkProviderItemsView(e){this.linkProviderItemsView.listChildren.clear(),this.linkProviderItemsView.listChildren.addMany(this._createLinkProviderListView(e)),this._balloon.add({view:this.linkProviderItemsView,position:this._getBalloonPositionData()}),this.linkProviderItemsView.focus()}_closeFormView(){const e=this.editor.commands.get("link");this.selectedLinkableText=void 0,e.value!==void 0?this._removeFormView():this._hideUI()}_removePropertiesView(){this._arePropertiesInPanel&&this._balloon.remove(this.propertiesView)}_removeLinksProviderView(){this._isLinksListInPanel&&this._balloon.remove(this.linkProviderItemsView)}_removeFormView(e=!0){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this.formView.displayedTextInputView.fieldView.reset(),this.formView.urlInputView.fieldView.reset(),this._balloon.remove(this.formView),e&&this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this.formView||this._createViews(),this._getSelectedLinkElement()?(this._isToolbarVisible?this._addFormView():this._addToolbarView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addToolbarView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(e=!0){const t=this.editor;this._isUIInPanel&&(this.stopListening(t.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e&&t.editing.view.focus(),this._removeLinksProviderView(),this._removePropertiesView(),this._removeFormView(e),this._isToolbarInPanel&&this._balloon.remove(this.toolbarView),this._hideFakeVisualSelection())}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),s=o();const n=()=>{const a=this._getSelectedLinkElement(),r=o();i&&!a||!i&&r!==s?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=a,s=r};function o(){return t.selection.focus.getAncestors().reverse().find(a=>a.is("element"))}this.listenTo(e.ui,"update",n),this.listenTo(this._balloon,"change:visibleView",n)}get _arePropertiesInPanel(){return!!this.propertiesView&&this._balloon.hasView(this.propertiesView)}get _isLinksListInPanel(){return!!this.linkProviderItemsView&&this._balloon.hasView(this.linkProviderItemsView)}get _isFormInPanel(){return!!this.formView&&this._balloon.hasView(this.formView)}get _isToolbarInPanel(){return!!this.toolbarView&&this._balloon.hasView(this.toolbarView)}get _isPropertiesVisible(){return!!this.propertiesView&&this._balloon.visibleView===this.propertiesView}get _isFormVisible(){return!!this.formView&&this._balloon.visibleView==this.formView}get _isToolbarVisible(){return!!this.toolbarView&&this._balloon.visibleView===this.toolbarView}get _isUIInPanel(){return this._arePropertiesInPanel||this._isLinksListInPanel||this._isFormInPanel||this._isToolbarInPanel}get _isUIVisible(){return this._isPropertiesVisible||this._isLinksListInPanel||this._isFormVisible||this._isToolbarVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document;if(this.editor.model.markers.has(b)){const s=this.editor.editing.mapper.markerNameToElements(b);if(s){const n=Array.from(s),o=e.createRange(e.createPositionBefore(n[0]),e.createPositionAfter(n[n.length-1]));return{target:e.domConverter.viewRangeToDom(o)}}}return{target:()=>{const s=this._getSelectedLinkElement();return s?e.domConverter.mapViewToDom(s):e.domConverter.viewRangeToDom(t.selection.getFirstRange())}}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&Be(i))return T(t.getFirstPosition());{const s=t.getFirstRange().getTrimmed(),n=T(s.start),o=T(s.end);return!n||n!=o?null:e.createRangeIn(n).getTrimmed().isEqual(s)?n:null}}_getSelectedLinkableText(){const e=this.editor.model,t=this.editor.editing,i=this._getSelectedLinkElement();if(!i)return E(e.document.selection.getFirstRange());const s=t.view.createRangeOn(i),n=t.mapper.toModelRange(s);return E(n)}_getLinkProviderLinkByHref(e){if(!e)return null;for(const t of this._linksProviders){const i=t.getItem?t.getItem(e):t.getListItems().find(s=>s.href===e);if(i)return{provider:t,item:i}}return null}_showFakeVisualSelection(){const e=this.editor.model;e.change(t=>{const i=e.document.selection.getFirstRange();if(e.markers.has(b))t.updateMarker(b,{range:i});else if(i.start.isAtEnd){const s=i.start.getLastMatchingPosition(({item:n})=>!e.schema.isContent(n),{boundaries:i});t.addMarker(b,{usingOperation:!1,affectsData:!1,range:t.createRange(s,i.end)})}else t.addMarker(b,{usingOperation:!1,affectsData:!1,range:i})})}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(b)&&e.change(t=>{t.removeMarker(b)})}}function T(l){return l.getAncestors().find(e=>Ne(e))||null}function at(l){const e=l.t,t=l.config.get("link.allowCreatingEmptyLinks");return[i=>{if(!t&&!i.url.length)return e("Link URL must not be empty.")}]}const ct=4,le=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63}))|localhost)(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i"),dt=2;class ut extends p{static get requires(){return[ue,_]}static get pluginName(){return"AutoLink"}static get isOfficialPlugin(){return!0}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(e,t){return t.textNode&&t.textNode.hasAttribute("linkHref")?C(t,"linkHref",t.textNode.getAttribute("linkHref"),e):null}_selectEntireLinks(e,t){const s=this.editor.model,n=s.document.selection,o=n.getFirstPosition(),a=n.getLastPosition();let r=t.getJoined(this._expandLinkRange(s,o)||t);r&&(r=r.getJoined(this._expandLinkRange(s,a)||t)),r&&(r.start.isBefore(o)||r.end.isAfter(a))&&e.setSelection(r)}_enablePasteLinking(){const e=this.editor,t=e.model,i=t.document.selection,s=e.plugins.get("ClipboardPipeline"),n=e.commands.get("link");s.on("inputTransformation",(o,a)=>{if(!this.isEnabled||!n.isEnabled||i.isCollapsed||a.method!=="paste"||i.rangeCount>1)return;const r=i.getFirstRange(),c=a.dataTransfer.getData("text/plain");if(!c)return;const u=c.match(le);u&&u[2]===c&&(t.change(h=>{this._selectEntireLinks(h,r),n.execute(c)}),o.stop())},{priority:"high"})}_enableTypingHandling(){const e=this.editor,t=new he(e.model,i=>{let s=i;if(!ht(s))return;s=s.slice(0,-1),"!.:,;?".includes(s[s.length-1])&&(s=s.slice(0,-1));const n=Z(s);if(n)return{url:n,removedTrailingCharacters:i.length-s.length}});t.on("matched:data",(i,s)=>{const{batch:n,range:o,url:a,removedTrailingCharacters:r}=s;if(!n.isTyping)return;const c=o.end.getShiftedBy(-r),u=c.getShiftedBy(-a.length),h=e.model.createRange(u,c);this._applyAutoLink(a,h)}),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",()=>{const s=t.document.selection.getFirstPosition();let n;s.parent.previousSibling?.is("element")?n=t.createRangeIn(s.parent.previousSibling):n=t.createRange(t.createPositionAt(s.parent,0),s),this._checkAndApplyAutoLinkOnRange(n)})}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",()=>{const s=t.document.selection.getFirstPosition(),n=t.createRange(t.createPositionAt(s.parent,0),s.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(n)})}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:s}=me(e,t),n=Z(i);if(n){const o=t.createRange(s.end.getShiftedBy(-n.length),s.end);this._applyAutoLink(n,o)}}_applyAutoLink(e,t){const i=this.editor.model,s=this.editor.config.get("link.defaultProtocol"),n=O(e,s);!this.isEnabled||!mt(t,i)||!oe(n)||ft(t)||this._persistAutoLink(n,t)}_persistAutoLink(e,t){const i=this.editor.model,s=this.editor.plugins.get("Delete");i.enqueueChange(n=>{n.setAttribute("linkHref",e,t),i.enqueueChange(()=>{s.requestUndoOnBackspace()})})}}function ht(l){return l.length>ct&&l[l.length-1]===" "&&l[l.length-2]!==" "}function Z(l){const e=le.exec(l);return e?e[dt]:null}function mt(l,e){return e.schema.checkAttributeInSelection(e.createSelection(l),"linkHref")}function ft(l){const e=l.start.nodeAfter;return!!e&&e.hasAttribute("linkHref")}class xt extends p{static get requires(){return[_,re,ut]}static get pluginName(){return"Link"}static get isOfficialPlugin(){return!0}}class kt extends p{static get requires(){return["ImageEditing","ImageUtils",_]}static get pluginName(){return"LinkImageEditing"}static get isOfficialPlugin(){return!0}afterInit(){const e=this.editor,t=e.model.schema;e.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add(gt(e)),e.conversion.for("downcast").add(wt(e)),this._enableAutomaticDecorators(),this._enableManualDecorators()}_enableAutomaticDecorators(){const e=this.editor,i=e.commands.get("link").automaticDecorators;i.length&&e.conversion.for("downcast").add(i.getDispatcherForLinkedImage())}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:i.id}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:i.id}),e.conversion.for("downcast").add(bt(i)),e.conversion.for("upcast").add(pt(e,i))}}function gt(l){const e=l.plugins.has("ImageInlineEditing"),t=l.plugins.get("ImageUtils");return i=>{i.on("element:a",(s,n,o)=>{const a=n.viewItem,r=t.findViewImgElement(a);if(!r)return;const c=r.findAncestor(m=>t.isBlockImageView(m));if(e&&!c)return;const u={attributes:["href"]};if(!o.consumable.consume(a,u))return;const h=a.getAttribute("href");if(!h)return;let d=n.modelCursor.parent;if(!d.is("element","imageBlock")){const m=o.convertItem(r,n.modelCursor);n.modelRange=m.modelRange,n.modelCursor=m.modelCursor,d=n.modelCursor.nodeBefore}d&&d.is("element","imageBlock")&&o.writer.setAttribute("linkHref",h,d)},{priority:"high"})}}function wt(l){const e=l.plugins.get("ImageUtils");return t=>{t.on("attribute:linkHref:imageBlock",(i,s,n)=>{if(!n.consumable.consume(s.item,i.name))return;const o=n.mapper.toViewElement(s.item),a=n.writer,r=Array.from(o.getChildren()).find(h=>h.is("element","a")),c=e.findViewImgElement(o),u=c.parent.is("element","picture")?c.parent:c;if(r)s.attributeNewValue?a.setAttribute("href",s.attributeNewValue,r):(a.move(a.createRangeOn(u),a.createPositionAt(o,0)),a.remove(r));else{const h=a.createContainerElement("a",{href:s.attributeNewValue});a.insert(a.createPositionAt(o,0),h),a.move(a.createRangeOn(u),a.createPositionAt(h,0))}},{priority:"high"})}}function bt(l){return e=>{e.on(`attribute:${l.id}:imageBlock`,(t,i,s)=>{const n=s.mapper.toViewElement(i.item),o=Array.from(n.getChildren()).find(a=>a.is("element","a"));if(o){if(l.value===void 0){for(const a in l.attributes)s.writer.removeAttribute(a,o);l.classes&&s.writer.removeClass(l.classes,o);for(const a in l.styles)s.writer.removeStyle(a,o);return}for(const[a,r]of A(l.attributes))s.writer.setAttribute(a,r,o);l.classes&&s.writer.addClass(l.classes,o);for(const a in l.styles)s.writer.setStyle(a,l.styles[a],o)}})}}function pt(l,e){const t=l.plugins.has("ImageInlineEditing"),i=l.plugins.get("ImageUtils");return s=>{s.on("element:a",(n,o,a)=>{const r=o.viewItem,c=i.findViewImgElement(r);if(!c)return;const u=c.findAncestor(k=>i.isBlockImageView(k));if(t&&!u)return;const d=new ve(e._createPattern()).match(r);if(!d||!a.consumable.consume(r,d.match))return;const m=o.modelCursor.nodeBefore||o.modelCursor.parent;a.writer.setAttribute(e.id,!0,m)},{priority:"high"})}}class _t extends p{static get requires(){return[_,re,"ImageBlockEditing"]}static get pluginName(){return"LinkImageUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",(i,s)=>{this._isSelectedLinkedImage(e.model.document.selection)&&(s.preventDefault(),i.stop())},{priority:"high"}),this._createToolbarLinkImageButton()}_createToolbarLinkImageButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("linkImage",i=>{const s=new w(i),n=e.plugins.get("LinkUI"),o=e.commands.get("link");return s.set({isEnabled:!0,label:t("Link image"),icon:se,keystroke:v,tooltip:!0,isToggleable:!0}),s.bind("isEnabled").to(o,"isEnabled"),s.bind("isOn").to(o,"value",a=>!!a),this.listenTo(s,"execute",()=>{this._isSelectedLinkedImage(e.model.document.selection)?n._addToolbarView():n._showUI(!0)}),s})}_isSelectedLinkedImage(e){const t=e.getSelectedElement();return this.editor.plugins.get("ImageUtils").isImage(t)&&t.hasAttribute("linkHref")}}class St extends p{static get requires(){return[kt,_t]}static get pluginName(){return"LinkImage"}static get isOfficialPlugin(){return!0}}export{ut as AutoLink,xt as Link,We as LinkCommand,_ as LinkEditing,nt as LinkFormView,St as LinkImage,kt as LinkImageEditing,_t as LinkImageUI,re as LinkUI,Je as UnlinkCommand,O as addLinkProtocolIfApplicable,ne as ensureSafeUrl,P as isLinkableElement};
@@ -1,13 +1,13 @@
1
- var Fe=Object.defineProperty;var Oe=(s,i,e)=>i in s?Fe(s,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[i]=e;var p=(s,i,e)=>Oe(s,typeof i!="symbol"?i+"":i,e);import{Plugin as w,Command as v}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Delete as Re}from"../../../../../@ckeditor_ckeditor5-typing@45.2.1/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{Enter as Me}from"../../../../../@ckeditor_ckeditor5-enter@45.2.1/node_modules/@ckeditor/ckeditor5-enter/dist/index.js";import{CKEditorError as De,getCode as Ue,toArray as L,first as U,parseKeystroke as $e,getLocalizedArrowKeyCodeDirection as Ke,uid as We,FocusTracker as te,KeystrokeHandler as ie,global as je}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{ClipboardPipeline as qe}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.1/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{createDropdown as He,SplitButtonView as Ye,MenuBarMenuView as ze,ButtonView as Z,MenuBarMenuListItemButtonView as Ge,focusChildOnDropdownOpen as Ze,View as se,ViewCollection as Je,FocusCycler as Qe,addKeyboardHandlingForGrid as Xe,CollapsibleView as et,LabeledFieldView as tt,createLabeledInputNumber as it,SwitchButtonView as st}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconListStyleDisc as nt,IconListStyleCircle as rt,IconListStyleSquare as ot,IconListStyleDecimal as lt,IconListStyleDecimalLeadingZero as ct,IconListStyleLowerRoman as at,IconListStyleUpperRoman as ut,IconListStyleLowerLatin as dt,IconListStyleUpperLatin as ft,IconBulletedList as J,IconNumberedList as Q,IconTodoList as mt}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{DomEventObserver as pt,Matcher as ye}from"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";/**
1
+ import{Plugin as I,Command as T}from"../../../../../@ckeditor_ckeditor5-core@45.2.1/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Delete as Ne}from"../../../../../@ckeditor_ckeditor5-typing@45.2.1/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{Enter as Fe}from"../../../../../@ckeditor_ckeditor5-enter@45.2.1/node_modules/@ckeditor/ckeditor5-enter/dist/index.js";import{CKEditorError as Oe,getCode as Re,toArray as k,first as D,parseKeystroke as Me,getLocalizedArrowKeyCodeDirection as De,uid as Ue,FocusTracker as ee,KeystrokeHandler as te,global as $e}from"../../../../../@ckeditor_ckeditor5-utils@45.2.1/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{ClipboardPipeline as Ke}from"../../../../../@ckeditor_ckeditor5-clipboard@45.2.1/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{createDropdown as We,SplitButtonView as je,MenuBarMenuView as qe,ButtonView as G,MenuBarMenuListItemButtonView as He,focusChildOnDropdownOpen as Ye,View as ie,ViewCollection as ze,FocusCycler as Ge,addKeyboardHandlingForGrid as Ze,CollapsibleView as Je,LabeledFieldView as Qe,createLabeledInputNumber as Xe,SwitchButtonView as et}from"../../../../../@ckeditor_ckeditor5-ui@45.2.1/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconListStyleDisc as tt,IconListStyleCircle as it,IconListStyleSquare as st,IconListStyleDecimal as nt,IconListStyleDecimalLeadingZero as rt,IconListStyleLowerRoman as ot,IconListStyleUpperRoman as lt,IconListStyleLowerLatin as ct,IconListStyleUpperLatin as at,IconBulletedList as Z,IconNumberedList as J,IconTodoList as ut}from"../../../../../@ckeditor_ckeditor5-icons@45.2.1/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{DomEventObserver as dt,Matcher as be}from"../../../../../@ckeditor_ckeditor5-engine@45.2.1/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";/**
2
2
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
3
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */class y{constructor(i,e){p(this,"_startElement");p(this,"_referenceIndent");p(this,"_isForward");p(this,"_includeSelf");p(this,"_sameAttributes");p(this,"_sameIndent");p(this,"_lowerIndent");p(this,"_higherIndent");this._startElement=i,this._referenceIndent=i.getAttribute("listIndent"),this._isForward=e.direction=="forward",this._includeSelf=!!e.includeSelf,this._sameAttributes=L(e.sameAttributes||[]),this._sameIndent=!!e.sameIndent,this._lowerIndent=!!e.lowerIndent,this._higherIndent=!!e.higherIndent}static first(i,e){const n=new this(i,e)[Symbol.iterator]();return U(n)}*[Symbol.iterator](){const i=[];for(const{node:e}of new N(this._getStartNode(),this._isForward?"forward":"backward")){const t=e.getAttribute("listIndent");if(t<this._referenceIndent){if(!this._lowerIndent)break;this._referenceIndent=t}else if(t>this._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){i.push(e);continue}}else{if(!this._sameIndent){if(this._higherIndent){i.length&&(yield*i,i.length=0);break}continue}if(this._sameAttributes.some(n=>e.getAttribute(n)!==this._startElement.getAttribute(n)))break}i.length&&(yield*i,i.length=0),yield e}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}class N{constructor(i,e="forward"){p(this,"_node");p(this,"_isForward");p(this,"_previousNodesByIndent",[]);p(this,"_previous",null);p(this,"_previousNodeIndent",null);this._node=i,this._isForward=e==="forward"}[Symbol.iterator](){return this}next(){if(!h(this._node))return{done:!0,value:void 0};const i=this._node.getAttribute("listIndent");let e=null;if(this._previous){const n=this._previousNodeIndent;i>n?this._previousNodesByIndent[n]=this._previous:i<n?(e=this._previousNodesByIndent[i]||null,this._previousNodesByIndent.length=i):e=this._previous}const t={node:this._node,previous:this._previous,previousNodeInList:e};return this._previous=this._node,this._previousNodeIndent=i,this._node=this._isForward?this._node.nextSibling:this._node.previousSibling,{value:t,done:!1}}}class ht{constructor(i){p(this,"_listHead");this._listHead=i}[Symbol.iterator](){return new N(this._listHead)}}class _{static next(){return We()}}function h(s){return!!s&&s.is("element")&&s.hasAttribute("listItemId")}function C(s,i={}){return[...T(s,{...i,direction:"backward"}),...T(s,{...i,direction:"forward"})]}function T(s,i={}){const e=i.direction=="forward",t=Array.from(new y(s,{...i,includeSelf:e,sameIndent:!0,sameAttributes:"listItemId"}));return e?t:t.reverse()}function gt(s){return Array.from(new y(s,{direction:"forward",higherIndent:!0}))}function Ie(s,i){const e=new y(s,{sameIndent:!0,sameAttributes:"listType",...i}),t=new y(s,{sameIndent:!0,sameAttributes:"listType",includeSelf:!0,direction:"forward",...i});return[...Array.from(e).reverse(),...t]}function k(s){return!y.first(s,{sameIndent:!0,sameAttributes:"listItemId"})}function ne(s){return!y.first(s,{direction:"forward",sameIndent:!0,sameAttributes:"listItemId"})}function F(s,i={}){s=L(s);const e=i.withNested!==!1,t=new Set;for(const n of s)for(const r of C(n,{higherIndent:e}))t.add(r);return S(t)}function $(s){s=L(s);const i=new Set;for(const e of s)for(const t of Ie(e))i.add(t);return S(i)}function X(s,i){const e=T(s,{direction:"forward"}),t=_.next();for(const n of e)i.setAttribute("listItemId",t,n);return e}function q(s,i,e){const t={};for(const[r,o]of i.getAttributes())r.startsWith("list")&&(t[r]=o);const n=T(s,{direction:"forward"});for(const r of n)e.setAttributes(t,r);return n}function H(s,i,{expand:e,indentBy:t=1}={}){s=L(s);const n=e?F(s):s;for(const r of n){const o=r.getAttribute("listIndent")+t;o<0?K(r,i):i.setAttribute("listIndent",o,r)}return n}function bt(s,i){s=L(s);const e=F(s),t=new Set,n=Math.min(...e.map(o=>o.getAttribute("listIndent"))),r=new Map;for(const o of e)r.set(o,y.first(o,{lowerIndent:!0}));for(const o of e){if(t.has(o))continue;t.add(o);const l=o.getAttribute("listIndent")-1;if(l<0){K(o,i);continue}if(o.getAttribute("listIndent")==n){const c=It(o,r.get(o),i);for(const a of c)t.add(a);if(c.length)continue}i.setAttribute("listIndent",l,o)}return S(t)}function K(s,i){s=L(s);for(const e of s)e.is("element","listItem")&&i.rename(e,"paragraph");for(const e of s)for(const t of e.getAttributeKeys())t.startsWith("list")&&i.removeAttribute(t,e);return s}function B(s){if(!s.length)return!1;const i=s[0].getAttribute("listItemId");return i?!s.some(e=>e.getAttribute("listItemId")!=i):!1}function yt(s,i){const e=[];let t=Number.POSITIVE_INFINITY;for(const{node:n}of new N(s.nextSibling)){const r=n.getAttribute("listIndent");if(r==0)break;r<t&&(t=r);const o=r-t;i.setAttribute("listIndent",o,n),e.push(n)}return e}function S(s){return Array.from(s).filter(i=>i.root.rootName!=="$graveyard").sort((i,e)=>i.index-e.index)}function P(s){const i=s.document.selection.getSelectedElement();return i&&s.schema.isObject(i)&&s.schema.isBlock(i)?i:null}function W(s,i){return i.checkChild(s.parent,"listItem")&&i.checkChild(s,"$text")&&!i.isObject(s)}function D(s){return s=="numbered"||s=="customNumbered"}function It(s,i,e){return T(i,{direction:"forward"}).pop().index>s.index?q(s,i,e):[]}class re extends v{constructor(e,t){super(e);p(this,"_direction");this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute(){const e=this.editor.model,t=oe(e.document.selection);e.change(n=>{const r=[];B(t)&&!k(t[0])?(this._direction=="forward"&&r.push(...H(t,n)),r.push(...X(t[0],n))):this._direction=="forward"?r.push(...H(t,n,{expand:!0})):r.push(...bt(t,n));for(const o of r){if(!o.hasAttribute("listType"))continue;const l=y.first(o,{sameIndent:!0});l&&n.setAttribute("listType",l.getAttribute("listType"),o)}this._fireAfterExecute(r)})}_fireAfterExecute(e){this.fire("afterExecute",S(new Set(e)))}_checkEnabled(){let e=oe(this.editor.model.document.selection),t=e[0];if(!t)return!1;if(this._direction=="backward"||B(e)&&!k(e[0]))return!0;e=F(e),t=e[0];const n=y.first(t,{sameIndent:!0});return n?n.getAttribute("listType")==t.getAttribute("listType"):!1}}function oe(s){const i=Array.from(s.getSelectedBlocks()),e=i.findIndex(t=>!h(t));return e!=-1&&(i.length=e),i}class E extends v{constructor(e,t,n={}){super(e);p(this,"type");p(this,"_listWalkerOptions");this.type=t,this._listWalkerOptions=n.multiLevel?{higherIndent:!0,lowerIndent:!0,sameAttributes:[]}:void 0}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,n=t.document,r=P(t),o=Array.from(n.selection.getSelectedBlocks()).filter(c=>t.schema.checkAttribute(c,"listType")||W(c,t.schema)),l=e.forceValue!==void 0?!e.forceValue:this.value;t.change(c=>{if(l){const a=o[o.length-1],u=T(a,{direction:"forward"}),d=[];u.length>1&&d.push(...X(u[1],c)),d.push(...K(o,c)),d.push(...yt(a,c)),this._fireAfterExecute(d)}else if((r||n.selection.isCollapsed)&&h(o[0])){const a=Ie(r||o[0],this._listWalkerOptions);for(const u of a)c.setAttributes({...e.additionalAttributes,listType:this.type},u);this._fireAfterExecute(a)}else{const a=[];for(const u of o)if(!u.hasAttribute("listType"))!u.is("element","listItem")&&W(u,t.schema)&&c.rename(u,"listItem"),c.setAttributes({...e.additionalAttributes,listIndent:0,listItemId:_.next(),listType:this.type},u),a.push(u);else for(const d of F(u,{withNested:!1}))d.getAttribute("listType")!=this.type&&(c.setAttributes({...e.additionalAttributes,listType:this.type},d),a.push(d));this._fireAfterExecute(a)}})}_fireAfterExecute(e){this.fire("afterExecute",S(new Set(e)))}_getValue(){const e=this.editor.model.document.selection,t=Array.from(e.getSelectedBlocks());if(!t.length)return!1;for(const n of t)if(n.getAttribute("listType")!=this.type)return!1;return!0}_checkEnabled(){const e=this.editor.model,t=e.schema,n=e.document.selection,r=Array.from(n.getSelectedBlocks());if(!r.length)return!1;if(this.value)return!0;for(const o of r)if(t.checkAttribute(o,"listType")||W(o,t))return!0;return!1}}class le extends v{constructor(e,t){super(e);p(this,"_direction");this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute({shouldMergeOnBlocksContentLevel:e=!1}={}){const t=this.editor.model,n=t.document.selection,r=[];t.change(o=>{const{firstElement:l,lastElement:c}=this._getMergeSubjectElements(n,e),a=l.getAttribute("listIndent")||0,u=c.getAttribute("listIndent"),d=c.getAttribute("listItemId");if(a!=u){const f=gt(c);r.push(...H([c,...f],o,{indentBy:a-u,expand:a<u}))}if(e){let f=n;n.isCollapsed&&(f=o.createSelection(o.createRange(o.createPositionAt(l,"end"),o.createPositionAt(c,0)))),t.deleteContent(f,{doNotResetEntireContent:n.isCollapsed});const m=f.getLastPosition().parent,g=m.nextSibling;r.push(m),g&&g!==c&&g.getAttribute("listItemId")==d&&r.push(...q(g,m,o))}else r.push(...q(c,l,o));this._fireAfterExecute(r)})}_fireAfterExecute(e){this.fire("afterExecute",S(new Set(e)))}_checkEnabled(){const e=this.editor.model,t=e.document.selection,n=P(e);if(t.isCollapsed||n){const r=n||t.getFirstPosition().parent;if(!h(r))return!1;const o=this._direction=="backward"?r.previousSibling:r.nextSibling;if(!o||B([r,o]))return!1}else{const r=t.getLastPosition(),o=t.getFirstPosition();if(r.parent===o.parent||!h(r.parent))return!1}return!0}_getMergeSubjectElements(e,t){const n=this.editor.model,r=P(n);let o,l;if(e.isCollapsed||r){const c=r||e.getFirstPosition().parent,a=k(c);this._direction=="backward"?(l=c,a&&!t?o=y.first(c,{sameIndent:!0,lowerIndent:!0}):o=c.previousSibling):(o=c,l=c.nextSibling)}else o=e.getFirstPosition().parent,l=e.getLastPosition().parent;return{firstElement:o,lastElement:l}}}class ce extends v{constructor(e,t){super(e);p(this,"_direction");this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute(){this.editor.model.change(t=>{const n=X(this._getStartBlock(),t);this._fireAfterExecute(n)})}_fireAfterExecute(e){this.fire("afterExecute",S(new Set(e)))}_checkEnabled(){const e=this.editor.model.document.selection,t=this._getStartBlock();return e.isCollapsed&&h(t)&&!k(t)}_getStartBlock(){const t=this.editor.model.document.selection.getFirstPosition().parent;return this._direction=="before"?t:t.nextSibling}}class wt extends w{static get pluginName(){return"ListUtils"}static get isOfficialPlugin(){return!0}expandListBlocksToCompleteList(i){return $(i)}isFirstBlockOfListItem(i){return k(i)}isListItemBlock(i){return h(i)}expandListBlocksToCompleteItems(i,e={}){return F(i,e)}isNumberedListType(i){return D(i)}}/**
4
+ */class b{_startElement;_referenceIndent;_isForward;_includeSelf;_sameAttributes;_sameIndent;_lowerIndent;_higherIndent;constructor(e,t){this._startElement=e,this._referenceIndent=e.getAttribute("listIndent"),this._isForward=t.direction=="forward",this._includeSelf=!!t.includeSelf,this._sameAttributes=k(t.sameAttributes||[]),this._sameIndent=!!t.sameIndent,this._lowerIndent=!!t.lowerIndent,this._higherIndent=!!t.higherIndent}static first(e,t){const n=new this(e,t)[Symbol.iterator]();return D(n)}*[Symbol.iterator](){const e=[];for(const{node:t}of new V(this._getStartNode(),this._isForward?"forward":"backward")){const i=t.getAttribute("listIndent");if(i<this._referenceIndent){if(!this._lowerIndent)break;this._referenceIndent=i}else if(i>this._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){e.push(t);continue}}else{if(!this._sameIndent){if(this._higherIndent){e.length&&(yield*e,e.length=0);break}continue}if(this._sameAttributes.some(n=>t.getAttribute(n)!==this._startElement.getAttribute(n)))break}e.length&&(yield*e,e.length=0),yield t}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}class V{_node;_isForward;_previousNodesByIndent=[];_previous=null;_previousNodeIndent=null;constructor(e,t="forward"){this._node=e,this._isForward=t==="forward"}[Symbol.iterator](){return this}next(){if(!p(this._node))return{done:!0,value:void 0};const e=this._node.getAttribute("listIndent");let t=null;if(this._previous){const n=this._previousNodeIndent;e>n?this._previousNodesByIndent[n]=this._previous:e<n?(t=this._previousNodesByIndent[e]||null,this._previousNodesByIndent.length=e):t=this._previous}const i={node:this._node,previous:this._previous,previousNodeInList:t};return this._previous=this._node,this._previousNodeIndent=e,this._node=this._isForward?this._node.nextSibling:this._node.previousSibling,{value:i,done:!1}}}class ft{_listHead;constructor(e){this._listHead=e}[Symbol.iterator](){return new V(this._listHead)}}class S{static next(){return Ue()}}function p(s){return!!s&&s.is("element")&&s.hasAttribute("listItemId")}function _(s,e={}){return[...L(s,{...e,direction:"backward"}),...L(s,{...e,direction:"forward"})]}function L(s,e={}){const t=e.direction=="forward",i=Array.from(new b(s,{...e,includeSelf:t,sameIndent:!0,sameAttributes:"listItemId"}));return t?i:i.reverse()}function mt(s){return Array.from(new b(s,{direction:"forward",higherIndent:!0}))}function ye(s,e){const t=new b(s,{sameIndent:!0,sameAttributes:"listType",...e}),i=new b(s,{sameIndent:!0,sameAttributes:"listType",includeSelf:!0,direction:"forward",...e});return[...Array.from(t).reverse(),...i]}function A(s){return!b.first(s,{sameIndent:!0,sameAttributes:"listItemId"})}function se(s){return!b.first(s,{direction:"forward",sameIndent:!0,sameAttributes:"listItemId"})}function N(s,e={}){s=k(s);const t=e.withNested!==!1,i=new Set;for(const n of s)for(const r of _(n,{higherIndent:t}))i.add(r);return v(i)}function U(s){s=k(s);const e=new Set;for(const t of s)for(const i of ye(t))e.add(i);return v(e)}function Q(s,e){const t=L(s,{direction:"forward"}),i=S.next();for(const n of t)e.setAttribute("listItemId",i,n);return t}function j(s,e,t){const i={};for(const[r,l]of e.getAttributes())r.startsWith("list")&&(i[r]=l);const n=L(s,{direction:"forward"});for(const r of n)t.setAttributes(i,r);return n}function q(s,e,{expand:t,indentBy:i=1}={}){s=k(s);const n=t?N(s):s;for(const r of n){const l=r.getAttribute("listIndent")+i;l<0?$(r,e):e.setAttribute("listIndent",l,r)}return n}function pt(s,e){s=k(s);const t=N(s),i=new Set,n=Math.min(...t.map(l=>l.getAttribute("listIndent"))),r=new Map;for(const l of t)r.set(l,b.first(l,{lowerIndent:!0}));for(const l of t){if(i.has(l))continue;i.add(l);const o=l.getAttribute("listIndent")-1;if(o<0){$(l,e);continue}if(l.getAttribute("listIndent")==n){const c=gt(l,r.get(l),e);for(const a of c)i.add(a);if(c.length)continue}e.setAttribute("listIndent",o,l)}return v(i)}function $(s,e){s=k(s);for(const t of s)t.is("element","listItem")&&e.rename(t,"paragraph");for(const t of s)for(const i of t.getAttributeKeys())i.startsWith("list")&&e.removeAttribute(i,t);return s}function E(s){if(!s.length)return!1;const e=s[0].getAttribute("listItemId");return e?!s.some(t=>t.getAttribute("listItemId")!=e):!1}function ht(s,e){const t=[];let i=Number.POSITIVE_INFINITY;for(const{node:n}of new V(s.nextSibling)){const r=n.getAttribute("listIndent");if(r==0)break;r<i&&(i=r);const l=r-i;e.setAttribute("listIndent",l,n),t.push(n)}return t}function v(s){return Array.from(s).filter(e=>e.root.rootName!=="$graveyard").sort((e,t)=>e.index-t.index)}function B(s){const e=s.document.selection.getSelectedElement();return e&&s.schema.isObject(e)&&s.schema.isBlock(e)?e:null}function K(s,e){return e.checkChild(s.parent,"listItem")&&e.checkChild(s,"$text")&&!e.isObject(s)}function M(s){return s=="numbered"||s=="customNumbered"}function gt(s,e,t){return L(e,{direction:"forward"}).pop().index>s.index?j(s,e,t):[]}class ne extends T{_direction;constructor(e,t){super(e),this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute(){const e=this.editor.model,t=re(e.document.selection);e.change(i=>{const n=[];E(t)&&!A(t[0])?(this._direction=="forward"&&n.push(...q(t,i)),n.push(...Q(t[0],i))):this._direction=="forward"?n.push(...q(t,i,{expand:!0})):n.push(...pt(t,i));for(const r of n){if(!r.hasAttribute("listType"))continue;const l=b.first(r,{sameIndent:!0});l&&i.setAttribute("listType",l.getAttribute("listType"),r)}this._fireAfterExecute(n)})}_fireAfterExecute(e){this.fire("afterExecute",v(new Set(e)))}_checkEnabled(){let e=re(this.editor.model.document.selection),t=e[0];if(!t)return!1;if(this._direction=="backward"||E(e)&&!A(e[0]))return!0;e=N(e),t=e[0];const i=b.first(t,{sameIndent:!0});return i?i.getAttribute("listType")==t.getAttribute("listType"):!1}}function re(s){const e=Array.from(s.getSelectedBlocks()),t=e.findIndex(i=>!p(i));return t!=-1&&(e.length=t),e}class x extends T{type;_listWalkerOptions;constructor(e,t,i={}){super(e),this.type=t,this._listWalkerOptions=i.multiLevel?{higherIndent:!0,lowerIndent:!0,sameAttributes:[]}:void 0}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.document,n=B(t),r=Array.from(i.selection.getSelectedBlocks()).filter(o=>t.schema.checkAttribute(o,"listType")||K(o,t.schema)),l=e.forceValue!==void 0?!e.forceValue:this.value;t.change(o=>{if(l){const c=r[r.length-1],a=L(c,{direction:"forward"}),u=[];a.length>1&&u.push(...Q(a[1],o)),u.push(...$(r,o)),u.push(...ht(c,o)),this._fireAfterExecute(u)}else if((n||i.selection.isCollapsed)&&p(r[0])){const c=ye(n||r[0],this._listWalkerOptions);for(const a of c)o.setAttributes({...e.additionalAttributes,listType:this.type},a);this._fireAfterExecute(c)}else{const c=[];for(const a of r)if(!a.hasAttribute("listType"))!a.is("element","listItem")&&K(a,t.schema)&&o.rename(a,"listItem"),o.setAttributes({...e.additionalAttributes,listIndent:0,listItemId:S.next(),listType:this.type},a),c.push(a);else for(const u of N(a,{withNested:!1}))u.getAttribute("listType")!=this.type&&(o.setAttributes({...e.additionalAttributes,listType:this.type},u),c.push(u));this._fireAfterExecute(c)}})}_fireAfterExecute(e){this.fire("afterExecute",v(new Set(e)))}_getValue(){const e=this.editor.model.document.selection,t=Array.from(e.getSelectedBlocks());if(!t.length)return!1;for(const i of t)if(i.getAttribute("listType")!=this.type)return!1;return!0}_checkEnabled(){const e=this.editor.model,t=e.schema,i=e.document.selection,n=Array.from(i.getSelectedBlocks());if(!n.length)return!1;if(this.value)return!0;for(const r of n)if(t.checkAttribute(r,"listType")||K(r,t))return!0;return!1}}class oe extends T{_direction;constructor(e,t){super(e),this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute({shouldMergeOnBlocksContentLevel:e=!1}={}){const t=this.editor.model,i=t.document.selection,n=[];t.change(r=>{const{firstElement:l,lastElement:o}=this._getMergeSubjectElements(i,e),c=l.getAttribute("listIndent")||0,a=o.getAttribute("listIndent"),u=o.getAttribute("listItemId");if(c!=a){const d=mt(o);n.push(...q([o,...d],r,{indentBy:c-a,expand:c<a}))}if(e){let d=i;i.isCollapsed&&(d=r.createSelection(r.createRange(r.createPositionAt(l,"end"),r.createPositionAt(o,0)))),t.deleteContent(d,{doNotResetEntireContent:i.isCollapsed});const f=d.getLastPosition().parent,m=f.nextSibling;n.push(f),m&&m!==o&&m.getAttribute("listItemId")==u&&n.push(...j(m,f,r))}else n.push(...j(o,l,r));this._fireAfterExecute(n)})}_fireAfterExecute(e){this.fire("afterExecute",v(new Set(e)))}_checkEnabled(){const e=this.editor.model,t=e.document.selection,i=B(e);if(t.isCollapsed||i){const n=i||t.getFirstPosition().parent;if(!p(n))return!1;const r=this._direction=="backward"?n.previousSibling:n.nextSibling;if(!r||E([n,r]))return!1}else{const n=t.getLastPosition(),r=t.getFirstPosition();if(n.parent===r.parent||!p(n.parent))return!1}return!0}_getMergeSubjectElements(e,t){const i=this.editor.model,n=B(i);let r,l;if(e.isCollapsed||n){const o=n||e.getFirstPosition().parent,c=A(o);this._direction=="backward"?(l=o,c&&!t?r=b.first(o,{sameIndent:!0,lowerIndent:!0}):r=o.previousSibling):(r=o,l=o.nextSibling)}else r=e.getFirstPosition().parent,l=e.getLastPosition().parent;return{firstElement:r,lastElement:l}}}class le extends T{_direction;constructor(e,t){super(e),this._direction=t}refresh(){this.isEnabled=this._checkEnabled()}execute(){this.editor.model.change(t=>{const i=Q(this._getStartBlock(),t);this._fireAfterExecute(i)})}_fireAfterExecute(e){this.fire("afterExecute",v(new Set(e)))}_checkEnabled(){const e=this.editor.model.document.selection,t=this._getStartBlock();return e.isCollapsed&&p(t)&&!A(t)}_getStartBlock(){const t=this.editor.model.document.selection.getFirstPosition().parent;return this._direction=="before"?t:t.nextSibling}}class bt extends I{static get pluginName(){return"ListUtils"}static get isOfficialPlugin(){return!0}expandListBlocksToCompleteList(e){return U(e)}isFirstBlockOfListItem(e){return A(e)}isListItemBlock(e){return p(e)}expandListBlocksToCompleteItems(e,t={}){return N(e,t)}isNumberedListType(e){return M(e)}}/**
5
5
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
6
6
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
7
- */function At(s){return s.is("element","ol")||s.is("element","ul")}function Y(s){return s.is("element","li")}function kt(s){let i=0,e=s.parent;for(;e;){if(Y(e))i++;else{const t=e.previousSibling;t&&Y(t)&&i++}e=e.parent}return i}function Lt(s,i,e,t=Ae(e,i)){return s.createAttributeElement(we(e),null,{priority:2*i/100-100,id:t})}function Tt(s,i,e){return s.createAttributeElement("li",null,{priority:(2*i+1)/100-100,id:e})}function we(s){return s=="numbered"||s=="customNumbered"?"ol":"ul"}function Ae(s,i){return`list-${s}-${i}`}function I(s,i,e){const t=s.nodeBefore;if(h(t)){let n=t;for(const{node:r}of new N(n,"backward"))if(n=r,e.has(n)||(e.add(n),i.has(t)))return;i.add(n)}else{const n=s.nodeAfter;h(n)&&i.add(n)}}function vt(s,i){let e=0,t=-1,n=null,r=!1;for(const{node:o}of s){const l=o.getAttribute("listIndent");if(l>e){let c;n===null?(n=l-e,c=e):(n>l&&(n=l),c=l-n),c>t+1&&(c=t+1),i.setAttribute("listIndent",c,o),r=!0,t=c}else n=null,e=l+1,t=l}return r}function St(s,i,e){const t=new Set;let n=!1;for(const{node:r}of s){if(t.has(r))continue;let o=r.getAttribute("listType"),l=r.getAttribute("listItemId");if(i.has(l)&&(l=_.next()),i.add(l),r.is("element","listItem")){r.getAttribute("listItemId")!=l&&(e.setAttribute("listItemId",l,r),n=!0);continue}for(const c of T(r,{direction:"forward"}))t.add(c),c.getAttribute("listType")!=o&&(l=_.next(),o=c.getAttribute("listType")),c.getAttribute("listItemId")!=l&&(e.setAttribute("listItemId",l,c),n=!0)}return n}function _t(){return(s,i,e)=>{const{writer:t,schema:n}=e;if(!i.modelRange)return;const r=Array.from(i.modelRange.getItems({shallow:!0})).filter(d=>n.checkAttribute(d,"listItemId"));if(!r.length)return;const o=_.next(),l=kt(i.viewItem);let c=i.viewItem.parent&&i.viewItem.parent.is("element","ol")?"numbered":"bulleted";const a=r[0].getAttribute("listType");a&&(c=a);const u={listItemId:o,listIndent:l,listType:c};for(const d of r)d.hasAttribute("listItemId")||t.setAttributes(u,d);r.length>1&&r[1].getAttribute("listItemId")!=u.listItemId&&e.keepEmptyElement(r[0])}}function Ct(s,i,e,t){return()=>{const l=s.document.differ.getChanges(),c=[],a=new Set,u=new Set,d=new Set;for(const f of l)if(f.type=="insert"&&f.name!="$text")I(f.position,a,d),f.attributes.has("listItemId")?u.add(f.position.nodeAfter):I(f.position.getShiftedBy(f.length),a,d);else if(f.type=="remove"&&f.attributes.has("listItemId"))I(f.position,a,d);else if(f.type=="attribute"){const m=f.range.start.nodeAfter;e.includes(f.attributeKey)?(I(f.range.start,a,d),f.attributeNewValue===null?(I(f.range.start.getShiftedBy(1),a,d),r(m)&&c.push(m)):u.add(m)):h(m)&&r(m)&&c.push(m)}for(const f of a.values())c.push(...n(f,u));for(const f of new Set(c))i.reconvertItem(f)};function n(l,c){const a=[],u=new Set,d=[];for(const{node:f,previous:m}of new N(l)){if(u.has(f))continue;const g=f.getAttribute("listIndent");m&&g<m.getAttribute("listIndent")&&(d.length=g+1),d[g]=Object.fromEntries(Array.from(f.getAttributes()).filter(([b])=>e.includes(b)));const A=T(f,{direction:"forward"});for(const b of A)u.add(b),(r(b,A)||o(b,d,c))&&a.push(b)}return a}function r(l,c){const a=i.mapper.toViewElement(l);if(!a)return!1;if(t.fire("checkElement",{modelElement:l,viewElement:a}))return!0;if(!l.is("element","paragraph")&&!l.is("element","listItem"))return!1;const d=Le(l,e,c);return d&&a.is("element","p")?!0:!!(!d&&a.is("element","span"))}function o(l,c,a){if(a.has(l))return!1;const u=i.mapper.toViewElement(l);let d=c.length-1;for(let f=u.parent;!f.is("editableElement");f=f.parent){const m=Y(f),g=At(f);if(!g&&!m)continue;const A=`checkAttributes:${m?"item":"list"}`;if(t.fire(A,{viewElement:f,modelAttributes:c[d]}))break;if(g&&(d--,d<0))return!1}return!0}}function ae(s,i,e,{dataPipeline:t}={}){const n=Ft(s);return(r,o,l)=>{const{writer:c,mapper:a,consumable:u}=l,d=o.item;if(!s.includes(o.attributeKey)||!n(d,u))return;const f=Et(d,a,e);ke(f,c,a),Vt(f,c);const m=Pt(d,f,i,c,{dataPipeline:t});Nt(d,m,i,c)}}function xt(s){return(i,e,t)=>{const{writer:n,mapper:r}=t,o=i.name.split(":")[1];if(!s.checkAttribute(o,"listItemId"))return;const l=r.toViewPosition(e.position),c=e.position.getShiftedBy(e.length),a=r.toViewPosition(c,{isPhantom:!0}),d=n.createRange(l,a).getTrimmed().end.nodeBefore;/* istanbul ignore next -- @preserve */d&&ke(d,n,r)}}function ue(s,{dataPipeline:i}={}){return(e,{writer:t})=>{if(!Le(e,s))return null;if(!i)return t.createContainerElement("span",{class:"ck-list-bogus-paragraph"});const n=t.createContainerElement("p");return t.setCustomProperty("dataPipeline:transparentRendering",!0,n),n}}function Et(s,i,e){const t=e.createRangeOn(s);return i.toViewRange(t).getTrimmed().end.nodeBefore}function Bt(s,i){return(e,t)=>{if(t.modelPosition.offset>0)return;const n=t.modelPosition.parent;if(!h(n)||!s.some(a=>a.scope=="itemMarker"&&a.canInjectMarkerIntoElement&&a.canInjectMarkerIntoElement(n)))return;const r=t.mapper.toViewElement(n),o=i.createRangeIn(r),l=o.getWalker();let c=o.start;for(const{item:a}of l){if(a.is("element")&&t.mapper.toModelElement(a)||a.is("$textProxy"))break;a.is("element")&&a.getCustomProperty("listItemMarker")&&(c=i.createPositionAfter(a),l.skip(({previousPosition:u})=>!u.isEqual(c)))}t.viewPosition=c}}function ke(s,i,e){for(;s.parent.is("attributeElement")&&s.parent.getCustomProperty("listItemWrapper");)i.unwrap(i.createRangeOn(s),s.parent);const t=[];n(i.createPositionBefore(s).getWalker({direction:"backward"})),n(i.createRangeIn(s).getWalker());for(const r of t)i.remove(r);function n(r){for(const{item:o}of r){if(o.is("element")&&e.toModelElement(o))break;o.is("element")&&o.getCustomProperty("listItemMarker")&&t.push(o)}}}function Pt(s,i,e,t,{dataPipeline:n}){let r=t.createRangeOn(i);if(!k(s))return r;for(const o of e){if(o.scope!="itemMarker")continue;const l=o.createElement(t,s,{dataPipeline:n});if(!l||(t.setCustomProperty("listItemMarker",!0,l),o.canInjectMarkerIntoElement&&o.canInjectMarkerIntoElement(s)?t.insert(t.createPositionAt(i,0),l):(t.insert(r.start,l),r=t.createRange(t.createPositionBefore(l),t.createPositionAfter(i))),!o.createWrapperElement||!o.canWrapElement))continue;const c=o.createWrapperElement(t,s,{dataPipeline:n});t.setCustomProperty("listItemWrapper",!0,c),o.canWrapElement(s)?r=t.wrap(r,c):(r=t.wrap(t.createRangeOn(l),c),r=t.createRange(r.start,t.createPositionAfter(i)))}return r}function Vt(s,i){let e=s.parent;for(;e.is("attributeElement")&&["ul","ol","li"].includes(e.name);){const t=e.parent;i.unwrap(i.createRangeOn(s),e),e=t}}function Nt(s,i,e,t){if(!s.hasAttribute("listIndent"))return;const n=s.getAttribute("listIndent");let r=s;for(let o=n;o>=0;o--){const l=Tt(t,o,r.getAttribute("listItemId")),c=Lt(t,o,r.getAttribute("listType"));for(const a of e)(a.scope=="list"||a.scope=="item")&&r.hasAttribute(a.attributeName)&&a.setAttributeOnDowncast(t,r.getAttribute(a.attributeName),a.scope=="list"?c:l);if(i=t.wrap(i,l),i=t.wrap(i,c),o==0||(r=y.first(r,{lowerIndent:!0}),!r))break}}function Ft(s){return(i,e)=>{const t=[];for(const n of s)i.hasAttribute(n)&&t.push(`attribute:${n}`);return t.every(n=>e.test(i,n)!==!1)?(t.forEach(n=>e.consume(i,n)),!0):!1}}function Le(s,i,e=C(s)){if(!h(s))return!1;for(const t of s.getAttributeKeys())if(!(t.startsWith("selection:")||t=="htmlEmptyBlock")&&!i.includes(t))return!1;return e.length<2}const M=["listType","listIndent","listItemId"];class V extends w{constructor(e){super(e);p(this,"_downcastStrategies",[]);e.config.define("list.multiBlock",!0)}static get pluginName(){return"ListEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[Me,Re,wt,qe]}init(){const e=this.editor,t=e.model,n=e.config.get("list.multiBlock");if(e.plugins.has("LegacyListEditing"))throw new De("list-feature-conflict",this,{conflictPlugin:"LegacyListEditing"});t.schema.register("$listItem",{allowAttributes:M}),n?(t.schema.extend("$container",{allowAttributesOf:"$listItem"}),t.schema.extend("$block",{allowAttributesOf:"$listItem"}),t.schema.extend("$blockObject",{allowAttributesOf:"$listItem"})):t.schema.register("listItem",{inheritAllFrom:"$block",allowAttributesOf:"$listItem"});for(const r of M)t.schema.setAttributeProperties(r,{copyOnReplace:!0});e.commands.add("numberedList",new E(e,"numbered")),e.commands.add("bulletedList",new E(e,"bulleted")),e.commands.add("customNumberedList",new E(e,"customNumbered",{multiLevel:!0})),e.commands.add("customBulletedList",new E(e,"customBulleted",{multiLevel:!0})),e.commands.add("indentList",new re(e,"forward")),e.commands.add("outdentList",new re(e,"backward")),e.commands.add("splitListItemBefore",new ce(e,"before")),e.commands.add("splitListItemAfter",new ce(e,"after")),n&&(e.commands.add("mergeListItemBackward",new le(e,"backward")),e.commands.add("mergeListItemForward",new le(e,"forward"))),this._setupDeleteIntegration(),this._setupEnterIntegration(),this._setupTabIntegration(),this._setupClipboardIntegration(),this._setupAccessibilityIntegration()}afterInit(){const t=this.editor.commands,n=t.get("indent"),r=t.get("outdent");n&&n.registerChildCommand(t.get("indentList"),{priority:"high"}),r&&r.registerChildCommand(t.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(e){this._downcastStrategies.push(e)}getListAttributeNames(){return[...M,...this._downcastStrategies.map(e=>e.attributeName)]}_setupDeleteIntegration(){const e=this.editor,t=e.commands.get("mergeListItemBackward"),n=e.commands.get("mergeListItemForward");this.listenTo(e.editing.view.document,"delete",(r,o)=>{const l=e.model.document.selection;P(e.model)||e.model.change(()=>{const c=l.getFirstPosition();if(l.isCollapsed&&o.direction=="backward"){if(!c.isAtStart)return;const a=c.parent;if(!h(a))return;if(!y.first(a,{sameAttributes:"listType",sameIndent:!0})&&a.getAttribute("listIndent")===0)ne(a)||e.execute("splitListItemAfter"),e.execute("outdentList");else{if(!t||!t.isEnabled)return;t.execute({shouldMergeOnBlocksContentLevel:de(e.model,"backward")})}o.preventDefault(),r.stop()}else{if(l.isCollapsed&&!l.getLastPosition().isAtEnd||!n||!n.isEnabled)return;n.execute({shouldMergeOnBlocksContentLevel:de(e.model,"forward")}),o.preventDefault(),r.stop()}})},{context:"li"})}_setupEnterIntegration(){const e=this.editor,t=e.model,n=e.commands,r=n.get("enter");this.listenTo(e.editing.view.document,"enter",(o,l)=>{const c=t.document,a=c.selection.getFirstPosition().parent;if(c.selection.isCollapsed&&h(a)&&a.isEmpty&&!l.isSoft){const u=k(a),d=ne(a);u&&d?(e.execute("outdentList"),l.preventDefault(),o.stop()):u&&!d?(e.execute("splitListItemAfter"),l.preventDefault(),o.stop()):d&&(e.execute("splitListItemBefore"),l.preventDefault(),o.stop())}},{context:"li"}),this.listenTo(r,"afterExecute",()=>{const o=n.get("splitListItemBefore");if(o.refresh(),!o.isEnabled)return;const c=e.model.document.selection.getLastPosition().parent;C(c).length===2&&o.execute()})}_setupTabIntegration(){const e=this.editor;this.listenTo(e.editing.view.document,"tab",(t,n)=>{const r=n.shiftKey?"outdentList":"indentList";this.editor.commands.get(r).isEnabled&&(e.execute(r),n.stopPropagation(),n.preventDefault(),t.stop())},{context:"li"})}_setupConversion(){const e=this.editor,t=e.model,n=this.getListAttributeNames(),r=e.config.get("list.multiBlock"),o=r?"paragraph":"listItem";e.conversion.for("upcast").elementToElement({view:"li",model:(c,{writer:a})=>a.createElement(o,{listType:""})}).elementToElement({view:"p",model:(c,{writer:a})=>c.parent&&c.parent.is("element","li")?a.createElement(o,{listType:""}):null,converterPriority:"high"}).add(c=>{c.on("element:li",_t())}),r||e.conversion.for("downcast").elementToElement({model:"listItem",view:"p"}),e.conversion.for("editingDowncast").elementToElement({model:o,view:ue(n),converterPriority:"high"}).add(c=>{c.on("attribute",ae(n,this._downcastStrategies,t)),c.on("remove",xt(t.schema))}),e.conversion.for("dataDowncast").elementToElement({model:o,view:ue(n,{dataPipeline:!0}),converterPriority:"high"}).add(c=>{c.on("attribute",ae(n,this._downcastStrategies,t,{dataPipeline:!0}))});const l=Bt(this._downcastStrategies,e.editing.view);e.editing.mapper.on("modelToViewPosition",l),e.data.mapper.on("modelToViewPosition",l),this.listenTo(t.document,"change:data",Ct(t,e.editing,n,this),{priority:"high"}),this.on("checkAttributes:item",(c,{viewElement:a,modelAttributes:u})=>{a.id!=u.listItemId&&(c.return=!0,c.stop())}),this.on("checkAttributes:list",(c,{viewElement:a,modelAttributes:u})=>{(a.name!=we(u.listType)||a.id!=Ae(u.listType,u.listIndent))&&(c.return=!0,c.stop())})}_setupModelPostFixing(){const e=this.editor.model,t=this.getListAttributeNames();e.document.registerPostFixer(n=>Ot(e,n,t,this)),this.on("postFixer",(n,{listNodes:r,writer:o})=>{n.return=vt(r,o)||n.return},{priority:"high"}),this.on("postFixer",(n,{listNodes:r,writer:o,seenIds:l})=>{n.return=St(r,l,o)||n.return},{priority:"high"})}_setupClipboardIntegration(){const e=this.editor.model,t=this.editor.plugins.get("ClipboardPipeline");this.listenTo(e,"insertContent",Rt(e),{priority:"high"}),this.listenTo(t,"outputTransformation",(n,r)=>{e.change(o=>{const l=Array.from(r.content.getChildren()),c=l[l.length-1];if(l.length>1&&c.is("element")&&c.isEmpty&&l.slice(0,-1).every(h)&&o.remove(c),r.method=="copy"||r.method=="cut"){const a=Array.from(r.content.getChildren());B(a)&&K(a,o)}})})}_setupAccessibilityIntegration(){const e=this.editor,t=e.t;e.accessibility.addKeystrokeInfoGroup({id:"list",label:t("Keystrokes that can be used in a list"),keystrokes:[{label:t("Increase list item indent"),keystroke:"Tab"},{label:t("Decrease list item indent"),keystroke:"Shift+Tab"}]})}}function Ot(s,i,e,t){const n=s.document.differ.getChanges(),r=new Set,o=new Set,l=t.editor.config.get("list.multiBlock");let c=!1;for(const u of n){if(u.type=="insert"&&u.name!="$text"){const d=u.position.nodeAfter;if(!s.schema.checkAttribute(d,"listItemId"))for(const f of Array.from(d.getAttributeKeys()))e.includes(f)&&(i.removeAttribute(f,d),c=!0);I(u.position,o,r),u.attributes.has("listItemId")||I(u.position.getShiftedBy(u.length),o,r);for(const{item:f,previousPosition:m}of s.createRangeIn(d))h(f)&&I(m,o,r)}else u.type=="remove"?I(u.position,o,r):u.type=="attribute"&&e.includes(u.attributeKey)&&(I(u.range.start,o,r),u.attributeNewValue===null&&I(u.range.start.getShiftedBy(1),o,r));if(!l&&u.type=="attribute"&&M.includes(u.attributeKey)){const d=u.range.start.nodeAfter;u.attributeNewValue===null&&d&&d.is("element","listItem")?(i.rename(d,"paragraph"),c=!0):u.attributeOldValue===null&&d&&d.is("element")&&d.name!="listItem"&&(i.rename(d,"listItem"),c=!0)}}const a=new Set;for(const u of o.values())c=t.fire("postFixer",{listNodes:new ht(u),listHead:u,writer:i,seenIds:a})||c;return c}function Rt(s){return(i,[e,t])=>{const n=e.is("documentFragment")?Array.from(e.getChildren()):[e];if(!n.length)return;const o=(t?s.createSelection(t):s.document.selection).getFirstPosition();let l;if(h(o.parent))l=o.parent;else if(h(o.nodeBefore)&&h(o.nodeAfter))l=o.nodeBefore;else return;s.change(c=>{const a=l.getAttribute("listType"),u=l.getAttribute("listIndent"),d=n[0].getAttribute("listIndent")||0,f=Math.max(u-d,0);for(const m of n){const g=h(m);l.is("element","listItem")&&m.is("element","paragraph")&&c.rename(m,"listItem"),c.setAttributes({listIndent:(g?m.getAttribute("listIndent"):0)+f,listItemId:g?m.getAttribute("listItemId"):_.next(),listType:a},m)}})}}function de(s,i){const e=s.document.selection;if(!e.isCollapsed)return!P(s);if(i==="forward")return!0;const n=e.getFirstPosition().parent,r=n.previousSibling;return s.schema.isObject(r)?!1:r.isEmpty?!0:B([n,r])}function z(s,i,e,t){s.ui.componentFactory.add(i,()=>{const n=fe(Z,s,i,e,t);return n.set({tooltip:!0,isToggleable:!0}),n}),s.ui.componentFactory.add(`menuBar:${i}`,()=>{const n=fe(Ge,s,i,e,t);return n.set({role:"menuitemcheckbox",isToggleable:!0}),n})}function fe(s,i,e,t,n){const r=i.commands.get(e),o=new s(i.locale);return o.set({label:t,icon:n}),o.bind("isOn","isEnabled").to(r,"value","isEnabled"),o.on("execute",()=>{i.execute(e),i.editing.view.focus()}),o}class Mt extends w{static get pluginName(){return"ListUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor.t;this.editor.ui.componentFactory.has("numberedList")||z(this.editor,"numberedList",i("Numbered List"),Q),this.editor.ui.componentFactory.has("bulletedList")||z(this.editor,"bulletedList",i("Bulleted List"),J)}}class pi extends w{static get requires(){return[V,Mt]}static get pluginName(){return"List"}static get isOfficialPlugin(){return!0}}class Dt extends v{refresh(){const i=this._getValue();this.value=i,this.isEnabled=i!=null}execute({startIndex:i=1}={}){const e=this.editor.model,t=e.document;let n=Array.from(t.selection.getSelectedBlocks()).filter(r=>h(r)&&D(r.getAttribute("listType")));n=$(n),e.change(r=>{for(const o of n)r.setAttribute("listStart",i>=0?i:1,o)})}_getValue(){const e=this.editor.model.document,t=U(e.selection.getSelectedBlocks());return t&&h(t)&&D(t.getAttribute("listType"))?t.getAttribute("listStart"):null}}/**
7
+ */function yt(s){return s.is("element","ol")||s.is("element","ul")}function H(s){return s.is("element","li")}function It(s){let e=0,t=s.parent;for(;t;){if(H(t))e++;else{const i=t.previousSibling;i&&H(i)&&e++}t=t.parent}return e}function wt(s,e,t,i=we(t,e)){return s.createAttributeElement(Ie(t),null,{priority:2*e/100-100,id:i})}function At(s,e,t){return s.createAttributeElement("li",null,{priority:(2*e+1)/100-100,id:t})}function Ie(s){return s=="numbered"||s=="customNumbered"?"ol":"ul"}function we(s,e){return`list-${s}-${e}`}function y(s,e,t){const i=s.nodeBefore;if(p(i)){let n=i;for(const{node:r}of new V(n,"backward"))if(n=r,t.has(n)||(t.add(n),e.has(i)))return;e.add(n)}else{const n=s.nodeAfter;p(n)&&e.add(n)}}function kt(s,e){let t=0,i=-1,n=null,r=!1;for(const{node:l}of s){const o=l.getAttribute("listIndent");if(o>t){let c;n===null?(n=o-t,c=t):(n>o&&(n=o),c=o-n),c>i+1&&(c=i+1),e.setAttribute("listIndent",c,l),r=!0,i=c}else n=null,t=o+1,i=o}return r}function Lt(s,e,t){const i=new Set;let n=!1;for(const{node:r}of s){if(i.has(r))continue;let l=r.getAttribute("listType"),o=r.getAttribute("listItemId");if(e.has(o)&&(o=S.next()),e.add(o),r.is("element","listItem")){r.getAttribute("listItemId")!=o&&(t.setAttribute("listItemId",o,r),n=!0);continue}for(const c of L(r,{direction:"forward"}))i.add(c),c.getAttribute("listType")!=l&&(o=S.next(),l=c.getAttribute("listType")),c.getAttribute("listItemId")!=o&&(t.setAttribute("listItemId",o,c),n=!0)}return n}function Tt(){return(s,e,t)=>{const{writer:i,schema:n}=t;if(!e.modelRange)return;const r=Array.from(e.modelRange.getItems({shallow:!0})).filter(d=>n.checkAttribute(d,"listItemId"));if(!r.length)return;const l=S.next(),o=It(e.viewItem);let c=e.viewItem.parent&&e.viewItem.parent.is("element","ol")?"numbered":"bulleted";const a=r[0].getAttribute("listType");a&&(c=a);const u={listItemId:l,listIndent:o,listType:c};for(const d of r)d.hasAttribute("listItemId")||i.setAttributes(u,d);r.length>1&&r[1].getAttribute("listItemId")!=u.listItemId&&t.keepEmptyElement(r[0])}}function vt(s,e,t,i){return()=>{const o=s.document.differ.getChanges(),c=[],a=new Set,u=new Set,d=new Set;for(const f of o)if(f.type=="insert"&&f.name!="$text")y(f.position,a,d),f.attributes.has("listItemId")?u.add(f.position.nodeAfter):y(f.position.getShiftedBy(f.length),a,d);else if(f.type=="remove"&&f.attributes.has("listItemId"))y(f.position,a,d);else if(f.type=="attribute"){const m=f.range.start.nodeAfter;t.includes(f.attributeKey)?(y(f.range.start,a,d),f.attributeNewValue===null?(y(f.range.start.getShiftedBy(1),a,d),r(m)&&c.push(m)):u.add(m)):p(m)&&r(m)&&c.push(m)}for(const f of a.values())c.push(...n(f,u));for(const f of new Set(c))e.reconvertItem(f)};function n(o,c){const a=[],u=new Set,d=[];for(const{node:f,previous:m}of new V(o)){if(u.has(f))continue;const h=f.getAttribute("listIndent");m&&h<m.getAttribute("listIndent")&&(d.length=h+1),d[h]=Object.fromEntries(Array.from(f.getAttributes()).filter(([g])=>t.includes(g)));const w=L(f,{direction:"forward"});for(const g of w)u.add(g),(r(g,w)||l(g,d,c))&&a.push(g)}return a}function r(o,c){const a=e.mapper.toViewElement(o);if(!a)return!1;if(i.fire("checkElement",{modelElement:o,viewElement:a}))return!0;if(!o.is("element","paragraph")&&!o.is("element","listItem"))return!1;const d=ke(o,t,c);return d&&a.is("element","p")?!0:!!(!d&&a.is("element","span"))}function l(o,c,a){if(a.has(o))return!1;const u=e.mapper.toViewElement(o);let d=c.length-1;for(let f=u.parent;!f.is("editableElement");f=f.parent){const m=H(f),h=yt(f);if(!h&&!m)continue;const w=`checkAttributes:${m?"item":"list"}`;if(i.fire(w,{viewElement:f,modelAttributes:c[d]}))break;if(h&&(d--,d<0))return!1}return!0}}function ce(s,e,t,{dataPipeline:i}={}){const n=Pt(s);return(r,l,o)=>{const{writer:c,mapper:a,consumable:u}=o,d=l.item;if(!s.includes(l.attributeKey)||!n(d,u))return;const f=_t(d,a,t);Ae(f,c,a),Et(f,c);const m=xt(d,f,e,c,{dataPipeline:i});Bt(d,m,e,c)}}function St(s){return(e,t,i)=>{const{writer:n,mapper:r}=i,l=e.name.split(":")[1];if(!s.checkAttribute(l,"listItemId"))return;const o=r.toViewPosition(t.position),c=t.position.getShiftedBy(t.length),a=r.toViewPosition(c,{isPhantom:!0}),d=n.createRange(o,a).getTrimmed().end.nodeBefore;/* istanbul ignore next -- @preserve */d&&Ae(d,n,r)}}function ae(s,{dataPipeline:e}={}){return(t,{writer:i})=>{if(!ke(t,s))return null;if(!e)return i.createContainerElement("span",{class:"ck-list-bogus-paragraph"});const n=i.createContainerElement("p");return i.setCustomProperty("dataPipeline:transparentRendering",!0,n),n}}function _t(s,e,t){const i=t.createRangeOn(s);return e.toViewRange(i).getTrimmed().end.nodeBefore}function Ct(s,e){return(t,i)=>{if(i.modelPosition.offset>0)return;const n=i.modelPosition.parent;if(!p(n)||!s.some(a=>a.scope=="itemMarker"&&a.canInjectMarkerIntoElement&&a.canInjectMarkerIntoElement(n)))return;const r=i.mapper.toViewElement(n),l=e.createRangeIn(r),o=l.getWalker();let c=l.start;for(const{item:a}of o){if(a.is("element")&&i.mapper.toModelElement(a)||a.is("$textProxy"))break;a.is("element")&&a.getCustomProperty("listItemMarker")&&(c=e.createPositionAfter(a),o.skip(({previousPosition:u})=>!u.isEqual(c)))}i.viewPosition=c}}function Ae(s,e,t){for(;s.parent.is("attributeElement")&&s.parent.getCustomProperty("listItemWrapper");)e.unwrap(e.createRangeOn(s),s.parent);const i=[];n(e.createPositionBefore(s).getWalker({direction:"backward"})),n(e.createRangeIn(s).getWalker());for(const r of i)e.remove(r);function n(r){for(const{item:l}of r){if(l.is("element")&&t.toModelElement(l))break;l.is("element")&&l.getCustomProperty("listItemMarker")&&i.push(l)}}}function xt(s,e,t,i,{dataPipeline:n}){let r=i.createRangeOn(e);if(!A(s))return r;for(const l of t){if(l.scope!="itemMarker")continue;const o=l.createElement(i,s,{dataPipeline:n});if(!o||(i.setCustomProperty("listItemMarker",!0,o),l.canInjectMarkerIntoElement&&l.canInjectMarkerIntoElement(s)?i.insert(i.createPositionAt(e,0),o):(i.insert(r.start,o),r=i.createRange(i.createPositionBefore(o),i.createPositionAfter(e))),!l.createWrapperElement||!l.canWrapElement))continue;const c=l.createWrapperElement(i,s,{dataPipeline:n});i.setCustomProperty("listItemWrapper",!0,c),l.canWrapElement(s)?r=i.wrap(r,c):(r=i.wrap(i.createRangeOn(o),c),r=i.createRange(r.start,i.createPositionAfter(e)))}return r}function Et(s,e){let t=s.parent;for(;t.is("attributeElement")&&["ul","ol","li"].includes(t.name);){const i=t.parent;e.unwrap(e.createRangeOn(s),t),t=i}}function Bt(s,e,t,i){if(!s.hasAttribute("listIndent"))return;const n=s.getAttribute("listIndent");let r=s;for(let l=n;l>=0;l--){const o=At(i,l,r.getAttribute("listItemId")),c=wt(i,l,r.getAttribute("listType"));for(const a of t)(a.scope=="list"||a.scope=="item")&&r.hasAttribute(a.attributeName)&&a.setAttributeOnDowncast(i,r.getAttribute(a.attributeName),a.scope=="list"?c:o);if(e=i.wrap(e,o),e=i.wrap(e,c),l==0||(r=b.first(r,{lowerIndent:!0}),!r))break}}function Pt(s){return(e,t)=>{const i=[];for(const n of s)e.hasAttribute(n)&&i.push(`attribute:${n}`);return i.every(n=>t.test(e,n)!==!1)?(i.forEach(n=>t.consume(e,n)),!0):!1}}function ke(s,e,t=_(s)){if(!p(s))return!1;for(const i of s.getAttributeKeys())if(!(i.startsWith("selection:")||i=="htmlEmptyBlock")&&!e.includes(i))return!1;return t.length<2}const R=["listType","listIndent","listItemId"];class P extends I{_downcastStrategies=[];static get pluginName(){return"ListEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[Fe,Ne,bt,Ke]}constructor(e){super(e),e.config.define("list.multiBlock",!0)}init(){const e=this.editor,t=e.model,i=e.config.get("list.multiBlock");if(e.plugins.has("LegacyListEditing"))throw new Oe("list-feature-conflict",this,{conflictPlugin:"LegacyListEditing"});t.schema.register("$listItem",{allowAttributes:R}),i?(t.schema.extend("$container",{allowAttributesOf:"$listItem"}),t.schema.extend("$block",{allowAttributesOf:"$listItem"}),t.schema.extend("$blockObject",{allowAttributesOf:"$listItem"})):t.schema.register("listItem",{inheritAllFrom:"$block",allowAttributesOf:"$listItem"});for(const n of R)t.schema.setAttributeProperties(n,{copyOnReplace:!0});e.commands.add("numberedList",new x(e,"numbered")),e.commands.add("bulletedList",new x(e,"bulleted")),e.commands.add("customNumberedList",new x(e,"customNumbered",{multiLevel:!0})),e.commands.add("customBulletedList",new x(e,"customBulleted",{multiLevel:!0})),e.commands.add("indentList",new ne(e,"forward")),e.commands.add("outdentList",new ne(e,"backward")),e.commands.add("splitListItemBefore",new le(e,"before")),e.commands.add("splitListItemAfter",new le(e,"after")),i&&(e.commands.add("mergeListItemBackward",new oe(e,"backward")),e.commands.add("mergeListItemForward",new oe(e,"forward"))),this._setupDeleteIntegration(),this._setupEnterIntegration(),this._setupTabIntegration(),this._setupClipboardIntegration(),this._setupAccessibilityIntegration()}afterInit(){const t=this.editor.commands,i=t.get("indent"),n=t.get("outdent");i&&i.registerChildCommand(t.get("indentList"),{priority:"high"}),n&&n.registerChildCommand(t.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(e){this._downcastStrategies.push(e)}getListAttributeNames(){return[...R,...this._downcastStrategies.map(e=>e.attributeName)]}_setupDeleteIntegration(){const e=this.editor,t=e.commands.get("mergeListItemBackward"),i=e.commands.get("mergeListItemForward");this.listenTo(e.editing.view.document,"delete",(n,r)=>{const l=e.model.document.selection;B(e.model)||e.model.change(()=>{const o=l.getFirstPosition();if(l.isCollapsed&&r.direction=="backward"){if(!o.isAtStart)return;const c=o.parent;if(!p(c))return;if(!b.first(c,{sameAttributes:"listType",sameIndent:!0})&&c.getAttribute("listIndent")===0)se(c)||e.execute("splitListItemAfter"),e.execute("outdentList");else{if(!t||!t.isEnabled)return;t.execute({shouldMergeOnBlocksContentLevel:ue(e.model,"backward")})}r.preventDefault(),n.stop()}else{if(l.isCollapsed&&!l.getLastPosition().isAtEnd||!i||!i.isEnabled)return;i.execute({shouldMergeOnBlocksContentLevel:ue(e.model,"forward")}),r.preventDefault(),n.stop()}})},{context:"li"})}_setupEnterIntegration(){const e=this.editor,t=e.model,i=e.commands,n=i.get("enter");this.listenTo(e.editing.view.document,"enter",(r,l)=>{const o=t.document,c=o.selection.getFirstPosition().parent;if(o.selection.isCollapsed&&p(c)&&c.isEmpty&&!l.isSoft){const a=A(c),u=se(c);a&&u?(e.execute("outdentList"),l.preventDefault(),r.stop()):a&&!u?(e.execute("splitListItemAfter"),l.preventDefault(),r.stop()):u&&(e.execute("splitListItemBefore"),l.preventDefault(),r.stop())}},{context:"li"}),this.listenTo(n,"afterExecute",()=>{const r=i.get("splitListItemBefore");if(r.refresh(),!r.isEnabled)return;const o=e.model.document.selection.getLastPosition().parent;_(o).length===2&&r.execute()})}_setupTabIntegration(){const e=this.editor;this.listenTo(e.editing.view.document,"tab",(t,i)=>{const n=i.shiftKey?"outdentList":"indentList";this.editor.commands.get(n).isEnabled&&(e.execute(n),i.stopPropagation(),i.preventDefault(),t.stop())},{context:"li"})}_setupConversion(){const e=this.editor,t=e.model,i=this.getListAttributeNames(),n=e.config.get("list.multiBlock"),r=n?"paragraph":"listItem";e.conversion.for("upcast").elementToElement({view:"li",model:(o,{writer:c})=>c.createElement(r,{listType:""})}).elementToElement({view:"p",model:(o,{writer:c})=>o.parent&&o.parent.is("element","li")?c.createElement(r,{listType:""}):null,converterPriority:"high"}).add(o=>{o.on("element:li",Tt())}),n||e.conversion.for("downcast").elementToElement({model:"listItem",view:"p"}),e.conversion.for("editingDowncast").elementToElement({model:r,view:ae(i),converterPriority:"high"}).add(o=>{o.on("attribute",ce(i,this._downcastStrategies,t)),o.on("remove",St(t.schema))}),e.conversion.for("dataDowncast").elementToElement({model:r,view:ae(i,{dataPipeline:!0}),converterPriority:"high"}).add(o=>{o.on("attribute",ce(i,this._downcastStrategies,t,{dataPipeline:!0}))});const l=Ct(this._downcastStrategies,e.editing.view);e.editing.mapper.on("modelToViewPosition",l),e.data.mapper.on("modelToViewPosition",l),this.listenTo(t.document,"change:data",vt(t,e.editing,i,this),{priority:"high"}),this.on("checkAttributes:item",(o,{viewElement:c,modelAttributes:a})=>{c.id!=a.listItemId&&(o.return=!0,o.stop())}),this.on("checkAttributes:list",(o,{viewElement:c,modelAttributes:a})=>{(c.name!=Ie(a.listType)||c.id!=we(a.listType,a.listIndent))&&(o.return=!0,o.stop())})}_setupModelPostFixing(){const e=this.editor.model,t=this.getListAttributeNames();e.document.registerPostFixer(i=>Vt(e,i,t,this)),this.on("postFixer",(i,{listNodes:n,writer:r})=>{i.return=kt(n,r)||i.return},{priority:"high"}),this.on("postFixer",(i,{listNodes:n,writer:r,seenIds:l})=>{i.return=Lt(n,l,r)||i.return},{priority:"high"})}_setupClipboardIntegration(){const e=this.editor.model,t=this.editor.plugins.get("ClipboardPipeline");this.listenTo(e,"insertContent",Nt(e),{priority:"high"}),this.listenTo(t,"outputTransformation",(i,n)=>{e.change(r=>{const l=Array.from(n.content.getChildren()),o=l[l.length-1];if(l.length>1&&o.is("element")&&o.isEmpty&&l.slice(0,-1).every(p)&&r.remove(o),n.method=="copy"||n.method=="cut"){const c=Array.from(n.content.getChildren());E(c)&&$(c,r)}})})}_setupAccessibilityIntegration(){const e=this.editor,t=e.t;e.accessibility.addKeystrokeInfoGroup({id:"list",label:t("Keystrokes that can be used in a list"),keystrokes:[{label:t("Increase list item indent"),keystroke:"Tab"},{label:t("Decrease list item indent"),keystroke:"Shift+Tab"}]})}}function Vt(s,e,t,i){const n=s.document.differ.getChanges(),r=new Set,l=new Set,o=i.editor.config.get("list.multiBlock");let c=!1;for(const u of n){if(u.type=="insert"&&u.name!="$text"){const d=u.position.nodeAfter;if(!s.schema.checkAttribute(d,"listItemId"))for(const f of Array.from(d.getAttributeKeys()))t.includes(f)&&(e.removeAttribute(f,d),c=!0);y(u.position,l,r),u.attributes.has("listItemId")||y(u.position.getShiftedBy(u.length),l,r);for(const{item:f,previousPosition:m}of s.createRangeIn(d))p(f)&&y(m,l,r)}else u.type=="remove"?y(u.position,l,r):u.type=="attribute"&&t.includes(u.attributeKey)&&(y(u.range.start,l,r),u.attributeNewValue===null&&y(u.range.start.getShiftedBy(1),l,r));if(!o&&u.type=="attribute"&&R.includes(u.attributeKey)){const d=u.range.start.nodeAfter;u.attributeNewValue===null&&d&&d.is("element","listItem")?(e.rename(d,"paragraph"),c=!0):u.attributeOldValue===null&&d&&d.is("element")&&d.name!="listItem"&&(e.rename(d,"listItem"),c=!0)}}const a=new Set;for(const u of l.values())c=i.fire("postFixer",{listNodes:new ft(u),listHead:u,writer:e,seenIds:a})||c;return c}function Nt(s){return(e,[t,i])=>{const n=t.is("documentFragment")?Array.from(t.getChildren()):[t];if(!n.length)return;const l=(i?s.createSelection(i):s.document.selection).getFirstPosition();let o;if(p(l.parent))o=l.parent;else if(p(l.nodeBefore)&&p(l.nodeAfter))o=l.nodeBefore;else return;s.change(c=>{const a=o.getAttribute("listType"),u=o.getAttribute("listIndent"),d=n[0].getAttribute("listIndent")||0,f=Math.max(u-d,0);for(const m of n){const h=p(m);o.is("element","listItem")&&m.is("element","paragraph")&&c.rename(m,"listItem"),c.setAttributes({listIndent:(h?m.getAttribute("listIndent"):0)+f,listItemId:h?m.getAttribute("listItemId"):S.next(),listType:a},m)}})}}function ue(s,e){const t=s.document.selection;if(!t.isCollapsed)return!B(s);if(e==="forward")return!0;const n=t.getFirstPosition().parent,r=n.previousSibling;return s.schema.isObject(r)?!1:r.isEmpty?!0:E([n,r])}function Y(s,e,t,i){s.ui.componentFactory.add(e,()=>{const n=de(G,s,e,t,i);return n.set({tooltip:!0,isToggleable:!0}),n}),s.ui.componentFactory.add(`menuBar:${e}`,()=>{const n=de(He,s,e,t,i);return n.set({role:"menuitemcheckbox",isToggleable:!0}),n})}function de(s,e,t,i,n){const r=e.commands.get(t),l=new s(e.locale);return l.set({label:i,icon:n}),l.bind("isOn","isEnabled").to(r,"value","isEnabled"),l.on("execute",()=>{e.execute(t),e.editing.view.focus()}),l}class Ft extends I{static get pluginName(){return"ListUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.t;this.editor.ui.componentFactory.has("numberedList")||Y(this.editor,"numberedList",e("Numbered List"),J),this.editor.ui.componentFactory.has("bulletedList")||Y(this.editor,"bulletedList",e("Bulleted List"),Z)}}class ui extends I{static get requires(){return[P,Ft]}static get pluginName(){return"List"}static get isOfficialPlugin(){return!0}}class Ot extends T{refresh(){const e=this._getValue();this.value=e,this.isEnabled=e!=null}execute({startIndex:e=1}={}){const t=this.editor.model,i=t.document;let n=Array.from(i.selection.getSelectedBlocks()).filter(r=>p(r)&&M(r.getAttribute("listType")));n=U(n),t.change(r=>{for(const l of n)r.setAttribute("listStart",e>=0?e:1,l)})}_getValue(){const t=this.editor.model.document,i=D(t.selection.getSelectedBlocks());return i&&p(i)&&M(i.getAttribute("listType"))?i.getAttribute("listStart"):null}}/**
8
8
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
9
9
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
10
- */const Te={},ve={},Se={},_e=[{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:s,typeAttribute:i,listType:e}of _e)Te[s]=e,ve[s]=i,i&&(Se[i]=s);function Ce(){return _e.map(s=>s.listStyle)}function ee(s){return Te[s]||null}function xe(s){return Se[s]||null}function G(s){return ve[s]||null}function Ut(s){switch(s){case"lower-alpha":return"lower-latin";case"upper-alpha":return"upper-latin";default:return s}}class $t extends v{constructor(e,t,n){super(e);p(this,"defaultType");p(this,"_supportedTypes");this.defaultType=t,this._supportedTypes=n}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,n=t.document;t.change(r=>{this._tryToConvertItemsToList(e);let o=Array.from(n.selection.getSelectedBlocks()).filter(l=>l.hasAttribute("listType"));if(o.length){o=$(o);for(const l of o)r.setAttribute("listStyle",e.type||this.defaultType,l)}})}isStyleTypeSupported(e){return this._supportedTypes?this._supportedTypes.includes(e):!0}_getValue(){const e=U(this.editor.model.document.selection.getSelectedBlocks());return h(e)?e.getAttribute("listStyle"):null}_checkEnabled(){const e=this.editor,t=e.commands.get("numberedList"),n=e.commands.get("bulletedList");return t.isEnabled||n.isEnabled}_tryToConvertItemsToList(e){if(!e.type)return;const t=ee(e.type);if(!t)return;const n=this.editor,r=`${t}List`;n.commands.get(r).value||n.execute(r)}}class Kt extends v{refresh(){const i=this._getValue();this.value=i,this.isEnabled=i!=null}execute(i={}){const e=this.editor.model,t=e.document;let n=Array.from(t.selection.getSelectedBlocks()).filter(r=>h(r)&&r.getAttribute("listType")=="numbered");n=$(n),e.change(r=>{for(const o of n)r.setAttribute("listReversed",!!i.reversed,o)})}_getValue(){const e=this.editor.model.document,t=U(e.selection.getSelectedBlocks());return h(t)&&t.getAttribute("listType")=="numbered"?t.getAttribute("listReversed"):null}}/**
10
+ */const Le={},Te={},ve={},Se=[{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:s,typeAttribute:e,listType:t}of Se)Le[s]=t,Te[s]=e,e&&(ve[e]=s);function _e(){return Se.map(s=>s.listStyle)}function X(s){return Le[s]||null}function Ce(s){return ve[s]||null}function z(s){return Te[s]||null}function Rt(s){switch(s){case"lower-alpha":return"lower-latin";case"upper-alpha":return"upper-latin";default:return s}}class Mt extends T{defaultType;_supportedTypes;constructor(e,t,i){super(e),this.defaultType=t,this._supportedTypes=i}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const t=this.editor.model,i=t.document;t.change(n=>{this._tryToConvertItemsToList(e);let r=Array.from(i.selection.getSelectedBlocks()).filter(l=>l.hasAttribute("listType"));if(r.length){r=U(r);for(const l of r)n.setAttribute("listStyle",e.type||this.defaultType,l)}})}isStyleTypeSupported(e){return this._supportedTypes?this._supportedTypes.includes(e):!0}_getValue(){const e=D(this.editor.model.document.selection.getSelectedBlocks());return p(e)?e.getAttribute("listStyle"):null}_checkEnabled(){const e=this.editor,t=e.commands.get("numberedList"),i=e.commands.get("bulletedList");return t.isEnabled||i.isEnabled}_tryToConvertItemsToList(e){if(!e.type)return;const t=X(e.type);if(!t)return;const i=this.editor,n=`${t}List`;i.commands.get(n).value||i.execute(n)}}class Dt extends T{refresh(){const e=this._getValue();this.value=e,this.isEnabled=e!=null}execute(e={}){const t=this.editor.model,i=t.document;let n=Array.from(i.selection.getSelectedBlocks()).filter(r=>p(r)&&r.getAttribute("listType")=="numbered");n=U(n),t.change(r=>{for(const l of n)r.setAttribute("listReversed",!!e.reversed,l)})}_getValue(){const t=this.editor.model.document,i=D(t.selection.getSelectedBlocks());return p(i)&&i.getAttribute("listType")=="numbered"?i.getAttribute("listReversed"):null}}/**
11
11
  * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
12
12
  * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
13
- */function me(s){return(i,e,t)=>{const{writer:n,schema:r,consumable:o}=t;if(o.test(e.viewItem,s.viewConsumables)===!1)return;e.modelRange||Object.assign(e,t.convertChildren(e.viewItem,e.modelCursor));let l=!1;for(const c of e.modelRange.getItems({shallow:!0}))r.checkAttribute(c,s.attributeName)&&s.appliesToListItem(c)&&(c.hasAttribute(s.attributeName)||(n.setAttribute(s.attributeName,s.getAttributeOnUpcast(e.viewItem),c),l=!0));l&&o.consume(e.viewItem,s.viewConsumables)}}class Wt extends w{static get pluginName(){return"ListPropertiesUtils"}static get isOfficialPlugin(){return!0}getAllSupportedStyleTypes(){return Ce()}getListTypeFromListStyleType(i){return ee(i)}getListStyleTypeFromTypeAttribute(i){return xe(i)}getTypeAttributeFromListStyleType(i){return G(i)}}function Ee(s){const{startIndex:i,reversed:e,styles:t}=s;return{styles:jt(t),startIndex:i||!1,reversed:e||!1}}function jt(s){const i={listTypes:["bulleted","numbered"],useAttribute:!1};return s===!0||(s?Array.isArray(s)||typeof s=="string"?i.listTypes=L(s):(i.listTypes=s.listTypes?L(s.listTypes):i.listTypes,i.useAttribute=!!s.useAttribute,s.listStyleTypes&&(i.listStyleTypes=s.listStyleTypes)):i.listTypes=[]),i}const x="default";class qt extends w{static get requires(){return[V,Wt]}static get pluginName(){return"ListPropertiesEditing"}static get isOfficialPlugin(){return!0}constructor(i){super(i),i.config.define("list.properties",{styles:!0,startIndex:!1,reversed:!1})}init(){const i=this.editor,e=i.model,t=i.plugins.get(V),n=i.config.get("list.properties"),r=Ht(n);for(const o of r)o.addCommand(i),e.schema.extend("$listItem",{allowAttributes:o.attributeName}),t.registerDowncastStrategy({scope:"list",attributeName:o.attributeName,setAttributeOnDowncast(l,c,a){o.setAttributeOnDowncast(l,c,a)}});i.conversion.for("upcast").add(o=>{for(const l of r)o.on("element:ol",me(l)),o.on("element:ul",me(l))}),t.on("checkAttributes:list",(o,{viewElement:l,modelAttributes:c})=>{for(const a of r)a.getAttributeOnUpcast(l)!=c[a.attributeName]&&(o.return=!0,o.stop())}),this.listenTo(i.commands.get("indentList"),"afterExecute",(o,l)=>{e.change(c=>{for(const a of l)for(const u of r)u.appliesToListItem(a)&&c.setAttribute(u.attributeName,u.defaultValue,a)})}),t.on("postFixer",(o,{listNodes:l,writer:c})=>{for(const{node:a}of l)for(const u of r)u.hasValidAttribute(a)||(u.appliesToListItem(a)?c.setAttribute(u.attributeName,u.defaultValue,a):c.removeAttribute(u.attributeName,a),o.return=!0)}),t.on("postFixer",(o,{listNodes:l,writer:c})=>{for(const{node:a,previousNodeInList:u}of l)if(u&&u.getAttribute("listType")==a.getAttribute("listType"))for(const d of r){const{attributeName:f}=d;if(!d.appliesToListItem(a))continue;const m=u.getAttribute(f);a.getAttribute(f)!=m&&(c.setAttribute(f,m,a),o.return=!0)}})}}function Ht(s){const i=[],e=Ee(s);if(s.styles){const t=e.styles.useAttribute;i.push({attributeName:"listStyle",defaultValue:x,viewConsumables:{styles:"list-style-type"},addCommand(n){let r=Ce();t&&(r=r.filter(o=>!!G(o))),n.commands.add("listStyle",new $t(n,x,r))},appliesToListItem(n){return n.getAttribute("listType")=="numbered"||n.getAttribute("listType")=="bulleted"},hasValidAttribute(n){if(!this.appliesToListItem(n))return!n.hasAttribute("listStyle");if(!n.hasAttribute("listStyle"))return!1;const r=n.getAttribute("listStyle");return r==x?!0:ee(r)==n.getAttribute("listType")},setAttributeOnDowncast(n,r,o){if(r&&r!==x)if(t){const l=G(r);if(l){n.setAttribute("type",l,o);return}}else{n.setStyle("list-style-type",r,o);return}n.removeStyle("list-style-type",o),n.removeAttribute("type",o)},getAttributeOnUpcast(n){const r=n.getStyle("list-style-type");if(r)return Ut(r);const o=n.getAttribute("type");return o?xe(o):x}})}return s.reversed&&i.push({attributeName:"listReversed",defaultValue:!1,viewConsumables:{attributes:"reversed"},addCommand(t){t.commands.add("listReversed",new Kt(t))},appliesToListItem(t){return t.getAttribute("listType")=="numbered"},hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listReversed")},setAttributeOnDowncast(t,n,r){n?t.setAttribute("reversed","reversed",r):t.removeAttribute("reversed",r)},getAttributeOnUpcast(t){return t.hasAttribute("reversed")}}),s.startIndex&&i.push({attributeName:"listStart",defaultValue:1,viewConsumables:{attributes:"start"},addCommand(t){t.commands.add("listStart",new Dt(t))},appliesToListItem(t){return D(t.getAttribute("listType"))},hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listStart")},setAttributeOnDowncast(t,n,r){n==0||n>1?t.setAttribute("start",n,r):t.removeAttribute("start",r)},getAttributeOnUpcast(t){const n=t.getAttribute("start");return n>=0?n:1}}),i}class Be extends se{constructor(e,{enabledProperties:t,styleButtonViews:n,styleGridAriaLabel:r}){super(e);p(this,"children");p(this,"stylesView",null);p(this,"additionalPropertiesCollapsibleView",null);p(this,"startIndexFieldView",null);p(this,"reversedSwitchButtonView",null);p(this,"focusTracker",new te);p(this,"keystrokes",new ie);p(this,"focusables",new Je);p(this,"focusCycler");const o=["ck","ck-list-properties"];this.children=this.createCollection(),this.focusCycler=new Qe({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)):o.push("ck-list-properties_without-styles"),(t.startIndex||t.reversed)&&(this._addNumberedListPropertyViews(t),o.push("ck-list-properties_with-numbered-properties")),this.setTemplate({tag:"div",attributes:{class:o},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 e of this.stylesView.children)this.stylesView.focusTracker.add(e.element);Xe({keystrokeHandler:this.stylesView.keystrokes,focusTracker:this.stylesView.focusTracker,gridItems:this.stylesView.children,numberOfColumns:()=>je.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 e=t=>t.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e)}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(e,t){const n=new se(this.locale);return n.children=n.createCollection(),n.children.addMany(e),n.setTemplate({tag:"div",attributes:{"aria-label":t,class:["ck","ck-list-styles-list"]},children:n.children}),n.children.delegate("execute").to(this),n.focus=function(){for(const r of this.children)if(r instanceof Z&&r.isOn){r.focus();return}this.children.first.focus()},n.focusTracker=new te,n.keystrokes=new ie,n.render(),n.keystrokes.listenTo(n.element),n}_addNumberedListPropertyViews(e){const t=this.locale.t,n=[];e.startIndex&&(this.startIndexFieldView=this._createStartIndexField(),n.push(this.startIndexFieldView)),e.reversed&&(this.reversedSwitchButtonView=this._createReversedSwitchButton(),n.push(this.reversedSwitchButtonView)),this.stylesView?(this.additionalPropertiesCollapsibleView=new et(this.locale,n),this.additionalPropertiesCollapsibleView.set({label:t("List properties"),isCollapsed:!0}),this.additionalPropertiesCollapsibleView.buttonView.bind("isEnabled").toMany(n,"isEnabled",(...r)=>r.some(o=>o)),this.additionalPropertiesCollapsibleView.buttonView.on("change:isEnabled",(r,o,l)=>{l||(this.additionalPropertiesCollapsibleView.isCollapsed=!0)}),this.children.add(this.additionalPropertiesCollapsibleView)):this.children.addMany(n)}_createStartIndexField(){const e=this.locale.t,t=new tt(this.locale,it);return t.set({label:e("Start at"),class:"ck-numbered-list-properties__start-index"}),t.fieldView.set({min:0,step:1,value:1,inputMode:"numeric"}),t.fieldView.on("input",()=>{const n=t.fieldView.element,r=n.valueAsNumber;if(Number.isNaN(r)){t.errorText=e("Invalid start index value.");return}n.checkValidity()?this.fire("listStart",{startIndex:r}):t.errorText=e("Start index must be greater than 0.")}),t}_createReversedSwitchButton(){const e=this.locale.t,t=new st(this.locale);return t.set({withText:!0,label:e("Reversed order"),class:"ck-numbered-list-properties__reversed-order"}),t.delegate("execute").to(this,"listReversed"),t}}class Yt extends w{static get pluginName(){return"ListPropertiesUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.locale.t,t=i.config.get("list.properties"),n=Ee(t),r=n.styles.listTypes;if(r.includes("bulleted")){const o=[{label:e("Toggle the disc list style"),tooltip:e("Disc"),type:"disc",icon:nt},{label:e("Toggle the circle list style"),tooltip:e("Circle"),type:"circle",icon:rt},{label:e("Toggle the square list style"),tooltip:e("Square"),type:"square",icon:ot}],l=e("Bulleted List"),c=e("Bulleted list styles toolbar"),a="bulletedList";i.ui.componentFactory.add(a,pe({editor:i,normalizedConfig:n,parentCommandName:a,buttonLabel:l,buttonIcon:J,styleGridAriaLabel:c,styleDefinitions:o})),i.ui.componentFactory.add(`menuBar:${a}`,he({editor:i,normalizedConfig:n,parentCommandName:a,buttonLabel:l,styleGridAriaLabel:c,styleDefinitions:o}))}if(r.includes("numbered")||t.startIndex||t.reversed){const o=[{label:e("Toggle the decimal list style"),tooltip:e("Decimal"),type:"decimal",icon:lt},{label:e("Toggle the decimal with leading zero list style"),tooltip:e("Decimal with leading zero"),type:"decimal-leading-zero",icon:ct},{label:e("Toggle the lower–roman list style"),tooltip:e("Lower–roman"),type:"lower-roman",icon:at},{label:e("Toggle the upper–roman list style"),tooltip:e("Upper-roman"),type:"upper-roman",icon:ut},{label:e("Toggle the lower–latin list style"),tooltip:e("Lower-latin"),type:"lower-latin",icon:dt},{label:e("Toggle the upper–latin list style"),tooltip:e("Upper-latin"),type:"upper-latin",icon:ft}],l=e("Numbered List"),c=e("Numbered list styles toolbar"),a="numberedList";i.ui.componentFactory.add(a,pe({editor:i,normalizedConfig:n,parentCommandName:a,buttonLabel:l,buttonIcon:Q,styleGridAriaLabel:c,styleDefinitions:o})),r.includes("numbered")&&i.ui.componentFactory.add(`menuBar:${a}`,he({editor:i,normalizedConfig:n,parentCommandName:a,buttonLabel:l,styleGridAriaLabel:c,styleDefinitions:o}))}}}function pe({editor:s,normalizedConfig:i,parentCommandName:e,buttonLabel:t,buttonIcon:n,styleGridAriaLabel:r,styleDefinitions:o}){const l=s.commands.get(e);return c=>{const a=He(c,Ye),u=a.buttonView;return a.bind("isEnabled").to(l),a.class="ck-list-styles-dropdown",u.on("execute",()=>{s.execute(e),s.editing.view.focus()}),u.set({label:t,icon:n,tooltip:!0,isToggleable:!0}),u.bind("isOn").to(l,"value",d=>!!d),a.once("change:isOpen",()=>{const d=zt({editor:s,normalizedConfig:i,dropdownView:a,parentCommandName:e,styleGridAriaLabel:r,styleDefinitions:o});a.panelView.children.add(d)}),a.on("execute",()=>{s.editing.view.focus()}),a}}function Pe({editor:s,listStyleCommand:i,parentCommandName:e}){const t=s.locale,n=s.commands.get(e);return({label:r,type:o,icon:l,tooltip:c})=>{const a=new Z(t);return a.set({label:r,icon:l,tooltip:c}),a.bind("isOn").to(i,"value",u=>u===o),a.on("execute",()=>{n.value?i.value===o?s.execute(e):i.value!==o&&s.execute("listStyle",{type:o}):s.model.change(()=>{s.execute("listStyle",{type:o})})}),a}}function zt({editor:s,normalizedConfig:i,dropdownView:e,parentCommandName:t,styleDefinitions:n,styleGridAriaLabel:r}){const o=s.locale,l={...i,...t!="numberedList"?{startIndex:!1,reversed:!1}:null},c=t.replace("List","");let a=null;if(i.styles.listTypes.includes(c)){const d=s.commands.get("listStyle"),f=Pe({editor:s,parentCommandName:t,listStyleCommand:d}),m=i.styles.listStyleTypes;let g=n;if(m){const b=m[c];b&&(g=n.filter(O=>b.includes(O.type)))}const A=Ve(d);a=g.filter(A).map(f)}const u=new Be(o,{styleGridAriaLabel:r,enabledProperties:l,styleButtonViews:a});if(i.styles.listTypes.includes(c)&&Ze(e,()=>u.stylesView.children.find(d=>d.isOn)),l.startIndex){const d=s.commands.get("listStart");u.startIndexFieldView.bind("isEnabled").to(d),u.startIndexFieldView.fieldView.bind("value").to(d),u.on("listStart",(f,m)=>s.execute("listStart",m))}if(l.reversed){const d=s.commands.get("listReversed");u.reversedSwitchButtonView.bind("isEnabled").to(d),u.reversedSwitchButtonView.bind("isOn").to(d,"value",f=>!!f),u.on("listReversed",()=>{const f=d.value;s.execute("listReversed",{reversed:!f})})}return u.delegate("execute").to(e),u}function he({editor:s,normalizedConfig:i,parentCommandName:e,buttonLabel:t,styleGridAriaLabel:n,styleDefinitions:r}){return o=>{const l=new ze(o),c=s.commands.get(e),a=s.commands.get("listStyle"),u=Ve(a),d=Pe({editor:s,parentCommandName:e,listStyleCommand:a}),f=i.styles.listStyleTypes;let m=r;if(f){const b=c.type,O=f[b];O&&(m=r.filter(Ne=>O.includes(Ne.type)))}const g=m.filter(u).map(d),A=new Be(o,{styleGridAriaLabel:n,enabledProperties:{...i,startIndex:!1,reversed:!1},styleButtonViews:g});return A.delegate("execute").to(l),l.buttonView.set({label:t,icon:e==="bulletedList"?J:Q}),l.panelView.children.add(A),l.bind("isEnabled").to(c,"isEnabled"),l.on("execute",()=>{s.editing.view.focus()}),l}}function Ve(s){return typeof s.isStyleTypeSupported=="function"?i=>s.isStyleTypeSupported(i.type):()=>!0}class hi extends w{static get requires(){return[qt,Yt]}static get pluginName(){return"ListProperties"}static get isOfficialPlugin(){return!0}}class Gt extends v{constructor(i){super(i),this.on("execute",()=>{this.refresh()},{priority:"highest"})}refresh(){const i=this._getSelectedItems();this.value=this._getValue(i),this.isEnabled=!!i.length}execute(i={}){this.editor.model.change(e=>{const t=this._getSelectedItems(),n=i.forceValue===void 0?!this._getValue(t):i.forceValue;for(const r of t)n?e.setAttribute("todoListChecked",!0,r):e.removeAttribute("todoListChecked",r)})}_getValue(i){return i.every(e=>e.getAttribute("todoListChecked"))}_getSelectedItems(){const i=this.editor.model,e=i.schema,t=i.document.selection.getFirstRange(),n=t.start.parent,r=[];e.checkAttribute(n,"todoListChecked")&&r.push(...C(n));for(const o of t.getItems({shallow:!0}))e.checkAttribute(o,"todoListChecked")&&!r.includes(o)&&r.push(...C(o));return r}}class Zt extends pt{constructor(){super(...arguments);p(this,"domEventType",["change"])}onDomEvent(e){if(e.target){const t=this.view.domConverter.mapDomToView(e.target);t&&t.is("element","input")&&t.getAttribute("type")=="checkbox"&&t.findAncestor({classes:"todo-list__label"})&&this.fire("todoCheckboxChange",e)}}}const Jt=$e("Ctrl+Enter");class Qt extends w{static get pluginName(){return"TodoListEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[V]}init(){const i=this.editor,e=i.model,t=i.editing,n=i.plugins.get(V),o=i.config.get("list.multiBlock")?"paragraph":"listItem";i.commands.add("todoList",new E(i,"todo")),i.commands.add("checkTodoList",new Gt(i)),t.view.addObserver(Zt),e.schema.extend("$listItem",{allowAttributes:"todoListChecked"}),e.schema.addAttributeCheck(l=>{const c=l.last;if(!c.getAttribute("listItemId")||c.getAttribute("listType")!="todo")return!1},"todoListChecked"),i.conversion.for("upcast").add(l=>{l.on("element:input",ei()),l.on("element:li",Xt(),{priority:"low"}),l.on("element:label",j({name:"label",classes:"todo-list__label"})),l.on("element:label",j({name:"label",classes:["todo-list__label","todo-list__label_without-description"]})),l.on("element:span",j({name:"span",classes:"todo-list__label__description"})),l.on("element:ul",ti({name:"ul",classes:"todo-list"}))}),i.conversion.for("downcast").elementToElement({model:o,view:(l,{writer:c})=>{if(R(l,n.getListAttributeNames()))return c.createContainerElement("span",{class:"todo-list__label__description"})},converterPriority:"highest"}),n.registerDowncastStrategy({scope:"list",attributeName:"listType",setAttributeOnDowncast(l,c,a){c=="todo"?l.addClass("todo-list",a):l.removeClass("todo-list",a)}}),n.registerDowncastStrategy({scope:"itemMarker",attributeName:"todoListChecked",createElement(l,c,{dataPipeline:a}){if(c.getAttribute("listType")!="todo")return null;const u=l.createUIElement("input",{type:"checkbox",...c.getAttribute("todoListChecked")?{checked:"checked"}:null,...a?{disabled:"disabled"}:{tabindex:"-1"}});if(a)return u;const d=l.createContainerElement("span",{contenteditable:"false"},u);return d.getFillerOffset=()=>null,d},canWrapElement(l){return R(l,n.getListAttributeNames())},createWrapperElement(l,c,{dataPipeline:a}){const u=["todo-list__label"];return R(c,n.getListAttributeNames())||u.push("todo-list__label_without-description"),l.createAttributeElement(a?"label":"span",{class:u.join(" ")})}}),n.on("checkElement",(l,{modelElement:c,viewElement:a})=>{const u=R(c,n.getListAttributeNames());a.hasClass("todo-list__label__description")!=u&&(l.return=!0,l.stop())}),n.on("checkElement",(l,{modelElement:c,viewElement:a})=>{const u=c.getAttribute("listType")=="todo"&&k(c);let d=!1;const f=i.editing.view.createPositionBefore(a).getWalker({direction:"backward"});for(const{item:m}of f){if(m.is("element")&&i.editing.mapper.toModelElement(m))break;m.is("element","input")&&m.getAttribute("type")=="checkbox"&&(d=!0)}d!=u&&(l.return=!0,l.stop())}),n.on("postFixer",(l,{listNodes:c,writer:a})=>{for(const{node:u,previousNodeInList:d}of c){if(!d||d.getAttribute("listItemId")!=u.getAttribute("listItemId"))continue;const f=d.hasAttribute("todoListChecked"),m=u.hasAttribute("todoListChecked");m&&!f?(a.removeAttribute("todoListChecked",u),l.return=!0):!m&&f&&(a.setAttribute("todoListChecked",!0,u),l.return=!0)}}),e.document.registerPostFixer(l=>{const c=e.document.differ.getChanges();let a=!1;for(const u of c)if(u.type=="attribute"&&u.attributeKey=="listType"){const d=u.range.start.nodeAfter;u.attributeOldValue=="todo"&&d.hasAttribute("todoListChecked")&&(l.removeAttribute("todoListChecked",d),a=!0)}else if(u.type=="insert"&&u.name!="$text")for(const{item:d}of l.createRangeOn(u.position.nodeAfter))d.is("element")&&d.getAttribute("listType")!="todo"&&d.hasAttribute("todoListChecked")&&(l.removeAttribute("todoListChecked",d),a=!0);return a}),this.listenTo(t.view.document,"keydown",(l,c)=>{Ue(c)===Jt&&(i.execute("checkTodoList"),l.stop())},{priority:"high"}),this.listenTo(t.view.document,"todoCheckboxChange",(l,c)=>{const a=c.target;if(!a||!a.is("element","input"))return;const u=t.view.createPositionAfter(a),f=t.mapper.toModelPosition(u).parent;f&&h(f)&&f.getAttribute("listType")=="todo"&&this._handleCheckmarkChange(f)}),this.listenTo(t.view.document,"arrowKey",si(e,i.locale),{context:"$text"}),this.listenTo(t.mapper,"viewToModelPosition",(l,c)=>{const a=c.viewPosition.parent,u=a.is("attributeElement","li")&&c.viewPosition.offset==0,d=ge(a)&&c.viewPosition.offset<=1,f=a.is("element","span")&&a.getAttribute("contenteditable")=="false"&&ge(a.parent);if(!u&&!d&&!f)return;const m=c.modelPosition.nodeAfter;m&&m.getAttribute("listType")=="todo"&&(c.modelPosition=e.createPositionAt(m,0))},{priority:"low"}),this._initAriaAnnouncements()}_handleCheckmarkChange(i){const e=this.editor,t=e.model,n=Array.from(t.document.selection.getRanges());t.change(r=>{r.setSelection(i,"end"),e.execute("checkTodoList"),r.setSelection(n)})}_initAriaAnnouncements(){const{model:i,ui:e,t}=this.editor;let n=null;e&&i.document.selection.on("change:range",()=>{const r=i.document.selection.focus.parent,o=be(n),l=be(r);o&&!l?e.ariaLiveAnnouncer.announce(t("Leaving a to-do list")):!o&&l&&e.ariaLiveAnnouncer.announce(t("Entering a to-do list")),n=r})}}function Xt(){return(s,i,e)=>{const{writer:t,schema:n}=e;if(!i.modelRange)return;const r=Array.from(i.modelRange.getItems({shallow:!0})).filter(o=>o.getAttribute("listType")==="todo"&&n.checkAttribute(o,"listItemId")).reduce((o,l)=>{const c=l.getAttribute("listItemId");return o.has(c)||o.set(c,C(l)),o},new Map);for(const[,o]of r.entries())if(o.some(l=>l.getAttribute("todoListChecked")))for(const l of o)t.setAttribute("todoListChecked",!0,l)}}function ei(){return(s,i,e)=>{const t=i.modelCursor,n=t.parent,r=i.viewItem;if(!e.consumable.test(r,{name:!0})||r.getAttribute("type")!="checkbox"||!t.isAtStart||!n.hasAttribute("listType"))return;e.consumable.consume(r,{name:!0});const o=e.writer;o.setAttribute("listType","todo",n),i.viewItem.hasAttribute("checked")&&o.setAttribute("todoListChecked",!0,n),i.modelRange=o.createRange(t)}}function j(s){const i=new ye(s);return(e,t,n)=>{const r=i.match(t.viewItem);r&&n.consumable.consume(t.viewItem,r.match)&&Object.assign(t,n.convertChildren(t.viewItem,t.modelCursor))}}function ti(s){const i=new ye(s);return(e,t,n)=>{const r=i.match(t.viewItem);if(!r)return;const o=r.match;o.name=!1,n.consumable.consume(t.viewItem,o)}}function R(s,i){return(s.is("element","paragraph")||s.is("element","listItem"))&&s.getAttribute("listType")=="todo"&&k(s)&&ii(s,i)}function ii(s,i){for(const e of s.getAttributeKeys())if(!e.startsWith("selection:")&&!i.includes(e))return!1;return!0}function si(s,i){return(e,t)=>{const n=Ke(t.keyCode,i.contentLanguageDirection),r=s.schema,o=s.document.selection;if(!o.isCollapsed)return;const l=o.getFirstPosition(),c=l.parent;if(n=="right"&&l.isAtEnd){const a=r.getNearestSelectionRange(s.createPositionAfter(c),"forward");if(!a)return;const u=a.start.parent;u&&h(u)&&u.getAttribute("listType")=="todo"&&(s.change(d=>d.setSelection(a)),t.preventDefault(),t.stopPropagation(),e.stop())}else if(n=="left"&&l.isAtStart&&h(c)&&c.getAttribute("listType")=="todo"){const a=r.getNearestSelectionRange(s.createPositionBefore(c),"backward");if(!a)return;s.change(u=>u.setSelection(a)),t.preventDefault(),t.stopPropagation(),e.stop()}}}function ge(s){return!!s&&s.is("attributeElement")&&s.hasClass("todo-list__label")}function be(s){return!s||!s.is("element","paragraph")&&!s.is("element","listItem")?!1:s.getAttribute("listType")=="todo"}class ni extends w{static get pluginName(){return"TodoListUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor.t;z(this.editor,"todoList",i("To-do List"),mt)}}class gi extends w{static get requires(){return[Qt,ni]}static get pluginName(){return"TodoList"}static get isOfficialPlugin(){return!0}}export{pi as List,E as ListCommand,V as ListEditing,re as ListIndentCommand,hi as ListProperties,qt as ListPropertiesEditing,Yt as ListPropertiesUI,Wt as ListPropertiesUtils,Mt as ListUI,wt as ListUtils,gi as TodoList,Qt as TodoListEditing,ni as TodoListUI};
13
+ */function fe(s){return(e,t,i)=>{const{writer:n,schema:r,consumable:l}=i;if(l.test(t.viewItem,s.viewConsumables)===!1)return;t.modelRange||Object.assign(t,i.convertChildren(t.viewItem,t.modelCursor));let o=!1;for(const c of t.modelRange.getItems({shallow:!0}))r.checkAttribute(c,s.attributeName)&&s.appliesToListItem(c)&&(c.hasAttribute(s.attributeName)||(n.setAttribute(s.attributeName,s.getAttributeOnUpcast(t.viewItem),c),o=!0));o&&l.consume(t.viewItem,s.viewConsumables)}}class Ut extends I{static get pluginName(){return"ListPropertiesUtils"}static get isOfficialPlugin(){return!0}getAllSupportedStyleTypes(){return _e()}getListTypeFromListStyleType(e){return X(e)}getListStyleTypeFromTypeAttribute(e){return Ce(e)}getTypeAttributeFromListStyleType(e){return z(e)}}function xe(s){const{startIndex:e,reversed:t,styles:i}=s;return{styles:$t(i),startIndex:e||!1,reversed:t||!1}}function $t(s){const e={listTypes:["bulleted","numbered"],useAttribute:!1};return s===!0||(s?Array.isArray(s)||typeof s=="string"?e.listTypes=k(s):(e.listTypes=s.listTypes?k(s.listTypes):e.listTypes,e.useAttribute=!!s.useAttribute,s.listStyleTypes&&(e.listStyleTypes=s.listStyleTypes)):e.listTypes=[]),e}const C="default";class Kt extends I{static get requires(){return[P,Ut]}static get pluginName(){return"ListPropertiesEditing"}static get isOfficialPlugin(){return!0}constructor(e){super(e),e.config.define("list.properties",{styles:!0,startIndex:!1,reversed:!1})}init(){const e=this.editor,t=e.model,i=e.plugins.get(P),n=e.config.get("list.properties"),r=Wt(n);for(const l of r)l.addCommand(e),t.schema.extend("$listItem",{allowAttributes:l.attributeName}),i.registerDowncastStrategy({scope:"list",attributeName:l.attributeName,setAttributeOnDowncast(o,c,a){l.setAttributeOnDowncast(o,c,a)}});e.conversion.for("upcast").add(l=>{for(const o of r)l.on("element:ol",fe(o)),l.on("element:ul",fe(o))}),i.on("checkAttributes:list",(l,{viewElement:o,modelAttributes:c})=>{for(const a of r)a.getAttributeOnUpcast(o)!=c[a.attributeName]&&(l.return=!0,l.stop())}),this.listenTo(e.commands.get("indentList"),"afterExecute",(l,o)=>{t.change(c=>{for(const a of o)for(const u of r)u.appliesToListItem(a)&&c.setAttribute(u.attributeName,u.defaultValue,a)})}),i.on("postFixer",(l,{listNodes:o,writer:c})=>{for(const{node:a}of o)for(const u of r)u.hasValidAttribute(a)||(u.appliesToListItem(a)?c.setAttribute(u.attributeName,u.defaultValue,a):c.removeAttribute(u.attributeName,a),l.return=!0)}),i.on("postFixer",(l,{listNodes:o,writer:c})=>{for(const{node:a,previousNodeInList:u}of o)if(u&&u.getAttribute("listType")==a.getAttribute("listType"))for(const d of r){const{attributeName:f}=d;if(!d.appliesToListItem(a))continue;const m=u.getAttribute(f);a.getAttribute(f)!=m&&(c.setAttribute(f,m,a),l.return=!0)}})}}function Wt(s){const e=[],t=xe(s);if(s.styles){const i=t.styles.useAttribute;e.push({attributeName:"listStyle",defaultValue:C,viewConsumables:{styles:"list-style-type"},addCommand(n){let r=_e();i&&(r=r.filter(l=>!!z(l))),n.commands.add("listStyle",new Mt(n,C,r))},appliesToListItem(n){return n.getAttribute("listType")=="numbered"||n.getAttribute("listType")=="bulleted"},hasValidAttribute(n){if(!this.appliesToListItem(n))return!n.hasAttribute("listStyle");if(!n.hasAttribute("listStyle"))return!1;const r=n.getAttribute("listStyle");return r==C?!0:X(r)==n.getAttribute("listType")},setAttributeOnDowncast(n,r,l){if(r&&r!==C)if(i){const o=z(r);if(o){n.setAttribute("type",o,l);return}}else{n.setStyle("list-style-type",r,l);return}n.removeStyle("list-style-type",l),n.removeAttribute("type",l)},getAttributeOnUpcast(n){const r=n.getStyle("list-style-type");if(r)return Rt(r);const l=n.getAttribute("type");return l?Ce(l):C}})}return s.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,viewConsumables:{attributes:"reversed"},addCommand(i){i.commands.add("listReversed",new Dt(i))},appliesToListItem(i){return i.getAttribute("listType")=="numbered"},hasValidAttribute(i){return this.appliesToListItem(i)==i.hasAttribute("listReversed")},setAttributeOnDowncast(i,n,r){n?i.setAttribute("reversed","reversed",r):i.removeAttribute("reversed",r)},getAttributeOnUpcast(i){return i.hasAttribute("reversed")}}),s.startIndex&&e.push({attributeName:"listStart",defaultValue:1,viewConsumables:{attributes:"start"},addCommand(i){i.commands.add("listStart",new Ot(i))},appliesToListItem(i){return M(i.getAttribute("listType"))},hasValidAttribute(i){return this.appliesToListItem(i)==i.hasAttribute("listStart")},setAttributeOnDowncast(i,n,r){n==0||n>1?i.setAttribute("start",n,r):i.removeAttribute("start",r)},getAttributeOnUpcast(i){const n=i.getAttribute("start");return n>=0?n:1}}),e}class Ee extends ie{children;stylesView=null;additionalPropertiesCollapsibleView=null;startIndexFieldView=null;reversedSwitchButtonView=null;focusTracker=new ee;keystrokes=new te;focusables=new ze;focusCycler;constructor(e,{enabledProperties:t,styleButtonViews:i,styleGridAriaLabel:n}){super(e);const r=["ck","ck-list-properties"];this.children=this.createCollection(),this.focusCycler=new Ge({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),i&&i.length?(this.stylesView=this._createStylesView(i,n),this.children.add(this.stylesView)):r.push("ck-list-properties_without-styles"),(t.startIndex||t.reversed)&&(this._addNumberedListPropertyViews(t),r.push("ck-list-properties_with-numbered-properties")),this.setTemplate({tag:"div",attributes:{class:r},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 e of this.stylesView.children)this.stylesView.focusTracker.add(e.element);Ze({keystrokeHandler:this.stylesView.keystrokes,focusTracker:this.stylesView.focusTracker,gridItems:this.stylesView.children,numberOfColumns:()=>$e.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 e=t=>t.stopPropagation();this.keystrokes.set("arrowright",e),this.keystrokes.set("arrowleft",e),this.keystrokes.set("arrowup",e),this.keystrokes.set("arrowdown",e)}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(e,t){const i=new ie(this.locale);return i.children=i.createCollection(),i.children.addMany(e),i.setTemplate({tag:"div",attributes:{"aria-label":t,class:["ck","ck-list-styles-list"]},children:i.children}),i.children.delegate("execute").to(this),i.focus=function(){for(const n of this.children)if(n instanceof G&&n.isOn){n.focus();return}this.children.first.focus()},i.focusTracker=new ee,i.keystrokes=new te,i.render(),i.keystrokes.listenTo(i.element),i}_addNumberedListPropertyViews(e){const t=this.locale.t,i=[];e.startIndex&&(this.startIndexFieldView=this._createStartIndexField(),i.push(this.startIndexFieldView)),e.reversed&&(this.reversedSwitchButtonView=this._createReversedSwitchButton(),i.push(this.reversedSwitchButtonView)),this.stylesView?(this.additionalPropertiesCollapsibleView=new Je(this.locale,i),this.additionalPropertiesCollapsibleView.set({label:t("List properties"),isCollapsed:!0}),this.additionalPropertiesCollapsibleView.buttonView.bind("isEnabled").toMany(i,"isEnabled",(...n)=>n.some(r=>r)),this.additionalPropertiesCollapsibleView.buttonView.on("change:isEnabled",(n,r,l)=>{l||(this.additionalPropertiesCollapsibleView.isCollapsed=!0)}),this.children.add(this.additionalPropertiesCollapsibleView)):this.children.addMany(i)}_createStartIndexField(){const e=this.locale.t,t=new Qe(this.locale,Xe);return t.set({label:e("Start at"),class:"ck-numbered-list-properties__start-index"}),t.fieldView.set({min:0,step:1,value:1,inputMode:"numeric"}),t.fieldView.on("input",()=>{const i=t.fieldView.element,n=i.valueAsNumber;if(Number.isNaN(n)){t.errorText=e("Invalid start index value.");return}i.checkValidity()?this.fire("listStart",{startIndex:n}):t.errorText=e("Start index must be greater than 0.")}),t}_createReversedSwitchButton(){const e=this.locale.t,t=new et(this.locale);return t.set({withText:!0,label:e("Reversed order"),class:"ck-numbered-list-properties__reversed-order"}),t.delegate("execute").to(this,"listReversed"),t}}class jt extends I{static get pluginName(){return"ListPropertiesUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.locale.t,i=e.config.get("list.properties"),n=xe(i),r=n.styles.listTypes;if(r.includes("bulleted")){const l=[{label:t("Toggle the disc list style"),tooltip:t("Disc"),type:"disc",icon:tt},{label:t("Toggle the circle list style"),tooltip:t("Circle"),type:"circle",icon:it},{label:t("Toggle the square list style"),tooltip:t("Square"),type:"square",icon:st}],o=t("Bulleted List"),c=t("Bulleted list styles toolbar"),a="bulletedList";e.ui.componentFactory.add(a,me({editor:e,normalizedConfig:n,parentCommandName:a,buttonLabel:o,buttonIcon:Z,styleGridAriaLabel:c,styleDefinitions:l})),e.ui.componentFactory.add(`menuBar:${a}`,pe({editor:e,normalizedConfig:n,parentCommandName:a,buttonLabel:o,styleGridAriaLabel:c,styleDefinitions:l}))}if(r.includes("numbered")||i.startIndex||i.reversed){const l=[{label:t("Toggle the decimal list style"),tooltip:t("Decimal"),type:"decimal",icon:nt},{label:t("Toggle the decimal with leading zero list style"),tooltip:t("Decimal with leading zero"),type:"decimal-leading-zero",icon:rt},{label:t("Toggle the lower–roman list style"),tooltip:t("Lower–roman"),type:"lower-roman",icon:ot},{label:t("Toggle the upper–roman list style"),tooltip:t("Upper-roman"),type:"upper-roman",icon:lt},{label:t("Toggle the lower–latin list style"),tooltip:t("Lower-latin"),type:"lower-latin",icon:ct},{label:t("Toggle the upper–latin list style"),tooltip:t("Upper-latin"),type:"upper-latin",icon:at}],o=t("Numbered List"),c=t("Numbered list styles toolbar"),a="numberedList";e.ui.componentFactory.add(a,me({editor:e,normalizedConfig:n,parentCommandName:a,buttonLabel:o,buttonIcon:J,styleGridAriaLabel:c,styleDefinitions:l})),r.includes("numbered")&&e.ui.componentFactory.add(`menuBar:${a}`,pe({editor:e,normalizedConfig:n,parentCommandName:a,buttonLabel:o,styleGridAriaLabel:c,styleDefinitions:l}))}}}function me({editor:s,normalizedConfig:e,parentCommandName:t,buttonLabel:i,buttonIcon:n,styleGridAriaLabel:r,styleDefinitions:l}){const o=s.commands.get(t);return c=>{const a=We(c,je),u=a.buttonView;return a.bind("isEnabled").to(o),a.class="ck-list-styles-dropdown",u.on("execute",()=>{s.execute(t),s.editing.view.focus()}),u.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),u.bind("isOn").to(o,"value",d=>!!d),a.once("change:isOpen",()=>{const d=qt({editor:s,normalizedConfig:e,dropdownView:a,parentCommandName:t,styleGridAriaLabel:r,styleDefinitions:l});a.panelView.children.add(d)}),a.on("execute",()=>{s.editing.view.focus()}),a}}function Be({editor:s,listStyleCommand:e,parentCommandName:t}){const i=s.locale,n=s.commands.get(t);return({label:r,type:l,icon:o,tooltip:c})=>{const a=new G(i);return a.set({label:r,icon:o,tooltip:c}),a.bind("isOn").to(e,"value",u=>u===l),a.on("execute",()=>{n.value?e.value===l?s.execute(t):e.value!==l&&s.execute("listStyle",{type:l}):s.model.change(()=>{s.execute("listStyle",{type:l})})}),a}}function qt({editor:s,normalizedConfig:e,dropdownView:t,parentCommandName:i,styleDefinitions:n,styleGridAriaLabel:r}){const l=s.locale,o={...e,...i!="numberedList"?{startIndex:!1,reversed:!1}:null},c=i.replace("List","");let a=null;if(e.styles.listTypes.includes(c)){const d=s.commands.get("listStyle"),f=Be({editor:s,parentCommandName:i,listStyleCommand:d}),m=e.styles.listStyleTypes;let h=n;if(m){const g=m[c];g&&(h=n.filter(F=>g.includes(F.type)))}const w=Pe(d);a=h.filter(w).map(f)}const u=new Ee(l,{styleGridAriaLabel:r,enabledProperties:o,styleButtonViews:a});if(e.styles.listTypes.includes(c)&&Ye(t,()=>u.stylesView.children.find(d=>d.isOn)),o.startIndex){const d=s.commands.get("listStart");u.startIndexFieldView.bind("isEnabled").to(d),u.startIndexFieldView.fieldView.bind("value").to(d),u.on("listStart",(f,m)=>s.execute("listStart",m))}if(o.reversed){const d=s.commands.get("listReversed");u.reversedSwitchButtonView.bind("isEnabled").to(d),u.reversedSwitchButtonView.bind("isOn").to(d,"value",f=>!!f),u.on("listReversed",()=>{const f=d.value;s.execute("listReversed",{reversed:!f})})}return u.delegate("execute").to(t),u}function pe({editor:s,normalizedConfig:e,parentCommandName:t,buttonLabel:i,styleGridAriaLabel:n,styleDefinitions:r}){return l=>{const o=new qe(l),c=s.commands.get(t),a=s.commands.get("listStyle"),u=Pe(a),d=Be({editor:s,parentCommandName:t,listStyleCommand:a}),f=e.styles.listStyleTypes;let m=r;if(f){const g=c.type,F=f[g];F&&(m=r.filter(Ve=>F.includes(Ve.type)))}const h=m.filter(u).map(d),w=new Ee(l,{styleGridAriaLabel:n,enabledProperties:{...e,startIndex:!1,reversed:!1},styleButtonViews:h});return w.delegate("execute").to(o),o.buttonView.set({label:i,icon:t==="bulletedList"?Z:J}),o.panelView.children.add(w),o.bind("isEnabled").to(c,"isEnabled"),o.on("execute",()=>{s.editing.view.focus()}),o}}function Pe(s){return typeof s.isStyleTypeSupported=="function"?e=>s.isStyleTypeSupported(e.type):()=>!0}class di extends I{static get requires(){return[Kt,jt]}static get pluginName(){return"ListProperties"}static get isOfficialPlugin(){return!0}}class Ht extends T{constructor(e){super(e),this.on("execute",()=>{this.refresh()},{priority:"highest"})}refresh(){const e=this._getSelectedItems();this.value=this._getValue(e),this.isEnabled=!!e.length}execute(e={}){this.editor.model.change(t=>{const i=this._getSelectedItems(),n=e.forceValue===void 0?!this._getValue(i):e.forceValue;for(const r of i)n?t.setAttribute("todoListChecked",!0,r):t.removeAttribute("todoListChecked",r)})}_getValue(e){return e.every(t=>t.getAttribute("todoListChecked"))}_getSelectedItems(){const e=this.editor.model,t=e.schema,i=e.document.selection.getFirstRange(),n=i.start.parent,r=[];t.checkAttribute(n,"todoListChecked")&&r.push(..._(n));for(const l of i.getItems({shallow:!0}))t.checkAttribute(l,"todoListChecked")&&!r.includes(l)&&r.push(..._(l));return r}}class Yt extends dt{domEventType=["change"];onDomEvent(e){if(e.target){const t=this.view.domConverter.mapDomToView(e.target);t&&t.is("element","input")&&t.getAttribute("type")=="checkbox"&&t.findAncestor({classes:"todo-list__label"})&&this.fire("todoCheckboxChange",e)}}}const zt=Me("Ctrl+Enter");class Gt extends I{static get pluginName(){return"TodoListEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[P]}init(){const e=this.editor,t=e.model,i=e.editing,n=e.plugins.get(P),l=e.config.get("list.multiBlock")?"paragraph":"listItem";e.commands.add("todoList",new x(e,"todo")),e.commands.add("checkTodoList",new Ht(e)),i.view.addObserver(Yt),t.schema.extend("$listItem",{allowAttributes:"todoListChecked"}),t.schema.addAttributeCheck(o=>{const c=o.last;if(!c.getAttribute("listItemId")||c.getAttribute("listType")!="todo")return!1},"todoListChecked"),e.conversion.for("upcast").add(o=>{o.on("element:input",Jt()),o.on("element:li",Zt(),{priority:"low"}),o.on("element:label",W({name:"label",classes:"todo-list__label"})),o.on("element:label",W({name:"label",classes:["todo-list__label","todo-list__label_without-description"]})),o.on("element:span",W({name:"span",classes:"todo-list__label__description"})),o.on("element:ul",Qt({name:"ul",classes:"todo-list"}))}),e.conversion.for("downcast").elementToElement({model:l,view:(o,{writer:c})=>{if(O(o,n.getListAttributeNames()))return c.createContainerElement("span",{class:"todo-list__label__description"})},converterPriority:"highest"}),n.registerDowncastStrategy({scope:"list",attributeName:"listType",setAttributeOnDowncast(o,c,a){c=="todo"?o.addClass("todo-list",a):o.removeClass("todo-list",a)}}),n.registerDowncastStrategy({scope:"itemMarker",attributeName:"todoListChecked",createElement(o,c,{dataPipeline:a}){if(c.getAttribute("listType")!="todo")return null;const u=o.createUIElement("input",{type:"checkbox",...c.getAttribute("todoListChecked")?{checked:"checked"}:null,...a?{disabled:"disabled"}:{tabindex:"-1"}});if(a)return u;const d=o.createContainerElement("span",{contenteditable:"false"},u);return d.getFillerOffset=()=>null,d},canWrapElement(o){return O(o,n.getListAttributeNames())},createWrapperElement(o,c,{dataPipeline:a}){const u=["todo-list__label"];return O(c,n.getListAttributeNames())||u.push("todo-list__label_without-description"),o.createAttributeElement(a?"label":"span",{class:u.join(" ")})}}),n.on("checkElement",(o,{modelElement:c,viewElement:a})=>{const u=O(c,n.getListAttributeNames());a.hasClass("todo-list__label__description")!=u&&(o.return=!0,o.stop())}),n.on("checkElement",(o,{modelElement:c,viewElement:a})=>{const u=c.getAttribute("listType")=="todo"&&A(c);let d=!1;const f=e.editing.view.createPositionBefore(a).getWalker({direction:"backward"});for(const{item:m}of f){if(m.is("element")&&e.editing.mapper.toModelElement(m))break;m.is("element","input")&&m.getAttribute("type")=="checkbox"&&(d=!0)}d!=u&&(o.return=!0,o.stop())}),n.on("postFixer",(o,{listNodes:c,writer:a})=>{for(const{node:u,previousNodeInList:d}of c){if(!d||d.getAttribute("listItemId")!=u.getAttribute("listItemId"))continue;const f=d.hasAttribute("todoListChecked"),m=u.hasAttribute("todoListChecked");m&&!f?(a.removeAttribute("todoListChecked",u),o.return=!0):!m&&f&&(a.setAttribute("todoListChecked",!0,u),o.return=!0)}}),t.document.registerPostFixer(o=>{const c=t.document.differ.getChanges();let a=!1;for(const u of c)if(u.type=="attribute"&&u.attributeKey=="listType"){const d=u.range.start.nodeAfter;u.attributeOldValue=="todo"&&d.hasAttribute("todoListChecked")&&(o.removeAttribute("todoListChecked",d),a=!0)}else if(u.type=="insert"&&u.name!="$text")for(const{item:d}of o.createRangeOn(u.position.nodeAfter))d.is("element")&&d.getAttribute("listType")!="todo"&&d.hasAttribute("todoListChecked")&&(o.removeAttribute("todoListChecked",d),a=!0);return a}),this.listenTo(i.view.document,"keydown",(o,c)=>{Re(c)===zt&&(e.execute("checkTodoList"),o.stop())},{priority:"high"}),this.listenTo(i.view.document,"todoCheckboxChange",(o,c)=>{const a=c.target;if(!a||!a.is("element","input"))return;const u=i.view.createPositionAfter(a),f=i.mapper.toModelPosition(u).parent;f&&p(f)&&f.getAttribute("listType")=="todo"&&this._handleCheckmarkChange(f)}),this.listenTo(i.view.document,"arrowKey",ei(t,e.locale),{context:"$text"}),this.listenTo(i.mapper,"viewToModelPosition",(o,c)=>{const a=c.viewPosition.parent,u=a.is("attributeElement","li")&&c.viewPosition.offset==0,d=he(a)&&c.viewPosition.offset<=1,f=a.is("element","span")&&a.getAttribute("contenteditable")=="false"&&he(a.parent);if(!u&&!d&&!f)return;const m=c.modelPosition.nodeAfter;m&&m.getAttribute("listType")=="todo"&&(c.modelPosition=t.createPositionAt(m,0))},{priority:"low"}),this._initAriaAnnouncements()}_handleCheckmarkChange(e){const t=this.editor,i=t.model,n=Array.from(i.document.selection.getRanges());i.change(r=>{r.setSelection(e,"end"),t.execute("checkTodoList"),r.setSelection(n)})}_initAriaAnnouncements(){const{model:e,ui:t,t:i}=this.editor;let n=null;t&&e.document.selection.on("change:range",()=>{const r=e.document.selection.focus.parent,l=ge(n),o=ge(r);l&&!o?t.ariaLiveAnnouncer.announce(i("Leaving a to-do list")):!l&&o&&t.ariaLiveAnnouncer.announce(i("Entering a to-do list")),n=r})}}function Zt(){return(s,e,t)=>{const{writer:i,schema:n}=t;if(!e.modelRange)return;const r=Array.from(e.modelRange.getItems({shallow:!0})).filter(l=>l.getAttribute("listType")==="todo"&&n.checkAttribute(l,"listItemId")).reduce((l,o)=>{const c=o.getAttribute("listItemId");return l.has(c)||l.set(c,_(o)),l},new Map);for(const[,l]of r.entries())if(l.some(o=>o.getAttribute("todoListChecked")))for(const o of l)i.setAttribute("todoListChecked",!0,o)}}function Jt(){return(s,e,t)=>{const i=e.modelCursor,n=i.parent,r=e.viewItem;if(!t.consumable.test(r,{name:!0})||r.getAttribute("type")!="checkbox"||!i.isAtStart||!n.hasAttribute("listType"))return;t.consumable.consume(r,{name:!0});const l=t.writer;l.setAttribute("listType","todo",n),e.viewItem.hasAttribute("checked")&&l.setAttribute("todoListChecked",!0,n),e.modelRange=l.createRange(i)}}function W(s){const e=new be(s);return(t,i,n)=>{const r=e.match(i.viewItem);r&&n.consumable.consume(i.viewItem,r.match)&&Object.assign(i,n.convertChildren(i.viewItem,i.modelCursor))}}function Qt(s){const e=new be(s);return(t,i,n)=>{const r=e.match(i.viewItem);if(!r)return;const l=r.match;l.name=!1,n.consumable.consume(i.viewItem,l)}}function O(s,e){return(s.is("element","paragraph")||s.is("element","listItem"))&&s.getAttribute("listType")=="todo"&&A(s)&&Xt(s,e)}function Xt(s,e){for(const t of s.getAttributeKeys())if(!t.startsWith("selection:")&&!e.includes(t))return!1;return!0}function ei(s,e){return(t,i)=>{const n=De(i.keyCode,e.contentLanguageDirection),r=s.schema,l=s.document.selection;if(!l.isCollapsed)return;const o=l.getFirstPosition(),c=o.parent;if(n=="right"&&o.isAtEnd){const a=r.getNearestSelectionRange(s.createPositionAfter(c),"forward");if(!a)return;const u=a.start.parent;u&&p(u)&&u.getAttribute("listType")=="todo"&&(s.change(d=>d.setSelection(a)),i.preventDefault(),i.stopPropagation(),t.stop())}else if(n=="left"&&o.isAtStart&&p(c)&&c.getAttribute("listType")=="todo"){const a=r.getNearestSelectionRange(s.createPositionBefore(c),"backward");if(!a)return;s.change(u=>u.setSelection(a)),i.preventDefault(),i.stopPropagation(),t.stop()}}}function he(s){return!!s&&s.is("attributeElement")&&s.hasClass("todo-list__label")}function ge(s){return!s||!s.is("element","paragraph")&&!s.is("element","listItem")?!1:s.getAttribute("listType")=="todo"}class ti extends I{static get pluginName(){return"TodoListUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.t;Y(this.editor,"todoList",e("To-do List"),ut)}}class fi extends I{static get requires(){return[Gt,ti]}static get pluginName(){return"TodoList"}static get isOfficialPlugin(){return!0}}export{ui as List,x as ListCommand,P as ListEditing,ne as ListIndentCommand,di as ListProperties,Kt as ListPropertiesEditing,jt as ListPropertiesUI,Ut as ListPropertiesUtils,Ft as ListUI,bt as ListUtils,fi as TodoList,Gt as TodoListEditing,ti as TodoListUI};