@strapi/content-manager 0.0.0-next.e98ae27d8c69c68823eb7c46cf329385637ba393 → 0.0.0-next.eb48c73c86cbc452c1ba8d727106f9ed9da0c834

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/admin/chunks/{ComponentConfigurationPage-Bn-SMKJG.js → ComponentConfigurationPage-B-gE3kXG.js} +5 -6
  2. package/dist/admin/chunks/{ComponentConfigurationPage-Bn-SMKJG.js.map → ComponentConfigurationPage-B-gE3kXG.js.map} +1 -1
  3. package/dist/admin/chunks/{ComponentConfigurationPage-Cqi5KqZa.mjs → ComponentConfigurationPage-R5N6EwIp.mjs} +5 -6
  4. package/dist/admin/chunks/{ComponentConfigurationPage-Cqi5KqZa.mjs.map → ComponentConfigurationPage-R5N6EwIp.mjs.map} +1 -1
  5. package/dist/admin/chunks/{EditConfigurationPage-Dm16gciL.mjs → EditConfigurationPage-0y9O2nBU.mjs} +5 -6
  6. package/dist/admin/chunks/{EditConfigurationPage-Dm16gciL.mjs.map → EditConfigurationPage-0y9O2nBU.mjs.map} +1 -1
  7. package/dist/admin/chunks/{EditConfigurationPage-CRxsqOhS.js → EditConfigurationPage-C62WuGTf.js} +5 -6
  8. package/dist/admin/chunks/{EditConfigurationPage-CRxsqOhS.js.map → EditConfigurationPage-C62WuGTf.js.map} +1 -1
  9. package/dist/admin/chunks/{EditViewPage-Dk8CeS40.js → EditViewPage-CiYAHBOX.js} +102 -95
  10. package/dist/admin/chunks/EditViewPage-CiYAHBOX.js.map +1 -0
  11. package/dist/admin/chunks/{EditViewPage-eTCSh2HB.mjs → EditViewPage-CkO2YLdg.mjs} +102 -95
  12. package/dist/admin/chunks/EditViewPage-CkO2YLdg.mjs.map +1 -0
  13. package/dist/admin/chunks/{Form-PB1sNax8.js → Form-DUs6lQ0C.js} +5 -5
  14. package/dist/admin/chunks/{Form-PB1sNax8.js.map → Form-DUs6lQ0C.js.map} +1 -1
  15. package/dist/admin/chunks/{Form-K_hq8zU4.mjs → Form-Db9A3cMO.mjs} +3 -3
  16. package/dist/admin/chunks/{Form-K_hq8zU4.mjs.map → Form-Db9A3cMO.mjs.map} +1 -1
  17. package/dist/admin/chunks/{History-CD5uVchr.mjs → History-BQ7IAJjV.mjs} +16 -12
  18. package/dist/admin/chunks/History-BQ7IAJjV.mjs.map +1 -0
  19. package/dist/admin/chunks/{History-CfsF-U-3.js → History-D99wxPry.js} +17 -13
  20. package/dist/admin/chunks/History-D99wxPry.js.map +1 -0
  21. package/dist/admin/chunks/{Input-grmHplxs.mjs → Input-CHDnpU3S.mjs} +1340 -55
  22. package/dist/admin/chunks/Input-CHDnpU3S.mjs.map +1 -0
  23. package/dist/admin/chunks/{Input-CU93J6dl.js → Input-Gop65dq6.js} +1352 -64
  24. package/dist/admin/chunks/Input-Gop65dq6.js.map +1 -0
  25. package/dist/admin/chunks/{ListConfigurationPage-Eo8txFp0.mjs → ListConfigurationPage-Bte99c0c.mjs} +4 -5
  26. package/dist/admin/chunks/{ListConfigurationPage-Eo8txFp0.mjs.map → ListConfigurationPage-Bte99c0c.mjs.map} +1 -1
  27. package/dist/admin/chunks/{ListConfigurationPage-nZti--Mw.js → ListConfigurationPage-pAdM7Lbn.js} +6 -7
  28. package/dist/admin/chunks/{ListConfigurationPage-nZti--Mw.js.map → ListConfigurationPage-pAdM7Lbn.js.map} +1 -1
  29. package/dist/admin/chunks/{ListViewPage-BBX-zSka.mjs → ListViewPage-7RTPaDs2.mjs} +3 -5
  30. package/dist/admin/chunks/ListViewPage-7RTPaDs2.mjs.map +1 -0
  31. package/dist/admin/chunks/{ListViewPage-DQYvHCxn.js → ListViewPage-CaBwwCVc.js} +7 -9
  32. package/dist/admin/chunks/ListViewPage-CaBwwCVc.js.map +1 -0
  33. package/dist/admin/chunks/{NoContentTypePage-C-rbOQO1.mjs → NoContentTypePage-CuTk3q_I.mjs} +2 -2
  34. package/dist/admin/chunks/{NoContentTypePage-C-rbOQO1.mjs.map → NoContentTypePage-CuTk3q_I.mjs.map} +1 -1
  35. package/dist/admin/chunks/{NoContentTypePage-ChYgz3sN.js → NoContentTypePage-DLD28j4F.js} +2 -2
  36. package/dist/admin/chunks/{NoContentTypePage-ChYgz3sN.js.map → NoContentTypePage-DLD28j4F.js.map} +1 -1
  37. package/dist/admin/chunks/{NoPermissionsPage-CuxrInhz.mjs → NoPermissionsPage-DSIlPmvv.mjs} +2 -2
  38. package/dist/admin/chunks/{NoPermissionsPage-CuxrInhz.mjs.map → NoPermissionsPage-DSIlPmvv.mjs.map} +1 -1
  39. package/dist/admin/chunks/{NoPermissionsPage-H4SAlJeF.js → NoPermissionsPage-iVMEcUp0.js} +2 -2
  40. package/dist/admin/chunks/{NoPermissionsPage-H4SAlJeF.js.map → NoPermissionsPage-iVMEcUp0.js.map} +1 -1
  41. package/dist/admin/chunks/{Preview-HqnNXn4S.mjs → Preview-35wsOM_p.mjs} +136 -211
  42. package/dist/admin/chunks/Preview-35wsOM_p.mjs.map +1 -0
  43. package/dist/admin/chunks/{Preview-Bz2dgOiw.js → Preview-CSU1sCSK.js} +134 -209
  44. package/dist/admin/chunks/Preview-CSU1sCSK.js.map +1 -0
  45. package/dist/admin/chunks/{en-CImiNxXE.mjs → en-C2zEwS3-.mjs} +4 -1
  46. package/dist/admin/chunks/{en-CImiNxXE.mjs.map → en-C2zEwS3-.mjs.map} +1 -1
  47. package/dist/admin/chunks/{en-CLf4SuMQ.js → en-G976DLsg.js} +4 -1
  48. package/dist/admin/chunks/{en-CLf4SuMQ.js.map → en-G976DLsg.js.map} +1 -1
  49. package/dist/admin/chunks/{index-DfX0uEQT.js → index-Cmh0Byay.js} +213 -129
  50. package/dist/admin/chunks/index-Cmh0Byay.js.map +1 -0
  51. package/dist/admin/chunks/{index-CS_nLuw2.mjs → index-DFvqTQvr.mjs} +212 -131
  52. package/dist/admin/chunks/index-DFvqTQvr.mjs.map +1 -0
  53. package/dist/admin/chunks/{layout-B4Uk0v1z.js → layout-DuH1v82S.js} +86 -13
  54. package/dist/admin/chunks/layout-DuH1v82S.js.map +1 -0
  55. package/dist/admin/chunks/{layout-BInXGFmo.mjs → layout-zQ9o6rg0.mjs} +78 -5
  56. package/dist/admin/chunks/layout-zQ9o6rg0.mjs.map +1 -0
  57. package/dist/admin/chunks/{useDragAndDrop-gcqEJMnO.js → objects-BJTP843m.js} +73 -1
  58. package/dist/admin/chunks/objects-BJTP843m.js.map +1 -0
  59. package/dist/admin/chunks/{useDragAndDrop-HYwNDExe.mjs → objects-D2z-IJgu.mjs} +72 -2
  60. package/dist/admin/chunks/objects-D2z-IJgu.mjs.map +1 -0
  61. package/dist/admin/chunks/{relations-9C5dQI9e.js → usePrev-B_pceXQ5.js} +18 -2
  62. package/dist/admin/chunks/usePrev-B_pceXQ5.js.map +1 -0
  63. package/dist/admin/chunks/{relations-CwL0ThH9.mjs → usePrev-CJFOGBK2.mjs} +18 -4
  64. package/dist/admin/chunks/usePrev-CJFOGBK2.mjs.map +1 -0
  65. package/dist/admin/chunks/{zh-Hans-CI0HKio3.mjs → zh-Hans-DEAhqI3x.mjs} +3 -2
  66. package/dist/admin/chunks/{zh-Hans-CI0HKio3.mjs.map → zh-Hans-DEAhqI3x.mjs.map} +1 -1
  67. package/dist/admin/chunks/{zh-Hans-JVK9x7xr.js → zh-Hans-Djj7eGpO.js} +3 -2
  68. package/dist/admin/chunks/{zh-Hans-JVK9x7xr.js.map → zh-Hans-Djj7eGpO.js.map} +1 -1
  69. package/dist/admin/index.js +1 -1
  70. package/dist/admin/index.mjs +1 -1
  71. package/dist/admin/src/content-manager.d.ts +3 -0
  72. package/dist/admin/src/features/DocumentContext.d.ts +53 -0
  73. package/dist/admin/src/features/DocumentRBAC.d.ts +3 -2
  74. package/dist/admin/src/hooks/useDocument.d.ts +2 -0
  75. package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -1
  76. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -1
  77. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +8 -0
  78. package/dist/admin/src/pages/EditView/components/FormInputs/{Relations.d.ts → Relations/Relations.d.ts} +9 -4
  79. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +8 -3
  80. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +7 -4
  81. package/dist/admin/src/preview/components/PreviewHeader.d.ts +1 -2
  82. package/package.json +6 -6
  83. package/dist/admin/chunks/EditViewPage-Dk8CeS40.js.map +0 -1
  84. package/dist/admin/chunks/EditViewPage-eTCSh2HB.mjs.map +0 -1
  85. package/dist/admin/chunks/History-CD5uVchr.mjs.map +0 -1
  86. package/dist/admin/chunks/History-CfsF-U-3.js.map +0 -1
  87. package/dist/admin/chunks/Input-CU93J6dl.js.map +0 -1
  88. package/dist/admin/chunks/Input-grmHplxs.mjs.map +0 -1
  89. package/dist/admin/chunks/ListViewPage-BBX-zSka.mjs.map +0 -1
  90. package/dist/admin/chunks/ListViewPage-DQYvHCxn.js.map +0 -1
  91. package/dist/admin/chunks/Preview-Bz2dgOiw.js.map +0 -1
  92. package/dist/admin/chunks/Preview-HqnNXn4S.mjs.map +0 -1
  93. package/dist/admin/chunks/Relations-BMvL4yMN.mjs +0 -1291
  94. package/dist/admin/chunks/Relations-BMvL4yMN.mjs.map +0 -1
  95. package/dist/admin/chunks/Relations-CbCAt692.js +0 -1318
  96. package/dist/admin/chunks/Relations-CbCAt692.js.map +0 -1
  97. package/dist/admin/chunks/index-CS_nLuw2.mjs.map +0 -1
  98. package/dist/admin/chunks/index-DfX0uEQT.js.map +0 -1
  99. package/dist/admin/chunks/layout-B4Uk0v1z.js.map +0 -1
  100. package/dist/admin/chunks/layout-BInXGFmo.mjs.map +0 -1
  101. package/dist/admin/chunks/objects-C3EebVVe.js +0 -76
  102. package/dist/admin/chunks/objects-C3EebVVe.js.map +0 -1
  103. package/dist/admin/chunks/objects-wl73iEma.mjs +0 -73
  104. package/dist/admin/chunks/objects-wl73iEma.mjs.map +0 -1
  105. package/dist/admin/chunks/relations-9C5dQI9e.js.map +0 -1
  106. package/dist/admin/chunks/relations-CwL0ThH9.mjs.map +0 -1
  107. package/dist/admin/chunks/useDragAndDrop-HYwNDExe.mjs.map +0 -1
  108. package/dist/admin/chunks/useDragAndDrop-gcqEJMnO.js.map +0 -1
  109. package/dist/admin/chunks/usePrev-Bjw2dhmq.mjs +0 -18
  110. package/dist/admin/chunks/usePrev-Bjw2dhmq.mjs.map +0 -1
  111. package/dist/admin/chunks/usePrev-DIYl-IAL.js +0 -21
  112. package/dist/admin/chunks/usePrev-DIYl-IAL.js.map +0 -1
  113. package/dist/admin/src/preview/components/PreviewContent.d.ts +0 -3
