@strapi/content-manager 0.0.0-experimental.25e22c6cc9bc6b35392bb55d09f641a0a65e7403 → 0.0.0-experimental.2cfaca2410c03f1dee31ca18c06aedfb313e0fb4

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 (131) hide show
  1. package/LICENSE +18 -3
  2. package/dist/_chunks/{ComponentConfigurationPage-WRPUXGd6.js → ComponentConfigurationPage-DnnZJc1F.js} +3 -3
  3. package/dist/_chunks/{ComponentConfigurationPage-WRPUXGd6.js.map → ComponentConfigurationPage-DnnZJc1F.js.map} +1 -1
  4. package/dist/_chunks/{ComponentConfigurationPage-gdUj_t-O.mjs → ComponentConfigurationPage-hLMNf7KI.mjs} +3 -3
  5. package/dist/_chunks/{ComponentConfigurationPage-gdUj_t-O.mjs.map → ComponentConfigurationPage-hLMNf7KI.mjs.map} +1 -1
  6. package/dist/_chunks/{EditConfigurationPage-C1vjMBgy.js → EditConfigurationPage-CpLj5gYZ.js} +3 -3
  7. package/dist/_chunks/{EditConfigurationPage-C1vjMBgy.js.map → EditConfigurationPage-CpLj5gYZ.js.map} +1 -1
  8. package/dist/_chunks/{EditConfigurationPage-BwuIPOJG.mjs → EditConfigurationPage-Dh6sq-G4.mjs} +3 -3
  9. package/dist/_chunks/{EditConfigurationPage-BwuIPOJG.mjs.map → EditConfigurationPage-Dh6sq-G4.mjs.map} +1 -1
  10. package/dist/_chunks/{EditViewPage-0MiFkXa8.mjs → EditViewPage-BU1ugeVi.mjs} +19 -8
  11. package/dist/_chunks/EditViewPage-BU1ugeVi.mjs.map +1 -0
  12. package/dist/_chunks/{EditViewPage-DbcGfyqK.js → EditViewPage-D2QVRr_2.js} +19 -8
  13. package/dist/_chunks/EditViewPage-D2QVRr_2.js.map +1 -0
  14. package/dist/_chunks/{Field-BG1xu38N.js → Field-BEDX9i_V.js} +465 -145
  15. package/dist/_chunks/Field-BEDX9i_V.js.map +1 -0
  16. package/dist/_chunks/{Field-BDMSCcy5.mjs → Field-VSPY6uzs.mjs} +463 -143
  17. package/dist/_chunks/Field-VSPY6uzs.mjs.map +1 -0
  18. package/dist/_chunks/{Form-CPVWavB8.mjs → Form-05Oaes1N.mjs} +39 -17
  19. package/dist/_chunks/Form-05Oaes1N.mjs.map +1 -0
  20. package/dist/_chunks/{Form-9BnFyUjy.js → Form-DCaY8xBX.js} +39 -17
  21. package/dist/_chunks/Form-DCaY8xBX.js.map +1 -0
  22. package/dist/_chunks/{History-BVpd8LP3.mjs → History-BqO2G3MV.mjs} +44 -19
  23. package/dist/_chunks/History-BqO2G3MV.mjs.map +1 -0
  24. package/dist/_chunks/{History-BWWxLt2Z.js → History-BrJ1tUvt.js} +44 -19
  25. package/dist/_chunks/History-BrJ1tUvt.js.map +1 -0
  26. package/dist/_chunks/{ListConfigurationPage-DozVMKcR.mjs → ListConfigurationPage-C6rsFlme.mjs} +20 -8
  27. package/dist/_chunks/ListConfigurationPage-C6rsFlme.mjs.map +1 -0
  28. package/dist/_chunks/{ListConfigurationPage-6swzjdAZ.js → ListConfigurationPage-Eane5LKE.js} +20 -8
  29. package/dist/_chunks/ListConfigurationPage-Eane5LKE.js.map +1 -0
  30. package/dist/_chunks/{ListViewPage-BlzfjS2Q.js → ListViewPage-Coj-RPsx.js} +61 -43
  31. package/dist/_chunks/ListViewPage-Coj-RPsx.js.map +1 -0
  32. package/dist/_chunks/{ListViewPage-Ds0ulgfG.mjs → ListViewPage-yE_zYhcI.mjs} +59 -41
  33. package/dist/_chunks/ListViewPage-yE_zYhcI.mjs.map +1 -0
  34. package/dist/_chunks/{NoContentTypePage-D2nCCWEl.js → NoContentTypePage-BDJ0dshy.js} +2 -2
  35. package/dist/_chunks/{NoContentTypePage-D2nCCWEl.js.map → NoContentTypePage-BDJ0dshy.js.map} +1 -1
  36. package/dist/_chunks/{NoContentTypePage-BH11kaKt.mjs → NoContentTypePage-NW_FSVdY.mjs} +2 -2
  37. package/dist/_chunks/{NoContentTypePage-BH11kaKt.mjs.map → NoContentTypePage-NW_FSVdY.mjs.map} +1 -1
  38. package/dist/_chunks/{NoPermissionsPage-DN_JlsU2.js → NoPermissionsPage-BOtb5FTM.js} +2 -2
  39. package/dist/_chunks/{NoPermissionsPage-DN_JlsU2.js.map → NoPermissionsPage-BOtb5FTM.js.map} +1 -1
  40. package/dist/_chunks/{NoPermissionsPage-BT2Tn0D_.mjs → NoPermissionsPage-h0I3ImsX.mjs} +2 -2
  41. package/dist/_chunks/{NoPermissionsPage-BT2Tn0D_.mjs.map → NoPermissionsPage-h0I3ImsX.mjs.map} +1 -1
  42. package/dist/_chunks/{Relations-CcgFTcWo.js → Relations-CVh0DOKv.js} +4 -4
  43. package/dist/_chunks/Relations-CVh0DOKv.js.map +1 -0
  44. package/dist/_chunks/{Relations-Dnag3fhV.mjs → Relations-FP0uWpBz.mjs} +4 -4
  45. package/dist/_chunks/Relations-FP0uWpBz.mjs.map +1 -0
  46. package/dist/_chunks/{en-fbKQxLGn.js → en-BlhnxQfj.js} +11 -9
  47. package/dist/_chunks/{en-fbKQxLGn.js.map → en-BlhnxQfj.js.map} +1 -1
  48. package/dist/_chunks/{en-Ux26r5pl.mjs → en-C8YBvRrK.mjs} +11 -9
  49. package/dist/_chunks/{en-Ux26r5pl.mjs.map → en-C8YBvRrK.mjs.map} +1 -1
  50. package/dist/_chunks/{index-JNNNKUHs.mjs → index-CPCHQ3X_.mjs} +976 -658
  51. package/dist/_chunks/index-CPCHQ3X_.mjs.map +1 -0
  52. package/dist/_chunks/{index-CWpLBSt0.js → index-DTKVhcla.js} +968 -650
  53. package/dist/_chunks/index-DTKVhcla.js.map +1 -0
  54. package/dist/_chunks/{layout-DC503LnF.mjs → layout-B4UhJ8MJ.mjs} +27 -14
  55. package/dist/_chunks/layout-B4UhJ8MJ.mjs.map +1 -0
  56. package/dist/_chunks/{layout--iHdZzRk.js → layout-CWgZzMYf.js} +25 -12
  57. package/dist/_chunks/layout-CWgZzMYf.js.map +1 -0
  58. package/dist/_chunks/{relations-CTje5t-a.mjs → relations-B83Ge9a7.mjs} +2 -2
  59. package/dist/_chunks/{relations-CTje5t-a.mjs.map → relations-B83Ge9a7.mjs.map} +1 -1
  60. package/dist/_chunks/{relations-BbHizA5K.js → relations-D81a_2zw.js} +2 -2
  61. package/dist/_chunks/{relations-BbHizA5K.js.map → relations-D81a_2zw.js.map} +1 -1
  62. package/dist/_chunks/{usePrev-B9w_-eYc.js → useDebounce-CtcjDB3L.js} +14 -1
  63. package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -0
  64. package/dist/_chunks/useDebounce-DmuSJIF3.mjs +29 -0
  65. package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -0
  66. package/dist/admin/index.js +2 -1
  67. package/dist/admin/index.js.map +1 -1
  68. package/dist/admin/index.mjs +3 -2
  69. package/dist/admin/src/exports.d.ts +1 -1
  70. package/dist/admin/src/history/index.d.ts +3 -0
  71. package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
  72. package/dist/admin/src/hooks/useDocument.d.ts +30 -1
  73. package/dist/admin/src/index.d.ts +1 -0
  74. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -0
  75. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +4 -0
  76. package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +20 -0
  77. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
  78. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.d.ts +2 -2
  79. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +4 -48
  80. package/dist/admin/src/pages/EditView/components/Header.d.ts +10 -11
  81. package/dist/admin/src/services/api.d.ts +1 -1
  82. package/dist/admin/src/services/components.d.ts +2 -2
  83. package/dist/admin/src/services/contentTypes.d.ts +3 -3
  84. package/dist/admin/src/services/documents.d.ts +19 -17
  85. package/dist/admin/src/services/init.d.ts +1 -1
  86. package/dist/admin/src/services/relations.d.ts +2 -2
  87. package/dist/admin/src/services/uid.d.ts +3 -3
  88. package/dist/admin/src/utils/validation.d.ts +4 -1
  89. package/dist/server/index.js +185 -113
  90. package/dist/server/index.js.map +1 -1
  91. package/dist/server/index.mjs +186 -114
  92. package/dist/server/index.mjs.map +1 -1
  93. package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
  94. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  95. package/dist/server/src/controllers/uid.d.ts.map +1 -1
  96. package/dist/server/src/controllers/validation/dimensions.d.ts +4 -2
  97. package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
  98. package/dist/server/src/history/services/history.d.ts.map +1 -1
  99. package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
  100. package/dist/server/src/history/services/utils.d.ts +2 -1
  101. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  102. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  103. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  104. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  105. package/dist/server/src/services/permission-checker.d.ts.map +1 -1
  106. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  107. package/dist/shared/contracts/collection-types.d.ts +3 -1
  108. package/dist/shared/contracts/collection-types.d.ts.map +1 -1
  109. package/package.json +11 -11
  110. package/dist/_chunks/EditViewPage-0MiFkXa8.mjs.map +0 -1
  111. package/dist/_chunks/EditViewPage-DbcGfyqK.js.map +0 -1
  112. package/dist/_chunks/Field-BDMSCcy5.mjs.map +0 -1
  113. package/dist/_chunks/Field-BG1xu38N.js.map +0 -1
  114. package/dist/_chunks/Form-9BnFyUjy.js.map +0 -1
  115. package/dist/_chunks/Form-CPVWavB8.mjs.map +0 -1
  116. package/dist/_chunks/History-BVpd8LP3.mjs.map +0 -1
  117. package/dist/_chunks/History-BWWxLt2Z.js.map +0 -1
  118. package/dist/_chunks/ListConfigurationPage-6swzjdAZ.js.map +0 -1
  119. package/dist/_chunks/ListConfigurationPage-DozVMKcR.mjs.map +0 -1
  120. package/dist/_chunks/ListViewPage-BlzfjS2Q.js.map +0 -1
  121. package/dist/_chunks/ListViewPage-Ds0ulgfG.mjs.map +0 -1
  122. package/dist/_chunks/Relations-CcgFTcWo.js.map +0 -1
  123. package/dist/_chunks/Relations-Dnag3fhV.mjs.map +0 -1
  124. package/dist/_chunks/index-CWpLBSt0.js.map +0 -1
  125. package/dist/_chunks/index-JNNNKUHs.mjs.map +0 -1
  126. package/dist/_chunks/layout--iHdZzRk.js.map +0 -1
  127. package/dist/_chunks/layout-DC503LnF.mjs.map +0 -1
  128. package/dist/_chunks/usePrev-B9w_-eYc.js.map +0 -1
  129. package/dist/_chunks/usePrev-DH6iah0A.mjs +0 -16
  130. package/dist/_chunks/usePrev-DH6iah0A.mjs.map +0 -1
  131. package/strapi-server.js +0 -3
