@ncino/web-components 9.1.0 → 9.2.0-preview.2

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 (101) hide show
  1. package/dist/_virtual/eq.js +1 -0
  2. package/dist/_virtual/getSymbols.js +1 -0
  3. package/dist/_virtual/getTag.js +1 -0
  4. package/dist/_virtual/isEqual.js +1 -0
  5. package/dist/_virtual/isEqual2.js +1 -0
  6. package/dist/_virtual/isEqualWith.js +1 -0
  7. package/dist/_virtual/isPlainObject.js +1 -0
  8. package/dist/_virtual/noop.js +1 -0
  9. package/dist/_virtual/tags.js +1 -0
  10. package/dist/assets/node_modules/.pnpm/{ckeditor5@47.3.0 → ckeditor5@47.4.0}/node_modules/ckeditor5/dist/ckeditor5.css +1 -1
  11. package/dist/components/input/gator/input-file/input-file.gator.js +1 -1
  12. package/dist/components/input-rich-text/ckeditor-config.js +1 -1
  13. package/dist/components/input-rich-text/input-rich-text.slds.js +2 -2
  14. package/dist/components/panel/gator/panel.storybook-test.js +1 -1
  15. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-alignment@47.3.0 → @ckeditor_ckeditor5-alignment@47.4.0}/node_modules/@ckeditor/ckeditor5-alignment/dist/index.js +1 -1
  16. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-autoformat@47.3.0 → @ckeditor_ckeditor5-autoformat@47.4.0}/node_modules/@ckeditor/ckeditor5-autoformat/dist/index.js +1 -1
  17. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-autosave@47.3.0 → @ckeditor_ckeditor5-autosave@47.4.0}/node_modules/@ckeditor/ckeditor5-autosave/dist/index.js +1 -1
  18. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-basic-styles@47.3.0 → @ckeditor_ckeditor5-basic-styles@47.4.0}/node_modules/@ckeditor/ckeditor5-basic-styles/dist/index.js +1 -1
  19. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-block-quote@47.3.0 → @ckeditor_ckeditor5-block-quote@47.4.0}/node_modules/@ckeditor/ckeditor5-block-quote/dist/index.js +1 -1
  20. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-clipboard@47.3.0 → @ckeditor_ckeditor5-clipboard@47.4.0}/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js +1 -1
  21. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-cloud-services@47.3.0 → @ckeditor_ckeditor5-cloud-services@47.4.0}/node_modules/@ckeditor/ckeditor5-cloud-services/dist/index.js +1 -1
  22. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-code-block@47.3.0 → @ckeditor_ckeditor5-code-block@47.4.0}/node_modules/@ckeditor/ckeditor5-code-block/dist/index.js +1 -1
  23. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-core@47.4.0/node_modules/@ckeditor/ckeditor5-core/dist/index.js +1 -0
  24. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-editor-classic@47.3.0 → @ckeditor_ckeditor5-editor-classic@47.4.0}/node_modules/@ckeditor/ckeditor5-editor-classic/dist/index.js +1 -1
  25. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-engine@47.3.0 → @ckeditor_ckeditor5-engine@47.4.0}/node_modules/@ckeditor/ckeditor5-engine/dist/index.js +2 -2
  26. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-enter@47.3.0 → @ckeditor_ckeditor5-enter@47.4.0}/node_modules/@ckeditor/ckeditor5-enter/dist/index.js +1 -1
  27. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-essentials@47.3.0 → @ckeditor_ckeditor5-essentials@47.4.0}/node_modules/@ckeditor/ckeditor5-essentials/dist/index.js +1 -1
  28. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-find-and-replace@47.3.0 → @ckeditor_ckeditor5-find-and-replace@47.4.0}/node_modules/@ckeditor/ckeditor5-find-and-replace/dist/index.js +1 -1
  29. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-font@47.3.0 → @ckeditor_ckeditor5-font@47.4.0}/node_modules/@ckeditor/ckeditor5-font/dist/index.js +1 -1
  30. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-heading@47.3.0 → @ckeditor_ckeditor5-heading@47.4.0}/node_modules/@ckeditor/ckeditor5-heading/dist/index.js +1 -1
  31. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-highlight@47.3.0 → @ckeditor_ckeditor5-highlight@47.4.0}/node_modules/@ckeditor/ckeditor5-highlight/dist/index.js +1 -1
  32. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-horizontal-line@47.3.0 → @ckeditor_ckeditor5-horizontal-line@47.4.0}/node_modules/@ckeditor/ckeditor5-horizontal-line/dist/index.js +1 -1
  33. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-html-embed@47.3.0 → @ckeditor_ckeditor5-html-embed@47.4.0}/node_modules/@ckeditor/ckeditor5-html-embed/dist/index.js +1 -1
  34. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-html-support@47.3.0 → @ckeditor_ckeditor5-html-support@47.4.0}/node_modules/@ckeditor/ckeditor5-html-support/dist/index.js +1 -1
  35. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-image@47.4.0/node_modules/@ckeditor/ckeditor5-image/dist/index.js +1 -0
  36. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-indent@47.3.0 → @ckeditor_ckeditor5-indent@47.4.0}/node_modules/@ckeditor/ckeditor5-indent/dist/index.js +1 -1
  37. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-language@47.3.0 → @ckeditor_ckeditor5-language@47.4.0}/node_modules/@ckeditor/ckeditor5-language/dist/index.js +1 -1
  38. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-link@47.3.0 → @ckeditor_ckeditor5-link@47.4.0}/node_modules/@ckeditor/ckeditor5-link/dist/index.js +1 -1
  39. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-list@47.3.0 → @ckeditor_ckeditor5-list@47.4.0}/node_modules/@ckeditor/ckeditor5-list/dist/index.js +1 -1
  40. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-markdown-gfm@47.3.0 → @ckeditor_ckeditor5-markdown-gfm@47.4.0}/node_modules/@ckeditor/ckeditor5-markdown-gfm/dist/index.js +1 -1
  41. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-media-embed@47.4.0/node_modules/@ckeditor/ckeditor5-media-embed/dist/index.js +1 -0
  42. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-mention@47.3.0 → @ckeditor_ckeditor5-mention@47.4.0}/node_modules/@ckeditor/ckeditor5-mention/dist/index.js +1 -1
  43. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-page-break@47.3.0 → @ckeditor_ckeditor5-page-break@47.4.0}/node_modules/@ckeditor/ckeditor5-page-break/dist/index.js +1 -1
  44. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-paragraph@47.3.0 → @ckeditor_ckeditor5-paragraph@47.4.0}/node_modules/@ckeditor/ckeditor5-paragraph/dist/index.js +1 -1
  45. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-paste-from-office@47.3.0 → @ckeditor_ckeditor5-paste-from-office@47.4.0}/node_modules/@ckeditor/ckeditor5-paste-from-office/dist/index.js +1 -1
  46. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-remove-format@47.3.0 → @ckeditor_ckeditor5-remove-format@47.4.0}/node_modules/@ckeditor/ckeditor5-remove-format/dist/index.js +1 -1
  47. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-select-all@47.3.0 → @ckeditor_ckeditor5-select-all@47.4.0}/node_modules/@ckeditor/ckeditor5-select-all/dist/index.js +1 -1
  48. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-show-blocks@47.3.0 → @ckeditor_ckeditor5-show-blocks@47.4.0}/node_modules/@ckeditor/ckeditor5-show-blocks/dist/index.js +1 -1
  49. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-source-editing@47.3.0 → @ckeditor_ckeditor5-source-editing@47.4.0}/node_modules/@ckeditor/ckeditor5-source-editing/dist/index.js +1 -1
  50. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-special-characters@47.3.0 → @ckeditor_ckeditor5-special-characters@47.4.0}/node_modules/@ckeditor/ckeditor5-special-characters/dist/index.js +1 -1
  51. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-style@47.3.0 → @ckeditor_ckeditor5-style@47.4.0}/node_modules/@ckeditor/ckeditor5-style/dist/index.js +1 -1
  52. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-table@47.4.0/node_modules/@ckeditor/ckeditor5-table/dist/index.js +1 -0
  53. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-typing@47.4.0/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +1 -0
  54. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-ui@47.4.0/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +1 -0
  55. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-undo@47.3.0 → @ckeditor_ckeditor5-undo@47.4.0}/node_modules/@ckeditor/ckeditor5-undo/dist/index.js +1 -1
  56. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-upload@47.3.0 → @ckeditor_ckeditor5-upload@47.4.0}/node_modules/@ckeditor/ckeditor5-upload/dist/index.js +1 -1
  57. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-utils@47.3.0 → @ckeditor_ckeditor5-utils@47.4.0}/node_modules/@ckeditor/ckeditor5-utils/dist/index.js +1 -1
  58. package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-widget@47.3.0 → @ckeditor_ckeditor5-widget@47.4.0}/node_modules/@ckeditor/ckeditor5-widget/dist/index.js +1 -1
  59. package/dist/node_modules/.pnpm/@deltablot_dropzone@7.4.3/node_modules/@deltablot/dropzone/dist/dropzone.js +38 -0
  60. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/compat/isEqual.js +1 -0
  61. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/compat/_internal/getSymbols2.js +1 -0
  62. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/compat/_internal/getTag2.js +1 -0
  63. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/compat/_internal/tags2.js +1 -0
  64. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/compat/object/merge.js +1 -1
  65. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/compat/predicate/isEqualWith.js +1 -1
  66. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/compat/util/eq2.js +1 -0
  67. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/function/noop.js +1 -1
  68. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/function/noop2.js +1 -0
  69. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/predicate/isEqual.js +1 -1
  70. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/predicate/isEqual2.js +1 -0
  71. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/predicate/isEqualWith.js +1 -1
  72. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/predicate/isEqualWith2.js +1 -0
  73. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/predicate/isPlainObject.js +1 -1
  74. package/dist/node_modules/.pnpm/es-toolkit@1.39.5/node_modules/es-toolkit/dist/predicate/isPlainObject2.js +1 -0
  75. package/dist/node_modules/.pnpm/mdast-util-from-markdown@2.0.2/node_modules/mdast-util-from-markdown/lib/index.js +1 -1
  76. package/dist/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/lib/character-reference.js +1 -1
  77. package/dist/node_modules/.pnpm/micromark-util-decode-string@2.0.1/node_modules/micromark-util-decode-string/index.js +1 -1
  78. package/dist/node_modules/.pnpm/{storybook@10.1.10_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/storybook/dist/_browser-chunks/chunk-RP5RXKFU.js → storybook@10.2.1_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/storybook/dist/_browser-chunks/chunk-Q5RYDXT3.js} +19 -19
  79. package/dist/node_modules/.pnpm/storybook@10.2.1_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/storybook/dist/_browser-chunks/chunk-VIJ7SQRO.js +1 -0
  80. package/dist/node_modules/.pnpm/storybook@10.2.1_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/storybook/dist/core-events/index.js +1 -0
  81. package/dist/node_modules/.pnpm/{storybook@10.1.10_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.0_react@19.2.0__react@19.2.0 → storybook@10.2.1_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4}/node_modules/storybook/dist/instrumenter/index.js +1 -1
  82. package/dist/node_modules/.pnpm/storybook@10.2.1_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/storybook/dist/test/index.js +156 -0
  83. package/package.json +14 -14
  84. package/web-types.json +1 -1
  85. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-core@47.3.0/node_modules/@ckeditor/ckeditor5-core/dist/index.js +0 -1
  86. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-image@47.3.0/node_modules/@ckeditor/ckeditor5-image/dist/index.js +0 -1
  87. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-media-embed@47.3.0/node_modules/@ckeditor/ckeditor5-media-embed/dist/index.js +0 -1
  88. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-table@47.3.0/node_modules/@ckeditor/ckeditor5-table/dist/index.js +0 -1
  89. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-typing@47.3.0/node_modules/@ckeditor/ckeditor5-typing/dist/index.js +0 -1
  90. package/dist/node_modules/.pnpm/@ckeditor_ckeditor5-ui@47.3.0/node_modules/@ckeditor/ckeditor5-ui/dist/index.js +0 -1
  91. package/dist/node_modules/.pnpm/@deltablot_dropzone@7.3.1/node_modules/@deltablot/dropzone/dist/dropzone.js +0 -22
  92. package/dist/node_modules/.pnpm/storybook@10.1.10_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/storybook/dist/_browser-chunks/chunk-EZSQOHRI.js +0 -1
  93. package/dist/node_modules/.pnpm/storybook@10.1.10_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/storybook/dist/core-events/index.js +0 -1
  94. package/dist/node_modules/.pnpm/storybook@10.1.10_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/storybook/dist/test/index.js +0 -152
  95. /package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-icons@47.3.0 → @ckeditor_ckeditor5-icons@47.4.0}/node_modules/@ckeditor/ckeditor5-icons/dist/index.js +0 -0
  96. /package/dist/node_modules/.pnpm/{@ckeditor_ckeditor5-watchdog@47.3.0 → @ckeditor_ckeditor5-watchdog@47.4.0}/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js +0 -0
  97. /package/dist/node_modules/.pnpm/{decode-named-character-reference@1.2.0 → decode-named-character-reference@1.3.0}/node_modules/decode-named-character-reference/index.dom.js +0 -0
  98. /package/dist/node_modules/.pnpm/{storybook@10.1.10_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/storybook/dist/_browser-chunks/chunk-JP7NCOJX.js → storybook@10.2.1_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/storybook/dist/_browser-chunks/chunk-3LY4VQVK.js} +0 -0
  99. /package/dist/node_modules/.pnpm/{storybook@10.1.10_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.0_react@19.2.0__react@19.2.0 → storybook@10.2.1_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4}/node_modules/storybook/dist/_browser-chunks/chunk-A242L54C.js +0 -0
  100. /package/dist/node_modules/.pnpm/{storybook@10.1.10_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.0_react@19.2.0__react@19.2.0 → storybook@10.2.1_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4}/node_modules/storybook/dist/_browser-chunks/chunk-ZUWEVLDX.js +0 -0
  101. /package/dist/node_modules/.pnpm/{storybook@10.1.10_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.0_react@19.2.0__react@19.2.0 → storybook@10.2.1_@testing-library_dom@10.4.1_prettier@3.7.4_react-dom@19.2.4_react@19.2.4__react@19.2.4}/node_modules/storybook/dist/client-logger/index.js +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ncino/web-components",
3
3
  "author": "nCino",
4
- "version": "9.1.0",
4
+ "version": "9.2.0-preview.2",
5
5
  "license": "(c) Copyright 2023 nCino, Inc., all rights reserved",
6
6
  "publishConfig": {
7
7
  "registry": "https://registry.npmjs.org/"
@@ -53,10 +53,10 @@
53
53
  ],
54
54
  "web-types": "./web-types.json",
