@strapi/content-manager 0.0.0-experimental.826f263c58b6886b849d3f03b81f7a530bc51c91 → 0.0.0-experimental.8c83c87960f2f5ddf95ae2f0acf849052f4a9ab4
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 +18 -3
- package/dist/_chunks/CardDragPreview-C0QyJgRA.js.map +1 -1
- package/dist/_chunks/CardDragPreview-DOxamsuj.mjs.map +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-CR5XdR33.mjs → ComponentConfigurationPage-BgCLcjXO.mjs} +4 -4
- package/dist/_chunks/{ComponentConfigurationPage-CR5XdR33.mjs.map → ComponentConfigurationPage-BgCLcjXO.mjs.map} +1 -1
- package/dist/_chunks/{ComponentConfigurationPage-DJcn1DrO.js → ComponentConfigurationPage-DywpTZeV.js} +5 -6
- package/dist/_chunks/{ComponentConfigurationPage-DJcn1DrO.js.map → ComponentConfigurationPage-DywpTZeV.js.map} +1 -1
- package/dist/_chunks/{ComponentIcon-BXdiCGQp.js → ComponentIcon-CRbtQEUV.js} +2 -3
- package/dist/_chunks/{ComponentIcon-BXdiCGQp.js.map → ComponentIcon-CRbtQEUV.js.map} +1 -1
- package/dist/_chunks/ComponentIcon-u4bIXTFY.mjs.map +1 -1
- package/dist/_chunks/{EditConfigurationPage-DmCIb4kD.mjs → EditConfigurationPage-BNjOAHNS.mjs} +4 -4
- package/dist/_chunks/{EditConfigurationPage-DmCIb4kD.mjs.map → EditConfigurationPage-BNjOAHNS.mjs.map} +1 -1
- package/dist/_chunks/{EditConfigurationPage-tDtWj7R2.js → EditConfigurationPage-CxRlP5if.js} +5 -6
- package/dist/_chunks/{EditConfigurationPage-tDtWj7R2.js.map → EditConfigurationPage-CxRlP5if.js.map} +1 -1
- package/dist/_chunks/{EditViewPage-CoQEnFlC.js → EditViewPage-BRewdTqE.js} +101 -51
- package/dist/_chunks/EditViewPage-BRewdTqE.js.map +1 -0
- package/dist/_chunks/{EditViewPage-DvaV7U9b.mjs → EditViewPage-CD_hqc1J.mjs} +102 -51
- package/dist/_chunks/EditViewPage-CD_hqc1J.mjs.map +1 -0
- package/dist/_chunks/{Field-Cz_J9551.mjs → Field-BPkQ-3Ku.mjs} +631 -279
- package/dist/_chunks/Field-BPkQ-3Ku.mjs.map +1 -0
- package/dist/_chunks/{Field-ZdrmmQ4Y.js → Field-DwvmENVf.js} +634 -283
- package/dist/_chunks/Field-DwvmENVf.js.map +1 -0
- package/dist/_chunks/FieldTypeIcon-CMlNO8PE.mjs.map +1 -1
- package/dist/_chunks/FieldTypeIcon-Dnwq_IRF.js.map +1 -1
- package/dist/_chunks/{Form-Bpig5rch.js → Form-C_Gwv8P_.js} +55 -38
- package/dist/_chunks/Form-C_Gwv8P_.js.map +1 -0
- package/dist/_chunks/{Form-Dxmihyw8.mjs → Form-Czi0cf_2.mjs} +55 -37
- package/dist/_chunks/Form-Czi0cf_2.mjs.map +1 -0
- package/dist/_chunks/{History-BfX6XmZK.js → History-C1TKAig-.js} +175 -129
- package/dist/_chunks/History-C1TKAig-.js.map +1 -0
- package/dist/_chunks/{History-BZP8n7KT.mjs → History-CIQHyi4T.mjs} +176 -129
- package/dist/_chunks/History-CIQHyi4T.mjs.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-B3CXj8PY.js → ListConfigurationPage-D-NGRLYu.js} +62 -51
- package/dist/_chunks/ListConfigurationPage-D-NGRLYu.js.map +1 -0
- package/dist/_chunks/{ListConfigurationPage-DxKuVkKz.mjs → ListConfigurationPage-DcZsfyEL.mjs} +63 -52
- package/dist/_chunks/ListConfigurationPage-DcZsfyEL.mjs.map +1 -0
- package/dist/_chunks/{ListViewPage-D5D3tVPq.mjs → ListViewPage-C10McTK1.mjs} +152 -128
- package/dist/_chunks/ListViewPage-C10McTK1.mjs.map +1 -0
- package/dist/_chunks/{ListViewPage-Bk9VO__I.js → ListViewPage-xv5IQoZp.js} +155 -132
- package/dist/_chunks/ListViewPage-xv5IQoZp.js.map +1 -0
- package/dist/_chunks/{NoContentTypePage-DnMeuQCj.mjs → NoContentTypePage-CPc0Cd3S.mjs} +2 -2
- package/dist/_chunks/{NoContentTypePage-DnMeuQCj.mjs.map → NoContentTypePage-CPc0Cd3S.mjs.map} +1 -1
- package/dist/_chunks/{NoContentTypePage-DsB2F7Z1.js → NoContentTypePage-Dzw5Yj5u.js} +2 -2
- package/dist/_chunks/{NoContentTypePage-DsB2F7Z1.js.map → NoContentTypePage-Dzw5Yj5u.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-BQDM64_b.js → NoPermissionsPage-DAe5CDCC.js} +2 -2
- package/dist/_chunks/{NoPermissionsPage-BQDM64_b.js.map → NoPermissionsPage-DAe5CDCC.js.map} +1 -1
- package/dist/_chunks/{NoPermissionsPage-OyoME_Tf.mjs → NoPermissionsPage-wfPBh2_0.mjs} +2 -2
- package/dist/_chunks/{NoPermissionsPage-OyoME_Tf.mjs.map → NoPermissionsPage-wfPBh2_0.mjs.map} +1 -1
- package/dist/_chunks/Preview-B7LyGT_b.js +290 -0
- package/dist/_chunks/Preview-B7LyGT_b.js.map +1 -0
- package/dist/_chunks/Preview-BVFFm7uB.mjs +272 -0
- package/dist/_chunks/Preview-BVFFm7uB.mjs.map +1 -0
- package/dist/_chunks/{Relations-B6B3A3mb.js → Relations-BmYR1AjY.js} +76 -43
- package/dist/_chunks/Relations-BmYR1AjY.js.map +1 -0
- package/dist/_chunks/{Relations-BOYZmuWy.mjs → Relations-JPhWxk-s.mjs} +76 -42
- package/dist/_chunks/Relations-JPhWxk-s.mjs.map +1 -0
- package/dist/_chunks/{en-BN1bvFK7.js → en-BK8Xyl5I.js} +35 -18
- package/dist/_chunks/{en-BN1bvFK7.js.map → en-BK8Xyl5I.js.map} +1 -1
- package/dist/_chunks/{en-Dzv55oQw.mjs → en-Dtk_ot79.mjs} +35 -18
- package/dist/_chunks/{en-Dzv55oQw.mjs.map → en-Dtk_ot79.mjs.map} +1 -1
- package/dist/_chunks/{es-EUonQTon.js → es-9K52xZIr.js} +2 -2
- package/dist/_chunks/{ja-CcFe8diO.js.map → es-9K52xZIr.js.map} +1 -1
- package/dist/_chunks/{es-CeXiYflN.mjs → es-D34tqjMw.mjs} +2 -2
- package/dist/_chunks/{es-CeXiYflN.mjs.map → es-D34tqjMw.mjs.map} +1 -1
- package/dist/_chunks/{fr-CD9VFbPM.mjs → fr--pg5jUbt.mjs} +13 -3
- package/dist/_chunks/{fr-CD9VFbPM.mjs.map → fr--pg5jUbt.mjs.map} +1 -1
- package/dist/_chunks/{fr-B7kGGg3E.js → fr-B2Kyv8Z9.js} +13 -3
- package/dist/_chunks/{fr-B7kGGg3E.js.map → fr-B2Kyv8Z9.js.map} +1 -1
- package/dist/_chunks/hooks-BAaaKPS_.js.map +1 -1
- package/dist/_chunks/{index-DzN3kBgx.js → index-C2Q_PLWj.js} +1165 -880
- package/dist/_chunks/index-C2Q_PLWj.js.map +1 -0
- package/dist/_chunks/{index-VHviNMeW.mjs → index-DLIkNVnQ.mjs} +1185 -900
- package/dist/_chunks/index-DLIkNVnQ.mjs.map +1 -0
- package/dist/_chunks/{ja-CcFe8diO.js → ja-7sfIbjxE.js} +2 -2
- package/dist/_chunks/{es-EUonQTon.js.map → ja-7sfIbjxE.js.map} +1 -1
- package/dist/_chunks/{ja-CtsUxOvk.mjs → ja-BHqhDq4V.mjs} +2 -2
- package/dist/_chunks/{ja-CtsUxOvk.mjs.map → ja-BHqhDq4V.mjs.map} +1 -1
- package/dist/_chunks/{layout-b91XRlD2.js → layout-7AsWJzZJ.js} +41 -24
- package/dist/_chunks/layout-7AsWJzZJ.js.map +1 -0
- package/dist/_chunks/{layout-CPn1PM6x.mjs → layout-qE8qkNH_.mjs} +42 -24
- package/dist/_chunks/layout-qE8qkNH_.mjs.map +1 -0
- package/dist/_chunks/{objects-gigeqt7s.js → objects-BcXOv6_9.js} +2 -4
- package/dist/_chunks/{objects-gigeqt7s.js.map → objects-BcXOv6_9.js.map} +1 -1
- package/dist/_chunks/{objects-mKMAmfec.mjs → objects-D6yBsdmx.mjs} +2 -4
- package/dist/_chunks/{objects-mKMAmfec.mjs.map → objects-D6yBsdmx.mjs.map} +1 -1
- package/dist/_chunks/{relations-BsqxS6tR.mjs → relations-BjHH_1Am.mjs} +6 -7
- package/dist/_chunks/relations-BjHH_1Am.mjs.map +1 -0
- package/dist/_chunks/{relations-CA7IYmcP.js → relations-EifVzf_2.js} +6 -7
- package/dist/_chunks/relations-EifVzf_2.js.map +1 -0
- package/dist/_chunks/{usePrev-B9w_-eYc.js → useDebounce-CtcjDB3L.js} +14 -1
- package/dist/_chunks/useDebounce-CtcjDB3L.js.map +1 -0
- package/dist/_chunks/useDebounce-DmuSJIF3.mjs +29 -0
- package/dist/_chunks/useDebounce-DmuSJIF3.mjs.map +1 -0
- package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js → useDragAndDrop-BMtgCYzL.js} +5 -9
- package/dist/_chunks/{useDragAndDrop-J0TUUbR6.js.map → useDragAndDrop-BMtgCYzL.js.map} +1 -1
- package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs → useDragAndDrop-DJ6jqvZN.mjs} +4 -7
- package/dist/_chunks/{useDragAndDrop-DdHgKsqq.mjs.map → useDragAndDrop-DJ6jqvZN.mjs.map} +1 -1
- package/dist/admin/index.js +2 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +8 -7
- package/dist/admin/src/exports.d.ts +1 -1
- package/dist/admin/src/history/components/VersionInputRenderer.d.ts +1 -1
- package/dist/admin/src/history/index.d.ts +3 -0
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/hooks/useDocument.d.ts +32 -1
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/pages/EditView/EditViewPage.d.ts +9 -1
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +8 -3
- package/dist/admin/src/pages/EditView/components/DocumentStatus.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/constants.d.ts +4 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations.d.ts +20 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygStyles.d.ts +6 -58
- package/dist/admin/src/pages/EditView/components/Header.d.ts +11 -11
- package/dist/admin/src/pages/ListView/components/BulkActions/Actions.d.ts +3 -30
- package/dist/admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.d.ts +2 -2
- package/dist/admin/src/preview/components/PreviewContent.d.ts +2 -0
- package/dist/admin/src/preview/components/PreviewHeader.d.ts +2 -0
- package/dist/admin/src/preview/components/PreviewSidePanel.d.ts +3 -0
- package/dist/admin/src/preview/constants.d.ts +1 -0
- package/dist/admin/src/preview/index.d.ts +4 -0
- package/dist/admin/src/preview/pages/Preview.d.ts +11 -0
- package/dist/admin/src/preview/routes.d.ts +3 -0
- package/dist/admin/src/preview/services/preview.d.ts +3 -0
- package/dist/admin/src/router.d.ts +1 -1
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +19 -20
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/src/utils/validation.d.ts +4 -1
- package/dist/server/index.js +616 -299
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +616 -298
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/uid.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +15 -1
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/dimensions.d.ts +4 -2
- package/dist/server/src/controllers/validation/dimensions.d.ts.map +1 -1
- package/dist/server/src/history/services/history.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +4 -4
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +4 -4
- package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
- package/dist/server/src/preview/constants.d.ts +2 -0
- package/dist/server/src/preview/constants.d.ts.map +1 -0
- package/dist/server/src/preview/controllers/index.d.ts +2 -0
- package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
- package/dist/server/src/preview/controllers/preview.d.ts +13 -0
- package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
- package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
- package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
- package/dist/server/src/preview/index.d.ts +4 -0
- package/dist/server/src/preview/index.d.ts.map +1 -0
- package/dist/server/src/preview/routes/index.d.ts +8 -0
- package/dist/server/src/preview/routes/index.d.ts.map +1 -0
- package/dist/server/src/preview/routes/preview.d.ts +4 -0
- package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
- package/dist/server/src/preview/services/index.d.ts +16 -0
- package/dist/server/src/preview/services/index.d.ts.map +1 -0
- package/dist/server/src/preview/services/preview-config.d.ts +32 -0
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -0
- package/dist/server/src/preview/services/preview.d.ts +12 -0
- package/dist/server/src/preview/services/preview.d.ts.map +1 -0
- package/dist/server/src/preview/utils.d.ts +19 -0
- package/dist/server/src/preview/utils.d.ts.map +1 -0
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +8 -8
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +4 -4
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/permission-checker.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/index.d.ts +2 -2
- package/dist/server/src/services/utils/configuration/layouts.d.ts +2 -2
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +3 -1
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/dist/shared/contracts/index.d.ts +1 -0
- package/dist/shared/contracts/index.d.ts.map +1 -1
- package/dist/shared/contracts/preview.d.ts +27 -0
- package/dist/shared/contracts/preview.d.ts.map +1 -0
- package/dist/shared/index.js +4 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/index.mjs +4 -0
- package/dist/shared/index.mjs.map +1 -1
- package/package.json +15 -15
- package/dist/_chunks/EditViewPage-CoQEnFlC.js.map +0 -1
- package/dist/_chunks/EditViewPage-DvaV7U9b.mjs.map +0 -1
- package/dist/_chunks/Field-Cz_J9551.mjs.map +0 -1
- package/dist/_chunks/Field-ZdrmmQ4Y.js.map +0 -1
- package/dist/_chunks/Form-Bpig5rch.js.map +0 -1
- package/dist/_chunks/Form-Dxmihyw8.mjs.map +0 -1
- package/dist/_chunks/History-BZP8n7KT.mjs.map +0 -1
- package/dist/_chunks/History-BfX6XmZK.js.map +0 -1
- package/dist/_chunks/ListConfigurationPage-B3CXj8PY.js.map +0 -1
- package/dist/_chunks/ListConfigurationPage-DxKuVkKz.mjs.map +0 -1
- package/dist/_chunks/ListViewPage-Bk9VO__I.js.map +0 -1
- package/dist/_chunks/ListViewPage-D5D3tVPq.mjs.map +0 -1
- package/dist/_chunks/Relations-B6B3A3mb.js.map +0 -1
- package/dist/_chunks/Relations-BOYZmuWy.mjs.map +0 -1
- package/dist/_chunks/index-DzN3kBgx.js.map +0 -1
- package/dist/_chunks/index-VHviNMeW.mjs.map +0 -1
- package/dist/_chunks/layout-CPn1PM6x.mjs.map +0 -1
- package/dist/_chunks/layout-b91XRlD2.js.map +0 -1
- package/dist/_chunks/relations-BsqxS6tR.mjs.map +0 -1
- package/dist/_chunks/relations-CA7IYmcP.js.map +0 -1
- package/dist/_chunks/usePrev-B9w_-eYc.js.map +0 -1
- package/dist/_chunks/usePrev-DH6iah0A.mjs +0 -16
- package/dist/_chunks/usePrev-DH6iah0A.mjs.map +0 -1
- package/strapi-server.js +0 -3
@@ -5,19 +5,19 @@ 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-
|
8
|
+
const index = require("./index-C2Q_PLWj.js");
|
9
9
|
const fractionalIndexing = require("fractional-indexing");
|
10
|
-
const Relations = require("./Relations-
|
10
|
+
const Relations = require("./Relations-BmYR1AjY.js");
|
11
11
|
const Icons = require("@strapi/icons");
|
12
12
|
const styledComponents = require("styled-components");
|
13
|
-
const ComponentIcon = require("./ComponentIcon-
|
13
|
+
const ComponentIcon = require("./ComponentIcon-CRbtQEUV.js");
|
14
14
|
const reactDndHtml5Backend = require("react-dnd-html5-backend");
|
15
|
-
const useDragAndDrop = require("./useDragAndDrop-
|
16
|
-
const objects = require("./objects-
|
15
|
+
const useDragAndDrop = require("./useDragAndDrop-BMtgCYzL.js");
|
16
|
+
const objects = require("./objects-BcXOv6_9.js");
|
17
17
|
const slate = require("slate");
|
18
18
|
const slateHistory = require("slate-history");
|
19
19
|
const slateReact = require("slate-react");
|
20
|
-
const
|
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");
|
@@ -37,8 +37,7 @@ require("highlight.js/styles/solarized-dark.css");
|
|
37
37
|
require("codemirror5/addon/display/placeholder");
|
38
38
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
39
39
|
function _interopNamespace(e) {
|
40
|
-
if (e && e.__esModule)
|
41
|
-
return e;
|
40
|
+
if (e && e.__esModule) return e;
|
42
41
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
43
42
|
if (e) {
|
44
43
|
for (const k in e) {
|
@@ -194,6 +193,220 @@ const useLazyComponents = (componentUids = []) => {
|
|
194
193
|
}, []);
|
195
194
|
return { isLazyLoading: loading, lazyComponentStore, cleanup };
|
196
195
|
};
|
196
|
+
const codeLanguages = [
|
197
|
+
{
|
198
|
+
value: "asm",
|
199
|
+
label: "Assembly"
|
200
|
+
},
|
201
|
+
{
|
202
|
+
value: "bash",
|
203
|
+
label: "Bash"
|
204
|
+
},
|
205
|
+
{
|
206
|
+
value: "c",
|
207
|
+
label: "C"
|
208
|
+
},
|
209
|
+
{
|
210
|
+
value: "clojure",
|
211
|
+
label: "Clojure"
|
212
|
+
},
|
213
|
+
{
|
214
|
+
value: "cobol",
|
215
|
+
label: "COBOL"
|
216
|
+
},
|
217
|
+
{
|
218
|
+
value: "cpp",
|
219
|
+
label: "C++"
|
220
|
+
},
|
221
|
+
{
|
222
|
+
value: "csharp",
|
223
|
+
label: "C#"
|
224
|
+
},
|
225
|
+
{
|
226
|
+
value: "css",
|
227
|
+
label: "CSS"
|
228
|
+
},
|
229
|
+
{
|
230
|
+
value: "dart",
|
231
|
+
label: "Dart"
|
232
|
+
},
|
233
|
+
{
|
234
|
+
value: "dockerfile",
|
235
|
+
label: "Dockerfile"
|
236
|
+
},
|
237
|
+
{
|
238
|
+
value: "elixir",
|
239
|
+
label: "Elixir"
|
240
|
+
},
|
241
|
+
{
|
242
|
+
value: "erlang",
|
243
|
+
label: "Erlang"
|
244
|
+
},
|
245
|
+
{
|
246
|
+
value: "fortran",
|
247
|
+
label: "Fortran"
|
248
|
+
},
|
249
|
+
{
|
250
|
+
value: "fsharp",
|
251
|
+
label: "F#"
|
252
|
+
},
|
253
|
+
{
|
254
|
+
value: "go",
|
255
|
+
label: "Go"
|
256
|
+
},
|
257
|
+
{
|
258
|
+
value: "graphql",
|
259
|
+
label: "GraphQL"
|
260
|
+
},
|
261
|
+
{
|
262
|
+
value: "groovy",
|
263
|
+
label: "Groovy"
|
264
|
+
},
|
265
|
+
{
|
266
|
+
value: "haskell",
|
267
|
+
label: "Haskell"
|
268
|
+
},
|
269
|
+
{
|
270
|
+
value: "haxe",
|
271
|
+
label: "Haxe"
|
272
|
+
},
|
273
|
+
{
|
274
|
+
value: "html",
|
275
|
+
label: "HTML"
|
276
|
+
},
|
277
|
+
{
|
278
|
+
value: "ini",
|
279
|
+
label: "INI"
|
280
|
+
},
|
281
|
+
{
|
282
|
+
value: "java",
|
283
|
+
label: "Java"
|
284
|
+
},
|
285
|
+
{
|
286
|
+
value: "javascript",
|
287
|
+
label: "JavaScript"
|
288
|
+
},
|
289
|
+
{
|
290
|
+
value: "jsx",
|
291
|
+
label: "JavaScript (React)"
|
292
|
+
},
|
293
|
+
{
|
294
|
+
value: "json",
|
295
|
+
label: "JSON"
|
296
|
+
},
|
297
|
+
{
|
298
|
+
value: "julia",
|
299
|
+
label: "Julia"
|
300
|
+
},
|
301
|
+
{
|
302
|
+
value: "kotlin",
|
303
|
+
label: "Kotlin"
|
304
|
+
},
|
305
|
+
{
|
306
|
+
value: "latex",
|
307
|
+
label: "LaTeX"
|
308
|
+
},
|
309
|
+
{
|
310
|
+
value: "lua",
|
311
|
+
label: "Lua"
|
312
|
+
},
|
313
|
+
{
|
314
|
+
value: "markdown",
|
315
|
+
label: "Markdown"
|
316
|
+
},
|
317
|
+
{
|
318
|
+
value: "matlab",
|
319
|
+
label: "MATLAB"
|
320
|
+
},
|
321
|
+
{
|
322
|
+
value: "makefile",
|
323
|
+
label: "Makefile"
|
324
|
+
},
|
325
|
+
{
|
326
|
+
value: "objectivec",
|
327
|
+
label: "Objective-C"
|
328
|
+
},
|
329
|
+
{
|
330
|
+
value: "perl",
|
331
|
+
label: "Perl"
|
332
|
+
},
|
333
|
+
{
|
334
|
+
value: "php",
|
335
|
+
label: "PHP"
|
336
|
+
},
|
337
|
+
{
|
338
|
+
value: "plaintext",
|
339
|
+
label: "Plain text"
|
340
|
+
},
|
341
|
+
{
|
342
|
+
value: "powershell",
|
343
|
+
label: "PowerShell"
|
344
|
+
},
|
345
|
+
{
|
346
|
+
value: "python",
|
347
|
+
label: "Python"
|
348
|
+
},
|
349
|
+
{
|
350
|
+
value: "r",
|
351
|
+
label: "R"
|
352
|
+
},
|
353
|
+
{
|
354
|
+
value: "ruby",
|
355
|
+
label: "Ruby"
|
356
|
+
},
|
357
|
+
{
|
358
|
+
value: "rust",
|
359
|
+
label: "Rust"
|
360
|
+
},
|
361
|
+
{
|
362
|
+
value: "sas",
|
363
|
+
label: "SAS"
|
364
|
+
},
|
365
|
+
{
|
366
|
+
value: "scala",
|
367
|
+
label: "Scala"
|
368
|
+
},
|
369
|
+
{
|
370
|
+
value: "scheme",
|
371
|
+
label: "Scheme"
|
372
|
+
},
|
373
|
+
{
|
374
|
+
value: "shell",
|
375
|
+
label: "Shell"
|
376
|
+
},
|
377
|
+
{
|
378
|
+
value: "sql",
|
379
|
+
label: "SQL"
|
380
|
+
},
|
381
|
+
{
|
382
|
+
value: "stata",
|
383
|
+
label: "Stata"
|
384
|
+
},
|
385
|
+
{
|
386
|
+
value: "swift",
|
387
|
+
label: "Swift"
|
388
|
+
},
|
389
|
+
{
|
390
|
+
value: "typescript",
|
391
|
+
label: "TypeScript"
|
392
|
+
},
|
393
|
+
{
|
394
|
+
value: "tsx",
|
395
|
+
label: "TypeScript (React)"
|
396
|
+
},
|
397
|
+
{
|
398
|
+
value: "vbnet",
|
399
|
+
label: "VB.NET"
|
400
|
+
},
|
401
|
+
{
|
402
|
+
value: "xml",
|
403
|
+
label: "XML"
|
404
|
+
},
|
405
|
+
{
|
406
|
+
value: "yaml",
|
407
|
+
label: "YAML"
|
408
|
+
}
|
409
|
+
];
|
197
410
|
const baseHandleConvert = (editor, attributesToSet) => {
|
198
411
|
const [_, lastNodePath] = slate.Editor.last(editor, []);
|
199
412
|
slate.Transforms.unwrapNodes(editor, {
|
@@ -264,6 +477,7 @@ const CodeBlock = styledComponents.styled.pre`
|
|
264
477
|
overflow: auto;
|
265
478
|
padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[4]}`};
|
266
479
|
flex-shrink: 1;
|
480
|
+
|
267
481
|
& > code {
|
268
482
|
font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,
|
269
483
|
monospace;
|
@@ -272,10 +486,62 @@ const CodeBlock = styledComponents.styled.pre`
|
|
272
486
|
max-width: 100%;
|
273
487
|
}
|
274
488
|
`;
|
489
|
+
const CodeEditor = (props) => {
|
490
|
+
const { editor } = useBlocksEditorContext("ImageDialog");
|
491
|
+
const editorIsFocused = slateReact.useFocused();
|
492
|
+
const imageIsSelected = slateReact.useSelected();
|
493
|
+
const { formatMessage } = reactIntl.useIntl();
|
494
|
+
const [isSelectOpen, setIsSelectOpen] = React__namespace.useState(false);
|
495
|
+
const shouldDisplayLanguageSelect = editorIsFocused && imageIsSelected || isSelectOpen;
|
496
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { position: "relative", width: "100%", children: [
|
497
|
+
/* @__PURE__ */ jsxRuntime.jsx(CodeBlock, { ...props.attributes, children: /* @__PURE__ */ jsxRuntime.jsx("code", { children: props.children }) }),
|
498
|
+
shouldDisplayLanguageSelect && /* @__PURE__ */ jsxRuntime.jsx(
|
499
|
+
designSystem.Box,
|
500
|
+
{
|
501
|
+
position: "absolute",
|
502
|
+
background: "neutral0",
|
503
|
+
borderColor: "neutral150",
|
504
|
+
borderStyle: "solid",
|
505
|
+
borderWidth: "0.5px",
|
506
|
+
shadow: "tableShadow",
|
507
|
+
top: "100%",
|
508
|
+
marginTop: 1,
|
509
|
+
right: 0,
|
510
|
+
padding: 1,
|
511
|
+
hasRadius: true,
|
512
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
513
|
+
designSystem.SingleSelect,
|
514
|
+
{
|
515
|
+
onChange: (open) => {
|
516
|
+
slate.Transforms.setNodes(
|
517
|
+
editor,
|
518
|
+
{ language: open.toString() },
|
519
|
+
{ match: (node) => !slate.Editor.isEditor(node) && node.type === "code" }
|
520
|
+
);
|
521
|
+
},
|
522
|
+
value: props.element.type === "code" && props.element.language || "plaintext",
|
523
|
+
onOpenChange: (open) => {
|
524
|
+
setIsSelectOpen(open);
|
525
|
+
if (!open) {
|
526
|
+
slateReact.ReactEditor.focus(editor);
|
527
|
+
}
|
528
|
+
},
|
529
|
+
onCloseAutoFocus: (e) => e.preventDefault(),
|
530
|
+
"aria-label": formatMessage({
|
531
|
+
id: "components.Blocks.blocks.code.languageLabel",
|
532
|
+
defaultMessage: "Select a language"
|
533
|
+
}),
|
534
|
+
children: codeLanguages.map(({ value, label }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value, children: label }, value))
|
535
|
+
}
|
536
|
+
)
|
537
|
+
}
|
538
|
+
)
|
539
|
+
] });
|
540
|
+
};
|
275
541
|
const codeBlocks = {
|
276
542
|
code: {
|
277
|
-
renderElement: (props) => /* @__PURE__ */ jsxRuntime.jsx(
|
278
|
-
icon: Icons.
|
543
|
+
renderElement: (props) => /* @__PURE__ */ jsxRuntime.jsx(CodeEditor, { ...props }),
|
544
|
+
icon: Icons.CodeBlock,
|
279
545
|
label: {
|
280
546
|
id: "components.Blocks.blocks.code",
|
281
547
|
defaultMessage: "Code block"
|
@@ -283,7 +549,7 @@ const codeBlocks = {
|
|
283
549
|
matchNode: (node) => node.type === "code",
|
284
550
|
isInBlocksSelector: true,
|
285
551
|
handleConvert(editor) {
|
286
|
-
baseHandleConvert(editor, { type: "code" });
|
552
|
+
baseHandleConvert(editor, { type: "code", language: "plaintext" });
|
287
553
|
},
|
288
554
|
handleEnterKey(editor) {
|
289
555
|
pressEnterTwiceToExit(editor);
|
@@ -464,8 +730,7 @@ const ImageDialog = () => {
|
|
464
730
|
const [isOpen, setIsOpen] = React__namespace.useState(true);
|
465
731
|
const { editor } = useBlocksEditorContext("ImageDialog");
|
466
732
|
const components = strapiAdmin.useStrapiApp("ImageDialog", (state) => state.components);
|
467
|
-
if (!components || !isOpen)
|
468
|
-
return null;
|
733
|
+
if (!components || !isOpen) return null;
|
469
734
|
const MediaLibraryDialog = components["media-library"];
|
470
735
|
const insertImages = (images) => {
|
471
736
|
slate.Transforms.unwrapNodes(editor, {
|
@@ -474,14 +739,12 @@ const ImageDialog = () => {
|
|
474
739
|
});
|
475
740
|
const nodeEntryBeingReplaced = slate.Editor.above(editor, {
|
476
741
|
match(node) {
|
477
|
-
if (slate.Editor.isEditor(node))
|
478
|
-
return false;
|
742
|
+
if (slate.Editor.isEditor(node)) return false;
|
479
743
|
const isInlineNode = ["text", "link"].includes(node.type);
|
480
744
|
return !isInlineNode;
|
481
745
|
}
|
482
746
|
});
|
483
|
-
if (!nodeEntryBeingReplaced)
|
484
|
-
return;
|
747
|
+
if (!nodeEntryBeingReplaced) return;
|
485
748
|
const [, pathToInsert] = nodeEntryBeingReplaced;
|
486
749
|
slate.Transforms.removeNodes(editor);
|
487
750
|
const nodesToInsert = images.map((image) => {
|
@@ -501,7 +764,7 @@ const ImageDialog = () => {
|
|
501
764
|
const nodeImage = {
|
502
765
|
...expectedImage,
|
503
766
|
alternativeText: expectedImage.alternativeText || expectedImage.name,
|
504
|
-
url:
|
767
|
+
url: useDebounce.prefixFileUrlWithBackendUrl(image.url)
|
505
768
|
};
|
506
769
|
return nodeImage;
|
507
770
|
});
|
@@ -623,18 +886,12 @@ const LinkContent = React__namespace.forwardRef(
|
|
623
886
|
const [popoverOpen, setPopoverOpen] = React__namespace.useState(
|
624
887
|
editor.lastInsertedLinkPath ? slate.Path.equals(path, editor.lastInsertedLinkPath) : false
|
625
888
|
);
|
626
|
-
const linkRef = React__namespace.useRef(null);
|
627
889
|
const elementText = link.children.map((child) => child.text).join("");
|
628
890
|
const [linkText, setLinkText] = React__namespace.useState(elementText);
|
629
891
|
const [linkUrl, setLinkUrl] = React__namespace.useState(link.url);
|
630
892
|
const linkInputRef = React__namespace.useRef(null);
|
631
|
-
const
|
893
|
+
const isLastInsertedLink = editor.lastInsertedLinkPath ? !slate.Path.equals(path, editor.lastInsertedLinkPath) : true;
|
632
894
|
const [isSaveDisabled, setIsSaveDisabled] = React__namespace.useState(false);
|
633
|
-
const handleOpenEditPopover = (e) => {
|
634
|
-
e.preventDefault();
|
635
|
-
setPopoverOpen(true);
|
636
|
-
setShowRemoveButton(true);
|
637
|
-
};
|
638
895
|
const onLinkChange = (e) => {
|
639
896
|
setIsSaveDisabled(false);
|
640
897
|
setLinkUrl(e.target.value);
|
@@ -655,33 +912,32 @@ const LinkContent = React__namespace.forwardRef(
|
|
655
912
|
editLink(editor, { url: linkUrl, text: linkText });
|
656
913
|
setPopoverOpen(false);
|
657
914
|
editor.lastInsertedLinkPath = null;
|
915
|
+
slateReact.ReactEditor.focus(editor);
|
658
916
|
};
|
659
|
-
const
|
660
|
-
setPopoverOpen(false);
|
917
|
+
const handleClose = () => {
|
661
918
|
if (link.url === "") {
|
662
919
|
removeLink(editor);
|
663
920
|
}
|
921
|
+
setPopoverOpen(false);
|
664
922
|
slateReact.ReactEditor.focus(editor);
|
665
923
|
};
|
666
|
-
const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText;
|
667
|
-
const composedRefs = designSystem.useComposedRefs(linkRef, forwardedRef);
|
668
924
|
React__namespace.useEffect(() => {
|
669
|
-
if (popoverOpen)
|
670
|
-
linkInputRef.current?.focus();
|
925
|
+
if (popoverOpen) linkInputRef.current?.focus();
|
671
926
|
}, [popoverOpen]);
|
672
|
-
|
673
|
-
|
927
|
+
const inputNotDirty = !linkText || !linkUrl || link.url && link.url === linkUrl && elementText && elementText === linkText;
|
928
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { open: popoverOpen, children: [
|
929
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
674
930
|
StyledBaseLink,
|
675
931
|
{
|
676
932
|
...attributes,
|
677
|
-
ref:
|
933
|
+
ref: forwardedRef,
|
678
934
|
href: link.url,
|
679
|
-
onClick:
|
935
|
+
onClick: () => setPopoverOpen(true),
|
680
936
|
color: "primary600",
|
681
937
|
children
|
682
938
|
}
|
683
|
-
),
|
684
|
-
|
939
|
+
) }),
|
940
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { onPointerDownOutside: handleClose, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 4, direction: "column", gap: 4, children: [
|
685
941
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { width: "368px", children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 1, alignItems: "stretch", children: [
|
686
942
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
|
687
943
|
id: "components.Blocks.popover.text",
|
@@ -727,7 +983,7 @@ const LinkContent = React__namespace.forwardRef(
|
|
727
983
|
{
|
728
984
|
variant: "danger-light",
|
729
985
|
onClick: () => removeLink(editor),
|
730
|
-
$visible:
|
986
|
+
$visible: isLastInsertedLink,
|
731
987
|
children: formatMessage({
|
732
988
|
id: "components.Blocks.popover.remove",
|
733
989
|
defaultMessage: "Remove"
|
@@ -735,11 +991,11 @@ const LinkContent = React__namespace.forwardRef(
|
|
735
991
|
}
|
736
992
|
),
|
737
993
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
738
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick:
|
994
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick: handleClose, children: formatMessage({
|
739
995
|
id: "components.Blocks.popover.cancel",
|
740
996
|
defaultMessage: "Cancel"
|
741
997
|
}) }),
|
742
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, {
|
998
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { disabled: Boolean(inputNotDirty) || isSaveDisabled, onClick: handleSave, children: formatMessage({
|
743
999
|
id: "components.Blocks.popover.save",
|
744
1000
|
defaultMessage: "Save"
|
745
1001
|
}) })
|
@@ -821,8 +1077,7 @@ const isText$1 = (node) => {
|
|
821
1077
|
return slate.Node.isNode(node) && !slate.Editor.isEditor(node) && node.type === "text";
|
822
1078
|
};
|
823
1079
|
const handleBackspaceKeyOnList = (editor, event) => {
|
824
|
-
if (!editor.selection)
|
825
|
-
return;
|
1080
|
+
if (!editor.selection) return;
|
826
1081
|
const [currentListItem, currentListItemPath] = slate.Editor.parent(editor, editor.selection.anchor);
|
827
1082
|
const [currentList, currentListPath] = slate.Editor.parent(editor, currentListItemPath);
|
828
1083
|
const isListEmpty = currentList.children.length === 1 && isText$1(currentListItem.children[0]) && currentListItem.children[0].text === "";
|
@@ -931,8 +1186,7 @@ const handleEnterKeyOnList = (editor) => {
|
|
931
1186
|
};
|
932
1187
|
const handleConvertToList = (editor, format) => {
|
933
1188
|
const convertedPath = baseHandleConvert(editor, { type: "list-item" });
|
934
|
-
if (!convertedPath)
|
935
|
-
return;
|
1189
|
+
if (!convertedPath) return;
|
936
1190
|
slate.Transforms.wrapNodes(editor, { type: "list", format, children: [] }, { at: convertedPath });
|
937
1191
|
};
|
938
1192
|
const handleTabOnList = (editor) => {
|
@@ -944,8 +1198,7 @@ const handleTabOnList = (editor) => {
|
|
944
1198
|
}
|
945
1199
|
const [currentListItem, currentListItemPath] = currentListItemEntry;
|
946
1200
|
const [currentList] = slate.Editor.parent(editor, currentListItemPath);
|
947
|
-
if (currentListItem === currentList.children[0])
|
948
|
-
return;
|
1201
|
+
if (currentListItem === currentList.children[0]) return;
|
949
1202
|
const currentListItemIndex = currentList.children.findIndex((item) => item === currentListItem);
|
950
1203
|
const previousNode = currentList.children[currentListItemIndex - 1];
|
951
1204
|
if (previousNode.type === "list") {
|
@@ -1180,7 +1433,7 @@ const ToolbarButton = ({
|
|
1180
1433
|
width: 7,
|
1181
1434
|
height: 7,
|
1182
1435
|
hasRadius: true,
|
1183
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, {
|
1436
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { fill: disabled ? "neutral300" : enabledColor })
|
1184
1437
|
}
|
1185
1438
|
)
|
1186
1439
|
}
|
@@ -1312,8 +1565,7 @@ const isListNode = (node) => {
|
|
1312
1565
|
const ListButton = ({ block, format }) => {
|
1313
1566
|
const { editor, disabled, blocks } = useBlocksEditorContext("ListButton");
|
1314
1567
|
const isListActive = () => {
|
1315
|
-
if (!editor.selection)
|
1316
|
-
return false;
|
1568
|
+
if (!editor.selection) return false;
|
1317
1569
|
const currentListEntry = slate.Editor.above(editor, {
|
1318
1570
|
match: (node) => !slate.Editor.isEditor(node) && node.type === "list",
|
1319
1571
|
at: editor.selection.anchor
|
@@ -1325,6 +1577,26 @@ const ListButton = ({ block, format }) => {
|
|
1325
1577
|
}
|
1326
1578
|
return false;
|
1327
1579
|
};
|
1580
|
+
const isListDisabled = () => {
|
1581
|
+
if (disabled) {
|
1582
|
+
return true;
|
1583
|
+
}
|
1584
|
+
if (!editor.selection) {
|
1585
|
+
return false;
|
1586
|
+
}
|
1587
|
+
const anchorNodeEntry = slate.Editor.above(editor, {
|
1588
|
+
at: editor.selection.anchor,
|
1589
|
+
match: (node) => !slate.Editor.isEditor(node) && node.type !== "text"
|
1590
|
+
});
|
1591
|
+
const focusNodeEntry = slate.Editor.above(editor, {
|
1592
|
+
at: editor.selection.focus,
|
1593
|
+
match: (node) => !slate.Editor.isEditor(node) && node.type !== "text"
|
1594
|
+
});
|
1595
|
+
if (!anchorNodeEntry || !focusNodeEntry) {
|
1596
|
+
return false;
|
1597
|
+
}
|
1598
|
+
return anchorNodeEntry[0] !== focusNodeEntry[0];
|
1599
|
+
};
|
1328
1600
|
const toggleList = (format2) => {
|
1329
1601
|
let currentListEntry;
|
1330
1602
|
if (editor.selection) {
|
@@ -1358,7 +1630,7 @@ const ListButton = ({ block, format }) => {
|
|
1358
1630
|
name: format,
|
1359
1631
|
label: block.label,
|
1360
1632
|
isActive: isListActive(),
|
1361
|
-
disabled,
|
1633
|
+
disabled: isListDisabled(),
|
1362
1634
|
handleClick: () => toggleList(format)
|
1363
1635
|
}
|
1364
1636
|
);
|
@@ -1367,8 +1639,7 @@ const LinkButton = ({ disabled }) => {
|
|
1367
1639
|
const { editor } = useBlocksEditorContext("LinkButton");
|
1368
1640
|
const isLinkActive = () => {
|
1369
1641
|
const { selection } = editor;
|
1370
|
-
if (!selection)
|
1371
|
-
return false;
|
1642
|
+
if (!selection) return false;
|
1372
1643
|
const [match] = Array.from(
|
1373
1644
|
slate.Editor.nodes(editor, {
|
1374
1645
|
at: slate.Editor.unhangRange(editor, selection),
|
@@ -1502,6 +1773,7 @@ const DragItem = styledComponents.styled(designSystem.Flex)`
|
|
1502
1773
|
}
|
1503
1774
|
`;
|
1504
1775
|
const DragIconButton = styledComponents.styled(designSystem.IconButton)`
|
1776
|
+
user-select: none;
|
1505
1777
|
display: flex;
|
1506
1778
|
align-items: center;
|
1507
1779
|
justify-content: center;
|
@@ -1525,7 +1797,7 @@ const DragIconButton = styledComponents.styled(designSystem.IconButton)`
|
|
1525
1797
|
}
|
1526
1798
|
svg {
|
1527
1799
|
height: auto;
|
1528
|
-
width: ${({ theme }) => theme.spaces[3]};
|
1800
|
+
min-width: ${({ theme }) => theme.spaces[3]};
|
1529
1801
|
|
1530
1802
|
path {
|
1531
1803
|
fill: ${({ theme }) => theme.colors.neutral700};
|
@@ -1573,8 +1845,7 @@ const DragAndDropElement = ({
|
|
1573
1845
|
displayedValue: children
|
1574
1846
|
},
|
1575
1847
|
onDropItem(currentIndex, newIndex) {
|
1576
|
-
if (newIndex)
|
1577
|
-
handleMoveBlock(newIndex, currentIndex);
|
1848
|
+
if (newIndex) handleMoveBlock(newIndex, currentIndex);
|
1578
1849
|
}
|
1579
1850
|
});
|
1580
1851
|
const composedBoxRefs = designSystem.useComposedRefs(blockRef, dropRef);
|
@@ -1630,6 +1901,7 @@ const DragAndDropElement = ({
|
|
1630
1901
|
DragIconButton,
|
1631
1902
|
{
|
1632
1903
|
tag: "div",
|
1904
|
+
contentEditable: false,
|
1633
1905
|
role: "button",
|
1634
1906
|
tabIndex: 0,
|
1635
1907
|
withTooltip: false,
|
@@ -1642,7 +1914,7 @@ const DragAndDropElement = ({
|
|
1642
1914
|
disabled,
|
1643
1915
|
draggable: true,
|
1644
1916
|
$dragHandleTopMargin: dragHandleTopMargin,
|
1645
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Drag, { color: "
|
1917
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Drag, { color: "primary500" })
|
1646
1918
|
}
|
1647
1919
|
),
|
1648
1920
|
children
|
@@ -1717,8 +1989,7 @@ const BlocksContent = ({ placeholder, ariaLabelId }) => {
|
|
1717
1989
|
[modifiers2]
|
1718
1990
|
);
|
1719
1991
|
const handleMoveBlocks = (editor2, event) => {
|
1720
|
-
if (!editor2.selection)
|
1721
|
-
return;
|
1992
|
+
if (!editor2.selection) return;
|
1722
1993
|
const start = slate.Range.start(editor2.selection);
|
1723
1994
|
const currentIndex = [start.path[0]];
|
1724
1995
|
let newIndexPosition = 0;
|
@@ -1855,8 +2126,7 @@ const BlocksContent = ({ placeholder, ariaLabelId }) => {
|
|
1855
2126
|
}
|
1856
2127
|
};
|
1857
2128
|
const handleScrollSelectionIntoView = () => {
|
1858
|
-
if (!editor.selection)
|
1859
|
-
return;
|
2129
|
+
if (!editor.selection) return;
|
1860
2130
|
const domRange = slateReact.ReactEditor.toDOMRange(editor, editor.selection);
|
1861
2131
|
const domRect = domRange.getBoundingClientRect();
|
1862
2132
|
const blocksInput = blocksRef.current;
|
@@ -1966,7 +2236,7 @@ const EditorLayout$1 = ({
|
|
1966
2236
|
/* @__PURE__ */ jsxRuntime.jsx(
|
1967
2237
|
CollapseIconButton,
|
1968
2238
|
{
|
1969
|
-
|
2239
|
+
label: formatMessage({
|
1970
2240
|
id: index.getTranslation("components.Blocks.collapse"),
|
1971
2241
|
defaultMessage: "Collapse"
|
1972
2242
|
}),
|
@@ -2050,8 +2320,7 @@ const InlineCode = styledComponents.styled.code`
|
|
2050
2320
|
`;
|
2051
2321
|
const baseCheckIsActive = (editor, name2) => {
|
2052
2322
|
const marks = slate.Editor.marks(editor);
|
2053
|
-
if (!marks)
|
2054
|
-
return false;
|
2323
|
+
if (!marks) return false;
|
2055
2324
|
return Boolean(marks[name2]);
|
2056
2325
|
};
|
2057
2326
|
const baseHandleToggle = (editor, name2) => {
|
@@ -2305,7 +2574,7 @@ const BlocksEditor = React__namespace.forwardRef(
|
|
2305
2574
|
!isExpandedMode && /* @__PURE__ */ jsxRuntime.jsx(
|
2306
2575
|
ExpandIconButton,
|
2307
2576
|
{
|
2308
|
-
|
2577
|
+
label: formatMessage({
|
2309
2578
|
id: index.getTranslation("components.Blocks.expand"),
|
2310
2579
|
defaultMessage: "Expand"
|
2311
2580
|
}),
|
@@ -2371,47 +2640,44 @@ const createDefaultForm = (contentType, components = {}) => {
|
|
2371
2640
|
const Initializer = ({ disabled, name: name2, onClick }) => {
|
2372
2641
|
const { formatMessage } = reactIntl.useIntl();
|
2373
2642
|
const field = strapiAdmin.useField(name2);
|
2374
|
-
return /* @__PURE__ */ jsxRuntime.
|
2375
|
-
|
2376
|
-
|
2377
|
-
|
2378
|
-
|
2379
|
-
|
2380
|
-
|
2381
|
-
|
2382
|
-
|
2383
|
-
|
2384
|
-
|
2385
|
-
|
2386
|
-
|
2387
|
-
|
2388
|
-
|
2389
|
-
|
2390
|
-
|
2391
|
-
|
2392
|
-
|
2393
|
-
|
2394
|
-
|
2395
|
-
|
2396
|
-
|
2397
|
-
|
2643
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
2644
|
+
designSystem.Box,
|
2645
|
+
{
|
2646
|
+
tag: "button",
|
2647
|
+
background: disabled ? "neutral150" : "neutral100",
|
2648
|
+
borderColor: field.error ? "danger600" : "neutral200",
|
2649
|
+
hasRadius: true,
|
2650
|
+
disabled,
|
2651
|
+
onClick,
|
2652
|
+
paddingTop: 9,
|
2653
|
+
paddingBottom: 9,
|
2654
|
+
type: "button",
|
2655
|
+
style: { cursor: disabled ? "not-allowed" : "pointer" },
|
2656
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", gap: 2, children: [
|
2657
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", color: disabled ? "neutral500" : "primary600", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.PlusCircle, { width: "3.2rem", height: "3.2rem" }) }),
|
2658
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
2659
|
+
designSystem.Typography,
|
2660
|
+
{
|
2661
|
+
textColor: disabled ? "neutral600" : "primary600",
|
2662
|
+
variant: "pi",
|
2663
|
+
fontWeight: "bold",
|
2664
|
+
children: formatMessage({
|
2665
|
+
id: index.getTranslation("components.empty-repeatable"),
|
2666
|
+
defaultMessage: "No entry yet. Click to add one."
|
2667
|
+
})
|
2668
|
+
}
|
2669
|
+
) })
|
2670
|
+
] })
|
2671
|
+
}
|
2672
|
+
) });
|
2398
2673
|
};
|
2399
|
-
const CircleIcon = styledComponents.styled(Icons.PlusCircle)`
|
2400
|
-
width: 2.4rem;
|
2401
|
-
height: 2.4rem;
|
2402
|
-
> circle {
|
2403
|
-
fill: ${({ theme }) => theme.colors.primary200};
|
2404
|
-
}
|
2405
|
-
> path {
|
2406
|
-
fill: ${({ theme }) => theme.colors.primary600};
|
2407
|
-
}
|
2408
|
-
`;
|
2409
2674
|
const NonRepeatableComponent = ({
|
2410
2675
|
attribute,
|
2411
2676
|
name: name2,
|
2412
2677
|
children,
|
2413
2678
|
layout
|
2414
2679
|
}) => {
|
2680
|
+
const { formatMessage } = reactIntl.useIntl();
|
2415
2681
|
const { value } = strapiAdmin.useField(name2);
|
2416
2682
|
const level = Relations.useComponent("NonRepeatableComponent", (state) => state.level);
|
2417
2683
|
const isNested = level > 0;
|
@@ -2426,9 +2692,24 @@ const NonRepeatableComponent = ({
|
|
2426
2692
|
hasRadius: isNested,
|
2427
2693
|
borderColor: isNested ? "neutral200" : void 0,
|
2428
2694
|
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { direction: "column", alignItems: "stretch", gap: 6, children: layout.map((row, index2) => {
|
2429
|
-
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 4, children: row.map(({ size, ...field }) => {
|
2695
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
|
2430
2696
|
const completeFieldName = `${name2}.${field.name}`;
|
2431
|
-
|
2697
|
+
const translatedLabel = formatMessage({
|
2698
|
+
id: `content-manager.components.${attribute.component}.${field.name}`,
|
2699
|
+
defaultMessage: field.label
|
2700
|
+
});
|
2701
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
2702
|
+
designSystem.Grid.Item,
|
2703
|
+
{
|
2704
|
+
col: size,
|
2705
|
+
s: 12,
|
2706
|
+
xs: 12,
|
2707
|
+
direction: "column",
|
2708
|
+
alignItems: "stretch",
|
2709
|
+
children: children({ ...field, label: translatedLabel, name: completeFieldName })
|
2710
|
+
},
|
2711
|
+
completeFieldName
|
2712
|
+
);
|
2432
2713
|
}) }, index2);
|
2433
2714
|
}) })
|
2434
2715
|
}
|
@@ -2447,13 +2728,34 @@ const RepeatableComponent = ({
|
|
2447
2728
|
const { search: searchString } = reactRouterDom.useLocation();
|
2448
2729
|
const search = React__namespace.useMemo(() => new URLSearchParams(searchString), [searchString]);
|
2449
2730
|
const { components } = index.useDoc();
|
2450
|
-
const {
|
2731
|
+
const {
|
2732
|
+
value = [],
|
2733
|
+
error,
|
2734
|
+
rawError
|
2735
|
+
} = strapiAdmin.useField(name2);
|
2451
2736
|
const addFieldRow = strapiAdmin.useForm("RepeatableComponent", (state) => state.addFieldRow);
|
2452
2737
|
const moveFieldRow = strapiAdmin.useForm("RepeatableComponent", (state) => state.moveFieldRow);
|
2453
2738
|
const removeFieldRow = strapiAdmin.useForm("RepeatableComponent", (state) => state.removeFieldRow);
|
2454
2739
|
const { max = Infinity } = attribute;
|
2455
2740
|
const [collapseToOpen, setCollapseToOpen] = React__namespace.useState("");
|
2456
2741
|
const [liveText, setLiveText] = React__namespace.useState("");
|
2742
|
+
React__namespace.useEffect(() => {
|
2743
|
+
const hasNestedErrors = rawError && Array.isArray(rawError) && rawError.length > 0;
|
2744
|
+
const hasNestedValue = value && Array.isArray(value) && value.length > 0;
|
2745
|
+
if (hasNestedErrors && hasNestedValue) {
|
2746
|
+
const errorOpenItems = rawError.map((_, idx) => {
|
2747
|
+
return value[idx] ? value[idx].__temp_key__ : null;
|
2748
|
+
}).filter((value2) => !!value2);
|
2749
|
+
if (errorOpenItems && errorOpenItems.length > 0) {
|
2750
|
+
setCollapseToOpen((collapseToOpen2) => {
|
2751
|
+
if (!errorOpenItems.includes(collapseToOpen2)) {
|
2752
|
+
return errorOpenItems[0];
|
2753
|
+
}
|
2754
|
+
return collapseToOpen2;
|
2755
|
+
});
|
2756
|
+
}
|
2757
|
+
}
|
2758
|
+
}, [rawError, value]);
|
2457
2759
|
const componentTmpKeyWithFocussedField = React__namespace.useMemo(() => {
|
2458
2760
|
if (search.has("field")) {
|
2459
2761
|
const fieldParam = search.get("field");
|
@@ -2468,7 +2770,7 @@ const RepeatableComponent = ({
|
|
2468
2770
|
}
|
2469
2771
|
return void 0;
|
2470
2772
|
}, [search, name2, value]);
|
2471
|
-
const prevValue =
|
2773
|
+
const prevValue = useDebounce.usePrev(value);
|
2472
2774
|
React__namespace.useEffect(() => {
|
2473
2775
|
if (prevValue && prevValue.length < value.length) {
|
2474
2776
|
setCollapseToOpen(value[value.length - 1].__temp_key__);
|
@@ -2604,9 +2906,28 @@ const RepeatableComponent = ({
|
|
2604
2906
|
onGrabItem: handleGrabItem,
|
2605
2907
|
__temp_key__: key,
|
2606
2908
|
children: layout.map((row, index22) => {
|
2607
|
-
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid, { gap: 4, children: row.map(({ size, ...field }) => {
|
2909
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
|
2608
2910
|
const completeFieldName = `${nameWithIndex}.${field.name}`;
|
2609
|
-
|
2911
|
+
const translatedLabel = formatMessage({
|
2912
|
+
id: `content-manager.components.${attribute.component}.${field.name}`,
|
2913
|
+
defaultMessage: field.label
|
2914
|
+
});
|
2915
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
2916
|
+
designSystem.Grid.Item,
|
2917
|
+
{
|
2918
|
+
col: size,
|
2919
|
+
s: 12,
|
2920
|
+
xs: 12,
|
2921
|
+
direction: "column",
|
2922
|
+
alignItems: "stretch",
|
2923
|
+
children: children({
|
2924
|
+
...field,
|
2925
|
+
label: translatedLabel,
|
2926
|
+
name: completeFieldName
|
2927
|
+
})
|
2928
|
+
},
|
2929
|
+
completeFieldName
|
2930
|
+
);
|
2610
2931
|
}) }, index22);
|
2611
2932
|
})
|
2612
2933
|
}
|
@@ -2651,7 +2972,7 @@ const TextButtonCustom = styledComponents.styled(designSystem.TextButton)`
|
|
2651
2972
|
}
|
2652
2973
|
|
2653
2974
|
@media (prefers-reduced-motion: no-preference) {
|
2654
|
-
transition: background-color 120ms ${(props) => props.theme.easings.easeOutQuad};
|
2975
|
+
transition: background-color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};
|
2655
2976
|
}
|
2656
2977
|
`;
|
2657
2978
|
const Component = ({
|
@@ -2701,7 +3022,7 @@ const Component = ({
|
|
2701
3022
|
/* @__PURE__ */ jsxRuntime.jsx(
|
2702
3023
|
designSystem.IconButton,
|
2703
3024
|
{
|
2704
|
-
|
3025
|
+
variant: "ghost",
|
2705
3026
|
onClick: onDeleteComponent,
|
2706
3027
|
label: formatMessage({
|
2707
3028
|
id: index.getTranslation("containers.Edit.delete"),
|
@@ -2714,7 +3035,7 @@ const Component = ({
|
|
2714
3035
|
designSystem.IconButton,
|
2715
3036
|
{
|
2716
3037
|
ref: composedAccordionRefs,
|
2717
|
-
|
3038
|
+
variant: "ghost",
|
2718
3039
|
onClick: (e) => e.stopPropagation(),
|
2719
3040
|
"data-handler-id": handlerId,
|
2720
3041
|
label: formatMessage({
|
@@ -2784,7 +3105,7 @@ const ComponentInput = ({
|
|
2784
3105
|
id: index.getTranslation("components.reset-entry"),
|
2785
3106
|
defaultMessage: "Reset Entry"
|
2786
3107
|
}),
|
2787
|
-
|
3108
|
+
variant: "ghost",
|
2788
3109
|
onClick: () => {
|
2789
3110
|
field.onChange(name2, null);
|
2790
3111
|
},
|
@@ -2813,11 +3134,8 @@ const AddComponentButton = ({
|
|
2813
3134
|
onClick,
|
2814
3135
|
disabled: isDisabled,
|
2815
3136
|
background: "neutral0",
|
2816
|
-
paddingTop: 3,
|
2817
|
-
paddingBottom: 3,
|
2818
|
-
paddingLeft: 4,
|
2819
|
-
paddingRight: 4,
|
2820
3137
|
style: { cursor: isDisabled ? "not-allowed" : "pointer" },
|
3138
|
+
variant: "tertiary",
|
2821
3139
|
children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { tag: "span", gap: 2, children: [
|
2822
3140
|
/* @__PURE__ */ jsxRuntime.jsx(StyledAddIcon, { "aria-hidden": true, $isOpen: isOpen, $hasError: hasError && !isOpen }),
|
2823
3141
|
/* @__PURE__ */ jsxRuntime.jsx(
|
@@ -2846,10 +3164,11 @@ const StyledAddIcon = styledComponents.styled(Icons.PlusCircle)`
|
|
2846
3164
|
}
|
2847
3165
|
`;
|
2848
3166
|
const AddComponentTitle = styledComponents.styled(designSystem.Typography)``;
|
2849
|
-
const StyledButton = styledComponents.styled(designSystem.
|
3167
|
+
const StyledButton = styledComponents.styled(designSystem.Button)`
|
2850
3168
|
border-radius: 26px;
|
2851
3169
|
border-color: ${({ theme }) => theme.colors.neutral150};
|
2852
3170
|
box-shadow: ${({ theme }) => theme.shadows.filterShadow};
|
3171
|
+
height: 5rem;
|
2853
3172
|
|
2854
3173
|
&:hover {
|
2855
3174
|
${AddComponentTitle} {
|
@@ -2861,7 +3180,7 @@ const StyledButton = styledComponents.styled(designSystem.BaseButton)`
|
|
2861
3180
|
fill: ${({ theme }) => theme.colors.primary600};
|
2862
3181
|
}
|
2863
3182
|
> path {
|
2864
|
-
fill: ${({ theme }) => theme.colors.
|
3183
|
+
fill: ${({ theme }) => theme.colors.primary600};
|
2865
3184
|
}
|
2866
3185
|
}
|
2867
3186
|
}
|
@@ -2919,7 +3238,7 @@ const ComponentBox = styledComponents.styled(designSystem.Flex)`
|
|
2919
3238
|
cursor: pointer;
|
2920
3239
|
|
2921
3240
|
@media (prefers-reduced-motion: no-preference) {
|
2922
|
-
transition: color 120ms ${(props) => props.theme.easings.easeOutQuad};
|
3241
|
+
transition: color 120ms ${(props) => props.theme.motion.easings.easeOutQuad};
|
2923
3242
|
}
|
2924
3243
|
|
2925
3244
|
&:focus,
|
@@ -2992,18 +3311,6 @@ const NotAllowedInput = ({ hint, label, required, name: name2 }) => {
|
|
2992
3311
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
|
2993
3312
|
] });
|
2994
3313
|
};
|
2995
|
-
function useDebounce(value, delay) {
|
2996
|
-
const [debouncedValue, setDebouncedValue] = React.useState(value);
|
2997
|
-
React.useEffect(() => {
|
2998
|
-
const handler = setTimeout(() => {
|
2999
|
-
setDebouncedValue(value);
|
3000
|
-
}, delay);
|
3001
|
-
return () => {
|
3002
|
-
clearTimeout(handler);
|
3003
|
-
};
|
3004
|
-
}, [value, delay]);
|
3005
|
-
return debouncedValue;
|
3006
|
-
}
|
3007
3314
|
const uidApi = index.contentManagerApi.injectEndpoints({
|
3008
3315
|
endpoints: (builder) => ({
|
3009
3316
|
getDefaultUID: builder.query({
|
@@ -3038,7 +3345,10 @@ const uidApi = index.contentManagerApi.injectEndpoints({
|
|
3038
3345
|
config: {
|
3039
3346
|
params
|
3040
3347
|
}
|
3041
|
-
})
|
3348
|
+
}),
|
3349
|
+
providesTags: (_res, _error, params) => [
|
3350
|
+
{ type: "UidAvailability", id: params.contentTypeUID }
|
3351
|
+
]
|
3042
3352
|
})
|
3043
3353
|
})
|
3044
3354
|
});
|
@@ -3050,8 +3360,10 @@ const UIDInput = React__namespace.forwardRef(
|
|
3050
3360
|
const allFormValues = strapiAdmin.useForm("InputUID", (form) => form.values);
|
3051
3361
|
const [availability, setAvailability] = React__namespace.useState();
|
3052
3362
|
const [showRegenerate, setShowRegenerate] = React__namespace.useState(false);
|
3363
|
+
const isCloning = reactRouterDom.useMatch(index.CLONE_PATH) !== null;
|
3053
3364
|
const field = strapiAdmin.useField(name2);
|
3054
|
-
const debouncedValue = useDebounce(field.value, 300);
|
3365
|
+
const debouncedValue = useDebounce.useDebounce(field.value, 300);
|
3366
|
+
const hasChanged = debouncedValue !== field.initialValue;
|
3055
3367
|
const { toggleNotification } = strapiAdmin.useNotification();
|
3056
3368
|
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
3057
3369
|
const { formatMessage } = reactIntl.useIntl();
|
@@ -3127,8 +3439,9 @@ const UIDInput = React__namespace.forwardRef(
|
|
3127
3439
|
params
|
3128
3440
|
},
|
3129
3441
|
{
|
3442
|
+
// Don't check availability if the value is empty or wasn't changed
|
3130
3443
|
skip: !Boolean(
|
3131
|
-
|
3444
|
+
(hasChanged || isCloning) && debouncedValue && UID_REGEX.test(debouncedValue.trim())
|
3132
3445
|
)
|
3133
3446
|
}
|
3134
3447
|
);
|
@@ -3157,6 +3470,7 @@ const UIDInput = React__namespace.forwardRef(
|
|
3157
3470
|
const isLoading = isGeneratingDefaultUID || isGeneratingUID || isCheckingAvailability;
|
3158
3471
|
const fieldRef = strapiAdmin.useFocusInputField(name2);
|
3159
3472
|
const composedRefs = designSystem.useComposedRefs(ref, fieldRef);
|
3473
|
+
const shouldShowAvailability = (hasChanged || isCloning) && debouncedValue != null && availability && !showRegenerate;
|
3160
3474
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { hint, name: name2, error: field.error, required, children: [
|
3161
3475
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { action: labelAction, children: label }),
|
3162
3476
|
/* @__PURE__ */ jsxRuntime.jsx(
|
@@ -3165,7 +3479,7 @@ const UIDInput = React__namespace.forwardRef(
|
|
3165
3479
|
ref: composedRefs,
|
3166
3480
|
disabled: props.disabled,
|
3167
3481
|
endAction: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { position: "relative", gap: 1, children: [
|
3168
|
-
|
3482
|
+
shouldShowAvailability && /* @__PURE__ */ jsxRuntime.jsxs(
|
3169
3483
|
TextValidation,
|
3170
3484
|
{
|
3171
3485
|
alignItems: "center",
|
@@ -3454,8 +3768,7 @@ const Wrapper = styledComponents.styled.div`
|
|
3454
3768
|
`;
|
3455
3769
|
var listRE = /^(\s*)(>[> ]*|[*+-] \[[x ]\]\s|[*+-]\s|(\d+)([.)]))(\s*)/, emptyListRE = /^(\s*)(>[> ]*|[*+-] \[[x ]\]|[*+-]|(\d+)[.)])(\s*)$/, unorderedListRE = /[*+-]\s/;
|
3456
3770
|
function newlineAndIndentContinueMarkdownList(cm) {
|
3457
|
-
if (cm.getOption("disableInput"))
|
3458
|
-
return CodeMirror__default.default.Pass;
|
3771
|
+
if (cm.getOption("disableInput")) return CodeMirror__default.default.Pass;
|
3459
3772
|
var ranges = cm.listSelections(), replacements = [];
|
3460
3773
|
for (var i = 0; i < ranges.length; i++) {
|
3461
3774
|
var pos = ranges[i].head;
|
@@ -3489,8 +3802,7 @@ function newlineAndIndentContinueMarkdownList(cm) {
|
|
3489
3802
|
var numbered = !(unorderedListRE.test(match[2]) || match[2].indexOf(">") >= 0);
|
3490
3803
|
var bullet = numbered ? parseInt(match[3], 10) + 1 + match[4] : match[2].replace("x", " ");
|
3491
3804
|
replacements[i] = "\n" + indent + bullet + after;
|
3492
|
-
if (numbered)
|
3493
|
-
incrementRemainingMarkdownListNumbers(cm, pos);
|
3805
|
+
if (numbered) incrementRemainingMarkdownListNumbers(cm, pos);
|
3494
3806
|
}
|
3495
3807
|
}
|
3496
3808
|
cm.replaceSelections(replacements);
|
@@ -3508,10 +3820,8 @@ function incrementRemainingMarkdownListNumbers(cm, pos) {
|
|
3508
3820
|
var newNumber = parseInt(startItem[3], 10) + lookAhead - skipCount;
|
3509
3821
|
var nextNumber = parseInt(nextItem[3], 10), itemNumber = nextNumber;
|
3510
3822
|
if (startIndent === nextIndent && !isNaN(nextNumber)) {
|
3511
|
-
if (newNumber === nextNumber)
|
3512
|
-
|
3513
|
-
if (newNumber > nextNumber)
|
3514
|
-
itemNumber = newNumber + 1;
|
3823
|
+
if (newNumber === nextNumber) itemNumber = nextNumber + 1;
|
3824
|
+
if (newNumber > nextNumber) itemNumber = newNumber + 1;
|
3515
3825
|
cm.replaceRange(
|
3516
3826
|
nextLine.replace(listRE, nextIndent + itemNumber + nextItem[4] + nextItem[5]),
|
3517
3827
|
{
|
@@ -3524,10 +3834,8 @@ function incrementRemainingMarkdownListNumbers(cm, pos) {
|
|
3524
3834
|
}
|
3525
3835
|
);
|
3526
3836
|
} else {
|
3527
|
-
if (startIndent.length > nextIndent.length)
|
3528
|
-
|
3529
|
-
if (startIndent.length < nextIndent.length && lookAhead === 1)
|
3530
|
-
return;
|
3837
|
+
if (startIndent.length > nextIndent.length) return;
|
3838
|
+
if (startIndent.length < nextIndent.length && lookAhead === 1) return;
|
3531
3839
|
skipCount += 1;
|
3532
3840
|
}
|
3533
3841
|
}
|
@@ -3999,7 +4307,7 @@ const EditorLayout = ({
|
|
3999
4307
|
justifyContent: "flex-end",
|
4000
4308
|
shrink: 0,
|
4001
4309
|
width: "100%",
|
4002
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton$1, { onClick: onCollapse, children: [
|
4310
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(ExpandButton$1, { onClick: onCollapse, variant: "tertiary", size: "M", children: [
|
4003
4311
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
|
4004
4312
|
id: "components.Wysiwyg.collapse",
|
4005
4313
|
defaultMessage: "Collapse"
|
@@ -4017,12 +4325,14 @@ const EditorLayout = ({
|
|
4017
4325
|
) }) });
|
4018
4326
|
}
|
4019
4327
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
4020
|
-
designSystem.
|
4328
|
+
designSystem.Flex,
|
4021
4329
|
{
|
4022
4330
|
borderColor: error ? "danger600" : "neutral200",
|
4023
4331
|
borderStyle: "solid",
|
4024
4332
|
borderWidth: "1px",
|
4025
4333
|
hasRadius: true,
|
4334
|
+
direction: "column",
|
4335
|
+
alignItems: "stretch",
|
4026
4336
|
children
|
4027
4337
|
}
|
4028
4338
|
);
|
@@ -4033,11 +4343,19 @@ const ExpandWrapper = styledComponents.styled(designSystem.Flex)`
|
|
4033
4343
|
const BoxWithBorder = styledComponents.styled(designSystem.Box)`
|
4034
4344
|
border-right: 1px solid ${({ theme }) => theme.colors.neutral200};
|
4035
4345
|
`;
|
4036
|
-
const ExpandButton$1 = styledComponents.styled(designSystem.
|
4346
|
+
const ExpandButton$1 = styledComponents.styled(designSystem.Button)`
|
4037
4347
|
background-color: transparent;
|
4038
4348
|
border: none;
|
4039
4349
|
align-items: center;
|
4040
4350
|
|
4351
|
+
& > span {
|
4352
|
+
display: flex;
|
4353
|
+
justify-content: space-between;
|
4354
|
+
align-items: center;
|
4355
|
+
width: 100%;
|
4356
|
+
font-weight: ${({ theme }) => theme.fontWeights.regular};
|
4357
|
+
}
|
4358
|
+
|
4041
4359
|
svg {
|
4042
4360
|
margin-left: ${({ theme }) => `${theme.spaces[2]}`};
|
4043
4361
|
|
@@ -4304,42 +4622,28 @@ const quoteAndCodeHandler = (editor, markdownType) => {
|
|
4304
4622
|
insertWithoutTextToEdit(editor, markdownType, line, contentLength);
|
4305
4623
|
}
|
4306
4624
|
};
|
4307
|
-
const CustomIconButton = styledComponents.styled(designSystem.IconButton)`
|
4308
|
-
padding: ${({ theme }) => theme.spaces[2]};
|
4309
|
-
/* Trick to prevent the outline from overflowing because of the general outline-offset */
|
4310
|
-
outline-offset: -2px !important;
|
4311
|
-
|
4312
|
-
svg {
|
4313
|
-
width: 1.8rem;
|
4314
|
-
height: 1.8rem;
|
4315
|
-
}
|
4316
|
-
`;
|
4317
|
-
const CustomLinkIconButton = styledComponents.styled(CustomIconButton)`
|
4318
|
-
svg {
|
4319
|
-
width: 0.8rem;
|
4320
|
-
height: 0.8rem;
|
4321
|
-
}
|
4322
|
-
`;
|
4323
4625
|
const MainButtons = styledComponents.styled(designSystem.IconButtonGroup)`
|
4324
4626
|
margin-left: ${({ theme }) => theme.spaces[4]};
|
4325
4627
|
`;
|
4326
4628
|
const MoreButton = styledComponents.styled(designSystem.IconButton)`
|
4327
4629
|
margin: ${({ theme }) => `0 ${theme.spaces[2]}`};
|
4328
|
-
padding: ${({ theme }) => theme.spaces[2]};
|
4329
|
-
|
4330
|
-
svg {
|
4331
|
-
width: 1.8rem;
|
4332
|
-
height: 1.8rem;
|
4333
|
-
}
|
4334
4630
|
`;
|
4335
4631
|
const IconButtonGroupMargin = styledComponents.styled(designSystem.IconButtonGroup)`
|
4336
4632
|
margin-right: ${({ theme }) => `${theme.spaces[2]}`};
|
4337
4633
|
`;
|
4338
|
-
const ExpandButton = styledComponents.styled(designSystem.
|
4634
|
+
const ExpandButton = styledComponents.styled(designSystem.Button)`
|
4339
4635
|
background-color: transparent;
|
4340
4636
|
border: none;
|
4341
4637
|
align-items: center;
|
4342
4638
|
|
4639
|
+
& > span {
|
4640
|
+
display: flex;
|
4641
|
+
justify-content: space-between;
|
4642
|
+
align-items: center;
|
4643
|
+
width: 100%;
|
4644
|
+
font-weight: ${({ theme }) => theme.fontWeights.regular};
|
4645
|
+
}
|
4646
|
+
|
4343
4647
|
svg {
|
4344
4648
|
margin-left: ${({ theme }) => `${theme.spaces[2]}`};
|
4345
4649
|
path {
|
@@ -4351,8 +4655,8 @@ const ExpandButton = styledComponents.styled(designSystem.BaseButton)`
|
|
4351
4655
|
`;
|
4352
4656
|
const WysiwygFooter = ({ onToggleExpand }) => {
|
4353
4657
|
const { formatMessage } = reactIntl.useIntl();
|
4354
|
-
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: [
|
4355
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage({
|
4658
|
+
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: [
|
4659
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: formatMessage({
|
4356
4660
|
id: "components.WysiwygBottomControls.fullscreen",
|
4357
4661
|
defaultMessage: "Expand"
|
4358
4662
|
}) }),
|
@@ -4374,7 +4678,7 @@ const WysiwygNav = ({
|
|
4374
4678
|
id: "components.Wysiwyg.selectOptions.title",
|
4375
4679
|
defaultMessage: "Add a title"
|
4376
4680
|
});
|
4377
|
-
|
4681
|
+
React__namespace.useRef(null);
|
4378
4682
|
const handleTogglePopover = () => {
|
4379
4683
|
setVisiblePopover((prev) => !prev);
|
4380
4684
|
};
|
@@ -4388,18 +4692,27 @@ const WysiwygNav = ({
|
|
4388
4692
|
borderRadius: `0.4rem 0.4rem 0 0`,
|
4389
4693
|
children: [
|
4390
4694
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { children: [
|
4391
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
4392
|
-
|
4393
|
-
|
4394
|
-
|
4395
|
-
|
4396
|
-
|
4397
|
-
|
4398
|
-
|
4695
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Root, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
4696
|
+
designSystem.SingleSelect,
|
4697
|
+
{
|
4698
|
+
disabled: true,
|
4699
|
+
placeholder: selectPlaceholder,
|
4700
|
+
"aria-label": selectPlaceholder,
|
4701
|
+
size: "S",
|
4702
|
+
children: [
|
4703
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h1", children: "h1" }),
|
4704
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h2", children: "h2" }),
|
4705
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h3", children: "h3" }),
|
4706
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h4", children: "h4" }),
|
4707
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h5", children: "h5" }),
|
4708
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h6", children: "h6" })
|
4709
|
+
]
|
4710
|
+
}
|
4711
|
+
) }),
|
4399
4712
|
/* @__PURE__ */ jsxRuntime.jsxs(MainButtons, { children: [
|
4400
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
4401
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
4402
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
4713
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Bold", name: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {}) }),
|
4714
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Italic", name: "Italic", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Italic, {}) }),
|
4715
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { disabled: true, label: "Underline", name: "Underline", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Underline, {}) })
|
4403
4716
|
] }),
|
4404
4717
|
/* @__PURE__ */ jsxRuntime.jsx(MoreButton, { disabled: true, label: "More", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.More, {}) })
|
4405
4718
|
] }),
|
@@ -4426,6 +4739,7 @@ const WysiwygNav = ({
|
|
4426
4739
|
placeholder: selectPlaceholder,
|
4427
4740
|
"aria-label": selectPlaceholder,
|
4428
4741
|
onChange: (value) => onActionClick(value, editorRef),
|
4742
|
+
size: "S",
|
4429
4743
|
children: [
|
4430
4744
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h1", children: "h1" }),
|
4431
4745
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "h2", children: "h2" }),
|
@@ -4437,17 +4751,9 @@ const WysiwygNav = ({
|
|
4437
4751
|
}
|
4438
4752
|
) }),
|
4439
4753
|
/* @__PURE__ */ jsxRuntime.jsxs(MainButtons, { children: [
|
4754
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.IconButton, { onClick: () => onActionClick("Bold", editorRef), label: "Bold", name: "Bold", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {}) }),
|
4440
4755
|
/* @__PURE__ */ jsxRuntime.jsx(
|
4441
|
-
|
4442
|
-
{
|
4443
|
-
onClick: () => onActionClick("Bold", editorRef),
|
4444
|
-
label: "Bold",
|
4445
|
-
name: "Bold",
|
4446
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Bold, {})
|
4447
|
-
}
|
4448
|
-
),
|
4449
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
4450
|
-
CustomIconButton,
|
4756
|
+
designSystem.IconButton,
|
4451
4757
|
{
|
4452
4758
|
onClick: () => onActionClick("Italic", editorRef),
|
4453
4759
|
label: "Italic",
|
@@ -4456,7 +4762,7 @@ const WysiwygNav = ({
|
|
4456
4762
|
}
|
4457
4763
|
),
|
4458
4764
|
/* @__PURE__ */ jsxRuntime.jsx(
|
4459
|
-
|
4765
|
+
designSystem.IconButton,
|
4460
4766
|
{
|
4461
4767
|
onClick: () => onActionClick("Underline", editorRef),
|
4462
4768
|
label: "Underline",
|
@@ -4465,79 +4771,81 @@ const WysiwygNav = ({
|
|
4465
4771
|
}
|
4466
4772
|
)
|
4467
4773
|
] }),
|
4468
|
-
/* @__PURE__ */ jsxRuntime.
|
4469
|
-
|
4470
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
4471
|
-
/* @__PURE__ */ jsxRuntime.
|
4472
|
-
|
4473
|
-
|
4474
|
-
|
4475
|
-
|
4476
|
-
|
4477
|
-
|
4478
|
-
|
4479
|
-
|
4480
|
-
|
4481
|
-
|
4482
|
-
|
4483
|
-
|
4484
|
-
|
4485
|
-
|
4486
|
-
|
4487
|
-
|
4488
|
-
|
4489
|
-
|
4490
|
-
|
4491
|
-
|
4492
|
-
|
4493
|
-
|
4494
|
-
|
4495
|
-
|
4496
|
-
|
4497
|
-
|
4498
|
-
|
4499
|
-
|
4500
|
-
/* @__PURE__ */ jsxRuntime.
|
4501
|
-
|
4502
|
-
|
4503
|
-
|
4504
|
-
|
4505
|
-
|
4506
|
-
|
4507
|
-
|
4508
|
-
|
4509
|
-
|
4510
|
-
|
4511
|
-
|
4512
|
-
|
4513
|
-
|
4514
|
-
|
4515
|
-
|
4516
|
-
|
4517
|
-
|
4518
|
-
|
4519
|
-
|
4520
|
-
|
4521
|
-
|
4522
|
-
|
4523
|
-
|
4524
|
-
|
4525
|
-
|
4526
|
-
|
4527
|
-
|
4528
|
-
|
4529
|
-
|
4530
|
-
|
4531
|
-
|
4532
|
-
|
4533
|
-
|
4534
|
-
|
4535
|
-
|
4536
|
-
|
4537
|
-
|
4538
|
-
|
4539
|
-
|
4540
|
-
|
4774
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Popover.Root, { children: [
|
4775
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(MoreButton, { label: "More", children: /* @__PURE__ */ jsxRuntime.jsx(Icons.More, {}) }) }),
|
4776
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Popover.Content, { sideOffset: 12, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { padding: 2, children: [
|
4777
|
+
/* @__PURE__ */ jsxRuntime.jsxs(IconButtonGroupMargin, { children: [
|
4778
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
4779
|
+
designSystem.IconButton,
|
4780
|
+
{
|
4781
|
+
onClick: () => onActionClick("Strikethrough", editorRef, handleTogglePopover),
|
4782
|
+
label: "Strikethrough",
|
4783
|
+
name: "Strikethrough",
|
4784
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.StrikeThrough, {})
|
4785
|
+
}
|
4786
|
+
),
|
4787
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
4788
|
+
designSystem.IconButton,
|
4789
|
+
{
|
4790
|
+
onClick: () => onActionClick("BulletList", editorRef, handleTogglePopover),
|
4791
|
+
label: "BulletList",
|
4792
|
+
name: "BulletList",
|
4793
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.BulletList, {})
|
4794
|
+
}
|
4795
|
+
),
|
4796
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
4797
|
+
designSystem.IconButton,
|
4798
|
+
{
|
4799
|
+
onClick: () => onActionClick("NumberList", editorRef, handleTogglePopover),
|
4800
|
+
label: "NumberList",
|
4801
|
+
name: "NumberList",
|
4802
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.NumberList, {})
|
4803
|
+
}
|
4804
|
+
)
|
4805
|
+
] }),
|
4806
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.IconButtonGroup, { children: [
|
4807
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
4808
|
+
designSystem.IconButton,
|
4809
|
+
{
|
4810
|
+
onClick: () => onActionClick("Code", editorRef, handleTogglePopover),
|
4811
|
+
label: "Code",
|
4812
|
+
name: "Code",
|
4813
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Code, {})
|
4814
|
+
}
|
4815
|
+
),
|
4816
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
4817
|
+
designSystem.IconButton,
|
4818
|
+
{
|
4819
|
+
onClick: () => {
|
4820
|
+
handleTogglePopover();
|
4821
|
+
onToggleMediaLib();
|
4822
|
+
},
|
4823
|
+
label: "Image",
|
4824
|
+
name: "Image",
|
4825
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Image, {})
|
4826
|
+
}
|
4827
|
+
),
|
4828
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
4829
|
+
designSystem.IconButton,
|
4830
|
+
{
|
4831
|
+
onClick: () => onActionClick("Link", editorRef, handleTogglePopover),
|
4832
|
+
label: "Link",
|
4833
|
+
name: "Link",
|
4834
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Link, {})
|
4835
|
+
}
|
4836
|
+
),
|
4837
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
4838
|
+
designSystem.IconButton,
|
4839
|
+
{
|
4840
|
+
onClick: () => onActionClick("Quote", editorRef, handleTogglePopover),
|
4841
|
+
label: "Quote",
|
4842
|
+
name: "Quote",
|
4843
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Quotes, {})
|
4844
|
+
}
|
4845
|
+
)
|
4846
|
+
] })
|
4847
|
+
] }) })
|
4848
|
+
] })
|
4541
4849
|
] }),
|
4542
4850
|
onTogglePreviewMode && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { onClick: onTogglePreviewMode, variant: "tertiary", children: formatMessage({
|
4543
4851
|
id: "components.Wysiwyg.ToggleMode.preview-mode",
|
@@ -4605,7 +4913,7 @@ const Wysiwyg = React__namespace.forwardRef(
|
|
4605
4913
|
const handleSelectAssets = (files) => {
|
4606
4914
|
const formattedFiles = files.map((f) => ({
|
4607
4915
|
alt: f.alternativeText || f.name,
|
4608
|
-
url:
|
4916
|
+
url: useDebounce.prefixFileUrlWithBackendUrl(f.url),
|
4609
4917
|
mime: f.mime
|
4610
4918
|
}));
|
4611
4919
|
insertFile(editorRef, formattedFiles);
|
@@ -4664,15 +4972,19 @@ const Wysiwyg = React__namespace.forwardRef(
|
|
4664
4972
|
);
|
4665
4973
|
const MemoizedWysiwyg = React__namespace.memo(Wysiwyg);
|
4666
4974
|
const InputRenderer = ({ visible, hint: providedHint, ...props }) => {
|
4667
|
-
const { id } = index.useDoc();
|
4975
|
+
const { id, document: document2, collectionType } = index.useDoc();
|
4668
4976
|
const isFormDisabled = strapiAdmin.useForm("InputRenderer", (state) => state.disabled);
|
4669
4977
|
const isInDynamicZone = useDynamicZone("isInDynamicZone", (state) => state.isInDynamicZone);
|
4670
4978
|
const canCreateFields = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canCreateFields);
|
4671
4979
|
const canReadFields = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canReadFields);
|
4672
4980
|
const canUpdateFields = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canUpdateFields);
|
4673
4981
|
const canUserAction = index.useDocumentRBAC("InputRenderer", (rbac) => rbac.canUserAction);
|
4674
|
-
|
4675
|
-
|
4982
|
+
let idToCheck = id;
|
4983
|
+
if (collectionType === index.SINGLE_TYPES) {
|
4984
|
+
idToCheck = document2?.documentId;
|
4985
|
+
}
|
4986
|
+
const editableFields = idToCheck ? canUpdateFields : canCreateFields;
|
4987
|
+
const readableFields = idToCheck ? canReadFields : canCreateFields;
|
4676
4988
|
const canUserReadField = canUserAction(props.name, readableFields, props.type);
|
4677
4989
|
const canUserEditField = canUserAction(props.name, editableFields, props.type);
|
4678
4990
|
const fields = strapiAdmin.useStrapiApp("InputRenderer", (app) => app.fields);
|
@@ -4683,6 +4995,7 @@ const InputRenderer = ({ visible, hint: providedHint, ...props }) => {
|
|
4683
4995
|
const {
|
4684
4996
|
edit: { components }
|
4685
4997
|
} = index.useDocLayout();
|
4998
|
+
const field = strapiAdmin.useField(props.name);
|
4686
4999
|
if (!visible) {
|
4687
5000
|
return null;
|
4688
5001
|
}
|
@@ -4693,7 +5006,7 @@ const InputRenderer = ({ visible, hint: providedHint, ...props }) => {
|
|
4693
5006
|
if (attributeHasCustomFieldProperty(props.attribute)) {
|
4694
5007
|
const CustomInput = lazyComponentStore[props.attribute.customField];
|
4695
5008
|
if (CustomInput) {
|
4696
|
-
return /* @__PURE__ */ jsxRuntime.jsx(CustomInput, { ...props, hint, disabled: fieldIsDisabled });
|
5009
|
+
return /* @__PURE__ */ jsxRuntime.jsx(CustomInput, { ...props, ...field, hint, disabled: fieldIsDisabled });
|
4697
5010
|
}
|
4698
5011
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
4699
5012
|
strapiAdmin.InputRenderer,
|
@@ -4763,7 +5076,9 @@ const useFieldHint = (hint = void 0, attribute) => {
|
|
4763
5076
|
if (!maximum && !minimum) {
|
4764
5077
|
return hint;
|
4765
5078
|
}
|
4766
|
-
const units = !["biginteger", "integer", "number"].includes(
|
5079
|
+
const units = !["biginteger", "integer", "number", "dynamiczone", "component"].includes(
|
5080
|
+
attribute.type
|
5081
|
+
) ? formatMessage(
|
4767
5082
|
{
|
4768
5083
|
id: "content-manager.form.Input.hint.character.unit",
|
4769
5084
|
defaultMessage: "{maxValue, plural, one { character} other { characters}}"
|
@@ -4852,12 +5167,20 @@ const DynamicComponent = ({
|
|
4852
5167
|
React__namespace.useEffect(() => {
|
4853
5168
|
dragPreviewRef(reactDndHtml5Backend.getEmptyImage(), { captureDraggingState: false });
|
4854
5169
|
}, [dragPreviewRef, index$1]);
|
5170
|
+
const accordionValue = React__namespace.useId();
|
5171
|
+
const { value = [], rawError } = strapiAdmin.useField(`${name2}.${index$1}`);
|
5172
|
+
const [collapseToOpen, setCollapseToOpen] = React__namespace.useState("");
|
5173
|
+
React__namespace.useEffect(() => {
|
5174
|
+
if (rawError && value) {
|
5175
|
+
setCollapseToOpen(accordionValue);
|
5176
|
+
}
|
5177
|
+
}, [rawError, value, accordionValue]);
|
4855
5178
|
const composedBoxRefs = designSystem.useComposedRefs(boxRef, dropRef);
|
4856
5179
|
const accordionActions = disabled ? null : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
4857
5180
|
/* @__PURE__ */ jsxRuntime.jsx(
|
4858
5181
|
designSystem.IconButton,
|
4859
5182
|
{
|
4860
|
-
|
5183
|
+
variant: "ghost",
|
4861
5184
|
label: formatMessage(
|
4862
5185
|
{
|
4863
5186
|
id: index.getTranslation("components.DynamicZone.delete-label"),
|
@@ -4872,7 +5195,7 @@ const DynamicComponent = ({
|
|
4872
5195
|
/* @__PURE__ */ jsxRuntime.jsx(
|
4873
5196
|
designSystem.IconButton,
|
4874
5197
|
{
|
4875
|
-
|
5198
|
+
variant: "ghost",
|
4876
5199
|
onClick: (e) => e.stopPropagation(),
|
4877
5200
|
"data-handler-id": handlerId,
|
4878
5201
|
ref: dragRef,
|
@@ -4917,10 +5240,9 @@ const DynamicComponent = ({
|
|
4917
5240
|
] })
|
4918
5241
|
] });
|
4919
5242
|
const accordionTitle = title ? `${displayName} ${title}` : displayName;
|
4920
|
-
const accordionValue = React__namespace.useId();
|
4921
5243
|
return /* @__PURE__ */ jsxRuntime.jsxs(ComponentContainer, { tag: "li", width: "100%", children: [
|
4922
5244
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Flex, { justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx(Rectangle, { background: "neutral200" }) }),
|
4923
|
-
/* @__PURE__ */ jsxRuntime.jsx(StyledBox, { ref: composedBoxRefs, hasRadius: true, children: isDragging ? /* @__PURE__ */ jsxRuntime.jsx(Preview, {}) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Root, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: accordionValue, children: [
|
5245
|
+
/* @__PURE__ */ jsxRuntime.jsx(StyledBox, { ref: composedBoxRefs, hasRadius: true, children: isDragging ? /* @__PURE__ */ jsxRuntime.jsx(Preview, {}) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Root, { value: collapseToOpen, onValueChange: setCollapseToOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Item, { value: accordionValue, children: [
|
4924
5246
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Accordion.Header, { children: [
|
4925
5247
|
/* @__PURE__ */ jsxRuntime.jsx(
|
4926
5248
|
designSystem.Accordion.Trigger,
|
@@ -4931,10 +5253,39 @@ const DynamicComponent = ({
|
|
4931
5253
|
),
|
4932
5254
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Accordion.Actions, { children: accordionActions })
|
4933
5255
|
] }),
|
4934
|
-
/* @__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:
|
4935
|
-
|
4936
|
-
|
4937
|
-
|
5256
|
+
/* @__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: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: components[componentUid]?.layout?.map((row, rowInd) => /* @__PURE__ */ jsxRuntime.jsx(
|
5257
|
+
designSystem.Grid.Item,
|
5258
|
+
{
|
5259
|
+
col: 12,
|
5260
|
+
s: 12,
|
5261
|
+
xs: 12,
|
5262
|
+
direction: "column",
|
5263
|
+
alignItems: "stretch",
|
5264
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Root, { gap: 4, children: row.map(({ size, ...field }) => {
|
5265
|
+
const fieldName = `${name2}.${index$1}.${field.name}`;
|
5266
|
+
const fieldWithTranslatedLabel = {
|
5267
|
+
...field,
|
5268
|
+
label: formatMessage({
|
5269
|
+
id: `content-manager.components.${componentUid}.${field.name}`,
|
5270
|
+
defaultMessage: field.label
|
5271
|
+
})
|
5272
|
+
};
|
5273
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
5274
|
+
designSystem.Grid.Item,
|
5275
|
+
{
|
5276
|
+
col: size,
|
5277
|
+
s: 12,
|
5278
|
+
xs: 12,
|
5279
|
+
direction: "column",
|
5280
|
+
alignItems: "stretch",
|
5281
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(MemoizedInputRenderer, { ...fieldWithTranslatedLabel, name: fieldName })
|
5282
|
+
},
|
5283
|
+
fieldName
|
5284
|
+
);
|
5285
|
+
}) })
|
5286
|
+
},
|
5287
|
+
rowInd
|
5288
|
+
)) }) }) }) })
|
4938
5289
|
] }) }) })
|
4939
5290
|
] });
|
4940
5291
|
};
|
@@ -5126,7 +5477,7 @@ const DynamicZone = ({
|
|
5126
5477
|
const handleRemoveComponent = (name22, currentIndex) => () => {
|
5127
5478
|
removeFieldRow(name22, currentIndex);
|
5128
5479
|
};
|
5129
|
-
const hasError = error !== void 0
|
5480
|
+
const hasError = error !== void 0;
|
5130
5481
|
const renderButtonLabel = () => {
|
5131
5482
|
if (addComponentIsOpen) {
|
5132
5483
|
return formatMessage({ id: "app.utils.close-label", defaultMessage: "Close" });
|
@@ -5240,4 +5591,4 @@ exports.transformDocument = transformDocument;
|
|
5240
5591
|
exports.useDynamicZone = useDynamicZone;
|
5241
5592
|
exports.useFieldHint = useFieldHint;
|
5242
5593
|
exports.useLazyComponents = useLazyComponents;
|
5243
|
-
//# sourceMappingURL=Field-
|
5594
|
+
//# sourceMappingURL=Field-DwvmENVf.js.map
|