@_sh/strapi-plugin-ckeditor 5.0.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 nshenderov
3
+ Copyright (c) 2025 nshenderov
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
package/README.md CHANGED
@@ -122,10 +122,25 @@ default to the Strapi admin's preferred language. If no preference is set, Engli
122
122
 
123
123
  > 💡 It is important to use the content styles on the publishing side of your application. Otherwise, the content will look different in the editor and for your end users. [Follow the documentation](https://ckeditor.com/docs/ckeditor5/latest/getting-started/setup/css.html#styling-the-published-content).
124
124
 
125
+ > To display content from external sources, such as images or videos, in your admin panel,
126
+ > you need to configure your `middlewares.js` file.
127
+ > [**Check the documentation for details.**](https://docs.strapi.io/dev-docs/configurations/middlewares#security)
128
+
125
129
  ## <a id="configuration"></a>⚙️ Configuration
126
130
 
127
- The plugin configuration must be defined on the front-end. The plugin provides a `setPluginConfig`
128
- function, which accepts a plugin configuration (`PluginConfig`) that can include an array of presets
131
+ The plugin configuration must be defined on the front-end.
132
+
133
+ The plugin provides a set of functions that allow you to modify the plugin's configuration:
134
+
135
+ ```ts
136
+ setPluginConfig(config);
137
+ getPluginPresets();
138
+ getPluginTheme();
139
+ ```
140
+
141
+ **setPluginConfig**
142
+
143
+ The function, accepts a plugin configuration (`PluginConfig`) that can include an array of presets
129
144
  and a theme object:
130
145
 
131
146
  ```ts
@@ -219,6 +234,28 @@ type Theme = {
219
234
  export type EditorStyles = string | Interpolation<object>[];
220
235
  ```
221
236
 
237
+ **getPluginPresets**
238
+
239
+ ```ts
240
+ function getPluginPresets(): {
241
+ [key: string]: Preset;
242
+ };
243
+ ```
244
+
245
+ Returns `presets` object.
246
+
247
+ - Each property name must match the corresponding preset's name.
248
+ - To extend or modify the options visible in the admin panel's content manager,
249
+ changes must be made before the admin panel's bootstrap lifecycle function.
250
+
251
+ **getPluginTheme**
252
+
253
+ ```ts
254
+ function getPluginTheme(): Theme;
255
+ ```
256
+
257
+ Returns `theme` object.
258
+
222
259
  **Default presets and theme**
223
260
 
224
261
  To simplify the process of defining a new preset, the plugin exports default presets and
@@ -351,7 +388,7 @@ export type EditorStyles = string | Interpolation<object>[];
351
388
  ### Configuration examples:
352
389
 
353
390
  <details>
354
- <summary>Adding a new preset [JS]</summary>
391
+ <summary>Setting a new set of presets [JS]</summary>
355
392
 
356
393
  ```js
357
394
  // src/admin/app.js
@@ -429,7 +466,7 @@ export default {
429
466
  </details>
430
467
 
431
468
  <details>
432
- <summary>Adding a new preset [TS]</summary>
469
+ <summary>Setting a new set of presets [TS]</summary>
433
470
 
434
471
  ```ts
435
472
  // src/admin/app.tsx
@@ -513,7 +550,7 @@ export default {
513
550
  </details>
514
551
 
515
552
  <details>
516
- <summary>Default presets modification [TS]</summary>
553
+ <summary>Default presets modification using setPluginConfig [TS]</summary>
517
554
 
518
555
  ```ts
519
556
  // src/admin/app.tsx
@@ -587,7 +624,67 @@ export default {
587
624
  </details>
588
625
 
589
626
  <details>
590
- <summary>Modifying theme [TS]</summary>
627
+ <summary>Default presets modification using getPluginPresets [TS]</summary>
628
+
629
+ ```ts
630
+ // src/admin/app.tsx
631
+
632
+ import { css } from 'styled-components';
633
+ import { getPluginPresets } from '@_sh/strapi-plugin-ckeditor';
634
+
635
+ export default {
636
+ register() {
637
+ const presets = getPluginPresets();
638
+
639
+ presets.defaultHtml.styles = css`
640
+ .ck {
641
+ color: red;
642
+ }
643
+ `;
644
+
645
+ presets.defaultHtml.editorConfig = {
646
+ ...presets.defaultHtml.editorConfig,
647
+ placeholder: 'Modified default HTML editor',
648
+ toolbar: [
649
+ 'heading',
650
+ '|',
651
+ 'bold',
652
+ 'italic',
653
+ 'link',
654
+ 'bulletedList',
655
+ 'numberedList',
656
+ '|',
657
+ 'strapiMediaLib',
658
+ 'insertTable',
659
+ '|',
660
+ 'undo',
661
+ 'redo',
662
+ ],
663
+ };
664
+
665
+ presets.defaultMarkdown = {
666
+ ...presets.defaultMarkdown,
667
+ description: 'Modified default Markdown editor',
668
+ styles: css`
669
+ .ck {
670
+ --ck-editor-max-width: 1500px;
671
+ --ck-editor-min-height: 700px;
672
+ --ck-editor-max-height: 700px;
673
+ }
674
+
675
+ .ck.ck-editor__main {
676
+ border: 3px dashed ${({ theme }) => theme.colors.warning500};
677
+ }
678
+ `,
679
+ };
680
+ },
681
+ };
682
+ ```
683
+
684
+ </details>
685
+
686
+ <details>
687
+ <summary>Modifying theme using setPluginConfig [TS]</summary>
591
688
 
592
689
  ```ts
593
690
  // src/admin/app.tsx
@@ -622,6 +719,36 @@ export default {
622
719
 
623
720
  </details>
624
721
 
722
+ <details>
723
+ <summary>Modifying theme using getPluginTheme [TS]</summary>
724
+
725
+ ```ts
726
+ // src/admin/app.tsx
727
+
728
+ import { css } from 'styled-components';
729
+ import { getPluginTheme } from '@_sh/strapi-plugin-ckeditor';
730
+
731
+ export default {
732
+ register() {
733
+ const theme = getPluginTheme();
734
+
735
+ theme.additional = css`
736
+ .ck {
737
+ --ck-editor-max-width: 1500px;
738
+ --ck-editor-min-height: 700px;
739
+ --ck-editor-max-height: 700px;
740
+ }
741
+
742
+ .ck.ck-editor__main {
743
+ border: 3px dashed ${({ theme }) => theme.colors.warning500};
744
+ }
745
+ `;
746
+ },
747
+ };
748
+ ```
749
+
750
+ </details>
751
+
625
752
  <details>
626
753
  <summary>Adding Timestamp plugin [JS]</summary>
627
754
 
@@ -673,10 +800,6 @@ export default {
673
800
 
674
801
  > 📌 It is highly recommended to explore [**the official CKEditor5 documentation**](https://ckeditor.com/docs/ckeditor5/latest/getting-started/setup/configuration.html).
675
802
 
676
- > 💡 To display content from external sources, such as images or videos, in your admin panel,
677
- > you need to configure your `middlewares.js` file.
678
- > [**Check the documentation for details.**](https://docs.strapi.io/dev-docs/configurations/middlewares#security)
679
-
680
803
  ## <a id="contributing"></a>🛠 Contributing
681
804
 
682
805
  Feel free to [fork the repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo)
@@ -6,7 +6,8 @@ import { useStrapiApp, useField } from "@strapi/strapi/admin";
6
6
  import { ClassicEditor } from "ckeditor5";
7
7
  import { CKEditor } from "@ckeditor/ckeditor5-react";
8
8
  import "ckeditor5/ckeditor5.css";
9
- import { g as getPluginConfig, p as prefixFileUrlWithBackendUrl, i as isImageResponsive } from "./index-Clyv4ZPF.mjs";
9
+ import { g as getPluginConfig, p as prefixFileUrlWithBackendUrl, i as isImageResponsive } from "./index-re_mQliQ.mjs";
10
+ import "sanitize-html";
10
11
  import { Collapse, Expand } from "@strapi/icons";
11
12
  const STORAGE_KEYS = {
12
13
  TOKEN: "jwtToken",
@@ -30,7 +30,8 @@ const admin = require("@strapi/strapi/admin");
30
30
  const ckeditor5 = require("ckeditor5");
31
31
  const ckeditor5React = require("@ckeditor/ckeditor5-react");
32
32
  require("ckeditor5/ckeditor5.css");
33
- const index = require("./index-CZRYkPJ8.js");
33
+ const index = require("./index-lgM3BQrm.js");
34
+ require("sanitize-html");
34
35
  const icons = require("@strapi/icons");
35
36
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
36
37
  const React__default = /* @__PURE__ */ _interopDefault(React);
@@ -28,7 +28,7 @@ const yup__namespace = /* @__PURE__ */ _interopNamespace(yup);
28
28
  const sanitizeHtml__namespace = /* @__PURE__ */ _interopNamespace(sanitizeHtml);
29
29
  const cloneDeep__default = /* @__PURE__ */ _interopDefault(cloneDeep);
30
30
  const name = "@_sh/strapi-plugin-ckeditor";
31
- const version = "5.0.1";
31
+ const version = "6.0.0";
32
32
  const description = "Integrates CKEditor 5 into your Strapi project as a fully customizable custom field. (Community Edition)";
33
33
  const keywords = [
34
34
  "strapi",
@@ -92,41 +92,40 @@ const scripts = {
92
92
  "release:info": "release-it --changelog"
93
93
  };
94
94
  const dependencies = {
95
- "@ckeditor/ckeditor5-react": "^9.4.0",
96
- "@strapi/design-system": "^2.0.0-rc.13",
97
- "@strapi/icons": "^2.0.0-rc.13",
98
- lodash: "^4.17.21",
99
- ckeditor5: "^44.1.0",
100
- "prop-types": "^15.8.1",
101
- "sanitize-html": "^2.13.1",
95
+ "@ckeditor/ckeditor5-react": "~9.5.0",
96
+ "@strapi/design-system": "2.0.0-rc.18",
97
+ "@strapi/icons": "2.0.0-rc.18",
98
+ ckeditor5: "~45.0.0",
99
+ lodash: "4.17.21",
100
+ "sanitize-html": "2.13.0",
102
101
  yup: "0.32.9"
103
102
  };
104
103
  const devDependencies = {
105
- "@release-it/conventional-changelog": "^8.0.1",
106
- "@strapi/sdk-plugin": "^5.2.7",
107
- "@strapi/strapi": "^5.0.0",
108
- "@strapi/typescript-utils": "^5.4.0",
104
+ "@release-it/conventional-changelog": "10.0.0",
105
+ "@strapi/sdk-plugin": "5.3.2",
106
+ "@strapi/strapi": "5.11.0",
107
+ "@strapi/typescript-utils": "5.11.0",
109
108
  "@types/react": "^18.3.12",
110
109
  "@types/react-dom": "^18.3.1",
111
- "@types/sanitize-html": "^2.13.0",
112
- "@typescript-eslint/eslint-plugin": "^7.0.0",
113
- "@typescript-eslint/parser": "^7.0.0",
114
- eslint: "^8.2.0",
115
- "eslint-config-airbnb": "^19.0.4",
116
- "eslint-config-airbnb-typescript": "^18.0.0",
117
- "eslint-config-prettier": "^9.1.0",
118
- "eslint-plugin-import": "^2.25.3",
119
- "eslint-plugin-jsx-a11y": "^6.10.2",
120
- "eslint-plugin-prettier": "^5.2.1",
121
- "eslint-plugin-react": "^7.28.0",
122
- "eslint-plugin-react-hooks": "^4.3.0",
110
+ "@types/sanitize-html": "2.13.0",
111
+ "@typescript-eslint/eslint-plugin": "7.0.0",
112
+ "@typescript-eslint/parser": "7.0.0",
113
+ eslint: "8.2.0",
114
+ "eslint-config-airbnb": "19.0.4",
115
+ "eslint-config-airbnb-typescript": "18.0.0",
116
+ "eslint-config-prettier": "9.1.0",
117
+ "eslint-plugin-import": "2.25.3",
118
+ "eslint-plugin-jsx-a11y": "6.10.2",
119
+ "eslint-plugin-prettier": "5.2.1",
120
+ "eslint-plugin-react": "7.28.0",
121
+ "eslint-plugin-react-hooks": "4.3.0",
123
122
  prettier: "3.4.0",
124
- react: "^18.3.1",
125
- "react-dom": "^18.3.1",
126
- "react-router-dom": "^6.26.2",
127
- "release-it": "^17.6.0",
128
- "styled-components": "^6.1.13",
129
- typescript: "^5.6.3"
123
+ react: "18.3.1",
124
+ "react-dom": "18.3.1",
125
+ "react-router-dom": "6.30.0",
126
+ "release-it": "18.1.2",
127
+ "styled-components": "6.1.15",
128
+ typescript: "5.6.3"
130
129
  };
131
130
  const peerDependencies = {
132
131
  "@strapi/strapi": "^5.0.0",
@@ -846,7 +845,7 @@ const editorConfig$1 = {
846
845
  "alignment",
847
846
  {
848
847
  label: "Indentation",
849
- icon: ckeditor5.icons.indent,
848
+ icon: ckeditor5.IconIndent,
850
849
  items: ["outdent", "indent"]
851
850
  },
852
851
  "bulletedList",
@@ -1192,20 +1191,16 @@ function setPluginConfig(userPluginConfig) {
1192
1191
  if (userTheme) {
1193
1192
  PLUGIN_CONFIG.theme = userTheme;
1194
1193
  }
1195
- deepFreeze(PLUGIN_CONFIG);
1194
+ }
1195
+ function getPluginPresets() {
1196
+ return PLUGIN_CONFIG.presets;
1197
+ }
1198
+ function getPluginTheme() {
1199
+ return PLUGIN_CONFIG.presets;
1196
1200
  }
1197
1201
  function getPluginConfig() {
1198
- if (!Object.isFrozen(PLUGIN_CONFIG)) deepFreeze(PLUGIN_CONFIG);
1199
1202
  return PLUGIN_CONFIG;
1200
1203
  }
1201
- function deepFreeze(obj) {
1202
- Object.keys(obj).forEach((p) => {
1203
- if (typeof obj[p] === "object" && obj[p] !== null && !Object.isFrozen(obj[p])) {
1204
- deepFreeze(obj[p]);
1205
- }
1206
- });
1207
- return Object.freeze(obj);
1208
- }
1209
1204
  function CKEditorIcon() {
1210
1205
  return /* @__PURE__ */ jsxRuntime.jsx(IconBox, { justifyContent: "center", alignItems: "center", width: 7, height: 6, hasRadius: true, "aria-hidden": true, children: /* @__PURE__ */ jsxRuntime.jsx(SvgIcon, {}) });
1211
1206
  }
@@ -1270,7 +1265,7 @@ const index = {
1270
1265
  defaultMessage: "The advanced rich text editor. (Community Edition)"
1271
1266
  },
1272
1267
  components: {
1273
- Input: async () => Promise.resolve().then(() => require("./Field-BdtPMWJ1.js")).then((module2) => ({
1268
+ Input: async () => Promise.resolve().then(() => require("./Field-kyiYSdM-.js")).then((module2) => ({
1274
1269
  default: module2.Field
1275
1270
  }))
1276
1271
  },
@@ -1344,6 +1339,8 @@ exports.clonedDefaultHtmlPreset = clonedDefaultHtmlPreset;
1344
1339
  exports.clonedDefaultMarkdownPreset = clonedDefaultMarkdownPreset;
1345
1340
  exports.clonedDefaultTheme = clonedDefaultTheme;
1346
1341
  exports.getPluginConfig = getPluginConfig;
1342
+ exports.getPluginPresets = getPluginPresets;
1343
+ exports.getPluginTheme = getPluginTheme;
1347
1344
  exports.index = index;
1348
1345
  exports.isImageResponsive = isImageResponsive;
1349
1346
  exports.prefixFileUrlWithBackendUrl = prefixFileUrlWithBackendUrl;
@@ -1,12 +1,12 @@
1
1
  import * as yup from "yup";
2
2
  import { css, styled } from "styled-components";
3
- import { Plugin, ButtonView, FileRepository, logWarning, Alignment, Autoformat, AutoImage, BalloonToolbar, BlockQuote, Bold, Code, CodeBlock, Essentials, FontBackgroundColor, FontColor, FontFamily, FontSize, GeneralHtmlSupport, Heading, HorizontalLine, HtmlEmbed, Image, ImageCaption, ImageInsert, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Indent, IndentBlock, Italic, List, ListProperties, Link, LinkImage, MediaEmbed, Paragraph, PageBreak, PasteFromOffice, PictureEditing, RemoveFormat, SourceEditing, SpecialCharacters, SpecialCharactersEssentials, Strikethrough, Style, Subscript, Superscript, ShowBlocks, Table, TableCaption, TableCellProperties, TableColumnResize, TableProperties, TableToolbar, TodoList, Underline, WordCount, icons, Markdown, TextTransformation } from "ckeditor5";
3
+ import { Plugin, ButtonView, FileRepository, logWarning, Alignment, Autoformat, AutoImage, BalloonToolbar, BlockQuote, Bold, Code, CodeBlock, Essentials, FontBackgroundColor, FontColor, FontFamily, FontSize, GeneralHtmlSupport, Heading, HorizontalLine, HtmlEmbed, Image, ImageCaption, ImageInsert, ImageResize, ImageStyle, ImageToolbar, ImageUpload, Indent, IndentBlock, Italic, List, ListProperties, Link, LinkImage, MediaEmbed, Paragraph, PageBreak, PasteFromOffice, PictureEditing, RemoveFormat, SourceEditing, SpecialCharacters, SpecialCharactersEssentials, Strikethrough, Style, Subscript, Superscript, ShowBlocks, Table, TableCaption, TableCellProperties, TableColumnResize, TableProperties, TableToolbar, TodoList, Underline, WordCount, IconIndent, Markdown, TextTransformation } from "ckeditor5";
4
4
  import * as sanitizeHtml from "sanitize-html";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import { Flex, lightTheme } from "@strapi/design-system";
7
7
  import cloneDeep from "lodash/cloneDeep";
8
8
  const name = "@_sh/strapi-plugin-ckeditor";
9
- const version = "5.0.1";
9
+ const version = "6.0.0";
10
10
  const description = "Integrates CKEditor 5 into your Strapi project as a fully customizable custom field. (Community Edition)";
11
11
  const keywords = [
12
12
  "strapi",
@@ -70,41 +70,40 @@ const scripts = {
70
70
  "release:info": "release-it --changelog"
71
71
  };
72
72
  const dependencies = {
73
- "@ckeditor/ckeditor5-react": "^9.4.0",
74
- "@strapi/design-system": "^2.0.0-rc.13",
75
- "@strapi/icons": "^2.0.0-rc.13",
76
- lodash: "^4.17.21",
77
- ckeditor5: "^44.1.0",
78
- "prop-types": "^15.8.1",
79
- "sanitize-html": "^2.13.1",
73
+ "@ckeditor/ckeditor5-react": "~9.5.0",
74
+ "@strapi/design-system": "2.0.0-rc.18",
75
+ "@strapi/icons": "2.0.0-rc.18",
76
+ ckeditor5: "~45.0.0",
77
+ lodash: "4.17.21",
78
+ "sanitize-html": "2.13.0",
80
79
  yup: "0.32.9"
81
80
  };
82
81
  const devDependencies = {
83
- "@release-it/conventional-changelog": "^8.0.1",
84
- "@strapi/sdk-plugin": "^5.2.7",
85
- "@strapi/strapi": "^5.0.0",
86
- "@strapi/typescript-utils": "^5.4.0",
82
+ "@release-it/conventional-changelog": "10.0.0",
83
+ "@strapi/sdk-plugin": "5.3.2",
84
+ "@strapi/strapi": "5.11.0",
85
+ "@strapi/typescript-utils": "5.11.0",
87
86
  "@types/react": "^18.3.12",
88
87
  "@types/react-dom": "^18.3.1",
89
- "@types/sanitize-html": "^2.13.0",
90
- "@typescript-eslint/eslint-plugin": "^7.0.0",
91
- "@typescript-eslint/parser": "^7.0.0",
92
- eslint: "^8.2.0",
93
- "eslint-config-airbnb": "^19.0.4",
94
- "eslint-config-airbnb-typescript": "^18.0.0",
95
- "eslint-config-prettier": "^9.1.0",
96
- "eslint-plugin-import": "^2.25.3",
97
- "eslint-plugin-jsx-a11y": "^6.10.2",
98
- "eslint-plugin-prettier": "^5.2.1",
99
- "eslint-plugin-react": "^7.28.0",
100
- "eslint-plugin-react-hooks": "^4.3.0",
88
+ "@types/sanitize-html": "2.13.0",
89
+ "@typescript-eslint/eslint-plugin": "7.0.0",
90
+ "@typescript-eslint/parser": "7.0.0",
91
+ eslint: "8.2.0",
92
+ "eslint-config-airbnb": "19.0.4",
93
+ "eslint-config-airbnb-typescript": "18.0.0",
94
+ "eslint-config-prettier": "9.1.0",
95
+ "eslint-plugin-import": "2.25.3",
96
+ "eslint-plugin-jsx-a11y": "6.10.2",
97
+ "eslint-plugin-prettier": "5.2.1",
98
+ "eslint-plugin-react": "7.28.0",
99
+ "eslint-plugin-react-hooks": "4.3.0",
101
100
  prettier: "3.4.0",
102
- react: "^18.3.1",
103
- "react-dom": "^18.3.1",
104
- "react-router-dom": "^6.26.2",
105
- "release-it": "^17.6.0",
106
- "styled-components": "^6.1.13",
107
- typescript: "^5.6.3"
101
+ react: "18.3.1",
102
+ "react-dom": "18.3.1",
103
+ "react-router-dom": "6.30.0",
104
+ "release-it": "18.1.2",
105
+ "styled-components": "6.1.15",
106
+ typescript: "5.6.3"
108
107
  };
109
108
  const peerDependencies = {
110
109
  "@strapi/strapi": "^5.0.0",
@@ -824,7 +823,7 @@ const editorConfig$1 = {
824
823
  "alignment",
825
824
  {
826
825
  label: "Indentation",
827
- icon: icons.indent,
826
+ icon: IconIndent,
828
827
  items: ["outdent", "indent"]
829
828
  },
830
829
  "bulletedList",
@@ -1170,20 +1169,16 @@ function setPluginConfig(userPluginConfig) {
1170
1169
  if (userTheme) {
1171
1170
  PLUGIN_CONFIG.theme = userTheme;
1172
1171
  }
1173
- deepFreeze(PLUGIN_CONFIG);
1172
+ }
1173
+ function getPluginPresets() {
1174
+ return PLUGIN_CONFIG.presets;
1175
+ }
1176
+ function getPluginTheme() {
1177
+ return PLUGIN_CONFIG.presets;
1174
1178
  }
1175
1179
  function getPluginConfig() {
1176
- if (!Object.isFrozen(PLUGIN_CONFIG)) deepFreeze(PLUGIN_CONFIG);
1177
1180
  return PLUGIN_CONFIG;
1178
1181
  }
1179
- function deepFreeze(obj) {
1180
- Object.keys(obj).forEach((p) => {
1181
- if (typeof obj[p] === "object" && obj[p] !== null && !Object.isFrozen(obj[p])) {
1182
- deepFreeze(obj[p]);
1183
- }
1184
- });
1185
- return Object.freeze(obj);
1186
- }
1187
1182
  function CKEditorIcon() {
1188
1183
  return /* @__PURE__ */ jsx(IconBox, { justifyContent: "center", alignItems: "center", width: 7, height: 6, hasRadius: true, "aria-hidden": true, children: /* @__PURE__ */ jsx(SvgIcon, {}) });
1189
1184
  }
@@ -1248,7 +1243,7 @@ const index = {
1248
1243
  defaultMessage: "The advanced rich text editor. (Community Edition)"
1249
1244
  },
1250
1245
  components: {
1251
- Input: async () => import("./Field-wVg5xgbq.mjs").then((module) => ({
1246
+ Input: async () => import("./Field-g8gLpd2N.mjs").then((module) => ({
1252
1247
  default: module.Field
1253
1248
  }))
1254
1249
  },
@@ -1322,8 +1317,10 @@ export {
1322
1317
  clonedDefaultHtmlPreset as b,
1323
1318
  clonedDefaultTheme as c,
1324
1319
  clonedDefaultMarkdownPreset as d,
1325
- StrapiUploadAdapter as e,
1320
+ getPluginPresets as e,
1321
+ getPluginTheme as f,
1326
1322
  getPluginConfig as g,
1323
+ StrapiUploadAdapter as h,
1327
1324
  isImageResponsive as i,
1328
1325
  prefixFileUrlWithBackendUrl as p,
1329
1326
  setPluginConfig as s
@@ -1,12 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  require("yup");
4
- const index = require("../_chunks/index-CZRYkPJ8.js");
4
+ const index = require("../_chunks/index-lgM3BQrm.js");
5
5
  require("ckeditor5");
6
+ require("sanitize-html");
6
7
  exports.StrapiMediaLib = index.StrapiMediaLib;
7
8
  exports.StrapiUploadAdapter = index.StrapiUploadAdapter;
8
9
  exports.default = index.index;
9
10
  exports.defaultHtmlPreset = index.clonedDefaultHtmlPreset;
10
11
  exports.defaultMarkdownPreset = index.clonedDefaultMarkdownPreset;
11
12
  exports.defaultTheme = index.clonedDefaultTheme;
13
+ exports.getPluginPresets = index.getPluginPresets;
14
+ exports.getPluginTheme = index.getPluginTheme;
12
15
  exports.setPluginConfig = index.setPluginConfig;
@@ -1,12 +1,15 @@
1
1
  import "yup";
2
- import { S, e, a, b, d, c, s } from "../_chunks/index-Clyv4ZPF.mjs";
2
+ import { S, h, a, b, d, c, e, f, s } from "../_chunks/index-re_mQliQ.mjs";
3
3
  import "ckeditor5";
4
+ import "sanitize-html";
4
5
  export {
5
6
  S as StrapiMediaLib,
6
- e as StrapiUploadAdapter,
7
+ h as StrapiUploadAdapter,
7
8
  a as default,
8
9
  b as defaultHtmlPreset,
9
10
  d as defaultMarkdownPreset,
10
11
  c as defaultTheme,
12
+ e as getPluginPresets,
13
+ f as getPluginTheme,
11
14
  s as setPluginConfig
12
15
  };
@@ -1,22 +1,36 @@
1
- import type { PluginConfig, UserPluginConfig } from './types';
1
+ import type { PluginConfig, UserPluginConfig, Preset, Theme } from './types';
2
2
  /**
3
3
  * Sets a configuration for the plugin.
4
4
  *
5
5
  * @remarks
6
6
  *
7
- * - The function must be invoked before the admin panel's bootstrap lifecycle function.
8
- * The general recommendation is to call it inside the admin panel's register lifecycle function.
7
+ * - Function must be invoked before the admin panel's bootstrap lifecycle function.
8
+ * The recommended way is to invoke it within the admin panel's register lifecycle function.
9
9
  *
10
10
  * - Provided properties will overwrite the default configuration values.
11
11
  *
12
- * - The configuration becomes immutable after the first invocation, preventing further
13
- * modifications.
14
- *
15
- * @param userConfig - The plugin configuration object.
12
+ * @param userConfig - Plugin configuration object.
16
13
  */
17
14
  export declare function setPluginConfig(userPluginConfig: UserPluginConfig): void;
18
15
  /**
19
- * Retrieves the current plugin configuration, ensuring it is immutable.
16
+ * Returns the presets object.
17
+ *
18
+ * @remarks
19
+ *
20
+ * - Each property name must match the corresponding preset's name.
21
+ *
22
+ * - To extend or modify the options visible in the admin panel's content manager,
23
+ * changes must be made before the admin panel's bootstrap lifecycle function.
24
+ *
25
+ */
26
+ export declare function getPluginPresets(): Record<string, Preset>;
27
+ /**
28
+ * Returns the theme object.
29
+ *
30
+ */
31
+ export declare function getPluginTheme(): Theme;
32
+ /**
33
+ * Retrieves current plugin configuration.
20
34
  *
21
35
  * @internal
22
36
  */
@@ -120,4 +120,5 @@ export type Preset = {
120
120
  *
121
121
  * @see {@link https://ckeditor.com/docs/ckeditor5/latest/getting-started/setup/configuration.html | CKEditor documentation}
122
122
  */
123
- export type EditorConfig = CKE5EditorConfig;
123
+ export interface EditorConfig extends CKE5EditorConfig {
124
+ }
@@ -5,5 +5,5 @@ export { clonedDefaultTheme as defaultTheme };
5
5
  export { clonedDefaultHtmlPreset as defaultHtmlPreset };
6
6
  export { clonedDefaultMarkdownPreset as defaultMarkdownPreset };
7
7
  export type { UserPluginConfig as PluginConfig, EditorConfig, Preset, Theme, EditorStyles, } from './config/types';
8
- export { setPluginConfig } from './config';
8
+ export { setPluginConfig, getPluginPresets, getPluginTheme } from './config';
9
9
  export { StrapiMediaLib, StrapiUploadAdapter } from './plugins';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  const name = "@_sh/strapi-plugin-ckeditor";
3
- const version = "5.0.1";
3
+ const version = "6.0.0";
4
4
  const description = "Integrates CKEditor 5 into your Strapi project as a fully customizable custom field. (Community Edition)";
5
5
  const keywords = [
6
6
  "strapi",
@@ -64,41 +64,40 @@ const scripts = {
64
64
  "release:info": "release-it --changelog"
65
65
  };
66
66
  const dependencies = {
67
- "@ckeditor/ckeditor5-react": "^9.4.0",
68
- "@strapi/design-system": "^2.0.0-rc.13",
69
- "@strapi/icons": "^2.0.0-rc.13",
70
- lodash: "^4.17.21",
71
- ckeditor5: "^44.1.0",
72
- "prop-types": "^15.8.1",
73
- "sanitize-html": "^2.13.1",
67
+ "@ckeditor/ckeditor5-react": "~9.5.0",
68
+ "@strapi/design-system": "2.0.0-rc.18",
69
+ "@strapi/icons": "2.0.0-rc.18",
70
+ ckeditor5: "~45.0.0",
71
+ lodash: "4.17.21",
72
+ "sanitize-html": "2.13.0",
74
73
  yup: "0.32.9"
75
74
  };
76
75
  const devDependencies = {
77
- "@release-it/conventional-changelog": "^8.0.1",
78
- "@strapi/sdk-plugin": "^5.2.7",
79
- "@strapi/strapi": "^5.0.0",
80
- "@strapi/typescript-utils": "^5.4.0",
76
+ "@release-it/conventional-changelog": "10.0.0",
77
+ "@strapi/sdk-plugin": "5.3.2",
78
+ "@strapi/strapi": "5.11.0",
79
+ "@strapi/typescript-utils": "5.11.0",
81
80
  "@types/react": "^18.3.12",
82
81
  "@types/react-dom": "^18.3.1",
83
- "@types/sanitize-html": "^2.13.0",
84
- "@typescript-eslint/eslint-plugin": "^7.0.0",
85
- "@typescript-eslint/parser": "^7.0.0",
86
- eslint: "^8.2.0",
87
- "eslint-config-airbnb": "^19.0.4",
88
- "eslint-config-airbnb-typescript": "^18.0.0",
89
- "eslint-config-prettier": "^9.1.0",
90
- "eslint-plugin-import": "^2.25.3",
91
- "eslint-plugin-jsx-a11y": "^6.10.2",
92
- "eslint-plugin-prettier": "^5.2.1",
93
- "eslint-plugin-react": "^7.28.0",
94
- "eslint-plugin-react-hooks": "^4.3.0",
82
+ "@types/sanitize-html": "2.13.0",
83
+ "@typescript-eslint/eslint-plugin": "7.0.0",
84
+ "@typescript-eslint/parser": "7.0.0",
85
+ eslint: "8.2.0",
86
+ "eslint-config-airbnb": "19.0.4",
87
+ "eslint-config-airbnb-typescript": "18.0.0",
88
+ "eslint-config-prettier": "9.1.0",
89
+ "eslint-plugin-import": "2.25.3",
90
+ "eslint-plugin-jsx-a11y": "6.10.2",
91
+ "eslint-plugin-prettier": "5.2.1",
92
+ "eslint-plugin-react": "7.28.0",
93
+ "eslint-plugin-react-hooks": "4.3.0",
95
94
  prettier: "3.4.0",
96
- react: "^18.3.1",
97
- "react-dom": "^18.3.1",
98
- "react-router-dom": "^6.26.2",
99
- "release-it": "^17.6.0",
100
- "styled-components": "^6.1.13",
101
- typescript: "^5.6.3"
95
+ react: "18.3.1",
96
+ "react-dom": "18.3.1",
97
+ "react-router-dom": "6.30.0",
98
+ "release-it": "18.1.2",
99
+ "styled-components": "6.1.15",
100
+ typescript: "5.6.3"
102
101
  };
103
102
  const peerDependencies = {
104
103
  "@strapi/strapi": "^5.0.0",
@@ -1,5 +1,5 @@
1
1
  const name = "@_sh/strapi-plugin-ckeditor";
2
- const version = "5.0.1";
2
+ const version = "6.0.0";
3
3
  const description = "Integrates CKEditor 5 into your Strapi project as a fully customizable custom field. (Community Edition)";
4
4
  const keywords = [
5
5
  "strapi",
@@ -63,41 +63,40 @@ const scripts = {
63
63
  "release:info": "release-it --changelog"
64
64
  };
65
65
  const dependencies = {
66
- "@ckeditor/ckeditor5-react": "^9.4.0",
67
- "@strapi/design-system": "^2.0.0-rc.13",
68
- "@strapi/icons": "^2.0.0-rc.13",
69
- lodash: "^4.17.21",
70
- ckeditor5: "^44.1.0",
71
- "prop-types": "^15.8.1",
72
- "sanitize-html": "^2.13.1",
66
+ "@ckeditor/ckeditor5-react": "~9.5.0",
67
+ "@strapi/design-system": "2.0.0-rc.18",
68
+ "@strapi/icons": "2.0.0-rc.18",
69
+ ckeditor5: "~45.0.0",
70
+ lodash: "4.17.21",
71
+ "sanitize-html": "2.13.0",
73
72
  yup: "0.32.9"
74
73
  };
75
74
  const devDependencies = {
76
- "@release-it/conventional-changelog": "^8.0.1",
77
- "@strapi/sdk-plugin": "^5.2.7",
78
- "@strapi/strapi": "^5.0.0",
79
- "@strapi/typescript-utils": "^5.4.0",
75
+ "@release-it/conventional-changelog": "10.0.0",
76
+ "@strapi/sdk-plugin": "5.3.2",
77
+ "@strapi/strapi": "5.11.0",
78
+ "@strapi/typescript-utils": "5.11.0",
80
79
  "@types/react": "^18.3.12",
81
80
  "@types/react-dom": "^18.3.1",
82
- "@types/sanitize-html": "^2.13.0",
83
- "@typescript-eslint/eslint-plugin": "^7.0.0",
84
- "@typescript-eslint/parser": "^7.0.0",
85
- eslint: "^8.2.0",
86
- "eslint-config-airbnb": "^19.0.4",
87
- "eslint-config-airbnb-typescript": "^18.0.0",
88
- "eslint-config-prettier": "^9.1.0",
89
- "eslint-plugin-import": "^2.25.3",
90
- "eslint-plugin-jsx-a11y": "^6.10.2",
91
- "eslint-plugin-prettier": "^5.2.1",
92
- "eslint-plugin-react": "^7.28.0",
93
- "eslint-plugin-react-hooks": "^4.3.0",
81
+ "@types/sanitize-html": "2.13.0",
82
+ "@typescript-eslint/eslint-plugin": "7.0.0",
83
+ "@typescript-eslint/parser": "7.0.0",
84
+ eslint: "8.2.0",
85
+ "eslint-config-airbnb": "19.0.4",
86
+ "eslint-config-airbnb-typescript": "18.0.0",
87
+ "eslint-config-prettier": "9.1.0",
88
+ "eslint-plugin-import": "2.25.3",
89
+ "eslint-plugin-jsx-a11y": "6.10.2",
90
+ "eslint-plugin-prettier": "5.2.1",
91
+ "eslint-plugin-react": "7.28.0",
92
+ "eslint-plugin-react-hooks": "4.3.0",
94
93
  prettier: "3.4.0",
95
- react: "^18.3.1",
96
- "react-dom": "^18.3.1",
97
- "react-router-dom": "^6.26.2",
98
- "release-it": "^17.6.0",
99
- "styled-components": "^6.1.13",
100
- typescript: "^5.6.3"
94
+ react: "18.3.1",
95
+ "react-dom": "18.3.1",
96
+ "react-router-dom": "6.30.0",
97
+ "release-it": "18.1.2",
98
+ "styled-components": "6.1.15",
99
+ typescript: "5.6.3"
101
100
  };
102
101
  const peerDependencies = {
103
102
  "@strapi/strapi": "^5.0.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@_sh/strapi-plugin-ckeditor",
3
- "version": "5.0.1",
3
+ "version": "6.0.0",
4
4
  "description": "Integrates CKEditor 5 into your Strapi project as a fully customizable custom field. (Community Edition)",
5
5
  "keywords": [
6
6
  "strapi",
@@ -64,41 +64,40 @@
64
64
  "release:info": "release-it --changelog"
65
65
  },
66
66
  "dependencies": {
67
- "@ckeditor/ckeditor5-react": "^9.4.0",
68
- "@strapi/design-system": "^2.0.0-rc.13",
69
- "@strapi/icons": "^2.0.0-rc.13",
70
- "lodash": "^4.17.21",
71
- "ckeditor5": "^44.1.0",
72
- "prop-types": "^15.8.1",
73
- "sanitize-html": "^2.13.1",
67
+ "@ckeditor/ckeditor5-react": "~9.5.0",
68
+ "@strapi/design-system": "2.0.0-rc.18",
69
+ "@strapi/icons": "2.0.0-rc.18",
70
+ "ckeditor5": "~45.0.0",
71
+ "lodash": "4.17.21",
72
+ "sanitize-html": "2.13.0",
74
73
  "yup": "0.32.9"
75
74
  },
76
75
  "devDependencies": {
77
- "@release-it/conventional-changelog": "^8.0.1",
78
- "@strapi/sdk-plugin": "^5.2.7",
79
- "@strapi/strapi": "^5.0.0",
80
- "@strapi/typescript-utils": "^5.4.0",
76
+ "@release-it/conventional-changelog": "10.0.0",
77
+ "@strapi/sdk-plugin": "5.3.2",
78
+ "@strapi/strapi": "5.11.0",
79
+ "@strapi/typescript-utils": "5.11.0",
81
80
  "@types/react": "^18.3.12",
82
81
  "@types/react-dom": "^18.3.1",
83
- "@types/sanitize-html": "^2.13.0",
84
- "@typescript-eslint/eslint-plugin": "^7.0.0",
85
- "@typescript-eslint/parser": "^7.0.0",
86
- "eslint": "^8.2.0",
87
- "eslint-config-airbnb": "^19.0.4",
88
- "eslint-config-airbnb-typescript": "^18.0.0",
89
- "eslint-config-prettier": "^9.1.0",
90
- "eslint-plugin-import": "^2.25.3",
91
- "eslint-plugin-jsx-a11y": "^6.10.2",
92
- "eslint-plugin-prettier": "^5.2.1",
93
- "eslint-plugin-react": "^7.28.0",
94
- "eslint-plugin-react-hooks": "^4.3.0",
82
+ "@types/sanitize-html": "2.13.0",
83
+ "@typescript-eslint/eslint-plugin": "7.0.0",
84
+ "@typescript-eslint/parser": "7.0.0",
85
+ "eslint": "8.2.0",
86
+ "eslint-config-airbnb": "19.0.4",
87
+ "eslint-config-airbnb-typescript": "18.0.0",
88
+ "eslint-config-prettier": "9.1.0",
89
+ "eslint-plugin-import": "2.25.3",
90
+ "eslint-plugin-jsx-a11y": "6.10.2",
91
+ "eslint-plugin-prettier": "5.2.1",
92
+ "eslint-plugin-react": "7.28.0",
93
+ "eslint-plugin-react-hooks": "4.3.0",
95
94
  "prettier": "3.4.0",
96
- "react": "^18.3.1",
97
- "react-dom": "^18.3.1",
98
- "react-router-dom": "^6.26.2",
99
- "release-it": "^17.6.0",
100
- "styled-components": "^6.1.13",
101
- "typescript": "^5.6.3"
95
+ "react": "18.3.1",
96
+ "react-dom": "18.3.1",
97
+ "react-router-dom": "6.30.0",
98
+ "release-it": "18.1.2",
99
+ "styled-components": "6.1.15",
100
+ "typescript": "5.6.3"
102
101
  },
103
102
  "peerDependencies": {
104
103
  "@strapi/strapi": "^5.0.0",