55
55
  "dependencies": {
56
- "@deltablot/dropzone": "^7.3.1",
56
+ "@deltablot/dropzone": "^7.4.3",
57
57
  "@floating-ui/dom": "^1.7.4",
58
58
  "@lit/localize": "^0.12.2",
59
- "ckeditor5": "^47.3.0",
59
+ "ckeditor5": "^47.4.0",
60
60
  "color": "5.0.3",
61
61
  "libphonenumber-js": "^1.12.31",
62
62
  "lit": "^3.3.1"
@@ -67,14 +67,14 @@
67
67
  "@custom-elements-manifest/analyzer": "0.11.0",
68
68
  "@figma/code-connect": "1.3.9",
69
69
  "@lit/localize-tools": "^0.8.0",
70
- "@salesforce-ux/design-system": "^2.28.1",
71
- "@storybook/addon-a11y": "^10.1.4",
70
+ "@salesforce-ux/design-system": "^2.29.0",
71
+ "@storybook/addon-a11y": "^10.2.1",
72
72
  "@storybook/addon-designs": "^11.1.0",
73
- "@storybook/addon-docs": "^10.1.4",
74
- "@storybook/addon-links": "^10.1.4",
75
- "@storybook/web-components-vite": "^10.1.4",
73
+ "@storybook/addon-docs": "^10.2.1",
74
+ "@storybook/addon-links": "^10.2.1",
75
+ "@storybook/web-components-vite": "^10.2.1",
76
76
  "@types/react": "^19.2.7",
77
- "@typescript-eslint/parser": "^8.50.1",
77
+ "@typescript-eslint/parser": "^8.54.0",
78
78
  "@vitest/browser": "^4.0.15",
79
79
  "@vitest/browser-playwright": "^4.0.15",
80
80
  "@vitest/coverage-v8": "^4.0.15",
@@ -91,23 +91,23 @@
91
91
  "eslint-plugin-json": "^4.0.1",
92
92
  "eslint-plugin-n": "^17.23.1",
93
93
  "eslint-plugin-promise": "^7.2.1",
94
- "eslint-plugin-storybook": "^10.1.4",
94
+ "eslint-plugin-storybook": "^10.2.1",
95
95
  "eslint-plugin-yml": "1.19.0",
96
96
  "glob": "^13.0.0",
97
97
  "jsdom": "27.4.0",
98
- "playwright": "1.57.0",
98
+ "playwright": "1.58.0",
99
99
  "postcss": "^8.5.6",
100
100
  "rimraf": "^6.1.2",
101
101
  "sass": "1.97.1",
102
- "storybook": "^10.1.4",
102
+ "storybook": "^10.2.1",
103
103
  "storybook-addon-code-editor": "^6.1.0",
104
104
  "typescript": "^5.9.3",
105
105
  "vite": "7.3.0",
106
106
  "vite-plugin-dts": "4.5.4",
107
- "vite-plugin-static-copy": "^3.1.4",
107
+ "vite-plugin-static-copy": "^3.2.0",
108
108
  "vitest": "^4.0.15",
109
109
  "yaml-eslint-parser": "^1.3.2",
110
- "@ncino/styles": "9.1.0"
110
+ "@ncino/styles": "9.2.0-preview.2"
111
111
  },