@@ -5,9 +5,9 @@ const strapiAdmin = require("@strapi/admin/strapi-admin");
5
5
  const designSystem = require("@strapi/design-system");
6
6
  const pipe$1 = require("lodash/fp/pipe");
7
7
  const reactIntl = require("react-intl");
8
- const index = require("./index-CWpLBSt0.js");
8
+ const index = require("./index-DTKVhcla.js");
9
9
  const fractionalIndexing = require("fractional-indexing");
10
- const Relations = require("./Relations-CcgFTcWo.js");
10
+ const Relations = require("./Relations-CVh0DOKv.js");
11
11
  const Icons = require("@strapi/icons");
12
12
  const styledComponents = require("styled-components");
13
13
  const ComponentIcon = require("./ComponentIcon-BXdiCGQp.js");
@@ -17,7 +17,7 @@ const objects = require("./objects-gigeqt7s.js");
17
17
  const slate = require("slate");
18
18
  const slateHistory = require("slate-history");
19
19
  const slateReact = require("slate-react");
20
- const usePrev = require("./usePrev-B9w_-eYc.js");
20
+ const useDebounce = require("./useDebounce-CtcjDB3L.js");
21
21
  const Toolbar = require("@radix-ui/react-toolbar");
22
22
  const reactRouterDom = require("react-router-dom");
23
23
  const CodeMirror = require("codemirror5");
@@ -194,6 +194,220 @@ const useLazyComponents = (componentUids = []) => {
194
194
  }, []);
195
195
  return { isLazyLoading: loading, lazyComponentStore, cleanup };
196
196
  };
