@strapi/content-manager 5.33.3 → 5.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/LeftMenu.js +13 -8
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +13 -8
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/history/components/VersionHeader.js +1 -0
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.mjs +1 -0
- package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +71 -71
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +73 -73
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +29 -21
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +30 -22
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js +23 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs +23 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Code.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.js +30 -6
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs +30 -6
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Heading.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js +14 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs +14 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Image.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +157 -7
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +154 -5
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js +28 -20
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs +25 -17
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/List.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +6 -3
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +7 -4
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +12 -12
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +13 -13
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +2 -2
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.js +4 -8
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.mjs +4 -7
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/types.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +2 -12
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +2 -12
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +48 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +49 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +47 -13
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +49 -15
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +10 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +10 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +5 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +5 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js +19 -7
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs +19 -7
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/Header.js +91 -44
- package/dist/admin/pages/EditView/components/Header.js.map +1 -1
- package/dist/admin/pages/EditView/components/Header.mjs +92 -45
- package/dist/admin/pages/EditView/components/Header.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +6 -2
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +6 -2
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +22 -0
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +22 -1
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +6 -4
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +6 -4
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.d.ts +9 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.d.ts +9 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withStrapiSchema.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/types.d.ts +2 -4
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +2 -1
- package/dist/admin/src/pages/EditView/utils/data.d.ts +6 -1
- package/dist/admin/translations/de.json.js +165 -32
- package/dist/admin/translations/de.json.js.map +1 -1
- package/dist/admin/translations/de.json.mjs +165 -32
- package/dist/admin/translations/de.json.mjs.map +1 -1
- package/dist/admin/translations/zh-Hans.json.js +0 -44
- package/dist/admin/translations/zh-Hans.json.js.map +1 -1
- package/dist/admin/translations/zh-Hans.json.mjs +0 -44
- package/dist/admin/translations/zh-Hans.json.mjs.map +1 -1
- package/dist/server/controllers/collection-types.js +16 -13
- package/dist/server/controllers/collection-types.js.map +1 -1
- package/dist/server/controllers/collection-types.mjs +16 -13
- package/dist/server/controllers/collection-types.mjs.map +1 -1
- package/dist/server/controllers/relations.js +5 -2
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +5 -2
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/controllers/utils/document-status.js +28 -0
- package/dist/server/controllers/utils/document-status.js.map +1 -0
- package/dist/server/controllers/utils/document-status.mjs +26 -0
- package/dist/server/controllers/utils/document-status.mjs.map +1 -0
- package/dist/server/services/components.js +68 -20
- package/dist/server/services/components.js.map +1 -1
- package/dist/server/services/components.mjs +69 -21
- package/dist/server/services/components.mjs.map +1 -1
- package/dist/server/services/permission-checker.js +23 -0
- package/dist/server/services/permission-checker.js.map +1 -1
- package/dist/server/services/permission-checker.mjs +23 -0
- package/dist/server/services/permission-checker.mjs.map +1 -1
- package/dist/server/services/utils/store.js +51 -4
- package/dist/server/services/utils/store.js.map +1 -1
- package/dist/server/services/utils/store.mjs +51 -4
- package/dist/server/services/utils/store.mjs.map +1 -1
- package/dist/server/src/controllers/collection-types.d.ts.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/document-status.d.ts +10 -0
- package/dist/server/src/controllers/utils/document-status.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +1 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/components.d.ts +6 -0
- package/dist/server/src/services/components.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/permission-checker.d.ts +1 -0
- package/dist/server/src/services/permission-checker.d.ts.map +1 -1
- package/dist/server/src/services/utils/store.d.ts +5 -1
- package/dist/server/src/services/utils/store.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.js +0 -17
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.js.map +0 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.mjs +0 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.mjs.map +0 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.js +0 -75
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.js.map +0 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.mjs +0 -73
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.mjs.map +0 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js +0 -88
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.js.map +0 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs +0 -84
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/utils/links.mjs.map +0 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.d.ts +0 -11
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.d.ts +0 -9
- package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.d.ts +0 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/relations.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,eAAe,CAAC;;
|
|
1
|
+
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/relations.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,eAAe,CAAC;;uCAiJb,GAAG,OAAO,KAAK,EAAE;IA4H1D;;;;OAIG;uBACsB,GAAG;sBAwIJ,GAAG;;AA1Q7B,wBAkXE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Index items by documentId for lookup
|
|
3
|
+
*
|
|
4
|
+
* @param items - Array of items with documentId property
|
|
5
|
+
* @returns Map of documentId -> items array
|
|
6
|
+
*/
|
|
7
|
+
export declare const indexByDocumentId: <T extends {
|
|
8
|
+
documentId?: string | null | undefined;
|
|
9
|
+
}>(items: T[]) => Map<string, T[]>;
|
|
10
|
+
//# sourceMappingURL=document-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-status.d.ts","sourceRoot":"","sources":["../../../../../server/src/controllers/utils/document-status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;UACrB,CAAC,EAAE,KACT,IAAI,MAAM,EAAE,CAAC,EAAE,CAmBjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,wBAUE"}
|
|
@@ -22,6 +22,12 @@ declare const _default: ({ strapi }: {
|
|
|
22
22
|
options?: object | undefined;
|
|
23
23
|
category: string;
|
|
24
24
|
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Batch load component configurations.
|
|
27
|
+
*
|
|
28
|
+
* Collects all component UIDs upfront, then loads configurations in a single
|
|
29
|
+
* batch query instead of sequential queries per component.
|
|
30
|
+
*/
|
|
25
31
|
findComponentsConfigurations(model: Struct.ComponentSchema): Promise<Record<string, Configuration & {
|
|
26
32
|
category: string;
|
|
27
33
|
isComponent: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../../server/src/services/components.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;qCAmB/B;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;;uBAO9B,IAAI,SAAS;iCAQG,OAAO,eAAe;;;;;;;;mCAW5C,OAAO,eAAe,oBACf,mBAAmB;;;;;;;;
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../../server/src/services/components.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;qCAmB/B;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;;uBAO9B,IAAI,SAAS;iCAQG,OAAO,eAAe;;;;;;;;mCAW5C,OAAO,eAAe,oBACf,mBAAmB;;;;;;;;IAOvC;;;;;OAKG;wCACuC,OAAO,eAAe;kBAmD9B,MAAM;qBAAe,OAAO;;;;AA3FhE,wBAoIG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,wBAeE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-checker.d.ts","sourceRoot":"","sources":["../../../../server/src/services/permission-checker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"permission-checker.d.ts","sourceRoot":"","sources":["../../../../server/src/services/permission-checker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,eAAe,CAAC;AAaxD,KAAK,KAAK,GAAG;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;qCA6I0B;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAnD,wBAEG"}
|
|
@@ -4,8 +4,12 @@ declare const _default: {
|
|
|
4
4
|
getModelConfiguration: (key: any) => Promise<{
|
|
5
5
|
settings: {};
|
|
6
6
|
metadatas: {};
|
|
7
|
-
layouts: {
|
|
7
|
+
layouts: {
|
|
8
|
+
list: never[];
|
|
9
|
+
edit: never[];
|
|
10
|
+
};
|
|
8
11
|
}>;
|
|
12
|
+
getModelConfigurations: (keys: string[]) => Promise<Record<string, any>>;
|
|
9
13
|
setModelConfiguration: (key: string, value: any) => Promise<void>;
|
|
10
14
|
deleteKey: (key: any) => Promise<any>;
|
|
11
15
|
keys: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/utils/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/utils/store.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AA8GA,wBAQE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/content-manager",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.34.0",
|
|
4
4
|
"description": "A powerful UI to easily manage your data.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -67,10 +67,10 @@
|
|
|
67
67
|
"@radix-ui/react-toolbar": "1.0.4",
|
|
68
68
|
"@reduxjs/toolkit": "1.9.7",
|
|
69
69
|
"@sindresorhus/slugify": "1.1.0",
|
|
70
|
-
"@strapi/design-system": "2.
|
|
71
|
-
"@strapi/icons": "2.
|
|
72
|
-
"@strapi/types": "5.
|
|
73
|
-
"@strapi/utils": "5.
|
|
70
|
+
"@strapi/design-system": "2.1.2",
|
|
71
|
+
"@strapi/icons": "2.1.2",
|
|
72
|
+
"@strapi/types": "5.34.0",
|
|
73
|
+
"@strapi/utils": "5.34.0",
|
|
74
74
|
"codemirror5": "npm:codemirror@^5.65.11",
|
|
75
75
|
"date-fns": "2.30.0",
|
|
76
76
|
"fractional-indexing": "3.2.0",
|
|
@@ -104,8 +104,8 @@
|
|
|
104
104
|
"yup": "0.32.9"
|
|
105
105
|
},
|
|
106
106
|
"devDependencies": {
|
|
107
|
-
"@strapi/admin": "5.
|
|
108
|
-
"@strapi/database": "5.
|
|
107
|
+
"@strapi/admin": "5.34.0",
|
|
108
|
+
"@strapi/database": "5.34.0",
|
|
109
109
|
"@testing-library/react": "16.3.0",
|
|
110
110
|
"@types/jest": "29.5.2",
|
|
111
111
|
"@types/lodash": "^4.14.191",
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Images are void elements. They handle the rendering of their children instead of Slate.
|
|
5
|
-
* See the Slate documentation for more information:
|
|
6
|
-
* - https://docs.slatejs.org/api/nodes/element#void-vs-not-void
|
|
7
|
-
* - https://docs.slatejs.org/api/nodes/element#rendering-void-elements
|
|
8
|
-
*/ const withImages = (editor)=>{
|
|
9
|
-
const { isVoid } = editor;
|
|
10
|
-
editor.isVoid = (element)=>{
|
|
11
|
-
return element.type === 'image' ? true : isVoid(element);
|
|
12
|
-
};
|
|
13
|
-
return editor;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
exports.withImages = withImages;
|
|
17
|
-
//# sourceMappingURL=withImages.js.map
|
package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"withImages.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.ts"],"sourcesContent":["import { type Editor } from 'slate';\n\n/**\n * Images are void elements. They handle the rendering of their children instead of Slate.\n * See the Slate documentation for more information:\n * - https://docs.slatejs.org/api/nodes/element#void-vs-not-void\n * - https://docs.slatejs.org/api/nodes/element#rendering-void-elements\n */\nconst withImages = (editor: Editor) => {\n const { isVoid } = editor;\n\n editor.isVoid = (element) => {\n return element.type === 'image' ? true : isVoid(element);\n };\n\n return editor;\n};\n\nexport { withImages };\n"],"names":["withImages","editor","isVoid","element","type"],"mappings":";;AAEA;;;;;IAMA,MAAMA,aAAa,CAACC,MAAAA,GAAAA;IAClB,MAAM,EAAEC,MAAM,EAAE,GAAGD,MAAAA;IAEnBA,MAAOC,CAAAA,MAAM,GAAG,CAACC,OAAAA,GAAAA;AACf,QAAA,OAAOA,OAAQC,CAAAA,IAAI,KAAK,OAAA,GAAU,OAAOF,MAAOC,CAAAA,OAAAA,CAAAA;AAClD,KAAA;IAEA,OAAOF,MAAAA;AACT;;;;"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Images are void elements. They handle the rendering of their children instead of Slate.
|
|
3
|
-
* See the Slate documentation for more information:
|
|
4
|
-
* - https://docs.slatejs.org/api/nodes/element#void-vs-not-void
|
|
5
|
-
* - https://docs.slatejs.org/api/nodes/element#rendering-void-elements
|
|
6
|
-
*/ const withImages = (editor)=>{
|
|
7
|
-
const { isVoid } = editor;
|
|
8
|
-
editor.isVoid = (element)=>{
|
|
9
|
-
return element.type === 'image' ? true : isVoid(element);
|
|
10
|
-
};
|
|
11
|
-
return editor;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export { withImages };
|
|
15
|
-
//# sourceMappingURL=withImages.mjs.map
|
package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"withImages.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.ts"],"sourcesContent":["import { type Editor } from 'slate';\n\n/**\n * Images are void elements. They handle the rendering of their children instead of Slate.\n * See the Slate documentation for more information:\n * - https://docs.slatejs.org/api/nodes/element#void-vs-not-void\n * - https://docs.slatejs.org/api/nodes/element#rendering-void-elements\n */\nconst withImages = (editor: Editor) => {\n const { isVoid } = editor;\n\n editor.isVoid = (element) => {\n return element.type === 'image' ? true : isVoid(element);\n };\n\n return editor;\n};\n\nexport { withImages };\n"],"names":["withImages","editor","isVoid","element","type"],"mappings":"AAEA;;;;;IAMA,MAAMA,aAAa,CAACC,MAAAA,GAAAA;IAClB,MAAM,EAAEC,MAAM,EAAE,GAAGD,MAAAA;IAEnBA,MAAOC,CAAAA,MAAM,GAAG,CAACC,OAAAA,GAAAA;AACf,QAAA,OAAOA,OAAQC,CAAAA,IAAI,KAAK,OAAA,GAAU,OAAOF,MAAOC,CAAAA,OAAAA,CAAAA;AAClD,KAAA;IAEA,OAAOF,MAAAA;AACT;;;;"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var slate = require('slate');
|
|
4
|
-
var links = require('../utils/links.js');
|
|
5
|
-
|
|
6
|
-
const withLinks = (editor)=>{
|
|
7
|
-
const { isInline, apply, insertText, insertData } = editor;
|
|
8
|
-
// Links are inline elements, so we need to override the isInline method for slate
|
|
9
|
-
editor.isInline = (element)=>{
|
|
10
|
-
return element.type === 'link' ? true : isInline(element);
|
|
11
|
-
};
|
|
12
|
-
// We keep a track of the last inserted link path
|
|
13
|
-
// So we can show the popover on the link component if that link is the last one inserted
|
|
14
|
-
editor.lastInsertedLinkPath = null;
|
|
15
|
-
// We intercept the apply method, so everytime we insert a new link, we save its path
|
|
16
|
-
editor.apply = (operation)=>{
|
|
17
|
-
if (operation.type === 'insert_node') {
|
|
18
|
-
if (!slate.Editor.isEditor(operation.node) && operation.node.type === 'link' && editor.shouldSaveLinkPath) {
|
|
19
|
-
editor.lastInsertedLinkPath = operation.path;
|
|
20
|
-
}
|
|
21
|
-
} else if (operation.type === 'move_node') {
|
|
22
|
-
// We need to update the last inserted link path when link is moved
|
|
23
|
-
// If link is the first word in the paragraph we dont need to update the path
|
|
24
|
-
if (slate.Path.hasPrevious(operation.path) && editor.lastInsertedLinkPath && editor.shouldSaveLinkPath) {
|
|
25
|
-
editor.lastInsertedLinkPath = slate.Path.transform(editor.lastInsertedLinkPath, operation);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
apply(operation);
|
|
29
|
-
};
|
|
30
|
-
editor.insertText = (text)=>{
|
|
31
|
-
// When selection is at the end of a link and user types a space, we want to break the link
|
|
32
|
-
if (editor.selection && slate.Range.isCollapsed(editor.selection) && text === ' ') {
|
|
33
|
-
const linksInSelection = Array.from(slate.Editor.nodes(editor, {
|
|
34
|
-
at: editor.selection,
|
|
35
|
-
match: (node)=>!slate.Editor.isEditor(node) && node.type === 'link'
|
|
36
|
-
}));
|
|
37
|
-
const selectionIsInLink = editor.selection && linksInSelection.length > 0;
|
|
38
|
-
const selectionIsAtEndOfLink = selectionIsInLink && slate.Point.equals(editor.selection.anchor, slate.Editor.end(editor, linksInSelection[0][1]));
|
|
39
|
-
if (selectionIsAtEndOfLink) {
|
|
40
|
-
slate.Transforms.insertNodes(editor, {
|
|
41
|
-
text: ' ',
|
|
42
|
-
type: 'text'
|
|
43
|
-
}, {
|
|
44
|
-
at: slate.Path.next(linksInSelection[0][1]),
|
|
45
|
-
select: true
|
|
46
|
-
});
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
insertText(text);
|
|
51
|
-
};
|
|
52
|
-
// Add data as a clickable link if its a valid URL
|
|
53
|
-
editor.insertData = (data)=>{
|
|
54
|
-
const pastedText = data.getData('text/plain');
|
|
55
|
-
if (pastedText) {
|
|
56
|
-
try {
|
|
57
|
-
// eslint-disable-next-line no-new
|
|
58
|
-
new URL(pastedText);
|
|
59
|
-
// Do not show link popup on copy-paste a link, so do not save its path
|
|
60
|
-
editor.shouldSaveLinkPath = false;
|
|
61
|
-
links.insertLink(editor, {
|
|
62
|
-
url: pastedText
|
|
63
|
-
});
|
|
64
|
-
return;
|
|
65
|
-
} catch (error) {
|
|
66
|
-
// continue normal data insertion
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
insertData(data);
|
|
70
|
-
};
|
|
71
|
-
return editor;
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
exports.withLinks = withLinks;
|
|
75
|
-
//# sourceMappingURL=withLinks.js.map
|
package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"withLinks.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.ts"],"sourcesContent":["import { type BaseEditor, Path, Transforms, Range, Point, Editor } from 'slate';\n\nimport { insertLink } from '../utils/links';\n\ninterface LinkEditor extends BaseEditor {\n lastInsertedLinkPath: Path | null;\n shouldSaveLinkPath: boolean;\n}\n\nconst withLinks = (editor: Editor) => {\n const { isInline, apply, insertText, insertData } = editor;\n\n // Links are inline elements, so we need to override the isInline method for slate\n editor.isInline = (element) => {\n return element.type === 'link' ? true : isInline(element);\n };\n\n // We keep a track of the last inserted link path\n // So we can show the popover on the link component if that link is the last one inserted\n editor.lastInsertedLinkPath = null;\n\n // We intercept the apply method, so everytime we insert a new link, we save its path\n editor.apply = (operation) => {\n if (operation.type === 'insert_node') {\n if (\n !Editor.isEditor(operation.node) &&\n operation.node.type === 'link' &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = operation.path;\n }\n } else if (operation.type === 'move_node') {\n // We need to update the last inserted link path when link is moved\n // If link is the first word in the paragraph we dont need to update the path\n if (\n Path.hasPrevious(operation.path) &&\n editor.lastInsertedLinkPath &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = Path.transform(editor.lastInsertedLinkPath, operation);\n }\n }\n\n apply(operation);\n };\n\n editor.insertText = (text) => {\n // When selection is at the end of a link and user types a space, we want to break the link\n if (editor.selection && Range.isCollapsed(editor.selection) && text === ' ') {\n const linksInSelection = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n const selectionIsInLink = editor.selection && linksInSelection.length > 0;\n const selectionIsAtEndOfLink =\n selectionIsInLink &&\n Point.equals(editor.selection.anchor, Editor.end(editor, linksInSelection[0][1]));\n\n if (selectionIsAtEndOfLink) {\n Transforms.insertNodes(\n editor,\n { text: ' ', type: 'text' },\n { at: Path.next(linksInSelection[0][1]), select: true }\n );\n\n return;\n }\n }\n\n insertText(text);\n };\n\n // Add data as a clickable link if its a valid URL\n editor.insertData = (data) => {\n const pastedText = data.getData('text/plain');\n\n if (pastedText) {\n try {\n // eslint-disable-next-line no-new\n new URL(pastedText);\n // Do not show link popup on copy-paste a link, so do not save its path\n editor.shouldSaveLinkPath = false;\n insertLink(editor, { url: pastedText });\n return;\n } catch (error) {\n // continue normal data insertion\n }\n }\n\n insertData(data);\n };\n\n return editor;\n};\n\nexport { withLinks, type LinkEditor };\n"],"names":["withLinks","editor","isInline","apply","insertText","insertData","element","type","lastInsertedLinkPath","operation","Editor","isEditor","node","shouldSaveLinkPath","path","Path","hasPrevious","transform","text","selection","Range","isCollapsed","linksInSelection","Array","from","nodes","at","match","selectionIsInLink","length","selectionIsAtEndOfLink","Point","equals","anchor","end","Transforms","insertNodes","next","select","data","pastedText","getData","URL","insertLink","url","error"],"mappings":"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"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { Editor, Path, Range, Point, Transforms } from 'slate';
|
|
2
|
-
import { insertLink } from '../utils/links.mjs';
|
|
3
|
-
|
|
4
|
-
const withLinks = (editor)=>{
|
|
5
|
-
const { isInline, apply, insertText, insertData } = editor;
|
|
6
|
-
// Links are inline elements, so we need to override the isInline method for slate
|
|
7
|
-
editor.isInline = (element)=>{
|
|
8
|
-
return element.type === 'link' ? true : isInline(element);
|
|
9
|
-
};
|
|
10
|
-
// We keep a track of the last inserted link path
|
|
11
|
-
// So we can show the popover on the link component if that link is the last one inserted
|
|
12
|
-
editor.lastInsertedLinkPath = null;
|
|
13
|
-
// We intercept the apply method, so everytime we insert a new link, we save its path
|
|
14
|
-
editor.apply = (operation)=>{
|
|
15
|
-
if (operation.type === 'insert_node') {
|
|
16
|
-
if (!Editor.isEditor(operation.node) && operation.node.type === 'link' && editor.shouldSaveLinkPath) {
|
|
17
|
-
editor.lastInsertedLinkPath = operation.path;
|
|
18
|
-
}
|
|
19
|
-
} else if (operation.type === 'move_node') {
|
|
20
|
-
// We need to update the last inserted link path when link is moved
|
|
21
|
-
// If link is the first word in the paragraph we dont need to update the path
|
|
22
|
-
if (Path.hasPrevious(operation.path) && editor.lastInsertedLinkPath && editor.shouldSaveLinkPath) {
|
|
23
|
-
editor.lastInsertedLinkPath = Path.transform(editor.lastInsertedLinkPath, operation);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
apply(operation);
|
|
27
|
-
};
|
|
28
|
-
editor.insertText = (text)=>{
|
|
29
|
-
// When selection is at the end of a link and user types a space, we want to break the link
|
|
30
|
-
if (editor.selection && Range.isCollapsed(editor.selection) && text === ' ') {
|
|
31
|
-
const linksInSelection = Array.from(Editor.nodes(editor, {
|
|
32
|
-
at: editor.selection,
|
|
33
|
-
match: (node)=>!Editor.isEditor(node) && node.type === 'link'
|
|
34
|
-
}));
|
|
35
|
-
const selectionIsInLink = editor.selection && linksInSelection.length > 0;
|
|
36
|
-
const selectionIsAtEndOfLink = selectionIsInLink && Point.equals(editor.selection.anchor, Editor.end(editor, linksInSelection[0][1]));
|
|
37
|
-
if (selectionIsAtEndOfLink) {
|
|
38
|
-
Transforms.insertNodes(editor, {
|
|
39
|
-
text: ' ',
|
|
40
|
-
type: 'text'
|
|
41
|
-
}, {
|
|
42
|
-
at: Path.next(linksInSelection[0][1]),
|
|
43
|
-
select: true
|
|
44
|
-
});
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
insertText(text);
|
|
49
|
-
};
|
|
50
|
-
// Add data as a clickable link if its a valid URL
|
|
51
|
-
editor.insertData = (data)=>{
|
|
52
|
-
const pastedText = data.getData('text/plain');
|
|
53
|
-
if (pastedText) {
|
|
54
|
-
try {
|
|
55
|
-
// eslint-disable-next-line no-new
|
|
56
|
-
new URL(pastedText);
|
|
57
|
-
// Do not show link popup on copy-paste a link, so do not save its path
|
|
58
|
-
editor.shouldSaveLinkPath = false;
|
|
59
|
-
insertLink(editor, {
|
|
60
|
-
url: pastedText
|
|
61
|
-
});
|
|
62
|
-
return;
|
|
63
|
-
} catch (error) {
|
|
64
|
-
// continue normal data insertion
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
insertData(data);
|
|
68
|
-
};
|
|
69
|
-
return editor;
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
export { withLinks };
|
|
73
|
-
//# sourceMappingURL=withLinks.mjs.map
|
package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"withLinks.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.ts"],"sourcesContent":["import { type BaseEditor, Path, Transforms, Range, Point, Editor } from 'slate';\n\nimport { insertLink } from '../utils/links';\n\ninterface LinkEditor extends BaseEditor {\n lastInsertedLinkPath: Path | null;\n shouldSaveLinkPath: boolean;\n}\n\nconst withLinks = (editor: Editor) => {\n const { isInline, apply, insertText, insertData } = editor;\n\n // Links are inline elements, so we need to override the isInline method for slate\n editor.isInline = (element) => {\n return element.type === 'link' ? true : isInline(element);\n };\n\n // We keep a track of the last inserted link path\n // So we can show the popover on the link component if that link is the last one inserted\n editor.lastInsertedLinkPath = null;\n\n // We intercept the apply method, so everytime we insert a new link, we save its path\n editor.apply = (operation) => {\n if (operation.type === 'insert_node') {\n if (\n !Editor.isEditor(operation.node) &&\n operation.node.type === 'link' &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = operation.path;\n }\n } else if (operation.type === 'move_node') {\n // We need to update the last inserted link path when link is moved\n // If link is the first word in the paragraph we dont need to update the path\n if (\n Path.hasPrevious(operation.path) &&\n editor.lastInsertedLinkPath &&\n editor.shouldSaveLinkPath\n ) {\n editor.lastInsertedLinkPath = Path.transform(editor.lastInsertedLinkPath, operation);\n }\n }\n\n apply(operation);\n };\n\n editor.insertText = (text) => {\n // When selection is at the end of a link and user types a space, we want to break the link\n if (editor.selection && Range.isCollapsed(editor.selection) && text === ' ') {\n const linksInSelection = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n const selectionIsInLink = editor.selection && linksInSelection.length > 0;\n const selectionIsAtEndOfLink =\n selectionIsInLink &&\n Point.equals(editor.selection.anchor, Editor.end(editor, linksInSelection[0][1]));\n\n if (selectionIsAtEndOfLink) {\n Transforms.insertNodes(\n editor,\n { text: ' ', type: 'text' },\n { at: Path.next(linksInSelection[0][1]), select: true }\n );\n\n return;\n }\n }\n\n insertText(text);\n };\n\n // Add data as a clickable link if its a valid URL\n editor.insertData = (data) => {\n const pastedText = data.getData('text/plain');\n\n if (pastedText) {\n try {\n // eslint-disable-next-line no-new\n new URL(pastedText);\n // Do not show link popup on copy-paste a link, so do not save its path\n editor.shouldSaveLinkPath = false;\n insertLink(editor, { url: pastedText });\n return;\n } catch (error) {\n // continue normal data insertion\n }\n }\n\n insertData(data);\n };\n\n return editor;\n};\n\nexport { withLinks, type LinkEditor };\n"],"names":["withLinks","editor","isInline","apply","insertText","insertData","element","type","lastInsertedLinkPath","operation","Editor","isEditor","node","shouldSaveLinkPath","path","Path","hasPrevious","transform","text","selection","Range","isCollapsed","linksInSelection","Array","from","nodes","at","match","selectionIsInLink","length","selectionIsAtEndOfLink","Point","equals","anchor","end","Transforms","insertNodes","next","select","data","pastedText","getData","URL","insertLink","url","error"],"mappings":"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"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var slate = require('slate');
|
|
4
|
-
|
|
5
|
-
const removeLink = (editor)=>{
|
|
6
|
-
slate.Transforms.unwrapNodes(editor, {
|
|
7
|
-
match: (node)=>!slate.Editor.isEditor(node) && slate.Element.isElement(node) && node.type === 'link'
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
const insertLink = (editor, { url })=>{
|
|
11
|
-
if (editor.selection) {
|
|
12
|
-
// We want to remove all link on the selection
|
|
13
|
-
const linkNodes = Array.from(slate.Editor.nodes(editor, {
|
|
14
|
-
at: editor.selection,
|
|
15
|
-
match: (node)=>!slate.Editor.isEditor(node) && node.type === 'link'
|
|
16
|
-
}));
|
|
17
|
-
linkNodes.forEach(([, path])=>{
|
|
18
|
-
slate.Transforms.unwrapNodes(editor, {
|
|
19
|
-
at: path
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
if (slate.Range.isCollapsed(editor.selection)) {
|
|
23
|
-
const link = {
|
|
24
|
-
type: 'link',
|
|
25
|
-
url: url ?? '',
|
|
26
|
-
children: [
|
|
27
|
-
{
|
|
28
|
-
type: 'text',
|
|
29
|
-
text: url
|
|
30
|
-
}
|
|
31
|
-
],
|
|
32
|
-
rel: '',
|
|
33
|
-
target: ''
|
|
34
|
-
};
|
|
35
|
-
slate.Transforms.insertNodes(editor, link);
|
|
36
|
-
} else {
|
|
37
|
-
slate.Transforms.wrapNodes(editor, {
|
|
38
|
-
type: 'link',
|
|
39
|
-
url: url ?? ''
|
|
40
|
-
}, {
|
|
41
|
-
split: true
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
const editLink = (editor, link)=>{
|
|
47
|
-
const { url, text, rel, target } = link;
|
|
48
|
-
if (!editor.selection) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
const linkEntry = slate.Editor.above(editor, {
|
|
52
|
-
match: (node)=>!slate.Editor.isEditor(node) && node.type === 'link'
|
|
53
|
-
});
|
|
54
|
-
if (linkEntry) {
|
|
55
|
-
const [, linkPath] = linkEntry;
|
|
56
|
-
slate.Transforms.setNodes(editor, {
|
|
57
|
-
url,
|
|
58
|
-
rel,
|
|
59
|
-
target
|
|
60
|
-
}, {
|
|
61
|
-
at: linkPath
|
|
62
|
-
});
|
|
63
|
-
// If link text is different, we remove the old text and insert the new one
|
|
64
|
-
if (text !== '' && text !== slate.Editor.string(editor, linkPath)) {
|
|
65
|
-
const linkNodeChildrens = Array.from(slate.Node.children(editor, linkPath, {
|
|
66
|
-
reverse: true
|
|
67
|
-
}));
|
|
68
|
-
linkNodeChildrens.forEach(([, childPath])=>{
|
|
69
|
-
slate.Transforms.removeNodes(editor, {
|
|
70
|
-
at: childPath
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
slate.Transforms.insertNodes(editor, [
|
|
74
|
-
{
|
|
75
|
-
type: 'text',
|
|
76
|
-
text
|
|
77
|
-
}
|
|
78
|
-
], {
|
|
79
|
-
at: linkPath.concat(0)
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
exports.editLink = editLink;
|
|
86
|
-
exports.insertLink = insertLink;
|
|
87
|
-
exports.removeLink = removeLink;
|
|
88
|
-
//# sourceMappingURL=links.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"links.js","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.ts"],"sourcesContent":["import { Transforms, Editor, Element as SlateElement, Node, Range } from 'slate';\n\nimport { type Block } from './types';\n\nconst removeLink = (editor: Editor) => {\n Transforms.unwrapNodes(editor, {\n match: (node) => !Editor.isEditor(node) && SlateElement.isElement(node) && node.type === 'link',\n });\n};\n\nconst insertLink = (editor: Editor, { url }: { url: string }) => {\n if (editor.selection) {\n // We want to remove all link on the selection\n const linkNodes = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n linkNodes.forEach(([, path]) => {\n Transforms.unwrapNodes(editor, { at: path });\n });\n\n if (Range.isCollapsed(editor.selection)) {\n const link: Block<'link'> = {\n type: 'link',\n url: url ?? '',\n children: [{ type: 'text', text: url }],\n rel: '',\n target: '',\n };\n\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, { type: 'link', url: url ?? '' } as Block<'link'>, {\n split: true,\n });\n }\n }\n};\n\nconst editLink = (\n editor: Editor,\n link: { url: string; text: string; rel: string; target: string }\n) => {\n const { url, text, rel, target } = link;\n\n if (!editor.selection) {\n return;\n }\n\n const linkEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n });\n\n if (linkEntry) {\n const [, linkPath] = linkEntry;\n Transforms.setNodes(editor, { url, rel, target }, { at: linkPath });\n\n // If link text is different, we remove the old text and insert the new one\n if (text !== '' && text !== Editor.string(editor, linkPath)) {\n const linkNodeChildrens = Array.from(Node.children(editor, linkPath, { reverse: true }));\n\n linkNodeChildrens.forEach(([, childPath]) => {\n Transforms.removeNodes(editor, { at: childPath });\n });\n\n Transforms.insertNodes(editor, [{ type: 'text', text }], { at: linkPath.concat(0) });\n }\n }\n};\n\nexport { insertLink, editLink, removeLink };\n"],"names":["removeLink","editor","Transforms","unwrapNodes","match","node","Editor","isEditor","SlateElement","isElement","type","insertLink","url","selection","linkNodes","Array","from","nodes","at","forEach","path","Range","isCollapsed","link","children","text","rel","target","insertNodes","wrapNodes","split","editLink","linkEntry","above","linkPath","setNodes","string","linkNodeChildrens","Node","reverse","childPath","removeNodes","concat"],"mappings":"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"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { Editor, Transforms, Range, Element, Node } from 'slate';
|
|
2
|
-
|
|
3
|
-
const removeLink = (editor)=>{
|
|
4
|
-
Transforms.unwrapNodes(editor, {
|
|
5
|
-
match: (node)=>!Editor.isEditor(node) && Element.isElement(node) && node.type === 'link'
|
|
6
|
-
});
|
|
7
|
-
};
|
|
8
|
-
const insertLink = (editor, { url })=>{
|
|
9
|
-
if (editor.selection) {
|
|
10
|
-
// We want to remove all link on the selection
|
|
11
|
-
const linkNodes = Array.from(Editor.nodes(editor, {
|
|
12
|
-
at: editor.selection,
|
|
13
|
-
match: (node)=>!Editor.isEditor(node) && node.type === 'link'
|
|
14
|
-
}));
|
|
15
|
-
linkNodes.forEach(([, path])=>{
|
|
16
|
-
Transforms.unwrapNodes(editor, {
|
|
17
|
-
at: path
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
if (Range.isCollapsed(editor.selection)) {
|
|
21
|
-
const link = {
|
|
22
|
-
type: 'link',
|
|
23
|
-
url: url ?? '',
|
|
24
|
-
children: [
|
|
25
|
-
{
|
|
26
|
-
type: 'text',
|
|
27
|
-
text: url
|
|
28
|
-
}
|
|
29
|
-
],
|
|
30
|
-
rel: '',
|
|
31
|
-
target: ''
|
|
32
|
-
};
|
|
33
|
-
Transforms.insertNodes(editor, link);
|
|
34
|
-
} else {
|
|
35
|
-
Transforms.wrapNodes(editor, {
|
|
36
|
-
type: 'link',
|
|
37
|
-
url: url ?? ''
|
|
38
|
-
}, {
|
|
39
|
-
split: true
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
const editLink = (editor, link)=>{
|
|
45
|
-
const { url, text, rel, target } = link;
|
|
46
|
-
if (!editor.selection) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const linkEntry = Editor.above(editor, {
|
|
50
|
-
match: (node)=>!Editor.isEditor(node) && node.type === 'link'
|
|
51
|
-
});
|
|
52
|
-
if (linkEntry) {
|
|
53
|
-
const [, linkPath] = linkEntry;
|
|
54
|
-
Transforms.setNodes(editor, {
|
|
55
|
-
url,
|
|
56
|
-
rel,
|
|
57
|
-
target
|
|
58
|
-
}, {
|
|
59
|
-
at: linkPath
|
|
60
|
-
});
|
|
61
|
-
// If link text is different, we remove the old text and insert the new one
|
|
62
|
-
if (text !== '' && text !== Editor.string(editor, linkPath)) {
|
|
63
|
-
const linkNodeChildrens = Array.from(Node.children(editor, linkPath, {
|
|
64
|
-
reverse: true
|
|
65
|
-
}));
|
|
66
|
-
linkNodeChildrens.forEach(([, childPath])=>{
|
|
67
|
-
Transforms.removeNodes(editor, {
|
|
68
|
-
at: childPath
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
Transforms.insertNodes(editor, [
|
|
72
|
-
{
|
|
73
|
-
type: 'text',
|
|
74
|
-
text
|
|
75
|
-
}
|
|
76
|
-
], {
|
|
77
|
-
at: linkPath.concat(0)
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
export { editLink, insertLink, removeLink };
|
|
84
|
-
//# sourceMappingURL=links.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"links.mjs","sources":["../../../../../../../../admin/src/pages/EditView/components/FormInputs/BlocksInput/utils/links.ts"],"sourcesContent":["import { Transforms, Editor, Element as SlateElement, Node, Range } from 'slate';\n\nimport { type Block } from './types';\n\nconst removeLink = (editor: Editor) => {\n Transforms.unwrapNodes(editor, {\n match: (node) => !Editor.isEditor(node) && SlateElement.isElement(node) && node.type === 'link',\n });\n};\n\nconst insertLink = (editor: Editor, { url }: { url: string }) => {\n if (editor.selection) {\n // We want to remove all link on the selection\n const linkNodes = Array.from(\n Editor.nodes(editor, {\n at: editor.selection,\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n })\n );\n\n linkNodes.forEach(([, path]) => {\n Transforms.unwrapNodes(editor, { at: path });\n });\n\n if (Range.isCollapsed(editor.selection)) {\n const link: Block<'link'> = {\n type: 'link',\n url: url ?? '',\n children: [{ type: 'text', text: url }],\n rel: '',\n target: '',\n };\n\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, { type: 'link', url: url ?? '' } as Block<'link'>, {\n split: true,\n });\n }\n }\n};\n\nconst editLink = (\n editor: Editor,\n link: { url: string; text: string; rel: string; target: string }\n) => {\n const { url, text, rel, target } = link;\n\n if (!editor.selection) {\n return;\n }\n\n const linkEntry = Editor.above(editor, {\n match: (node) => !Editor.isEditor(node) && node.type === 'link',\n });\n\n if (linkEntry) {\n const [, linkPath] = linkEntry;\n Transforms.setNodes(editor, { url, rel, target }, { at: linkPath });\n\n // If link text is different, we remove the old text and insert the new one\n if (text !== '' && text !== Editor.string(editor, linkPath)) {\n const linkNodeChildrens = Array.from(Node.children(editor, linkPath, { reverse: true }));\n\n linkNodeChildrens.forEach(([, childPath]) => {\n Transforms.removeNodes(editor, { at: childPath });\n });\n\n Transforms.insertNodes(editor, [{ type: 'text', text }], { at: linkPath.concat(0) });\n }\n }\n};\n\nexport { insertLink, editLink, removeLink };\n"],"names":["removeLink","editor","Transforms","unwrapNodes","match","node","Editor","isEditor","SlateElement","isElement","type","insertLink","url","selection","linkNodes","Array","from","nodes","at","forEach","path","Range","isCollapsed","link","children","text","rel","target","insertNodes","wrapNodes","split","editLink","linkEntry","above","linkPath","setNodes","string","linkNodeChildrens","Node","reverse","childPath","removeNodes","concat"],"mappings":"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"}
|
package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withImages.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { type Editor } from 'slate';
|
|
2
|
-
/**
|
|
3
|
-
* Images are void elements. They handle the rendering of their children instead of Slate.
|
|
4
|
-
* See the Slate documentation for more information:
|
|
5
|
-
* - https://docs.slatejs.org/api/nodes/element#void-vs-not-void
|
|
6
|
-
* - https://docs.slatejs.org/api/nodes/element#rendering-void-elements
|
|
7
|
-
*/
|
|
8
|
-
declare const withImages: (editor: Editor) => Omit<import("slate").BaseEditor & import("slate-react").ReactEditor & import("slate-history").HistoryEditor & import("./withLinks").LinkEditor, "children"> & {
|
|
9
|
-
children: import("@strapi/types/dist/schema/attribute").BlocksValue;
|
|
10
|
-
};
|
|
11
|
-
export { withImages };
|
package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/plugins/withLinks.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type BaseEditor, Path, Editor } from 'slate';
|
|
2
|
-
interface LinkEditor extends BaseEditor {
|
|
3
|
-
lastInsertedLinkPath: Path | null;
|
|
4
|
-
shouldSaveLinkPath: boolean;
|
|
5
|
-
}
|
|
6
|
-
declare const withLinks: (editor: Editor) => Omit<BaseEditor & import("slate-react").ReactEditor & import("slate-history").HistoryEditor & LinkEditor, "children"> & {
|
|
7
|
-
children: import("@strapi/types/dist/schema/attribute").BlocksValue;
|
|
8
|
-
};
|
|
9
|
-
export { withLinks, type LinkEditor };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Editor } from 'slate';
|
|
2
|
-
declare const removeLink: (editor: Editor) => void;
|
|
3
|
-
declare const insertLink: (editor: Editor, { url }: {
|
|
4
|
-
url: string;
|
|
5
|
-
}) => void;
|
|
6
|
-
declare const editLink: (editor: Editor, link: {
|
|
7
|
-
url: string;
|
|
8
|
-
text: string;
|
|
9
|
-
rel: string;
|
|
10
|
-
target: string;
|
|
11
|
-
}) => void;
|
|
12
|
-
export { insertLink, editLink, removeLink };
|