112
112
  "peerDependencies": {
113
113
  "@ncino/styles": ">=8.0.0-preview.0"
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@ncino/web-components",
4
- "version": "9.1.0-preview.4",
4
+ "version": "9.2.0-preview.1",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -1 +0,0 @@
1
- import{ObservableMixin as x,Collection as z,CKEditorError as l,insertToPriorityArray as H,setDataInElement as K,Config as W,decodeLicenseKey as U,toArray as V,crc32 as j,releaseDate as Y,uid as T,logError as J,isFeatureBlockedByLicenseKey as Q,Locale as X,EmitterMixin as Z,KeystrokeHandler as ee,global as L,env as k}from"../../../../../@ckeditor_ckeditor5-utils@47.3.0/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{Model as te,DataController as ie,StylesProcessor as ne,EditingController as se,Conversion as oe}from"../../../../../@ckeditor_ckeditor5-engine@47.3.0/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{EditorWatchdog as re,ContextWatchdog as ae}from"../../../../../@ckeditor_ckeditor5-watchdog@47.3.0/node_modules/@ckeditor/ckeditor5-watchdog/dist/index.js";import{isFunction as M}from"../../../../../es-toolkit@1.39.5/node_modules/es-toolkit/dist/compat/predicate/isFunction.js";import{get as le}from"../../../../../es-toolkit@1.39.5/node_modules/es-toolkit/dist/compat/object/get.js";import{set as ce}from"../../../../../es-toolkit@1.39.5/node_modules/es-toolkit/dist/compat/object/set.js";class Le extends x(){editor;_disableStack=new Set;constructor(e){super(),this.editor=e,this.set("isEnabled",!0)}forceDisabled(e){this._disableStack.add(e),this._disableStack.size==1&&(this.on("set:isEnabled",q,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),this._disableStack.size==0&&(this.off("set:isEnabled",q),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}static get isOfficialPlugin(){return!1}static get isPremiumPlugin(){return!1}}function q(r){r.return=!1,r.stop()}class ue extends x(){editor;_isEnabledBasedOnSelection;_affectsData;_disableStack;constructor(e){super(),this.editor=e,this.set("value",void 0),this.set("isEnabled",!1),this._affectsData=!0,this._isEnabledBasedOnSelection=!0,this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",()=>{this.refresh()}),this.listenTo(e,"change:isReadOnly",()=>{this.refresh()}),this.on("set:isEnabled",t=>{if(!this.affectsData)return;const i=e.model.document.selection,c=!(i.getFirstPosition().root.rootName=="$graveyard")&&e.model.canEditAt(i);(e.isReadOnly||this._isEnabledBasedOnSelection&&!c)&&(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",F,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),this._disableStack.size==0&&(this.off("set:isEnabled",F),this.refresh())}execute(...e){}destroy(){this.stopListening()}}function F(r){r.return=!1,r.stop()}class Ie extends ue{_childCommandsDefinitions=[];refresh(){}execute(...e){const t=this._getFirstEnabledCommand();return!!t&&t.execute(e)}registerChildCommand(e,t={}){H(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 de{_commands;constructor(){this._commands=new Map}add(e,t){this._commands.set(e,t)}get(e){return this._commands.get(e)}execute(e,...t){const i=this.get(e);if(!i)throw new l("commandcollection-command-not-found",this,{commandName:e});return i.execute(...t)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const e of this.commands())e.destroy()}}class $ extends Z(){_context;_plugins=new Map;_availablePlugins;_contextPlugins;constructor(e,t=[],i=[]){super(),this._context=e,this._availablePlugins=new Map;for(const s of t)s.pluginName&&this._availablePlugins.set(s.pluginName,s);this._contextPlugins=new Map;for(const[s,c]of i)this._contextPlugins.set(s,c),this._contextPlugins.set(c,s),s.pluginName&&this._availablePlugins.set(s.pluginName,s)}*[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 i=e;throw typeof e=="function"&&(i=e.pluginName||e.name),new l("plugincollection-plugin-not-loaded",this._context,{plugin:i})}return t}has(e){return this._plugins.has(e)}init(e,t=[],i=[]){const s=this,c=this._context;w(e),y(e);const m=e.filter(a=>!b(a,t)),f=[...P(m)];R(f,i);const _=D(f);return h(_,"init").then(()=>h(_,"afterInit")).then(()=>_);function p(a){return typeof a=="function"}function E(a){return p(a)&&!!a.isContextPlugin}function b(a,o){return o.some(n=>n===a||g(a)===n||g(n)===a)}function g(a){return p(a)?a.pluginName||a.name:a}function w(a,o=new Set){a.forEach(n=>{p(n)&&(o.has(n)||(o.add(n),n.pluginName&&!s._availablePlugins.has(n.pluginName)&&s._availablePlugins.set(n.pluginName,n),n.requires&&w(n.requires,o)))})}function P(a,o=new Set){return a.map(n=>p(n)?n:s._availablePlugins.get(n)).reduce((n,u)=>o.has(u)?n:(o.add(u),u.requires&&(y(u.requires,u),P(u.requires,o).forEach(d=>n.add(d))),n.add(u)),new Set)}function y(a,o=null){a.map(n=>p(n)?n:s._availablePlugins.get(n)||n).forEach(n=>{S(n,o),C(n,o),O(n,o)})}function S(a,o){if(!p(a))throw o?new l("plugincollection-soft-required",c,{missingPlugin:a,requiredBy:g(o)}):new l("plugincollection-plugin-not-found",c,{plugin:a})}function C(a,o){if(E(o)&&!E(a))throw new l("plugincollection-context-required",c,{plugin:g(a),requiredBy:g(o)})}function O(a,o){if(o&&b(a,t))throw new l("plugincollection-required",c,{plugin:g(a),requiredBy:g(o)})}function D(a){return a.map(o=>{let n=s._contextPlugins.get(o);return n=n||new o(c),s._add(o,n),n})}function h(a,o){return a.reduce((n,u)=>!u[o]||s._contextPlugins.has(u)?n:n.then(u[o].bind(u)),Promise.resolve())}function R(a,o){for(const n of o){if(typeof n!="function")throw new l("plugincollection-replace-plugin-invalid-type",null,{pluginItem:n});const u=n.pluginName;if(!u)throw new l("plugincollection-replace-plugin-missing-name",null,{pluginItem:n});if(n.requires&&n.requires.length)throw new l("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:u});const d=s._availablePlugins.get(u);if(!d)throw new l("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:u});const v=a.indexOf(d);if(v===-1){if(s._contextPlugins.has(d))return;throw new l("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:u})}if(d.requires&&d.requires.length)throw new l("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:u});a.splice(v,1,n),s._availablePlugins.set(u,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 i=e.pluginName;if(i){if(this._plugins.has(i))throw new l("plugincollection-plugin-name-conflict",null,{pluginName:i,plugin1:this._plugins.get(i).constructor,plugin2:e});this._plugins.set(i,t)}}}class G{config;plugins;locale;t;editors;static defaultConfig;static builtinPlugins;_contextOwner=null;constructor(e){const{translations:t,...i}=e||{};this.config=new W(i,this.constructor.defaultConfig);const s=this.constructor.builtinPlugins;this.config.define("plugins",s),this.plugins=new $(this,s);const c=this.config.get("language")||{};this.locale=new X({uiLanguage:typeof c=="string"?c:c.ui,contentLanguage:this.config.get("language.content"),translations:t}),this.t=this.locale.t,this.editors=new z}initPlugins(){const e=this.config.get("plugins")||[],t=this.config.get("substitutePlugins")||[];for(const i of e.concat(t)){if(typeof i!="function")throw new l("context-initplugins-constructor-only",null,{Plugin:i});if(i.isContextPlugin!==!0)throw new l("context-initplugins-invalid-plugin",null,{Plugin:i})}return this.plugins.init(e,[],t)}destroy(){return Promise.all(Array.from(this.editors,e=>e.destroy())).then(()=>this.plugins.destroy())}_addEditor(e,t){if(this._contextOwner)throw new l("context-addeditor-private-context");this.editors.add(e),t&&(this._contextOwner=e)}_removeEditor(e){return this.editors.has(e)&&this.editors.remove(e),this._contextOwner===e?this.destroy():Promise.resolve()}_getEditorConfig(){const e={};for(const t of this.config.names())["plugins","removePlugins","extraPlugins"].includes(t)||(e[t]=this.config.get(t));return e}static create(e){return new Promise(t=>{const i=new this(e);t(i.initPlugins().then(()=>i))})}}class he extends x(){context;constructor(e){super(),this.context=e}destroy(){this.stopListening()}static get isContextPlugin(){return!0}static get isOfficialPlugin(){return!1}static get isPremiumPlugin(){return!1}}class fe extends ee{editor;constructor(e){super(),this.editor=e}set(e,t,i={}){if(typeof t=="string"){const s=t;t=(c,m)=>{this.editor.execute(s),m()}}super.set(e,t,i)}}const I="contentEditing",B="common";class ge{keystrokeInfos=new Map;_editor;constructor(e){this._editor=e;const t=e.config.get("menuBar.isVisible"),i=e.locale.t;this.addKeystrokeInfoCategory({id:I,label:i("Content editing keystrokes"),description:i("These keyboard shortcuts allow for quick access to content editing features.")});const s=[{label:i("Close contextual balloons, dropdowns, and dialogs"),keystroke:"Esc"},{label:i("Open the accessibility help dialog"),keystroke:"Alt+0"},{label:i("Move focus between form fields (inputs, buttons, etc.)"),keystroke:[["Tab"],["Shift+Tab"]]},{label:i("Move focus to the toolbar, navigate between toolbars"),keystroke:"Alt+F10",mayRequireFn:!0},{label:i("Navigate through the toolbar or menu bar"),keystroke:[["arrowup"],["arrowright"],["arrowdown"],["arrowleft"]]},{label:i("Execute the currently focused button. Executing buttons that interact with the editor content moves the focus back to the content."),keystroke:[["Enter"],["Space"]]}];t&&s.push({label:i("Move focus to the menu bar, navigate between menu bars"),keystroke:"Alt+F9",mayRequireFn:!0}),this.addKeystrokeInfoCategory({id:"navigation",label:i("User interface and content navigation keystrokes"),description:i("Use the following keystrokes for more efficient navigation in the CKEditor 5 user interface."),groups:[{id:"common",keystrokes:s}]})}addKeystrokeInfoCategory({id:e,label:t,description:i,groups:s}){this.keystrokeInfos.set(e,{id:e,label:t,description:i,groups:new Map}),this.addKeystrokeInfoGroup({categoryId:e,id:B}),s&&s.forEach(c=>{this.addKeystrokeInfoGroup({categoryId:e,...c})})}addKeystrokeInfoGroup({categoryId:e=I,id:t,label:i,keystrokes:s}){const c=this.keystrokeInfos.get(e);if(!c)throw new l("accessibility-unknown-keystroke-info-category",this._editor,{groupId:t,categoryId:e});c.groups.set(t,{id:t,label:i,keystrokes:s||[]})}addKeystrokeInfos({categoryId:e=I,groupId:t=B,keystrokes:i}){if(!this.keystrokeInfos.has(e))throw new l("accessibility-unknown-keystroke-info-category",this._editor,{categoryId:e,keystrokes:i});const s=this.keystrokeInfos.get(e);if(!s.groups.has(t))throw new l("accessibility-unknown-keystroke-info-group",this._editor,{groupId:t,categoryId:e,keystrokes:i});s.groups.get(t).keystrokes.push(...i)}}function me(r){return{sessionId:_e(),pageSessionId:Ee(),hostname:window.location.hostname,version:globalThis.CKEDITOR_VERSION,type:ye(r),plugins:pe(r.plugins),distribution:we(),env:be(),integration:Object.create(null),menuBar:{isVisible:!!r.config.get("menuBar.isVisible")},language:{ui:r.locale.uiLanguage,content:r.locale.contentLanguage},toolbar:{main:N(r.config.get("toolbar")),block:N(r.config.get("blockToolbar")),balloon:N(r.config.get("balloonToolbar"))}}}function ye(r){return Object.getPrototypeOf(r).constructor.editorName}function pe(r){return Array.from(r).filter(([e])=>!!e.pluginName).map(([e])=>{const{pluginName:t,isContextPlugin:i,isOfficialPlugin:s,isPremiumPlugin:c}=e;return{isContext:!!i,isOfficial:!!s,isPremium:!!c,name:t}})}function N(r){if(!r)return;const e=Array.isArray(r)?{items:r}:r,t=c(e.items||[]);return{isMultiline:t.includes("-"),shouldNotGroupWhenFull:!!e.shouldNotGroupWhenFull,items:s(t)};function s(m){return m.filter(f=>f!=="|"&&f!=="-")}function c(m){return m.flatMap(f=>typeof f=="string"?[f]:c(f.items))}}function we(){return{channel:window[Symbol.for("cke distribution")]||"sh"}}function be(){let r="unknown",e="unknown";return k.isMac?r="mac":k.isWindows?r="windows":k.isiOS?r="ios":k.isAndroid&&(r="android"),k.isGecko?e="gecko":k.isBlink?e="blink":k.isSafari&&(e="safari"),{os:r,browser:e}}function _e(){return localStorage.getItem("__ckeditor-session-id")||localStorage.setItem("__ckeditor-session-id",T()),localStorage.getItem("__ckeditor-session-id")}function Ee(){return L.window.CKEDITOR_PAGE_SESSION_ID=L.window.CKEDITOR_PAGE_SESSION_ID||T(),L.window.CKEDITOR_PAGE_SESSION_ID}class Ne extends x(){static get editorName(){return"Editor"}accessibility;commands;config;conversion;data;editing;locale;model;plugins;keystrokes;t;static defaultConfig;static builtinPlugins;_context;_readOnlyLocks;constructor(e={}){if(super(),"sanitizeHtml"in e)throw new l("editor-config-sanitizehtml-not-supported");const t=this.constructor,{translations:i,...s}=t.defaultConfig||{},{translations:c=i,...m}=e,f=e.language||s.language;this._context=e.context||new G({language:f,translations:c}),this._context._addEditor(this,!e.context);const _=Array.from(t.builtinPlugins||[]);this.config=new W(m,s),this.config.define("plugins",_),this.config.define(this._context._getEditorConfig()),E(this.config),this.plugins=new $(this,_,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this._readOnlyLocks=new Set,this.commands=new de,this.set("state","initializing"),this.once("ready",()=>this.state="ready",{priority:"high"}),this.once("destroy",()=>this.state="destroyed",{priority:"high"}),this.model=new te(this.config),this.on("change:isReadOnly",()=>{this.model.document.isReadOnly=this.isReadOnly});const p=new ne;this.data=new ie(this.model,p),this.editing=new se(this.model,p),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new oe([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 fe(this),this.keystrokes.listenTo(this.editing.view.document),this.accessibility=new ge(this),b(this);function E(g){let w=g.get("licenseKey");if(!w&&window.CKEDITOR_GLOBAL_LICENSE_KEY&&(w=window.CKEDITOR_GLOBAL_LICENSE_KEY,g.set("licenseKey",w)),!w)throw new l("license-key-missing")}function b(g){const w=g.config.get("licenseKey"),P=window[Symbol.for("cke distribution")]||"sh";function y(o,n){g.enableReadOnlyMode(Symbol("invalidLicense")),g._showLicenseError(o,n)}function S(o){return["exp","jti","vc"].every(u=>u in o)}function C(o){return Object.getOwnPropertyNames(o).sort().filter(d=>d!="vc"&&o[d]!=null).map(d=>o[d])}function O(o){const{hostname:n}=new URL(window.location.href);if(o.includes(n))return!0;const u=n.split(".");return o.filter(d=>d.includes("*")).map(d=>d.split(".")).filter(d=>d.length<=u.length).map(d=>Array(u.length-d.length).fill(d[0]==="*"?"*":"").concat(d)).some(d=>u.every((v,A)=>d[A]===v||d[A]==="*"))}function D(o){const n=o[0].toUpperCase()+o.slice(1),u=o==="evaluation"?"an":"a";console.info(`%cCKEditor 5 ${n} License`,"color: #ffffff; background: #743CCD; font-size: 14px; padding: 4px 8px; border-radius: 4px;"),console.warn(`⚠️ You are using ${u} ${o} license of CKEditor 5${o==="trial"?" which is for evaluation purposes only":""}. For production usage, please obtain a production license at https://portal.ckeditor.com/`)}if(w=="GPL"){P=="cloud"&&y("distributionChannel");return}const h=U(w);if(!h){y("invalid");return}if(!S(h)){y("invalid");return}if(h.distributionChannel&&!V(h.distributionChannel).includes(P)){y("distributionChannel");return}if(j(C(h))!=h.vc.toLowerCase()){y("invalid");return}if(new Date(h.exp*1e3)<Y){y("expired");return}const a=h.licensedHosts;if(a&&a.length>0&&!O(a)){y("domainLimit");return}if(["evaluation","trial"].includes(h.licenseType)&&h.exp*1e3<Date.now()){y("expired");return}if(["development","evaluation","trial"].includes(h.licenseType)){const{licenseType:o}=h;window.CKEDITOR_WARNING_SUPPRESSIONS=window.CKEDITOR_WARNING_SUPPRESSIONS||{},window.CKEDITOR_WARNING_SUPPRESSIONS[o]||(D(o),window.CKEDITOR_WARNING_SUPPRESSIONS[o]=!0)}if(["evaluation","trial"].includes(h.licenseType)){const o=h.licenseType,n=setTimeout(()=>{y(`${o}Limit`)},6e5);g.on("destroy",()=>{clearTimeout(n)})}h.usageEndpoint&&g.once("ready",()=>{const o={requestId:T(),requestTime:Math.round(Date.now()/1e3),license:w,editor:ke(g)};g._sendUsageRequest(h.usageEndpoint,o).then(n=>{const{status:u,message:d}=n;d&&console.warn(d),u!="ok"&&y("usageLimit")},()=>{J("license-key-validation-endpoint-not-reachable",{url:h.usageEndpoint})})},{priority:"high"})}}get isReadOnly(){return this._readOnlyLocks.size>0}set isReadOnly(e){throw new l("editor-isreadonly-has-no-setter")}enableReadOnlyMode(e){if(typeof e!="string"&&typeof e!="symbol")throw new l("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 l("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"),i=e.get("removePlugins")||[],s=e.get("extraPlugins")||[],c=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(s),i,c).then(f=>(m(this),f));function m(f){const _=f.config.get("licenseKey");if(_==="GPL")return;const p=U(_);if(!p)return;const E=[...f.plugins].map(([b])=>b).find(b=>!b.pluginName||!b.licenseFeatureCode?!1:Q(p,b.licenseFeatureCode));E&&(f.enableReadOnlyMode(Symbol("invalidLicense")),f._showLicenseError("pluginNotAllowed",E.pluginName))}}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(i){l.rethrowUnexpectedError(i,this)}}focus(){this.editing.view.focus()}static create(...e){throw new Error("This is an abstract method.")}static Context=G;static EditorWatchdog=re;static ContextWatchdog=ae;_showLicenseError(e,t){setTimeout(()=>{if(e=="invalid")throw new l("invalid-license-key");if(e=="expired")throw new l("license-key-expired");if(e=="domainLimit")throw new l("license-key-domain-limit");if(e=="pluginNotAllowed"){const i=t.replace(/(Editing|UI)$/,""),s=this.plugins.has(i);throw new l("license-key-plugin-not-allowed",null,{pluginName:s?i:t})}if(e=="featureNotAllowed")throw new l("license-key-feature-not-allowed",null,{featureName:t});if(e=="evaluationLimit")throw new l("license-key-evaluation-limit");if(e=="trialLimit")throw new l("license-key-trial-limit");if(e=="developmentLimit")throw new l("license-key-development-limit");if(e=="usageLimit")throw new l("license-key-usage-limit");if(e=="distributionChannel")throw new l("license-key-invalid-distribution-channel")},0),this._showLicenseError=()=>{}}async _sendUsageRequest(e,t){const i=new Headers({"Content-Type":"application/json"}),s=await fetch(new URL(e),{method:"POST",headers:i,body:JSON.stringify(t)});if(!s.ok)throw new Error(`HTTP Response: ${s.status}`);return s.json()}}function ke(r){const e=me(r);function t(i,s){if(le(e,i)!==void 0)throw new l("editor-usage-data-path-already-set",{path:i});ce(e,i,s)}return r.fire("collectUsageData",{setUsageData:t}),e}function Te(r){if(!M(r.updateSourceElement))throw new l("attachtoform-missing-elementapi-interface",r);const e=r.sourceElement;if(Pe(e)&&e.form){let t;const i=e.form,s=()=>r.updateSourceElement();M(i.submit)&&(t=i.submit,i.submit=()=>{s(),t.apply(i)}),i.addEventListener("submit",s),r.on("destroy",()=>{i.removeEventListener("submit",s),t&&(i.submit=t)})}}function Pe(r){return!!r&&r.tagName.toLowerCase()==="textarea"}function Re(r){class e extends r{sourceElement;updateSourceElement(i){if(!this.sourceElement)throw new l("editor-missing-sourceelement",this);const s=this.config.get("updateSourceElementOnDestroy"),c=this.sourceElement instanceof HTMLTextAreaElement;if(!s&&!c){K(this.sourceElement,"");return}const m=typeof i=="string"?i:this.data.get();K(this.sourceElement,m)}}return e}class Ae extends he{_actions;static get pluginName(){return"PendingActions"}static get isOfficialPlugin(){return!0}init(){this.set("hasAny",!1),this._actions=new z({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if(typeof e!="string")throw new l("pendingactions-add-invalid-message",this);const t=new(x());return t.set("message",e),this._actions.add(t),this.hasAny=!0,t}remove(e){this._actions.remove(e),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}export{ge as Accessibility,ue as Command,de as CommandCollection,G as Context,he as ContextPlugin,fe as EditingKeystrokeHandler,Ne as Editor,Re as ElementApiMixin,Ie as MultiCommand,Ae as PendingActions,Le as Plugin,B as _DEFAULT_ACCESSIBILITY_GROUP_ID,me as _getEditorUsageData,Te as attachToForm};
@@ -1 +0,0 @@
1
- import{Plugin as f,Command as _}from"../../../../../@ckeditor_ckeditor5-core@47.3.0/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Clipboard as Xe,ClipboardPipeline as $}from"../../../../../@ckeditor_ckeditor5-clipboard@47.3.0/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{ModelLivePosition as N,ModelLiveRange as Ye,UpcastWriter as H,enableViewPlaceholder as Qe,ModelElement as et,Observer as tt}from"../../../../../@ckeditor_ckeditor5-engine@47.3.0/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{Undo as it}from"../../../../../@ckeditor_ckeditor5-undo@47.3.0/node_modules/@ckeditor/ckeditor5-undo/dist/index.js";import{Delete as nt}from"../../../../../@ckeditor_ckeditor5-typing@47.3.0/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{global as B,DomEmitterMixin as st,logWarning as w,CKEditorError as ot,Collection as at,env as rt,first as G,FocusTracker as K,KeystrokeHandler as R,Rect as lt,toArray as he}from"../../../../../@ckeditor_ckeditor5-utils@47.3.0/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{Widget as fe,WidgetToolbarRepository as ie,toWidget as ct,isWidget as mt,toWidgetEditable as ut,WidgetResize as F,calculateResizeHostAncestorWidth as pe,findOptimalInsertionRange as gt}from"../../../../../@ckeditor_ckeditor5-widget@47.3.0/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{SplitButtonView as Ie,createDropdown as J,MenuBarMenuView as dt,MenuBarMenuListView as ht,MenuBarMenuListItemView as ft,ButtonView as b,Dialog as pt,MenuBarMenuListItemButtonView as It,ContextualBalloon as be,CssTransitionDisablerMixin as we,clickOutsideHandler as _e,UIModel as ne,addToolbarToDropdown as bt,Notification as se,FileDialogButtonView as oe,MenuBarMenuListItemFileDialogButtonView as wt,View as P,ViewCollection as Z,FocusCycler as X,CollapsibleView as _t,submitHandler as O,LabeledFieldView as Y,createLabeledInputText as ve,BalloonPanelView as vt,DropdownButtonView as yt,addListToDropdown as Et,FormRowView as ye,FormHeaderView as Ee,createLabeledInputNumber as Ct}from"../../../../../@ckeditor_ckeditor5-ui@47.3.0/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconImage as kt,IconCaption as St,IconImageUrl as Ut,IconObjectSizeFull as Vt,IconObjectSizeCustom as Bt,IconObjectSizeLarge as At,IconObjectSizeMedium as Tt,IconObjectSizeSmall as xt,IconTextAlternative as zt,IconImageUpload as Rt,IconObjectInline as Ce,IconObjectInlineRight as W,IconObjectInlineLeft as ke,IconObjectCenter as j,IconObjectRight as Se,IconObjectLeft as Ue,IconObjectFullWidth as Pt,IconPreviousArrow as Ve}from"../../../../../@ckeditor_ckeditor5-icons@47.3.0/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{FileRepository as E}from"../../../../../@ckeditor_ckeditor5-upload@47.3.0/node_modules/@ckeditor/ckeditor5-upload/dist/index.js";import{isObject as Be}from"../../../../../es-toolkit@1.39.5/node_modules/es-toolkit/dist/compat/predicate/isObject.js";import{identity as k}from"../../../../../es-toolkit@1.39.5/node_modules/es-toolkit/dist/compat/function/identity.js";function Ot(o){return o.createContainerElement("span",{class:"image-inline"},o.createEmptyElement("img"))}function ae(o){return o.createContainerElement("figure",{class:"image"},[o.createEmptyElement("img"),o.createSlot("children")])}function Ae(o,e){const t=o.plugins.get("ImageUtils"),i=o.plugins.has("ImageInlineEditing")&&o.plugins.has("ImageBlockEditing");return a=>t.isInlineImageView(a)?i&&(a.getStyle("display")=="block"||a.findAncestor(t.isBlockImageView)?"imageBlock":"imageInline")!==e?null:n(a):null;function n(a){const s={name:!0};return a.hasAttribute("src")&&(s.attributes=["src"]),s}}function Q(o,e){const t=G(e.getSelectedBlocks());return!t||o.isObject(t)||t.isEmpty&&t.name!="listItem"?"imageBlock":"imageInline"}function A(o){return o&&o.endsWith("px")?parseInt(o):null}function T(o){const e=A(o.getStyle("width")),t=A(o.getStyle("height"));return!!(e&&t)}const Nt=/^(image|image-inline)$/;class I extends f{_domEmitter=new(st());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,i=null,n={}){const a=this.editor,s=a.model,r=s.document.selection,l=Te(a,t||r,i);e={...Object.fromEntries(r.getAttributes()),...e};for(const c in e)s.schema.checkAttribute(l,c)||delete e[c];return s.change(c=>{const{setImageSizes:m=!0}=n,u=c.createElement(l,e);return s.insertObject(u,t,null,{setSelection:"on",findOptimalPosition:!t&&l!="imageInline"?"auto":void 0}),u.parent?(m&&this.setImageNaturalSizeAttributes(u),u):null})}setImageNaturalSizeAttributes(e){const t=e.getAttribute("src");t&&(e.getAttribute("width")||e.getAttribute("height")||this.editor.model.change(i=>{const n=new B.window.Image;this._domEmitter.listenTo(n,"load",()=>{!e.getAttribute("width")&&!e.getAttribute("height")&&this.editor.model.enqueueChange(i.batch,a=>{a.setAttribute("width",n.naturalWidth,e),a.setAttribute("height",n.naturalHeight,e)}),this._domEmitter.stopListening(n,"load")}),n.src=t}))}getClosestSelectedImageWidget(e){const t=e.getFirstPosition();if(!t)return null;const i=e.getSelectedElement();if(i&&this.isImageWidget(i))return i;let n=t.parent;for(;n;){if(n.is("element")&&this.isImageWidget(n))return n;n=n.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}getImageWidgetFromImageView(e){return e.findAncestor({classes:Nt})}isImageAllowed(){const t=this.editor.model.document.selection;return Ft(this.editor,t)&&Lt(t)}toImageWidget(e,t,i){return t.setCustomProperty("image",!0,e),ct(e,t,{label:()=>{const s=this.findViewImgElement(e).getAttribute("alt");return s?`${s} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&mt(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}destroy(){return this._domEmitter.stopListening(),super.destroy()}}function Ft(o,e){if(Te(o,e,null)=="imageBlock"){const i=Dt(e,o.model);if(o.model.schema.checkChild(i,"imageBlock"))return!0}else if(o.model.schema.checkChild(e.focus,"imageInline"))return!0;return!1}function Lt(o){return[...o.focus.getAncestors()].every(e=>!e.is("element","imageBlock"))}function Dt(o,e){const i=gt(o,e).start.parent;return i.isEmpty&&!i.is("element","$root")?i.parent:i}function Te(o,e,t){const i=o.model.schema,n=o.config.get("image.insert.type");return o.plugins.has("ImageBlockEditing")?o.plugins.has("ImageInlineEditing")?t||(n==="inline"?"imageInline":n!=="auto"?"imageBlock":e.is("selection")?Q(i,e):i.checkChild(e,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}const Mt=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 sn extends f{static get requires(){return[Xe,I,it,nt]}static get pluginName(){return"AutoImage"}static get isOfficialPlugin(){return!0}_timeoutId;_positionToInsert;constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document,i=e.plugins.get("ClipboardPipeline");this.listenTo(i,"inputTransformation",()=>{const n=t.selection.getFirstRange(),a=N.fromPosition(n.start);a.stickiness="toPrevious";const s=N.fromPosition(n.end);s.stickiness="toNext",t.once("change:data",()=>{this._embedImageBetweenPositions(a,s),a.detach(),s.detach()},{priority:"high"})}),e.commands.get("undo").on("execute",()=>{this._timeoutId&&(B.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedImageBetweenPositions(e,t){const i=this.editor,n=new Ye(e,t),a=n.getWalker({ignoreElementEnd:!0}),s=Object.fromEntries(i.model.document.selection.getAttributes()),r=this.editor.plugins.get("ImageUtils");let l="";for(const c of a)c.item.is("$textProxy")&&(l+=c.item.data);if(l=l.trim(),!l.match(Mt)){n.detach();return}this._positionToInsert=N.fromPosition(e),this._timeoutId=setTimeout(()=>{if(!i.commands.get("insertImage").isEnabled){n.detach();return}i.model.change(u=>{this._timeoutId=null,u.remove(n),n.detach();let g;this._positionToInsert.root.rootName!=="$graveyard"&&(g=this._positionToInsert.toPosition()),r.insertImage({...s,src:l},g),this._positionToInsert.detach(),this._positionToInsert=null}),i.plugins.get("Delete").requestUndoOnBackspace()},100)}}class Wt extends _{refresh(){const i=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!i,this.isEnabled&&i.hasAttribute("alt")?this.value=i.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,a=i.getClosestSelectedImageElement(n.document.selection);n.change(s=>{s.setAttribute("alt",e.newValue,a)})}}class jt extends f{static get requires(){return[I]}static get pluginName(){return"ImageTextAlternativeEditing"}static get isOfficialPlugin(){return!0}init(){this.editor.commands.add("imageTextAlternative",new Wt(this.editor))}}class qt extends P{focusTracker;keystrokes;labeledInput;backButtonView;saveButtonView;children;_focusables;_focusCycler;constructor(e){super(e),this.focusTracker=new K,this.keystrokes=new R,this.backButtonView=this._createBackButton(),this.saveButtonView=this._createSaveButton(),this.labeledInput=this._createLabeledInputView(),this.children=this.createCollection([this._createHeaderView()]),this.children.add(new ye(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new Z,this.keystrokes.set("Esc",(t,i)=>{this.fire("cancel"),i()}),this._focusCycler=new X({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(),O({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 b(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 b(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 Y(this.locale,ve);return t.label=e("Text alternative"),t.class="ck-labeled-field-view_full-width",t}}function $t(o){const e=o.plugins.get("ContextualBalloon");if(o.plugins.get("ImageUtils").getClosestSelectedImageWidget(o.editing.view.document.selection)){const i=ee(o);e.updatePosition(i)}}function ee(o){const e=o.editing.view,t=vt.defaultPositions,i=o.plugins.get("ImageUtils");return{target:e.domConverter.mapViewToDom(i.getClosestSelectedImageWidget(e.document.selection)),positions:[t.northArrowSouth,t.northArrowSouthWest,t.northArrowSouthEast,t.southArrowNorth,t.southArrowNorthWest,t.southArrowNorthEast,t.viewportStickyNorth]}}class Ht extends f{_balloon;_form;static get requires(){return[be]}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",i=>{const n=e.commands.get("imageTextAlternative"),a=new b(i);return a.set({label:t("Change image text alternative"),icon:zt,tooltip:!0}),a.bind("isEnabled").to(n,"isEnabled"),a.bind("isOn").to(n,"value",s=>!!s),this.listenTo(a,"execute",()=>{this._showForm()}),a})}_createForm(){const e=this.editor,i=e.editing.view.document,n=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new(we(qt))(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",()=>{n.getClosestSelectedImageWidget(i.selection)?this._isVisible&&$t(e):this._hideForm(!0)}),_e({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"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:ee(e)}),i.fieldView.value=i.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 xe extends f{static get requires(){return[jt,Ht]}static get pluginName(){return"ImageTextAlternative"}static get isOfficialPlugin(){return!0}}function Gt(o){const e=(t,i,n)=>{if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const a=o.findViewImgElement(i.viewItem);if(!a||!n.consumable.test(a,{name:!0}))return;n.consumable.consume(i.viewItem,{name:!0,classes:"image"});const s=n.convertItem(a,i.modelCursor),r=G(s.modelRange.getItems());if(!r){n.consumable.revert(i.viewItem,{name:!0,classes:"image"});return}n.convertChildren(i.viewItem,r),n.updateConversionResult(r,i)};return t=>{t.on("element:figure",e)}}function ze(o,e){const t=(i,n,a)=>{if(!a.consumable.consume(n.item,i.name))return;const s=a.writer,r=a.mapper.toViewElement(n.item),l=o.findViewImgElement(r);n.attributeNewValue===null?(s.removeAttribute("srcset",l),s.removeAttribute("sizes",l)):n.attributeNewValue&&(s.setAttribute("srcset",n.attributeNewValue,l),s.setAttribute("sizes","100vw",l))};return i=>{i.on(`attribute:srcset:${e}`,t)}}function x(o,e,t){const i=(n,a,s)=>{if(!s.consumable.consume(a.item,n.name))return;const r=s.writer,l=s.mapper.toViewElement(a.item),c=o.findViewImgElement(l);r.setAttribute(a.attributeKey,a.attributeNewValue||"",c)};return n=>{n.on(`attribute:${t}:${e}`,i)}}class te extends tt{observe(e){this.listenTo(e,"load",(t,i)=>{const n=i.target;this.checkShouldIgnoreEventFromTarget(n)||n.tagName=="IMG"&&this._fireEvents(i)},{useCapture:!0})}stopObserving(e){this.stopListening(e)}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class Kt extends _{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||t==="block"&&w("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||t==="inline"&&w("image-inline-plugin-required")}refresh(){const e=this.editor.plugins.get("ImageUtils");this.isEnabled=e.isImageAllowed()}execute(e){const t=he(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),a=Object.fromEntries(i.getAttributes());t.forEach((s,r)=>{const l=i.getSelectedElement();if(typeof s=="string"&&(s={src:s}),r&&l&&n.isImage(l)){const c=this.editor.model.createPositionAfter(l);n.insertImage({...s,...a},c,e.imageType)}else e.breakBlock?n.insertImage({...s,...a},i.getFirstPosition(),e.imageType):n.insertImage({...s,...a},null,e.imageType)})}}class Jt extends _{constructor(e){super(e),this.decorate("cleanupImage")}refresh(){const t=this.editor.plugins.get("ImageUtils"),i=this.editor.model.document.selection.getSelectedElement();this.isEnabled=t.isImage(i),this.value=this.isEnabled?i.getAttribute("src"):null}execute(e){const t=this.editor.model.document.selection.getSelectedElement(),i=this.editor.plugins.get("ImageUtils");this.editor.model.change(n=>{n.setAttribute("src",e.source,t),this.cleanupImage(n,t),i.setImageNaturalSizeAttributes(t)})}cleanupImage(e,t){e.removeAttribute("srcset",t),e.removeAttribute("sizes",t),e.removeAttribute("sources",t),e.removeAttribute("width",t),e.removeAttribute("height",t),e.removeAttribute("alt",t)}}class Re extends f{static get requires(){return[I]}static get pluginName(){return"ImageEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(te),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:"srcset"});const i=new Kt(e),n=new Jt(e);e.commands.add("insertImage",i),e.commands.add("replaceImageSource",n),e.commands.add("imageInsert",i)}}class Pe extends f{static get requires(){return[I]}static get pluginName(){return"ImageSizeAttributes"}static get isOfficialPlugin(){return!0}afterInit(){this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline")}_registerSchema(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["width","height"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["width","height"]})}_registerConverters(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=e==="imageBlock"?"figure":"img";t.conversion.for("upcast").attributeToAttribute({view:{name:n,styles:{width:/.+/}},model:{key:"width",value:s=>T(s)?A(s.getStyle("width")):null}}).attributeToAttribute({view:{name:n,key:"width"},model:"width"}).attributeToAttribute({view:{name:n,styles:{height:/.+/}},model:{key:"height",value:s=>T(s)?A(s.getStyle("height")):null}}).attributeToAttribute({view:{name:n,key:"height"},model:"height"}),t.conversion.for("editingDowncast").add(s=>{a(s,"width","width",!0,!0),a(s,"height","height",!0,!0)}),t.conversion.for("dataDowncast").add(s=>{a(s,"width","width",!1),a(s,"height","height",!1)}),t.conversion.for("upcast").add(s=>{s.on("element:img",(r,l,c)=>{const m=l.viewItem.getAttribute("width"),u=l.viewItem.getAttribute("height");m&&u&&c.consumable.consume(l.viewItem,{styles:["aspect-ratio"]})})});function a(s,r,l,c,m=!1){s.on(`attribute:${r}:${e}`,(u,g,d)=>{if(!d.consumable.consume(g.item,u.name))return;const h=d.writer,p=d.mapper.toViewElement(g.item),y=i.findViewImgElement(p);g.attributeNewValue!==null?h.setAttribute(l,g.attributeNewValue,y):h.removeAttribute(l,y);const v=g.item.getAttribute("width"),C=g.item.getAttribute("height"),V=v&&C;if(V&&m&&h.setAttribute("loading","lazy",y),g.item.hasAttribute("sources"))return;const Ze=g.item.hasAttribute("resizedWidth");e==="imageInline"&&!Ze&&!c||V&&h.setStyle("aspect-ratio",`${v}/${C}`,y)})}}}class Oe extends _{_modelElementName;constructor(e,t){super(e),this._modelElementName=t}refresh(){const t=this.editor.plugins.get("ImageUtils"),i=t.getClosestSelectedImageElement(this.editor.model.document.selection);this._modelElementName==="imageBlock"?this.isEnabled=t.isInlineImage(i):this.isEnabled=t.isBlockImage(i)}execute(e={}){const t=this.editor,i=this.editor.model,n=t.plugins.get("ImageUtils"),a=n.getClosestSelectedImageElement(i.document.selection),s=Object.fromEntries(a.getAttributes());return!s.src&&!s.uploadId?null:i.change(r=>{const{setImageSizes:l=!0}=e,c=Array.from(i.markers).filter(g=>g.getRange().containsItem(a)),m=n.insertImage(s,i.createSelection(a,"on"),this._modelElementName,{setImageSizes:l});if(!m)return null;const u=r.createRangeOn(m);for(const g of c){const d=g.getRange(),h=d.root.rootName!="$graveyard"?d.getJoined(u,!0):u;r.updateMarker(g,{range:h})}return{oldElement:a,newElement:m}})}}class Ne extends f{static get requires(){return[I]}static get pluginName(){return"ImagePlaceholder"}static get isOfficialPlugin(){return!0}afterInit(){this._setupSchema(),this._setupConversion(),this._setupLoadListener()}_setupSchema(){const e=this.editor.model.schema;e.isRegistered("imageBlock")&&e.extend("imageBlock",{allowAttributes:["placeholder"]}),e.isRegistered("imageInline")&&e.extend("imageInline",{allowAttributes:["placeholder"]})}_setupConversion(){const e=this.editor,t=e.conversion,i=e.plugins.get("ImageUtils");t.for("editingDowncast").add(n=>{n.on("attribute:placeholder",(a,s,r)=>{if(!r.consumable.test(s.item,a.name)||!s.item.is("element","imageBlock")&&!s.item.is("element","imageInline"))return;r.consumable.consume(s.item,a.name);const l=r.writer,c=r.mapper.toViewElement(s.item),m=i.findViewImgElement(c);s.attributeNewValue?(l.addClass("image_placeholder",m),l.setStyle("background-image",`url(${s.attributeNewValue})`,m),l.setCustomProperty("editingPipeline:doNotReuseOnce",!0,m)):(l.removeClass("image_placeholder",m),l.removeStyle("background-image",m))})})}_setupLoadListener(){const e=this.editor,t=e.model,i=e.editing,n=i.view,a=e.plugins.get("ImageUtils");n.addObserver(te),this.listenTo(n.document,"imageLoaded",(s,r)=>{const l=n.domConverter.mapDomToView(r.target);if(!l)return;const c=a.getImageWidgetFromImageView(l);if(!c)return;const m=i.mapper.toModelElement(c);!m||!m.hasAttribute("placeholder")||t.enqueueChange({isUndoable:!1},u=>{u.removeAttribute("placeholder",m)})})}}class Fe extends f{static get requires(){return[Re,Pe,I,Ne,$]}static get pluginName(){return"ImageBlockEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new Oe(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToStructure({model:"imageBlock",view:(a,{writer:s})=>ae(s)}),i.for("editingDowncast").elementToStructure({model:"imageBlock",view:(a,{writer:s})=>n.toImageWidget(ae(s),s,t("image widget"))}),i.for("downcast").add(x(n,"imageBlock","src")).add(x(n,"imageBlock","alt")).add(ze(n,"imageBlock")),i.for("upcast").elementToElement({view:Ae(e,"imageBlock"),model:(a,{writer:s})=>s.createElement("imageBlock",a.hasAttribute("src")?{src:a.getAttribute("src")}:void 0)}).add(Gt(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils"),a=e.plugins.get("ClipboardPipeline");this.listenTo(a,"inputTransformation",(s,r)=>{const l=Array.from(r.content.getChildren());let c;if(!l.every(n.isInlineImageView))return;r.targetRanges?c=e.editing.mapper.toModelRange(r.targetRanges[0]):c=t.document.selection.getFirstRange();const m=t.createSelection(c);if(Q(t.schema,m)==="imageBlock"){const u=new H(i.document),g=l.map(d=>u.createElement("figure",{class:"image"},d));r.content=u.createDocumentFragment(g)}}),this.listenTo(a,"contentInsertion",(s,r)=>{r.method==="paste"&&t.change(l=>{const c=l.createRangeIn(r.content);for(const m of c.getItems())m.is("element","imageBlock")&&n.setImageNaturalSizeAttributes(m)})})}}class Zt extends P{focusTracker;keystrokes;_focusables;_focusCycler;children;constructor(e,t=[]){super(e),this.focusTracker=new K,this.keystrokes=new R,this._focusables=new Z,this.children=this.createCollection(),this._focusCycler=new X({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});for(const i of t)this.children.add(i),this._focusables.add(i),i instanceof _t&&this._focusables.addMany(i.children);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:-1},children:this.children})}render(){super.render(),O({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 U extends f{static get pluginName(){return"ImageInsertUI"}static get isOfficialPlugin(){return!0}static get requires(){return[I]}dropdownView;_integrations=new Map;constructor(e){super(e),e.config.define("image.insert.integrations",["upload","assetManager","url"])}init(){const e=this.editor,t=e.model.document.selection,i=e.plugins.get("ImageUtils");this.set("isImageSelected",!1),this.listenTo(e.model.document,"change",()=>{this.isImageSelected=i.isImage(t.getSelectedElement())});const n=s=>this._createToolbarComponent(s),a=s=>this._createMenuBarComponent(s);e.ui.componentFactory.add("insertImage",n),e.ui.componentFactory.add("imageInsert",n),e.ui.componentFactory.add("menuBar:insertImage",a)}registerIntegration({name:e,observable:t,buttonViewCreator:i,formViewCreator:n,menuBarButtonViewCreator:a,requiresForm:s=!1,override:r=!1}){this._integrations.has(e)&&!r&&w("image-insert-integration-exists",{name:e}),this._integrations.set(e,{observable:t,buttonViewCreator:i,menuBarButtonViewCreator:a,formViewCreator:n,requiresForm:s})}_createToolbarComponent(e){const t=this.editor,i=e.t,n=this._prepareIntegrations();if(!n.length)return null;let a;const s=n[0];if(n.length==1){if(!s.requiresForm)return s.buttonViewCreator(!0);a=s.buttonViewCreator(!0)}else{const c=s.buttonViewCreator(!1);a=new Ie(e,c),a.tooltip=!0,a.bind("label").to(this,"isImageSelected",m=>i(m?"Replace image":"Insert image"))}const r=this.dropdownView=J(e,a),l=n.map(({observable:c})=>typeof c=="function"?c():c);return r.bind("isEnabled").toMany(l,"isEnabled",(...c)=>c.some(m=>m)),r.once("change:isOpen",()=>{const c=n.flatMap(({formViewCreator:u})=>u(n.length==1)),m=new Zt(t.locale,c);r.panelView.children.add(m)}),r}_createMenuBarComponent(e){const t=e.t,i=this._prepareIntegrations();if(!i.length)return null;const n=i.flatMap(({menuBarButtonViewCreator:r})=>r(i.length==1)),a=new dt(e),s=new ht(e);a.panelView.children.add(s),a.buttonView.set({icon:kt,label:t("Image")});for(const r of n){const l=new ft(e,a);l.children.add(r),s.items.add(l),r.delegate("execute").to(a)}return a}_prepareIntegrations(){const t=this.editor.config.get("image.insert.integrations"),i=[];if(!t.length)return w("image-insert-integrations-not-specified"),i;for(const n of t){if(!this._integrations.has(n)){["upload","assetManager","url"].includes(n)||w("image-insert-unknown-integration",{item:n});continue}i.push(this._integrations.get(n))}return i.length||w("image-insert-integrations-not-registered"),i}}class on extends f{static get requires(){return[Fe,fe,xe,U]}static get pluginName(){return"ImageBlock"}static get isOfficialPlugin(){return!0}}class Xt extends f{static get requires(){return[Re,Pe,I,Ne,$]}static get pluginName(){return"ImageInlineEditing"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.model.schema.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"],disallowIn:["caption"]}),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new Oe(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(a,{writer:s})=>s.createEmptyElement("img")}),i.for("editingDowncast").elementToStructure({model:"imageInline",view:(a,{writer:s})=>n.toImageWidget(Ot(s),s,t("image widget"))}),i.for("downcast").add(x(n,"imageInline","src")).add(x(n,"imageInline","alt")).add(ze(n,"imageInline")),i.for("upcast").elementToElement({view:Ae(e,"imageInline"),model:(a,{writer:s})=>s.createElement("imageInline",a.hasAttribute("src")?{src:a.getAttribute("src")}:void 0)})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils"),a=e.plugins.get("ClipboardPipeline");this.listenTo(a,"inputTransformation",(s,r)=>{const l=Array.from(r.content.getChildren());let c;if(!l.every(n.isBlockImageView))return;r.targetRanges?c=e.editing.mapper.toModelRange(r.targetRanges[0]):c=t.document.selection.getFirstRange();const m=t.createSelection(c);if(Q(t.schema,m)==="imageInline"){const u=new H(i.document),g=l.map(d=>d.childCount===1?(Array.from(d.getAttributes()).forEach(h=>u.setAttribute(...h,n.findViewImgElement(d))),d.getChild(0)):d);r.content=u.createDocumentFragment(g)}}),this.listenTo(a,"contentInsertion",(s,r)=>{r.method==="paste"&&t.change(l=>{const c=l.createRangeIn(r.content);for(const m of c.getItems())m.is("element","imageInline")&&n.setImageNaturalSizeAttributes(m)})})}}class an extends f{static get requires(){return[Xt,fe,xe,U]}static get pluginName(){return"ImageInline"}static get isOfficialPlugin(){return!0}}class Le extends f{static get pluginName(){return"ImageCaptionUtils"}static get isOfficialPlugin(){return!0}static get requires(){return[I]}getCaptionFromImageModelElement(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}getCaptionFromModelSelection(e){const t=this.editor.plugins.get("ImageUtils"),i=e.getFirstPosition().findAncestor("caption");return i&&t.isBlockImage(i.parent)?i:null}matchImageCaptionViewElement(e){const t=this.editor.plugins.get("ImageUtils");return e.name=="figcaption"&&t.isBlockImageView(e.parent)?{name:!0}:null}}class Yt extends _{refresh(){const e=this.editor,t=e.plugins.get("ImageCaptionUtils"),i=e.plugins.get("ImageUtils");if(!e.plugins.has(Fe)){this.isEnabled=!1,this.value=!1;return}const n=e.model.document.selection,a=n.getSelectedElement();if(!a){const s=t.getCaptionFromModelSelection(n);this.isEnabled=!!s,this.value=!!s;return}this.isEnabled=i.isImage(a),this.isEnabled?this.value=!!t.getCaptionFromImageModelElement(a):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change(i=>{this.value?this._hideImageCaption(i):this._showImageCaption(i,t)})}_showImageCaption(e,t){const n=this.editor.model.document.selection,a=this.editor.plugins.get("ImageCaptionEditing"),s=this.editor.plugins.get("ImageUtils");let r=n.getSelectedElement();const l=a._getSavedCaption(r);s.isInlineImage(r)&&(this.editor.execute("imageTypeBlock"),r=n.getSelectedElement());const c=l||e.createElement("caption");e.append(c,r),t&&e.setSelection(c,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),a=t.plugins.get("ImageCaptionUtils");let s=i.getSelectedElement(),r;s?r=a.getCaptionFromImageModelElement(s):(r=a.getCaptionFromModelSelection(i),s=r.parent),n._saveCaption(s,r),e.setSelection(s,"on"),e.remove(r)}}class Qt extends f{static get requires(){return[I,Le]}static get pluginName(){return"ImageCaptionEditing"}static get isOfficialPlugin(){return!0}_savedCaptionsMap;constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new Yt(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils"),a=e.t;e.conversion.for("upcast").elementToElement({view:s=>n.matchImageCaptionViewElement(s),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(s,{writer:r})=>i.isBlockImage(s.parent)?r.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(s,{writer:r})=>{if(!i.isBlockImage(s.parent))return null;const l=r.createEditableElement("figcaption");r.setCustomProperty("imageCaption",!0,l),l.placeholder=a("Enter image caption"),Qe({view:t,element:l,keepOnFocus:!0});const c=s.parent.getAttribute("alt"),m=c?a("Caption for image: %0",[c]):a("Caption for the image");return ut(l,r,{label:m})}})}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.plugins.get("ImageCaptionUtils"),n=e.commands.get("imageTypeInline"),a=e.commands.get("imageTypeBlock"),s=r=>{if(!r.return)return;const{oldElement:l,newElement:c}=r.return;if(!l)return;if(t.isBlockImage(l)){const u=i.getCaptionFromImageModelElement(l);if(u){this._saveCaption(c,u);return}}const m=this._getSavedCaption(l);m&&this._saveCaption(c,m)};n&&this.listenTo(n,"execute",s,{priority:"low"}),a&&this.listenTo(a,"execute",s,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?et.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}_registerCaptionReconversion(){const e=this.editor,t=e.model,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils");t.document.on("change:data",()=>{const a=t.document.differ.getChanges();for(const s of a){if(s.attributeKey!=="alt")continue;const r=s.range.start.nodeAfter;if(i.isBlockImage(r)){const l=n.getCaptionFromImageModelElement(r);if(!l)return;e.editing.reconvertItem(l)}}})}}class ei extends f{static get requires(){return[Le]}static get pluginName(){return"ImageCaptionUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageCaptionUtils"),n=e.t;e.ui.componentFactory.add("toggleImageCaption",a=>{const s=e.commands.get("toggleImageCaption"),r=new b(a);return r.set({icon:St,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.bind("label").to(s,"value",l=>n(l?"Toggle caption off":"Toggle caption on")),this.listenTo(r,"execute",()=>{e.execute("toggleImageCaption",{focusCaptionOnShow:!0});const l=i.getCaptionFromModelSelection(e.model.document.selection);if(l){const c=e.editing.mapper.toViewElement(l);t.scrollToTheSelection(),t.change(m=>{m.addClass("image__caption_highlighted",c)})}e.editing.view.focus()}),r})}}class rn extends f{static get requires(){return[Qt,ei]}static get pluginName(){return"ImageCaption"}static get isOfficialPlugin(){return!0}}function De(o){const e=o.map(t=>t.replace("+","\\+"));return new RegExp(`^image\\/(${e.join("|")})$`)}function ti(o){return new Promise((e,t)=>{const i=o.getAttribute("src");fetch(i).then(n=>n.blob()).then(n=>{const a=Me(n,i),r=`image.${a.replace("image/","")}`,l=new File([n],r,{type:a});e(l)}).catch(n=>n&&n.name==="TypeError"?ni(i).then(e).catch(t):t(n))})}function ii(o,e){return!o.isInlineImageView(e)||!e.getAttribute("src")?!1:!!e.getAttribute("src").match(/^data:image\/\w+;base64,/g)||!!e.getAttribute("src").match(/^blob:/g)}function Me(o,e){return o.type?o.type:e.match(/data:(image\/\w+);base64/)?e.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}function ni(o){return si(o).then(e=>{const t=Me(e,o),n=`image.${t.replace("image/","")}`;return new File([e],n,{type:t})})}function si(o){return new Promise((e,t)=>{const i=B.document.createElement("img");i.addEventListener("load",()=>{const n=B.document.createElement("canvas");n.width=i.width,n.height=i.height,n.getContext("2d").drawImage(i,0,0),n.toBlob(s=>s?e(s):t())}),i.addEventListener("error",()=>t()),i.src=o})}class oi extends f{static get pluginName(){return"ImageUploadUI"}static get isOfficialPlugin(){return!0}init(){const e=this.editor;e.ui.componentFactory.add("uploadImage",()=>this._createToolbarButton()),e.ui.componentFactory.add("imageUpload",()=>this._createToolbarButton()),e.ui.componentFactory.add("menuBar:uploadImage",()=>this._createMenuBarButton("standalone")),e.plugins.has("ImageInsertUI")&&e.plugins.get("ImageInsertUI").registerIntegration({name:"upload",observable:()=>e.commands.get("uploadImage"),buttonViewCreator:()=>this._createToolbarButton(),formViewCreator:()=>this._createDropdownButton(),menuBarButtonViewCreator:t=>this._createMenuBarButton(t?"insertOnly":"insertNested")})}_createButton(e){const t=this.editor,i=t.locale,n=t.commands.get("uploadImage"),a=t.config.get("image.upload.types"),s=De(a),r=new e(t.locale),l=i.t;return r.set({acceptedType:a.map(c=>`image/${c}`).join(","),allowMultipleFiles:!0,label:l("Upload from computer"),icon:Rt}),r.bind("isEnabled").to(n),r.on("done",(c,m)=>{const u=Array.from(m).filter(g=>s.test(g.type));u.length&&(t.execute("uploadImage",{file:u}),t.editing.view.focus())}),r}_createToolbarButton(){const e=this.editor.locale.t,t=this.editor.plugins.get("ImageInsertUI"),i=this.editor.commands.get("uploadImage"),n=this._createButton(oe);return n.tooltip=!0,n.bind("label").to(t,"isImageSelected",i,"isAccessAllowed",(a,s)=>e(s?a?"Replace image from computer":"Upload image from computer":"You have no image upload permissions.")),n}_createDropdownButton(){const e=this.editor.locale.t,t=this.editor.plugins.get("ImageInsertUI"),i=this._createButton(oe);return i.withText=!0,i.bind("label").to(t,"isImageSelected",n=>e(n?"Replace from computer":"Upload from computer")),i.on("execute",()=>{t.dropdownView.isOpen=!1}),i}_createMenuBarButton(e){const t=this.editor.locale.t,i=this._createButton(wt);switch(i.withText=!0,e){case"standalone":i.label=t("Image from computer");break;case"insertOnly":i.label=t("Image");break;case"insertNested":i.label=t("From computer");break}return i}}class ai extends f{static get pluginName(){return"ImageUploadProgress"}static get isOfficialPlugin(){return!0}placeholder;constructor(e){super(e),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",this.uploadStatusChange),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",this.uploadStatusChange)}uploadStatusChange=(e,t,i)=>{const n=this.editor,a=t.item,s=a.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const r=n.plugins.get("ImageUtils"),l=n.plugins.get(E),c=s?t.attributeNewValue:null,m=this.placeholder,u=n.editing.mapper.toViewElement(a),g=i.writer;if(c=="reading"){re(u,g),le(r,m,u,g);return}if(c=="uploading"){const d=l.loaders.get(s);re(u,g),d?(ce(u,g),li(u,g,d,n.editing.view),di(r,u,g,d)):le(r,m,u,g);return}c=="complete"&&l.loaders.get(s)&&mi(u,g,n.editing.view),ci(u,g),ce(u,g),ri(u,g)}}function re(o,e){o.hasClass("ck-appear")||e.addClass("ck-appear",o)}function ri(o,e){e.removeClass("ck-appear",o)}function le(o,e,t,i){t.hasClass("ck-image-upload-placeholder")||i.addClass("ck-image-upload-placeholder",t);const n=o.findViewImgElement(t);n.getAttribute("src")!==e&&i.setAttribute("src",e,n),We(t,"placeholder")||i.insert(i.createPositionAfter(n),gi(i))}function ce(o,e){o.hasClass("ck-image-upload-placeholder")&&e.removeClass("ck-image-upload-placeholder",o),je(o,e,"placeholder")}function li(o,e,t,i){const n=ui(e);e.insert(e.createPositionAt(o,"end"),n),t.on("change:uploadedPercent",(a,s,r)=>{i.change(l=>{l.setStyle("width",r+"%",n)})})}function ci(o,e){je(o,e,"progressBar")}function mi(o,e,t){const i=e.createUIElement("div",{class:"ck-image-upload-complete-icon"});e.insert(e.createPositionAt(o,"end"),i),setTimeout(()=>{t.change(n=>n.remove(n.createRangeOn(i)))},3e3)}function ui(o){const e=o.createUIElement("div",{class:"ck-progress-bar"});return o.setCustomProperty("progressBar",!0,e),e}function gi(o){const e=o.createUIElement("div",{class:"ck-upload-placeholder-loader"});return o.setCustomProperty("placeholder",!0,e),e}function We(o,e){for(const t of o.getChildren())if(t.getCustomProperty(e))return t}function je(o,e,t){const i=We(o,t);i&&e.remove(e.createRangeOn(i))}function di(o,e,t,i){if(i.data){const n=o.findViewImgElement(e);t.setAttribute("src",i.data,n)}}class hi extends _{constructor(e){super(e),this.set("isAccessAllowed",!0)}refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=he(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),a=Object.fromEntries(i.getAttributes());t.forEach((s,r)=>{const l=i.getSelectedElement();if(r&&l&&n.isImage(l)){const c=this.editor.model.createPositionAfter(l);this._uploadImage(s,a,c)}else this._uploadImage(s,a)})}_uploadImage(e,t,i){const n=this.editor,s=n.plugins.get(E).createLoader(e),r=n.plugins.get("ImageUtils");s&&r.insertImage({...t,uploadId:s.id},i)}}class fi extends f{static get requires(){return[E,se,$,I]}static get pluginName(){return"ImageUploadEditing"}static get isOfficialPlugin(){return!0}_uploadImageElements;_uploadedImages=new Map;constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(E),a=e.plugins.get("ImageUtils"),s=e.plugins.get("ClipboardPipeline"),r=De(e.config.get("image.upload.types")),l=new hi(e);e.commands.add("uploadImage",l),e.commands.add("imageUpload",l),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}).add(c=>c.on("element:img",(m,u,g)=>{if(!g.consumable.test(u.viewItem,{attributes:["data-ck-upload-id"]}))return;const d=u.viewItem.getAttribute("data-ck-upload-id");if(!d)return;const[h]=Array.from(u.modelRange.getItems({shallow:!0})),p=n.loaders.get(d);h&&(g.writer.setAttribute("uploadId",d,h),g.consumable.consume(u.viewItem,{attributes:["data-ck-upload-id"]}),p&&p.data&&g.writer.setAttribute("uploadStatus",p.status,h))},{priority:"low"})),this.listenTo(e.editing.view.document,"clipboardInput",(c,m)=>{if(pi(m.dataTransfer))return;const u=Array.from(m.dataTransfer.files).filter(d=>d?r.test(d.type):!1);if(!u.length)return;if(c.stop(),e.model.change(d=>{m.targetRanges&&d.setSelection(m.targetRanges.map(h=>e.editing.mapper.toModelRange(h))),e.execute("uploadImage",{file:u})}),!e.commands.get("uploadImage").isAccessAllowed){const d=e.plugins.get("Notification"),h=e.locale.t;d.showWarning(h("You have no image upload permissions."),{namespace:"image"})}}),this.listenTo(s,"inputTransformation",(c,m)=>{const u=Array.from(e.editing.view.createRangeIn(m.content)).map(d=>d.item).filter(d=>ii(a,d)&&!d.getAttribute("uploadProcessed")).map(d=>({promise:ti(d),imageElement:d}));if(!u.length)return;const g=new H(e.editing.view.document);for(const d of u){g.setAttribute("uploadProcessed",!0,d.imageElement);const h=n.createLoader(d.promise);h&&(g.setAttribute("src","",d.imageElement),g.setAttribute("uploadId",h.id,d.imageElement))}}),e.editing.view.document.on("dragover",(c,m)=>{m.preventDefault()}),t.on("change",()=>{const c=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),m=new Set;for(const u of c)if(u.type=="insert"&&u.name!="$text"){const g=u.position.nodeAfter,d=u.position.root.rootName=="$graveyard";for(const h of Ii(e,g)){const p=h.getAttribute("uploadId"),y=h.getAttribute("uploadStatus");if(!p||y=="complete")continue;const v=n.loaders.get(p);if(!v){!d&&this._uploadedImages.has(p)&&e.model.enqueueChange({isUndoable:!1},C=>{C.setAttribute("uploadStatus","complete",h),this.fire("uploadComplete",{data:this._uploadedImages.get(p),imageElement:h})});continue}d?m.has(p)||Array.from(this._uploadImageElements.get(p)).every(V=>V.root.rootName=="$graveyard")&&v.abort():(m.add(p),this._uploadImageElements.has(p)?this._uploadImageElements.get(p).add(h):this._uploadImageElements.set(p,new Set([h])),v.status=="idle"&&this._readAndUpload(v))}}}),this.on("uploadComplete",(c,{imageElement:m,data:u})=>{const g=u.urls?u.urls:u;this.editor.model.change(d=>{d.setAttribute("src",g.default,m),this._parseAndSetSrcsetAttributeOnImage(g,m,d),a.setImageNaturalSizeAttributes(m)})},{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,i=t.model,n=t.locale.t,a=t.plugins.get(E),s=t.plugins.get(se),r=t.plugins.get("ImageUtils"),l=this._uploadImageElements;return i.enqueueChange({isUndoable:!1},m=>{const u=l.get(e.id);for(const g of u)m.setAttribute("uploadStatus","reading",g)}),e.read().then(()=>{const m=e.upload();t.ui&&t.ui.ariaLiveAnnouncer.announce(n("Uploading image"));for(const u of l.get(e.id)){if(rt.isSafari){const g=t.editing.mapper.toViewElement(u),d=r.findViewImgElement(g);t.editing.view.once("render",()=>{if(!d.parent)return;const h=t.editing.view.domConverter.mapViewToDom(d.parent);if(!h)return;const p=h.style.display;h.style.display="none",h._ckHack=h.offsetHeight,h.style.display=p})}i.enqueueChange({isUndoable:!1},g=>{g.setAttribute("uploadStatus","uploading",u)})}return m}).then(m=>{i.enqueueChange({isUndoable:!1},u=>{for(const g of l.get(e.id))u.setAttribute("uploadStatus","complete",g),this.fire("uploadComplete",{data:m,imageElement:g});t.ui&&t.ui.ariaLiveAnnouncer.announce(n("Image upload complete")),this._uploadedImages.set(e.id,m)}),c()}).catch(m=>{if(t.ui&&t.ui.ariaLiveAnnouncer.announce(n("Error during image upload")),e.status!=="error"&&e.status!=="aborted")throw m;e.status=="error"&&m&&s.showWarning(m,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange({isUndoable:!1},u=>{for(const g of l.get(e.id))g.root.rootName!=="$graveyard"&&u.remove(g)}),c()});function c(){i.enqueueChange({isUndoable:!1},m=>{for(const u of l.get(e.id))m.removeAttribute("uploadId",u),m.removeAttribute("uploadStatus",u);l.delete(e.id)}),a.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const a=Object.keys(e).filter(s=>{const r=parseInt(s,10);if(!isNaN(r))return n=Math.max(n,r),!0}).map(s=>`${e[s]} ${s}w`).join(", ");if(a!=""){const s={srcset:a};!t.hasAttribute("width")&&!t.hasAttribute("height")&&(s.width=n),i.setAttributes(s,t)}}_registerConverters(e){const{conversion:t,plugins:i}=this.editor,n=i.get(E),a=i.get(I);t.for("dataDowncast").add(s=>{s.on(`attribute:uploadId:${e}`,(r,l,c)=>{if(!c.consumable.test(l.item,r.name))return;const m=n.loaders.get(l.attributeNewValue);if(!m||!m.data)return null;const u=c.mapper.toViewElement(l.item),g=a.findViewImgElement(u);g&&(c.consumable.consume(l.item,r.name),c.writer.setAttribute("data-ck-upload-id",m.id,g))})})}}function pi(o){return Array.from(o.types).includes("text/html")&&o.getData("text/html")!==""}function Ii(o,e){const t=o.plugins.get("ImageUtils");return Array.from(o.model.createRangeOn(e)).filter(i=>t.isImage(i.item)).map(i=>i.item)}class bi extends f{static get pluginName(){return"ImageUpload"}static get isOfficialPlugin(){return!0}static get requires(){return[fi,oi,ai]}}class wi extends P{urlInputView;keystrokes;constructor(e){super(e),this.set("imageURLInputValue",""),this.set("isImageSelected",!1),this.set("isEnabled",!0),this.keystrokes=new R,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(),O({view:this}),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.keystrokes.destroy()}_createUrlInputView(){const e=this.locale,t=e.t,i=new Y(e,ve);return i.bind("label").to(this,"isImageSelected",n=>t(n?"Update image URL":"Insert image via URL")),i.bind("isEnabled").to(this),i.fieldView.inputMode="url",i.fieldView.placeholder="https://example.com/image.png",i.fieldView.bind("value").to(this,"imageURLInputValue",n=>n||""),i.fieldView.on("input",()=>{this.imageURLInputValue=i.fieldView.element.value.trim()}),i}focus(){this.urlInputView.focus()}}class _i extends f{_imageInsertUI;_formView;static get pluginName(){return"ImageInsertViaUrlUI"}static get isOfficialPlugin(){return!0}static get requires(){return[U,pt]}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=Ut,t.on("execute",()=>{this._showModal()}),t}_createToolbarButton(){const e=this.editor.locale.t,t=this._createInsertUrlButton(b);return t.tooltip=!0,t.bind("label").to(this._imageInsertUI,"isImageSelected",i=>e(i?"Update image URL":"Insert image via URL")),t}_createDropdownButton(){const e=this.editor.locale.t,t=this._createInsertUrlButton(b);return t.withText=!0,t.bind("label").to(this._imageInsertUI,"isImageSelected",i=>e(i?"Update image URL":"Insert via URL")),t}_createMenuBarButton(e){const t=this.editor.locale.t,i=this._createInsertUrlButton(It);switch(i.withText=!0,e){case"standalone":i.label=t("Image via URL");break;case"insertOnly":i.label=t("Image");break;case"insertNested":i.label=t("Via URL");break}return i}_createInsertUrlView(){const e=this.editor,t=e.locale,i=e.commands.get("replaceImageSource"),n=e.commands.get("insertImage"),a=new wi(t);return a.bind("isImageSelected").to(this._imageInsertUI),a.bind("isEnabled").toMany([n,i],"isEnabled",(...s)=>s.some(r=>r)),a}_showModal(){const e=this.editor,i=e.locale.t,n=e.plugins.get("Dialog");this._formView||(this._formView=this._createInsertUrlView(),this._formView.on("submit",()=>this._handleSave()));const a=e.commands.get("replaceImageSource");this._formView.imageURLInputValue=a.value||"",n.show({id:"insertImageViaUrl",title:i("Image via URL"),isModal:!0,content:this._formView,actionButtons:[{label:i("Cancel"),withText:!0,onExecute:()=>n.hide()},{label:this._imageInsertUI.isImageSelected?i("Save"):i("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 vi extends f{static get pluginName(){return"ImageInsertViaUrl"}static get isOfficialPlugin(){return!0}static get requires(){return[_i,U]}}class ln extends f{static get pluginName(){return"ImageInsert"}static get isOfficialPlugin(){return!0}static get requires(){return[bi,vi,U]}}class yi extends _{refresh(){const e=this.editor,i=e.plugins.get("ImageUtils").getClosestSelectedImageElement(e.model.document.selection);this.isEnabled=!!i,!i||!i.hasAttribute("resizedWidth")?this.value=null:this.value={width:i.getAttribute("resizedWidth"),height:null}}execute(e){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils"),a=n.getClosestSelectedImageElement(i.document.selection);this.value={width:e.width,height:null},a&&i.change(s=>{s.setAttribute("resizedWidth",e.width,a),s.removeAttribute("resizedHeight",a),n.setImageNaturalSizeAttributes(a)})}}class qe extends f{static get requires(){return[I]}static get pluginName(){return"ImageResizeEditing"}static get licenseFeatureCode(){return"IR"}static get isOfficialPlugin(){return!0}static get isPremiumPlugin(){return!0}constructor(e){super(e),e.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:custom",value:"custom",icon:"custom"},{name:"resizeImage:25",value:"25",icon:"small"},{name:"resizeImage:50",value:"50",icon:"medium"},{name:"resizeImage:75",value:"75",icon:"large"}]})}init(){const e=this.editor,t=new yi(e);this._registerConverters("imageBlock"),this._registerConverters("imageInline"),e.commands.add("resizeImage",t),e.commands.add("imageResize",t)}afterInit(){this._registerSchema()}_registerSchema(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&(e.extend("imageBlock",{allowAttributes:["resizedWidth","resizedHeight"]}),e.setAttributeProperties("resizedWidth",{isFormatting:!0}),e.setAttributeProperties("resizedHeight",{isFormatting:!0})),this.editor.plugins.has("ImageInlineEditing")&&(e.extend("imageInline",{allowAttributes:["resizedWidth","resizedHeight"]}),e.setAttributeProperties("resizedWidth",{isFormatting:!0}),e.setAttributeProperties("resizedHeight",{isFormatting:!0}))}_registerConverters(e){const t=this.editor,i=t.plugins.get("ImageUtils");t.conversion.for("downcast").add(n=>n.on(`attribute:resizedWidth:${e}`,(a,s,r)=>{if(!r.consumable.consume(s.item,a.name))return;const l=r.writer,c=r.mapper.toViewElement(s.item);s.attributeNewValue!==null?(l.setStyle("width",s.attributeNewValue,c),l.addClass("image_resized",c)):(l.removeStyle("width",c),l.removeClass("image_resized",c))})),t.conversion.for("dataDowncast").attributeToAttribute({model:{name:e,key:"resizedHeight"},view:n=>({key:"style",value:{height:n}})}),t.conversion.for("editingDowncast").add(n=>n.on(`attribute:resizedHeight:${e}`,(a,s,r)=>{if(!r.consumable.consume(s.item,a.name))return;const l=r.writer,c=r.mapper.toViewElement(s.item),m=e==="imageInline"?i.findViewImgElement(c):c;s.attributeNewValue!==null?l.setStyle("height",s.attributeNewValue,m):l.removeStyle("height",m)})),t.conversion.for("upcast").attributeToAttribute({view:{name:e==="imageBlock"?"figure":"img",styles:{width:/.+/}},model:{key:"resizedWidth",value:n=>T(n)?null:n.getStyle("width")}}),t.conversion.for("upcast").attributeToAttribute({view:{name:e==="imageBlock"?"figure":"img",styles:{height:/.+/}},model:{key:"resizedHeight",value:n=>T(n)?null:n.getStyle("height")}}),t.conversion.for("upcast").add(n=>{n.on(`element:${e==="imageBlock"?"figure":"img"}`,(a,s,r)=>{r.consumable.consume(s.viewItem,{classes:["image_resized"]})})})}}const L={small:xt,medium:Tt,large:At,custom:Bt,original:Vt};class Ei extends f{static get requires(){return[qe]}static get pluginName(){return"ImageResizeButtons"}static get isOfficialPlugin(){return!0}_resizeUnit;constructor(e){super(e),this._resizeUnit=e.config.get("image.resizeUnit")}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),i=e.commands.get("resizeImage");this.bind("isEnabled").to(i);for(const n of t)this._registerImageResizeButton(n);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:i,value:n,icon:a}=e;t.ui.componentFactory.add(i,s=>{const r=new b(s),l=t.commands.get("resizeImage"),c=this._getOptionLabelValue(e,!0);if(!L[a])throw new ot("imageresizebuttons-missing-icon",t,e);if(r.set({label:c,icon:L[a],tooltip:c,isToggleable:!0}),r.bind("isEnabled").to(this),t.plugins.has("ImageCustomResizeUI")&&S(e)){const m=t.plugins.get("ImageCustomResizeUI");this.listenTo(r,"execute",()=>{m._showForm(this._resizeUnit)})}else{const m=n?n+this._resizeUnit:null;r.bind("isOn").to(l,"value",l,"isEnabled",q(m)),this.listenTo(r,"execute",()=>{t.execute("resizeImage",{width:m})})}return r})}_registerImageResizeDropdown(e){const t=this.editor,i=t.t,n=e.find(s=>!s.value),a=s=>{const r=t.commands.get("resizeImage"),l=J(s,yt),c=l.buttonView,m=i("Resize image");return c.set({tooltip:m,commandValue:n.value,icon:L.medium,isToggleable:!0,label:this._getOptionLabelValue(n),withText:!0,class:"ck-resize-image-button",ariaLabel:m,ariaLabelledBy:void 0}),c.bind("label").to(r,"value",u=>u&&u.width?u.width:this._getOptionLabelValue(n)),l.bind("isEnabled").to(this),Et(l,()=>this._getResizeDropdownListItemDefinitions(e,r),{ariaLabel:i("Image resize list"),role:"menu"}),this.listenTo(l,"execute",u=>{"onClick"in u.source?u.source.onClick():(t.execute(u.source.commandName,{width:u.source.commandValue}),t.editing.view.focus())}),l};t.ui.componentFactory.add("resizeImage",a),t.ui.componentFactory.add("imageResize",a)}_getOptionLabelValue(e,t=!1){const i=this.editor.t;return e.label?e.label:t?S(e)?i("Custom image size"):e.value?i("Resize image to %0",e.value+this._resizeUnit):i("Resize image to the original size"):S(e)?i("Custom"):e.value?e.value+this._resizeUnit:i("Original")}_getResizeDropdownListItemDefinitions(e,t){const{editor:i}=this,n=new at,a=e.map(s=>S(s)?{...s,valueWithUnits:"custom"}:s.value?{...s,valueWithUnits:`${s.value}${this._resizeUnit}`}:{...s,valueWithUnits:null});for(const s of a){let r=null;if(i.plugins.has("ImageCustomResizeUI")&&S(s)){const l=i.plugins.get("ImageCustomResizeUI");r={type:"button",model:new ne({label:this._getOptionLabelValue(s),role:"menuitemradio",withText:!0,icon:null,onClick:()=>{l._showForm(this._resizeUnit)}})};const c=Object.values(a).map(m=>m.valueWithUnits);r.model.bind("isOn").to(t,"value",t,"isEnabled",Ci(c))}else r={type:"button",model:new ne({commandName:"resizeImage",commandValue:s.valueWithUnits,label:this._getOptionLabelValue(s),role:"menuitemradio",withText:!0,icon:null})},r.model.bind("isOn").to(t,"value",t,"isEnabled",q(s.valueWithUnits));r.model.bind("isEnabled").to(t,"isEnabled"),n.add(r)}return n}}function S(o){return o.value==="custom"}function q(o){return(e,t)=>{const i=e;return i===void 0||!t?!1:o===null&&i===o?!0:i!==null&&i.width===o}}function Ci(o){return(e,t)=>!o.some(i=>q(i)(e,t))}const ki="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",D="image_resized";class Si extends f{static get requires(){return[F,I]}static get pluginName(){return"ImageResizeHandles"}static get isOfficialPlugin(){return!0}init(){const e=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(e),this._setupResizerCreator()}_setupResizerCreator(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils");t.addObserver(te),this.listenTo(t.document,"imageLoaded",(n,a)=>{if(!a.target.matches(ki))return;const s=e.editing.view.domConverter,r=s.domToView(a.target),l=i.getImageWidgetFromImageView(r);let c=this.editor.plugins.get(F).getResizerByViewElement(l);if(c){c.redraw();return}const m=e.editing.mapper,u=m.toModelElement(l);c=e.plugins.get(F).attachTo({unit:e.config.get("image.resizeUnit"),modelElement:u,viewElement:l,editor:e,getHandleHost(g){return g.querySelector("img")},getResizeHost(){return s.mapViewToDom(m.toViewElement(u))},isCentered(){return u.getAttribute("imageStyle")=="alignCenter"},onCommit(g){t.change(d=>{d.removeClass(D,l)}),e.execute("resizeImage",{width:g})}}),c.on("updateSize",()=>{l.hasClass(D)||t.change(d=>{d.addClass(D,l)});const g=u.name==="imageInline"?r:l;g.getStyle("height")&&t.change(d=>{d.removeStyle("height",g)})}),c.bind("isEnabled").to(this)})}}function $e(o){if(!o)return null;const[,e,t]=o.trim().match(/([.,\d]+)(%|px)$/)||[],i=Number.parseFloat(e);return Number.isNaN(i)?null:{value:i,unit:t}}function He(o,e,t){return t==="px"?{value:e.value,unit:"px"}:{value:e.value/o*100,unit:"%"}}function Ge(o){const{editing:e}=o,i=o.plugins.get("ImageUtils").getClosestSelectedImageElement(o.model.document.selection);if(!i)return null;const n=e.mapper.toViewElement(i),a=e.view.domConverter.mapViewToDom(n);return{model:i,view:n,dom:a}}function Ui(o,e){const t=Ge(o);if(!t)return null;const i=$e(t.model.getAttribute("resizedWidth")||null);if(!i)return null;if(i.unit===e)return i;const n=pe(t.dom),a={value:new lt(t.dom).width};return He(n,a,e)}class Vi extends P{focusTracker;keystrokes;unit;backButtonView;saveButtonView;labeledInput;children;_focusables;_focusCycler;_validators;constructor(e,t,i){super(e),this.focusTracker=new K,this.keystrokes=new R,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 ye(e,{children:[this.labeledInput,this.saveButtonView],class:["ck-form__row_with-submit","ck-form__row_large-top-padding"]})),this._focusables=new Z,this._validators=i,this.keystrokes.set("Esc",(n,a)=>{this.fire("cancel"),a()}),this._focusCycler=new X({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(),O({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 b(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 b(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 Y(this.locale,Ct);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 Bi(o,e){const t=Ge(o);if(!t)return null;const i=pe(t.dom),n=$e(window.getComputedStyle(t.dom).minWidth)||{value:1},a=Math.max(.1,He(i,n,e).value);return{unit:e,lower:a,upper:e==="px"?i:100}}class Ai extends f{_balloon;_form;static get requires(){return[be]}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(we(Vi))(t.locale,e,Ti(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)}),_e({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,i=this._form.labeledInput;this._form.disableCssTransitions(),this._form.resetFormStatus(),this._isInBalloon||this._balloon.add({view:this._form,position:ee(t)});const n=Ui(t,e),a=n?n.value.toFixed(1):"",s=Bi(t,e);i.fieldView.value=i.fieldView.element.value=a,s&&Object.assign(i.fieldView,{min:s.lower.toFixed(1),max:Math.ceil(s.upper).toFixed(1)}),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e=!1){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return!!this._balloon&&this._balloon.visibleView===this._form}get _isInBalloon(){return!!this._balloon&&this._balloon.hasView(this._form)}}function Ti(o){const e=o.t;return[t=>{if(t.rawSize.trim()==="")return e("The value must not be empty.");if(t.parsedSize===null)return e("The value should be a plain number.")}]}class cn extends f{static get requires(){return[qe,Si,Ai,Ei]}static get pluginName(){return"ImageResize"}static get isOfficialPlugin(){return!0}}class xi extends _{_defaultStyles;_styles;constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map(i=>{if(i.isDefault)for(const n of i.modelElements)this._defaultStyles[n]=i.name;return[i.name,i]}))}refresh(){const i=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!i,this.isEnabled?i.hasAttribute("imageStyle")?this.value=i.getAttribute("imageStyle"):this.value=this._defaultStyles[i.name]:this.value=!1}execute(e={}){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils");i.change(a=>{const s=e.value,{setImageSizes:r=!0}=e;let l=n.getClosestSelectedImageElement(i.document.selection);s&&this.shouldConvertImageType(s,l)&&(this.editor.execute(n.isBlockImage(l)?"imageTypeInline":"imageTypeBlock",{setImageSizes:r}),l=n.getClosestSelectedImageElement(i.document.selection)),!s||this._styles.get(s).isDefault?a.removeAttribute("imageStyle",l):a.setAttribute("imageStyle",s,l),r&&n.setImageNaturalSizeAttributes(l)})}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const M={get inline(){return{name:"inline",title:"In line",icon:Ce,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:ke,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:Ue,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:Se,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"}}},zi={full:Pt,left:Ue,right:Se,center:j,inlineLeft:ke,inlineRight:W,inline:Ce},Ri=[{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 Pi(o){return(o.configuredStyles.options||[]).map(i=>Fi(i)).filter(i=>Li(i,o))}function Oi(o,e){return o&&e?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:o?{options:["block","side"]}:e?{options:["inline","alignLeft","alignRight"]}:{}}function Ni(o){return o.has("ImageBlockEditing")&&o.has("ImageInlineEditing")?[...Ri]:[]}function Fi(o){return typeof o=="string"?M[o]?o={...M[o]}:o={name:o}:o=Di(M[o.name],o),typeof o.icon=="string"&&(o.icon=zi[o.icon]||o.icon),o}function Li(o,{isBlockPluginLoaded:e,isInlinePluginLoaded:t}){const{modelElements:i,name:n}=o;if(!i||!i.length||!n)return Ke({style:o}),!1;{const a=[e?"imageBlock":null,t?"imageInline":null];if(!i.some(s=>a.includes(s)))return w("image-style-missing-dependency",{style:o,missingPlugins:i.map(s=>s==="imageBlock"?"ImageBlockEditing":"ImageInlineEditing")}),!1}return!0}function Di(o,e){const t={...e};for(const i in o)Object.prototype.hasOwnProperty.call(e,i)||(t[i]=o[i]);return t}function Ke(o){w("image-style-configuration-definition-invalid",o)}const z={normalizeStyles:Pi,getDefaultStylesConfiguration:Oi,getDefaultDropdownDefinitions:Ni,warnInvalidStyle:Ke};function Mi(o){return(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=me(t.attributeNewValue,o),a=me(t.attributeOldValue,o),s=i.mapper.toViewElement(t.item),r=i.writer;a&&r.removeClass(a.className,s),n&&r.addClass(n.className,s)}}function Wi(o){const e={imageInline:o.filter(t=>!t.isDefault&&t.modelElements.includes("imageInline")),imageBlock:o.filter(t=>!t.isDefault&&t.modelElements.includes("imageBlock"))};return(t,i,n)=>{if(!i.modelRange)return;const a=i.viewItem,s=G(i.modelRange.getItems());if(s&&n.schema.checkAttribute(s,"imageStyle"))for(const r of e[s.name])n.consumable.consume(a,{classes:r.className})&&n.writer.setAttribute("imageStyle",r.name,s)}}function me(o,e){for(const t of e)if(t.name===o)return t}class Je extends f{static get pluginName(){return"ImageStyleEditing"}static get isOfficialPlugin(){return!0}static get requires(){return[I]}normalizedStyles;init(){const e=this.editor,t=e.plugins.has("ImageBlockEditing"),i=e.plugins.has("ImageInlineEditing");e.config.define("image.styles",z.getDefaultStylesConfiguration(t,i)),this.normalizedStyles=z.normalizeStyles({configuredStyles:e.config.get("image.styles"),isBlockPluginLoaded:t,isInlinePluginLoaded:i}),this._setupConversion(t,i),this._setupPostFixer(),e.commands.add("imageStyle",new xi(e,this.normalizedStyles))}_setupConversion(e,t){const i=this.editor,n=i.model.schema,a=Mi(this.normalizedStyles),s=Wi(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",a),i.data.downcastDispatcher.on("attribute:imageStyle",a),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),n.setAttributeProperties("imageStyle",{isFormatting:!0}),i.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),n.setAttributeProperties("imageStyle",{isFormatting:!0}),i.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,i=e.plugins.get(I),n=new Map(this.normalizedStyles.map(a=>[a.name,a]));t.registerPostFixer(a=>{let s=!1;for(const r of t.differ.getChanges())if(r.type=="insert"||r.type=="attribute"&&r.attributeKey=="imageStyle"){let l=r.type=="insert"?r.position.nodeAfter:r.range.start.nodeAfter;if(l&&l.is("element","paragraph")&&l.childCount>0&&(l=l.getChild(0)),!i.isImage(l))continue;const c=l.getAttribute("imageStyle");if(!c)continue;const m=n.get(c);(!m||!m.modelElements.includes(l.name))&&(a.removeAttribute("imageStyle",l),s=!0)}return s})}}class ji extends f{static get requires(){return[Je]}static get pluginName(){return"ImageStyleUI"}static get isOfficialPlugin(){return!0}get localizedDefaultStylesTitles(){const e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){const e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=e.get("ImageStyleEditing"),n=ue(i.normalizedStyles,this.localizedDefaultStylesTitles);for(const s of n)this._createButton(s);const a=ue([...t.filter(Be),...z.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const s of a)this._createDropdown(s,n)}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,n=>{let a;const{defaultItem:s,items:r,title:l}=e,c=r.filter(d=>t.find(({name:h})=>ge(h)===d)).map(d=>{const h=i.create(d);return d===s&&(a=h),h});r.length!==c.length&&z.warnInvalidStyle({dropdown:e});const m=J(n,Ie),u=m.buttonView,g=u.arrowView;return bt(m,c,{enableActiveItemFocusOnDropdownOpen:!0}),u.set({label:de(l,a.label),class:null,tooltip:!0}),g.unbind("label"),g.set({label:l}),u.bind("icon").toMany(c,"isOn",(...d)=>{const h=d.findIndex(k);return h<0?a.icon:c[h].icon}),u.bind("label").toMany(c,"isOn",(...d)=>{const h=d.findIndex(k);return de(l,h<0?a.label:c[h].label)}),u.bind("isOn").toMany(c,"isOn",(...d)=>d.some(k)),u.bind("class").toMany(c,"isOn",(...d)=>d.some(k)?"ck-splitbutton_flatten":void 0),u.on("execute",()=>{c.some(({isOn:d})=>d)?m.isOpen=!m.isOpen:a.fire("execute")}),m.bind("isEnabled").toMany(c,"isEnabled",(...d)=>d.some(k)),this.listenTo(m,"execute",()=>{this.editor.editing.view.focus()}),m})}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(ge(t),i=>{const n=this.editor.commands.get("imageStyle"),a=new b(i);return a.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),a.bind("isEnabled").to(n,"isEnabled"),a.bind("isOn").to(n,"value",s=>s===t),a.on("execute",this._executeCommand.bind(this,t)),a})}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function ue(o,e){for(const t of o)e[t.title]&&(t.title=e[t.title]);return o}function ge(o){return`imageStyle:${o}`}function de(o,e){return(o?o+": ":"")+e}class mn extends f{static get requires(){return[Je,ji]}static get pluginName(){return"ImageStyle"}static get isOfficialPlugin(){return!0}}class un extends f{static get requires(){return[ie,I]}static get pluginName(){return"ImageToolbar"}static get isOfficialPlugin(){return!0}afterInit(){const e=this.editor,t=e.t,i=e.plugins.get(ie),n=e.plugins.get("ImageUtils");i.register("image",{ariaLabel:t("Image toolbar"),items:qi(e.config.get("image.toolbar")||[]),getRelatedElement:a=>n.getClosestSelectedImageWidget(a)})}}function qi(o){return o.map(e=>Be(e)?e.name:e)}export{sn as AutoImage,on as ImageBlock,Fe as ImageBlockEditing,rn as ImageCaption,Qt as ImageCaptionEditing,ei as ImageCaptionUI,Le as ImageCaptionUtils,Ai as ImageCustomResizeUI,Re as ImageEditing,an as ImageInline,Xt as ImageInlineEditing,ln as ImageInsert,U as ImageInsertUI,vi as ImageInsertViaUrl,_i as ImageInsertViaUrlUI,te as ImageLoadObserver,Ne as ImagePlaceholder,cn as ImageResize,Ei as ImageResizeButtons,qe as ImageResizeEditing,Si as ImageResizeHandles,Pe as ImageSizeAttributes,mn as ImageStyle,xi as ImageStyleCommand,Je as ImageStyleEditing,ji as ImageStyleUI,xe as ImageTextAlternative,Wt as ImageTextAlternativeCommand,jt as ImageTextAlternativeEditing,Ht as ImageTextAlternativeUI,un as ImageToolbar,Oe as ImageTypeCommand,bi as ImageUpload,fi as ImageUploadEditing,ai as ImageUploadProgress,oi as ImageUploadUI,I as ImageUtils,Kt as InsertImageCommand,Jt as ReplaceImageSourceCommand,yi as ResizeImageCommand,Yt as ToggleImageCaptionCommand,hi as UploadImageCommand,Ri as _IMAGE_DEFAULT_DROPDOWN_DEFINITIONS,zi as _IMAGE_DEFAULT_ICONS,M as _IMAGE_DEFAULT_OPTIONS,Vi as _ImageCustomResizeFormView,Zt as _ImageInsertFormView,wi as _ImageInsertUrlView,z as _ImageStyleUtils,qt as _ImageTextAlternativeFormView,T as _checkIfImageWidthAndHeightStylesAreBothSet,ae as _createBlockImageViewElement,Ot as _createInlineImageViewElement,Q as _determineImageTypeForInsertionAtSelection,x as _downcastImageAttribute,ze as _downcastImageSrcsetAttribute,ti as _fetchLocalImage,ee as _getImageBalloonPositionData,A as _getImageSizeValueIfInPx,Ae as _getImageViewElementMatcher,Ge as _getSelectedImageEditorNodes,Bi as _getSelectedImagePossibleResizeRange,Ui as _getSelectedImageWidthInUnits,ii as _isLocalImage,Mi as _modelToViewImageStyleAttribute,$t as _repositionImageContextualBalloon,He as _tryCastImageDimensionsToUnit,$e as _tryParseImageDimensionWithUnit,Gt as _upcastImageFigure,Wi as _viewToModelImageStyleAttribute,De as createImageTypeRegExp,pi as isHtmlInDataTransfer};
@@ -1 +0,0 @@
1
- import{Plugin as h,Command as M}from"../../../../../@ckeditor_ckeditor5-core@47.3.0/node_modules/@ckeditor/ckeditor5-core/dist/index.js";import{Widget as T,toWidget as P,findOptimalInsertionRange as k}from"../../../../../@ckeditor_ckeditor5-widget@47.3.0/node_modules/@ckeditor/ckeditor5-widget/dist/index.js";import{global as w,first as x,logWarning as R,toArray as D,FocusTracker as C,KeystrokeHandler as F}from"../../../../../@ckeditor_ckeditor5-utils@47.3.0/node_modules/@ckeditor/ckeditor5-utils/dist/index.js";import{Dialog as U,ButtonView as S,MenuBarMenuListItemButtonView as L,CssTransitionDisablerMixin as B,IconView as A,Template as N,View as O,submitHandler as $,LabeledFieldView as W,createLabeledInputText as H}from"../../../../../@ckeditor_ckeditor5-ui@47.3.0/node_modules/@ckeditor/ckeditor5-ui/dist/index.js";import{IconMedia as q,IconMediaPlaceholder as j}from"../../../../../@ckeditor_ckeditor5-icons@47.3.0/node_modules/@ckeditor/ckeditor5-icons/dist/index.js";import{ModelLivePosition as f,ModelLiveRange as z}from"../../../../../@ckeditor_ckeditor5-engine@47.3.0/node_modules/@ckeditor/ckeditor5-engine/dist/index.js";import{Clipboard as G}from"../../../../../@ckeditor_ckeditor5-clipboard@47.3.0/node_modules/@ckeditor/ckeditor5-clipboard/dist/index.js";import{Delete as b}from"../../../../../@ckeditor_ckeditor5-typing@47.3.0/node_modules/@ckeditor/ckeditor5-typing/dist/index.js";import{Undo as K}from"../../../../../@ckeditor_ckeditor5-undo@47.3.0/node_modules/@ckeditor/ckeditor5-undo/dist/index.js";function _(n,e){const t=(i,o,r)=>{if(!r.consumable.consume(o.item,i.name))return;const a=o.attributeNewValue,s=r.writer,l=r.mapper.toViewElement(o.item),d=[...l.getChildren()].find(u=>u.getCustomProperty("media-content"));s.remove(d);const m=n.getMediaViewElement(s,a,e);s.insert(s.createPositionAt(l,0),m)};return i=>{i.on("attribute:url:media",t)}}function X(n,e,t){return e.setCustomProperty("media",!0,n),P(n,e,{label:t})}function v(n,e,t,i){return n.createContainerElement("figure",{class:"media"},[e.getMediaViewElement(n,t,i),n.createSlot()])}function E(n){const e=n.getSelectedElement();return e&&e.is("element","media")?e:null}function V(n,e,t,i){n.change(o=>{const r=o.createElement("media",{url:e});n.insertObject(r,t,null,{setSelection:"on",findOptimalPosition:i?"auto":void 0})})}class J extends M{refresh(){const e=this.editor.model,t=e.document.selection,i=E(t);this.value=i?i.getAttribute("url"):void 0,this.isEnabled=Y(t)||Q(t,e)}execute(e){const t=this.editor.model,i=t.document.selection,o=E(i);o?t.change(r=>{r.setAttribute("url",e,o)}):V(t,e,i,!0)}}function Q(n,e){let i=k(n,e).start.parent;return i.isEmpty&&!e.schema.isLimit(i)&&(i=i.parent),e.schema.checkChild(i,"media")}function Y(n){const e=n.getSelectedElement();return!!e&&e.name==="media"}const Z="0 0 64 42";class ee{locale;providerDefinitions;constructor(e,t){const i=t.providers,o=t.extraProviders||[],r=new Set(t.removeProviders),a=i.concat(o).filter(s=>{const l=s.name;return l?!r.has(l):(R("media-embed-no-provider-name",{provider:s}),!1)});this.locale=e,this.providerDefinitions=a}hasMedia(e){return!!this._getMedia(e)}getMediaViewElement(e,t,i){return this._getMedia(t).getViewElement(e,i)}_getMedia(e){if(!e)return new I(this.locale);e=e.trim();for(const t of this.providerDefinitions){const i=t.html,o=D(t.url);for(const r of o){const a=this._getUrlMatches(e,r);if(a)return new I(this.locale,e,a,i)}}return null}_getUrlMatches(e,t){let i=e.match(t);if(i)return i;let o=e.replace(/^https?:\/\//,"");return i=o.match(t),i||(o=o.replace(/^www\./,""),i=o.match(t),i)?i:null}}class I{url;_locale;_match;_previewRenderer;constructor(e,t,i,o){this.url=this._getValidUrl(t),this._locale=e,this._match=i,this._previewRenderer=o}getViewElement(e,t){const i={};let o;if(t.renderForEditingView||t.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(i["data-oembed-url"]=this.url),t.renderForEditingView&&(i.class="ck-media__wrapper");const r=this._getPreviewHtml(t);o=e.createRawElement("div",i,(a,s)=>{s.setContentOf(a,r)})}else this.url&&(i.url=this.url),o=e.createEmptyElement(t.elementName,i);return e.setCustomProperty("media-content",!0,o),o}_getPreviewHtml(e){return this._previewRenderer?this._previewRenderer(this._match):this.url&&e.renderForEditingView?this._getPlaceholderHtml():""}_getPlaceholderHtml(){const e=new A,t=this._locale.t;return e.content=j,e.viewBox=Z,new N({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[e]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url,"data-cke-tooltip-text":t("Open media in new tab")},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]}]}]}).render().outerHTML}_getValidUrl(e){return e?e.match(/^https?/)?e:"https://"+e:null}}class c extends h{static get pluginName(){return"MediaEmbedEditing"}static get isOfficialPlugin(){return!0}registry;constructor(e){super(e),e.config.define("mediaEmbed",{elementName:"oembed",providers:[{name:"dailymotion",url:[/^dailymotion\.com\/video\/(\w+)/,/^dai.ly\/(\w+)/],html:t=>`<div style="position: relative; padding-bottom: 100%; height: 0; "><iframe src="https://www.dailymotion.com/embed/video/${t[1]}" style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;" frameborder="0" width="480" height="270" allowfullscreen allow="autoplay"></iframe></div>`},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:t=>`<div style="position: relative; padding-bottom: 100%; height: 0; padding-bottom: 126%;"><iframe src="https://open.spotify.com/embed/${t[1]}" style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;" frameborder="0" allowtransparency="true" allow="encrypted-media"></iframe></div>`},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)(?:&t=(\d+))?/,/^(?:m\.)?youtube\.com\/shorts\/([\w-]+)(?:\?t=(\d+))?/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)(?:\?t=(\d+))?/,/^youtube\.com\/embed\/([\w-]+)(?:\?start=(\d+))?/,/^youtu\.be\/([\w-]+)(?:\?t=(\d+))?/],html:t=>{const i=t[1],o=t[2];return`<div style="position: relative; padding-bottom: 100%; height: 0; padding-bottom: 56.2493%;"><iframe src="https://www.youtube.com/embed/${i}${o?`?start=${o}`:""}" style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe></div>`}},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:t=>`<div style="position: relative; padding-bottom: 100%; height: 0; padding-bottom: 56.2493%;"><iframe src="https://player.vimeo.com/video/${t[1]}" style="position: absolute; width: 100%; height: 100%; top: 0; left: 0;" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>`},{name:"instagram",url:[/^instagram\.com\/p\/(\w+)/,/^instagram\.com\/reel\/(\w+)/]},{name:"twitter",url:[/^twitter\.com/,/^x\.com/]},{name:"googleMaps",url:[/^google\.com\/maps/,/^goo\.gl\/maps/,/^maps\.google\.com/,/^maps\.app\.goo\.gl/]},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new ee(e.locale,e.config.get("mediaEmbed"))}init(){const e=this.editor,t=e.model.schema,i=e.t,o=e.conversion,r=e.config.get("mediaEmbed.previewsInData"),a=e.config.get("mediaEmbed.elementName"),s=this.registry;e.commands.add("mediaEmbed",new J(e)),t.register("media",{inheritAllFrom:"$blockObject",allowAttributes:["url"]}),o.for("dataDowncast").elementToStructure({model:"media",view:(l,{writer:d})=>{const m=l.getAttribute("url");return v(d,s,m,{elementName:a,renderMediaPreview:!!m&&r})}}),o.for("dataDowncast").add(_(s,{elementName:a,renderMediaPreview:r})),o.for("editingDowncast").elementToStructure({model:"media",view:(l,{writer:d})=>{const m=l.getAttribute("url"),u=v(d,s,m,{elementName:a,renderForEditingView:!0});return X(u,d,i("media widget"))}}),o.for("editingDowncast").add(_(s,{elementName:a,renderForEditingView:!0})),o.for("upcast").elementToElement({view:l=>["oembed",a].includes(l.name)&&l.getAttribute("url")?{name:!0}:null,model:(l,{writer:d})=>{const m=l.getAttribute("url");return s.hasMedia(m)?d.createElement("media",{url:m}):null}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(l,{writer:d})=>{const m=l.getAttribute("data-oembed-url");return s.hasMedia(m)?d.createElement("media",{url:m}):null}}).add(l=>{const d=(m,u,g)=>{if(!g.consumable.consume(u.viewItem,{name:!0,classes:"media"}))return;const{modelRange:p,modelCursor:y}=g.convertChildren(u.viewItem,u.modelCursor);u.modelRange=p,u.modelCursor=y,x(p.getItems())||g.consumable.revert(u.viewItem,{name:!0,classes:"media"})};l.on("element:figure",d)})}}const te=/^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;class ie extends h{static get requires(){return[G,b,K]}static get pluginName(){return"AutoMediaEmbed"}static get isOfficialPlugin(){return!0}_timeoutId;_positionToInsert;constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document,i=e.plugins.get("ClipboardPipeline");this.listenTo(i,"inputTransformation",()=>{const r=t.selection.getFirstRange(),a=f.fromPosition(r.start);a.stickiness="toPrevious";const s=f.fromPosition(r.end);s.stickiness="toNext",t.once("change:data",()=>{this._embedMediaBetweenPositions(a,s),a.detach(),s.detach()},{priority:"high"})}),e.commands.get("undo").on("execute",()=>{this._timeoutId&&(w.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)},{priority:"high"})}_embedMediaBetweenPositions(e,t){const i=this.editor,o=i.plugins.get(c).registry,r=new z(e,t),a=r.getWalker({ignoreElementEnd:!0});let s="";for(const d of a)d.item.is("$textProxy")&&(s+=d.item.data);if(s=s.trim(),!s.match(te)){r.detach();return}if(!o.hasMedia(s)){r.detach();return}if(!i.commands.get("mediaEmbed").isEnabled){r.detach();return}this._positionToInsert=f.fromPosition(e),this._timeoutId=w.window.setTimeout(()=>{i.model.change(d=>{this._timeoutId=null,d.remove(r),r.detach();let m=null;this._positionToInsert.root.rootName!=="$graveyard"&&(m=this._positionToInsert),V(i.model,s,m,!1),this._positionToInsert.detach(),this._positionToInsert=null}),i.plugins.get(b).requestUndoOnBackspace()},100)}}class oe extends O{focusTracker;keystrokes;urlInputView;_validators;_urlInputViewInfoDefault;_urlInputViewInfoTip;constructor(e,t){super(t),this.focusTracker=new C,this.keystrokes=new F,this.set("mediaURLInputValue",""),this.urlInputView=this._createUrlInput(),this._validators=e,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[this.urlInputView]})}render(){super.render(),$({view:this}),this.focusTracker.add(this.urlInputView.element),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.urlInputView.focus()}get url(){return this.urlInputView.fieldView.element.value.trim()}set url(e){this.urlInputView.fieldView.value=e.trim()}isValid(){this.resetFormStatus();for(const e of this._validators){const t=e(this);if(t)return this.urlInputView.errorText=t,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const e=this.locale.t,t=new W(this.locale,H),i=t.fieldView;return this._urlInputViewInfoDefault=e("Paste the media URL in the input."),this._urlInputViewInfoTip=e("Tip: Paste the URL into the content to embed faster."),t.label=e("Media URL"),t.infoText=this._urlInputViewInfoDefault,i.inputMode="url",i.on("input",()=>{t.infoText=i.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault,this.mediaURLInputValue=i.element.value.trim()}),t}}class re extends h{static get requires(){return[c,U]}static get pluginName(){return"MediaEmbedUI"}static get isOfficialPlugin(){return!0}_formView;init(){const e=this.editor;e.ui.componentFactory.add("mediaEmbed",()=>{const t=this.editor.locale.t,i=this._createDialogButton(S);return i.tooltip=!0,i.label=t("Insert media"),i}),e.ui.componentFactory.add("menuBar:mediaEmbed",()=>{const t=this.editor.locale.t,i=this._createDialogButton(L);return i.label=t("Media"),i})}_createDialogButton(e){const t=this.editor,i=new e(t.locale),o=t.commands.get("mediaEmbed"),r=this.editor.plugins.get("Dialog");return i.icon=q,i.bind("isEnabled").to(o,"isEnabled"),i.on("execute",()=>{r.id==="mediaEmbed"?r.hide():this._showDialog()}),i}_showDialog(){const e=this.editor,t=e.plugins.get("Dialog"),i=e.commands.get("mediaEmbed"),o=e.locale.t,r=i.value!==void 0;if(!this._formView){const a=e.plugins.get(c).registry;this._formView=new(B(oe))(ne(e.t,a),e.locale),this._formView.on("submit",()=>this._handleSubmitForm())}t.show({id:"mediaEmbed",title:o("Media embed"),content:this._formView,isModal:!0,onShow:()=>{this._formView.url=i.value||"",this._formView.resetFormStatus(),this._formView.urlInputView.fieldView.select()},actionButtons:[{label:o("Cancel"),withText:!0,onExecute:()=>t.hide()},{label:o(r?"Save":"Insert"),class:"ck-button-action",withText:!0,onExecute:()=>this._handleSubmitForm()}]})}_handleSubmitForm(){const e=this.editor,t=e.plugins.get("Dialog");this._formView.isValid()&&(e.execute("mediaEmbed",this._formView.url),t.hide(),e.editing.view.focus())}}function ne(n,e){return[t=>{if(!t.url.length)return n("The URL must not be empty.")},t=>{if(!e.hasMedia(t.url))return n("This media URL is not supported.")}]}class pe extends h{static get requires(){return[c,re,ie,T]}static get pluginName(){return"MediaEmbed"}static get isOfficialPlugin(){return!0}}export{ie as AutoMediaEmbed,pe as MediaEmbed,J as MediaEmbedCommand,c as MediaEmbedEditing,re as MediaEmbedUI,ee as MediaRegistry,oe as _MediaFormView,v as _createMediaFigureElement,E as _getSelectedMediaModelWidget,V as _insertMedia,_ as _modelToViewUrlAttributeMediaConverter,X as _toMediaWidget};