@@ -119,102 +119,6 @@ const DOCUMENT_META_FIELDS = [
119
119
  const SINGLE_TYPES = 'single-types';
120
120
  const COLLECTION_TYPES = 'collection-types';
121
121
 
122
- const [DocumentRBACProvider, useDocumentRBAC] = strapiAdmin.createContext('DocumentRBAC', {
123
- canCreate: false,
124
- canCreateFields: [],
125
- canDelete: false,
126
- canPublish: false,
127
- canRead: false,
128
- canReadFields: [],
129
- canUpdate: false,
130
- canUpdateFields: [],
131
- canUserAction: ()=>false,
132
- isLoading: false
133
- });
134
- /**
135
- * @internal This component is not meant to be used outside of the Content Manager plugin.
136
- * It depends on knowing the slug/model of the content-type using the params of the URL.
137
- * If you do use the hook outside of the context, we default to `false` for all actions.
138
- *
139
- * It then creates an list of `can{Action}` that are passed to the context for consumption
140
- * within the app to enforce RBAC.
141
- */ const DocumentRBAC = ({ children, permissions })=>{
142
- const { slug } = reactRouterDom.useParams();
143
- if (!slug) {
144
- throw new Error('Cannot find the slug param in the URL');
145
- }
146
- const [{ rawQuery }] = strapiAdmin.useQueryParams();
147
- const userPermissions = strapiAdmin.useAuth('DocumentRBAC', (state)=>state.permissions);
148
- const contentTypePermissions = React__namespace.useMemo(()=>{
149
- const contentTypePermissions = userPermissions.filter((permission)=>permission.subject === slug);
150
- return contentTypePermissions.reduce((acc, permission)=>{
151
- const [action] = permission.action.split('.').slice(-1);
152
- return {
153
- ...acc,
154
- [action]: [
155
- permission
156
- ]
157
- };
158
- }, {});
159
- }, [
160
- slug,
161
- userPermissions
162
- ]);
163
- const { isLoading, allowedActions } = strapiAdmin.useRBAC(contentTypePermissions, permissions ?? undefined, // TODO: useRBAC context should be typed and built differently
164
- // We are passing raw query as context to the hook so that it can
165
- // rely on the locale provided from DocumentRBAC for its permission calculations.
166
- rawQuery);
167
- const canCreateFields = !isLoading && allowedActions.canCreate ? extractAndDedupeFields(contentTypePermissions.create) : [];
168
- const canReadFields = !isLoading && allowedActions.canRead ? extractAndDedupeFields(contentTypePermissions.read) : [];
169
- const canUpdateFields = !isLoading && allowedActions.canUpdate ? extractAndDedupeFields(contentTypePermissions.update) : [];
170
- /**
171
- * @description Checks if the user can perform an action on a field based on the field names
172
- * provided as the second argument.
173
- */ const canUserAction = React__namespace.useCallback((fieldName, fieldsUserCanAction, fieldType)=>{
174
- const name = removeNumericalStrings(fieldName.split('.'));
175
- const componentFieldNames = fieldsUserCanAction// filter out fields that aren't components (components are dot separated)
176
- .filter((field)=>field.split('.').length > 1);
177
- if (fieldType === 'component') {
178
- // check if the field name is within any of those arrays
179
- return componentFieldNames.some((field)=>{
180
- return field.includes(name.join('.'));
181
- });
182
- }
183
- /**
184
- * The field is within a component.
185
- */ if (name.length > 1) {
186
- return componentFieldNames.includes(name.join('.'));
187
- }
188
- /**
189
- * just a regular field
190
- */ return fieldsUserCanAction.includes(fieldName);
191
- }, []);
192
- if (isLoading) {
193
- return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
194
- }
195
- return /*#__PURE__*/ jsxRuntime.jsx(DocumentRBACProvider, {
196
- isLoading: isLoading,
197
- canCreateFields: canCreateFields,
198
- canReadFields: canReadFields,
199
- canUpdateFields: canUpdateFields,
200
- canUserAction: canUserAction,
201
- ...allowedActions,
202
- children: children
203
- });
204
- };
205
- /**
206
- * @internal it's really small, but it's used three times in a row and DRY for something this straight forward.
207
- */ const extractAndDedupeFields = (permissions = [])=>permissions.flatMap((permission)=>permission.properties?.fields).filter((field, index, arr)=>arr.indexOf(field) === index && typeof field === 'string');
208
- /**
209
- * @internal removes numerical strings from arrays.
210
- * @example
211
- * ```ts
212
- * const name = 'a.0.b';
213
- * const res = removeNumericalStrings(name.split('.'));
214
- * console.log(res); // ['a', 'b']
215
- * ```
216
- */ const removeNumericalStrings = (arr)=>arr.filter((item)=>isNaN(Number(item)));
217
-
218
122
  const BLOCK_LIST_ATTRIBUTE_KEYS = [
219
123
  '__component',
220
124
  '__temp_key__'
@@ -1525,7 +1429,7 @@ const checkIfAttributeIsDisplayable = (attribute)=>{
1525
1429
  const { toggleNotification } = strapiAdmin.useNotification();
1526
1430
  const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
1527
1431
  const { formatMessage } = reactIntl.useIntl();
1528
- const { currentData: data, isLoading: isLoadingDocument, isFetching: isFetchingDocument, error } = useGetDocumentQuery(args, {
1432
+ const { currentData: data, isLoading: isLoadingDocument, isFetching: isFetchingDocument, error, refetch } = useGetDocumentQuery(args, {
1529
1433
  ...opts,
1530
1434
  skip: !args.documentId && args.collectionType !== SINGLE_TYPES || opts?.skip
1531
1435
  });
@@ -1624,7 +1528,8 @@ const checkIfAttributeIsDisplayable = (attribute)=>{
1624
1528
  schemas,
1625
1529
  validate,
1626
1530
  getTitle,
1627
- getInitialFormValues
1531
+ getInitialFormValues,
1532
+ refetch
1628
1533
  };
1629
1534
  };
1630
1535
  /* -------------------------------------------------------------------------------------------------
@@ -1697,6 +1602,144 @@ const checkIfAttributeIsDisplayable = (attribute)=>{
1697
1602
  };
1698
1603
  };
1699
1604
 
1605
+ const [DocumentProvider, useDocumentContext] = strapiAdmin.createContext('DocumentContext');
1606
+ /**
1607
+ * TODO: Document in contributor docs, Add unit test
1608
+ *
1609
+ * This context provider and its associated hook are used to access a document at its root level
1610
+ * and expose a function to change the current document being viewed to one of the root level docuemnt's relations.
1611
+ *
1612
+ * The useDocumentContext hook exposes:
1613
+ * - meta: information about the currentDocument,
1614
+ * - document: the actual document,
1615
+ * - changeDocument: a function to change the current document to one of its relations.
1616
+ * - rootDocumentMeta: information about the root level document (current page)
1617
+ */ const DocumentContextProvider = ({ children, initialDocument, onPreview })=>{
1618
+ /**
1619
+ * Initialize with the "root" document and expose a setter method to change to
1620
+ * one of the root level document's relations.
1621
+ */ const [currentDocumentMeta, changeDocument] = React__namespace.useState(initialDocument);
1622
+ const params = React__namespace.useMemo(()=>buildValidParams(currentDocumentMeta.params ?? {}), [
1623
+ currentDocumentMeta.params
1624
+ ]);
1625
+ const document = useDocument({
1626
+ ...currentDocumentMeta,
1627
+ params
1628
+ });
1629
+ const [documentHistory, setDocumentHistory] = React__namespace.useState([]);
1630
+ return /*#__PURE__*/ jsxRuntime.jsx(DocumentProvider, {
1631
+ changeDocument: changeDocument,
1632
+ document: document,
1633
+ rootDocumentMeta: {
1634
+ documentId: initialDocument.documentId,
1635
+ model: initialDocument.model,
1636
+ collectionType: initialDocument.collectionType
1637
+ },
1638
+ meta: currentDocumentMeta,
1639
+ documentHistory: documentHistory,
1640
+ setDocumentHistory: setDocumentHistory,
1641
+ onPreview: onPreview,
1642
+ children: children
1643
+ });
1644
+ };
1645
+
1646
+ const [DocumentRBACProvider, useDocumentRBAC] = strapiAdmin.createContext('DocumentRBAC', {
1647
+ canCreate: false,
1648
+ canCreateFields: [],
1649
+ canDelete: false,
1650
+ canPublish: false,
1651
+ canRead: false,
1652
+ canReadFields: [],
1653
+ canUpdate: false,
1654
+ canUpdateFields: [],
1655
+ canUserAction: ()=>false,
1656
+ isLoading: false
1657
+ });
1658
+ /**
1659
+ * @internal This component is not meant to be used outside of the Content Manager plugin.
1660
+ * It depends on knowing the slug/model of the content-type using the params of the URL or the model if it is passed as arg.
1661
+ * If you do use the hook outside of the context, we default to `false` for all actions.
1662
+ *
1663
+ * It then creates an list of `can{Action}` that are passed to the context for consumption
1664
+ * within the app to enforce RBAC.
1665
+ */ const DocumentRBAC = ({ children, permissions, model })=>{
1666
+ const { slug } = reactRouterDom.useParams();
1667
+ if (!slug && !model) {
1668
+ throw new Error('Cannot find the slug param in the URL or the model prop is not provided.');
1669
+ }
1670
+ const contentTypeUid = model ?? slug;
1671
+ const [{ rawQuery }] = strapiAdmin.useQueryParams();
1672
+ const userPermissions = strapiAdmin.useAuth('DocumentRBAC', (state)=>state.permissions);
1673
+ const contentTypePermissions = React__namespace.useMemo(()=>{
1674
+ const contentTypePermissions = userPermissions.filter((permission)=>permission.subject === contentTypeUid);
1675
+ return contentTypePermissions.reduce((acc, permission)=>{
1676
+ const [action] = permission.action.split('.').slice(-1);
1677
+ return {
1678
+ ...acc,
1679
+ [action]: [
1680
+ permission
1681
+ ]
1682
+ };
1683
+ }, {});
1684
+ }, [
1685
+ contentTypeUid,
1686
+ userPermissions
1687
+ ]);
1688
+ const { isLoading, allowedActions } = strapiAdmin.useRBAC(contentTypePermissions, permissions ?? undefined, // TODO: useRBAC context should be typed and built differently
1689
+ // We are passing raw query as context to the hook so that it can
1690
+ // rely on the locale provided from DocumentRBAC for its permission calculations.
1691
+ rawQuery);
1692
+ const canCreateFields = !isLoading && allowedActions.canCreate ? extractAndDedupeFields(contentTypePermissions.create) : [];
1693
+ const canReadFields = !isLoading && allowedActions.canRead ? extractAndDedupeFields(contentTypePermissions.read) : [];
1694
+ const canUpdateFields = !isLoading && allowedActions.canUpdate ? extractAndDedupeFields(contentTypePermissions.update) : [];
1695
+ /**
1696
+ * @description Checks if the user can perform an action on a field based on the field names
1697
+ * provided as the second argument.
1698
+ */ const canUserAction = React__namespace.useCallback((fieldName, fieldsUserCanAction, fieldType)=>{
1699
+ const name = removeNumericalStrings(fieldName.split('.'));
1700
+ const componentFieldNames = fieldsUserCanAction// filter out fields that aren't components (components are dot separated)
1701
+ .filter((field)=>field.split('.').length > 1);
1702
+ if (fieldType === 'component') {
1703
+ // check if the field name is within any of those arrays
1704
+ return componentFieldNames.some((field)=>{
1705
+ return field.includes(name.join('.'));
1706
+ });
1707
+ }
1708
+ /**
1709
+ * The field is within a component.
1710
+ */ if (name.length > 1) {
1711
+ return componentFieldNames.includes(name.join('.'));
1712
+ }
1713
+ /**
1714
+ * just a regular field
1715
+ */ return fieldsUserCanAction.includes(fieldName);
1716
+ }, []);
1717
+ if (isLoading) {
1718
+ return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
1719
+ }
1720
+ return /*#__PURE__*/ jsxRuntime.jsx(DocumentRBACProvider, {
1721
+ isLoading: isLoading,
1722
+ canCreateFields: canCreateFields,
1723
+ canReadFields: canReadFields,
1724
+ canUpdateFields: canUpdateFields,
1725
+ canUserAction: canUserAction,
1726
+ ...allowedActions,
1727
+ children: children
1728
+ });
1729
+ };
1730
+ /**
1731
+ * @internal it's really small, but it's used three times in a row and DRY for something this straight forward.
1732
+ */ const extractAndDedupeFields = (permissions = [])=>permissions.flatMap((permission)=>permission.properties?.fields).filter((field, index, arr)=>arr.indexOf(field) === index && typeof field === 'string');
1733
+ /**
1734
+ * @internal removes numerical strings from arrays.
1735
+ * @example
1736
+ * ```ts
1737
+ * const name = 'a.0.b';
1738
+ * const res = removeNumericalStrings(name.split('.'));
1739
+ * console.log(res); // ['a', 'b']
1740
+ * ```
1741
+ */ const removeNumericalStrings = (arr)=>arr.filter((item)=>isNaN(Number(item)));
1742
+
1700
1743
  const prefixPluginTranslations = (trad, pluginId)=>{
1701
1744
  return Object.keys(trad).reduce((acc, current)=>{
1702
1745
  acc[`${pluginId}.${current}`] = trad[current];
@@ -1731,7 +1774,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
1731
1774
  * ```
1732
1775
  *
1733
1776
  * @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document-operations} for more information
1734
- */ const useDocumentActions = ()=>{
1777
+ */ const useDocumentActions = (fromPreview = false, fromRelationModal = false)=>{
1735
1778
  const { toggleNotification } = strapiAdmin.useNotification();
1736
1779
  const { formatMessage } = reactIntl.useIntl();
1737
1780
  const { trackUsage } = strapiAdmin.useTracking();
@@ -1869,7 +1912,9 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
1869
1912
  const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();
1870
1913
  const publish = React__namespace.useCallback(async ({ collectionType, model, documentId, params }, data)=>{
1871
1914
  try {
1872
- trackUsage('willPublishEntry');
1915
+ trackUsage('willPublishEntry', {
1916
+ documentId
1917
+ });
1873
1918
  const res = await publishDocument({
1874
1919
  collectionType,
1875
1920
  model,
@@ -1886,7 +1931,11 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
1886
1931
  error: res.error
1887
1932
  };
1888
1933
  }
1889
- trackUsage('didPublishEntry');
1934
+ trackUsage('didPublishEntry', {
1935
+ documentId,
1936
+ fromPreview,
1937
+ fromRelationModal
1938
+ });
1890
1939
  toggleNotification({
1891
1940
  type: 'success',
1892
1941
  message: formatMessage({
@@ -1905,6 +1954,8 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
1905
1954
  }, [
1906
1955
  trackUsage,
1907
1956
  publishDocument,
1957
+ fromPreview,
1958
+ fromRelationModal,
1908
1959
  toggleNotification,
1909
1960
  formatMessage,
1910
1961
  formatAPIError
@@ -1973,7 +2024,12 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
1973
2024
  error: res.error
1974
2025
  };
1975
2026
  }
1976
- trackUsage('didEditEntry', trackerProperty);
2027
+ trackUsage('didEditEntry', {
2028
+ ...trackerProperty,
2029
+ documentId: res.data.data.documentId,
2030
+ fromPreview,
2031
+ fromRelationModal
2032
+ });
1977
2033
  toggleNotification({
1978
2034
  type: 'success',
1979
2035
  message: formatMessage({
@@ -1996,6 +2052,8 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
1996
2052
  }, [
1997
2053
  trackUsage,
1998
2054
  updateDocument,
2055
+ fromPreview,
2056
+ fromRelationModal,
1999
2057
  toggleNotification,
2000
2058
  formatMessage,
2001
2059
  formatAPIError
@@ -2109,7 +2167,10 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
2109
2167
  error: res.error
2110
2168
  };
2111
2169
  }
2112
- trackUsage('didCreateEntry', trackerProperty);
2170
+ trackUsage('didCreateEntry', {
2171
+ ...trackerProperty,
2172
+ documentId: res.data.data.documentId
2173
+ });
2113
2174
  toggleNotification({
2114
2175
  type: 'success',
2115
2176
  message: formatMessage({
@@ -2134,6 +2195,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
2134
2195
  createDocument,
2135
2196
  formatAPIError,
2136
2197
  formatMessage,
2198
+ setCurrentStep,
2137
2199
  toggleNotification,
2138
2200
  trackUsage
2139
2201
  ]);
@@ -2252,7 +2314,7 @@ const DEFAULT_UNEXPECTED_ERROR_MSG = {
2252
2314
  };
2253
2315
  };
2254
2316
 
2255
- const ProtectedHistoryPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./History-CfsF-U-3.js'); }).then((mod)=>({
2317
+ const ProtectedHistoryPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./History-D99wxPry.js'); }).then((mod)=>({
2256
2318
  default: mod.ProtectedHistoryPage
2257
2319
  })));
2258
2320
  /**
@@ -2268,7 +2330,7 @@ const ProtectedHistoryPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.res
2268
2330
  }
2269
2331
  ];
2270
2332
 
2271
- const ProtectedPreviewPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./Preview-Bz2dgOiw.js'); }).then((mod)=>({
2333
+ const ProtectedPreviewPage = /*#__PURE__*/ React__namespace.lazy(()=>Promise.resolve().then(function () { return require('./Preview-CSU1sCSK.js'); }).then((mod)=>({
2272
2334
  default: mod.ProtectedPreviewPage
2273
2335
  })));
2274
2336
  const routes$1 = [
@@ -2282,25 +2344,25 @@ const routes$1 = [
2282
2344
  }
2283
2345
  ];
2284
2346
 
2285
- const ProtectedEditViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditViewPage-Dk8CeS40.js'); }).then((mod)=>({
2347
+ const ProtectedEditViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditViewPage-CiYAHBOX.js'); }).then((mod)=>({
2286
2348
  default: mod.ProtectedEditViewPage
2287
2349
  })));
2288
- const ProtectedListViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListViewPage-DQYvHCxn.js'); }).then((mod)=>({
2350
+ const ProtectedListViewPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListViewPage-CaBwwCVc.js'); }).then((mod)=>({
2289
2351
  default: mod.ProtectedListViewPage
2290
2352
  })));
2291
- const ProtectedListConfiguration = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListConfigurationPage-nZti--Mw.js'); }).then((mod)=>({
2353
+ const ProtectedListConfiguration = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ListConfigurationPage-pAdM7Lbn.js'); }).then((mod)=>({
2292
2354
  default: mod.ProtectedListConfiguration
2293
2355
  })));
2294
- const ProtectedEditConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditConfigurationPage-CRxsqOhS.js'); }).then((mod)=>({
2356
+ const ProtectedEditConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./EditConfigurationPage-C62WuGTf.js'); }).then((mod)=>({
2295
2357
  default: mod.ProtectedEditConfigurationPage
2296
2358
  })));
2297
- const ProtectedComponentConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ComponentConfigurationPage-Bn-SMKJG.js'); }).then((mod)=>({
2359
+ const ProtectedComponentConfigurationPage = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./ComponentConfigurationPage-B-gE3kXG.js'); }).then((mod)=>({
2298
2360
  default: mod.ProtectedComponentConfigurationPage
2299
2361
  })));
2300
- const NoPermissions = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoPermissionsPage-H4SAlJeF.js'); }).then((mod)=>({
2362
+ const NoPermissions = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoPermissionsPage-iVMEcUp0.js'); }).then((mod)=>({
2301
2363
  default: mod.NoPermissions
2302
2364
  })));
2303
- const NoContentType = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoContentTypePage-ChYgz3sN.js'); }).then((mod)=>({
2365
+ const NoContentType = /*#__PURE__*/ React.lazy(()=>Promise.resolve().then(function () { return require('./NoContentTypePage-DLD28j4F.js'); }).then((mod)=>({
2304
2366
  default: mod.NoContentType
2305
2367
  })));
2306
2368
  const CollectionTypePages = ()=>{
@@ -2687,8 +2749,8 @@ const transformData = (data)=>{
2687
2749
  };
2688
2750
  /* -------------------------------------------------------------------------------------------------
2689
2751
  * DocumentActionComponents
2690
- * -----------------------------------------------------------------------------------------------*/ const PublishAction$1 = ({ activeTab, documentId, model, collectionType, meta, document })=>{
2691
- const { schema } = useDoc();
2752
+ * -----------------------------------------------------------------------------------------------*/ const PublishAction$1 = ({ activeTab, documentId, model, collectionType, meta, document, onPreview, fromPreview = false, fromRelationModal = false })=>{
2753
+ const schema = useDocumentContext('PublishAction', (state)=>state.document.schema);
2692
2754
  const navigate = reactRouterDom.useNavigate();
2693
2755
  const { toggleNotification } = strapiAdmin.useNotification();
2694
2756
  const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
@@ -2697,7 +2759,7 @@ const transformData = (data)=>{
2697
2759
  const { id } = reactRouterDom.useParams();
2698
2760
  const { formatMessage } = reactIntl.useIntl();
2699
2761
  const canPublish = useDocumentRBAC('PublishAction', ({ canPublish })=>canPublish);
2700
- const { publish, isLoading } = useDocumentActions();
2762
+ const { publish, isLoading } = useDocumentActions(fromPreview, fromRelationModal);
2701
2763
  const [countDraftRelations, { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations }] = useLazyGetDraftRelationCountQuery();
2702
2764
  const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React__namespace.useState(0);
2703
2765
  const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React__namespace.useState(0);
@@ -2711,6 +2773,8 @@ const transformData = (data)=>{
2711
2773
  const validate = strapiAdmin.useForm('PublishAction', (state)=>state.validate);
2712
2774
  const setErrors = strapiAdmin.useForm('PublishAction', (state)=>state.setErrors);
2713
2775
  const formValues = strapiAdmin.useForm('PublishAction', ({ values })=>values);
2776
+ const rootDocumentMeta = useDocumentContext('PublishAction', (state)=>state.rootDocumentMeta);
2777
+ const currentDocumentMeta = useDocumentContext('PublishAction', (state)=>state.meta);
2714
2778
  React__namespace.useEffect(()=>{
2715
2779
  if (isErrorDraftRelations) {
2716
2780
  toggleNotification({
@@ -2813,11 +2877,12 @@ const transformData = (data)=>{
2813
2877
  });
2814
2878
  return;
2815
2879
  }
2880
+ const isPublishingRelation = rootDocumentMeta.documentId !== currentDocumentMeta.documentId;
2816
2881
  const res = await publish({
2817
2882
  collectionType,
2818
2883
  model,
2819
2884
  documentId,
2820
- params
2885
+ params: isPublishingRelation ? currentDocumentMeta.params : params
2821
2886
  }, transformData(formValues));
2822
2887
  if ('data' in res && collectionType !== SINGLE_TYPES) {
2823
2888
  /**
@@ -2833,6 +2898,9 @@ const transformData = (data)=>{
2833
2898
  }
2834
2899
  } finally{
2835
2900
  setSubmitting(false);
2901
+ if (onPreview) {
2902
+ onPreview();
2903
+ }
2836
2904
  }
2837
2905
  };
2838
2906
  const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;
@@ -2844,7 +2912,8 @@ const transformData = (data)=>{
2844
2912
  loading: isLoading,
2845
2913
  position: [
2846
2914
  'panel',
2847
- 'preview'
2915
+ 'preview',
2916
+ 'relation-modal'
2848
2917
  ],
2849
2918
  /**
2850
2919
  * Disabled when:
@@ -2885,16 +2954,17 @@ const transformData = (data)=>{
2885
2954
  PublishAction$1.type = 'publish';
2886
2955
  PublishAction$1.position = [
2887
2956
  'panel',
2888
- 'preview'
2957
+ 'preview',
2958
+ 'relation-modal'
2889
2959
  ];
2890
- const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
2960
+ const UpdateAction = ({ activeTab, documentId, model, collectionType, onPreview, fromPreview = false, fromRelationModal = false })=>{
2891
2961
  const navigate = reactRouterDom.useNavigate();
2892
2962
  const { toggleNotification } = strapiAdmin.useNotification();
2893
2963
  const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
2894
2964
  const cloneMatch = reactRouterDom.useMatch(CLONE_PATH);
2895
2965
  const isCloning = cloneMatch !== null;
2896
2966
  const { formatMessage } = reactIntl.useIntl();
2897
- const { create, update, clone, isLoading } = useDocumentActions();
2967
+ const { create, update, clone, isLoading } = useDocumentActions(fromPreview, fromRelationModal);
2898
2968
  const [{ query, rawQuery }] = strapiAdmin.useQueryParams();
2899
2969
  const params = React__namespace.useMemo(()=>buildValidParams(query), [
2900
2970
  query
@@ -2906,6 +2976,8 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
2906
2976
  const validate = strapiAdmin.useForm('UpdateAction', (state)=>state.validate);
2907
2977
  const setErrors = strapiAdmin.useForm('UpdateAction', (state)=>state.setErrors);
2908
2978
  const resetForm = strapiAdmin.useForm('PublishAction', ({ resetForm })=>resetForm);
2979
+ const rootDocumentMeta = useDocumentContext('UpdateAction', (state)=>state.rootDocumentMeta);
2980
+ const currentDocumentMeta = useDocumentContext('UpdateAction', (state)=>state.meta);
2909
2981
  const handleUpdate = React__namespace.useCallback(async ()=>{
2910
2982
  setSubmitting(true);
2911
2983
  try {
@@ -2942,11 +3014,12 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
2942
3014
  setErrors(formatValidationErrors(res.error));
2943
3015
  }
2944
3016
  } else if (documentId || collectionType === SINGLE_TYPES) {
3017
+ const isEditingRelation = rootDocumentMeta.documentId !== currentDocumentMeta.documentId;
2945
3018
  const res = await update({
2946
3019
  collectionType,
2947
3020
  model,
2948
3021
  documentId,
2949
- params
3022
+ params: isEditingRelation ? currentDocumentMeta.params : params
2950
3023
  }, transformData(document));
2951
3024
  if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
2952
3025
  setErrors(formatValidationErrors(res.error));
@@ -2972,12 +3045,17 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
2972
3045
  }
2973
3046
  } finally{
2974
3047
  setSubmitting(false);
3048
+ if (onPreview) {
3049
+ onPreview();
3050
+ }
2975
3051
  }
2976
3052
  }, [
2977
3053
  clone,
2978
3054
  cloneMatch?.params.origin,
2979
3055
  collectionType,
2980
3056
  create,
3057
+ currentDocumentMeta.documentId,
3058
+ currentDocumentMeta.params,
2981
3059
  document,
2982
3060
  documentId,
2983
3061
  formatMessage,
@@ -2986,9 +3064,11 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
2986
3064
  model,
2987
3065
  modified,
2988
3066
  navigate,
3067
+ onPreview,
2989
3068
  params,
2990
3069
  rawQuery,
2991
3070
  resetForm,
3071
+ rootDocumentMeta.documentId,
2992
3072
  setErrors,
2993
3073
  setSubmitting,
2994
3074
  toggleNotification,
@@ -3025,14 +3105,16 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
3025
3105
  onClick: handleUpdate,
3026
3106
  position: [
3027
3107
  'panel',
3028
- 'preview'
3108
+ 'preview',
3109
+ 'relation-modal'
3029
3110
  ]
3030
3111
  };
3031
3112
  };
3032
3113
  UpdateAction.type = 'update';
3033
3114
  UpdateAction.position = [
3034
3115
  'panel',
3035
- 'preview'
3116
+ 'preview',
3117
+ 'relation-modal'
3036
3118
  ];
3037
3119
  const UNPUBLISH_DRAFT_OPTIONS = {
3038
3120
  KEEP: 'keep',
@@ -3325,12 +3407,11 @@ const capitalise = (str)=>str.charAt(0).toUpperCase() + str.slice(1);
3325
3407
  size: size,
3326
3408
  variant: statusVariant,
3327
3409
  role: "status",
3328
- "aria-labelledby": "document-status",
3410
+ "aria-label": status,
3329
3411
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
3330
3412
  tag: "span",
3331
3413
  variant: "omega",
3332
3414
  fontWeight: "bold",
3333
- id: "document-status",
3334
3415
  children: formatMessage({
3335
3416
  id: `content-manager.containers.List.${status}`,
3336
3417
  defaultMessage: capitalise(status)
@@ -5309,7 +5390,7 @@ function __variableDynamicImportRuntime1__(path) {
5309
5390
  case './translations/ca.json': return Promise.resolve().then(function () { return require('./ca-ClDTvatJ.js'); });
5310
5391
  case './translations/cs.json': return Promise.resolve().then(function () { return require('./cs-BJFxwIWj.js'); });
5311
5392
  case './translations/de.json': return Promise.resolve().then(function () { return require('./de-CbImAUA5.js'); });
5312
- case './translations/en.json': return Promise.resolve().then(function () { return require('./en-CLf4SuMQ.js'); });
5393
+ case './translations/en.json': return Promise.resolve().then(function () { return require('./en-G976DLsg.js'); });
5313
5394
  case './translations/es.json': return Promise.resolve().then(function () { return require('./es-C8vLuvZL.js'); });
5314
5395
  case './translations/eu.json': return Promise.resolve().then(function () { return require('./eu-BJW3AvXu.js'); });
5315
5396
  case './translations/fr.json': return Promise.resolve().then(function () { return require('./fr-gQSilC7w.js'); });
@@ -5334,7 +5415,7 @@ function __variableDynamicImportRuntime1__(path) {
5334
5415
  case './translations/tr.json': return Promise.resolve().then(function () { return require('./tr-CkS6sLIE.js'); });
5335
5416
  case './translations/uk.json': return Promise.resolve().then(function () { return require('./uk-DB6OgySY.js'); });
5336
5417
  case './translations/vi.json': return Promise.resolve().then(function () { return require('./vi-BGr1X_HZ.js'); });
5337
- case './translations/zh-Hans.json': return Promise.resolve().then(function () { return require('./zh-Hans-JVK9x7xr.js'); });
5418
+ case './translations/zh-Hans.json': return Promise.resolve().then(function () { return require('./zh-Hans-Djj7eGpO.js'); });
5338
5419
  case './translations/zh.json': return Promise.resolve().then(function () { return require('./zh-DwFu_Kfj.js'); });
5339
5420
  default: return new Promise(function(resolve, reject) {
5340
5421
  (typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout)(
@@ -5363,7 +5444,7 @@ var index = {
5363
5444
  app.router.addRoute({
5364
5445
  path: 'content-manager/*',
5365
5446
  lazy: async ()=>{
5366
- const { Layout } = await Promise.resolve().then(function () { return require('./layout-B4Uk0v1z.js'); });
5447
+ const { Layout } = await Promise.resolve().then(function () { return require('./layout-DuH1v82S.js'); });
5367
5448
  return {
5368
5449
  Component: Layout
5369
5450
  };
@@ -5405,6 +5486,7 @@ exports.COLLECTION_TYPES = COLLECTION_TYPES;
5405
5486
  exports.CREATOR_FIELDS = CREATOR_FIELDS;
5406
5487
  exports.DEFAULT_SETTINGS = DEFAULT_SETTINGS;
5407
5488
  exports.DocumentActionButton = DocumentActionButton;
5489
+ exports.DocumentContextProvider = DocumentContextProvider;
5408
5490
  exports.DocumentRBAC = DocumentRBAC;
5409
5491
  exports.DocumentStatus = DocumentStatus;
5410
5492
  exports.HOOKS = HOOKS;
@@ -5438,6 +5520,7 @@ exports.useDoc = useDoc;
5438
5520
  exports.useDocLayout = useDocLayout;
5439
5521
  exports.useDocument = useDocument;
5440
5522
  exports.useDocumentActions = useDocumentActions;
5523
+ exports.useDocumentContext = useDocumentContext;
5441
5524
  exports.useDocumentLayout = useDocumentLayout;
5442
5525
  exports.useDocumentRBAC = useDocumentRBAC;
5443
5526
  exports.useGetAllContentTypeSettingsQuery = useGetAllContentTypeSettingsQuery;
@@ -5445,5 +5528,6 @@ exports.useGetAllDocumentsQuery = useGetAllDocumentsQuery;
5445
5528
  exports.useGetContentTypeConfigurationQuery = useGetContentTypeConfigurationQuery;
5446
5529
  exports.useGetInitialDataQuery = useGetInitialDataQuery;
5447
5530
  exports.useGetPreviewUrlQuery = useGetPreviewUrlQuery;
5531
+ exports.useLazyGetDocumentQuery = useLazyGetDocumentQuery;
5448
5532
  exports.useUpdateContentTypeConfigurationMutation = useUpdateContentTypeConfigurationMutation;
5449
- //# sourceMappingURL=index-DfX0uEQT.js.map
5533
+ //# sourceMappingURL=index-Cmh0Byay.js.map