@ncino/web-components 4.0.0-preview.9 → 4.0.0

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 (254) hide show
  1. package/dist/assets/node_modules/.pnpm/{ckeditor5@45.0.0 → ckeditor5@45.1.0}/node_modules/ckeditor5/dist/ckeditor5.css +1 -1
  2. package/dist/components/accordion/gator/base/accordion.gator.js +1 -1
  3. package/dist/components/accordion/gator/group/accordion-group.gator.js +1 -1
  4. package/dist/components/alert/gator/base/alert.gator.js +1 -1
  5. package/dist/components/banner/gator/banner.gator.js +1 -1
  6. package/dist/components/button/gator/button.gator.js +1 -1
  7. package/dist/components/card/gator/base/card.gator.js +4 -2
  8. package/dist/components/checkbox/checkbox.gator.js +1 -1
  9. package/dist/components/combobox/base/combobox.js +1 -1
  10. package/dist/components/combobox/base/combobox.slds.js +8 -8
  11. package/dist/components/date-picker/base/datepicker.js +1 -1
  12. package/dist/components/date-picker/base/gator/datepicker.gator.js +15 -14
  13. package/dist/components/display-card/gator/display-card.gator.js +1 -1
  14. package/dist/components/headline-card/gator/headline-card.gator.js +1 -1
  15. package/dist/components/icon/gator/icon.gator.js +4 -4
  16. package/dist/components/icon/gator/index.js +1 -1
  17. package/dist/components/icon/gator/templates/chart-bar-horizontal.js +5 -0
  18. package/dist/components/icon/gator/templates/chart-bar.js +5 -0
  19. package/dist/components/icon/gator/templates/chart-donut.js +5 -0
  20. package/dist/components/icon/gator/templates/chart-line.js +5 -0
  21. package/dist/components/icon/gator/templates/chart-pie.js +5 -0
  22. package/dist/components/icon/gator/templates/chart-scatter.js +5 -0
  23. package/dist/components/icon/gator/templates/checkerboard.js +5 -0
  24. package/dist/components/icon/gator/templates/exclude-square.js +5 -0
  25. package/dist/components/icon/gator/templates/grid-four.js +5 -0
  26. package/dist/components/icon/gator/templates/grid-nine.js +5 -0
  27. package/dist/components/icon/gator/templates/index.js +1 -1
  28. package/dist/components/icon/gator/templates/kanban.js +5 -0
  29. package/dist/components/icon/gator/templates/lightbulb-filament.js +5 -0
  30. package/dist/components/icon/gator/templates/list-star.js +5 -0
  31. package/dist/components/icon/gator/templates/selection.js +5 -0
  32. package/dist/components/icon/gator/templates/square-split-horizontal.js +5 -0
  33. package/dist/components/icon/gator/templates/square-split-vertical.js +5 -0
  34. package/dist/components/icon/gator/templates/square.js +5 -0
  35. package/dist/components/icon/gator/templates/table.js +5 -0
  36. package/dist/components/icon/gator/templates/text-aa.js +5 -0
  37. package/dist/components/icon/gator/templates/trend-up.js +5 -0
  38. package/dist/components/input/base/input-base.gator.js +6 -5
  39. package/dist/components/input/base/input-base.js +1 -1
  40. package/dist/components/input/gator/dropdown/input-dropdown.gator.js +6 -5
  41. package/dist/components/input/gator/help-text/help-text.gator.js +1 -1
  42. package/dist/components/input/gator/input-date/input-date.gator.js +52 -18
  43. package/dist/components/input/gator/input-file/file-uploaded-preview/file-upload-preview.gator.js +1 -1
  44. package/dist/components/input/gator/input-file/input-file.gator.js +1 -1
  45. package/dist/components/input/gator/input-label/input-label.gator.js +4 -4
  46. package/dist/components/input/gator/input-text/input-text.gator.js +5 -3
  47. package/dist/components/input/gator/input-textarea/input-textarea.gator.js +4 -3
  48. package/dist/components/input/gator/input-time/input-time.gator.js +2 -2
  49. package/dist/components/input-rich-text/ckeditor-config.js +1 -1
  50. package/dist/components/input-rich-text/input-rich-text.slds.js +2 -2
  51. package/dist/components/list/gator/list-item/list-item.gator.js +1 -1
  52. package/dist/components/menu/base/gator/menu.gator.js +3 -3
  53. package/dist/components/menu/menu-item/menu-item.js +1 -1
  54. package/dist/components/panel/gator/panel.storybook-test.js +1 -1
  55. package/dist/components/popover/gator/popover.gator.js +49 -0
  56. package/dist/components/popover/index.js +1 -0
  57. package/dist/components/popover/popover.js +1 -0
  58. package/dist/components/radio-group/radio-group.gator.js +1 -1
  59. package/dist/components/selection-box/selection-box.gator.js +1 -1
  60. package/dist/components/table/gator/table-pagination/table-pagination.gator.js +1 -1
  61. package/dist/index.gator.js +1 -1
  62. package/dist/index.js +1 -1
  63. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-alignment@45.0.0 → @ckeditor_ckeditor5-alignment@45.1.0}/node_modules/@ckeditor/ckeditor5-alignment/dist/index.js +1 -1
  64. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-autoformat@45.0.0 → @ckeditor_ckeditor5-autoformat@45.1.0}/node_modules/@ckeditor/ckeditor5-autoformat/dist/index.js +1 -1
  65. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-autosave@45.0.0 → @ckeditor_ckeditor5-autosave@45.1.0}/node_modules/@ckeditor/ckeditor5-autosave/dist/index.js +1 -1
  66. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-basic-styles@45.0.0 → @ckeditor_ckeditor5-basic-styles@45.1.0}/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js +1 -1
  67. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-block-quote@45.0.0 → @ckeditor_ckeditor5-block-quote@45.1.0}/node_modules/@ckeditor/ckeditor5-block-quote/dist/index.js +1 -1
  68. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-clipboard@45.0.0 → @ckeditor_ckeditor5-clipboard@45.1.0}/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js +2 -2
  69. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-cloud-services@45.0.0 → @ckeditor_ckeditor5-cloud-services@45.1.0}/node_modules/@ckeditor/ckeditor5-cloud-services/dist/index.js +1 -1
  70. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-code-block@45.1.0/node_modules/@ckeditor/ckeditor5-code-block/dist/index.js +7 -0
  71. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-core@45.1.0/node_modules/@ckeditor/ckeditor5-core/dist/index.js +4 -0
  72. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-editor-classic@45.1.0/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js +4 -0
  73. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-engine@45.0.0 → @ckeditor_ckeditor5-engine@45.1.0}/node_modules/@ckeditor/ckeditor5-engine/dist/index.js +11 -11
  74. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-enter@45.0.0 → @ckeditor_ckeditor5-enter@45.1.0}/node_modules/@ckeditor/ckeditor5-enter/dist/index.js +1 -1
  75. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-essentials@45.0.0 → @ckeditor_ckeditor5-essentials@45.1.0}/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js +1 -1
  76. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-find-and-replace@45.0.0 → @ckeditor_ckeditor5-find-and-replace@45.1.0}/node_modules/@ckeditor/ckeditor5-find-and-replace/dist/index.js +1 -1
  77. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-font@45.0.0 → @ckeditor_ckeditor5-font@45.1.0}/node_modules/@ckeditor/ckeditor5-font/dist/index.js +1 -1
  78. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-heading@45.0.0 → @ckeditor_ckeditor5-heading@45.1.0}/node_modules/@ckeditor/ckeditor5-heading/dist/index.js +1 -1
  79. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-highlight@45.0.0 → @ckeditor_ckeditor5-highlight@45.1.0}/node_modules/@ckeditor/ckeditor5-highlight/dist/index.js +1 -1
  80. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-horizontal-line@45.0.0 → @ckeditor_ckeditor5-horizontal-line@45.1.0}/node_modules/@ckeditor/ckeditor5-horizontal-line/dist/index.js +1 -1
  81. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-html-embed@45.0.0 → @ckeditor_ckeditor5-html-embed@45.1.0}/node_modules/@ckeditor/ckeditor5-html-embed/dist/index.js +1 -1
  82. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-html-support@45.0.0 → @ckeditor_ckeditor5-html-support@45.1.0}/node_modules/@ckeditor/ckeditor5-html-support/dist/index.js +4 -4
  83. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-image@45.1.0/node_modules/@ckeditor/ckeditor5-image/dist/index.js +10 -0
  84. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-indent@45.0.0 → @ckeditor_ckeditor5-indent@45.1.0}/node_modules/@ckeditor/ckeditor5-indent/dist/index.js +1 -1
  85. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-language@45.0.0 → @ckeditor_ckeditor5-language@45.1.0}/node_modules/@ckeditor/ckeditor5-language/dist/index.js +1 -1
  86. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-link@45.0.0 → @ckeditor_ckeditor5-link@45.1.0}/node_modules/@ckeditor/ckeditor5-link/dist/index.js +2 -2
  87. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-list@45.0.0 → @ckeditor_ckeditor5-list@45.1.0}/node_modules/@ckeditor/ckeditor5-list/dist/index.js +1 -1
  88. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-markdown-gfm@45.0.0 → @ckeditor_ckeditor5-markdown-gfm@45.1.0}/node_modules/@ckeditor/ckeditor5-markdown-gfm/dist/index.js +1 -1
  89. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-media-embed@45.0.0 → @ckeditor_ckeditor5-media-embed@45.1.0}/node_modules/@ckeditor/ckeditor5-media-embed/dist/index.js +1 -1
  90. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-mention@45.0.0 → @ckeditor_ckeditor5-mention@45.1.0}/node_modules/@ckeditor/ckeditor5-mention/dist/index.js +1 -1
  91. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-page-break@45.0.0 → @ckeditor_ckeditor5-page-break@45.1.0}/node_modules/@ckeditor/ckeditor5-page-break/dist/index.js +1 -1
  92. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-paragraph@45.0.0 → @ckeditor_ckeditor5-paragraph@45.1.0}/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +1 -1
  93. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-paste-from-office@45.0.0 → @ckeditor_ckeditor5-paste-from-office@45.1.0}/node_modules/@ckeditor/ckeditor5-paste-from-office/dist/index.js +5 -5
  94. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-remove-format@45.0.0 → @ckeditor_ckeditor5-remove-format@45.1.0}/node_modules/@ckeditor/ckeditor5-remove-format/dist/index.js +1 -1
  95. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-select-all@45.0.0 → @ckeditor_ckeditor5-select-all@45.1.0}/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js +1 -1
  96. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-show-blocks@45.0.0 → @ckeditor_ckeditor5-show-blocks@45.1.0}/node_modules/@ckeditor/ckeditor5-show-blocks/dist/index.js +1 -1
  97. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-source-editing@45.0.0 → @ckeditor_ckeditor5-source-editing@45.1.0}/node_modules/@ckeditor/ckeditor5-source-editing/dist/index.js +1 -1
  98. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-special-characters@45.0.0 → @ckeditor_ckeditor5-special-characters@45.1.0}/node_modules/@ckeditor/ckeditor5-special-characters/dist/index.js +1 -1
  99. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-style@45.0.0 → @ckeditor_ckeditor5-style@45.1.0}/node_modules/@ckeditor/ckeditor5-style/dist/index.js +1 -1
  100. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-table@45.1.0/node_modules/@ckeditor/ckeditor5-table/dist/index.js +16 -0
  101. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-typing@45.1.0/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +13 -0
  102. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-ui@45.1.0/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +28 -0
  103. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-undo@45.0.0 → @ckeditor_ckeditor5-undo@45.1.0}/node_modules/@ckeditor/ckeditor5-undo/dist/index.js +1 -1
  104. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-upload@45.0.0 → @ckeditor_ckeditor5-upload@45.1.0}/node_modules/@ckeditor/ckeditor5-upload/dist/index.js +1 -1
  105. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-utils@45.0.0 → @ckeditor_ckeditor5-utils@45.1.0}/node_modules/@ckeditor/ckeditor5-utils/dist/index.js +15 -15
  106. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-widget@45.1.0/node_modules/@ckeditor/ckeditor5-widget/dist/index.js +4 -0
  107. package/dist/node_modules/.pnpm/@floating-ui_core@1.7.0/node_modules/@floating-ui/core/dist/floating-ui.core.js +1 -1
  108. package/dist/node_modules/.pnpm/@floating-ui_dom@1.7.0/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +1 -1
  109. package/dist/node_modules/.pnpm/@floating-ui_utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +1 -1
  110. package/dist/node_modules/.pnpm/{@storybook_instrumenter@8.6.12_storybook@8.6.12_prettier@3.5.3_ → @storybook_instrumenter@8.6.14_storybook@8.6.14_prettier@3.5.3_}/node_modules/@storybook/instrumenter/dist/index.js +1 -1
  111. package/dist/node_modules/.pnpm/{@storybook_test@8.6.12_storybook@8.6.12_prettier@3.5.3_ → @storybook_test@8.6.14_storybook@8.6.14_prettier@3.5.3_}/node_modules/@storybook/test/dist/index.js +2 -2
  112. package/dist/node_modules/.pnpm/{@vitest_expect@3.1.3 → @vitest_expect@3.1.4}/node_modules/@vitest/expect/dist/index.js +1 -1
  113. package/dist/node_modules/.pnpm/{@vitest_runner@3.1.3 → @vitest_runner@3.1.4}/node_modules/@vitest/runner/dist/index.js +1 -1
  114. package/dist/node_modules/.pnpm/{@vitest_snapshot@3.1.3 → @vitest_snapshot@3.1.4}/node_modules/@vitest/snapshot/dist/index.js +1 -1
  115. package/dist/node_modules/.pnpm/{@vitest_utils@3.1.3 → @vitest_utils@3.1.4}/node_modules/@vitest/utils/dist/chunk-_commonjsHelpers.js +1 -1
  116. package/dist/node_modules/.pnpm/{@vitest_utils@3.1.3 → @vitest_utils@3.1.4}/node_modules/@vitest/utils/dist/diff.js +1 -1
  117. package/dist/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/actualApply.js +1 -0
  118. package/dist/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/applyBind.js +1 -0
  119. package/dist/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionApply.js +1 -0
  120. package/dist/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionCall.js +1 -0
  121. package/dist/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/index.js +1 -0
  122. package/dist/node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/reflectApply.js +1 -0
  123. package/dist/node_modules/.pnpm/call-bind@1.0.8/node_modules/call-bind/index.js +1 -0
  124. package/dist/node_modules/.pnpm/call-bound@1.0.4/node_modules/call-bound/index.js +1 -0
  125. package/dist/node_modules/.pnpm/dunder-proto@1.0.1/node_modules/dunder-proto/get.js +1 -0
  126. package/dist/node_modules/.pnpm/es-define-property@1.0.1/node_modules/es-define-property/index.js +1 -0
  127. package/dist/node_modules/.pnpm/es-object-atoms@1.1.1/node_modules/es-object-atoms/index.js +1 -0
  128. package/dist/node_modules/.pnpm/for-each@0.3.5/node_modules/for-each/index.js +1 -0
  129. package/dist/node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js +1 -0
  130. package/dist/node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Object.getPrototypeOf.js +1 -0
  131. package/dist/node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Reflect.getPrototypeOf.js +1 -0
  132. package/dist/node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/index.js +1 -0
  133. package/dist/node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/gOPD.js +1 -0
  134. package/dist/node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/index.js +1 -0
  135. package/dist/node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/index.js +1 -0
  136. package/dist/node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/shams.js +1 -0
  137. package/dist/node_modules/.pnpm/is-arguments@1.2.0/node_modules/is-arguments/index.js +1 -0
  138. package/dist/node_modules/.pnpm/is-generator-function@1.1.0/node_modules/is-generator-function/index.js +1 -0
  139. package/dist/node_modules/.pnpm/is-regex@1.2.1/node_modules/is-regex/index.js +1 -0
  140. package/dist/node_modules/.pnpm/{is-typed-array@1.1.13 → is-typed-array@1.1.15}/node_modules/is-typed-array/index.js +1 -1
  141. package/dist/node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/abs.js +1 -0
  142. package/dist/node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/floor.js +1 -0
  143. package/dist/node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/isNaN.js +1 -0
  144. package/dist/node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/max.js +1 -0
  145. package/dist/node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/min.js +1 -0
  146. package/dist/node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/pow.js +1 -0
  147. package/dist/node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/round.js +1 -0
  148. package/dist/node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/sign.js +1 -0
  149. package/dist/node_modules/.pnpm/safe-regex-test@1.1.0/node_modules/safe-regex-test/index.js +1 -0
  150. package/dist/node_modules/.pnpm/util@0.12.5/node_modules/util/support/types.js +1 -1
  151. package/dist/node_modules/.pnpm/{vitest@3.1.3_@types_debug@4.1.12_@types_node@22.15.3_@vitest_browser@3.1.3_@vitest_ui@3_2e2b9607d5b1537fcaa69fd02e1b9b3d → vitest@3.1.4_@types_debug@4.1.12_@types_node@22.15.21_@vitest_browser@3.1.4_@vitest_ui@_b157c97eca1209d41387a466815fb09f}/node_modules/vitest/dist/chunks/utils.CgTj3MsC.js +1 -1
  152. package/dist/node_modules/.pnpm/{vitest@3.1.3_@types_debug@4.1.12_@types_node@22.15.3_@vitest_browser@3.1.3_@vitest_ui@3_2e2b9607d5b1537fcaa69fd02e1b9b3d → vitest@3.1.4_@types_debug@4.1.12_@types_node@22.15.21_@vitest_browser@3.1.4_@vitest_ui@_b157c97eca1209d41387a466815fb09f}/node_modules/vitest/dist/chunks/vi.ClIskdbk.js +1 -1
  153. package/dist/node_modules/.pnpm/which-typed-array@1.1.19/node_modules/which-typed-array/index.js +1 -0
  154. package/dist/packages/web-components/public/styles/gator/gator-global-styles.css.js +1 -0
  155. package/dist/packages/web-components/src/components/alert/gator/base/alert.gator.scss.js +1 -1
  156. package/dist/packages/web-components/src/components/banner/gator/banner.gator.scss.js +1 -1
  157. package/dist/packages/web-components/src/components/card/gator/base/card.gator.scss.js +1 -1
  158. package/dist/packages/web-components/src/components/chip/gator/chip.gator.scss.js +1 -1
  159. package/dist/packages/web-components/src/components/date-picker/base/gator/datepicker.gator.scss.js +1 -1
  160. package/dist/packages/web-components/src/components/icon/gator/icon.gator.scss.js +1 -1
  161. package/dist/packages/web-components/src/components/icon-button/gator/icon-button.gator.scss.js +1 -1
  162. package/dist/packages/web-components/src/components/input/gator/dropdown/input-dropdown.gator.scss.js +1 -1
  163. package/dist/packages/web-components/src/components/input/gator/help-text/help-text.gator.scss.js +1 -1
  164. package/dist/packages/web-components/src/components/input/gator/input-date/input-date.gator.scss.js +1 -1
  165. package/dist/packages/web-components/src/components/input/gator/input-label/input-label.gator.scss.js +1 -1
  166. package/dist/packages/web-components/src/components/input/input.gator.scss.js +1 -1
  167. package/dist/packages/web-components/src/components/popover/gator/popover.gator.scss.js +1 -0
  168. package/dist/packages/web-components/src/components/popover/popover.scss.js +1 -0
  169. package/dist/packages/web-components/src/components/text-detail/gator/text-detail.gator.scss.js +1 -1
  170. package/dist/packages/web-components/src/components/toast/gator/base/toast.gator.scss.js +1 -1
  171. package/dist/packages/web-components/src/tokens/semantic.tokens.scss.js +1 -1
  172. package/dist/types/components/combobox/base/combobox.slds.d.ts +6 -0
  173. package/dist/types/components/date-picker/base/datepicker.d.ts +2 -16
  174. package/dist/types/components/date-picker/base/gator/datepicker.gator.d.ts +2 -16
  175. package/dist/types/components/icon/gator/icon.gator.d.ts +9 -2
  176. package/dist/types/components/icon/gator/templates/chart-bar-horizontal.d.ts +1 -0
  177. package/dist/types/components/icon/gator/templates/chart-bar.d.ts +1 -0
  178. package/dist/types/components/icon/gator/templates/chart-donut.d.ts +1 -0
  179. package/dist/types/components/icon/gator/templates/chart-line.d.ts +1 -0
  180. package/dist/types/components/icon/gator/templates/chart-pie.d.ts +1 -0
  181. package/dist/types/components/icon/gator/templates/chart-scatter.d.ts +1 -0
  182. package/dist/types/components/icon/gator/templates/checkerboard.d.ts +1 -0
  183. package/dist/types/components/icon/gator/templates/exclude-square.d.ts +1 -0
  184. package/dist/types/components/icon/gator/templates/grid-four.d.ts +1 -0
  185. package/dist/types/components/icon/gator/templates/grid-nine.d.ts +1 -0
  186. package/dist/types/components/icon/gator/templates/index.d.ts +20 -0
  187. package/dist/types/components/icon/gator/templates/kanban.d.ts +1 -0
  188. package/dist/types/components/icon/gator/templates/lightbulb-filament.d.ts +1 -0
  189. package/dist/types/components/icon/gator/templates/list-star.d.ts +1 -0
  190. package/dist/types/components/icon/gator/templates/selection.d.ts +1 -0
  191. package/dist/types/components/icon/gator/templates/square-split-horizontal.d.ts +1 -0
  192. package/dist/types/components/icon/gator/templates/square-split-vertical.d.ts +1 -0
  193. package/dist/types/components/icon/gator/templates/square.d.ts +1 -0
  194. package/dist/types/components/icon/gator/templates/table.d.ts +1 -0
  195. package/dist/types/components/icon/gator/templates/text-aa.d.ts +1 -0
  196. package/dist/types/components/icon/gator/templates/trend-up.d.ts +1 -0
  197. package/dist/types/components/icon-button/gator/icon-button.gator.d.ts +1 -1
  198. package/dist/types/components/input/base/input-base.d.ts +5 -0
  199. package/dist/types/components/input/base/input-base.gator.d.ts +6 -0
  200. package/dist/types/components/input/gator/dropdown/input-dropdown.gator.d.ts +7 -2
  201. package/dist/types/components/input/gator/input-date/input-date.gator.d.ts +50 -37
  202. package/dist/types/components/input/gator/input-label/input-label.gator.d.ts +4 -1
  203. package/dist/types/components/input/gator/input-text/input-text.gator.d.ts +1 -2
  204. package/dist/types/components/loading-spinner/gator/loading-spinner.gator.test.d.ts +0 -0
  205. package/dist/types/components/popover/gator/popover.gator.d.ts +31 -0
  206. package/dist/types/components/popover/gator/popover.gator.test.d.ts +0 -0
  207. package/dist/types/components/popover/index.d.ts +1 -0
  208. package/dist/types/components/popover/popover.d.ts +79 -0
  209. package/dist/types/index.d.ts +1 -0
  210. package/dist/types/index.gator.d.ts +1 -0
  211. package/dist/types/utils/accessibility-utils.d.ts +1 -0
  212. package/dist/types/utils/components/slot-placeholder/slot-placeholder.d.ts +1 -1
  213. package/dist/types/utils/storybook-args.d.ts +9 -0
  214. package/dist/types/utils/vitest-utils.d.ts +1 -0
  215. package/dist/utils/accessibility-utils.js +1 -1
  216. package/dist/utils/components/slot-placeholder/slot-placeholder.js +3 -4
  217. package/dist/utils/storybook-args.js +1 -1
  218. package/dist/utils/vitest-a11y-utils.js +1 -1
  219. package/dist/utils/vitest-utils.js +1 -1
  220. package/package.json +8 -6
  221. package/web-types.json +217 -127
  222. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-code-block@45.0.0/node_modules/@ckeditor/ckeditor5-code-block/dist/index.js +0 -7
  223. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-core@45.0.0/node_modules/@ckeditor/ckeditor5-core/dist/index.js +0 -4
  224. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-editor-classic@45.0.0/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js +0 -4
  225. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-image@45.0.0/node_modules/@ckeditor/ckeditor5-image/dist/index.js +0 -10
  226. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-table@45.0.0/node_modules/@ckeditor/ckeditor5-table/dist/index.js +0 -16
  227. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-typing@45.0.0/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +0 -13
  228. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-ui@45.0.0/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +0 -28
  229. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-widget@45.0.0/node_modules/@ckeditor/ckeditor5-widget/dist/index.js +0 -4
  230. package/dist/node_modules/.pnpm/call-bind@1.0.7/node_modules/call-bind/callBound.js +0 -1
  231. package/dist/node_modules/.pnpm/call-bind@1.0.7/node_modules/call-bind/index.js +0 -1
  232. package/dist/node_modules/.pnpm/for-each@0.3.3/node_modules/for-each/index.js +0 -1
  233. package/dist/node_modules/.pnpm/is-arguments@1.1.1/node_modules/is-arguments/index.js +0 -1
  234. package/dist/node_modules/.pnpm/is-generator-function@1.0.10/node_modules/is-generator-function/index.js +0 -1
  235. package/dist/node_modules/.pnpm/which-typed-array@1.1.15/node_modules/which-typed-array/index.js +0 -1
  236. package/dist/packages/web-components/src/components/input/gator/input-label/input-label.gator.tokens.scss.js +0 -1
  237. /package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-icons@45.0.0 → @ckeditor_ckeditor5-icons@45.1.0}/node_modules/@ckeditor/ckeditor5-icons/dist/index.js +0 -0
  238. /package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-watchdog@45.0.0 → @ckeditor_ckeditor5-watchdog@45.1.0}/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js +0 -0
  239. /package/dist/node_modules/.pnpm/{@storybook_core@8.6.12_prettier@3.5.3_storybook@8.6.12_prettier@3.5.3_ → @storybook_core@8.6.14_prettier@3.5.3_storybook@8.6.14_prettier@3.5.3_}/node_modules/@storybook/core/dist/channels/index.js +0 -0
  240. /package/dist/node_modules/.pnpm/{@storybook_core@8.6.12_prettier@3.5.3_storybook@8.6.12_prettier@3.5.3_ → @storybook_core@8.6.14_prettier@3.5.3_storybook@8.6.14_prettier@3.5.3_}/node_modules/@storybook/core/dist/client-logger/index.js +0 -0
  241. /package/dist/node_modules/.pnpm/{@storybook_core@8.6.12_prettier@3.5.3_storybook@8.6.12_prettier@3.5.3_ → @storybook_core@8.6.14_prettier@3.5.3_storybook@8.6.14_prettier@3.5.3_}/node_modules/@storybook/core/dist/core-events/index.js +0 -0
  242. /package/dist/node_modules/.pnpm/{@storybook_core@8.6.12_prettier@3.5.3_storybook@8.6.12_prettier@3.5.3_ → @storybook_core@8.6.14_prettier@3.5.3_storybook@8.6.14_prettier@3.5.3_}/node_modules/@storybook/core/dist/csf/index.js +0 -0
  243. /package/dist/node_modules/.pnpm/{@storybook_core@8.6.12_prettier@3.5.3_storybook@8.6.12_prettier@3.5.3_ → @storybook_core@8.6.14_prettier@3.5.3_storybook@8.6.14_prettier@3.5.3_}/node_modules/@storybook/core/dist/preview-api/index.js +0 -0
  244. /package/dist/node_modules/.pnpm/{@storybook_core@8.6.12_prettier@3.5.3_storybook@8.6.12_prettier@3.5.3_ → @storybook_core@8.6.14_prettier@3.5.3_storybook@8.6.14_prettier@3.5.3_}/node_modules/@storybook/core/dist/preview-errors.js +0 -0
  245. /package/dist/node_modules/.pnpm/{@vitest_browser@3.1.3_msw@2.7.3_@types_node@22.15.3_typescript@5.8.3__playwright@1.52.0_874804df4c9de8b0f916251804782fb9 → @vitest_browser@3.1.4_msw@2.7.3_@types_node@22.15.21_typescript@5.8.3__playwright@1.52._ce6a4a1e71cccb66c0847e643d956555}/node_modules/@vitest/browser/context.js +0 -0
  246. /package/dist/node_modules/.pnpm/{@vitest_pretty-format@3.1.3 → @vitest_pretty-format@3.1.4}/node_modules/@vitest/pretty-format/dist/index.js +0 -0
  247. /package/dist/node_modules/.pnpm/{@vitest_runner@3.1.3 → @vitest_runner@3.1.4}/node_modules/@vitest/runner/dist/chunk-tasks.js +0 -0
  248. /package/dist/node_modules/.pnpm/{@vitest_spy@3.1.3 → @vitest_spy@3.1.4}/node_modules/@vitest/spy/dist/index.js +0 -0
  249. /package/dist/node_modules/.pnpm/{@vitest_utils@3.1.3 → @vitest_utils@3.1.4}/node_modules/@vitest/utils/dist/error.js +0 -0
  250. /package/dist/node_modules/.pnpm/{@vitest_utils@3.1.3 → @vitest_utils@3.1.4}/node_modules/@vitest/utils/dist/helpers.js +0 -0
  251. /package/dist/node_modules/.pnpm/{@vitest_utils@3.1.3 → @vitest_utils@3.1.4}/node_modules/@vitest/utils/dist/index.js +0 -0
  252. /package/dist/node_modules/.pnpm/{@vitest_utils@3.1.3 → @vitest_utils@3.1.4}/node_modules/@vitest/utils/dist/source-map.js +0 -0
  253. /package/dist/node_modules/.pnpm/{vitest@3.1.3_@types_debug@4.1.12_@types_node@22.15.3_@vitest_browser@3.1.3_@vitest_ui@3_2e2b9607d5b1537fcaa69fd02e1b9b3d → vitest@3.1.4_@types_debug@4.1.12_@types_node@22.15.21_@vitest_browser@3.1.4_@vitest_ui@_b157c97eca1209d41387a466815fb09f}/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js +0 -0
  254. /package/dist/node_modules/.pnpm/{vitest@3.1.3_@types_debug@4.1.12_@types_node@22.15.3_@vitest_browser@3.1.3_@vitest_ui@3_2e2b9607d5b1537fcaa69fd02e1b9b3d → vitest@3.1.4_@types_debug@4.1.12_@types_node@22.15.21_@vitest_browser@3.1.4_@vitest_ui@_b157c97eca1209d41387a466815fb09f}/node_modules/vitest/dist/chunks/date.CDOsz-HY.js +0 -0
@@ -1,7 +0,0 @@
1
- var O=Object.defineProperty;var R=(i,t,e)=>t in i?O(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var h=(i,t,e)=>R(i,typeof t!="symbol"?t+"":t,e);import{Plugin as S,Command as x}from"../../../../../@ckeditor_ckeditor5-core@45.0.0/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{ShiftEnter as M}from"../../../../../@ckeditor_ckeditor5-enter@45.0.0/node_modules/@ckeditor/ckeditor5-enter/dist/index.js";import{UpcastWriter as N}from"../../../../../@ckeditor_ckeditor5-engine@45.0.0/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{ClipboardPipeline as q}from"../../../../../@ckeditor_ckeditor5-clipboard@45.0.0/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{Collection as F,first as v}from"../../../../../@ckeditor_ckeditor5-utils@45.0.0/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{createDropdown as $,addListToDropdown as z,MenuBarMenuView as W,MenuBarMenuListView as j,MenuBarMenuListItemView as U,MenuBarMenuListItemButtonView as H,ViewModel as J,SplitButtonView as K}from"../../../../../@ckeditor_ckeditor5-ui@45.0.0/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconCodeBlock as A}from"../../../../../@ckeditor_ckeditor5-icons@45.0.0/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";/**
2
- * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */function b(i){const t=i.t,e=i.config.get("codeBlock.languages");for(const o of e)o.label==="Plain text"&&(o.label=t("Plain text")),o.class===void 0&&(o.class=`language-${o.language}`);return e}function k(i,t,e){const o={};for(const r of i)if(t==="class"){const s=r[t].split(" ").shift();o[s]=r[e]}else o[r[t]]=r[e];return o}function L(i){return i.data.match(/^(\s*)/)[0]}function X(i,t){const e=i.createDocumentFragment(),o=t.split(`
5
- `),r=o.reduce((s,n,c)=>(s.push(n),c<o.length-1&&s.push(i.createElement("br")),s),[]);return i.appendChild(r,e),e}function C(i){const t=i.document.selection,e=[];if(t.isCollapsed)return[t.anchor];const o=t.getFirstRange().getWalker({ignoreElementEnd:!0,direction:"backward"});for(const{item:r}of o){let s=r.is("$textProxy")?r.textNode:r;const n=s.parent;if(!n.is("element","codeBlock")||s.is("element","softBreak"))continue;for(;s.previousSibling&&!s.previousSibling.is("element","softBreak");)s=s.previousSibling;const c=s.is("$text")?s.startOffset+L(s).length:s.startOffset,a=i.createPositionAt(n,c);e.every(l=>!l.isEqual(a))&&e.push(a)}return e}function D(i){const t=v(i.getSelectedBlocks());return!!t&&t.is("element","codeBlock")}function P(i,t){return t.is("rootElement")||i.isLimit(t)?!1:i.checkChild(t.parent,"codeBlock")}function E(i,t,e,o){const r=k(t,"language","label"),s=e.getAttribute("language");if(s in r){const n=r[s];return i(o==="enter"?"Entering %0 code snippet":"Leaving %0 code snippet",n)}return i(o==="enter"?"Entering code snippet":"Leaving code snippet")}function I(i,t){for(i.textNode&&(i=t.createPositionBefore(i.textNode));i.nodeBefore&&!i.nodeBefore.is("element","softBreak");)i=t.createPositionBefore(i.nodeBefore);const e=i.nodeAfter;return e&&e.is("$text")?e:null}class G extends x{constructor(e){super(e);h(this,"_lastLanguage");this._lastLanguage=null}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(e={}){const o=this.editor,r=o.model,s=r.document.selection,c=b(o)[0],a=Array.from(s.getSelectedBlocks()),l=e.forceValue==null?!this.value:e.forceValue,d=Q(e,this._lastLanguage,c.language);r.change(u=>{l?this._applyCodeBlock(u,a,d):this._removeCodeBlock(u,a)})}_getValue(){const e=this.editor.model.document.selection,o=v(e.getSelectedBlocks());return!!(o!=null&&o.is("element","codeBlock"))?o.getAttribute("language"):!1}_checkEnabled(){if(this.value)return!0;const e=this.editor.model.document.selection,o=this.editor.model.schema,r=v(e.getSelectedBlocks());return r?P(o,r):!1}_applyCodeBlock(e,o,r){this._lastLanguage=r;const s=this.editor.model.schema,n=o.filter(c=>P(s,c));for(const c of n)e.rename(c,"codeBlock"),e.setAttribute("language",r,c),s.removeDisallowedAttributes([c],e),Array.from(c.getChildren()).filter(a=>!s.checkChild(c,a)).forEach(a=>e.remove(a));n.reverse().forEach((c,a)=>{const l=n[a+1];c.previousSibling===l&&(e.appendElement("softBreak",l),e.merge(e.createPositionBefore(c)))})}_removeCodeBlock(e,o){const r=o.filter(s=>s.is("element","codeBlock"));for(const s of r){const n=e.createRangeOn(s);for(const c of Array.from(n.getItems()).reverse())if(c.is("element","softBreak")&&c.parent.is("element","codeBlock")){const{position:a}=e.split(e.createPositionBefore(c)),l=a.nodeAfter;e.rename(l,"paragraph"),e.removeAttribute("language",l),e.remove(c)}e.rename(s,"paragraph"),e.removeAttribute("language",s)}}}function Q(i,t,e){return i.language?i.language:i.usePreviousLanguageChoice&&t?t:e}class Y extends x{constructor(e){super(e);h(this,"_indentSequence");this._indentSequence=e.config.get("codeBlock.indentSequence")}refresh(){this.isEnabled=this._checkEnabled()}execute(){const o=this.editor.model;o.change(r=>{const s=C(o);for(const n of s){const c=r.createText(this._indentSequence);o.insertContent(c,n)}})}_checkEnabled(){return this._indentSequence?D(this.editor.model.document.selection):!1}}class Z extends x{constructor(e){super(e);h(this,"_indentSequence");this._indentSequence=e.config.get("codeBlock.indentSequence")}refresh(){this.isEnabled=this._checkEnabled()}execute(){const o=this.editor.model;o.change(()=>{const r=C(o);for(const s of r){const n=T(o,s,this._indentSequence);n&&o.deleteContent(o.createSelection(n))}})}_checkEnabled(){if(!this._indentSequence)return!1;const e=this.editor.model;return D(e.document.selection)?C(e).some(o=>T(e,o,this._indentSequence)):!1}}function T(i,t,e){const o=I(t,i);if(!o)return null;const r=L(o),s=r.lastIndexOf(e);if(s+e.length!==r.length||s===-1)return null;const{parent:n,startOffset:c}=o;return i.createRange(i.createPositionAt(n,c+s),i.createPositionAt(n,c+s+e.length))}function _(i,t,e=!1){const o=k(t,"language","class"),r=k(t,"language","label");return(s,n,c)=>{const{writer:a,mapper:l,consumable:d}=c;if(!d.consume(n.item,"insert"))return;const u=n.item.getAttribute("language"),g=l.toViewPosition(i.createPositionBefore(n.item)),m={};e&&(m["data-language"]=r[u],m.spellcheck="false");const p=o[u]?{class:o[u]}:void 0,w=a.createContainerElement("code",p),y=a.createContainerElement("pre",m,w);a.insert(g,y),l.bindElements(n.item,w)}}function ee(i){return(t,e,o)=>{if(e.item.parent.name!=="codeBlock")return;const{writer:r,mapper:s,consumable:n}=o;if(!n.consume(e.item,"insert"))return;const c=s.toViewPosition(i.createPositionBefore(e.item));r.insert(c,r.createText(`
6
- `))}}function te(i,t){const e=k(t,"class","language"),o=t[0].language;return(r,s,n)=>{const c=s.viewItem,a=c.parent;if(!a||!a.is("element","pre")||s.modelCursor.findAncestor("codeBlock"))return;const{consumable:l,writer:d}=n;if(!l.test(c,{name:!0}))return;const u=d.createElement("codeBlock"),g=[...c.getClassNames()];g.length||g.push("");for(const m of g){const p=e[m];if(p){d.setAttribute("language",p,u);break}}u.hasAttribute("language")||d.setAttribute("language",o,u),n.convertChildren(c,u),n.safeInsert(u,s.modelCursor)&&(l.consume(c,{name:!0}),n.updateConversionResult(u,s))}}function ne(){return(i,t,{consumable:e,writer:o})=>{let r=t.modelCursor;if(!e.test(t.viewItem)||!r.findAncestor("codeBlock"))return;e.consume(t.viewItem);const n=t.viewItem.data.split(`
7
- `).map(a=>o.createText(a)),c=n[n.length-1];for(const a of n)if(o.insert(a,r),r=r.getShiftedBy(a.offsetSize),a!==c){const l=o.createElement("softBreak");o.insert(l,r),r=o.createPositionAfter(l)}t.modelRange=o.createRange(t.modelCursor,r),t.modelCursor=r}}function oe(){return(i,t,{consumable:e})=>{const o=t.viewItem;if(o.findAncestor("pre"))return;const r=Array.from(o.getChildren()),s=r.find(n=>n.is("element","code"));if(s)for(const n of r)n===s||!n.is("$text")||e.consume(n,{name:!0})}}const V="paragraph";class ie extends S{static get pluginName(){return"CodeBlockEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[M]}constructor(t){super(t),t.config.define("codeBlock",{languages:[{language:"plaintext",label:"Plain text"},{language:"c",label:"C"},{language:"cs",label:"C#"},{language:"cpp",label:"C++"},{language:"css",label:"CSS"},{language:"diff",label:"Diff"},{language:"html",label:"HTML"},{language:"java",label:"Java"},{language:"javascript",label:"JavaScript"},{language:"php",label:"PHP"},{language:"python",label:"Python"},{language:"ruby",label:"Ruby"},{language:"typescript",label:"TypeScript"},{language:"xml",label:"XML"}],indentSequence:" "})}init(){const t=this.editor,e=t.model.schema,o=t.model,r=t.editing.view,s=b(t);t.commands.add("codeBlock",new G(t)),t.commands.add("indentCodeBlock",new Y(t)),t.commands.add("outdentCodeBlock",new Z(t)),this.listenTo(r.document,"tab",(n,c)=>{const a=c.shiftKey?"outdentCodeBlock":"indentCodeBlock";t.commands.get(a).isEnabled&&(t.execute(a),c.stopPropagation(),c.preventDefault(),n.stop())},{context:"pre"}),e.register("codeBlock",{allowWhere:"$block",allowChildren:"$text",disallowChildren:"$inlineObject",allowAttributes:["language"],allowAttributesOf:"$listItem",isBlock:!0}),e.addAttributeCheck((n,c)=>{const a=n.getItem(n.length-2);if(e.getAttributeProperties(c).isFormatting&&a&&a.name=="codeBlock")return!1}),t.editing.downcastDispatcher.on("insert:codeBlock",_(o,s,!0)),t.data.downcastDispatcher.on("insert:codeBlock",_(o,s)),t.data.downcastDispatcher.on("insert:softBreak",ee(o),{priority:"high"}),t.data.upcastDispatcher.on("element:code",te(r,s)),t.data.upcastDispatcher.on("text",ne()),t.data.upcastDispatcher.on("element:pre",oe(),{priority:"high"}),this.listenTo(t.editing.view.document,"clipboardInput",(n,c)=>{let a=o.createRange(o.document.selection.anchor);if(c.targetRanges&&(a=t.editing.mapper.toModelRange(c.targetRanges[0])),!a.start.parent.is("element","codeBlock"))return;const l=c.dataTransfer.getData("text/plain"),d=new N(t.editing.view.document);c.content=X(d,l)}),t.plugins.has("ClipboardPipeline")&&t.plugins.get(q).on("contentInsertion",(n,c)=>{const a=t.model,l=a.document.selection;l.anchor.parent.is("element","codeBlock")&&a.change(d=>{const u=d.createRangeIn(c.content);for(const g of[...u.getItems()])g.is("node")&&!e.checkChild(l.anchor,g)&&d.remove(g)})}),this.listenTo(o,"getSelectedContent",(n,[c])=>{const a=c.anchor;c.isCollapsed||!a.parent.is("element","codeBlock")||!a.hasSameParentAs(c.focus)||o.change(l=>{const d=n.return;if(a.parent.is("element")&&(d.childCount>1||c.containsEntireContent(a.parent))){const g=l.createElement("codeBlock",a.parent.getAttributes());l.append(d,g);const m=l.createDocumentFragment();l.append(g,m),n.return=m;return}const u=d.getChild(0);e.checkAttribute(u,"code")&&l.setAttribute("code",!0,u)})})}afterInit(){const t=this.editor,e=t.commands,o=e.get("indent"),r=e.get("outdent");o&&o.registerChildCommand(e.get("indentCodeBlock"),{priority:"highest"}),r&&r.registerChildCommand(e.get("outdentCodeBlock")),this.listenTo(t.editing.view.document,"enter",(s,n)=>{t.model.document.selection.getLastPosition().parent.is("element","codeBlock")&&(!ce(t,n.isSoft)&&!re(t,n.isSoft)&&se(t),n.preventDefault(),s.stop())},{context:"pre"}),this._initAriaAnnouncements()}_initAriaAnnouncements(){const{model:t,ui:e,t:o}=this.editor,r=b(this.editor);let s=null;t.document.selection.on("change:range",()=>{const n=t.document.selection.focus.parent;!e||s===n||!n.is("element")||(s&&s.is("element","codeBlock")&&e.ariaLiveAnnouncer.announce(E(o,r,s,"leave")),n.is("element","codeBlock")&&e.ariaLiveAnnouncer.announce(E(o,r,n,"enter")),s=n)})}}function se(i){const t=i.model,e=t.document,o=e.selection.getLastPosition();let r;const s=I(o,t);s&&s.is("$text")&&(r=L(s)),i.model.change(n=>{i.execute("shiftEnter"),r&&n.insertText(r,e.selection.anchor)})}function ce(i,t){const o=i.model.document,r=i.editing.view,s=o.selection.getLastPosition(),n=s.nodeAfter;return t||!o.selection.isCollapsed||!s.isAtStart||!f(n)?!1:(i.model.change(c=>{i.execute("enter");const a=o.selection.anchor.parent.previousSibling;c.rename(a,V),c.setSelection(a,"in"),i.model.schema.removeDisallowedAttributes([a],c),c.remove(n)}),r.scrollToTheSelection(),!0)}function re(i,t){const e=i.model,o=e.document,r=i.editing.view,s=o.selection.getLastPosition(),n=s.nodeBefore;let c;if(t||!o.selection.isCollapsed||!s.isAtEnd||!n||!n.previousSibling)return!1;if(f(n)&&f(n.previousSibling))c=e.createRange(e.createPositionBefore(n.previousSibling),e.createPositionAfter(n));else if(B(n)&&f(n.previousSibling)&&f(n.previousSibling.previousSibling))c=e.createRange(e.createPositionBefore(n.previousSibling.previousSibling),e.createPositionAfter(n));else if(B(n)&&f(n.previousSibling)&&B(n.previousSibling.previousSibling)&&n.previousSibling.previousSibling&&f(n.previousSibling.previousSibling.previousSibling))c=e.createRange(e.createPositionBefore(n.previousSibling.previousSibling.previousSibling),e.createPositionAfter(n));else return!1;return i.model.change(a=>{a.remove(c),i.execute("enter");const l=o.selection.anchor.parent;a.rename(l,V),i.model.schema.removeDisallowedAttributes([l],a)}),r.scrollToTheSelection(),!0}function B(i){return i&&i.is("$text")&&!i.data.match(/\S/)}function f(i){return i&&i.is("element","softBreak")}class ae extends S{static get pluginName(){return"CodeBlockUI"}static get isOfficialPlugin(){return!0}init(){const t=this.editor,e=t.t,o=t.ui.componentFactory,r=b(t),s=this._getLanguageListItemDefinitions(r),n=t.commands.get("codeBlock");o.add("codeBlock",c=>{const a=$(c,K),l=a.buttonView,d=e("Insert code block");return l.set({label:d,tooltip:!0,icon:A,isToggleable:!0}),l.bind("isOn").to(n,"value",u=>!!u),l.on("execute",()=>{t.execute("codeBlock",{usePreviousLanguageChoice:!0}),t.editing.view.focus()}),a.on("execute",u=>{t.execute("codeBlock",{language:u.source._codeBlockLanguage,forceValue:!0}),t.editing.view.focus()}),a.class="ck-code-block-dropdown",a.bind("isEnabled").to(n),z(a,s,{role:"menu",ariaLabel:d}),a}),o.add("menuBar:codeBlock",c=>{const a=new W(c);a.buttonView.set({role:"menuitem",label:e("Code block"),icon:A}),a.bind("isEnabled").to(n);const l=new j(c);l.set({ariaLabel:e("Insert code block")});for(const d of s){const u=new U(c,a),g=new H(c);g.bind(...Object.keys(d.model)).to(d.model),g.set({isToggleable:!0,role:"menuitemcheckbox"}),g.delegate("execute").to(a),g.on("execute",()=>{t.execute("codeBlock",{language:d.model._codeBlockLanguage,forceValue:n.value!=d.model._codeBlockLanguage}),t.editing.view.focus()}),u.children.add(g),l.items.add(u)}return a.panelView.children.add(l),a})}_getLanguageListItemDefinitions(t){const o=this.editor.commands.get("codeBlock"),r=new F;for(const s of t){const n={type:"button",model:new J({_codeBlockLanguage:s.language,label:s.label,role:"menuitemradio",withText:!0})};n.model.bind("isOn").to(o,"value",c=>c===n.model._codeBlockLanguage),r.add(n)}return r}}class be extends S{static get requires(){return[ie,ae]}static get pluginName(){return"CodeBlock"}static get isOfficialPlugin(){return!0}}export{be as CodeBlock,ie as CodeBlockEditing,ae as CodeBlockUI};
@@ -1,4 +0,0 @@
1
- var J=Object.defineProperty;var Q=(s,i,e)=>i in s?J(s,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[i]=e;var a=(s,i,e)=>Q(s,typeof i!="symbol"?i+"":i,e);import{ObservableMixin as C,Collection as $,CKEditorError as c,insertToPriorityArray as X,setDataInElement as U,Config as V,parseBase64EncodedObject as Z,toArray as ee,crc32 as te,releaseDate as ie,uid as M,logError as ne,Locale as se,EmitterMixin as oe,KeystrokeHandler as re,global as R,env as k}from"../../../../../@ckeditor_ckeditor5-utils@45.0.0/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{Model as ae,DataController as le,StylesProcessor as ce,EditingController as ue,Conversion as de}from"../../../../../@ckeditor_ckeditor5-engine@45.0.0/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{EditorWatchdog as he,ContextWatchdog as fe}from"../../../../../@ckeditor_ckeditor5-watchdog@45.0.0/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js";import{isFunction as G}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/predicate/isFunction.js";import{get as ge}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/object/get.js";import{set as me}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/object/set.js";/**
2
- * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */class qe extends C(){constructor(e){super();a(this,"editor");a(this,"_disableStack",new Set);this.editor=e,this.set("isEnabled",!0)}forceDisabled(e){this._disableStack.add(e),this._disableStack.size==1&&(this.on("set:isEnabled",z,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),this._disableStack.size==0&&(this.off("set:isEnabled",z),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}static get isOfficialPlugin(){return!1}static get isPremiumPlugin(){return!1}}function z(s){s.return=!1,s.stop()}class ye extends C(){constructor(e){super();a(this,"editor");a(this,"_isEnabledBasedOnSelection");a(this,"_affectsData");a(this,"_disableStack");this.editor=e,this.set("value",void 0),this.set("isEnabled",!1),this._affectsData=!0,this._isEnabledBasedOnSelection=!0,this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",()=>{this.refresh()}),this.listenTo(e,"change:isReadOnly",()=>{this.refresh()}),this.on("set:isEnabled",t=>{if(!this.affectsData)return;const o=e.model.document.selection,f=!(o.getFirstPosition().root.rootName=="$graveyard")&&e.model.canEditAt(o);(e.isReadOnly||this._isEnabledBasedOnSelection&&!f)&&(t.return=!1,t.stop())},{priority:"highest"}),this.on("execute",t=>{this.isEnabled||t.stop()},{priority:"high"})}get affectsData(){return this._affectsData}set affectsData(e){this._affectsData=e}refresh(){this.isEnabled=!0}forceDisabled(e){this._disableStack.add(e),this._disableStack.size==1&&(this.on("set:isEnabled",B,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),this._disableStack.size==0&&(this.off("set:isEnabled",B),this.refresh())}execute(...e){}destroy(){this.stopListening()}}function B(s){s.return=!1,s.stop()}class Me extends ye{constructor(){super(...arguments);a(this,"_childCommandsDefinitions",[])}refresh(){}execute(...e){const t=this._getFirstEnabledCommand();return!!t&&t.execute(e)}registerChildCommand(e,t={}){X(this._childCommandsDefinitions,{command:e,priority:t.priority||"normal"}),e.on("change:isEnabled",()=>this._checkEnabled()),this._checkEnabled()}_checkEnabled(){this.isEnabled=!!this._getFirstEnabledCommand()}_getFirstEnabledCommand(){const e=this._childCommandsDefinitions.find(({command:t})=>t.isEnabled);return e&&e.command}}class W extends oe(){constructor(e,t=[],o=[]){super();a(this,"_context");a(this,"_plugins",new Map);a(this,"_availablePlugins");a(this,"_contextPlugins");this._context=e,this._availablePlugins=new Map;for(const r of t)r.pluginName&&this._availablePlugins.set(r.pluginName,r);this._contextPlugins=new Map;for(const[r,f]of o)this._contextPlugins.set(r,f),this._contextPlugins.set(f,r),r.pluginName&&this._availablePlugins.set(r.pluginName,r)}*[Symbol.iterator](){for(const e of this._plugins)typeof e[0]=="function"&&(yield e)}get(e){const t=this._plugins.get(e);if(!t){let o=e;throw typeof e=="function"&&(o=e.pluginName||e.name),new c("plugincollection-plugin-not-loaded",this._context,{plugin:o})}return t}has(e){return this._plugins.has(e)}init(e,t=[],o=[]){const r=this,f=this._context;b(e),w(e);const p=e.filter(l=>!D(l,t)),S=[...x(p)];g(S,o);const E=N(S);return P(E,"init").then(()=>P(E,"afterInit")).then(()=>E);function _(l){return typeof l=="function"}function O(l){return _(l)&&!!l.isContextPlugin}function D(l,u){return u.some(n=>n===l||m(l)===n||m(n)===l)}function m(l){return _(l)?l.pluginName||l.name:l}function b(l,u=new Set){l.forEach(n=>{_(n)&&(u.has(n)||(u.add(n),n.pluginName&&!r._availablePlugins.has(n.pluginName)&&r._availablePlugins.set(n.pluginName,n),n.requires&&b(n.requires,u)))})}function x(l,u=new Set){return l.map(n=>_(n)?n:r._availablePlugins.get(n)).reduce((n,d)=>u.has(d)?n:(u.add(d),d.requires&&(w(d.requires,d),x(d.requires,u).forEach(y=>n.add(y))),n.add(d)),new Set)}function w(l,u=null){l.map(n=>_(n)?n:r._availablePlugins.get(n)||n).forEach(n=>{T(n,u),I(n,u),A(n,u)})}function T(l,u){if(!_(l))throw u?new c("plugincollection-soft-required",f,{missingPlugin:l,requiredBy:m(u)}):new c("plugincollection-plugin-not-found",f,{plugin:l})}function I(l,u){if(O(u)&&!O(l))throw new c("plugincollection-context-required",f,{plugin:m(l),requiredBy:m(u)})}function A(l,u){if(u&&D(l,t))throw new c("plugincollection-required",f,{plugin:m(l),requiredBy:m(u)})}function N(l){return l.map(u=>{let n=r._contextPlugins.get(u);return n=n||new u(f),r._add(u,n),n})}function P(l,u){return l.reduce((n,d)=>!d[u]||r._contextPlugins.has(d)?n:n.then(d[u].bind(d)),Promise.resolve())}function g(l,u){for(const n of u){if(typeof n!="function")throw new c("plugincollection-replace-plugin-invalid-type",null,{pluginItem:n});const d=n.pluginName;if(!d)throw new c("plugincollection-replace-plugin-missing-name",null,{pluginItem:n});if(n.requires&&n.requires.length)throw new c("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:d});const y=r._availablePlugins.get(d);if(!y)throw new c("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:d});const h=l.indexOf(y);if(h===-1){if(r._contextPlugins.has(y))return;throw new c("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:d})}if(y.requires&&y.requires.length)throw new c("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:d});l.splice(h,1,n),r._availablePlugins.set(d,n)}}}destroy(){const e=[];for(const[,t]of this)typeof t.destroy=="function"&&!this._contextPlugins.has(t)&&e.push(t.destroy());return Promise.all(e)}_add(e,t){this._plugins.set(e,t);const o=e.pluginName;if(o){if(this._plugins.has(o))throw new c("plugincollection-plugin-name-conflict",null,{pluginName:o,plugin1:this._plugins.get(o).constructor,plugin2:e});this._plugins.set(o,t)}}}class L{constructor(i){a(this,"config");a(this,"plugins");a(this,"locale");a(this,"t");a(this,"editors");a(this,"_contextOwner",null);const{translations:e,...t}=i||{};this.config=new V(t,this.constructor.defaultConfig);const o=this.constructor.builtinPlugins;this.config.define("plugins",o),this.plugins=new W(this,o);const r=this.config.get("language")||{};this.locale=new se({uiLanguage:typeof r=="string"?r:r.ui,contentLanguage:this.config.get("language.content"),translations:e}),this.t=this.locale.t,this.editors=new $}initPlugins(){const i=this.config.get("plugins")||[],e=this.config.get("substitutePlugins")||[];for(const t of i.concat(e)){if(typeof t!="function")throw new c("context-initplugins-constructor-only",null,{Plugin:t});if(t.isContextPlugin!==!0)throw new c("context-initplugins-invalid-plugin",null,{Plugin:t})}return this.plugins.init(i,[],e)}destroy(){return Promise.all(Array.from(this.editors,i=>i.destroy())).then(()=>this.plugins.destroy())}_addEditor(i,e){if(this._contextOwner)throw new c("context-addeditor-private-context");this.editors.add(i),e&&(this._contextOwner=i)}_removeEditor(i){return this.editors.has(i)&&this.editors.remove(i),this._contextOwner===i?this.destroy():Promise.resolve()}_getEditorConfig(){const i={};for(const e of this.config.names())["plugins","removePlugins","extraPlugins"].includes(e)||(i[e]=this.config.get(e));return i}static create(i){return new Promise(e=>{const t=new this(i);e(t.initPlugins().then(()=>t))})}}a(L,"defaultConfig"),a(L,"builtinPlugins");class pe extends C(){constructor(e){super();a(this,"context");this.context=e}destroy(){this.stopListening()}static get isContextPlugin(){return!0}static get isOfficialPlugin(){return!1}static get isPremiumPlugin(){return!1}}class we{constructor(){a(this,"_commands");this._commands=new Map}add(i,e){this._commands.set(i,e)}get(i){return this._commands.get(i)}execute(i,...e){const t=this.get(i);if(!t)throw new c("commandcollection-command-not-found",this,{commandName:i});return t.execute(...e)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const i of this.commands())i.destroy()}}class be extends re{constructor(e){super();a(this,"editor");this.editor=e}set(e,t,o={}){if(typeof t=="string"){const r=t;t=(f,p)=>{this.editor.execute(r),p()}}super.set(e,t,o)}}const K="contentEditing",j="common";class _e{constructor(i){a(this,"keystrokeInfos",new Map);a(this,"_editor");this._editor=i;const e=i.config.get("menuBar.isVisible"),t=i.locale.t;this.addKeystrokeInfoCategory({id:K,label:t("Content editing keystrokes"),description:t("These keyboard shortcuts allow for quick access to content editing features.")});const o=[{label:t("Close contextual balloons, dropdowns, and dialogs"),keystroke:"Esc"},{label:t("Open the accessibility help dialog"),keystroke:"Alt+0"},{label:t("Move focus between form fields (inputs, buttons, etc.)"),keystroke:[["Tab"],["Shift+Tab"]]},{label:t("Move focus to the toolbar, navigate between toolbars"),keystroke:"Alt+F10",mayRequireFn:!0},{label:t("Navigate through the toolbar or menu bar"),keystroke:[["arrowup"],["arrowright"],["arrowdown"],["arrowleft"]]},{label:t("Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content."),keystroke:[["Enter"],["Space"]]}];e&&o.push({label:t("Move focus to the menu bar, navigate between menu bars"),keystroke:"Alt+F9",mayRequireFn:!0}),this.addKeystrokeInfoCategory({id:"navigation",label:t("User interface and content navigation keystrokes"),description:t("Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface."),groups:[{id:"common",keystrokes:o}]})}addKeystrokeInfoCategory({id:i,label:e,description:t,groups:o}){this.keystrokeInfos.set(i,{id:i,label:e,description:t,groups:new Map}),this.addKeystrokeInfoGroup({categoryId:i,id:j}),o&&o.forEach(r=>{this.addKeystrokeInfoGroup({categoryId:i,...r})})}addKeystrokeInfoGroup({categoryId:i=K,id:e,label:t,keystrokes:o}){const r=this.keystrokeInfos.get(i);if(!r)throw new c("accessibility-unknown-keystroke-info-category",this._editor,{groupId:e,categoryId:i});r.groups.set(e,{id:e,label:t,keystrokes:o||[]})}addKeystrokeInfos({categoryId:i=K,groupId:e=j,keystrokes:t}){if(!this.keystrokeInfos.has(i))throw new c("accessibility-unknown-keystroke-info-category",this._editor,{categoryId:i,keystrokes:t});const o=this.keystrokeInfos.get(i);if(!o.groups.has(e))throw new c("accessibility-unknown-keystroke-info-group",this._editor,{groupId:e,categoryId:i,keystrokes:t});o.groups.get(e).keystrokes.push(...t)}}function ke(s){return{sessionId:Ce(),pageSessionId:Se(),hostname:window.location.hostname,version:globalThis.CKEDITOR_VERSION,type:Ee(s),plugins:xe(s.plugins),distribution:Pe(),env:ve(),integration:Object.create(null),menuBar:{isVisible:!!s.config.get("menuBar.isVisible")},language:{ui:s.locale.uiLanguage,content:s.locale.contentLanguage},toolbar:{main:q(s.config.get("toolbar")),block:q(s.config.get("blockToolbar")),balloon:q(s.config.get("balloonToolbar"))}}}function Ee(s){return Object.getPrototypeOf(s).constructor.editorName}function xe(s){return Array.from(s).filter(([i])=>!!i.pluginName).map(([i])=>{const{pluginName:e,isContextPlugin:t,isOfficialPlugin:o,isPremiumPlugin:r}=i;return{isContext:!!t,isOfficial:!!o,isPremium:!!r,name:e}})}function q(s){if(!s)return;const i=Array.isArray(s)?{items:s}:s,e=r(i.items||[]);return{isMultiline:e.includes("-"),shouldNotGroupWhenFull:!!i.shouldNotGroupWhenFull,items:o(e)};function o(f){return f.filter(p=>p!=="|"&&p!=="-")}function r(f){return f.flatMap(p=>typeof p=="string"?[p]:r(p.items))}}function Pe(){return{channel:window[Symbol.for("cke distribution")]||"sh"}}function ve(){let s="unknown",i="unknown";return k.isMac?s="mac":k.isWindows?s="windows":k.isiOS?s="ios":k.isAndroid&&(s="android"),k.isGecko?i="gecko":k.isBlink?i="blink":k.isSafari&&(i="safari"),{os:s,browser:i}}function Ce(){return localStorage.getItem("__ckeditor-session-id")||localStorage.setItem("__ckeditor-session-id",M()),localStorage.getItem("__ckeditor-session-id")}function Se(){return R.window.CKEDITOR_PAGE_SESSION_ID=R.window.CKEDITOR_PAGE_SESSION_ID||M(),R.window.CKEDITOR_PAGE_SESSION_ID}class v extends C(){constructor(e={}){super();a(this,"accessibility");a(this,"commands");a(this,"config");a(this,"conversion");a(this,"data");a(this,"editing");a(this,"locale");a(this,"model");a(this,"plugins");a(this,"keystrokes");a(this,"t");a(this,"_context");a(this,"_readOnlyLocks");if("sanitizeHtml"in e)throw new c("editor-config-sanitizehtml-not-supported");const t=this.constructor,{translations:o,...r}=t.defaultConfig||{},{translations:f=o,...p}=e,S=e.language||r.language;this._context=e.context||new L({language:S,translations:f}),this._context._addEditor(this,!e.context);const E=Array.from(t.builtinPlugins||[]);this.config=new V(p,r),this.config.define("plugins",E),this.config.define(this._context._getEditorConfig()),O(this.config),this.plugins=new W(this,E,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this._readOnlyLocks=new Set,this.commands=new we,this.set("state","initializing"),this.once("ready",()=>this.state="ready",{priority:"high"}),this.once("destroy",()=>this.state="destroyed",{priority:"high"}),this.model=new ae,this.on("change:isReadOnly",()=>{this.model.document.isReadOnly=this.isReadOnly});const _=new ce;this.data=new le(this.model,_),this.editing=new ue(this.model,_),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new de([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias("dataDowncast",this.data.downcastDispatcher),this.conversion.addAlias("editingDowncast",this.editing.downcastDispatcher),this.keystrokes=new be(this),this.keystrokes.listenTo(this.editing.view.document),this.accessibility=new _e(this),D(this);function O(m){let b=m.get("licenseKey");if(!b&&window.CKEDITOR_GLOBAL_LICENSE_KEY&&(b=window.CKEDITOR_GLOBAL_LICENSE_KEY,m.set("licenseKey",b)),!b)throw new c("license-key-missing")}function D(m){const b=m.config.get("licenseKey"),x=window[Symbol.for("cke distribution")]||"sh";function w(n){m.enableReadOnlyMode(Symbol("invalidLicense")),m._showLicenseError(n)}function T(n){const d=n.split(".");return d.length!=3?null:d[1]}function I(n){return["exp","jti","vc"].every(y=>y in n)}function A(n){return Object.getOwnPropertyNames(n).sort().filter(h=>h!="vc"&&n[h]!=null).map(h=>n[h])}function N(n){const{hostname:d}=new URL(window.location.href);if(n.includes(d))return!0;const y=d.split(".");return n.filter(h=>h.includes("*")).map(h=>h.split(".")).filter(h=>h.length<=y.length).map(h=>Array(y.length-h.length).fill(h[0]==="*"?"*":"").concat(h)).some(h=>y.every((Y,F)=>h[F]===Y||h[F]==="*"))}if(b=="GPL"){x=="cloud"&&w("distributionChannel");return}const P=T(b);if(!P){w("invalid");return}const g=Z(P);if(!g){w("invalid");return}if(!I(g)){w("invalid");return}if(g.distributionChannel&&!ee(g.distributionChannel).includes(x)){w("distributionChannel");return}if(te(A(g))!=g.vc.toLowerCase()){w("invalid");return}if(new Date(g.exp*1e3)<ie){w("expired");return}const u=g.licensedHosts;if(u&&u.length>0&&!N(u)){w("domainLimit");return}if(["evaluation","trial"].includes(g.licenseType)&&g.exp*1e3<Date.now()){w("expired");return}if(["development","evaluation","trial"].includes(g.licenseType)){const{licenseType:n}=g,d=n[0].toUpperCase()+n.slice(1),y=n==="evaluation"?"an":"a";console.info(`%cCKEditor 5 ${d} License`,"color: #ffffff; background: #743CCD; font-size: 14px; padding: 4px 8px; border-radius: 4px;"),console.warn(`⚠️ You are using ${y} ${n} license of CKEditor 5${n==="trial"?" which is for evaluation purposes only":""}. For production usage, please obtain a production license at https://portal.ckeditor.com/`)}if(["evaluation","trial"].includes(g.licenseType)){const n=g.licenseType,d=setTimeout(()=>{w(`${n}Limit`)},6e5);m.on("destroy",()=>{clearTimeout(d)})}g.usageEndpoint&&m.once("ready",()=>{const n={requestId:M(),requestTime:Math.round(Date.now()/1e3),license:b,editor:Oe(m)};m._sendUsageRequest(g.usageEndpoint,n).then(d=>{const{status:y,message:h}=d;h&&console.warn(h),y!="ok"&&w("usageLimit")},()=>{ne("license-key-validation-endpoint-not-reachable",{url:g.usageEndpoint})})},{priority:"high"})}}static get editorName(){return"Editor"}get isReadOnly(){return this._readOnlyLocks.size>0}set isReadOnly(e){throw new c("editor-isreadonly-has-no-setter")}enableReadOnlyMode(e){if(typeof e!="string"&&typeof e!="symbol")throw new c("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)||(this._readOnlyLocks.add(e),this._readOnlyLocks.size===1&&this.fire("change:isReadOnly","isReadOnly",!0,!1))}disableReadOnlyMode(e){if(typeof e!="string"&&typeof e!="symbol")throw new c("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)&&(this._readOnlyLocks.delete(e),this._readOnlyLocks.size===0&&this.fire("change:isReadOnly","isReadOnly",!1,!0))}setData(e){this.data.set(e)}getData(e){return this.data.get(e)}initPlugins(){const e=this.config,t=e.get("plugins"),o=e.get("removePlugins")||[],r=e.get("extraPlugins")||[],f=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(r),o,f)}destroy(){let e=Promise.resolve();return this.state=="initializing"&&(e=new Promise(t=>this.once("ready",t))),e.then(()=>{this.fire("destroy"),this.stopListening(),this.commands.destroy()}).then(()=>this.plugins.destroy()).then(()=>{this.model.destroy(),this.data.destroy(),this.editing.destroy(),this.keystrokes.destroy()}).then(()=>this._context._removeEditor(this))}execute(e,...t){try{return this.commands.execute(e,...t)}catch(o){/* istanbul ignore next -- @preserve */c.rethrowUnexpectedError(o,this)}}focus(){this.editing.view.focus()}static create(...e){throw new Error("This is an abstract method.")}_showLicenseError(e,t){setTimeout(()=>{if(e=="invalid")throw new c("invalid-license-key");if(e=="expired")throw new c("license-key-expired");if(e=="domainLimit")throw new c("license-key-domain-limit");if(e=="featureNotAllowed")throw new c("license-key-plugin-not-allowed",null,{pluginName:t});if(e=="evaluationLimit")throw new c("license-key-evaluation-limit");if(e=="trialLimit")throw new c("license-key-trial-limit");if(e=="developmentLimit")throw new c("license-key-development-limit");if(e=="usageLimit")throw new c("license-key-usage-limit");if(e=="distributionChannel")throw new c("license-key-invalid-distribution-channel")},0),this._showLicenseError=()=>{}}async _sendUsageRequest(e,t){const o=new Headers({"Content-Type":"application/json"}),r=await fetch(new URL(e),{method:"POST",headers:o,body:JSON.stringify(t)});if(!r.ok)throw new Error(`HTTP Response: ${r.status}`);return r.json()}}a(v,"defaultConfig"),a(v,"builtinPlugins"),a(v,"Context",L),a(v,"EditorWatchdog",he),a(v,"ContextWatchdog",fe);function Oe(s){const i=ke(s);function e(t,o){if(ge(i,t)!==void 0)throw new c("editor-usage-data-path-already-set",{path:t});me(i,t,o)}return s.fire("collectUsageData",{setUsageData:e}),i}function Fe(s){if(!G(s.updateSourceElement))throw new c("attachtoform-missing-elementapi-interface",s);const i=s.sourceElement;if(De(i)&&i.form){let e;const t=i.form,o=()=>s.updateSourceElement();G(t.submit)&&(e=t.submit,t.submit=()=>{o(),e.apply(t)}),t.addEventListener("submit",o),s.on("destroy",()=>{t.removeEventListener("submit",o),e&&(t.submit=e)})}}function De(s){return!!s&&s.tagName.toLowerCase()==="textarea"}function H(s){class i extends s{constructor(){super(...arguments);a(this,"sourceElement")}updateSourceElement(o){if(!this.sourceElement)throw new c("editor-missing-sourceelement",this);const r=this.config.get("updateSourceElementOnDestroy"),f=this.sourceElement instanceof HTMLTextAreaElement;if(!r&&!f){U(this.sourceElement,"");return}const p=typeof o=="string"?o:this.data.get();U(this.sourceElement,p)}}return i}H.updateSourceElement=H(Object).prototype.updateSourceElement;class Ue extends pe{constructor(){super(...arguments);a(this,"_actions")}static get pluginName(){return"PendingActions"}static get isOfficialPlugin(){return!0}init(){this.set("hasAny",!1),this._actions=new $({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if(typeof e!="string")throw new c("pendingactions-add-invalid-message",this);const t=new(C());return t.set("message",e),this._actions.add(t),this.hasAny=!0,t}remove(e){this._actions.remove(e),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}export{ye as Command,L as Context,pe as ContextPlugin,v as Editor,H as ElementApiMixin,Me as MultiCommand,Ue as PendingActions,qe as Plugin,Fe as attachToForm};
@@ -1,4 +0,0 @@
1
- var m=Object.defineProperty;var p=(s,r,t)=>r in s?m(s,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[r]=t;var a=(s,r,t)=>p(s,typeof r!="symbol"?r+"":r,t);import{BoxedEditorUIView as b,StickyPanelView as y,ToolbarView as v,MenuBarView as P,InlineEditableUIView as k,EditorUI as T,normalizeToolbarConfig as V,DialogView as f}from"../../../../../@ckeditor_ckeditor5-ui@45.0.0/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{enablePlaceholder as C}from"../../../../../@ckeditor_ckeditor5-engine@45.0.0/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{CKEditorError as B,getDataFromElement as E,ElementReplacer as S,Rect as h}from"../../../../../@ckeditor_ckeditor5-utils@45.0.0/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{ElementApiMixin as _,attachToForm as R,Editor as x}from"../../../../../@ckeditor_ckeditor5-core@45.0.0/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{isElement as F}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/predicate/isElement.js";/**
2
- * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */class I extends T{constructor(t,i){super(t);a(this,"view");a(this,"_toolbarConfig");a(this,"_elementReplacer");this.view=i,this._toolbarConfig=V(t.config.get("toolbar")),this._elementReplacer=new S,this.listenTo(t.editing.view,"scrollToTheSelection",this._handleScrollToTheSelectionWithStickyPanel.bind(this))}get element(){return this.view.element}init(t){const i=this.editor,o=this.view,n=i.editing.view,e=o.editable,l=n.document.getRoot();e.name=l.rootName,o.render();const c=e.element;this.setEditableElement(e.name,c),o.editable.bind("isFocused").to(this.focusTracker),n.attachDomRoot(c),t&&this._elementReplacer.replace(t,this.element),this._initPlaceholder(),this._initToolbar(),o.menuBarView&&this.initMenuBar(o.menuBarView),this._initDialogPluginIntegration(),this._initContextualBalloonIntegration(),this.fire("ready")}destroy(){super.destroy();const t=this.view,i=this.editor.editing.view;this._elementReplacer.restore(),i.getDomRoot(t.editable.name)&&i.detachDomRoot(t.editable.name),t.destroy()}_initToolbar(){const t=this.view;t.stickyPanel.bind("isActive").to(this.focusTracker,"isFocused"),t.stickyPanel.limiterElement=t.element,t.stickyPanel.bind("viewportTopOffset").to(this,"viewportOffset",({top:i})=>i||0),t.toolbar.fillFromConfig(this._toolbarConfig,this.componentFactory),this.addToolbar(t.toolbar)}_initPlaceholder(){const t=this.editor,i=t.editing.view,o=i.document.getRoot(),n=t.sourceElement;let e;const l=t.config.get("placeholder");l&&(e=typeof l=="string"?l:l[this.view.editable.name]),!e&&n&&n.tagName.toLowerCase()==="textarea"&&(e=n.getAttribute("placeholder")),e&&(o.placeholder=e),C({view:i,element:o,isDirectHost:!1,keepOnFocus:!0})}_initContextualBalloonIntegration(){if(!this.editor.plugins.has("ContextualBalloon"))return;const{stickyPanel:t}=this.view,i=this.editor.plugins.get("ContextualBalloon");i.on("getPositionOptions",n=>{const e=n.return;if(!e||!t.isSticky||!t.element)return;const l=new h(t.element).height,c=typeof e.target=="function"?e.target():e.target,u=typeof e.limiter=="function"?e.limiter():e.limiter;if(c&&u&&new h(c).height>=new h(u).height-l)return;const g={...e.viewportOffsetConfig},w=(g.top||0)+l;n.return={...e,viewportOffsetConfig:{...g,top:w}}},{priority:"low"});const o=()=>{i.visibleView&&i.updatePosition()};this.listenTo(t,"change:isSticky",o),this.listenTo(this.editor.ui,"change:viewportOffset",o)}_handleScrollToTheSelectionWithStickyPanel(t,i,o){const n=this.view.stickyPanel;if(n.isSticky){const e=new h(n.element).height;i.viewportOffset.top+=e}else{const e=()=>{this.editor.editing.view.scrollToTheSelection(o)};this.listenTo(n,"change:isSticky",e),setTimeout(()=>{this.stopListening(n,"change:isSticky",e)},20)}}_initDialogPluginIntegration(){if(!this.editor.plugins.has("Dialog"))return;const t=this.view.stickyPanel,i=this.editor.plugins.get("Dialog");i.on("show",()=>{const o=i.view;o.on("moveTo",(n,e)=>{if(!t.isSticky||o.wasMoved||o.isModal)return;const l=new h(t.contentPanelElement);e[1]<l.bottom+f.defaultOffset&&(e[1]=l.bottom+f.defaultOffset)},{priority:"high"})},{priority:"low"})}}class D extends b{constructor(t,i,o={}){super(t);a(this,"stickyPanel");a(this,"toolbar");a(this,"editable");this.stickyPanel=new y(t),this.toolbar=new v(t,{shouldGroupWhenFull:o.shouldToolbarGroupWhenFull}),o.useMenuBar&&(this.menuBarView=new P(t)),this.editable=new k(t,i,void 0,{label:o.label})}render(){super.render(),this.menuBarView?this.stickyPanel.content.addMany([this.menuBarView,this.toolbar]):this.stickyPanel.content.add(this.toolbar),this.top.add(this.stickyPanel),this.main.add(this.editable)}}class H extends _(x){constructor(t,i={}){if(!d(t)&&i.initialData!==void 0)throw new B("editor-create-initial-data",null);super(i);a(this,"ui");this.config.define("menuBar.isVisible",!1),this.config.get("initialData")===void 0&&this.config.set("initialData",M(t)),d(t)&&(this.sourceElement=t),this.model.document.createRoot();const o=!this.config.get("toolbar.shouldNotGroupWhenFull"),n=this.config.get("menuBar"),e=new D(this.locale,this.editing.view,{shouldToolbarGroupWhenFull:o,useMenuBar:n.isVisible,label:this.config.get("label")});this.ui=new I(this,e),R(this)}static get editorName(){return"ClassicEditor"}destroy(){return this.sourceElement&&this.updateSourceElement(),this.ui.destroy(),super.destroy()}static create(t,i={}){return new Promise(o=>{const n=new this(t,i);o(n.initPlugins().then(()=>n.ui.init(d(t)?t:null)).then(()=>n.data.init(n.config.get("initialData"))).then(()=>n.fire("ready")).then(()=>n))})}}function M(s){return d(s)?E(s):s}function d(s){return F(s)}export{H as ClassicEditor,D as ClassicEditorUIView};
@@ -1,10 +0,0 @@
1
- var et=Object.defineProperty;var tt=(a,i,e)=>i in a?et(a,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[i]=e;var f=(a,i,e)=>tt(a,typeof i!="symbol"?i+"":i,e);import{Plugin as p,Command as y}from"../../../../../@ckeditor_ckeditor5-core@45.0.0/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Clipboard as it,ClipboardPipeline as H}from"../../../../../@ckeditor_ckeditor5-clipboard@45.0.0/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{LivePosition as F,LiveRange as nt,UpcastWriter as G,enablePlaceholder as st,Element as ot,Observer as at}from"../../../../../@ckeditor_ckeditor5-engine@45.0.0/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{Undo as rt}from"../../../../../@ckeditor_ckeditor5-undo@45.0.0/node_modules/@ckeditor/ckeditor5-undo/dist/index.js";import{Delete as lt}from"../../../../../@ckeditor_ckeditor5-typing@45.0.0/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{global as A,DomEmitterMixin as ct,logWarning as v,CKEditorError as mt,Collection as ut,env as gt,first as K,FocusTracker as J,KeystrokeHandler as O,Rect as dt,toArray as fe}from"../../../../../@ckeditor_ckeditor5-utils@45.0.0/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{Widget as pe,WidgetToolbarRepository as ne,toWidget as ht,isWidget as ft,toWidgetEditable as pt,WidgetResize as L,calculateResizeHostAncestorWidth as Ie,findOptimalInsertionRange as It}from"../../../../../@ckeditor_ckeditor5-widget@45.0.0/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{SplitButtonView as be,createDropdown as Z,MenuBarMenuView as bt,MenuBarMenuListView as wt,MenuBarMenuListItemView as _t,ButtonView as _,Dialog as vt,MenuBarMenuListItemButtonView as yt,ContextualBalloon as we,CssTransitionDisablerMixin as _e,clickOutsideHandler as ve,ViewModel as se,addToolbarToDropdown as Ct,Notification as oe,FileDialogButtonView as ae,MenuBarMenuListItemFileDialogButtonView as Et,View as P,ViewCollection as X,FocusCycler as Y,CollapsibleView as kt,submitHandler as N,LabeledFieldView as Q,createLabeledInputText as ye,BalloonPanelView as St,DropdownButtonView as Ut,addListToDropdown as Bt,FormRowView as Ce,FormHeaderView as Ee,createLabeledInputNumber as Vt}from"../../../../../@ckeditor_ckeditor5-ui@45.0.0/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconImage as Tt,IconCaption as At,IconImageUrl as xt,IconObjectSizeFull as zt,IconObjectSizeCustom as Rt,IconObjectSizeLarge as Ot,IconObjectSizeMedium as Pt,IconObjectSizeSmall as Nt,IconObjectInline as ke,IconObjectInlineRight as W,IconObjectInlineLeft as Se,IconObjectCenter as j,IconObjectRight as Ue,IconObjectLeft as Be,IconObjectFullWidth as Ft,IconTextAlternative as Lt,IconImageUpload as Dt,IconPreviousArrow as Ve}from"../../../../../@ckeditor_ckeditor5-icons@45.0.0/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{FileRepository as E}from"../../../../../@ckeditor_ckeditor5-upload@45.0.0/node_modules/@ckeditor/ckeditor5-upload/dist/index.js";import{isObject as Te}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/compat/predicate/isObject.js";import{identity as S}from"../../../../../es-toolkit@1.32.0/node_modules/es-toolkit/dist/function/identity.js";/**
2
- * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
3
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
4
- */function Mt(a){return a.createContainerElement("span",{class:"image-inline"},a.createEmptyElement("img"))}function re(a){return a.createContainerElement("figure",{class:"image"},[a.createEmptyElement("img"),a.createSlot("children")])}function Ae(a,i){const e=a.plugins.get("ImageUtils"),t=a.plugins.has("ImageInlineEditing")&&a.plugins.has("ImageBlockEditing");return s=>e.isInlineImageView(s)?t&&(s.getStyle("display")=="block"||s.findAncestor(e.isBlockImageView)?"imageBlock":"imageInline")!==i?null:n(s):null;function n(s){const o={name:!0};return s.hasAttribute("src")&&(o.attributes=["src"]),o}}function ee(a,i){const e=K(i.getSelectedBlocks());return!e||a.isObject(e)||e.isEmpty&&e.name!="listItem"?"imageBlock":"imageInline"}function x(a){return a&&a.endsWith("px")?parseInt(a):null}function z(a){const i=x(a.getStyle("width")),e=x(a.getStyle("height"));return!!(i&&e)}const Wt=/^(image|image-inline)$/;class w extends p{constructor(){super(...arguments);f(this,"_domEmitter",new(ct()))}static get pluginName(){return"ImageUtils"}static get isOfficialPlugin(){return!0}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,n=null,s={}){const o=this.editor,r=o.model,l=r.document.selection,c=xe(o,t||l,n);e={...Object.fromEntries(l.getAttributes()),...e};for(const m in e)r.schema.checkAttribute(c,m)||delete e[m];return r.change(m=>{const{setImageSizes:g=!0}=s,u=m.createElement(c,e);return r.insertObject(u,t,null,{setSelection:"on",findOptimalPosition:!t&&c!="imageInline"?"auto":void 0}),u.parent?(g&&this.setImageNaturalSizeAttributes(u),u):null})}setImageNaturalSizeAttributes(e){const t=e.getAttribute("src");t&&(e.getAttribute("width")||e.getAttribute("height")||this.editor.model.change(n=>{const s=new A.window.Image;this._domEmitter.listenTo(s,"load",()=>{!e.getAttribute("width")&&!e.getAttribute("height")&&this.editor.model.enqueueChange(n.batch,o=>{o.setAttribute("width",s.naturalWidth,e),o.setAttribute("height",s.naturalHeight,e)}),this._domEmitter.stopListening(s,"load")}),s.src=t}))}getClosestSelectedImageWidget(e){const t=e.getFirstPosition();if(!t)return null;const n=e.getSelectedElement();if(n&&this.isImageWidget(n))return n;let s=t.parent;for(;s;){if(s.is("element")&&this.isImageWidget(s))return s;s=s.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}getImageWidgetFromImageView(e){return e.findAncestor({classes:Wt})}isImageAllowed(){const t=this.editor.model.document.selection;return jt(this.editor,t)&&qt(t)}toImageWidget(e,t,n){return t.setCustomProperty("image",!0,e),ht(e,t,{label:()=>{const r=this.findViewImgElement(e).getAttribute("alt");return r?`${r} ${n}`:n}})}isImageWidget(e){return!!e.getCustomProperty("image")&&ft(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:n}of t.createRangeIn(e))if(this.isInlineImageView(n))return n}destroy(){return this._domEmitter.stopListening(),super.destroy()}}function jt(a,i){if(xe(a,i,null)=="imageBlock"){const t=$t(i,a.model);if(a.model.schema.checkChild(t,"imageBlock"))return!0}else if(a.model.schema.checkChild(i.focus,"imageInline"))return!0;return!1}function qt(a){return[...a.focus.getAncestors()].every(i=>!i.is("element","imageBlock"))}function $t(a,i){const t=It(a,i).start.parent;return t.isEmpty&&!t.is("element","$root")?t.parent:t}function xe(a,i,e){const t=a.model.schema,n=a.config.get("image.insert.type");return a.plugins.has("ImageBlockEditing")?a.plugins.has("ImageInlineEditing")?e||(n==="inline"?"imageInline":n!=="auto"?"imageBlock":i.is("selection")?ee(t,i):t.checkChild(i,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}const Ht=new RegExp(String(/^(http(s)?:\/\/)?[\w-]+\.[\w.~:/[\]@!$&'()*+,;=%-]+/.source+/\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source+/(\?[\w.~:/[\]@!$&'()*+,;=%-]*)?/.source+/(#[\w.~:/[\]@!$&'()*+,;=%-]*)?$/.source));class ln extends p{constructor(e){super(e);f(this,"_timeoutId");f(this,"_positionToInsert");this._timeoutId=null,this._positionToInsert=null}static get requires(){return[it,w,rt,lt]}static get pluginName(){return"AutoImage"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model.document,n=e.plugins.get("ClipboardPipeline");this.listenTo(n,"inputTransformation",()=>{const s=t.selection.getFirstRange(),o=F.fromPosition(s.start);o.stickiness="toPrevious";const r=F.fromPosition(s.end);r.stickiness="toNext",t.once("change:data",()=>{this._embedImageBetweenPositions(o,r),o.detach(),r.detach()},{priority:"high"})}),e.commands.get("undo").on("execute",()=>{this._timeoutId&&(A.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedImageBetweenPositions(e,t){const n=this.editor,s=new nt(e,t),o=s.getWalker({ignoreElementEnd:!0}),r=Object.fromEntries(n.model.document.selection.getAttributes()),l=this.editor.plugins.get("ImageUtils");let c="";for(const m of o)m.item.is("$textProxy")&&(c+=m.item.data);if(c=c.trim(),!c.match(Ht)){s.detach();return}this._positionToInsert=F.fromPosition(e),this._timeoutId=setTimeout(()=>{if(!n.commands.get("insertImage").isEnabled){s.detach();return}n.model.change(u=>{this._timeoutId=null,u.remove(s),s.detach();let d;this._positionToInsert.root.rootName!=="$graveyard"&&(d=this._positionToInsert.toPosition()),l.insertImage({...r,src:c},d),this._positionToInsert.detach(),this._positionToInsert=null}),n.plugins.get("Delete").requestUndoOnBackspace()},100)}}class Gt extends y{refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled&&t.hasAttribute("alt")?this.value=t.getAttribute("alt"):this.value=!1}execute(i){const e=this.editor,t=e.plugins.get("ImageUtils"),n=e.model,s=t.getClosestSelectedImageElement(n.document.selection);n.change(o=>{o.setAttribute("alt",i.newValue,s)})}}class Kt extends p{static get requires(){return[w]}static get pluginName(){return"ImageTextAlternativeEditing"}static get isOfficialPlugin(){return!0}init(){this.editor.commands.add("imageTextAlternative",new Gt(this.editor))}}class Jt extends P{constructor(e){super(e);f(this,"focusTracker");f(this,"keystrokes");f(this,"labeledInput");f(this,"backButtonView");f(this,"saveButtonView");f(this,"children");f(this,"_focusables");f(this,"_focusCycler");this.focusTracker=new J,this.keystrokes=new O,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.labeledInput=this._createLabeledInputView(),this.children=this.createCollection([this._createHeaderView()]),this.children.add(new Ce(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new X,this.keystrokes.set("Esc",(t,n)=>{this.fire("cancel"),n()}),this._focusCycler=new Y({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),N({view:this}),[this.backButtonView,this.labeledInput,this.saveButtonView].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()}_createBackButton(){const e=this.locale.t,t=new _(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:Ve,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new _(this.locale);return t.set({label:e("Save"),withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){const e=this.locale.t,t=new Ee(this.locale,{label:e("Text Alternative")});return t.children.add(this.backButtonView,0),t}_createLabeledInputView(){const e=this.locale.t,t=new Q(this.locale,ye);return t.label=e("Text alternative"),t.class="ck-labeled-field-view_full-width",t}}function Zt(a){const i=a.plugins.get("ContextualBalloon");if(a.plugins.get("ImageUtils").getClosestSelectedImageWidget(a.editing.view.document.selection)){const t=te(a);i.updatePosition(t)}}function te(a){const i=a.editing.view,e=St.defaultPositions,t=a.plugins.get("ImageUtils");return{target:i.domConverter.mapViewToDom(t.getClosestSelectedImageWidget(i.document.selection)),positions:[e.northArrowSouth,e.northArrowSouthWest,e.northArrowSouthEast,e.southArrowNorth,e.southArrowNorthWest,e.southArrowNorthEast,e.viewportStickyNorth]}}class Xt extends p{constructor(){super(...arguments);f(this,"_balloon");f(this,"_form")}static get requires(){return[we]}static get pluginName(){return"ImageTextAlternativeUI"}static get isOfficialPlugin(){return!0}init(){this._createButton()}destroy(){super.destroy(),this._form&&this._form.destroy()}_createButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("imageTextAlternative",n=>{const s=e.commands.get("imageTextAlternative"),o=new _(n);return o.set({label:t("Change image text alternative"),icon:Lt,tooltip:!0}),o.bind("isEnabled").to(s,"isEnabled"),o.bind("isOn").to(s,"value",r=>!!r),this.listenTo(o,"execute",()=>{this._showForm()}),o})}_createForm(){const e=this.editor,n=e.editing.view.document,s=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(_e(Jt))(e.locale),this._form.render(),this.listenTo(this._form,"submit",()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),this.listenTo(e.ui,"update",()=>{s.getClosestSelectedImageWidget(n.selection)?this._isVisible&&Zt(e):this._hideForm(!0)}),ve({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;this._form||this._createForm();const e=this.editor,t=e.commands.get("imageTextAlternative"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:te(e)}),n.fieldView.value=n.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e=!1){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return!!this._balloon&&this._balloon.visibleView===this._form}get _isInBalloon(){return!!this._balloon&&this._balloon.hasView(this._form)}}class ze extends p{static get requires(){return[Kt,Xt]}static get pluginName(){return"ImageTextAlternative"}static get isOfficialPlugin(){return!0}}function Yt(a){const i=(e,t,n)=>{if(!n.consumable.test(t.viewItem,{name:!0,classes:"image"}))return;const s=a.findViewImgElement(t.viewItem);if(!s||!n.consumable.test(s,{name:!0}))return;n.consumable.consume(t.viewItem,{name:!0,classes:"image"});const o=n.convertItem(s,t.modelCursor),r=K(o.modelRange.getItems());if(!r){n.consumable.revert(t.viewItem,{name:!0,classes:"image"});return}n.convertChildren(t.viewItem,r),n.updateConversionResult(r,t)};return e=>{e.on("element:figure",i)}}function Re(a,i){const e=(t,n,s)=>{if(!s.consumable.consume(n.item,t.name))return;const o=s.writer,r=s.mapper.toViewElement(n.item),l=a.findViewImgElement(r);n.attributeNewValue===null?(o.removeAttribute("srcset",l),o.removeAttribute("sizes",l)):n.attributeNewValue&&(o.setAttribute("srcset",n.attributeNewValue,l),o.setAttribute("sizes","100vw",l))};return t=>{t.on(`attribute:srcset:${i}`,e)}}function R(a,i,e){const t=(n,s,o)=>{if(!o.consumable.consume(s.item,n.name))return;const r=o.writer,l=o.mapper.toViewElement(s.item),c=a.findViewImgElement(l);r.setAttribute(s.attributeKey,s.attributeNewValue||"",c)};return n=>{n.on(`attribute:${e}:${i}`,t)}}class ie extends at{observe(i){this.listenTo(i,"load",(e,t)=>{const n=t.target;this.checkShouldIgnoreEventFromTarget(n)||n.tagName=="IMG"&&this._fireEvents(t)},{useCapture:!0})}stopObserving(i){this.stopListening(i)}_fireEvents(i){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",i))}}class Qt extends y{constructor(i){super(i);const e=i.config.get("image.insert.type");i.plugins.has("ImageBlockEditing")||e==="block"&&v("image-block-plugin-required"),i.plugins.has("ImageInlineEditing")||e==="inline"&&v("image-inline-plugin-required")}refresh(){const i=this.editor.plugins.get("ImageUtils");this.isEnabled=i.isImageAllowed()}execute(i){const e=fe(i.source),t=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),s=Object.fromEntries(t.getAttributes());e.forEach((o,r)=>{const l=t.getSelectedElement();if(typeof o=="string"&&(o={src:o}),r&&l&&n.isImage(l)){const c=this.editor.model.createPositionAfter(l);n.insertImage({...o,...s},c,i.imageType)}else i.breakBlock?n.insertImage({...o,...s},t.getFirstPosition(),i.imageType):n.insertImage({...o,...s},null,i.imageType)})}}class ei extends y{constructor(i){super(i),this.decorate("cleanupImage")}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=this.editor.model.document.selection.getSelectedElement();this.isEnabled=e.isImage(t),this.value=this.isEnabled?t.getAttribute("src"):null}execute(i){const e=this.editor.model.document.selection.getSelectedElement(),t=this.editor.plugins.get("ImageUtils");this.editor.model.change(n=>{n.setAttribute("src",i.source,e),this.cleanupImage(n,e),t.setImageNaturalSizeAttributes(e)})}cleanupImage(i,e){i.removeAttribute("srcset",e),i.removeAttribute("sizes",e),i.removeAttribute("sources",e),i.removeAttribute("width",e),i.removeAttribute("height",e),i.removeAttribute("alt",e)}}class Oe extends p{static get requires(){return[w]}static get pluginName(){return"ImageEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.conversion;i.editing.view.addObserver(ie),e.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:"srcset"});const t=new Qt(i),n=new ei(i);i.commands.add("insertImage",t),i.commands.add("replaceImageSource",n),i.commands.add("imageInsert",t)}}class Pe extends p{static get requires(){return[w]}static get pluginName(){return"ImageSizeAttributes"}static get isOfficialPlugin(){return!0}afterInit(){this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline")}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:["width","height"]}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:["width","height"]})}_registerConverters(i){const e=this.editor,t=e.plugins.get("ImageUtils"),n=i==="imageBlock"?"figure":"img";e.conversion.for("upcast").attributeToAttribute({view:{name:n,styles:{width:/.+/}},model:{key:"width",value:o=>z(o)?x(o.getStyle("width")):null}}).attributeToAttribute({view:{name:n,key:"width"},model:"width"}).attributeToAttribute({view:{name:n,styles:{height:/.+/}},model:{key:"height",value:o=>z(o)?x(o.getStyle("height")):null}}).attributeToAttribute({view:{name:n,key:"height"},model:"height"}),e.conversion.for("editingDowncast").add(o=>{s(o,"width","width",!0,!0),s(o,"height","height",!0,!0)}),e.conversion.for("dataDowncast").add(o=>{s(o,"width","width",!1),s(o,"height","height",!1)});function s(o,r,l,c,m=!1){o.on(`attribute:${r}:${i}`,(g,u,d)=>{if(!d.consumable.consume(u.item,g.name))return;const h=d.writer,I=d.mapper.toViewElement(u.item),b=t.findViewImgElement(I);u.attributeNewValue!==null?h.setAttribute(l,u.attributeNewValue,b):h.removeAttribute(l,b);const C=u.item.getAttribute("width"),k=u.item.getAttribute("height"),V=C&&k;if(V&&m&&h.setAttribute("loading","lazy",b),u.item.hasAttribute("sources"))return;const Qe=u.item.hasAttribute("resizedWidth");i==="imageInline"&&!Qe&&!c||V&&h.setStyle("aspect-ratio",`${C}/${k}`,b)})}}}class Ne extends y{constructor(e,t){super(e);f(this,"_modelElementName");this._modelElementName=t}refresh(){const t=this.editor.plugins.get("ImageUtils"),n=t.getClosestSelectedImageElement(this.editor.model.document.selection);this._modelElementName==="imageBlock"?this.isEnabled=t.isInlineImage(n):this.isEnabled=t.isBlockImage(n)}execute(e={}){const t=this.editor,n=this.editor.model,s=t.plugins.get("ImageUtils"),o=s.getClosestSelectedImageElement(n.document.selection),r=Object.fromEntries(o.getAttributes());return!r.src&&!r.uploadId?null:n.change(l=>{const{setImageSizes:c=!0}=e,m=Array.from(n.markers).filter(d=>d.getRange().containsItem(o)),g=s.insertImage(r,n.createSelection(o,"on"),this._modelElementName,{setImageSizes:c});if(!g)return null;const u=l.createRangeOn(g);for(const d of m){const h=d.getRange(),I=h.root.rootName!="$graveyard"?h.getJoined(u,!0):u;l.updateMarker(d,{range:I})}return{oldElement:o,newElement:g}})}}class Fe extends p{static get requires(){return[w]}static get pluginName(){return"ImagePlaceholder"}static get isOfficialPlugin(){return!0}afterInit(){this._setupSchema(),this._setupConversion(),this._setupLoadListener()}_setupSchema(){const i=this.editor.model.schema;i.isRegistered("imageBlock")&&i.extend("imageBlock",{allowAttributes:["placeholder"]}),i.isRegistered("imageInline")&&i.extend("imageInline",{allowAttributes:["placeholder"]})}_setupConversion(){const i=this.editor,e=i.conversion,t=i.plugins.get("ImageUtils");e.for("editingDowncast").add(n=>{n.on("attribute:placeholder",(s,o,r)=>{if(!r.consumable.test(o.item,s.name)||!o.item.is("element","imageBlock")&&!o.item.is("element","imageInline"))return;r.consumable.consume(o.item,s.name);const l=r.writer,c=r.mapper.toViewElement(o.item),m=t.findViewImgElement(c);o.attributeNewValue?(l.addClass("image_placeholder",m),l.setStyle("background-image",`url(${o.attributeNewValue})`,m),l.setCustomProperty("editingPipeline:doNotReuseOnce",!0,m)):(l.removeClass("image_placeholder",m),l.removeStyle("background-image",m))})})}_setupLoadListener(){const i=this.editor,e=i.model,t=i.editing,n=t.view,s=i.plugins.get("ImageUtils");n.addObserver(ie),this.listenTo(n.document,"imageLoaded",(o,r)=>{const l=n.domConverter.mapDomToView(r.target);if(!l)return;const c=s.getImageWidgetFromImageView(l);if(!c)return;const m=t.mapper.toModelElement(c);!m||!m.hasAttribute("placeholder")||e.enqueueChange({isUndoable:!1},g=>{g.removeAttribute("placeholder",m)})})}}class Le extends p{static get requires(){return[Oe,Pe,w,Fe,H]}static get pluginName(){return"ImageBlockEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),i.plugins.has("ImageInlineEditing")&&(i.commands.add("imageTypeBlock",new Ne(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const i=this.editor,e=i.t,t=i.conversion,n=i.plugins.get("ImageUtils");t.for("dataDowncast").elementToStructure({model:"imageBlock",view:(s,{writer:o})=>re(o)}),t.for("editingDowncast").elementToStructure({model:"imageBlock",view:(s,{writer:o})=>n.toImageWidget(re(o),o,e("image widget"))}),t.for("downcast").add(R(n,"imageBlock","src")).add(R(n,"imageBlock","alt")).add(Re(n,"imageBlock")),t.for("upcast").elementToElement({view:Ae(i,"imageBlock"),model:(s,{writer:o})=>o.createElement("imageBlock",s.hasAttribute("src")?{src:s.getAttribute("src")}:void 0)}).add(Yt(n))}_setupClipboardIntegration(){const i=this.editor,e=i.model,t=i.editing.view,n=i.plugins.get("ImageUtils"),s=i.plugins.get("ClipboardPipeline");this.listenTo(s,"inputTransformation",(o,r)=>{const l=Array.from(r.content.getChildren());let c;if(!l.every(n.isInlineImageView))return;r.targetRanges?c=i.editing.mapper.toModelRange(r.targetRanges[0]):c=e.document.selection.getFirstRange();const m=e.createSelection(c);if(ee(e.schema,m)==="imageBlock"){const g=new G(t.document),u=l.map(d=>g.createElement("figure",{class:"image"},d));r.content=g.createDocumentFragment(u)}}),this.listenTo(s,"contentInsertion",(o,r)=>{r.method==="paste"&&e.change(l=>{const c=l.createRangeIn(r.content);for(const m of c.getItems())m.is("element","imageBlock")&&n.setImageNaturalSizeAttributes(m)})})}}class ti extends P{constructor(e,t=[]){super(e);f(this,"focusTracker");f(this,"keystrokes");f(this,"_focusables");f(this,"_focusCycler");f(this,"children");this.focusTracker=new J,this.keystrokes=new O,this._focusables=new X,this.children=this.createCollection(),this._focusCycler=new Y({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});for(const n of t)this.children.add(n),this._focusables.add(n),n instanceof kt&&this._focusables.addMany(n.children);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:-1},children:this.children})}render(){super.render(),N({view:this});for(const t of this._focusables)this.focusTracker.add(t.element);this.keystrokes.listenTo(this.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)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}}class B extends p{constructor(e){super(e);f(this,"dropdownView");f(this,"_integrations",new Map);e.config.define("image.insert.integrations",["upload","assetManager","url"])}static get pluginName(){return"ImageInsertUI"}static get isOfficialPlugin(){return!0}static get requires(){return[w]}init(){const e=this.editor,t=e.model.document.selection,n=e.plugins.get("ImageUtils");this.set("isImageSelected",!1),this.listenTo(e.model.document,"change",()=>{this.isImageSelected=n.isImage(t.getSelectedElement())});const s=r=>this._createToolbarComponent(r),o=r=>this._createMenuBarComponent(r);e.ui.componentFactory.add("insertImage",s),e.ui.componentFactory.add("imageInsert",s),e.ui.componentFactory.add("menuBar:insertImage",o)}registerIntegration({name:e,observable:t,buttonViewCreator:n,formViewCreator:s,menuBarButtonViewCreator:o,requiresForm:r=!1,override:l=!1}){this._integrations.has(e)&&!l&&v("image-insert-integration-exists",{name:e}),this._integrations.set(e,{observable:t,buttonViewCreator:n,menuBarButtonViewCreator:o,formViewCreator:s,requiresForm:r})}_createToolbarComponent(e){const t=this.editor,n=e.t,s=this._prepareIntegrations();if(!s.length)return null;let o;const r=s[0];if(s.length==1){if(!r.requiresForm)return r.buttonViewCreator(!0);o=r.buttonViewCreator(!0)}else{const m=r.buttonViewCreator(!1);o=new be(e,m),o.tooltip=!0,o.bind("label").to(this,"isImageSelected",g=>n(g?"Replace image":"Insert image"))}const l=this.dropdownView=Z(e,o),c=s.map(({observable:m})=>typeof m=="function"?m():m);return l.bind("isEnabled").toMany(c,"isEnabled",(...m)=>m.some(g=>g)),l.once("change:isOpen",()=>{const m=s.flatMap(({formViewCreator:u})=>u(s.length==1)),g=new ti(t.locale,m);l.panelView.children.add(g)}),l}_createMenuBarComponent(e){const t=e.t,n=this._prepareIntegrations();if(!n.length)return null;const s=n.flatMap(({menuBarButtonViewCreator:l})=>l(n.length==1)),o=new bt(e),r=new wt(e);o.panelView.children.add(r),o.buttonView.set({icon:Tt,label:t("Image")});for(const l of s){const c=new _t(e,o);c.children.add(l),r.items.add(c),l.delegate("execute").to(o)}return o}_prepareIntegrations(){const t=this.editor.config.get("image.insert.integrations"),n=[];if(!t.length)return v("image-insert-integrations-not-specified"),n;for(const s of t){if(!this._integrations.has(s)){["upload","assetManager","url"].includes(s)||v("image-insert-unknown-integration",{item:s});continue}n.push(this._integrations.get(s))}return n.length||v("image-insert-integrations-not-registered"),n}}class cn extends p{static get requires(){return[Le,pe,ze,B]}static get pluginName(){return"ImageBlock"}static get isOfficialPlugin(){return!0}}class ii extends p{static get requires(){return[Oe,Pe,w,Fe,H]}static get pluginName(){return"ImageInlineEditing"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.model.schema.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"],disallowIn:["caption"]}),this._setupConversion(),i.plugins.has("ImageBlockEditing")&&(i.commands.add("imageTypeInline",new Ne(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const i=this.editor,e=i.t,t=i.conversion,n=i.plugins.get("ImageUtils");t.for("dataDowncast").elementToElement({model:"imageInline",view:(s,{writer:o})=>o.createEmptyElement("img")}),t.for("editingDowncast").elementToStructure({model:"imageInline",view:(s,{writer:o})=>n.toImageWidget(Mt(o),o,e("image widget"))}),t.for("downcast").add(R(n,"imageInline","src")).add(R(n,"imageInline","alt")).add(Re(n,"imageInline")),t.for("upcast").elementToElement({view:Ae(i,"imageInline"),model:(s,{writer:o})=>o.createElement("imageInline",s.hasAttribute("src")?{src:s.getAttribute("src")}:void 0)})}_setupClipboardIntegration(){const i=this.editor,e=i.model,t=i.editing.view,n=i.plugins.get("ImageUtils"),s=i.plugins.get("ClipboardPipeline");this.listenTo(s,"inputTransformation",(o,r)=>{const l=Array.from(r.content.getChildren());let c;if(!l.every(n.isBlockImageView))return;r.targetRanges?c=i.editing.mapper.toModelRange(r.targetRanges[0]):c=e.document.selection.getFirstRange();const m=e.createSelection(c);if(ee(e.schema,m)==="imageInline"){const g=new G(t.document),u=l.map(d=>d.childCount===1?(Array.from(d.getAttributes()).forEach(h=>g.setAttribute(...h,n.findViewImgElement(d))),d.getChild(0)):d);r.content=g.createDocumentFragment(u)}}),this.listenTo(s,"contentInsertion",(o,r)=>{r.method==="paste"&&e.change(l=>{const c=l.createRangeIn(r.content);for(const m of c.getItems())m.is("element","imageInline")&&n.setImageNaturalSizeAttributes(m)})})}}class mn extends p{static get requires(){return[ii,pe,ze,B]}static get pluginName(){return"ImageInline"}static get isOfficialPlugin(){return!0}}class De extends p{static get pluginName(){return"ImageCaptionUtils"}static get isOfficialPlugin(){return!0}static get requires(){return[w]}getCaptionFromImageModelElement(i){for(const e of i.getChildren())if(e&&e.is("element","caption"))return e;return null}getCaptionFromModelSelection(i){const e=this.editor.plugins.get("ImageUtils"),t=i.getFirstPosition().findAncestor("caption");return t&&e.isBlockImage(t.parent)?t:null}matchImageCaptionViewElement(i){const e=this.editor.plugins.get("ImageUtils");return i.name=="figcaption"&&e.isBlockImageView(i.parent)?{name:!0}:null}}class ni extends y{refresh(){const i=this.editor,e=i.plugins.get("ImageCaptionUtils"),t=i.plugins.get("ImageUtils");if(!i.plugins.has(Le)){this.isEnabled=!1,this.value=!1;return}const n=i.model.document.selection,s=n.getSelectedElement();if(!s){const o=e.getCaptionFromModelSelection(n);this.isEnabled=!!o,this.value=!!o;return}this.isEnabled=t.isImage(s),this.isEnabled?this.value=!!e.getCaptionFromImageModelElement(s):this.value=!1}execute(i={}){const{focusCaptionOnShow:e}=i;this.editor.model.change(t=>{this.value?this._hideImageCaption(t):this._showImageCaption(t,e)})}_showImageCaption(i,e){const n=this.editor.model.document.selection,s=this.editor.plugins.get("ImageCaptionEditing"),o=this.editor.plugins.get("ImageUtils");let r=n.getSelectedElement();const l=s._getSavedCaption(r);o.isInlineImage(r)&&(this.editor.execute("imageTypeBlock"),r=n.getSelectedElement());const c=l||i.createElement("caption");i.append(c,r),e&&i.setSelection(c,"in")}_hideImageCaption(i){const e=this.editor,t=e.model.document.selection,n=e.plugins.get("ImageCaptionEditing"),s=e.plugins.get("ImageCaptionUtils");let o=t.getSelectedElement(),r;o?r=s.getCaptionFromImageModelElement(o):(r=s.getCaptionFromModelSelection(t),o=r.parent),n._saveCaption(o,r),i.setSelection(o,"on"),i.remove(r)}}class si extends p{constructor(e){super(e);f(this,"_savedCaptionsMap");this._savedCaptionsMap=new WeakMap}static get requires(){return[w,De]}static get pluginName(){return"ImageCaptionEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new ni(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const e=this.editor,t=e.editing.view,n=e.plugins.get("ImageUtils"),s=e.plugins.get("ImageCaptionUtils"),o=e.t;e.conversion.for("upcast").elementToElement({view:r=>s.matchImageCaptionViewElement(r),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(r,{writer:l})=>n.isBlockImage(r.parent)?l.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(r,{writer:l})=>{if(!n.isBlockImage(r.parent))return null;const c=l.createEditableElement("figcaption");l.setCustomProperty("imageCaption",!0,c),c.placeholder=o("Enter image caption"),st({view:t,element:c,keepOnFocus:!0});const m=r.parent.getAttribute("alt"),g=m?o("Caption for image: %0",[m]):o("Caption for the image");return pt(c,l,{label:g})}})}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils"),s=e.commands.get("imageTypeInline"),o=e.commands.get("imageTypeBlock"),r=l=>{if(!l.return)return;const{oldElement:c,newElement:m}=l.return;/* istanbul ignore if: paranoid check -- @preserve */if(!c)return;if(t.isBlockImage(c)){const u=n.getCaptionFromImageModelElement(c);if(u){this._saveCaption(m,u);return}}const g=this._getSavedCaption(c);g&&this._saveCaption(m,g)};s&&this.listenTo(s,"execute",r,{priority:"low"}),o&&this.listenTo(o,"execute",r,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?ot.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}_registerCaptionReconversion(){const e=this.editor,t=e.model,n=e.plugins.get("ImageUtils"),s=e.plugins.get("ImageCaptionUtils");t.document.on("change:data",()=>{const o=t.document.differ.getChanges();for(const r of o){if(r.attributeKey!=="alt")continue;const l=r.range.start.nodeAfter;if(n.isBlockImage(l)){const c=s.getCaptionFromImageModelElement(l);if(!c)return;e.editing.reconvertItem(c)}}})}}class oi extends p{static get requires(){return[De]}static get pluginName(){return"ImageCaptionUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor,e=i.editing.view,t=i.plugins.get("ImageCaptionUtils"),n=i.t;i.ui.componentFactory.add("toggleImageCaption",s=>{const o=i.commands.get("toggleImageCaption"),r=new _(s);return r.set({icon:At,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(o,"value","isEnabled"),r.bind("label").to(o,"value",l=>n(l?"Toggle caption off":"Toggle caption on")),this.listenTo(r,"execute",()=>{i.execute("toggleImageCaption",{focusCaptionOnShow:!0});const l=t.getCaptionFromModelSelection(i.model.document.selection);if(l){const c=i.editing.mapper.toViewElement(l);e.scrollToTheSelection(),e.change(m=>{m.addClass("image__caption_highlighted",c)})}i.editing.view.focus()}),r})}}class un extends p{static get requires(){return[si,oi]}static get pluginName(){return"ImageCaption"}static get isOfficialPlugin(){return!0}}function Me(a){const i=a.map(e=>e.replace("+","\\+"));return new RegExp(`^image\\/(${i.join("|")})$`)}function ai(a){return new Promise((i,e)=>{const t=a.getAttribute("src");fetch(t).then(n=>n.blob()).then(n=>{const s=We(n,t),r=`image.${s.replace("image/","")}`,l=new File([n],r,{type:s});i(l)}).catch(n=>n&&n.name==="TypeError"?li(t).then(i).catch(e):e(n))})}function ri(a,i){return!a.isInlineImageView(i)||!i.getAttribute("src")?!1:!!i.getAttribute("src").match(/^data:image\/\w+;base64,/g)||!!i.getAttribute("src").match(/^blob:/g)}function We(a,i){return a.type?a.type:i.match(/data:(image\/\w+);base64/)?i.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}function li(a){return ci(a).then(i=>{const e=We(i,a),n=`image.${e.replace("image/","")}`;return new File([i],n,{type:e})})}function ci(a){return new Promise((i,e)=>{const t=A.document.createElement("img");t.addEventListener("load",()=>{const n=A.document.createElement("canvas");n.width=t.width,n.height=t.height,n.getContext("2d").drawImage(t,0,0),n.toBlob(o=>o?i(o):e())}),t.addEventListener("error",()=>e()),t.src=a})}class mi extends p{static get pluginName(){return"ImageUploadUI"}static get isOfficialPlugin(){return!0}init(){const i=this.editor;i.ui.componentFactory.add("uploadImage",()=>this._createToolbarButton()),i.ui.componentFactory.add("imageUpload",()=>this._createToolbarButton()),i.ui.componentFactory.add("menuBar:uploadImage",()=>this._createMenuBarButton("standalone")),i.plugins.has("ImageInsertUI")&&i.plugins.get("ImageInsertUI").registerIntegration({name:"upload",observable:()=>i.commands.get("uploadImage"),buttonViewCreator:()=>this._createToolbarButton(),formViewCreator:()=>this._createDropdownButton(),menuBarButtonViewCreator:e=>this._createMenuBarButton(e?"insertOnly":"insertNested")})}_createButton(i){const e=this.editor,t=e.locale,n=e.commands.get("uploadImage"),s=e.config.get("image.upload.types"),o=Me(s),r=new i(e.locale),l=t.t;return r.set({acceptedType:s.map(c=>`image/${c}`).join(","),allowMultipleFiles:!0,label:l("Upload from computer"),icon:Dt}),r.bind("isEnabled").to(n),r.on("done",(c,m)=>{const g=Array.from(m).filter(u=>o.test(u.type));g.length&&(e.execute("uploadImage",{file:g}),e.editing.view.focus())}),r}_createToolbarButton(){const i=this.editor.locale.t,e=this.editor.plugins.get("ImageInsertUI"),t=this.editor.commands.get("uploadImage"),n=this._createButton(ae);return n.tooltip=!0,n.bind("label").to(e,"isImageSelected",t,"isAccessAllowed",(s,o)=>i(o?s?"Replace image from computer":"Upload image from computer":"You have no image upload permissions.")),n}_createDropdownButton(){const i=this.editor.locale.t,e=this.editor.plugins.get("ImageInsertUI"),t=this._createButton(ae);return t.withText=!0,t.bind("label").to(e,"isImageSelected",n=>i(n?"Replace from computer":"Upload from computer")),t.on("execute",()=>{e.dropdownView.isOpen=!1}),t}_createMenuBarButton(i){const e=this.editor.locale.t,t=this._createButton(Et);switch(t.withText=!0,i){case"standalone":t.label=e("Image from computer");break;case"insertOnly":t.label=e("Image");break;case"insertNested":t.label=e("From computer");break}return t}}class ui extends p{constructor(e){super(e);f(this,"placeholder");f(this,"uploadStatusChange",(e,t,n)=>{const s=this.editor,o=t.item,r=o.getAttribute("uploadId");if(!n.consumable.consume(t.item,e.name))return;const l=s.plugins.get("ImageUtils"),c=s.plugins.get(E),m=r?t.attributeNewValue:null,g=this.placeholder,u=s.editing.mapper.toViewElement(o),d=n.writer;if(m=="reading"){le(u,d),ce(l,g,u,d);return}if(m=="uploading"){const h=c.loaders.get(r);le(u,d),h?(me(u,d),di(u,d,h,s.editing.view),bi(l,u,d,h)):ce(l,g,u,d);return}m=="complete"&&c.loaders.get(r)&&fi(u,d,s.editing.view),hi(u,d),me(u,d),gi(u,d)});this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}static get pluginName(){return"ImageUploadProgress"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",this.uploadStatusChange),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",this.uploadStatusChange)}}function le(a,i){a.hasClass("ck-appear")||i.addClass("ck-appear",a)}function gi(a,i){i.removeClass("ck-appear",a)}function ce(a,i,e,t){e.hasClass("ck-image-upload-placeholder")||t.addClass("ck-image-upload-placeholder",e);const n=a.findViewImgElement(e);n.getAttribute("src")!==i&&t.setAttribute("src",i,n),je(e,"placeholder")||t.insert(t.createPositionAfter(n),Ii(t))}function me(a,i){a.hasClass("ck-image-upload-placeholder")&&i.removeClass("ck-image-upload-placeholder",a),qe(a,i,"placeholder")}function di(a,i,e,t){const n=pi(i);i.insert(i.createPositionAt(a,"end"),n),e.on("change:uploadedPercent",(s,o,r)=>{t.change(l=>{l.setStyle("width",r+"%",n)})})}function hi(a,i){qe(a,i,"progressBar")}function fi(a,i,e){const t=i.createUIElement("div",{class:"ck-image-upload-complete-icon"});i.insert(i.createPositionAt(a,"end"),t),setTimeout(()=>{e.change(n=>n.remove(n.createRangeOn(t)))},3e3)}function pi(a){const i=a.createUIElement("div",{class:"ck-progress-bar"});return a.setCustomProperty("progressBar",!0,i),i}function Ii(a){const i=a.createUIElement("div",{class:"ck-upload-placeholder-loader"});return a.setCustomProperty("placeholder",!0,i),i}function je(a,i){for(const e of a.getChildren())if(e.getCustomProperty(i))return e}function qe(a,i,e){const t=je(a,e);t&&i.remove(i.createRangeOn(t))}function bi(a,i,e,t){if(t.data){const n=a.findViewImgElement(i);e.setAttribute("src",t.data,n)}}class wi extends y{constructor(i){super(i),this.set("isAccessAllowed",!0)}refresh(){const i=this.editor,e=i.plugins.get("ImageUtils"),t=i.model.document.selection.getSelectedElement();this.isEnabled=e.isImageAllowed()||e.isImage(t)}execute(i){const e=fe(i.file),t=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),s=Object.fromEntries(t.getAttributes());e.forEach((o,r)=>{const l=t.getSelectedElement();if(r&&l&&n.isImage(l)){const c=this.editor.model.createPositionAfter(l);this._uploadImage(o,s,c)}else this._uploadImage(o,s)})}_uploadImage(i,e,t){const n=this.editor,o=n.plugins.get(E).createLoader(i),r=n.plugins.get("ImageUtils");o&&r.insertImage({...e,uploadId:o.id},t)}}class _i extends p{constructor(e){super(e);f(this,"_uploadImageElements");f(this,"_uploadedImages",new Map);e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}static get requires(){return[E,oe,H,w]}static get pluginName(){return"ImageUploadEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.model.document,n=e.conversion,s=e.plugins.get(E),o=e.plugins.get("ImageUtils"),r=e.plugins.get("ClipboardPipeline"),l=Me(e.config.get("image.upload.types")),c=new wi(e);e.commands.add("uploadImage",c),e.commands.add("imageUpload",c),n.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}).add(m=>m.on("element:img",(g,u,d)=>{if(!d.consumable.test(u.viewItem,{attributes:["data-ck-upload-id"]}))return;const h=u.viewItem.getAttribute("data-ck-upload-id");if(!h)return;const[I]=Array.from(u.modelRange.getItems({shallow:!0})),b=s.loaders.get(h);I&&(d.writer.setAttribute("uploadId",h,I),d.consumable.consume(u.viewItem,{attributes:["data-ck-upload-id"]}),b&&b.data&&d.writer.setAttribute("uploadStatus",b.status,I))},{priority:"low"})),this.listenTo(e.editing.view.document,"clipboardInput",(m,g)=>{if(vi(g.dataTransfer))return;const u=Array.from(g.dataTransfer.files).filter(h=>h?l.test(h.type):!1);if(!u.length)return;if(m.stop(),e.model.change(h=>{g.targetRanges&&h.setSelection(g.targetRanges.map(I=>e.editing.mapper.toModelRange(I))),e.execute("uploadImage",{file:u})}),!e.commands.get("uploadImage").isAccessAllowed){const h=e.plugins.get("Notification"),I=e.locale.t;h.showWarning(I("You have no image upload permissions."),{namespace:"image"})}}),this.listenTo(r,"inputTransformation",(m,g)=>{const u=Array.from(e.editing.view.createRangeIn(g.content)).map(h=>h.item).filter(h=>ri(o,h)&&!h.getAttribute("uploadProcessed")).map(h=>({promise:ai(h),imageElement:h}));if(!u.length)return;const d=new G(e.editing.view.document);for(const h of u){d.setAttribute("uploadProcessed",!0,h.imageElement);const I=s.createLoader(h.promise);I&&(d.setAttribute("src","",h.imageElement),d.setAttribute("uploadId",I.id,h.imageElement))}}),e.editing.view.document.on("dragover",(m,g)=>{g.preventDefault()}),t.on("change",()=>{const m=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),g=new Set;for(const u of m)if(u.type=="insert"&&u.name!="$text"){const d=u.position.nodeAfter,h=u.position.root.rootName=="$graveyard";for(const I of yi(e,d)){const b=I.getAttribute("uploadId");if(!b)continue;const C=s.loaders.get(b);if(!C){!h&&this._uploadedImages.has(b)&&e.model.enqueueChange({isUndoable:!1},k=>{k.setAttribute("uploadStatus","complete",I),this.fire("uploadComplete",{data:this._uploadedImages.get(b),imageElement:I})});continue}h?g.has(b)||Array.from(this._uploadImageElements.get(b)).every(V=>V.root.rootName=="$graveyard")&&C.abort():(g.add(b),this._uploadImageElements.has(b)?this._uploadImageElements.get(b).add(I):this._uploadImageElements.set(b,new Set([I])),C.status=="idle"&&this._readAndUpload(C))}}}),this.on("uploadComplete",(m,{imageElement:g,data:u})=>{const d=u.urls?u.urls:u;this.editor.model.change(h=>{h.setAttribute("src",d.default,g),this._parseAndSetSrcsetAttributeOnImage(d,g,h),o.setImageNaturalSizeAttributes(g)})},{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&(e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this._registerConverters("imageBlock")),this.editor.plugins.has("ImageInlineEditing")&&(e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]}),this._registerConverters("imageInline"))}_readAndUpload(e){const t=this.editor,n=t.model,s=t.locale.t,o=t.plugins.get(E),r=t.plugins.get(oe),l=t.plugins.get("ImageUtils"),c=this._uploadImageElements;return n.enqueueChange({isUndoable:!1},g=>{const u=c.get(e.id);for(const d of u)g.setAttribute("uploadStatus","reading",d)}),e.read().then(()=>{const g=e.upload();t.ui&&t.ui.ariaLiveAnnouncer.announce(s("Uploading image"));for(const u of c.get(e.id)){/* istanbul ignore next -- @preserve */if(gt.isSafari){const d=t.editing.mapper.toViewElement(u),h=l.findViewImgElement(d);t.editing.view.once("render",()=>{if(!h.parent)return;const I=t.editing.view.domConverter.mapViewToDom(h.parent);if(!I)return;const b=I.style.display;I.style.display="none",I._ckHack=I.offsetHeight,I.style.display=b})}n.enqueueChange({isUndoable:!1},d=>{d.setAttribute("uploadStatus","uploading",u)})}return g}).then(g=>{n.enqueueChange({isUndoable:!1},u=>{for(const d of c.get(e.id))u.setAttribute("uploadStatus","complete",d),this.fire("uploadComplete",{data:g,imageElement:d});t.ui&&t.ui.ariaLiveAnnouncer.announce(s("Image upload complete")),this._uploadedImages.set(e.id,g)}),m()}).catch(g=>{if(t.ui&&t.ui.ariaLiveAnnouncer.announce(s("Error during image upload")),e.status!=="error"&&e.status!=="aborted")throw g;e.status=="error"&&g&&r.showWarning(g,{title:s("Upload failed"),namespace:"upload"}),n.enqueueChange({isUndoable:!1},u=>{for(const d of c.get(e.id))d.root.rootName!=="$graveyard"&&u.remove(d)}),m()});function m(){n.enqueueChange({isUndoable:!1},g=>{for(const u of c.get(e.id))g.removeAttribute("uploadId",u),g.removeAttribute("uploadStatus",u);c.delete(e.id)}),o.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,n){let s=0;const o=Object.keys(e).filter(r=>{const l=parseInt(r,10);if(!isNaN(l))return s=Math.max(s,l),!0}).map(r=>`${e[r]} ${r}w`).join(", ");if(o!=""){const r={srcset:o};!t.hasAttribute("width")&&!t.hasAttribute("height")&&(r.width=s),n.setAttributes(r,t)}}_registerConverters(e){const{conversion:t,plugins:n}=this.editor,s=n.get(E),o=n.get(w);t.for("dataDowncast").add(r=>{r.on(`attribute:uploadId:${e}`,(l,c,m)=>{if(!m.consumable.test(c.item,l.name))return;const g=s.loaders.get(c.attributeNewValue);if(!g||!g.data)return null;const u=m.mapper.toViewElement(c.item),d=o.findViewImgElement(u);d&&(m.consumable.consume(c.item,l.name),m.writer.setAttribute("data-ck-upload-id",g.id,d))})})}}function vi(a){return Array.from(a.types).includes("text/html")&&a.getData("text/html")!==""}function yi(a,i){const e=a.plugins.get("ImageUtils");return Array.from(a.model.createRangeOn(i)).filter(t=>e.isImage(t.item)).map(t=>t.item)}class Ci extends p{static get pluginName(){return"ImageUpload"}static get isOfficialPlugin(){return!0}static get requires(){return[_i,mi,ui]}}class Ei extends P{constructor(e){super(e);f(this,"urlInputView");f(this,"keystrokes");this.set("imageURLInputValue",""),this.set("isImageSelected",!1),this.set("isEnabled",!0),this.keystrokes=new O,this.urlInputView=this._createUrlInputView(),this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-url"],tabindex:"-1"},children:[this.urlInputView,{tag:"div",attributes:{class:["ck","ck-image-insert-url__action-row"]}}]})}render(){super.render(),N({view:this}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.keystrokes.destroy()}_createUrlInputView(){const e=this.locale,t=e.t,n=new Q(e,ye);return n.bind("label").to(this,"isImageSelected",s=>t(s?"Update image URL":"Insert image via URL")),n.bind("isEnabled").to(this),n.fieldView.inputMode="url",n.fieldView.placeholder="https://example.com/image.png",n.fieldView.bind("value").to(this,"imageURLInputValue",s=>s||""),n.fieldView.on("input",()=>{this.imageURLInputValue=n.fieldView.element.value.trim()}),n}focus(){this.urlInputView.focus()}}class ki extends p{constructor(){super(...arguments);f(this,"_imageInsertUI");f(this,"_formView")}static get pluginName(){return"ImageInsertViaUrlUI"}static get isOfficialPlugin(){return!0}static get requires(){return[B,vt]}init(){this.editor.ui.componentFactory.add("insertImageViaUrl",()=>this._createToolbarButton()),this.editor.ui.componentFactory.add("menuBar:insertImageViaUrl",()=>this._createMenuBarButton("standalone"))}afterInit(){this._imageInsertUI=this.editor.plugins.get("ImageInsertUI"),this._imageInsertUI.registerIntegration({name:"url",observable:()=>this.editor.commands.get("insertImage"),buttonViewCreator:()=>this._createToolbarButton(),formViewCreator:()=>this._createDropdownButton(),menuBarButtonViewCreator:e=>this._createMenuBarButton(e?"insertOnly":"insertNested")})}_createInsertUrlButton(e){const t=new e(this.editor.locale);return t.icon=xt,t.on("execute",()=>{this._showModal()}),t}_createToolbarButton(){const e=this.editor.locale.t,t=this._createInsertUrlButton(_);return t.tooltip=!0,t.bind("label").to(this._imageInsertUI,"isImageSelected",n=>e(n?"Update image URL":"Insert image via URL")),t}_createDropdownButton(){const e=this.editor.locale.t,t=this._createInsertUrlButton(_);return t.withText=!0,t.bind("label").to(this._imageInsertUI,"isImageSelected",n=>e(n?"Update image URL":"Insert via URL")),t}_createMenuBarButton(e){const t=this.editor.locale.t,n=this._createInsertUrlButton(yt);switch(n.withText=!0,e){case"standalone":n.label=t("Image via URL");break;case"insertOnly":n.label=t("Image");break;case"insertNested":n.label=t("Via URL");break}return n}_createInsertUrlView(){const e=this.editor,t=e.locale,n=e.commands.get("replaceImageSource"),s=e.commands.get("insertImage"),o=new Ei(t);return o.bind("isImageSelected").to(this._imageInsertUI),o.bind("isEnabled").toMany([s,n],"isEnabled",(...r)=>r.some(l=>l)),o}_showModal(){const e=this.editor,n=e.locale.t,s=e.plugins.get("Dialog");this._formView||(this._formView=this._createInsertUrlView(),this._formView.on("submit",()=>this._handleSave()));const o=e.commands.get("replaceImageSource");this._formView.imageURLInputValue=o.value||"",s.show({id:"insertImageViaUrl",title:n("Image via URL"),isModal:!0,content:this._formView,actionButtons:[{label:n("Cancel"),withText:!0,onExecute:()=>s.hide()},{label:this._imageInsertUI.isImageSelected?n("Save"):n("Insert"),class:"ck-button-action",withText:!0,onExecute:()=>this._handleSave()}]})}_handleSave(){this.editor.commands.get("replaceImageSource").isEnabled?this.editor.execute("replaceImageSource",{source:this._formView.imageURLInputValue}):this.editor.execute("insertImage",{source:this._formView.imageURLInputValue}),this.editor.plugins.get("Dialog").hide()}}class Si extends p{static get pluginName(){return"ImageInsertViaUrl"}static get isOfficialPlugin(){return!0}static get requires(){return[ki,B]}}class gn extends p{static get pluginName(){return"ImageInsert"}static get isOfficialPlugin(){return!0}static get requires(){return[Ci,Si,B]}}class Ui extends y{refresh(){const i=this.editor,t=i.plugins.get("ImageUtils").getClosestSelectedImageElement(i.model.document.selection);this.isEnabled=!!t,!t||!t.hasAttribute("resizedWidth")?this.value=null:this.value={width:t.getAttribute("resizedWidth"),height:null}}execute(i){const e=this.editor,t=e.model,n=e.plugins.get("ImageUtils"),s=n.getClosestSelectedImageElement(t.document.selection);this.value={width:i.width,height:null},s&&t.change(o=>{o.setAttribute("resizedWidth",i.width,s),o.removeAttribute("resizedHeight",s),n.setImageNaturalSizeAttributes(s)})}}class $e extends p{static get requires(){return[w]}static get pluginName(){return"ImageResizeEditing"}static get isOfficialPlugin(){return!0}constructor(i){super(i),i.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:custom",value:"custom",icon:"custom"},{name:"resizeImage:25",value:"25",icon:"small"},{name:"resizeImage:50",value:"50",icon:"medium"},{name:"resizeImage:75",value:"75",icon:"large"}]})}init(){const i=this.editor,e=new Ui(i);this._registerConverters("imageBlock"),this._registerConverters("imageInline"),i.commands.add("resizeImage",e),i.commands.add("imageResize",e)}afterInit(){this._registerSchema()}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:["resizedWidth","resizedHeight"]}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:["resizedWidth","resizedHeight"]})}_registerConverters(i){const e=this.editor,t=e.plugins.get("ImageUtils");e.conversion.for("downcast").add(n=>n.on(`attribute:resizedWidth:${i}`,(s,o,r)=>{if(!r.consumable.consume(o.item,s.name))return;const l=r.writer,c=r.mapper.toViewElement(o.item);o.attributeNewValue!==null?(l.setStyle("width",o.attributeNewValue,c),l.addClass("image_resized",c)):(l.removeStyle("width",c),l.removeClass("image_resized",c))})),e.conversion.for("dataDowncast").attributeToAttribute({model:{name:i,key:"resizedHeight"},view:n=>({key:"style",value:{height:n}})}),e.conversion.for("editingDowncast").add(n=>n.on(`attribute:resizedHeight:${i}`,(s,o,r)=>{if(!r.consumable.consume(o.item,s.name))return;const l=r.writer,c=r.mapper.toViewElement(o.item),m=i==="imageInline"?t.findViewImgElement(c):c;o.attributeNewValue!==null?l.setStyle("height",o.attributeNewValue,m):l.removeStyle("height",m)})),e.conversion.for("upcast").attributeToAttribute({view:{name:i==="imageBlock"?"figure":"img",styles:{width:/.+/}},model:{key:"resizedWidth",value:n=>z(n)?null:n.getStyle("width")}}),e.conversion.for("upcast").attributeToAttribute({view:{name:i==="imageBlock"?"figure":"img",styles:{height:/.+/}},model:{key:"resizedHeight",value:n=>z(n)?null:n.getStyle("height")}})}}const D={small:Nt,medium:Pt,large:Ot,custom:Rt,original:zt};class Bi extends p{constructor(e){super(e);f(this,"_resizeUnit");this._resizeUnit=e.config.get("image.resizeUnit")}static get requires(){return[$e]}static get pluginName(){return"ImageResizeButtons"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),n=e.commands.get("resizeImage");this.bind("isEnabled").to(n);for(const s of t)this._registerImageResizeButton(s);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:n,value:s,icon:o}=e;t.ui.componentFactory.add(n,r=>{const l=new _(r),c=t.commands.get("resizeImage"),m=this._getOptionLabelValue(e,!0);if(!D[o])throw new mt("imageresizebuttons-missing-icon",t,e);if(l.set({label:m,icon:D[o],tooltip:m,isToggleable:!0}),l.bind("isEnabled").to(this),t.plugins.has("ImageCustomResizeUI")&&U(e)){const g=t.plugins.get("ImageCustomResizeUI");this.listenTo(l,"execute",()=>{g._showForm(this._resizeUnit)})}else{const g=s?s+this._resizeUnit:null;l.bind("isOn").to(c,"value",c,"isEnabled",q(g)),this.listenTo(l,"execute",()=>{t.execute("resizeImage",{width:g})})}return l})}_registerImageResizeDropdown(e){const t=this.editor,n=t.t,s=e.find(r=>!r.value),o=r=>{const l=t.commands.get("resizeImage"),c=Z(r,Ut),m=c.buttonView,g=n("Resize image");return m.set({tooltip:g,commandValue:s.value,icon:D.medium,isToggleable:!0,label:this._getOptionLabelValue(s),withText:!0,class:"ck-resize-image-button",ariaLabel:g,ariaLabelledBy:void 0}),m.bind("label").to(l,"value",u=>u&&u.width?u.width:this._getOptionLabelValue(s)),c.bind("isEnabled").to(this),Bt(c,()=>this._getResizeDropdownListItemDefinitions(e,l),{ariaLabel:n("Image resize list"),role:"menu"}),this.listenTo(c,"execute",u=>{"onClick"in u.source?u.source.onClick():(t.execute(u.source.commandName,{width:u.source.commandValue}),t.editing.view.focus())}),c};t.ui.componentFactory.add("resizeImage",o),t.ui.componentFactory.add("imageResize",o)}_getOptionLabelValue(e,t=!1){const n=this.editor.t;return e.label?e.label:t?U(e)?n("Custom image size"):e.value?n("Resize image to %0",e.value+this._resizeUnit):n("Resize image to the original size"):U(e)?n("Custom"):e.value?e.value+this._resizeUnit:n("Original")}_getResizeDropdownListItemDefinitions(e,t){const{editor:n}=this,s=new ut,o=e.map(r=>U(r)?{...r,valueWithUnits:"custom"}:r.value?{...r,valueWithUnits:`${r.value}${this._resizeUnit}`}:{...r,valueWithUnits:null});for(const r of o){let l=null;if(n.plugins.has("ImageCustomResizeUI")&&U(r)){const c=n.plugins.get("ImageCustomResizeUI");l={type:"button",model:new se({label:this._getOptionLabelValue(r),role:"menuitemradio",withText:!0,icon:null,onClick:()=>{c._showForm(this._resizeUnit)}})};const m=Object.values(o).map(g=>g.valueWithUnits);l.model.bind("isOn").to(t,"value",t,"isEnabled",Vi(m))}else l={type:"button",model:new se({commandName:"resizeImage",commandValue:r.valueWithUnits,label:this._getOptionLabelValue(r),role:"menuitemradio",withText:!0,icon:null})},l.model.bind("isOn").to(t,"value",t,"isEnabled",q(r.valueWithUnits));l.model.bind("isEnabled").to(t,"isEnabled"),s.add(l)}return s}}function U(a){return a.value==="custom"}function q(a){return(i,e)=>{const t=i;return t===void 0||!e?!1:a===null&&t===a?!0:t!==null&&t.width===a}}function Vi(a){return(i,e)=>!a.some(t=>q(t)(i,e))}const Ti="figure.image.ck-widget > img,figure.image.ck-widget > picture > img,figure.image.ck-widget > a > img,figure.image.ck-widget > a > picture > img,span.image-inline.ck-widget > img,span.image-inline.ck-widget > picture > img",M="image_resized";class Ai extends p{static get requires(){return[L,w]}static get pluginName(){return"ImageResizeHandles"}static get isOfficialPlugin(){return!0}init(){const i=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(i),this._setupResizerCreator()}_setupResizerCreator(){const i=this.editor,e=i.editing.view,t=i.plugins.get("ImageUtils");e.addObserver(ie),this.listenTo(e.document,"imageLoaded",(n,s)=>{if(!s.target.matches(Ti))return;const o=i.editing.view.domConverter,r=o.domToView(s.target),l=t.getImageWidgetFromImageView(r);let c=this.editor.plugins.get(L).getResizerByViewElement(l);if(c){c.redraw();return}const m=i.editing.mapper,g=m.toModelElement(l);c=i.plugins.get(L).attachTo({unit:i.config.get("image.resizeUnit"),modelElement:g,viewElement:l,editor:i,getHandleHost(u){return u.querySelector("img")},getResizeHost(){return o.mapViewToDom(m.toViewElement(g))},isCentered(){return g.getAttribute("imageStyle")=="alignCenter"},onCommit(u){e.change(d=>{d.removeClass(M,l)}),i.execute("resizeImage",{width:u})}}),c.on("updateSize",()=>{l.hasClass(M)||e.change(d=>{d.addClass(M,l)});const u=g.name==="imageInline"?r:l;u.getStyle("height")&&e.change(d=>{d.removeStyle("height",u)})}),c.bind("isEnabled").to(this)})}}/**
5
- * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
6
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
7
- */function He(a){if(!a)return null;const[,i,e]=a.trim().match(/([.,\d]+)(%|px)$/)||[],t=Number.parseFloat(i);return Number.isNaN(t)?null:{value:t,unit:e}}function Ge(a,i,e){return e==="px"?{value:i.value,unit:"px"}:{value:i.value/a*100,unit:"%"}}/**
8
- * @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
9
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
10
- */function Ke(a){const{editing:i}=a,t=a.plugins.get("ImageUtils").getClosestSelectedImageElement(a.model.document.selection);if(!t)return null;const n=i.mapper.toViewElement(t),s=i.view.domConverter.mapViewToDom(n);return{model:t,view:n,dom:s}}function xi(a,i){const e=Ke(a);if(!e)return null;const t=He(e.model.getAttribute("resizedWidth")||null);if(!t)return null;if(t.unit===i)return t;const n=Ie(e.dom),s={value:new dt(e.dom).width};return Ge(n,s,i)}class zi extends P{constructor(e,t,n){super(e);f(this,"focusTracker");f(this,"keystrokes");f(this,"unit");f(this,"backButtonView");f(this,"saveButtonView");f(this,"labeledInput");f(this,"children");f(this,"_focusables");f(this,"_focusCycler");f(this,"_validators");this.focusTracker=new J,this.keystrokes=new O,this.unit=t,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.labeledInput=this._createLabeledInputView(),this.children=this.createCollection([this._createHeaderView()]),this.children.add(new Ce(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new X,this._validators=n,this.keystrokes.set("Esc",(s,o)=>{this.fire("cancel"),o()}),this._focusCycler=new Y({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-image-custom-resize-form","ck-responsive-form"],tabindex:"-1"},children:this.children})}render(){super.render(),N({view:this}),[this.backButtonView,this.labeledInput,this.saveButtonView].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()}_createBackButton(){const e=this.locale.t,t=new _(this.locale);return t.set({class:"ck-button-back",label:e("Back"),icon:Ve,tooltip:!0}),t.delegate("execute").to(this,"cancel"),t}_createSaveButton(){const e=this.locale.t,t=new _(this.locale);return t.set({label:e("Save"),withText:!0,type:"submit",class:"ck-button-action ck-button-bold"}),t}_createHeaderView(){const e=this.locale.t,t=new Ee(this.locale,{label:e("Image Resize")});return t.children.add(this.backButtonView,0),t}_createLabeledInputView(){const e=this.locale.t,t=new Q(this.locale,Vt);return t.label=e("Resize image (in %0)",this.unit),t.class="ck-labeled-field-view_full-width",t.fieldView.set({step:.1}),t}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.labeledInput.errorText=t,!1}return!0}resetFormStatus(){this.labeledInput.errorText=null}get rawSize(){const{element:e}=this.labeledInput.fieldView;return e?e.value:null}get parsedSize(){const{rawSize:e}=this;if(e===null)return null;const t=Number.parseFloat(e);return Number.isNaN(t)?null:t}get sizeWithUnits(){const{parsedSize:e,unit:t}=this;return e===null?null:`${e}${t}`}}function Ri(a,i){const e=Ke(a);if(!e)return null;const t=Ie(e.dom),n=He(window.getComputedStyle(e.dom).minWidth)||{value:1},s=Math.max(.1,Ge(t,n,i).value);return{unit:i,lower:s,upper:i==="px"?t:100}}class Oi extends p{constructor(){super(...arguments);f(this,"_balloon");f(this,"_form")}static get requires(){return[we]}static get pluginName(){return"ImageCustomResizeUI"}static get isOfficialPlugin(){return!0}destroy(){super.destroy(),this._form&&this._form.destroy()}_createForm(e){const t=this.editor;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(_e(zi))(t.locale,e,Pi(t)),this._form.render(),this.listenTo(this._form,"submit",()=>{this._form.isValid()&&(t.execute("resizeImage",{width:this._form.sizeWithUnits}),this._hideForm(!0))}),this.listenTo(this._form.labeledInput,"change:errorText",()=>{t.ui.update()}),this.listenTo(this._form,"cancel",()=>{this._hideForm(!0)}),ve({emitter:this._form,activator:()=>this._isVisible,contextElements:()=>[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(e){if(this._isVisible)return;this._form||this._createForm(e);const t=this.editor,n=this._form.labeledInput;this._form.disableCssTransitions(),this._form.resetFormStatus(),this._isInBalloon||this._balloon.add({view:this._form,position:te(t)});const s=xi(t,e),o=s?s.value.toFixed(1):"",r=Ri(t,e);n.fieldView.value=n.fieldView.element.value=o,r&&Object.assign(n.fieldView,{min:r.lower.toFixed(1),max:Math.ceil(r.upper).toFixed(1)}),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e=!1){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return!!this._balloon&&this._balloon.visibleView===this._form}get _isInBalloon(){return!!this._balloon&&this._balloon.hasView(this._form)}}function Pi(a){const i=a.t;return[e=>{if(e.rawSize.trim()==="")return i("The value must not be empty.");if(e.parsedSize===null)return i("The value should be a plain number.")}]}class dn extends p{static get requires(){return[$e,Ai,Oi,Bi]}static get pluginName(){return"ImageResize"}static get isOfficialPlugin(){return!0}}class Ni extends y{constructor(e,t){super(e);f(this,"_defaultStyles");f(this,"_styles");this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map(n=>{if(n.isDefault)for(const s of n.modelElements)this._defaultStyles[s]=n.name;return[n.name,n]}))}refresh(){const n=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!n,this.isEnabled?n.hasAttribute("imageStyle")?this.value=n.getAttribute("imageStyle"):this.value=this._defaultStyles[n.name]:this.value=!1}execute(e={}){const t=this.editor,n=t.model,s=t.plugins.get("ImageUtils");n.change(o=>{const r=e.value,{setImageSizes:l=!0}=e;let c=s.getClosestSelectedImageElement(n.document.selection);r&&this.shouldConvertImageType(r,c)&&(this.editor.execute(s.isBlockImage(c)?"imageTypeInline":"imageTypeBlock",{setImageSizes:l}),c=s.getClosestSelectedImageElement(n.document.selection)),!r||this._styles.get(r).isDefault?o.removeAttribute("imageStyle",c):o.setAttribute("imageStyle",r,c),l&&s.setImageNaturalSizeAttributes(c)})}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const T={get inline(){return{name:"inline",title:"In line",icon:ke,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:Se,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:Be,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:j,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:W,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:Ue,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:j,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:W,modelElements:["imageBlock"],className:"image-style-side"}}},Je={full:Ft,left:Be,right:Ue,center:j,inlineLeft:Se,inlineRight:W,inline:ke},Ze=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Fi(a){return(a.configuredStyles.options||[]).map(t=>Mi(t)).filter(t=>Wi(t,a))}function Li(a,i){return a&&i?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:a?{options:["block","side"]}:i?{options:["inline","alignLeft","alignRight"]}:{}}function Di(a){return a.has("ImageBlockEditing")&&a.has("ImageInlineEditing")?[...Ze]:[]}function Mi(a){return typeof a=="string"?T[a]?a={...T[a]}:a={name:a}:a=ji(T[a.name],a),typeof a.icon=="string"&&(a.icon=Je[a.icon]||a.icon),a}function Wi(a,{isBlockPluginLoaded:i,isInlinePluginLoaded:e}){const{modelElements:t,name:n}=a;if(!t||!t.length||!n)return Xe({style:a}),!1;{const s=[i?"imageBlock":null,e?"imageInline":null];if(!t.some(o=>s.includes(o)))return v("image-style-missing-dependency",{style:a,missingPlugins:t.map(o=>o==="imageBlock"?"ImageBlockEditing":"ImageInlineEditing")}),!1}return!0}function ji(a,i){const e={...i};for(const t in a)Object.prototype.hasOwnProperty.call(i,t)||(e[t]=a[t]);return e}function Xe(a){v("image-style-configuration-definition-invalid",a)}var $={normalizeStyles:Fi,getDefaultStylesConfiguration:Li,getDefaultDropdownDefinitions:Di,warnInvalidStyle:Xe,DEFAULT_OPTIONS:T,DEFAULT_ICONS:Je,DEFAULT_DROPDOWN_DEFINITIONS:Ze};function qi(a){return(i,e,t)=>{if(!t.consumable.consume(e.item,i.name))return;const n=ue(e.attributeNewValue,a),s=ue(e.attributeOldValue,a),o=t.mapper.toViewElement(e.item),r=t.writer;s&&r.removeClass(s.className,o),n&&r.addClass(n.className,o)}}function $i(a){const i={imageInline:a.filter(e=>!e.isDefault&&e.modelElements.includes("imageInline")),imageBlock:a.filter(e=>!e.isDefault&&e.modelElements.includes("imageBlock"))};return(e,t,n)=>{if(!t.modelRange)return;const s=t.viewItem,o=K(t.modelRange.getItems());if(o&&n.schema.checkAttribute(o,"imageStyle"))for(const r of i[o.name])n.consumable.consume(s,{classes:r.className})&&n.writer.setAttribute("imageStyle",r.name,o)}}function ue(a,i){for(const e of i)if(e.name===a)return e}class Ye extends p{constructor(){super(...arguments);f(this,"normalizedStyles")}static get pluginName(){return"ImageStyleEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[w]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=$,n=this.editor,s=n.plugins.has("ImageBlockEditing"),o=n.plugins.has("ImageInlineEditing");n.config.define("image.styles",t(s,o)),this.normalizedStyles=e({configuredStyles:n.config.get("image.styles"),isBlockPluginLoaded:s,isInlinePluginLoaded:o}),this._setupConversion(s,o),this._setupPostFixer(),n.commands.add("imageStyle",new Ni(n,this.normalizedStyles))}_setupConversion(e,t){const n=this.editor,s=n.model.schema,o=qi(this.normalizedStyles),r=$i(this.normalizedStyles);n.editing.downcastDispatcher.on("attribute:imageStyle",o),n.data.downcastDispatcher.on("attribute:imageStyle",o),e&&(s.extend("imageBlock",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:figure",r,{priority:"low"})),t&&(s.extend("imageInline",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:img",r,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,n=e.plugins.get(w),s=new Map(this.normalizedStyles.map(o=>[o.name,o]));t.registerPostFixer(o=>{let r=!1;for(const l of t.differ.getChanges())if(l.type=="insert"||l.type=="attribute"&&l.attributeKey=="imageStyle"){let c=l.type=="insert"?l.position.nodeAfter:l.range.start.nodeAfter;if(c&&c.is("element","paragraph")&&c.childCount>0&&(c=c.getChild(0)),!n.isImage(c))continue;const m=c.getAttribute("imageStyle");if(!m)continue;const g=s.get(m);(!g||!g.modelElements.includes(c.name))&&(o.removeAttribute("imageStyle",c),r=!0)}return r})}}class Hi extends p{static get requires(){return[Ye]}static get pluginName(){return"ImageStyleUI"}static get isOfficialPlugin(){return!0}get localizedDefaultStylesTitles(){const i=this.editor.t;return{"Wrap text":i("Wrap text"),"Break text":i("Break text"),"In line":i("In line"),"Full size image":i("Full size image"),"Side image":i("Side image"),"Left aligned image":i("Left aligned image"),"Centered image":i("Centered image"),"Right aligned image":i("Right aligned image")}}init(){const i=this.editor.plugins,e=this.editor.config.get("image.toolbar")||[],t=i.get("ImageStyleEditing"),n=ge(t.normalizedStyles,this.localizedDefaultStylesTitles);for(const o of n)this._createButton(o);const s=ge([...e.filter(Te),...$.getDefaultDropdownDefinitions(i)],this.localizedDefaultStylesTitles);for(const o of s)this._createDropdown(o,n)}_createDropdown(i,e){const t=this.editor.ui.componentFactory;t.add(i.name,n=>{let s;const{defaultItem:o,items:r,title:l}=i,c=r.filter(d=>e.find(({name:h})=>de(h)===d)).map(d=>{const h=t.create(d);return d===o&&(s=h),h});r.length!==c.length&&$.warnInvalidStyle({dropdown:i});const m=Z(n,be),g=m.buttonView,u=g.arrowView;return Ct(m,c,{enableActiveItemFocusOnDropdownOpen:!0}),g.set({label:he(l,s.label),class:null,tooltip:!0}),u.unbind("label"),u.set({label:l}),g.bind("icon").toMany(c,"isOn",(...d)=>{const h=d.findIndex(S);return h<0?s.icon:c[h].icon}),g.bind("label").toMany(c,"isOn",(...d)=>{const h=d.findIndex(S);return he(l,h<0?s.label:c[h].label)}),g.bind("isOn").toMany(c,"isOn",(...d)=>d.some(S)),g.bind("class").toMany(c,"isOn",(...d)=>d.some(S)?"ck-splitbutton_flatten":void 0),g.on("execute",()=>{c.some(({isOn:d})=>d)?m.isOpen=!m.isOpen:s.fire("execute")}),m.bind("isEnabled").toMany(c,"isEnabled",(...d)=>d.some(S)),this.listenTo(m,"execute",()=>{this.editor.editing.view.focus()}),m})}_createButton(i){const e=i.name;this.editor.ui.componentFactory.add(de(e),t=>{const n=this.editor.commands.get("imageStyle"),s=new _(t);return s.set({label:i.title,icon:i.icon,tooltip:!0,isToggleable:!0}),s.bind("isEnabled").to(n,"isEnabled"),s.bind("isOn").to(n,"value",o=>o===e),s.on("execute",this._executeCommand.bind(this,e)),s})}_executeCommand(i){this.editor.execute("imageStyle",{value:i}),this.editor.editing.view.focus()}}function ge(a,i){for(const e of a)i[e.title]&&(e.title=i[e.title]);return a}function de(a){return`imageStyle:${a}`}function he(a,i){return(a?a+": ":"")+i}class hn extends p{static get requires(){return[Ye,Hi]}static get pluginName(){return"ImageStyle"}static get isOfficialPlugin(){return!0}}class fn extends p{static get requires(){return[ne,w]}static get pluginName(){return"ImageToolbar"}static get isOfficialPlugin(){return!0}afterInit(){const i=this.editor,e=i.t,t=i.plugins.get(ne),n=i.plugins.get("ImageUtils");t.register("image",{ariaLabel:e("Image toolbar"),items:Gi(i.config.get("image.toolbar")||[]),getRelatedElement:s=>n.getClosestSelectedImageWidget(s)})}}function Gi(a){return a.map(i=>Te(i)?i.name:i)}export{ln as AutoImage,cn as ImageBlock,Le as ImageBlockEditing,un as ImageCaption,si as ImageCaptionEditing,oi as ImageCaptionUI,De as ImageCaptionUtils,Oi as ImageCustomResizeUI,Oe as ImageEditing,mn as ImageInline,gn as ImageInsert,B as ImageInsertUI,Si as ImageInsertViaUrl,dn as ImageResize,Bi as ImageResizeButtons,$e as ImageResizeEditing,Ai as ImageResizeHandles,Pe as ImageSizeAttributes,hn as ImageStyle,Ye as ImageStyleEditing,Hi as ImageStyleUI,ze as ImageTextAlternative,Kt as ImageTextAlternativeEditing,Xt as ImageTextAlternativeUI,fn as ImageToolbar,Ci as ImageUpload,_i as ImageUploadEditing,ui as ImageUploadProgress,mi as ImageUploadUI,w as ImageUtils,Me as createImageTypeRegExp};