197
+ const codeLanguages = [
198
+ {
199
+ value: "asm",
200
+ label: "Assembly"
201
+ },
202
+ {
203
+ value: "bash",
204
+ label: "Bash"
205
+ },
206
+ {
207
+ value: "c",
208
+ label: "C"
209
+ },
210
+ {
211
+ value: "clojure",
212
+ label: "Clojure"
213
+ },
214
+ {
215
+ value: "cobol",
216
+ label: "COBOL"
217
+ },
218
+ {
219
+ value: "cpp",
220
+ label: "C++"
221
+ },
222
+ {
223
+ value: "csharp",
224
+ label: "C#"
225
+ },
226
+ {
227
+ value: "css",
228
+ label: "CSS"
229
+ },
230
+ {
231
+ value: "dart",
232
+ label: "Dart"
233
+ },
234
+ {
235
+ value: "dockerfile",
236
+ label: "Dockerfile"
237
+ },
238
+ {
239
+ value: "elixir",
240
+ label: "Elixir"
241
+ },
242
+ {
243
+ value: "erlang",
244
+ label: "Erlang"
245
+ },
246
+ {
247
+ value: "fortran",
248
+ label: "Fortran"
249
+ },
250
+ {
251
+ value: "fsharp",
252
+ label: "F#"
253
+ },
254
+ {
255
+ value: "go",
256
+ label: "Go"
257
+ },
258
+ {
259
+ value: "graphql",
260
+ label: "GraphQL"
261
+ },
262
+ {
263
+ value: "groovy",
264
+ label: "Groovy"
265
+ },
266
+ {
267
+ value: "haskell",
268
+ label: "Haskell"
269
+ },
270
+ {
271
+ value: "haxe",
272
+ label: "Haxe"
273
+ },
274
+ {
275
+ value: "html",
276
+ label: "HTML"
277
+ },
278
+ {
279
+ value: "ini",
280
+ label: "INI"
281
+ },
282
+ {
283
+ value: "java",
284
+ label: "Java"
285
+ },
286
+ {
287
+ value: "javascript",
288
+ label: "JavaScript"
289
+ },
290
+ {
291
+ value: "jsx",
292
+ label: "JavaScript (React)"
293
+ },
294
+ {
295
+ value: "json",
296
+ label: "JSON"
297
+ },
298
+ {
299
+ value: "julia",
300
+ label: "Julia"
301
+ },
302
+ {
303
+ value: "kotlin",
304
+ label: "Kotlin"
305
+ },
306
+ {
307
+ value: "latex",
308
+ label: "LaTeX"
309
+ },
310
+ {
311
+ value: "lua",
312
+ label: "Lua"
313
+ },
314
+ {
315
+ value: "markdown",
316
+ label: "Markdown"
317
+ },
318
+ {
319
+ value: "matlab",
320
+ label: "MATLAB"
321
+ },
322
+ {
323
+ value: "makefile",
324
+ label: "Makefile"
325
+ },
326
+ {
327
+ value: "objectivec",
328
+ label: "Objective-C"
329
+ },
330
+ {
331
+ value: "perl",
332
+ label: "Perl"
333
+ },
334
+ {
335
+ value: "php",
336
+ label: "PHP"
337
+ },
338
+ {
339
+ value: "plaintext",
340
+ label: "Plain text"
341
+ },
342
+ {
343
+ value: "powershell",
344
+ label: "PowerShell"
345
+ },
346
+ {
347
+ value: "python",
348
+ label: "Python"
349
+ },
350
+ {
351
+ value: "r",
352
+ label: "R"
353
+ },
354
+ {
355
+ value: "ruby",
356
+ label: "Ruby"
357
+ },
358
+ {
359
+ value: "rust",
360
+ label: "Rust"
361
+ },
362
+ {
363
+ value: "sas",
364
+ label: "SAS"
365
+ },
366
+ {
367
+ value: "scala",
368
+ label: "Scala"
369
+ },
370
+ {
371
+ value: "scheme",
372
+ label: "Scheme"
373
+ },
374
+ {
375
+ value: "shell",
376
+ label: "Shell"
377
+ },
378
+ {
379
+ value: "sql",
380
+ label: "SQL"
381
+ },
382
+ {
383
+ value: "stata",
384
+ label: "Stata"
385
+ },
386
+ {
387
+ value: "swift",
388
+ label: "Swift"
389
+ },
390
+ {
391
+ value: "typescript",
392
+ label: "TypeScript"
393
+ },
394
+ {
395
+ value: "tsx",
396
+ label: "TypeScript (React)"
397
+ },
398
+ {
399
+ value: "vbnet",
400
+ label: "VB.NET"
401
+ },
402
+ {
403
+ value: "xml",
404
+ label: "XML"
405
+ },
406
+ {
407
+ value: "yaml",
408
+ label: "YAML"
409
+ }
410
+ ];
197
411
  const baseHandleConvert = (editor, attributesToSet) => {
198
412
  const [_, lastNodePath] = slate.Editor.last(editor, []);
199
413
  slate.Transforms.unwrapNodes(editor, {
@@ -264,6 +478,7 @@ const CodeBlock = styledComponents.styled.pre`
264
478
  overflow: auto;
265
479
  padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[4]}`};
266
480
  flex-shrink: 1;
481
+
267
482
  & > code {
268
483
  font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,
269
484
  monospace;
@@ -272,9 +487,61 @@ const CodeBlock = styledComponents.styled.pre`
272
487
  max-width: 100%;
273
488
  }
274
489
  `;
490
+ const CodeEditor = (props) => {
491
+ const { editor } = useBlocksEditorContext("ImageDialog");
492
+ const editorIsFocused = slateReact.useFocused();
493
+ const imageIsSelected = slateReact.useSelected();
494
+ const { formatMessage } = reactIntl.useIntl();
495
+ const [isSelectOpen, setIsSelectOpen] = React__namespace.useState(false);
496
+ const shouldDisplayLanguageSelect = editorIsFocused && imageIsSelected || isSelectOpen;
497
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { position: "relative", width: "100%", children: [
498
+ /* @__PURE__ */ jsxRuntime.jsx(CodeBlock, { ...props.attributes, children: /* @__PURE__ */ jsxRuntime.jsx("code", { children: props.children }) }),
499
+ shouldDisplayLanguageSelect && /* @__PURE__ */ jsxRuntime.jsx(
500
+ designSystem.Box,
501
+ {
502
+ position: "absolute",
503
+ background: "neutral0",
504
+ borderColor: "neutral150",
505
+ borderStyle: "solid",
506
+ borderWidth: "0.5px",
507
+ shadow: "tableShadow",
508
+ top: "100%",
509
+ marginTop: 1,
510
+ right: 0,
511
+ padding: 1,
512
+ hasRadius: true,
513
+ children: /* @__PURE__ */ jsxRuntime.jsx(
514
+ designSystem.SingleSelect,
515
+ {
516
+ onChange: (open) => {
517
+ slate.Transforms.setNodes(
518
+ editor,
519
+ { language: open.toString() },
520
+ { match: (node) => !slate.Editor.isEditor(node) && node.type === "code" }
521
+ );
522
+ },
523
+ value: props.element.type === "code" && props.element.language || "plaintext",
524
+ onOpenChange: (open) => {
525
+ setIsSelectOpen(open);
526
+ if (!open) {
527
+ slateReact.ReactEditor.focus(editor);
528
+ }
529
+ },
530
+ onCloseAutoFocus: (e) => e.preventDefault(),
531
+ "aria-label": formatMessage({
532
+ id: "components.Blocks.blocks.code.languageLabel",
533
+ defaultMessage: "Select a language"
534
+ }),
535
+ children: codeLanguages.map(({ value, label }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value, children: label }, value))
536
+ }
537
+ )
538
+ }
539
+ )
540
+ ] });
541
+ };
275
542
  const codeBlocks = {
276
543
  code: {
277
- renderElement: (props) => /* @__PURE__ */ jsxRuntime.jsx(CodeBlock, { ...props.attributes, children: /* @__PURE__ */ jsxRuntime.jsx("code", { children: props.children }) }),
544
+ renderElement: (props) => /* @__PURE__ */ jsxRuntime.jsx(CodeEditor, { ...props }),
278
545
  icon: Icons.Code,
279
546
  label: {
280
547
  id: "components.Blocks.blocks.code",
@@ -283,7 +550,7 @@ const codeBlocks = {
283
550
  matchNode: (node) => node.type === "code",
284
551
  isInBlocksSelector: true,
285
552
  handleConvert(editor) {
286
- baseHandleConvert(editor, { type: "code" });
553
+ baseHandleConvert(editor, { type: "code", language: "plaintext" });
287
554
  },
288
555
  handleEnterKey(editor) {
289
556
  pressEnterTwiceToExit(editor);
@@ -501,7 +768,7 @@ const ImageDialog = () => {
501
768
  const nodeImage = {
502
769
  ...expectedImage,
503
770
  alternativeText: expectedImage.alternativeText || expectedImage.name,
504
- url: usePrev.prefixFileUrlWithBackendUrl(image.url)
771
+ url: useDebounce.prefixFileUrlWithBackendUrl(image.url)
505
772
  };
506
773
  return nodeImage;
507
774
  });
@@ -627,20 +894,8 @@ const LinkContent = React__namespace.forwardRef(
627
894
  const [linkText, setLinkText] = React__namespace.useState(elementText);
628
895
  const [linkUrl, setLinkUrl] = React__namespace.useState(link.url);
629
896
  const linkInputRef = React__namespace.useRef(null);
630
- const [showRemoveButton, setShowRemoveButton] = React__namespace.useState(false);
897
+ const isLastInsertedLink = editor.lastInsertedLinkPath ? !slate.Path.equals(path, editor.lastInsertedLinkPath) : true;
631
898
  const [isSaveDisabled, setIsSaveDisabled] = React__namespace.useState(false);
632
- const handleOpenChange = (isOpen) => {
633
- if (isOpen) {
634
- setPopoverOpen(isOpen);
635
- setShowRemoveButton(isOpen);
636
- } else {
637
- setPopoverOpen(isOpen);
638
- if (link.url === "") {
639
- removeLink(editor);
640
- }
641
- slateReact.ReactEditor.focus(editor);
642
- }
643
- };
644
899
  const onLinkChange = (e) => {
645
900
  setIsSaveDisabled(false);
646
901
  setLinkUrl(e.target.value);
@@ -661,15 +916,33 @@ const LinkContent = React__namespace.forwardRef(
661
916
  editLink(editor, { url: linkUrl, text: linkText });
662
917
  setPopoverOpen(false);
663
918
  editor.lastInsertedLinkPath = null;
919
+ slateReact.ReactEditor.focus(editor);
920
+ };
921
+ const handleClose = () => {
922
+ if (link.url === "") {
923
+ removeLink(editor);
924
+ }
925
+ setPopoverOpen(false);
926
+ slateReact.ReactEditor.focus(editor);
664
927
  };
665
928
  React__namespace.useEffect(() => {
666
929
  if (popoverOpen)
667
930
  linkInputRef.current?.focus();
668
931
  }, [popoverOpen]);
669
932
  const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText;
670
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { onOpenChange: handleOpenChange, open: popoverOpen, children: [
671
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(StyledBaseLink, { ...attributes, ref: forwardedRef, href: link.url, color: "primary600", children }) }),
672
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, tag: "form", onSubmit: handleSave, direction: "column", gap: 4, children: [
933
+ return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { open: popoverOpen, children: [
934
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
935
+ StyledBaseLink,
936
+ {
937
+ ...attributes,
938
+ ref: forwardedRef,
939
+ href: link.url,
940
+ onClick: () => setPopoverOpen(true),
941
+ color: "primary600",
942
+ children
943
+ }
944
+ ) }),
945
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { onPointerDownOutside: handleClose, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap: 4, children: [
673
946
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { width: "368px", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 1, alignItems: "stretch", children: [
674
947
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
675
948
  id: "components.Blocks.popover.text",
@@ -715,7 +988,7 @@ const LinkContent = React__namespace.forwardRef(
715
988
  {
716
989
  variant: "danger-light",
717
990
  onClick: () => removeLink(editor),
718
- $visible: showRemoveButton,
991
+ $visible: isLastInsertedLink,
719
992
  children: formatMessage({
720
993
  id: "components.Blocks.popover.remove",
721
994
  defaultMessage: "Remove"
@@ -723,11 +996,11 @@ const LinkContent = React__namespace.forwardRef(
723
996
  }
724
997
  ),
725
998
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
726
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick: () => handleOpenChange(false), children: formatMessage({
999
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick: handleClose, children: formatMessage({
727
1000
  id: "components.Blocks.popover.cancel",
728
1001
  defaultMessage: "Cancel"
729
1002
  }) }),
730
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", disabled: Boolean(inputNotDirty) || isSaveDisabled, children: formatMessage({
1003
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { disabled: Boolean(inputNotDirty) || isSaveDisabled, onClick: handleSave, children: formatMessage({
731
1004
  id: "components.Blocks.popover.save",
732
1005
  defaultMessage: "Save"
733
1006
  }) })
@@ -1168,7 +1441,7 @@ const ToolbarButton = ({
1168
1441
  width: 7,
1169
1442
  height: 7,
1170
1443
  hasRadius: true,
1171
- children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { width: "1.2rem", height: "1.2rem", fill: disabled ? "neutral300" : enabledColor })
1444
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { fill: disabled ? "neutral300" : enabledColor })
1172
1445
  }
1173
1446
  )
1174
1447
  }
@@ -1313,6 +1586,26 @@ const ListButton = ({ block, format }) => {
1313
1586
  }
1314
1587
  return false;
1315
1588
  };
1589
+ const isListDisabled = () => {
1590
+ if (disabled) {
1591
+ return true;
1592
+ }
1593
+ if (!editor.selection) {
1594
+ return false;
1595
+ }
1596
+ const anchorNodeEntry = slate.Editor.above(editor, {
1597
+ at: editor.selection.anchor,
1598
+ match: (node) => !slate.Editor.isEditor(node) && node.type !== "text"
1599
+ });
1600
+ const focusNodeEntry = slate.Editor.above(editor, {
1601
+ at: editor.selection.focus,
1602
+ match: (node) => !slate.Editor.isEditor(node) && node.type !== "text"
1603
+ });
1604
+ if (!anchorNodeEntry || !focusNodeEntry) {
1605
+ return false;
1606
+ }
1607
+ return anchorNodeEntry[0] !== focusNodeEntry[0];
1608
+ };
1316
1609
  const toggleList = (format2) => {
1317
1610
  let currentListEntry;
1318
1611
  if (editor.selection) {
@@ -1346,7 +1639,7 @@ const ListButton = ({ block, format }) => {
1346
1639
  name: format,
1347
1640
  label: block.label,
1348
1641
  isActive: isListActive(),
1349
- disabled,
1642
+ disabled: isListDisabled(),
1350
1643
  handleClick: () => toggleList(format)
1351
1644
  }
1352
1645
  );
@@ -1490,6 +1783,7 @@ const DragItem = styledComponents.styled(designSystem.Flex)`
1490
1783
  }
1491
1784
  `;
1492
1785
  const DragIconButton = styledComponents.styled(designSystem.IconButton)`
1786
+ user-select: none;
1493
1787
  display: flex;
1494
1788
  align-items: center;
1495
1789
  justify-content: center;
@@ -1513,7 +1807,7 @@ const DragIconButton = styledComponents.styled(designSystem.IconButton)`
1513
1807
  }
1514
1808
  svg {
1515
1809
  height: auto;
1516
- width: ${({ theme }) => theme.spaces[3]};
1810
+ min-width: ${({ theme }) => theme.spaces[3]};
1517
1811
 
1518
1812
  path {
1519
1813
  fill: ${({ theme }) => theme.colors.neutral700};
@@ -1618,6 +1912,7 @@ const DragAndDropElement = ({
1618
1912
  DragIconButton,
1619
1913
  {
1620
1914
  tag: "div",
1915
+ contentEditable: false,
1621
1916
  role: "button",
1622
1917
  tabIndex: 0,
1623
1918
  withTooltip: false,
@@ -1630,7 +1925,7 @@ const DragAndDropElement = ({
1630
1925
  disabled,
1631
1926
  draggable: true,
1632
1927
  $dragHandleTopMargin: dragHandleTopMargin,
1633
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Drag, { color: "neutral600" })
1928
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Drag, { color: "primary500" })
1634
1929
  }
1635
1930
  ),
1636
1931
  children
@@ -1954,7 +2249,7 @@ const EditorLayout$1 = ({
1954
2249
  /* @__PURE__ */ jsxRuntime.jsx(
1955
2250
  CollapseIconButton,
1956
2251
  {
1957
- "aria-label": formatMessage({
2252
+ label: formatMessage({
1958
2253
  id: index.getTranslation("components.Blocks.collapse"),
1959
2254
  defaultMessage: "Collapse"
1960
2255
  }),
@@ -2293,7 +2588,7 @@ const BlocksEditor = React__namespace.forwardRef(
2293
2588
  !isExpandedMode && /* @__PURE__ */ jsxRuntime.jsx(
2294
2589
  ExpandIconButton,
2295
2590
  {
2296
- "aria-label": formatMessage({
2591
+ label: formatMessage({
2297
2592
  id: index.getTranslation("components.Blocks.expand"),
2298
2593
  defaultMessage: "Expand"
2299
2594
  }),
@@ -2359,30 +2654,27 @@ const createDefaultForm = (contentType, components = {}) => {
2359
2654
  const Initializer = ({ disabled, name: name2, onClick }) => {
2360
2655
  const { formatMessage } = reactIntl.useIntl();
2361
2656
  const field = strapiAdmin.useField(name2);
2362
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2363
- /* @__PURE__ */ jsxRuntime.jsx(
2364
- designSystem.Box,
2365
- {
2366
- tag: "button",
2367
- background: "neutral100",
2368
- borderColor: field.error ? "danger600" : "neutral200",
2369
- hasRadius: true,
2370
- disabled,
2371
- onClick,
2372
- paddingTop: 9,
2373
- paddingBottom: 9,
2374
- type: "button",
2375
- children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
2376
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(CircleIcon, {}) }),
2377
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "primary600", variant: "pi", fontWeight: "bold", children: formatMessage({
2378
- id: index.getTranslation("components.empty-repeatable"),
2379
- defaultMessage: "No entry yet. Click on the button below to add one."
2380
- }) }) })
2381
- ] })
2382
- }
2383
- ),
2384
- field.error && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "danger600", variant: "pi", children: field.error })
2385
- ] });
2657
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
2658
+ designSystem.Box,
2659
+ {
2660
+ tag: "button",
2661
+ background: "neutral100",
2662
+ borderColor: field.error ? "danger600" : "neutral200",
2663
+ hasRadius: true,
2664
+ disabled,
2665
+ onClick,
2666
+ paddingTop: 9,
2667
+ paddingBottom: 9,
2668
+ type: "button",
2669
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
2670
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(CircleIcon, {}) }),
2671
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "primary600", variant: "pi", fontWeight: "bold", children: formatMessage({
2672
+ id: index.getTranslation("components.empty-repeatable"),
2673
+ defaultMessage: "No entry yet. Click on the button below to add one."
2674
+ }) }) })
2675
+ ] })
2676
+ }
2677
+ ) });
2386
2678
  };
2387
2679
  const CircleIcon = styledComponents.styled(Icons.PlusCircle)`
2388
2680
  width: 2.4rem;
@@ -2416,7 +2708,18 @@ const NonRepeatableComponent = ({
2416
2708
  children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children: layout.map((row, index2) => {
2417
2709
  return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
2418
2710
  const completeFieldName = `${name2}.${field.name}`;
2419
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, s: 12, xs: 12, children: children({ ...field, name: completeFieldName }) }, completeFieldName);
2711
+ return /* @__PURE__ */ jsxRuntime.jsx(
2712
+ designSystem.Grid.Item,
2713
+ {
2714
+ col: size,
2715
+ s: 12,
2716
+ xs: 12,
2717
+ direction: "column",
2718
+ alignItems: "stretch",
2719
+ children: children({ ...field, name: completeFieldName })
2720
+ },
2721
+ completeFieldName
2722
+ );
2420
2723
  }) }, index2);
2421
2724
  }) })
2422
2725
  }
@@ -2456,7 +2759,7 @@ const RepeatableComponent = ({
2456
2759
  }
2457
2760
  return void 0;
2458
2761
  }, [search, name2, value]);
2459
- const prevValue = usePrev.usePrev(value);
2762
+ const prevValue = useDebounce.usePrev(value);
2460
2763
  React__namespace.useEffect(() => {
2461
2764
  if (prevValue && prevValue.length < value.length) {
2462
2765
  setCollapseToOpen(value[value.length - 1].__temp_key__);
@@ -2594,7 +2897,18 @@ const RepeatableComponent = ({
2594
2897
  children: layout.map((row, index22) => {
2595
2898
  return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
2596
2899
  const completeFieldName = `${nameWithIndex}.${field.name}`;
2597
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, s: 12, xs: 12, children: children({ ...field, name: completeFieldName }) }, completeFieldName);
2900
+ return /* @__PURE__ */ jsxRuntime.jsx(
2901
+ designSystem.Grid.Item,
2902
+ {
2903
+ col: size,
2904
+ s: 12,
2905
+ xs: 12,
2906
+ direction: "column",
2907
+ alignItems: "stretch",
2908
+ children: children({ ...field, name: completeFieldName })
2909
+ },
2910
+ completeFieldName
2911
+ );
2598
2912
  }) }, index22);
2599
2913
  })
2600
2914
  }
@@ -2689,7 +3003,7 @@ const Component = ({
2689
3003
  /* @__PURE__ */ jsxRuntime.jsx(
2690
3004
  designSystem.IconButton,
2691
3005
  {
2692
- borderWidth: 0,
3006
+ variant: "ghost",
2693
3007
  onClick: onDeleteComponent,
2694
3008
  label: formatMessage({
2695
3009
  id: index.getTranslation("containers.Edit.delete"),
@@ -2702,7 +3016,7 @@ const Component = ({
2702
3016
  designSystem.IconButton,
2703
3017
  {
2704
3018
  ref: composedAccordionRefs,
2705
- borderWidth: 0,
3019
+ variant: "ghost",
2706
3020
  onClick: (e) => e.stopPropagation(),
2707
3021
  "data-handler-id": handlerId,
2708
3022
  label: formatMessage({
@@ -2772,7 +3086,7 @@ const ComponentInput = ({
2772
3086
  id: index.getTranslation("components.reset-entry"),
2773
3087
  defaultMessage: "Reset Entry"
2774
3088
  }),
2775
- borderWidth: 0,
3089
+ variant: "ghost",
2776
3090
  onClick: () => {
2777
3091
  field.onChange(name2, null);
2778
3092
  },
@@ -2801,11 +3115,8 @@ const AddComponentButton = ({
2801
3115
  onClick,
2802
3116
  disabled: isDisabled,
2803
3117
  background: "neutral0",
2804
- paddingTop: 3,
2805
- paddingBottom: 3,
2806
- paddingLeft: 4,
2807
- paddingRight: 4,
2808
3118
  style: { cursor: isDisabled ? "not-allowed" : "pointer" },
3119
+ variant: "tertiary",
2809
3120
  children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { tag: "span", gap: 2, children: [
2810
3121
  /* @__PURE__ */ jsxRuntime.jsx(StyledAddIcon, { "aria-hidden": true, $isOpen: isOpen, $hasError: hasError && !isOpen }),
2811
3122
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2834,10 +3145,11 @@ const StyledAddIcon = styledComponents.styled(Icons.PlusCircle)`
2834
3145
  }
2835
3146
  `;
2836
3147
  const AddComponentTitle = styledComponents.styled(designSystem.Typography)``;
2837
- const StyledButton = styledComponents.styled(designSystem.BaseButton)`
3148
+ const StyledButton = styledComponents.styled(designSystem.Button)`
2838
3149
  border-radius: 26px;
2839
3150
  border-color: ${({ theme }) => theme.colors.neutral150};
2840
3151
  box-shadow: ${({ theme }) => theme.shadows.filterShadow};
3152
+ height: 5rem;
2841
3153
 
2842
3154
  &:hover {
2843
3155
  ${AddComponentTitle} {
@@ -2849,7 +3161,7 @@ const StyledButton = styledComponents.styled(designSystem.BaseButton)`
2849
3161
  fill: ${({ theme }) => theme.colors.primary600};
2850
3162
  }
2851
3163
  > path {
2852
- fill: ${({ theme }) => theme.colors.neutral100};
3164
+ fill: ${({ theme }) => theme.colors.primary600};
2853
3165
  }
2854
3166
  }
2855
3167
  }
@@ -2980,18 +3292,6 @@ const NotAllowedInput = ({ hint, label, required, name: name2 }) => {
2980
3292
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
2981
3293
  ] });
2982
3294
  };
2983
- function useDebounce(value, delay) {
2984
- const [debouncedValue, setDebouncedValue] = React.useState(value);
2985
- React.useEffect(() => {
2986
- const handler = setTimeout(() => {
2987
- setDebouncedValue(value);
2988
- }, delay);
2989
- return () => {
2990
- clearTimeout(handler);
2991
- };
2992
- }, [value, delay]);
2993
- return debouncedValue;
2994
- }
2995
3295
  const uidApi = index.contentManagerApi.injectEndpoints({
2996
3296
  endpoints: (builder) => ({
2997
3297
  getDefaultUID: builder.query({
@@ -3026,7 +3326,10 @@ const uidApi = index.contentManagerApi.injectEndpoints({
3026
3326
  config: {
3027
3327
  params
3028
3328
  }
3029
- })
3329
+ }),
3330
+ providesTags: (_res, _error, params) => [
3331
+ { type: "UidAvailability", id: params.contentTypeUID }
3332
+ ]
3030
3333
  })
3031
3334
  })
