@strapi/content-manager 5.12.5 → 5.13.0-beta.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.
Files changed (117) hide show
  1. package/dist/admin/hooks/useDocumentActions.js +5 -1
  2. package/dist/admin/hooks/useDocumentActions.js.map +1 -1
  3. package/dist/admin/hooks/useDocumentActions.mjs +5 -1
  4. package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
  5. package/dist/admin/hooks/useDocumentContext.js.map +1 -1
  6. package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
  7. package/dist/admin/pages/EditView/components/DocumentActions.js +206 -21
  8. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  9. package/dist/admin/pages/EditView/components/DocumentActions.mjs +208 -23
  10. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  11. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +7 -12
  12. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  13. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +8 -13
  14. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  15. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +46 -95
  16. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
  17. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +48 -78
  18. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
  19. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +2 -0
  20. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +2 -0
  22. package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +199 -137
  24. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +199 -137
  26. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +89 -50
  28. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +91 -52
  30. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +50 -97
  32. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +51 -79
  34. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  35. package/dist/admin/preview/components/PreviewHeader.js +1 -1
  36. package/dist/admin/preview/components/PreviewHeader.js.map +1 -1
  37. package/dist/admin/preview/components/PreviewHeader.mjs +1 -1
  38. package/dist/admin/preview/components/PreviewHeader.mjs.map +1 -1
  39. package/dist/admin/services/homepage.js +9 -5
  40. package/dist/admin/services/homepage.js.map +1 -1
  41. package/dist/admin/services/homepage.mjs +9 -5
  42. package/dist/admin/services/homepage.mjs.map +1 -1
  43. package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
  44. package/dist/admin/src/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.d.ts +2 -2
  45. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +26 -5
  46. package/dist/admin/translations/en.json.js +2 -1
  47. package/dist/admin/translations/en.json.js.map +1 -1
  48. package/dist/admin/translations/en.json.mjs +2 -1
  49. package/dist/admin/translations/en.json.mjs.map +1 -1
  50. package/dist/server/controllers/index.js +3 -1
  51. package/dist/server/controllers/index.js.map +1 -1
  52. package/dist/server/controllers/index.mjs +3 -1
  53. package/dist/server/controllers/index.mjs.map +1 -1
  54. package/dist/server/homepage/controllers/homepage.js +57 -0
  55. package/dist/server/homepage/controllers/homepage.js.map +1 -0
  56. package/dist/server/homepage/controllers/homepage.mjs +36 -0
  57. package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
  58. package/dist/server/homepage/controllers/index.js +10 -0
  59. package/dist/server/homepage/controllers/index.js.map +1 -0
  60. package/dist/server/homepage/controllers/index.mjs +8 -0
  61. package/dist/server/homepage/controllers/index.mjs.map +1 -0
  62. package/dist/server/homepage/index.js +14 -0
  63. package/dist/server/homepage/index.js.map +1 -0
  64. package/dist/server/homepage/index.mjs +12 -0
  65. package/dist/server/homepage/index.mjs.map +1 -0
  66. package/dist/server/homepage/routes/homepage.js +25 -0
  67. package/dist/server/homepage/routes/homepage.js.map +1 -0
  68. package/dist/server/homepage/routes/homepage.mjs +23 -0
  69. package/dist/server/homepage/routes/homepage.mjs.map +1 -0
  70. package/dist/server/homepage/routes/index.js +13 -0
  71. package/dist/server/homepage/routes/index.js.map +1 -0
  72. package/dist/server/homepage/routes/index.mjs +11 -0
  73. package/dist/server/homepage/routes/index.mjs.map +1 -0
  74. package/dist/server/homepage/services/homepage.js +157 -0
  75. package/dist/server/homepage/services/homepage.js.map +1 -0
  76. package/dist/server/homepage/services/homepage.mjs +155 -0
  77. package/dist/server/homepage/services/homepage.mjs.map +1 -0
  78. package/dist/server/homepage/services/index.js +10 -0
  79. package/dist/server/homepage/services/index.js.map +1 -0
  80. package/dist/server/homepage/services/index.mjs +8 -0
  81. package/dist/server/homepage/services/index.mjs.map +1 -0
  82. package/dist/server/preview/services/preview.js +0 -1
  83. package/dist/server/preview/services/preview.js.map +1 -1
  84. package/dist/server/preview/services/preview.mjs +0 -1
  85. package/dist/server/preview/services/preview.mjs.map +1 -1
  86. package/dist/server/routes/index.js +3 -1
  87. package/dist/server/routes/index.js.map +1 -1
  88. package/dist/server/routes/index.mjs +3 -1
  89. package/dist/server/routes/index.mjs.map +1 -1
  90. package/dist/server/services/index.js +3 -1
  91. package/dist/server/services/index.js.map +1 -1
  92. package/dist/server/services/index.mjs +3 -1
  93. package/dist/server/services/index.mjs.map +1 -1
  94. package/dist/server/src/controllers/index.d.ts.map +1 -1
  95. package/dist/server/src/homepage/controllers/homepage.d.ts +7 -0
  96. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
  97. package/dist/server/src/homepage/controllers/index.d.ts +2 -0
  98. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
  99. package/dist/server/src/homepage/index.d.ts +16 -0
  100. package/dist/server/src/homepage/index.d.ts.map +1 -0
  101. package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
  102. package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
  103. package/dist/server/src/homepage/routes/index.d.ts +8 -0
  104. package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
  105. package/dist/server/src/{services → homepage/services}/homepage.d.ts +1 -1
  106. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
  107. package/dist/server/src/homepage/services/index.d.ts +9 -0
  108. package/dist/server/src/homepage/services/index.d.ts.map +1 -0
  109. package/dist/server/src/index.d.ts +7 -0
  110. package/dist/server/src/index.d.ts.map +1 -1
  111. package/dist/server/src/preview/services/preview.d.ts.map +1 -1
  112. package/dist/server/src/routes/index.d.ts +1 -0
  113. package/dist/server/src/routes/index.d.ts.map +1 -1
  114. package/dist/server/src/services/index.d.ts +6 -0
  115. package/dist/server/src/services/index.d.ts.map +1 -1
  116. package/package.json +7 -7
  117. package/dist/server/src/services/homepage.d.ts.map +0 -1