3032
3335
  });
@@ -3038,8 +3341,10 @@ const UIDInput = React__namespace.forwardRef(
3038
3341
  const allFormValues = strapiAdmin.useForm("InputUID", (form) => form.values);
3039
3342
  const [availability, setAvailability] = React__namespace.useState();
3040
3343
  const [showRegenerate, setShowRegenerate] = React__namespace.useState(false);
3344
+ const isCloning = reactRouterDom.useMatch(index.CLONE_PATH) !== null;
3041
3345
  const field = strapiAdmin.useField(name2);
3042
- const debouncedValue = useDebounce(field.value, 300);
3346
+ const debouncedValue = useDebounce.useDebounce(field.value, 300);
3347
+ const hasChanged = debouncedValue !== field.initialValue;
3043
3348
  const { toggleNotification } = strapiAdmin.useNotification();
3044
3349
  const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
3045
3350
  const { formatMessage } = reactIntl.useIntl();
@@ -3115,8 +3420,9 @@ const UIDInput = React__namespace.forwardRef(
3115
3420
  params
3116
3421
  },
3117
3422
  {
3423
+ // Don't check availability if the value is empty or wasn't changed
3118
3424
  skip: !Boolean(
3119
- debouncedValue !== field.initialValue && debouncedValue && UID_REGEX.test(debouncedValue.trim())
3425
+ (hasChanged || isCloning) && debouncedValue && UID_REGEX.test(debouncedValue.trim())
3120
3426
  )
3121
3427
  }
3122
3428
  );
@@ -3145,6 +3451,7 @@ const UIDInput = React__namespace.forwardRef(
3145
3451
  const isLoading = isGeneratingDefaultUID || isGeneratingUID || isCheckingAvailability;
3146
3452
  const fieldRef = strapiAdmin.useFocusInputField(name2);
3147
3453
  const composedRefs = designSystem.useComposedRefs(ref, fieldRef);
3454
+ const shouldShowAvailability = (hasChanged || isCloning) && debouncedValue != null && availability && !showRegenerate;
3148
3455
  return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { hint, name: name2, error: field.error, required, children: [
3149
3456
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { action: labelAction, children: label }),
3150
3457
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3153,7 +3460,7 @@ const UIDInput = React__namespace.forwardRef(
3153
3460
  ref: composedRefs,
3154
3461
  disabled: props.disabled,
3155
3462
  endAction: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { position: "relative", gap: 1, children: [
3156
- availability && !showRegenerate && /* @__PURE__ */ jsxRuntime.jsxs(
3463
+ shouldShowAvailability && /* @__PURE__ */ jsxRuntime.jsxs(
3157
3464
  TextValidation,
3158
3465
  {
3159
3466
  alignItems: "center",
@@ -3987,7 +4294,7 @@ const EditorLayout = ({
3987
4294
  justifyContent: "flex-end",
3988
4295
  shrink: 0,
3989
4296
  width: "100%",
3990
- children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton$1, { onClick: onCollapse, children: [
4297
+ children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton$1, { onClick: onCollapse, variant: "tertiary", size: "M", children: [
3991
4298
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
3992
4299
  id: "components.Wysiwyg.collapse",
3993
4300
  defaultMessage: "Collapse"
@@ -4005,12 +4312,14 @@ const EditorLayout = ({
4005
4312
  ) }) });
4006
4313
  }
4007
4314
  return /* @__PURE__ */ jsxRuntime.jsx(
4008
- designSystem.Box,
4315
+ designSystem.Flex,
4009
4316
  {
4010
4317
  borderColor: error ? "danger600" : "neutral200",
4011
4318
  borderStyle: "solid",
4012
4319
  borderWidth: "1px",
4013
4320
  hasRadius: true,
4321
+ direction: "column",
4322
+ alignItems: "stretch",
4014
4323
  children
4015
4324
  }
4016
4325
  );
@@ -4021,11 +4330,19 @@ const ExpandWrapper = styledComponents.styled(designSystem.Flex)`
4021
4330
  const BoxWithBorder = styledComponents.styled(designSystem.Box)`
4022
4331
  border-right: 1px solid ${({ theme }) => theme.colors.neutral200};
4023
4332
  `;
4024
- const ExpandButton$1 = styledComponents.styled(designSystem.BaseButton)`
4333
+ const ExpandButton$1 = styledComponents.styled(designSystem.Button)`
4025
4334
  background-color: transparent;
4026
4335
  border: none;
4027
4336
  align-items: center;
4028
4337
 
4338
+ & > span {
4339
+ display: flex;
4340
+ justify-content: space-between;
4341
+ align-items: center;
4342
+ width: 100%;
4343
+ font-weight: ${({ theme }) => theme.fontWeights.regular};
4344
+ }
4345
+
4029
4346
  svg {
4030
4347
  margin-left: ${({ theme }) => `${theme.spaces[2]}`};
4031
4348
 
@@ -4292,40 +4609,28 @@ const quoteAndCodeHandler = (editor, markdownType) => {
4292
4609
  insertWithoutTextToEdit(editor, markdownType, line, contentLength);
4293
4610
  }
4294
4611
  };
4295
- const CustomIconButton = styledComponents.styled(designSystem.IconButton)`
4296
- padding: ${({ theme }) => theme.spaces[2]};
4297
-
4298
- svg {
4299
- width: 1.8rem;
4300
- height: 1.8rem;
4301
- }
4302
- `;
4303
- const CustomLinkIconButton = styledComponents.styled(CustomIconButton)`
4304
- svg {
4305
- width: 0.8rem;
4306
- height: 0.8rem;
4307
- }
4308
- `;
4309
4612
  const MainButtons = styledComponents.styled(designSystem.IconButtonGroup)`
4310
4613
  margin-left: ${({ theme }) => theme.spaces[4]};
4311
4614
  `;
4312
4615
  const MoreButton = styledComponents.styled(designSystem.IconButton)`
4313
4616
  margin: ${({ theme }) => `0 ${theme.spaces[2]}`};
4314
- padding: ${({ theme }) => theme.spaces[2]};
4315
-
4316
- svg {
4317
- width: 1.8rem;
4318
- height: 1.8rem;
4319
- }
4320
4617
  `;
4321
4618
  const IconButtonGroupMargin = styledComponents.styled(designSystem.IconButtonGroup)`
4322
4619
  margin-right: ${({ theme }) => `${theme.spaces[2]}`};
4323
4620
  `;
4324
- const ExpandButton = styledComponents.styled(designSystem.BaseButton)`
4621
+ const ExpandButton = styledComponents.styled(designSystem.Button)`
4325
4622
  background-color: transparent;
4326
4623
  border: none;
4327
4624
  align-items: center;
4328
4625
 
4626
+ & > span {
4627
+ display: flex;
4628
+ justify-content: space-between;
4629
+ align-items: center;
4630
+ width: 100%;
4631
+ font-weight: ${({ theme }) => theme.fontWeights.regular};
4632
+ }
4633
+
4329
4634
  svg {
4330
4635
  margin-left: ${({ theme }) => `${theme.spaces[2]}`};
4331
4636
  path {
@@ -4337,8 +4642,8 @@ const ExpandButton = styledComponents.styled(designSystem.BaseButton)`
4337
4642
  `;
4338
4643
  const WysiwygFooter = ({ onToggleExpand }) => {
4339
4644
  const { formatMessage } = reactIntl.useIntl();
4340
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 2, background: "neutral100", borderRadius: `0 0 0.4rem 0.4rem`, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "flex-end", alignItems: "flex-end", children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton, { id: "expand", onClick: onToggleExpand, children: [
4341
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
4645
+ return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 2, background: "neutral100", borderRadius: `0 0 0.4rem 0.4rem`, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "flex-end", alignItems: "flex-end", children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton, { id: "expand", onClick: onToggleExpand, variant: "tertiary", size: "M", children: [
4646
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: formatMessage({
4342
4647
  id: "components.WysiwygBottomControls.fullscreen",
4343
4648
  defaultMessage: "Expand"
4344
4649
  }) }),
@@ -4374,18 +4679,27 @@ const WysiwygNav = ({
4374
4679
  borderRadius: `0.4rem 0.4rem 0 0`,
4375
4680
  children: [
4376
4681
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { children: [
4377
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.SingleSelect, { disabled: true, placeholder: selectPlaceholder, "aria-label": selectPlaceholder, children: [
4378
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h1", children: "h1" }),
4379
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h2", children: "h2" }),
4380
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h3", children: "h3" }),
4381
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h4", children: "h4" }),
4382
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h5", children: "h5" }),
4383
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h6", children: "h6" })
4384
- ] }) }),
4682
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { children: /* @__PURE__ */ jsxRuntime.jsxs(
4683
+ designSystem.SingleSelect,
4684
+ {
4685
+ disabled: true,
4686
+ placeholder: selectPlaceholder,
4687
+ "aria-label": selectPlaceholder,
4688
+ size: "S",
4689
+ children: [
4690
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h1", children: "h1" }),
4691
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h2", children: "h2" }),
4692
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h3", children: "h3" }),
4693
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h4", children: "h4" }),
4694
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h5", children: "h5" }),
4695
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h6", children: "h6" })
4696
+ ]
4697
+ }
4698
+ ) }),
4385
4699
  /* @__PURE__ */ jsxRuntime.jsxs(MainButtons, { children: [
4386
- /* @__PURE__ */ jsxRuntime.jsx(CustomIconButton, { disabled: true, label: "Bold", name: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {}) }),
4387
- /* @__PURE__ */ jsxRuntime.jsx(CustomIconButton, { disabled: true, label: "Italic", name: "Italic", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Italic, {}) }),
4388
- /* @__PURE__ */ jsxRuntime.jsx(CustomIconButton, { disabled: true, label: "Underline", name: "Underline", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Underline, {}) })
4700
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Bold", name: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {}) }),
4701
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Italic", name: "Italic", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Italic, {}) }),
4702
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Underline", name: "Underline", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Underline, {}) })
4389
4703
  ] }),
4390
4704
  /* @__PURE__ */ jsxRuntime.jsx(MoreButton, { disabled: true, label: "More", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.More, {}) })
4391
4705
  ] }),
@@ -4412,6 +4726,7 @@ const WysiwygNav = ({
4412
4726
  placeholder: selectPlaceholder,
4413
4727
  "aria-label": selectPlaceholder,
4414
4728
  onChange: (value) => onActionClick(value, editorRef),
4729
+ size: "S",
4415
4730
  children: [
4416
4731
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h1", children: "h1" }),
4417
4732
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h2", children: "h2" }),
@@ -4423,17 +4738,9 @@ const WysiwygNav = ({
4423
4738
  }
4424
4739
  ) }),
4425
4740
  /* @__PURE__ */ jsxRuntime.jsxs(MainButtons, { children: [
4741
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { onClick: () => onActionClick("Bold", editorRef), label: "Bold", name: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {}) }),
4426
4742
  /* @__PURE__ */ jsxRuntime.jsx(
4427
- CustomIconButton,
4428
- {
4429
- onClick: () => onActionClick("Bold", editorRef),
4430
- label: "Bold",
4431
- name: "Bold",
4432
- children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {})
4433
- }
4434
- ),
4435
- /* @__PURE__ */ jsxRuntime.jsx(
4436
- CustomIconButton,
4743
+ designSystem.IconButton,
4437
4744
  {
4438
4745
  onClick: () => onActionClick("Italic", editorRef),
4439
4746
  label: "Italic",
@@ -4442,7 +4749,7 @@ const WysiwygNav = ({
4442
4749
  }
4443
4750
  ),
4444
4751
  /* @__PURE__ */ jsxRuntime.jsx(
4445
- CustomIconButton,
4752
+ designSystem.IconButton,
4446
4753
  {
4447
4754
  onClick: () => onActionClick("Underline", editorRef),
4448
4755
  label: "Underline",
@@ -4456,7 +4763,7 @@ const WysiwygNav = ({
4456
4763
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { sideOffset: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 2, children: [
4457
4764
  /* @__PURE__ */ jsxRuntime.jsxs(IconButtonGroupMargin, { children: [
4458
4765
  /* @__PURE__ */ jsxRuntime.jsx(
4459
- CustomIconButton,
4766
+ designSystem.IconButton,
4460
4767
  {
4461
4768
  onClick: () => onActionClick("Strikethrough", editorRef, handleTogglePopover),
4462
4769
  label: "Strikethrough",
@@ -4465,7 +4772,7 @@ const WysiwygNav = ({
4465
4772
  }
4466
4773
  ),
4467
4774
  /* @__PURE__ */ jsxRuntime.jsx(
4468
- CustomIconButton,
4775
+ designSystem.IconButton,
4469
4776
  {
4470
4777
  onClick: () => onActionClick("BulletList", editorRef, handleTogglePopover),
4471
4778
  label: "BulletList",
@@ -4474,7 +4781,7 @@ const WysiwygNav = ({
4474
4781
  }
4475
4782
  ),
4476
4783
  /* @__PURE__ */ jsxRuntime.jsx(
4477
- CustomIconButton,
4784
+ designSystem.IconButton,
4478
4785
  {
4479
4786
  onClick: () => onActionClick("NumberList", editorRef, handleTogglePopover),
4480
4787
  label: "NumberList",
@@ -4485,7 +4792,7 @@ const WysiwygNav = ({
4485
4792
  ] }),
4486
4793
  /* @__PURE__ */ jsxRuntime.jsxs(designSystem.IconButtonGroup, { children: [
4487
4794
  /* @__PURE__ */ jsxRuntime.jsx(
4488
- CustomIconButton,
4795
+ designSystem.IconButton,
4489
4796
  {
4490
4797
  onClick: () => onActionClick("Code", editorRef, handleTogglePopover),
4491
4798
  label: "Code",
@@ -4494,7 +4801,7 @@ const WysiwygNav = ({
4494
4801
  }
4495
4802
  ),
4496
4803
  /* @__PURE__ */ jsxRuntime.jsx(
4497
- CustomIconButton,
4804
+ designSystem.IconButton,
4498
4805
  {
4499
4806
  onClick: () => {
4500
4807
  handleTogglePopover();
@@ -4506,7 +4813,7 @@ const WysiwygNav = ({
4506
4813
  }
4507
4814
  ),
4508
4815
  /* @__PURE__ */ jsxRuntime.jsx(
4509
- CustomLinkIconButton,
4816
+ designSystem.IconButton,
4510
4817
  {
4511
4818
  onClick: () => onActionClick("Link", editorRef, handleTogglePopover),
4512
4819
  label: "Link",
@@ -4515,7 +4822,7 @@ const WysiwygNav = ({
4515
4822
  }
4516
4823
  ),
4517
4824
  /* @__PURE__ */ jsxRuntime.jsx(
4518
- CustomIconButton,
4825
+ designSystem.IconButton,
4519
4826
  {
4520
4827
  onClick: () => onActionClick("Quote", editorRef, handleTogglePopover),
4521
4828
  label: "Quote",
@@ -4593,7 +4900,7 @@ const Wysiwyg = React__namespace.forwardRef(
4593
4900
  const handleSelectAssets = (files) => {
4594
4901
  const formattedFiles = files.map((f) => ({
4595
4902
  alt: f.alternativeText || f.name,
4596
- url: usePrev.prefixFileUrlWithBackendUrl(f.url),
4903
+ url: useDebounce.prefixFileUrlWithBackendUrl(f.url),
4597
4904
  mime: f.mime
4598
4905
  }));
4599
4906
  insertFile(editorRef, formattedFiles);
@@ -4751,7 +5058,9 @@ const useFieldHint = (hint = void 0, attribute) => {
4751
5058
  if (!maximum && !minimum) {
4752
5059
  return hint;
4753
5060
  }
4754
- const units = !["biginteger", "integer", "number"].includes(attribute.type) ? formatMessage(
5061
+ const units = !["biginteger", "integer", "number", "dynamiczone", "component"].includes(
5062
+ attribute.type
5063
+ ) ? formatMessage(
4755
5064
  {
4756
5065
  id: "content-manager.form.Input.hint.character.unit",
4757
5066
  defaultMessage: "{maxValue, plural, one { character} other { characters}}"
@@ -4845,7 +5154,7 @@ const DynamicComponent = ({
4845
5154
  /* @__PURE__ */ jsxRuntime.jsx(
4846
5155
  designSystem.IconButton,
4847
5156
  {
4848
- borderWidth: 0,
5157
+ variant: "ghost",
4849
5158
  label: formatMessage(
4850
5159
  {
4851
5160
  id: index.getTranslation("components.DynamicZone.delete-label"),
@@ -4860,7 +5169,7 @@ const DynamicComponent = ({
4860
5169
  /* @__PURE__ */ jsxRuntime.jsx(
4861
5170
  designSystem.IconButton,
4862
5171
  {
4863
- borderWidth: 0,
5172
+ variant: "ghost",
4864
5173
  onClick: (e) => e.stopPropagation(),
4865
5174
  "data-handler-id": handlerId,
4866
5175
  ref: dragRef,
@@ -4921,7 +5230,18 @@ const DynamicComponent = ({
4921
5230
  ] }),
4922
5231
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(AccordionContentRadius, { background: "neutral0", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingLeft: 6, paddingRight: 6, paddingTop: 6, paddingBottom: 6, children: components[componentUid]?.layout?.map((row, rowInd) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
4923
5232
  const fieldName = `${name2}.${index$1}.${field.name}`;
4924
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, s: 12, xs: 12, children: /* @__PURE__ */ jsxRuntime.jsx(MemoizedInputRenderer, { ...field, name: fieldName }) }, fieldName);
5233
+ return /* @__PURE__ */ jsxRuntime.jsx(
5234
+ designSystem.Grid.Item,
5235
+ {
5236
+ col: size,
5237
+ s: 12,
5238
+ xs: 12,
5239
+ direction: "column",
5240
+ alignItems: "stretch",
5241
+ children: /* @__PURE__ */ jsxRuntime.jsx(MemoizedInputRenderer, { ...field, name: fieldName })
5242
+ },
5243
+ fieldName
5244
+ );
4925
5245
  }) }, rowInd)) }) }) })
4926
5246
  ] }) }) })
4927
5247
  ] });
@@ -5114,7 +5434,7 @@ const DynamicZone = ({
5114
5434
  const handleRemoveComponent = (name22, currentIndex) => () => {
5115
5435
  removeFieldRow(name22, currentIndex);
5116
5436
  };
5117
- const hasError = error !== void 0 || dynamicDisplayedComponentsLength < min || dynamicDisplayedComponentsLength > max;
5437
+ const hasError = error !== void 0;
5118
5438
  const renderButtonLabel = () => {
5119
5439
  if (addComponentIsOpen) {
5120
5440
  return formatMessage({ id: "app.utils.close-label", defaultMessage: "Close" });
@@ -5228,4 +5548,4 @@ exports.transformDocument = transformDocument;
5228
5548
  exports.useDynamicZone = useDynamicZone;
5229
5549
  exports.useFieldHint = useFieldHint;
5230
5550
  exports.useLazyComponents = useLazyComponents;
5231
- //# sourceMappingURL=Field-BG1xu38N.js.map
5551
+ //# sourceMappingURL=Field-BEDX9i_V.js.map