@@ -6,6 +6,9 @@ var strapiAdmin = require('@strapi/admin/strapi-admin');
6
6
  var designSystem = require('@strapi/design-system');
7
7
  var Icons = require('@strapi/icons');
8
8
  var mapValues = require('lodash/fp/mapValues');
9
+ var get = require('lodash/get');
10
+ var merge = require('lodash/merge');
11
+ var set = require('lodash/set');
9
12
  var reactIntl = require('react-intl');
10
13
  var reactRouterDom = require('react-router-dom');
11
14
  var styledComponents = require('styled-components');
@@ -20,6 +23,7 @@ var router = require('../../../router.js');
20
23
  var documents = require('../../../services/documents.js');
21
24
  var api = require('../../../utils/api.js');
22
25
  var translations = require('../../../utils/translations.js');
26
+ var RelationModal = require('./FormInputs/Relations/RelationModal.js');
23
27
 
24
28
  function _interopNamespaceDefault(e) {
25
29
  var n = Object.create(null);
@@ -40,6 +44,38 @@ function _interopNamespaceDefault(e) {
40
44
 
41
45
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
42
46
 
47
+ const connectRelationToParent = (parentDataToUpdate, fieldToConnect, data, fieldToConnectUID)=>{
48
+ /*
49
+ * Check if the fieldToConnect is already present in the parentDataToUpdate.
50
+ * This happens in particular when in the parentDocument you have created
51
+ * a new component without saving.
52
+ */ const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);
53
+ const fieldToConnectPath = isFieldPresent ? fieldToConnect : fieldToConnect.split('.').slice(0, -1).join('.');
54
+ const fieldToConnectValue = isFieldPresent ? {
55
+ connect: [
56
+ {
57
+ id: data.documentId,
58
+ documentId: data.documentId,
59
+ locale: data.locale
60
+ }
61
+ ]
62
+ } : {
63
+ [fieldToConnect.split('.').pop()]: {
64
+ connect: [
65
+ {
66
+ id: data.documentId,
67
+ documentId: data.documentId,
68
+ locale: data.locale
69
+ }
70
+ ],
71
+ disconnect: []
72
+ },
73
+ // In case the object was not present you need to pass the componentUID of the parent document
74
+ __component: fieldToConnectUID
75
+ };
76
+ const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);
77
+ return merge(parentDataToUpdate, objectToConnect);
78
+ };
43
79
  const DocumentActions = ({ actions })=>{
44
80
  const { formatMessage } = reactIntl.useIntl();
45
81
  const [primaryAction, secondaryAction, ...restActions] = actions.filter((action)=>{
@@ -395,7 +431,17 @@ const transformData = (data)=>{
395
431
  const setErrors = strapiAdmin.useForm('PublishAction', (state)=>state.setErrors);
396
432
  const formValues = strapiAdmin.useForm('PublishAction', ({ values })=>values);
397
433
  const resetForm = strapiAdmin.useForm('PublishAction', ({ resetForm })=>resetForm);
434
+ // need to discriminate if the publish is coming from a relation modal or in the edit view
435
+ const relationContext = RelationModal.useRelationModal('PublishAction', ()=>true, false);
436
+ const fromRelationModal = relationContext != undefined;
437
+ const dispatch = RelationModal.useRelationModal('PublishAction', (state)=>state.dispatch);
438
+ const fieldToConnect = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnect, false);
439
+ const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
440
+ const documentHistory = RelationModal.useRelationModal('PublishAction', (state)=>state.state.documentHistory, false);
441
+ const rootDocumentMeta = RelationModal.useRelationModal('PublishAction', (state)=>state.rootDocumentMeta);
398
442
  const { currentDocumentMeta } = useDocumentContext.useDocumentContext('PublishAction');
443
+ const [updateDocumentMutation] = documents.useUpdateDocumentMutation();
444
+ const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
399
445
  const idToPublish = currentDocumentMeta.documentId || id;
400
446
  React__namespace.useEffect(()=>{
401
447
  if (isErrorDraftRelations) {
@@ -479,6 +525,16 @@ const transformData = (data)=>{
479
525
  model,
480
526
  currentDocumentMeta.params
481
527
  ]);
528
+ const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
529
+ const parentDocumentData = useDocument.useDocument({
530
+ documentId: parentDocumentMetaToUpdate?.documentId,
531
+ model: parentDocumentMetaToUpdate?.model,
532
+ collectionType: parentDocumentMetaToUpdate?.collectionType,
533
+ params: parentDocumentMetaToUpdate?.params
534
+ }, {
535
+ skip: !parentDocumentMetaToUpdate
536
+ });
537
+ const { getInitialFormValues } = useDocument.useDoc();
482
538
  const isDocumentPublished = (document?.[attributes.PUBLISHED_AT_ATTRIBUTE_NAME] || meta?.availableStatus.some((doc)=>doc[attributes.PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) && document?.status !== 'modified';
483
539
  if (!schema?.options?.draftAndPublish) {
484
540
  return null;
@@ -512,11 +568,59 @@ const transformData = (data)=>{
512
568
  if ('data' in res && collectionType !== collections.SINGLE_TYPES) {
513
569
  /**
514
570
  * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.
515
- */ if (idToPublish === 'create') {
571
+ */ if (idToPublish === 'create' && !fromRelationModal) {
516
572
  navigate({
517
573
  pathname: `../${collectionType}/${model}/${res.data.documentId}`,
518
574
  search: rawQuery
519
575
  });
576
+ } else if (fromRelationModal) {
577
+ const newRelation = {
578
+ documentId: res.data.documentId,
579
+ collectionType,
580
+ model,
581
+ params: currentDocumentMeta.params
582
+ };
583
+ /*
584
+ * Update, if needed, the parent relation with the newly published document.
585
+ * Check if in history we have the parent relation otherwise use the
586
+ * rootDocument
587
+ */ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES)) {
588
+ const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
589
+ const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;
590
+ const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
591
+ try {
592
+ const updateRes = await updateDocumentMutation({
593
+ collectionType: metaDocumentToUpdate.collectionType,
594
+ model: metaDocumentToUpdate.model,
595
+ documentId: metaDocumentToUpdate.collectionType !== collections.SINGLE_TYPES ? metaDocumentToUpdate.documentId : undefined,
596
+ params: metaDocumentToUpdate.params,
597
+ data: dataToUpdate
598
+ });
599
+ if ('error' in updateRes) {
600
+ toggleNotification({
601
+ type: 'danger',
602
+ message: formatAPIError(updateRes.error)
603
+ });
604
+ return;
605
+ }
606
+ } catch (err) {
607
+ toggleNotification({
608
+ type: 'danger',
609
+ message: formatMessage({
610
+ id: 'notification.error',
611
+ defaultMessage: 'An error occurred'
612
+ })
613
+ });
614
+ throw err;
615
+ }
616
+ }
617
+ dispatch({
618
+ type: 'GO_TO_CREATED_RELATION',
619
+ payload: {
620
+ document: newRelation,
621
+ shouldBypassConfirmation: true
622
+ }
623
+ });
520
624
  }
521
625
  } else if ('error' in res && api.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
522
626
  setErrors(formatValidationErrors(res.error));
@@ -592,14 +696,34 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
592
696
  const { create, update, clone, isLoading } = useDocumentActions.useDocumentActions();
593
697
  const [{ rawQuery }] = strapiAdmin.useQueryParams();
594
698
  const onPreview = Preview.usePreviewContext('UpdateAction', (state)=>state.onPreview, false);
699
+ const { getInitialFormValues } = useDocument.useDoc();
595
700
  const isSubmitting = strapiAdmin.useForm('UpdateAction', ({ isSubmitting })=>isSubmitting);
596
701
  const modified = strapiAdmin.useForm('UpdateAction', ({ modified })=>modified);
597
702
  const setSubmitting = strapiAdmin.useForm('UpdateAction', ({ setSubmitting })=>setSubmitting);
598
703
  const document = strapiAdmin.useForm('UpdateAction', ({ values })=>values);
599
704
  const validate = strapiAdmin.useForm('UpdateAction', (state)=>state.validate);
600
705
  const setErrors = strapiAdmin.useForm('UpdateAction', (state)=>state.setErrors);
601
- const resetForm = strapiAdmin.useForm('PublishAction', ({ resetForm })=>resetForm);
706
+ const resetForm = strapiAdmin.useForm('UpdateAction', ({ resetForm })=>resetForm);
707
+ const dispatch = RelationModal.useRelationModal('UpdateAction', (state)=>state.dispatch);
708
+ // need to discriminate if the update is coming from a relation modal or in the edit view
709
+ const relationContext = RelationModal.useRelationModal('UpdateAction', ()=>true, false);
710
+ const fieldToConnect = RelationModal.useRelationModal('UpdateAction', (state)=>state.state.fieldToConnect, false);
711
+ const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
712
+ const documentHistory = RelationModal.useRelationModal('UpdateAction', (state)=>state.state.documentHistory, false);
713
+ const rootDocumentMeta = RelationModal.useRelationModal('UpdateAction', (state)=>state.rootDocumentMeta);
714
+ const fromRelationModal = relationContext != undefined;
602
715
  const { currentDocumentMeta } = useDocumentContext.useDocumentContext('UpdateAction');
716
+ const [updateDocumentMutation] = documents.useUpdateDocumentMutation();
717
+ const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
718
+ const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;
719
+ const parentDocumentData = useDocument.useDocument({
720
+ documentId: parentDocumentMetaToUpdate?.documentId,
721
+ model: parentDocumentMetaToUpdate?.model,
722
+ collectionType: parentDocumentMetaToUpdate?.collectionType,
723
+ params: parentDocumentMetaToUpdate?.params
724
+ }, {
725
+ skip: !parentDocumentMetaToUpdate
726
+ });
603
727
  const handleUpdate = React__namespace.useCallback(async ()=>{
604
728
  setSubmitting(true);
605
729
  try {
@@ -653,13 +777,64 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
653
777
  params: currentDocumentMeta.params
654
778
  }, transformData(document));
655
779
  if ('data' in res && collectionType !== collections.SINGLE_TYPES) {
656
- navigate({
657
- pathname: `../${res.data.documentId}`,
658
- search: rawQuery
659
- }, {
660
- replace: true,
661
- relative: 'path'
662
- });
780
+ if (fromRelationModal) {
781
+ const createdRelation = {
782
+ documentId: res.data.documentId,
783
+ collectionType,
784
+ model,
785
+ params: currentDocumentMeta.params
786
+ };
787
+ /*
788
+ * Update, if needed, the parent relation with the newly published document.
789
+ * Check if in history we have the parent relation otherwise use the
790
+ * rootDocument
791
+ */ if (fieldToConnect && documentHistory && (parentDocumentMetaToUpdate.documentId || parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES)) {
792
+ const parentDataToUpdate = parentDocumentMetaToUpdate.collectionType === collections.SINGLE_TYPES ? getInitialFormValues() : parentDocumentData.getInitialFormValues();
793
+ const dataToUpdate = connectRelationToParent(parentDataToUpdate, fieldToConnect, res.data, fieldToConnectUID);
794
+ try {
795
+ const updateRes = await updateDocumentMutation({
796
+ collectionType: parentDocumentMetaToUpdate.collectionType,
797
+ model: parentDocumentMetaToUpdate.model,
798
+ documentId: parentDocumentMetaToUpdate.collectionType !== collections.SINGLE_TYPES ? parentDocumentMetaToUpdate.documentId : undefined,
799
+ params: parentDocumentMetaToUpdate.params,
800
+ data: {
801
+ ...dataToUpdate
802
+ }
803
+ });
804
+ if ('error' in updateRes) {
805
+ toggleNotification({
806
+ type: 'danger',
807
+ message: formatAPIError(updateRes.error)
808
+ });
809
+ return;
810
+ }
811
+ } catch (err) {
812
+ toggleNotification({
813
+ type: 'danger',
814
+ message: formatMessage({
815
+ id: 'notification.error',
816
+ defaultMessage: 'An error occurred'
817
+ })
818
+ });
819
+ throw err;
820
+ }
821
+ }
822
+ dispatch({
823
+ type: 'GO_TO_CREATED_RELATION',
824
+ payload: {
825
+ document: createdRelation,
826
+ shouldBypassConfirmation: true
827
+ }
828
+ });
829
+ } else {
830
+ navigate({
831
+ pathname: `../${res.data.documentId}`,
832
+ search: rawQuery
833
+ }, {
834
+ replace: true,
835
+ relative: 'path'
836
+ });
837
+ }
663
838
  } else if ('error' in res && api.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
664
839
  setErrors(formatValidationErrors(res.error));
665
840
  }
@@ -671,26 +846,36 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
671
846
  }
672
847
  }
673
848
  }, [
849
+ setSubmitting,
850
+ modified,
851
+ validate,
852
+ isCloning,
853
+ documentId,
854
+ collectionType,
855
+ toggleNotification,
856
+ formatMessage,
674
857
  clone,
858
+ model,
675
859
  cloneMatch?.params.origin,
676
- collectionType,
677
- create,
678
860
  currentDocumentMeta.params,
679
861
  document,
680
- documentId,
681
- formatMessage,
682
- formatValidationErrors,
683
- isCloning,
684
- model,
685
- modified,
686
862
  navigate,
687
863
  rawQuery,
688
- resetForm,
689
864
  setErrors,
690
- setSubmitting,
691
- toggleNotification,
865
+ formatValidationErrors,
692
866
  update,
693
- validate,
867
+ resetForm,
868
+ create,
869
+ fromRelationModal,
870
+ fieldToConnect,
871
+ documentHistory,
872
+ parentDocumentMetaToUpdate,
873
+ dispatch,
874
+ getInitialFormValues,
875
+ parentDocumentData,
876
+ fieldToConnectUID,
877
+ updateDocumentMutation,
878
+ formatAPIError,
694
879
  onPreview
695
880
  ]);
696
881
  // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux