@wix/patterns 1.497.0 → 1.498.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 (439) hide show
  1. package/dist/cjs/components/CardContainer/CardContainer.st.css.js +2 -2
  2. package/dist/cjs/components/CardContainer/CardContainer.st.css.js.map +1 -1
  3. package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js +3 -3
  4. package/dist/cjs/components/CmsFieldManagement/CmsFieldForm.st.css.js.map +1 -1
  5. package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js +3 -3
  6. package/dist/cjs/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
  7. package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +3 -3
  8. package/dist/cjs/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js.map +1 -1
  9. package/dist/cjs/components/Collapse/Collapse.st.css.js +3 -3
  10. package/dist/cjs/components/Collapse/Collapse.st.css.js.map +1 -1
  11. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  12. package/dist/cjs/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  13. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +3 -3
  14. package/dist/cjs/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
  15. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js +2 -2
  16. package/dist/cjs/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  17. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  18. package/dist/cjs/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
  19. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js +5 -5
  20. package/dist/cjs/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  21. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +4 -4
  22. package/dist/cjs/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  23. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  24. package/dist/cjs/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  25. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  26. package/dist/cjs/components/CollectionViewsDropdown/ViewsDropdown.st.css.js.map +1 -1
  27. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +3 -3
  28. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js.map +1 -1
  29. package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
  30. package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
  31. package/dist/cjs/components/EditableTable/EditableCell.st.css.js +6 -6
  32. package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
  33. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  34. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  35. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  36. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
  37. package/dist/cjs/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +3 -3
  38. package/dist/cjs/components/EditableTable/cellTypes/JsonInputEdit.st.css.js.map +1 -1
  39. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
  40. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  41. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
  42. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  43. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
  44. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  45. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  46. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  47. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
  48. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
  49. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  50. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  51. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js +8 -8
  52. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
  53. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js +7 -7
  54. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -1
  55. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +3 -3
  56. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  57. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  58. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
  59. package/dist/cjs/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js +2 -2
  60. package/dist/cjs/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js.map +1 -1
  61. package/dist/cjs/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js +3 -3
  62. package/dist/cjs/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js.map +1 -1
  63. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
  64. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  65. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
  66. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  67. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  68. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  69. package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +6 -6
  70. package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js.map +1 -1
  71. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
  72. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  73. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
  74. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  75. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  76. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  77. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
  78. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  79. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
  80. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  81. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
  82. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  83. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  84. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js.map +1 -1
  85. package/dist/cjs/components/EntityPage/EntityPageActionsBar.js +1 -1
  86. package/dist/cjs/components/EntityPage/EntityPageActionsBar.js.map +1 -1
  87. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  88. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  89. package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js +3 -3
  90. package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js.map +1 -1
  91. package/dist/cjs/components/EntityPageFields/EntityPageFields.js +9 -8
  92. package/dist/cjs/components/EntityPageFields/EntityPageFields.js.map +1 -1
  93. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.js +49 -7
  94. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.js.map +1 -1
  95. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css +17 -0
  96. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js +26 -0
  97. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js.map +1 -0
  98. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  99. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  100. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  101. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  102. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  103. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  104. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  105. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  106. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  107. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  108. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  109. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  110. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  111. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  112. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  113. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  114. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  115. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  116. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
  117. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  118. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  119. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  120. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  121. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  122. package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
  123. package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
  124. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
  125. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  126. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  127. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  128. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  129. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  130. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +10 -10
  131. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  132. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  133. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  134. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
  135. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  136. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +6 -6
  137. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  138. package/dist/cjs/components/Table/NumberCell.st.css.js +2 -2
  139. package/dist/cjs/components/Table/NumberCell.st.css.js.map +1 -1
  140. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
  141. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  142. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  143. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  144. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  145. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  146. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  147. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  148. package/dist/cjs/components/common.st.css.js +4 -4
  149. package/dist/cjs/components/common.st.css.js.map +1 -1
  150. package/dist/cjs/model/itemAccess.js +21 -0
  151. package/dist/cjs/model/itemAccess.js.map +1 -0
  152. package/dist/cjs/schema/syncSourcePermissions.js +9 -4
  153. package/dist/cjs/schema/syncSourcePermissions.js.map +1 -1
  154. package/dist/cjs/schema/useEntityPage.js +17 -3
  155. package/dist/cjs/schema/useEntityPage.js.map +1 -1
  156. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +3 -3
  157. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  158. package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
  159. package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js.map +1 -1
  160. package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js +4 -4
  161. package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
  162. package/dist/cjs/state/EntityPage/EntityPageDeleteActionState.js +5 -5
  163. package/dist/cjs/state/EntityPage/EntityPageDeleteActionState.js.map +1 -1
  164. package/dist/cjs/state/EntityPage/EntityPageState.js +57 -8
  165. package/dist/cjs/state/EntityPage/EntityPageState.js.map +1 -1
  166. package/dist/cjs/state/EntityPage/sourceSave.js +16 -0
  167. package/dist/cjs/state/EntityPage/sourceSave.js.map +1 -0
  168. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  169. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  170. package/dist/cjs/styles.global.css +2 -2
  171. package/dist/cjs/version.js +1 -1
  172. package/dist/cjs/version.js.map +1 -1
  173. package/dist/docs/index.json +2 -2
  174. package/dist/docs/useEntity.md +1 -1
  175. package/dist/dts-bundle/hooks/schema/useEntityPage.d.ts +5 -4
  176. package/dist/dts-bundle/hooks/useEntityPage.d.ts +5 -4
  177. package/dist/dts-bundle/index.json +20 -20
  178. package/dist/dts-bundle/index.txt +6 -6
  179. package/dist/dts-bundle/types/EntityPageState.d.ts +10 -4
  180. package/dist/dts-bundle/types/EntityPageStateParams.d.ts +5 -4
  181. package/dist/dts-bundle/types/OnSaveParams.d.ts +5 -4
  182. package/dist/dts-bundle/types/UseEntityPageParams.d.ts +5 -4
  183. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  184. package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
  185. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
  186. package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
  187. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  188. package/dist/esm/components/Collapse/Collapse.st.css.js.map +1 -1
  189. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  190. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js.map +1 -1
  191. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  192. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js.map +1 -1
  193. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  194. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  195. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  196. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  197. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  198. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  199. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  200. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  201. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  202. package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +2 -2
  203. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  204. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  205. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  206. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  207. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  208. package/dist/esm/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +2 -2
  209. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
  210. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  211. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  212. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  213. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  214. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  215. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  216. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  217. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  218. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
  219. package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
  220. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
  221. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  222. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  223. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
  224. package/dist/esm/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js +2 -2
  225. package/dist/esm/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js.map +1 -1
  226. package/dist/esm/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js +2 -2
  227. package/dist/esm/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js.map +1 -1
  228. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  229. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  230. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  231. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  232. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  233. package/dist/esm/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +2 -2
  234. package/dist/esm/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js.map +1 -1
  235. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  236. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  237. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  238. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
  239. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  240. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  241. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  242. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  243. package/dist/esm/components/EntityPage/EntityPageActionsBar.js +1 -1
  244. package/dist/esm/components/EntityPage/EntityPageActionsBar.js.map +1 -1
  245. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  246. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  247. package/dist/esm/components/EntityPageFields/EntityPageField.st.css.js +2 -2
  248. package/dist/esm/components/EntityPageFields/EntityPageFields.js +3 -1
  249. package/dist/esm/components/EntityPageFields/EntityPageFields.js.map +1 -1
  250. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.js +19 -2
  251. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.js.map +1 -1
  252. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css +17 -0
  253. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css.js +15 -0
  254. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css.js.map +1 -0
  255. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  256. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  257. package/dist/esm/components/Heading/Heading.st.css.js.map +1 -1
  258. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  259. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  260. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  261. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  262. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  263. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  264. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  265. package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
  266. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
  267. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  268. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
  269. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  270. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  271. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  272. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  273. package/dist/esm/components/PickerContent/PickerContent.st.css.js.map +1 -1
  274. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  275. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  276. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  277. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  278. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
  279. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  280. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
  281. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js +2 -2
  282. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  283. package/dist/esm/components/Table/NumberCell.st.css.js +2 -2
  284. package/dist/esm/components/Table/NumberCell.st.css.js.map +1 -1
  285. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
  286. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  287. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  288. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  289. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  290. package/dist/esm/components/common.st.css.js +2 -2
  291. package/dist/esm/model/itemAccess.js +17 -0
  292. package/dist/esm/model/itemAccess.js.map +1 -0
  293. package/dist/esm/schema/syncSourcePermissions.js +6 -5
  294. package/dist/esm/schema/syncSourcePermissions.js.map +1 -1
  295. package/dist/esm/schema/useEntityPage.js +11 -4
  296. package/dist/esm/schema/useEntityPage.js.map +1 -1
  297. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  298. package/dist/esm/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
  299. package/dist/esm/state/CollectionPage/TitleBadges.st.css.js +2 -2
  300. package/dist/esm/state/EntityPage/EntityPageDeleteActionState.js +4 -2
  301. package/dist/esm/state/EntityPage/EntityPageDeleteActionState.js.map +1 -1
  302. package/dist/esm/state/EntityPage/EntityPageState.js +45 -1
  303. package/dist/esm/state/EntityPage/EntityPageState.js.map +1 -1
  304. package/dist/esm/state/EntityPage/sourceSave.js +11 -0
  305. package/dist/esm/state/EntityPage/sourceSave.js.map +1 -0
  306. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  307. package/dist/esm/styles.global.css +2 -2
  308. package/dist/esm/version.js +1 -1
  309. package/dist/types/components/Collapse/Collapse.st.css.d.ts.map +1 -1
  310. package/dist/types/components/CollectionPageNew/CollectionPage.st.css.d.ts.map +1 -1
  311. package/dist/types/components/CollectionSectionHeader/CollectionSectionHeader.st.css.d.ts.map +1 -1
  312. package/dist/types/components/CollectionTable/CollectionTable.st.css.d.ts.map +1 -1
  313. package/dist/types/components/CollectionToolbar/CollectionToolbar.st.css.d.ts.map +1 -1
  314. package/dist/types/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.d.ts.map +1 -1
  315. package/dist/types/components/EditableTable/HeaderActionsPopover.st.css.d.ts.map +1 -1
  316. package/dist/types/components/EditableTable/cellTypes/address/Edit.st.css.d.ts.map +1 -1
  317. package/dist/types/components/EditableTable/cellTypes/boolean/Edit.st.css.d.ts.map +1 -1
  318. package/dist/types/components/EditableTable/cellTypes/date/View.st.css.d.ts.map +1 -1
  319. package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts.map +1 -1
  320. package/dist/types/components/EditableTable/cellTypes/email/View.st.css.d.ts.map +1 -1
  321. package/dist/types/components/EditableTable/cellTypes/mediaImage/Edit.st.css.d.ts.map +1 -1
  322. package/dist/types/components/EditableTable/cellTypes/multiDocument/Edit.st.css.d.ts.map +1 -1
  323. package/dist/types/components/EditableTable/cellTypes/number/Edit.st.css.d.ts.map +1 -1
  324. package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts.map +1 -1
  325. package/dist/types/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.d.ts.map +1 -1
  326. package/dist/types/components/EditableTable/cellTypes/url/Edit.st.css.d.ts.map +1 -1
  327. package/dist/types/components/EntityPage/EntityPagePlain.st.css.d.ts.map +1 -1
  328. package/dist/types/components/EntityPageFields/EntityPageFields.d.ts.map +1 -1
  329. package/dist/types/components/EntityPageFields/EntityPageReferenceValue.d.ts.map +1 -1
  330. package/dist/types/components/EntityPageFields/EntityPageReferenceValue.st.css.d.ts +17 -0
  331. package/dist/types/components/EntityPageFields/EntityPageReferenceValue.st.css.d.ts.map +1 -0
  332. package/dist/types/components/Heading/Heading.st.css.d.ts.map +1 -1
  333. package/dist/types/components/ImportButton/ImportStepUpload.st.css.d.ts.map +1 -1
  334. package/dist/types/components/InputOverflow/InputOverflow.st.css.d.ts.map +1 -1
  335. package/dist/types/components/LoadingRow/LoadingRow.st.css.d.ts.map +1 -1
  336. package/dist/types/components/NestedTable/NestedTableRow.st.css.d.ts.map +1 -1
  337. package/dist/types/components/PickerContent/PickerContent.st.css.d.ts.map +1 -1
  338. package/dist/types/components/PickerContent/PickerContentAdditionalStep.st.css.d.ts.map +1 -1
  339. package/dist/types/components/Table/AddFieldColumnHeader.st.css.d.ts.map +1 -1
  340. package/dist/types/components/Table/NumberCell.st.css.d.ts.map +1 -1
  341. package/dist/types/components/ToolbarItem/ToolbarItem.st.css.d.ts.map +1 -1
  342. package/dist/types/model/itemAccess.d.ts +16 -0
  343. package/dist/types/model/itemAccess.d.ts.map +1 -0
  344. package/dist/types/schema/syncSourcePermissions.d.ts.map +1 -1
  345. package/dist/types/schema/useEntityPage.d.ts.map +1 -1
  346. package/dist/types/state/EntityPage/EntityPageDeleteActionState.d.ts.map +1 -1
  347. package/dist/types/state/EntityPage/EntityPageState.d.ts +10 -4
  348. package/dist/types/state/EntityPage/EntityPageState.d.ts.map +1 -1
  349. package/dist/types/state/EntityPage/sourceSave.d.ts +3 -0
  350. package/dist/types/state/EntityPage/sourceSave.d.ts.map +1 -0
  351. package/dist/types/version.d.ts +1 -1
  352. package/package.json +7 -7
  353. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  354. package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
  355. package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
  356. package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
  357. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  358. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  359. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  360. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  361. package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
  362. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  363. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  364. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  365. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  366. package/src/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.ts +2 -2
  367. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  368. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  369. package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
  370. package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
  371. package/src/components/EditableTable/cellTypes/JsonInputEdit.st.css.ts +2 -2
  372. package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
  373. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  374. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  375. package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
  376. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  377. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  378. package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +2 -2
  379. package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
  380. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
  381. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
  382. package/src/components/EditableTable/cellTypes/mediaImage/Edit.st.css.ts +2 -2
  383. package/src/components/EditableTable/cellTypes/multiDocument/Edit.st.css.ts +2 -2
  384. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  385. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  386. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
  387. package/src/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.ts +2 -2
  388. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  389. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  390. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  391. package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
  392. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  393. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  394. package/src/components/EmptyState/EmptyStateBase.st.css.ts +2 -2
  395. package/src/components/EntityPage/EntityPageActionsBar.tsx +1 -1
  396. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  397. package/src/components/EntityPageFields/EntityPageField.st.css.ts +2 -2
  398. package/src/components/EntityPageFields/EntityPageFields.tsx +5 -1
  399. package/src/components/EntityPageFields/EntityPageReferenceValue.st.css +17 -0
  400. package/src/components/EntityPageFields/EntityPageReferenceValue.st.css.ts +25 -0
  401. package/src/components/EntityPageFields/EntityPageReferenceValue.tsx +43 -6
  402. package/src/components/Fade/Fade.st.css.ts +2 -2
  403. package/src/components/Heading/Heading.st.css.ts +2 -2
  404. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  405. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  406. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  407. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  408. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  409. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  410. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  411. package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
  412. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
  413. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
  414. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  415. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  416. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  417. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  418. package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
  419. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  420. package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
  421. package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
  422. package/src/components/Table/NumberCell.st.css.ts +2 -2
  423. package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
  424. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  425. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  426. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  427. package/src/components/common.st.css.ts +2 -2
  428. package/src/model/itemAccess.ts +36 -0
  429. package/src/schema/syncSourcePermissions.ts +6 -6
  430. package/src/schema/useEntityPage.ts +17 -4
  431. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  432. package/src/state/CollectionPage/MobilePrimaryActionBar.st.css.ts +2 -2
  433. package/src/state/CollectionPage/TitleBadges.st.css.ts +2 -2
  434. package/src/state/EntityPage/EntityPageDeleteActionState.ts +4 -2
  435. package/src/state/EntityPage/EntityPageState.ts +61 -5
  436. package/src/state/EntityPage/sourceSave.ts +12 -0
  437. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  438. package/src/styles.global.css +2 -2
  439. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_useEntityPage","useEntityPage","source","options","entityId","fetch","onSave","createLocalItem","deleteAction","rest","page","useState","state","useOpenEntityPage","schemaSource","isNewEntity","fetchFromSource","saveToSource","resolveDeleteAction","undefined","entity","backend","loadSchema","required","get","values","form","getValues","updatedEntity","create","Error","update","previousItem","changedFieldIds","fn","action","updatedItem","dirtyFields","formState","dirtyFieldIds","Object","entries","filter","value","Boolean","map","fieldId","previousRecord","updatedRecord","changedByValue","Array","from","Set","keys","is"],"sources":["../../../src/schema/useEntityPage.ts"],"sourcesContent":["import { useState } from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport type { SchemaSource } from '@wix/bex-core';\nimport type { EntityPageDeleteAction, EntityPageState } from '../state';\nimport {\n useEntityPage as useOpenEntityPage,\n type UseEntityPageParams,\n} from '../hooks/useEntityPage';\n\n/** Entity page options for a source-driven page: the source loads the schema and\n * its backend reads and writes the entity, so `fetch` and `onSave` derive from\n * it — pass one only to replace the derived default. */\nexport type SchemaEntityPageOptions<\n T,\n V extends FieldValues = FieldValues,\n> = Omit<\n UseEntityPageParams<T, V>,\n 'fetch' | 'onSave' | 'schemaSource' | 'isNewEntity'\n> & {\n /** Creates the initial values for a new entity. */\n createLocalItem?: () => Partial<T>;\n /** The entity to load. Omitted ⇒ the create route: the page starts empty and\n * saving creates an entity. */\n entityId?: string;\n /** Replaces the read through the source's backend. */\n fetch?: UseEntityPageParams<T, V>['fetch'];\n /** Replaces the write through the source's backend. */\n onSave?: UseEntityPageParams<T, V>['onSave'];\n};\n\n/** An entity page driven by a source: the source supplies the schema its fields\n * render from, and its backend reads and writes the entity. Render the state\n * with the `EntityPage` from this entry — it wires the fields provider. */\nexport function useEntityPage<T, V extends FieldValues = FieldValues>(\n source: SchemaSource<T>,\n options: SchemaEntityPageOptions<T, V>,\n): EntityPageState<T, V> {\n const { entityId, fetch, onSave, createLocalItem, deleteAction, ...rest } =\n options;\n\n // The derived read and write need values that change or don't exist yet when\n // the state is created: the state itself (the save merges into the loaded\n // entity) and the latest entityId (a re-fetch should read the current one).\n const [page] = useState<PageRef<T, V>>(() => ({}));\n page.entityId = entityId;\n\n const state = useOpenEntityPage<T, V>({\n ...rest,\n schemaSource: source,\n isNewEntity: () => !page.entityId,\n fetch:\n fetch ?? (() => fetchFromSource(source, page.entityId, createLocalItem)),\n onSave: onSave ?? (() => saveToSource(source, page)),\n deleteAction: resolveDeleteAction(page, deleteAction),\n } as UseEntityPageParams<T, V>);\n\n page.state = state;\n\n return state;\n}\n\nfunction resolveDeleteAction<T, V extends FieldValues>(\n page: PageRef<T, V>,\n deleteAction: EntityPageDeleteAction<T> | undefined,\n): EntityPageDeleteAction<T> | undefined {\n if (!deleteAction || !page.entityId) {\n return undefined;\n }\n\n return deleteAction;\n}\n\ninterface PageRef<T, V extends FieldValues> {\n entityId?: string;\n state?: EntityPageState<T, V>;\n}\n\nasync function fetchFromSource<T>(\n source: SchemaSource<T>,\n entityId?: string,\n createLocalItem?: () => Partial<T>,\n): Promise<{ entity: T | undefined }> {\n if (!entityId) {\n return { entity: createLocalItem?.() as T | undefined };\n }\n\n const { backend } = await source.loadSchema();\n return { entity: await required(backend.get, 'reading')(entityId) };\n}\n\nasync function saveToSource<T, V extends FieldValues>(\n source: SchemaSource<T>,\n page: PageRef<T, V>,\n): Promise<{ updatedEntity: T }> {\n const { entityId, state } = page;\n const { backend } = await source.loadSchema();\n const values = state!.form.getValues() as Partial<T>;\n\n // Which write to run follows the route, not whether an entity happens to be\n // loaded: an id whose entity is missing (deleted, or filtered out by\n // permissions) must fail rather than quietly create a second record.\n if (!entityId) {\n return {\n updatedEntity: await required(\n backend.create,\n 'creating',\n )({\n ...(state!.entity ?? {}),\n ...values,\n }),\n };\n }\n\n const { entity } = state!;\n if (!entity) {\n throw new Error(`The source has no entity \"${entityId}\" to update`);\n }\n\n const updatedEntity = { ...entity, ...values } as T;\n\n return {\n updatedEntity: await required(backend.update, 'updating')(updatedEntity, {\n previousItem: entity,\n changedFieldIds: changedFieldIds(entity, updatedEntity, state!.form),\n }),\n };\n}\n\nfunction required<F>(fn: F | undefined, action: string): F {\n if (!fn) {\n throw new Error(`The source doesn't support ${action} items`);\n }\n return fn;\n}\n\nfunction changedFieldIds<T, V extends FieldValues>(\n previousItem: T,\n updatedItem: T,\n form: EntityPageState<T, V>['form'],\n): string[] {\n const dirtyFields = form.formState.dirtyFields as Record<string, unknown>;\n const dirtyFieldIds = Object.entries(dirtyFields)\n .filter(([, value]) => Boolean(value))\n .map(([fieldId]) => fieldId);\n\n const previousRecord = previousItem as Record<string, unknown>;\n const updatedRecord = updatedItem as Record<string, unknown>;\n const changedByValue = Array.from(\n new Set([...Object.keys(previousRecord), ...Object.keys(updatedRecord)]),\n ).filter(\n (fieldId) => !Object.is(previousRecord[fieldId], updatedRecord[fieldId]),\n );\n\n return Array.from(new Set([...dirtyFieldIds, ...changedByValue]));\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_mobx","_sourceSave","_useEntityPage","useEntityPage","source","options","entityId","fetch","onSave","createLocalItem","deleteAction","rest","page","useState","observable","state","undefined","deep","useEffect","runInAction","useOpenEntityPage","schemaSource","isNewEntity","fetchFromSource","markSourceSave","saveToSource","resolveDeleteAction","entity","backend","loadSchema","required","get","values","form","getValues","updatedEntity","create","Error","update","previousItem","changedFieldIds","fn","action","updatedItem","dirtyFields","formState","dirtyFieldIds","Object","entries","filter","value","Boolean","map","fieldId","previousRecord","updatedRecord","changedByValue","Array","from","Set","keys","is"],"sources":["../../../src/schema/useEntityPage.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { observable, runInAction } from 'mobx';\nimport type { FieldValues } from 'react-hook-form';\nimport type { SchemaSource } from '@wix/bex-core';\nimport type { EntityPageDeleteAction, EntityPageState } from '../state';\nimport { markSourceSave } from '../state/EntityPage/sourceSave';\nimport {\n useEntityPage as useOpenEntityPage,\n type UseEntityPageParams,\n} from '../hooks/useEntityPage';\n\n/** Entity page options for a source-driven page: the source loads the schema and\n * its backend reads and writes the entity, so `fetch` and `onSave` derive from\n * it — pass one only to replace the derived default. */\nexport type SchemaEntityPageOptions<\n T,\n V extends FieldValues = FieldValues,\n> = Omit<\n UseEntityPageParams<T, V>,\n 'fetch' | 'onSave' | 'schemaSource' | 'isNewEntity'\n> & {\n /** Creates the initial values for a new entity. */\n createLocalItem?: () => Partial<T>;\n /** The entity to load. Omitted ⇒ the create route: the page starts empty and\n * saving creates an entity. */\n entityId?: string;\n /** Replaces the read through the source's backend. */\n fetch?: UseEntityPageParams<T, V>['fetch'];\n /** Replaces the write through the source's backend. */\n onSave?: UseEntityPageParams<T, V>['onSave'];\n};\n\n/** An entity page driven by a source: the source supplies the schema its fields\n * render from, and its backend reads and writes the entity. Render the state\n * with the `EntityPage` from this entry — it wires the fields provider. */\nexport function useEntityPage<T, V extends FieldValues = FieldValues>(\n source: SchemaSource<T>,\n options: SchemaEntityPageOptions<T, V>,\n): EntityPageState<T, V> {\n const { entityId, fetch, onSave, createLocalItem, deleteAction, ...rest } =\n options;\n\n // The derived read and write need values that change or don't exist yet when\n // the state is created: the state itself (the save merges into the loaded\n // entity) and the latest entityId (a re-fetch should read the current one).\n // entityId is observable so the page's create/update permission follows it.\n const [page] = useState(() =>\n observable<PageRef<T, V>>(\n { entityId, state: undefined },\n { state: false },\n { deep: false },\n ),\n );\n useEffect(() => {\n runInAction(() => {\n page.entityId = entityId;\n });\n }, [page, entityId]);\n\n const state = useOpenEntityPage<T, V>({\n ...rest,\n schemaSource: source,\n isNewEntity: () => !page.entityId,\n fetch:\n fetch ?? (() => fetchFromSource(source, page.entityId, createLocalItem)),\n onSave: onSave ?? markSourceSave(() => saveToSource(source, page)),\n deleteAction: resolveDeleteAction(page, deleteAction),\n } as UseEntityPageParams<T, V>);\n\n page.state = state;\n\n return state;\n}\n\nfunction resolveDeleteAction<T, V extends FieldValues>(\n page: PageRef<T, V>,\n deleteAction: EntityPageDeleteAction<T> | undefined,\n): EntityPageDeleteAction<T> | undefined {\n if (!deleteAction || !page.entityId) {\n return undefined;\n }\n\n return deleteAction;\n}\n\ninterface PageRef<T, V extends FieldValues> {\n entityId?: string;\n state?: EntityPageState<T, V>;\n}\n\nasync function fetchFromSource<T>(\n source: SchemaSource<T>,\n entityId?: string,\n createLocalItem?: () => Partial<T>,\n): Promise<{ entity: T | undefined }> {\n if (!entityId) {\n return { entity: createLocalItem?.() as T | undefined };\n }\n\n const { backend } = await source.loadSchema();\n return { entity: await required(backend.get, 'reading')(entityId) };\n}\n\nasync function saveToSource<T, V extends FieldValues>(\n source: SchemaSource<T>,\n page: PageRef<T, V>,\n): Promise<{ updatedEntity: T }> {\n const { entityId, state } = page;\n const { backend } = await source.loadSchema();\n const values = state!.form.getValues() as Partial<T>;\n\n // Which write to run follows the route, not whether an entity happens to be\n // loaded: an id whose entity is missing (deleted, or filtered out by\n // permissions) must fail rather than quietly create a second record.\n if (!entityId) {\n return {\n updatedEntity: await required(\n backend.create,\n 'creating',\n )({\n ...(state!.entity ?? {}),\n ...values,\n }),\n };\n }\n\n const { entity } = state!;\n if (!entity) {\n throw new Error(`The source has no entity \"${entityId}\" to update`);\n }\n\n const updatedEntity = { ...entity, ...values } as T;\n\n return {\n updatedEntity: await required(backend.update, 'updating')(updatedEntity, {\n previousItem: entity,\n changedFieldIds: changedFieldIds(entity, updatedEntity, state!.form),\n }),\n };\n}\n\nfunction required<F>(fn: F | undefined, action: string): F {\n if (!fn) {\n throw new Error(`The source doesn't support ${action} items`);\n }\n return fn;\n}\n\nfunction changedFieldIds<T, V extends FieldValues>(\n previousItem: T,\n updatedItem: T,\n form: EntityPageState<T, V>['form'],\n): string[] {\n const dirtyFields = form.formState.dirtyFields as Record<string, unknown>;\n const dirtyFieldIds = Object.entries(dirtyFields)\n .filter(([, value]) => Boolean(value))\n .map(([fieldId]) => fieldId);\n\n const previousRecord = previousItem as Record<string, unknown>;\n const updatedRecord = updatedItem as Record<string, unknown>;\n const changedByValue = Array.from(\n new Set([...Object.keys(previousRecord), ...Object.keys(updatedRecord)]),\n ).filter(\n (fieldId) => !Object.is(previousRecord[fieldId], updatedRecord[fieldId]),\n );\n\n return Array.from(new Set([...dirtyFieldIds, ...changedByValue]));\n}\n"],"mappings":"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","ignoreList":[]}
@@ -5,15 +5,15 @@ exports.vars = exports.style = exports.stVars = exports.st = exports.namespace =
5
5
  var _stylableEsmRuntime = require("../../stylable-esm-runtime.js");
6
6
  // @ts-nocheck
7
7
 
8
- var _namespace_ = "CollectionPageHeader3311006848";
8
+ var _namespace_ = "CollectionPageHeader1248869590";
9
9
  var _style_ = _stylableEsmRuntime.classesRuntime.bind(null, _namespace_);
10
10
  var cssStates = exports.cssStates = _stylableEsmRuntime.statesRuntime.bind(null, _namespace_);
11
11
  var style = exports.style = _style_;
12
12
  var st = exports.st = _style_;
13
13
  var namespace = exports.namespace = _namespace_;
14
14
  var classes = exports.classes = {
15
- "root": "CollectionPageHeader3311006848__root",
16
- "mobileMoreActions": "CollectionPageHeader3311006848__mobileMoreActions"
15
+ "root": "CollectionPageHeader1248869590__root",
16
+ "mobileMoreActions": "CollectionPageHeader1248869590__mobileMoreActions"
17
17
  };
18
18
  var keyframes = exports.keyframes = {};
19
19
  var layers = exports.layers = {};
@@ -1 +1 @@
1
- {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/CollectionPage/CollectionPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"CollectionPageHeader3311006848\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"CollectionPageHeader3311006848__root\",\"mobileMoreActions\":\"CollectionPageHeader3311006848__mobileMoreActions\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"wds-page-header-title-actions-gap\":\"--wds-page-header-title-actions-gap\"}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,gCAAgC;AAClD,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC,sCAAsC;EAAC,mBAAmB,EAAC;AAAmD,CAAC;AACrI,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG;EAAC,mCAAmC,EAAC;AAAqC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/CollectionPage/CollectionPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"CollectionPageHeader1248869590\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"CollectionPageHeader1248869590__root\",\"mobileMoreActions\":\"CollectionPageHeader1248869590__mobileMoreActions\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"wds-page-header-title-actions-gap\":\"--wds-page-header-title-actions-gap\"}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,gCAAgC;AAClD,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC,sCAAsC;EAAC,mBAAmB,EAAC;AAAmD,CAAC;AACrI,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG;EAAC,mCAAmC,EAAC;AAAqC,CAAC","ignoreList":[]}
@@ -5,14 +5,14 @@ exports.vars = exports.style = exports.stVars = exports.st = exports.namespace =
5
5
  var _stylableEsmRuntime = require("../../stylable-esm-runtime.js");
6
6
  // @ts-nocheck
7
7
 
8
- var _namespace_ = "MobilePrimaryActionBar4227138949";
8
+ var _namespace_ = "MobilePrimaryActionBar1162596589";
9
9
  var _style_ = _stylableEsmRuntime.classesRuntime.bind(null, _namespace_);
10
10
  var cssStates = exports.cssStates = _stylableEsmRuntime.statesRuntime.bind(null, _namespace_);
11
11
  var style = exports.style = _style_;
12
12
  var st = exports.st = _style_;
13
13
  var namespace = exports.namespace = _namespace_;
14
14
  var classes = exports.classes = {
15
- "root": "MobilePrimaryActionBar4227138949__root"
15
+ "root": "MobilePrimaryActionBar1162596589__root"
16
16
  };
17
17
  var keyframes = exports.keyframes = {};
18
18
  var layers = exports.layers = {};
@@ -1 +1 @@
1
- {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/CollectionPage/MobilePrimaryActionBar.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"MobilePrimaryActionBar4227138949\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"MobilePrimaryActionBar4227138949__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"wds-space-300\":\"--wds-space-300\",\"wds-space-400\":\"--wds-space-400\"}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,kCAAkC;AACpD,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC;AAAwC,CAAC;AAC/D,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG;EAAC,eAAe,EAAC,iBAAiB;EAAC,eAAe,EAAC;AAAiB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/CollectionPage/MobilePrimaryActionBar.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"MobilePrimaryActionBar1162596589\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"MobilePrimaryActionBar1162596589__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {\"wds-space-300\":\"--wds-space-300\",\"wds-space-400\":\"--wds-space-400\"}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,kCAAkC;AACpD,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC;AAAwC,CAAC;AAC/D,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG;EAAC,eAAe,EAAC,iBAAiB;EAAC,eAAe,EAAC;AAAiB,CAAC","ignoreList":[]}
@@ -5,16 +5,16 @@ exports.vars = exports.style = exports.stVars = exports.st = exports.namespace =
5
5
  var _stylableEsmRuntime = require("../../stylable-esm-runtime.js");
6
6
  // @ts-nocheck
7
7
 
8
- var _namespace_ = "TitleBadges3914608263";
8
+ var _namespace_ = "TitleBadges1421742939";
9
9
  var _style_ = _stylableEsmRuntime.classesRuntime.bind(null, _namespace_);
10
10
  var cssStates = exports.cssStates = _stylableEsmRuntime.statesRuntime.bind(null, _namespace_);
11
11
  var style = exports.style = _style_;
12
12
  var st = exports.st = _style_;
13
13
  var namespace = exports.namespace = _namespace_;
14
14
  var classes = exports.classes = {
15
- "root": "TitleBadges3914608263__root",
16
- "tooltip": "TitleBadges3914608263__tooltip",
17
- "tooltipTrigger": "TitleBadges3914608263__tooltipTrigger"
15
+ "root": "TitleBadges1421742939__root",
16
+ "tooltip": "TitleBadges1421742939__tooltip",
17
+ "tooltipTrigger": "TitleBadges1421742939__tooltipTrigger"
18
18
  };
19
19
  var keyframes = exports.keyframes = {};
20
20
  var layers = exports.layers = {};
@@ -1 +1 @@
1
- {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/CollectionPage/TitleBadges.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"TitleBadges3914608263\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"TitleBadges3914608263__root\",\"tooltip\":\"TitleBadges3914608263__tooltip\",\"tooltipTrigger\":\"TitleBadges3914608263__tooltipTrigger\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,uBAAuB;AACzC,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC,6BAA6B;EAAC,SAAS,EAAC,gCAAgC;EAAC,gBAAgB,EAAC;AAAuC,CAAC;AACxJ,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/CollectionPage/TitleBadges.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"TitleBadges1421742939\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"TitleBadges1421742939__root\",\"tooltip\":\"TitleBadges1421742939__tooltip\",\"tooltipTrigger\":\"TitleBadges1421742939__tooltipTrigger\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,uBAAuB;AACzC,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC,6BAA6B;EAAC,SAAS,EAAC,gCAAgC;EAAC,gBAAgB,EAAC;AAAuC,CAAC;AACxJ,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
@@ -6,6 +6,7 @@ exports.EntityPageDeleteActionState = void 0;
6
6
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
7
  var _bexCore = require("@wix/bex-core");
8
8
  var _mobx = require("mobx");
9
+ var _itemAccess = require("../../model/itemAccess");
9
10
  class EntityPageDeleteActionState {
10
11
  constructor(params) {
11
12
  (0, _defineProperty2.default)(this, "container", void 0);
@@ -58,14 +59,13 @@ class EntityPageDeleteActionState {
58
59
  return undefined;
59
60
  }
60
61
  get canShow() {
61
- var _this$getLoadedSchema2;
62
- const itemPermissions = (_this$getLoadedSchema2 = this.getLoadedSchema()) == null ? void 0 : _this$getLoadedSchema2.schema.itemPermissions;
63
- return !!this.getEntity() && !!this.config && this.isEnabled && !!this.getDeleteHandler() && ((itemPermissions == null ? void 0 : itemPermissions.deleteItem) ?? true);
62
+ const loaded = this.getLoadedSchema();
63
+ return !!this.getEntity() && !!this.config && this.isEnabled && !!this.getDeleteHandler() && (0, _itemAccess.getItemAccess)(loaded == null ? void 0 : loaded.schema.itemPermissions, loaded == null ? void 0 : loaded.backend).permitted.delete;
64
64
  }
65
65
  get disabledReason() {
66
- var _this$getLoadedSchema3;
66
+ var _this$getLoadedSchema2;
67
67
  const entity = this.getEntity();
68
- const itemPermissions = (_this$getLoadedSchema3 = this.getLoadedSchema()) == null ? void 0 : _this$getLoadedSchema3.schema.itemPermissions;
68
+ const itemPermissions = (_this$getLoadedSchema2 = this.getLoadedSchema()) == null ? void 0 : _this$getLoadedSchema2.schema.itemPermissions;
69
69
  const disabledResult = entity && itemPermissions != null && itemPermissions.isRemoveItemDisabled ? itemPermissions.isRemoveItemDisabled(entity) : undefined;
70
70
  if (!(disabledResult != null && disabledResult.disabled)) {
71
71
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"names":["_bexCore","require","_mobx","EntityPageDeleteActionState","constructor","params","_defineProperty2","default","TaskState","container","deleteAction","schemaSource","getEntity","getLoadedSchema","transformEntityToCollectionItem","onDeleted","emitDelete","emitDeleteError","makeObservable","canShow","computed","disabledReason","config","isEnabled","_this$config","enabled","getDeleteHandler","_this$getLoadedSchema","undefined","onDelete","backendDelete","backend","delete","entity","itemKey","_this$getLoadedSchema2","itemPermissions","schema","deleteItem","_this$getLoadedSchema3","disabledResult","isRemoveItemDisabled","disabled","reason","translate","getItemName","_this$config2","_this$schemaSource","itemName","num","showSuccessToast","deletedEntity","_this$config3","_this$container$showT","_this$container","successToast","message","showToast","call","type","biName","showErrorToast","err","_this$config4","_this$container$showT2","_this$container2","errorToast","retry","deleteEntity","showTryAgain","tryAgain","action","uiType","text","onClick","removeToastOnClick","task","status","isLoading","deleteHandler","caughtError","run","errorMonitor","captureException","exports"],"sources":["../../../../src/state/EntityPage/EntityPageDeleteActionState.ts"],"sourcesContent":["import { TaskState } from '@wix/bex-core';\nimport type {\n LoadedSchema,\n SchemaSource,\n ToastConfig,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport { computed, makeObservable } from 'mobx';\n\ntype DeleteErrorToast = (\n err: unknown,\n params: { retry: () => void },\n) =>\n | {\n message?: string;\n tryAgain?: boolean;\n action?: { text: string; onClick: () => void };\n }\n | string;\n\nexport interface EntityPageDeleteActionConfig<T> {\n enabled?: boolean;\n onDelete?: (entity: T) => Promise<void>;\n successToast?: Pick<ToastConfig, 'message'> | string;\n errorToast?: DeleteErrorToast;\n itemName?: (entity: T) => string;\n}\n\nexport type EntityPageDeleteAction<T> =\n | boolean\n | EntityPageDeleteActionConfig<T>;\n\nexport interface EntityPageDeleteActionStateParams<T> {\n container: WixPatternsContainer;\n deleteAction?: EntityPageDeleteAction<T>;\n schemaSource?: SchemaSource<T>;\n getEntity: () => T | null;\n getLoadedSchema: () => LoadedSchema<T> | null;\n transformEntityToCollectionItem: (entity: T) => any;\n onDeleted: (deletedCollectionItem: any) => void;\n emitDelete: () => void;\n emitDeleteError: (err: unknown) => void;\n}\n\nexport class EntityPageDeleteActionState<T> {\n readonly container: WixPatternsContainer;\n readonly deleteAction?: EntityPageDeleteAction<T>;\n readonly schemaSource?: SchemaSource<T>;\n readonly getEntity: () => T | null;\n readonly getLoadedSchema: () => LoadedSchema<T> | null;\n readonly transformEntityToCollectionItem: (entity: T) => any;\n readonly onDeleted: (deletedCollectionItem: any) => void;\n readonly emitDelete: () => void;\n readonly emitDeleteError: (err: unknown) => void;\n\n readonly task = new TaskState<void>();\n\n constructor(params: EntityPageDeleteActionStateParams<T>) {\n this.container = params.container;\n this.deleteAction = params.deleteAction;\n this.schemaSource = params.schemaSource;\n this.getEntity = params.getEntity;\n this.getLoadedSchema = params.getLoadedSchema;\n this.transformEntityToCollectionItem =\n params.transformEntityToCollectionItem;\n this.onDeleted = params.onDeleted;\n this.emitDelete = params.emitDelete;\n this.emitDeleteError = params.emitDeleteError;\n\n makeObservable(this, {\n canShow: computed,\n disabledReason: computed,\n });\n }\n\n private get config(): EntityPageDeleteActionConfig<T> | null {\n if (!this.deleteAction) {\n return null;\n }\n\n return typeof this.deleteAction === 'boolean' ? {} : this.deleteAction;\n }\n\n private get isEnabled() {\n return this.config?.enabled !== false;\n }\n\n private getDeleteHandler(): ((entity: T) => Promise<void>) | undefined {\n const config = this.config;\n if (!config || !this.isEnabled) {\n return undefined;\n }\n\n if (config.onDelete) {\n return config.onDelete;\n }\n\n const backendDelete = this.getLoadedSchema()?.backend.delete;\n if (this.schemaSource && backendDelete) {\n return (entity) => backendDelete(this.schemaSource!.itemKey(entity));\n }\n\n return undefined;\n }\n\n get canShow() {\n const itemPermissions = this.getLoadedSchema()?.schema.itemPermissions;\n return (\n !!this.getEntity() &&\n !!this.config &&\n this.isEnabled &&\n !!this.getDeleteHandler() &&\n (itemPermissions?.deleteItem ?? true)\n );\n }\n\n get disabledReason() {\n const entity = this.getEntity();\n const itemPermissions = this.getLoadedSchema()?.schema.itemPermissions;\n const disabledResult =\n entity && itemPermissions?.isRemoveItemDisabled\n ? itemPermissions.isRemoveItemDisabled(entity)\n : undefined;\n\n if (!disabledResult?.disabled) {\n return undefined;\n }\n\n return disabledResult.reason ?? this.container.translate('cairo.disabled');\n }\n\n getItemName(entity: T) {\n const itemName =\n this.config?.itemName?.(entity) ?? this.schemaSource?.itemName(entity);\n\n return (\n itemName ||\n this.container.translate('cairo.entity.item', {\n num: 1,\n })\n );\n }\n\n private showSuccessToast(deletedEntity: T) {\n const successToast = this.config?.successToast;\n const message =\n typeof successToast === 'string' ? successToast : successToast?.message;\n\n this.container.showToast?.({\n type: 'SUCCESS',\n biName: 'cairo-entity-page-delete-success-toast',\n message:\n message ??\n this.container.translate('cairo.deleteSuccess', {\n itemName: this.getItemName(deletedEntity),\n }),\n });\n }\n\n private showErrorToast(err: unknown) {\n const errorToast = this.config?.errorToast?.(err, {\n retry: () => this.deleteEntity(),\n });\n const message =\n typeof errorToast === 'string' ? errorToast : errorToast?.message;\n const showTryAgain =\n typeof errorToast === 'string' ? true : errorToast?.tryAgain !== false;\n const action =\n typeof errorToast === 'string' ? undefined : errorToast?.action;\n\n this.container.showToast?.({\n type: 'ERROR',\n biName: 'cairo-entity-page-delete-error-toast',\n message:\n message ?? this.container.translate('cairo.technical.error.text'),\n action:\n action || showTryAgain\n ? {\n uiType: 'LINK',\n text:\n action?.text ?? this.container.translate('cairo.toast.retry'),\n onClick: () => {\n if (action?.onClick) {\n action.onClick();\n } else {\n this.deleteEntity();\n }\n },\n removeToastOnClick: true,\n }\n : undefined,\n });\n }\n\n async deleteEntity() {\n if (this.task.status.isLoading || !this.canShow || this.disabledReason) {\n return;\n }\n\n const entity = this.getEntity();\n const deleteHandler = this.getDeleteHandler();\n if (!entity || !deleteHandler) {\n return;\n }\n\n this.emitDelete();\n\n let caughtError: unknown;\n await this.task.run(\n async () => {\n await deleteHandler(entity);\n },\n (err) => {\n caughtError = err;\n },\n );\n\n if (caughtError) {\n this.showErrorToast(caughtError);\n this.container.errorMonitor.captureException(caughtError);\n this.emitDeleteError(caughtError);\n throw caughtError;\n }\n\n this.showSuccessToast(entity);\n this.onDeleted(this.transformEntityToCollectionItem(entity));\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_bexCore","require","_mobx","_itemAccess","EntityPageDeleteActionState","constructor","params","_defineProperty2","default","TaskState","container","deleteAction","schemaSource","getEntity","getLoadedSchema","transformEntityToCollectionItem","onDeleted","emitDelete","emitDeleteError","makeObservable","canShow","computed","disabledReason","config","isEnabled","_this$config","enabled","getDeleteHandler","_this$getLoadedSchema","undefined","onDelete","backendDelete","backend","delete","entity","itemKey","loaded","getItemAccess","schema","itemPermissions","permitted","_this$getLoadedSchema2","disabledResult","isRemoveItemDisabled","disabled","reason","translate","getItemName","_this$config2","_this$schemaSource","itemName","num","showSuccessToast","deletedEntity","_this$config3","_this$container$showT","_this$container","successToast","message","showToast","call","type","biName","showErrorToast","err","_this$config4","_this$container$showT2","_this$container2","errorToast","retry","deleteEntity","showTryAgain","tryAgain","action","uiType","text","onClick","removeToastOnClick","task","status","isLoading","deleteHandler","caughtError","run","errorMonitor","captureException","exports"],"sources":["../../../../src/state/EntityPage/EntityPageDeleteActionState.ts"],"sourcesContent":["import { TaskState } from '@wix/bex-core';\nimport type {\n LoadedSchema,\n SchemaSource,\n ToastConfig,\n WixPatternsContainer,\n} from '@wix/bex-core';\nimport { computed, makeObservable } from 'mobx';\nimport { getItemAccess } from '../../model/itemAccess';\n\ntype DeleteErrorToast = (\n err: unknown,\n params: { retry: () => void },\n) =>\n | {\n message?: string;\n tryAgain?: boolean;\n action?: { text: string; onClick: () => void };\n }\n | string;\n\nexport interface EntityPageDeleteActionConfig<T> {\n enabled?: boolean;\n onDelete?: (entity: T) => Promise<void>;\n successToast?: Pick<ToastConfig, 'message'> | string;\n errorToast?: DeleteErrorToast;\n itemName?: (entity: T) => string;\n}\n\nexport type EntityPageDeleteAction<T> =\n | boolean\n | EntityPageDeleteActionConfig<T>;\n\nexport interface EntityPageDeleteActionStateParams<T> {\n container: WixPatternsContainer;\n deleteAction?: EntityPageDeleteAction<T>;\n schemaSource?: SchemaSource<T>;\n getEntity: () => T | null;\n getLoadedSchema: () => LoadedSchema<T> | null;\n transformEntityToCollectionItem: (entity: T) => any;\n onDeleted: (deletedCollectionItem: any) => void;\n emitDelete: () => void;\n emitDeleteError: (err: unknown) => void;\n}\n\nexport class EntityPageDeleteActionState<T> {\n readonly container: WixPatternsContainer;\n readonly deleteAction?: EntityPageDeleteAction<T>;\n readonly schemaSource?: SchemaSource<T>;\n readonly getEntity: () => T | null;\n readonly getLoadedSchema: () => LoadedSchema<T> | null;\n readonly transformEntityToCollectionItem: (entity: T) => any;\n readonly onDeleted: (deletedCollectionItem: any) => void;\n readonly emitDelete: () => void;\n readonly emitDeleteError: (err: unknown) => void;\n\n readonly task = new TaskState<void>();\n\n constructor(params: EntityPageDeleteActionStateParams<T>) {\n this.container = params.container;\n this.deleteAction = params.deleteAction;\n this.schemaSource = params.schemaSource;\n this.getEntity = params.getEntity;\n this.getLoadedSchema = params.getLoadedSchema;\n this.transformEntityToCollectionItem =\n params.transformEntityToCollectionItem;\n this.onDeleted = params.onDeleted;\n this.emitDelete = params.emitDelete;\n this.emitDeleteError = params.emitDeleteError;\n\n makeObservable(this, {\n canShow: computed,\n disabledReason: computed,\n });\n }\n\n private get config(): EntityPageDeleteActionConfig<T> | null {\n if (!this.deleteAction) {\n return null;\n }\n\n return typeof this.deleteAction === 'boolean' ? {} : this.deleteAction;\n }\n\n private get isEnabled() {\n return this.config?.enabled !== false;\n }\n\n private getDeleteHandler(): ((entity: T) => Promise<void>) | undefined {\n const config = this.config;\n if (!config || !this.isEnabled) {\n return undefined;\n }\n\n if (config.onDelete) {\n return config.onDelete;\n }\n\n const backendDelete = this.getLoadedSchema()?.backend.delete;\n if (this.schemaSource && backendDelete) {\n return (entity) => backendDelete(this.schemaSource!.itemKey(entity));\n }\n\n return undefined;\n }\n\n get canShow() {\n const loaded = this.getLoadedSchema();\n return (\n !!this.getEntity() &&\n !!this.config &&\n this.isEnabled &&\n !!this.getDeleteHandler() &&\n getItemAccess(loaded?.schema.itemPermissions, loaded?.backend).permitted\n .delete\n );\n }\n\n get disabledReason() {\n const entity = this.getEntity();\n const itemPermissions = this.getLoadedSchema()?.schema.itemPermissions;\n const disabledResult =\n entity && itemPermissions?.isRemoveItemDisabled\n ? itemPermissions.isRemoveItemDisabled(entity)\n : undefined;\n\n if (!disabledResult?.disabled) {\n return undefined;\n }\n\n return disabledResult.reason ?? this.container.translate('cairo.disabled');\n }\n\n getItemName(entity: T) {\n const itemName =\n this.config?.itemName?.(entity) ?? this.schemaSource?.itemName(entity);\n\n return (\n itemName ||\n this.container.translate('cairo.entity.item', {\n num: 1,\n })\n );\n }\n\n private showSuccessToast(deletedEntity: T) {\n const successToast = this.config?.successToast;\n const message =\n typeof successToast === 'string' ? successToast : successToast?.message;\n\n this.container.showToast?.({\n type: 'SUCCESS',\n biName: 'cairo-entity-page-delete-success-toast',\n message:\n message ??\n this.container.translate('cairo.deleteSuccess', {\n itemName: this.getItemName(deletedEntity),\n }),\n });\n }\n\n private showErrorToast(err: unknown) {\n const errorToast = this.config?.errorToast?.(err, {\n retry: () => this.deleteEntity(),\n });\n const message =\n typeof errorToast === 'string' ? errorToast : errorToast?.message;\n const showTryAgain =\n typeof errorToast === 'string' ? true : errorToast?.tryAgain !== false;\n const action =\n typeof errorToast === 'string' ? undefined : errorToast?.action;\n\n this.container.showToast?.({\n type: 'ERROR',\n biName: 'cairo-entity-page-delete-error-toast',\n message:\n message ?? this.container.translate('cairo.technical.error.text'),\n action:\n action || showTryAgain\n ? {\n uiType: 'LINK',\n text:\n action?.text ?? this.container.translate('cairo.toast.retry'),\n onClick: () => {\n if (action?.onClick) {\n action.onClick();\n } else {\n this.deleteEntity();\n }\n },\n removeToastOnClick: true,\n }\n : undefined,\n });\n }\n\n async deleteEntity() {\n if (this.task.status.isLoading || !this.canShow || this.disabledReason) {\n return;\n }\n\n const entity = this.getEntity();\n const deleteHandler = this.getDeleteHandler();\n if (!entity || !deleteHandler) {\n return;\n }\n\n this.emitDelete();\n\n let caughtError: unknown;\n await this.task.run(\n async () => {\n await deleteHandler(entity);\n },\n (err) => {\n caughtError = err;\n },\n );\n\n if (caughtError) {\n this.showErrorToast(caughtError);\n this.container.errorMonitor.captureException(caughtError);\n this.emitDeleteError(caughtError);\n throw caughtError;\n }\n\n this.showSuccessToast(entity);\n this.onDeleted(this.transformEntityToCollectionItem(entity));\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,8 @@ var _schemaFieldsContainer = require("../../model/schemaFieldsContainer");
10
10
  var _EntityPageStateBIReporter = require("./EntityPageStateBIReporter");
11
11
  var _events = require("@wix/bex-core/events");
12
12
  var _EntityPageDeleteActionState = require("./EntityPageDeleteActionState");
13
+ var _sourceSave = require("./sourceSave");
14
+ var _itemAccess = require("../../model/itemAccess");
13
15
  class EntityPageState {
14
16
  /**
15
17
  * The container the page's field renderers are built with — the one the schema
@@ -23,6 +25,7 @@ class EntityPageState {
23
25
  constructor(params) {
24
26
  (0, _defineProperty2.default)(this, "fetch", void 0);
25
27
  (0, _defineProperty2.default)(this, "onSave", void 0);
28
+ (0, _defineProperty2.default)(this, "_usesSourceSave", void 0);
26
29
  (0, _defineProperty2.default)(this, "saveSuccessToast", void 0);
27
30
  (0, _defineProperty2.default)(this, "saveErrorToast", void 0);
28
31
  (0, _defineProperty2.default)(this, "transformEntityToCollectionItem", void 0);
@@ -61,6 +64,7 @@ class EntityPageState {
61
64
  (0, _defineProperty2.default)(this, "events", new _events.EventEmitter());
62
65
  this.fetch = params.fetch;
63
66
  this.onSave = params.onSave;
67
+ this._usesSourceSave = (0, _sourceSave.isSourceSave)(params.onSave);
64
68
  this.saveSuccessToast = params.saveSuccessToast;
65
69
  this.saveErrorToast = params.saveErrorToast;
66
70
  this.formPage = new _bexCore.FormPageState({
@@ -114,6 +118,8 @@ class EntityPageState {
114
118
  holdSave: _mobx.action,
115
119
  isSaveHeld: _mobx.computed,
116
120
  isFormDirty: _mobx.computed,
121
+ areFieldsReadOnly: _mobx.computed,
122
+ resolvedActionsBarConfig: _mobx.computed,
117
123
  _withinRouter: _mobx.computed
118
124
  });
119
125
  }
@@ -218,6 +224,45 @@ class EntityPageState {
218
224
  });
219
225
  this.navigateToParent();
220
226
  }
227
+ get areFieldsReadOnly() {
228
+ var _ref;
229
+ const loaded = this.loadedSchema;
230
+ if (this.schemaSource && !loaded) {
231
+ return true;
232
+ }
233
+ const permissions = (_ref = (loaded == null ? void 0 : loaded.schema) ?? this.schema) == null ? void 0 : _ref.itemPermissions;
234
+ const {
235
+ permitted,
236
+ supported
237
+ } = (0, _itemAccess.getItemAccess)(permissions, loaded == null ? void 0 : loaded.backend);
238
+ // A custom save doesn't go through the backend, so it needs no write method.
239
+ const requiresBackendWrite = this._usesSourceSave && !!loaded;
240
+ if (this._isExistingEntity) {
241
+ return !permitted.update || requiresBackendWrite && !supported.update;
242
+ }
243
+ return !permitted.create || requiresBackendWrite && !supported.create || !!(permissions != null && permissions.isCreateItemDisabled != null && permissions.isCreateItemDisabled().disabled);
244
+ }
245
+
246
+ /** `actionsBarConfig` with Save and its secondary actions disabled while the
247
+ * fields are read-only. */
248
+ get resolvedActionsBarConfig() {
249
+ var _config$saveCta;
250
+ const config = this.actionsBarConfig;
251
+ if (!this.areFieldsReadOnly) {
252
+ return config;
253
+ }
254
+ return {
255
+ ...config,
256
+ saveCta: {
257
+ ...(config == null ? void 0 : config.saveCta),
258
+ disabled: true,
259
+ secondaryActions: config == null || (_config$saveCta = config.saveCta) == null || (_config$saveCta = _config$saveCta.secondaryActions) == null ? void 0 : _config$saveCta.map(item => ({
260
+ ...item,
261
+ disabled: true
262
+ }))
263
+ }
264
+ };
265
+ }
221
266
  get _isExistingEntity() {
222
267
  const isNewEntity = typeof this._isNewEntity === 'function' ? this._isNewEntity() : this._isNewEntity;
223
268
  const isRouteKnown = isNewEntity !== undefined;
@@ -303,8 +348,8 @@ class EntityPageState {
303
348
  return this._saveHolds.size > 0;
304
349
  }
305
350
  async handleSubmit(e) {
306
- var _this$actionsBarConfi2;
307
- if (this.formPage.submitTask.status.isLoading || this.isSaveHeld || (_this$actionsBarConfi2 = this.actionsBarConfig) != null && (_this$actionsBarConfi2 = _this$actionsBarConfi2.saveCta) != null && _this$actionsBarConfi2.disabled) {
351
+ var _this$resolvedActions;
352
+ if (this.formPage.submitTask.status.isLoading || this.isSaveHeld || (_this$resolvedActions = this.resolvedActionsBarConfig) != null && (_this$resolvedActions = _this$resolvedActions.saveCta) != null && _this$resolvedActions.disabled) {
308
353
  return;
309
354
  }
310
355
  this.events.emit('save');
@@ -313,11 +358,11 @@ class EntityPageState {
313
358
  data: widgetsFormData
314
359
  } = await this.formPage.validate();
315
360
  if (!isValid) {
316
- var _this$actionsBarConfi3;
361
+ var _this$actionsBarConfi2;
317
362
  this.bi.reportButtonClick({
318
363
  ctaName: 'Save',
319
364
  isValid: false,
320
- additionalInfo: (_this$actionsBarConfi3 = this.actionsBarConfig) == null || (_this$actionsBarConfi3 = _this$actionsBarConfi3.saveCta) == null ? void 0 : _this$actionsBarConfi3.biAdditionalInfo
365
+ additionalInfo: (_this$actionsBarConfi2 = this.actionsBarConfig) == null || (_this$actionsBarConfi2 = _this$actionsBarConfi2.saveCta) == null ? void 0 : _this$actionsBarConfi2.biAdditionalInfo
321
366
  });
322
367
  return;
323
368
  }
@@ -332,11 +377,15 @@ class EntityPageState {
332
377
  let savedEntity;
333
378
  let submitSuccessful = false;
334
379
  await form.handleSubmit(async () => {
335
- var _this$actionsBarConfi4;
380
+ var _this$actionsBarConfi3;
381
+ // The permission can be revoked while the form validates.
382
+ if (this.areFieldsReadOnly) {
383
+ return;
384
+ }
336
385
  bi.reportButtonClick({
337
386
  ctaName: 'Save',
338
387
  isValid: true,
339
- additionalInfo: (_this$actionsBarConfi4 = this.actionsBarConfig) == null || (_this$actionsBarConfi4 = _this$actionsBarConfi4.saveCta) == null ? void 0 : _this$actionsBarConfi4.biAdditionalInfo
388
+ additionalInfo: (_this$actionsBarConfi3 = this.actionsBarConfig) == null || (_this$actionsBarConfi3 = _this$actionsBarConfi3.saveCta) == null ? void 0 : _this$actionsBarConfi3.biAdditionalInfo
340
389
  });
341
390
  try {
342
391
  if (!this.isFetching) {
@@ -357,11 +406,11 @@ class EntityPageState {
357
406
  form.setError('root.serverError', {}); // https://react-hook-form.com/docs/useform/seterror
358
407
  }
359
408
  }, () => {
360
- var _this$actionsBarConfi5;
409
+ var _this$actionsBarConfi4;
361
410
  bi.reportButtonClick({
362
411
  ctaName: 'Save',
363
412
  isValid: false,
364
- additionalInfo: (_this$actionsBarConfi5 = this.actionsBarConfig) == null || (_this$actionsBarConfi5 = _this$actionsBarConfi5.saveCta) == null ? void 0 : _this$actionsBarConfi5.biAdditionalInfo
413
+ additionalInfo: (_this$actionsBarConfi4 = this.actionsBarConfig) == null || (_this$actionsBarConfi4 = _this$actionsBarConfi4.saveCta) == null ? void 0 : _this$actionsBarConfi4.biAdditionalInfo
365
414
  });
366
415
  } // can be used to report validation errors
367
416
  )(e);
@@ -1 +1 @@
1
- {"version":3,"names":["_bexCore","require","_mobx","_schemaFieldsContainer","_EntityPageStateBIReporter","_events","_EntityPageDeleteActionState","EntityPageState","fieldsContainer","fieldsContainerOf","schemaSource","constructor","params","_defineProperty2","default","undefined","observable","set","deep","EventEmitter","fetch","onSave","saveSuccessToast","saveErrorToast","formPage","FormPageState","form","_parentPageId","parentPageId","_isNewEntity","isNewEntity","transformEntityToCollectionItem","anEntity","_parentPath","parentPath","_parentReferrer","parentReferrer","actionsBarConfig","container","deleteActionState","EntityPageDeleteActionState","deleteAction","getEntity","entity","getLoadedSchema","loadedSchema","onDeleted","action","deletedCollectionItem","handleEntityDeleted","emitDelete","events","emit","emitDeleteError","err","_routerState","routerState","_this$_routerState$cu","_entity","currentState","_chosenEntity","reportBI","createBILogger","componentType","pageType","route","window","location","pathname","bi","EntityPageStateBIReporter","entityPageState","init","makeObservable","handleSubmit","ref","setEntity","_schema","setSchema","_loadedSchema","setLoadedSchema","customColumnsState","setActionsBarConfig","holdSave","isSaveHeld","computed","isFormDirty","_withinRouter","_checkPageParams","initTask","onBeforeUnload","onBeforeUnloadSubscription","event","isMobileDevice","formState","isSubmitSuccessful","_isSubmitSuccessful","preventDefault","reportOnBeforeUnload","runOnce","_this$fieldsContainer","_this$schemaSource","_this$fieldsContainer2","_this$bi$appLoaded","_this$bi","data","Promise","all","loadSchema","status","promise","schema","appLoaded","call","remove","retryFetch","newEntity","markFieldsChanged","_this$_routerState","isFetching","flag","isDirty","_isFormDirty","val","onCancel","_this$actionsBarConfi","reportButtonClick","ctaName","additionalInfo","cancelCta","biAdditionalInfo","navigateToParent","_isExistingEntity","isRouteKnown","updatedEntity","entityStringKey","navigateToParentWithState","entityObject","navigate","state","navigateTo","pageId","referrer","_showErrorToast","e","_this$saveErrorToast","_this$container$showT","_this$container","errorToast","retry","message","showTryAgain","tryAgain","showToast","type","biName","translate","code","uiType","text","onClick","reportSaveTryAgain","removeToastOnClick","_showSuccessToast","_this$saveSuccessToas","_this$container$showT2","_this$container2","_deletedEntity","hold","_saveHolds","add","delete","size","_this$actionsBarConfi2","submitTask","isLoading","saveCta","disabled","isValid","widgetsFormData","validate","_this$actionsBarConfi3","run","savedEntity","submitSuccessful","_this$actionsBarConfi4","onSaveResult","errorMonitor","captureException","setError","_this$actionsBarConfi5","transformedItem","Error","exports"],"sources":["../../../../src/state/EntityPage/EntityPageState.ts"],"sourcesContent":["import {\n FormPageState,\n ReportBI,\n WixPatternsContainer,\n ActionsBarConfig,\n isMobileDevice,\n SchemaSource,\n Schema,\n} from '@wix/bex-core';\nimport type { LoadedSchema } from '@wix/bex-core';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport type { PatternsFieldsAppContainer } from '@wix/patterns-fields/providers';\nimport { fieldsContainerOf } from '../../model/schemaFieldsContainer';\nimport { FieldValues, UseFormReturn } from 'react-hook-form';\nimport { EntityPageStateBIReporter } from './EntityPageStateBIReporter';\nimport { EventEmitter, TypedEmitter } from '@wix/bex-core/events';\nimport { WixPatternsRouterState } from '../WixPatternsRouterState';\nimport type { SidePanelsState } from '../SidePanelsState';\nimport type { CustomColumnsEntityPageState } from '../CustomColumnsEntityPageState';\nimport {\n EntityPageDeleteAction,\n EntityPageDeleteActionState,\n} from './EntityPageDeleteActionState';\n\ntype OnSaveParams<T> = {\n widgetsFormData: { [key: string]: any };\n /**\n * The entity as `fetch` loaded it, or `null` on a create route. Use it for what\n * the form does not hold but the update needs, such as the record's revision.\n */\n entity: T | null;\n};\n\ninterface EntityPageStateParamsBase<T, V extends FieldValues = FieldValues> {\n /**\n * A function that fetches the entity data.\n * @returns a promise that resolves to an object containing the entity.\n */\n fetch: () => Promise<{ entity: T | undefined }>;\n\n /**\n * A function to handle the save action.\n * @returns promise that resolves to an object that contains a 'updatedEntity' object.\n */\n onSave: (params: OnSaveParams<T>) => Promise<{ updatedEntity: T }>;\n\n /**\n * An optional object with an optional message, or it can directly get a string message.\n */\n saveSuccessToast?: { message?: string } | string;\n\n /**\n * An optional function to display an error toast message when a save operation fails.\n * @returns An object with a `message` and an `action` object. Alternatively, it can return an object with an optional `message` and a `tryAgain` flag, or a string message.\n * The previous return types are still supported but are now deprecated.\n */\n saveErrorToast?: (\n err: unknown,\n params: { retry: () => void },\n ) =>\n | {\n message?: string;\n /**\n * @deprecated use `action` instead\n */\n tryAgain?: boolean;\n action?: { text: string; onClick: () => void };\n }\n | string;\n\n /**\n * Enables deleting the loaded entity from the entity page. Pass `true` for a\n * schema-backed page to use the source backend, or an object to customize the\n * action and to provide a delete handler for manually wired pages.\n */\n deleteAction?: EntityPageDeleteAction<T>;\n\n /**\n * An optional function to transform the updated entity data before it is passed to the collection page.\n * @param entity the updated entity.\n * @returns an object representing the entity in the collection page.\n */\n transformEntityToCollectionItem?: (entity: T) => any;\n\n form: UseFormReturn<V>;\n /**\n * An object representing the container, possibly for dependency injection or component management.\n */\n container: WixPatternsContainer;\n\n /**\n * A string representing the ID of the parent page.\n * Must be passed if not using Patterns Router\n */\n parentPageId?: string;\n\n /**\n * A string representing the path of the parent page.\n * Must be passed if using Patterns Router\n */\n parentPath?: string;\n\n /**\n * Referrer forwarded to the parent page on back, cancel and save, so callers\n * can carry navigation context across the transition.\n *\n * Only used for parentPageId navigations; Patterns Router keeps its context\n * in router state.\n *\n * Forwarded by the BM and Giza providers. Dropped by the dashboard provider,\n * whose SDK Destination has no referrer field.\n */\n parentReferrer?: string;\n\n /**\n * An object representing the router state\n */\n routerState?: WixPatternsRouterState | null;\n\n /**\n * An optional object to override the actions bar.\n */\n actionsBarConfig?: ActionsBarConfig;\n\n /**\n * Whether the page was opened to create a new entity rather than to edit an\n * existing one. Decides how a save is announced to the parent page — created\n * vs updated — so a new item seeded with local defaults is still announced\n * as created. Pass a getter when the route can change while the page stays\n * mounted. When omitted, the announcement follows whether an entity was\n * loaded.\n */\n isNewEntity?: boolean | (() => boolean);\n\n /**\n * An optional schema source describing how to load the schema and access\n * the entity's data. When present, the page can read fields from the source\n * instead of relying only on hand-wired fetch/onSave callbacks.\n */\n schemaSource?: SchemaSource<T>;\n}\n\nexport type EntityPageStateParams<\n T,\n V extends FieldValues = FieldValues,\n> = EntityPageStateParamsBase<T, V>;\n\nexport interface EntityPageStateInterface {}\n\nexport interface EntityPageWidgetState {\n validate: () => Promise<{ isValid: boolean; values?: any }>;\n isDirty: boolean;\n}\n\nexport class EntityPageState<T, V extends FieldValues = FieldValues>\n implements EntityPageStateInterface\n{\n readonly fetch: EntityPageStateParams<T>['fetch'];\n readonly onSave: EntityPageStateParams<T, V>['onSave'];\n readonly saveSuccessToast?: EntityPageStateParams<T>['saveSuccessToast'];\n readonly saveErrorToast?: EntityPageStateParams<T>['saveErrorToast'];\n readonly transformEntityToCollectionItem: (entity: T) => any;\n\n _entity: T | null = null;\n _schema: Schema | null = null;\n _loadedSchema: LoadedSchema<T> | null = null;\n private readonly _isNewEntity?: boolean | (() => boolean);\n private readonly _parentPageId?: string;\n private readonly _parentPath?: string;\n private readonly _parentReferrer?: string;\n\n actionsBarConfig: EntityPageStateParams<T>['actionsBarConfig'] = undefined;\n\n /**\n * The page's side-panel host, the way a table's lives on its toolbar.\n * Attached by the first feature that needs one, through\n * `SidePanelsState.setOnPage` — so a page with no panels neither builds nor\n * bundles the side-panel code. Everything on the page shares this host, which\n * is what keeps one panel open at a time.\n */\n panels: SidePanelsState | null = null;\n\n /** The fields card's \"Manage fields\" state, set by the card that owns it —\n * the panel is rendered by the host with no props and reads it from here,\n * as a table's panel reads `toolbar.customColumnsState`. */\n customColumnsState: CustomColumnsEntityPageState | null = null;\n\n // Shallow: a deep set would wrap the token objects, and release could not\n // find them again.\n private readonly _saveHolds = observable.set<object>([], { deep: false });\n\n readonly schemaSource?: SchemaSource<T>;\n\n /**\n * The container the page's field renderers are built with — the one the schema\n * carries, so a table on the same schema shares it. Initialized in `init()`\n * below, next to the schema load the fields also wait on; the schema-entry\n * EntityPage puts it in React context.\n */\n get fieldsContainer(): PatternsFieldsAppContainer | undefined {\n return fieldsContainerOf(this.schemaSource);\n }\n\n readonly container: WixPatternsContainer;\n readonly reportBI: ReportBI;\n readonly bi: EntityPageStateBIReporter<T, V>;\n\n _routerState: WixPatternsRouterState | null = null;\n\n readonly formPage: FormPageState<V>;\n readonly deleteActionState: EntityPageDeleteActionState<T>;\n\n readonly events = new EventEmitter() as TypedEmitter<{\n save: () => void;\n saveError: (err: unknown) => void;\n delete: () => void;\n deleteError: (err: unknown) => void;\n }>;\n\n constructor(params: EntityPageStateParams<T, V>) {\n this.fetch = params.fetch;\n this.onSave = params.onSave;\n this.saveSuccessToast = params.saveSuccessToast;\n this.saveErrorToast = params.saveErrorToast;\n this.formPage = new FormPageState<V>({ form: params.form });\n this._parentPageId = params.parentPageId;\n this._isNewEntity = params.isNewEntity;\n this.transformEntityToCollectionItem =\n params.transformEntityToCollectionItem || ((anEntity: T) => anEntity);\n this._parentPath = params.parentPath;\n this._parentReferrer = params.parentReferrer;\n this.actionsBarConfig = params.actionsBarConfig;\n this.schemaSource = params.schemaSource;\n\n this.container = params.container;\n this.deleteActionState = new EntityPageDeleteActionState<T>({\n container: this.container,\n deleteAction: params.deleteAction,\n schemaSource: this.schemaSource,\n getEntity: () => this.entity,\n getLoadedSchema: () => this.loadedSchema,\n transformEntityToCollectionItem: this.transformEntityToCollectionItem,\n onDeleted: action((deletedCollectionItem) =>\n this.handleEntityDeleted(deletedCollectionItem),\n ),\n emitDelete: () => this.events.emit('delete'),\n emitDeleteError: (err) => this.events.emit('deleteError', err),\n });\n\n this._routerState = params.routerState ?? null;\n\n if (this._routerState) {\n this._entity = this._routerState.currentState?._chosenEntity?.entity;\n }\n\n this.reportBI = this.container.createBILogger({\n componentType: 'Entity page',\n pageType: 'Entity',\n route: window.location.pathname,\n });\n\n this.bi = new EntityPageStateBIReporter({\n reportBI: this.reportBI,\n entityPageState: this,\n });\n this.bi.init();\n\n makeObservable(this, {\n handleSubmit: action,\n _entity: observable.ref,\n setEntity: action,\n _schema: observable.ref,\n setSchema: action,\n _loadedSchema: observable.ref,\n setLoadedSchema: action,\n customColumnsState: observable.ref,\n actionsBarConfig: observable.ref,\n setActionsBarConfig: action,\n holdSave: action,\n isSaveHeld: computed,\n isFormDirty: computed,\n _withinRouter: computed,\n });\n }\n\n init() {\n this._checkPageParams();\n const {\n formPage: { initTask },\n container,\n } = this;\n const { onBeforeUnload } = container;\n\n const onBeforeUnloadSubscription = onBeforeUnload?.(\n action((event: Event) => {\n if (isMobileDevice()) {\n return;\n }\n\n const { form } = this;\n // Check both react-hook-form's state AND the explicitly set flag\n if (\n form.formState.isSubmitSuccessful ||\n this.formPage._isSubmitSuccessful ||\n !this.isFormDirty\n ) {\n return;\n }\n event.preventDefault();\n this.bi.reportOnBeforeUnload();\n }),\n );\n\n initTask.runOnce(async () => {\n // The field renderers can't translate until this resolves, so the page\n // waits on it alongside the fetch. Idempotent.\n this.fieldsContainer?.init();\n\n const [data, loadedSchema] = await Promise.all([\n this.fetch(),\n this.schemaSource?.loadSchema(),\n container.initTask.status.promise,\n this.fieldsContainer?.initTask.status.promise,\n ]);\n\n this.setEntity(data.entity ?? null);\n // A fields card can mirror a newer value while these promises settle.\n if (loadedSchema && !this.loadedSchema) {\n this.setLoadedSchema(loadedSchema);\n }\n if (loadedSchema && !this.schema) {\n this.setSchema(loadedSchema.schema);\n }\n this.bi.appLoaded?.();\n });\n\n return () => {\n onBeforeUnloadSubscription?.remove();\n };\n }\n\n retryFetch() {\n this.formPage.retryFetch();\n }\n\n setEntity(newEntity: T | null) {\n this._entity = newEntity;\n }\n\n get entity(): T | null {\n return this._entity;\n }\n\n setSchema(schema: Schema | null) {\n this._schema = schema;\n }\n\n get schema(): Schema | null {\n return this._schema;\n }\n\n setActionsBarConfig(actionsBarConfig?: ActionsBarConfig) {\n this.actionsBarConfig = actionsBarConfig;\n }\n\n setLoadedSchema(loadedSchema: LoadedSchema<T> | null) {\n this._loadedSchema = loadedSchema;\n }\n\n get loadedSchema(): LoadedSchema<T> | null {\n return this._loadedSchema;\n }\n\n markFieldsChanged() {\n this._routerState?.markFieldsChanged();\n }\n\n get isFetching() {\n return this.formPage.isFetching;\n }\n\n get form() {\n return this.formPage.form;\n }\n\n set isSubmitSuccessful(flag: boolean) {\n this.formPage.isSubmitSuccessful = flag;\n }\n\n get isFormDirty() {\n return this.formPage.isDirty;\n }\n\n // backwards compatibility\n set _isFormDirty(val: boolean) {\n this.formPage._isFormDirty = val;\n }\n\n get _withinRouter() {\n return !!this._routerState;\n }\n\n onCancel() {\n this.bi.reportButtonClick({\n ctaName: 'Cancel',\n additionalInfo: this.actionsBarConfig?.cancelCta?.biAdditionalInfo,\n });\n this.navigateToParent();\n }\n\n private get _isExistingEntity(): boolean {\n const isNewEntity =\n typeof this._isNewEntity === 'function'\n ? this._isNewEntity()\n : this._isNewEntity;\n const isRouteKnown = isNewEntity !== undefined;\n return isRouteKnown ? !isNewEntity : !!this._entity;\n }\n\n navigateToParent(updatedEntity?: any) {\n const entityStringKey = this._isExistingEntity\n ? '_updatedEntity'\n : '_createdEntity';\n this.navigateToParentWithState({ [entityStringKey]: updatedEntity });\n }\n\n navigateToParentWithState(entityObject: Record<string, unknown>) {\n if (this._withinRouter) {\n this._routerState!.navigate(this._parentPath!, { state: entityObject });\n } else {\n this.container.navigateTo!({\n pageId: this._parentPageId!,\n ...(this._parentReferrer !== undefined && {\n referrer: this._parentReferrer,\n }),\n });\n }\n }\n\n _showErrorToast(err: any, e?: React.BaseSyntheticEvent) {\n const errorToast = this.saveErrorToast?.(err, {\n retry: () => this.handleSubmit(e),\n });\n const message =\n typeof errorToast === 'string' ? errorToast : errorToast?.message;\n const showTryAgain =\n typeof errorToast === 'string' ? true : errorToast?.tryAgain !== false;\n const action =\n typeof errorToast === 'string' ? undefined : errorToast?.action;\n\n this.container.showToast?.({\n type: 'ERROR',\n biName: 'cairo-entity-page-save-error-toast',\n message:\n message ??\n this.container.translate(\n err?.code === 'ERR_NETWORK'\n ? 'cairo.entityPage.saveError-offline.toast.description'\n : 'cairo.entityPage.saveError-technical.toast.description',\n ),\n action:\n action || showTryAgain\n ? {\n uiType: 'LINK',\n text:\n action?.text ?? this.container.translate('cairo.toast.retry'),\n onClick: () => {\n if (action?.onClick) {\n action.onClick();\n } else {\n this.bi.reportSaveTryAgain();\n this.handleSubmit(e);\n }\n },\n removeToastOnClick: true,\n }\n : undefined,\n });\n }\n\n _showSuccessToast() {\n const message =\n typeof this.saveSuccessToast === 'string'\n ? this.saveSuccessToast\n : this.saveSuccessToast?.message;\n\n this.container.showToast?.({\n type: 'SUCCESS',\n biName: 'cairo-entity-page-save-success-toast',\n message:\n message ?? this.container.translate('cairo.entityPage.success.toast'),\n });\n }\n\n private handleEntityDeleted(deletedCollectionItem: any) {\n this.isSubmitSuccessful = true;\n this.navigateToParentWithState({ _deletedEntity: deletedCollectionItem });\n }\n\n /**\n * Blocks `handleSubmit` until the returned release is called (idempotent).\n * For features whose form fields are not mounted yet — react-hook-form only\n * validates mounted controls, so a save in that window would skip their\n * required-field validation.\n */\n holdSave(): () => void {\n const hold = {};\n this._saveHolds.add(hold);\n return action(() => {\n this._saveHolds.delete(hold);\n });\n }\n\n get isSaveHeld(): boolean {\n return this._saveHolds.size > 0;\n }\n\n async handleSubmit(e?: React.BaseSyntheticEvent) {\n if (\n this.formPage.submitTask.status.isLoading ||\n this.isSaveHeld ||\n this.actionsBarConfig?.saveCta?.disabled\n ) {\n return;\n }\n\n this.events.emit('save');\n\n const { isValid, data: widgetsFormData } = await this.formPage.validate();\n\n if (!isValid) {\n this.bi.reportButtonClick({\n ctaName: 'Save',\n isValid: false,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n return;\n }\n\n const {\n form,\n formPage: { submitTask },\n bi,\n } = this;\n\n submitTask.run(async () => {\n let savedEntity: T | undefined;\n let submitSuccessful = false;\n\n await form.handleSubmit(\n async () => {\n bi.reportButtonClick({\n ctaName: 'Save',\n isValid: true,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n try {\n if (!this.isFetching) {\n const onSaveResult = await this.onSave({\n widgetsFormData,\n entity: this.entity,\n });\n savedEntity = onSaveResult?.updatedEntity;\n }\n this._showSuccessToast();\n submitSuccessful = true; // Mark as successful locally\n // Explicitly set isSubmitSuccessful to prevent onBeforeUnload from triggering\n this.isSubmitSuccessful = true;\n } catch (err) {\n this._showErrorToast(err, e);\n this.container.errorMonitor.captureException(err);\n this.events.emit('saveError', err);\n form.setError('root.serverError', {}); // https://react-hook-form.com/docs/useform/seterror\n }\n },\n () => {\n bi.reportButtonClick({\n ctaName: 'Save',\n isValid: false,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n }, // can be used to report validation errors\n )(e);\n\n if (!submitSuccessful) {\n return;\n }\n const transformedItem =\n savedEntity && this.transformEntityToCollectionItem\n ? this.transformEntityToCollectionItem(savedEntity)\n : savedEntity;\n this.navigateToParent(transformedItem);\n });\n await this.formPage.submitTask.status.promise;\n }\n\n get initTask() {\n return this.formPage.initTask;\n }\n\n get submitTask() {\n return this.formPage.submitTask;\n }\n\n private _checkPageParams() {\n if (this._withinRouter) {\n if (this._parentPath === undefined) {\n throw new Error('parentPath was not defined in useEntityPage');\n }\n } else {\n if (this._parentPageId === undefined) {\n throw new Error('parentPageId was not defined in useEntityPage');\n }\n\n if (!this.container.navigateTo) {\n throw new Error('navigateTo was not defined in Patterns Provider');\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_bexCore","require","_mobx","_schemaFieldsContainer","_EntityPageStateBIReporter","_events","_EntityPageDeleteActionState","_sourceSave","_itemAccess","EntityPageState","fieldsContainer","fieldsContainerOf","schemaSource","constructor","params","_defineProperty2","default","undefined","observable","set","deep","EventEmitter","fetch","onSave","_usesSourceSave","isSourceSave","saveSuccessToast","saveErrorToast","formPage","FormPageState","form","_parentPageId","parentPageId","_isNewEntity","isNewEntity","transformEntityToCollectionItem","anEntity","_parentPath","parentPath","_parentReferrer","parentReferrer","actionsBarConfig","container","deleteActionState","EntityPageDeleteActionState","deleteAction","getEntity","entity","getLoadedSchema","loadedSchema","onDeleted","action","deletedCollectionItem","handleEntityDeleted","emitDelete","events","emit","emitDeleteError","err","_routerState","routerState","_this$_routerState$cu","_entity","currentState","_chosenEntity","reportBI","createBILogger","componentType","pageType","route","window","location","pathname","bi","EntityPageStateBIReporter","entityPageState","init","makeObservable","handleSubmit","ref","setEntity","_schema","setSchema","_loadedSchema","setLoadedSchema","customColumnsState","setActionsBarConfig","holdSave","isSaveHeld","computed","isFormDirty","areFieldsReadOnly","resolvedActionsBarConfig","_withinRouter","_checkPageParams","initTask","onBeforeUnload","onBeforeUnloadSubscription","event","isMobileDevice","formState","isSubmitSuccessful","_isSubmitSuccessful","preventDefault","reportOnBeforeUnload","runOnce","_this$fieldsContainer","_this$schemaSource","_this$fieldsContainer2","_this$bi$appLoaded","_this$bi","data","Promise","all","loadSchema","status","promise","schema","appLoaded","call","remove","retryFetch","newEntity","markFieldsChanged","_this$_routerState","isFetching","flag","isDirty","_isFormDirty","val","onCancel","_this$actionsBarConfi","reportButtonClick","ctaName","additionalInfo","cancelCta","biAdditionalInfo","navigateToParent","_ref","loaded","permissions","itemPermissions","permitted","supported","getItemAccess","backend","requiresBackendWrite","_isExistingEntity","update","create","isCreateItemDisabled","disabled","_config$saveCta","config","saveCta","secondaryActions","map","item","isRouteKnown","updatedEntity","entityStringKey","navigateToParentWithState","entityObject","navigate","state","navigateTo","pageId","referrer","_showErrorToast","e","_this$saveErrorToast","_this$container$showT","_this$container","errorToast","retry","message","showTryAgain","tryAgain","showToast","type","biName","translate","code","uiType","text","onClick","reportSaveTryAgain","removeToastOnClick","_showSuccessToast","_this$saveSuccessToas","_this$container$showT2","_this$container2","_deletedEntity","hold","_saveHolds","add","delete","size","_this$resolvedActions","submitTask","isLoading","isValid","widgetsFormData","validate","_this$actionsBarConfi2","run","savedEntity","submitSuccessful","_this$actionsBarConfi3","onSaveResult","errorMonitor","captureException","setError","_this$actionsBarConfi4","transformedItem","Error","exports"],"sources":["../../../../src/state/EntityPage/EntityPageState.ts"],"sourcesContent":["import {\n FormPageState,\n ReportBI,\n WixPatternsContainer,\n ActionsBarConfig,\n isMobileDevice,\n SchemaSource,\n Schema,\n} from '@wix/bex-core';\nimport type { LoadedSchema } from '@wix/bex-core';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport type { PatternsFieldsAppContainer } from '@wix/patterns-fields/providers';\nimport { fieldsContainerOf } from '../../model/schemaFieldsContainer';\nimport { FieldValues, UseFormReturn } from 'react-hook-form';\nimport { EntityPageStateBIReporter } from './EntityPageStateBIReporter';\nimport { EventEmitter, TypedEmitter } from '@wix/bex-core/events';\nimport { WixPatternsRouterState } from '../WixPatternsRouterState';\nimport type { SidePanelsState } from '../SidePanelsState';\nimport type { CustomColumnsEntityPageState } from '../CustomColumnsEntityPageState';\nimport {\n EntityPageDeleteAction,\n EntityPageDeleteActionState,\n} from './EntityPageDeleteActionState';\nimport { isSourceSave } from './sourceSave';\nimport { getItemAccess } from '../../model/itemAccess';\n\ntype OnSaveParams<T> = {\n widgetsFormData: { [key: string]: any };\n /**\n * The entity as `fetch` loaded it, or `null` on a create route. Use it for what\n * the form does not hold but the update needs, such as the record's revision.\n */\n entity: T | null;\n};\n\ninterface EntityPageStateParamsBase<T, V extends FieldValues = FieldValues> {\n /**\n * A function that fetches the entity data.\n * @returns a promise that resolves to an object containing the entity.\n */\n fetch: () => Promise<{ entity: T | undefined }>;\n\n /**\n * A function to handle the save action.\n * @returns promise that resolves to an object that contains a 'updatedEntity' object.\n */\n onSave: (params: OnSaveParams<T>) => Promise<{ updatedEntity: T }>;\n\n /**\n * An optional object with an optional message, or it can directly get a string message.\n */\n saveSuccessToast?: { message?: string } | string;\n\n /**\n * An optional function to display an error toast message when a save operation fails.\n * @returns An object with a `message` and an `action` object. Alternatively, it can return an object with an optional `message` and a `tryAgain` flag, or a string message.\n * The previous return types are still supported but are now deprecated.\n */\n saveErrorToast?: (\n err: unknown,\n params: { retry: () => void },\n ) =>\n | {\n message?: string;\n /**\n * @deprecated use `action` instead\n */\n tryAgain?: boolean;\n action?: { text: string; onClick: () => void };\n }\n | string;\n\n /**\n * Enables deleting the loaded entity from the entity page. Pass `true` for a\n * schema-backed page to use the source backend, or an object to customize the\n * action and to provide a delete handler for manually wired pages.\n */\n deleteAction?: EntityPageDeleteAction<T>;\n\n /**\n * An optional function to transform the updated entity data before it is passed to the collection page.\n * @param entity the updated entity.\n * @returns an object representing the entity in the collection page.\n */\n transformEntityToCollectionItem?: (entity: T) => any;\n\n form: UseFormReturn<V>;\n /**\n * An object representing the container, possibly for dependency injection or component management.\n */\n container: WixPatternsContainer;\n\n /**\n * A string representing the ID of the parent page.\n * Must be passed if not using Patterns Router\n */\n parentPageId?: string;\n\n /**\n * A string representing the path of the parent page.\n * Must be passed if using Patterns Router\n */\n parentPath?: string;\n\n /**\n * Referrer forwarded to the parent page on back, cancel and save, so callers\n * can carry navigation context across the transition.\n *\n * Only used for parentPageId navigations; Patterns Router keeps its context\n * in router state.\n *\n * Forwarded by the BM and Giza providers. Dropped by the dashboard provider,\n * whose SDK Destination has no referrer field.\n */\n parentReferrer?: string;\n\n /**\n * An object representing the router state\n */\n routerState?: WixPatternsRouterState | null;\n\n /**\n * An optional object to override the actions bar.\n */\n actionsBarConfig?: ActionsBarConfig;\n\n /**\n * Whether the page was opened to create a new entity rather than to edit an\n * existing one. Selects the create/update permission and how a save is\n * announced to the parent page — created vs updated — so a seeded item is announced\n * as created. Pass a getter when the route can change while the page stays\n * mounted; the fields switch between create and update permissions only when\n * the getter reads MobX observables. When omitted, the announcement follows\n * whether an entity was loaded.\n */\n isNewEntity?: boolean | (() => boolean);\n\n /**\n * An optional schema source describing how to load the schema and access\n * the entity's data. When present, the page can read fields from the source\n * instead of relying only on hand-wired fetch/onSave callbacks.\n */\n schemaSource?: SchemaSource<T>;\n}\n\nexport type EntityPageStateParams<\n T,\n V extends FieldValues = FieldValues,\n> = EntityPageStateParamsBase<T, V>;\n\nexport interface EntityPageStateInterface {}\n\nexport interface EntityPageWidgetState {\n validate: () => Promise<{ isValid: boolean; values?: any }>;\n isDirty: boolean;\n}\n\nexport class EntityPageState<T, V extends FieldValues = FieldValues>\n implements EntityPageStateInterface\n{\n readonly fetch: EntityPageStateParams<T>['fetch'];\n readonly onSave: EntityPageStateParams<T, V>['onSave'];\n private readonly _usesSourceSave: boolean;\n readonly saveSuccessToast?: EntityPageStateParams<T>['saveSuccessToast'];\n readonly saveErrorToast?: EntityPageStateParams<T>['saveErrorToast'];\n readonly transformEntityToCollectionItem: (entity: T) => any;\n\n _entity: T | null = null;\n _schema: Schema | null = null;\n _loadedSchema: LoadedSchema<T> | null = null;\n private readonly _isNewEntity?: boolean | (() => boolean);\n private readonly _parentPageId?: string;\n private readonly _parentPath?: string;\n private readonly _parentReferrer?: string;\n\n actionsBarConfig: EntityPageStateParams<T>['actionsBarConfig'] = undefined;\n\n /**\n * The page's side-panel host, the way a table's lives on its toolbar.\n * Attached by the first feature that needs one, through\n * `SidePanelsState.setOnPage` — so a page with no panels neither builds nor\n * bundles the side-panel code. Everything on the page shares this host, which\n * is what keeps one panel open at a time.\n */\n panels: SidePanelsState | null = null;\n\n /** The fields card's \"Manage fields\" state, set by the card that owns it —\n * the panel is rendered by the host with no props and reads it from here,\n * as a table's panel reads `toolbar.customColumnsState`. */\n customColumnsState: CustomColumnsEntityPageState | null = null;\n\n // Shallow: a deep set would wrap the token objects, and release could not\n // find them again.\n private readonly _saveHolds = observable.set<object>([], { deep: false });\n\n readonly schemaSource?: SchemaSource<T>;\n\n /**\n * The container the page's field renderers are built with — the one the schema\n * carries, so a table on the same schema shares it. Initialized in `init()`\n * below, next to the schema load the fields also wait on; the schema-entry\n * EntityPage puts it in React context.\n */\n get fieldsContainer(): PatternsFieldsAppContainer | undefined {\n return fieldsContainerOf(this.schemaSource);\n }\n\n readonly container: WixPatternsContainer;\n readonly reportBI: ReportBI;\n readonly bi: EntityPageStateBIReporter<T, V>;\n\n _routerState: WixPatternsRouterState | null = null;\n\n readonly formPage: FormPageState<V>;\n readonly deleteActionState: EntityPageDeleteActionState<T>;\n\n readonly events = new EventEmitter() as TypedEmitter<{\n save: () => void;\n saveError: (err: unknown) => void;\n delete: () => void;\n deleteError: (err: unknown) => void;\n }>;\n\n constructor(params: EntityPageStateParams<T, V>) {\n this.fetch = params.fetch;\n this.onSave = params.onSave;\n this._usesSourceSave = isSourceSave(params.onSave);\n this.saveSuccessToast = params.saveSuccessToast;\n this.saveErrorToast = params.saveErrorToast;\n this.formPage = new FormPageState<V>({ form: params.form });\n this._parentPageId = params.parentPageId;\n this._isNewEntity = params.isNewEntity;\n this.transformEntityToCollectionItem =\n params.transformEntityToCollectionItem || ((anEntity: T) => anEntity);\n this._parentPath = params.parentPath;\n this._parentReferrer = params.parentReferrer;\n this.actionsBarConfig = params.actionsBarConfig;\n this.schemaSource = params.schemaSource;\n\n this.container = params.container;\n this.deleteActionState = new EntityPageDeleteActionState<T>({\n container: this.container,\n deleteAction: params.deleteAction,\n schemaSource: this.schemaSource,\n getEntity: () => this.entity,\n getLoadedSchema: () => this.loadedSchema,\n transformEntityToCollectionItem: this.transformEntityToCollectionItem,\n onDeleted: action((deletedCollectionItem) =>\n this.handleEntityDeleted(deletedCollectionItem),\n ),\n emitDelete: () => this.events.emit('delete'),\n emitDeleteError: (err) => this.events.emit('deleteError', err),\n });\n\n this._routerState = params.routerState ?? null;\n\n if (this._routerState) {\n this._entity = this._routerState.currentState?._chosenEntity?.entity;\n }\n\n this.reportBI = this.container.createBILogger({\n componentType: 'Entity page',\n pageType: 'Entity',\n route: window.location.pathname,\n });\n\n this.bi = new EntityPageStateBIReporter({\n reportBI: this.reportBI,\n entityPageState: this,\n });\n this.bi.init();\n\n makeObservable(this, {\n handleSubmit: action,\n _entity: observable.ref,\n setEntity: action,\n _schema: observable.ref,\n setSchema: action,\n _loadedSchema: observable.ref,\n setLoadedSchema: action,\n customColumnsState: observable.ref,\n actionsBarConfig: observable.ref,\n setActionsBarConfig: action,\n holdSave: action,\n isSaveHeld: computed,\n isFormDirty: computed,\n areFieldsReadOnly: computed,\n resolvedActionsBarConfig: computed,\n _withinRouter: computed,\n });\n }\n\n init() {\n this._checkPageParams();\n const {\n formPage: { initTask },\n container,\n } = this;\n const { onBeforeUnload } = container;\n\n const onBeforeUnloadSubscription = onBeforeUnload?.(\n action((event: Event) => {\n if (isMobileDevice()) {\n return;\n }\n\n const { form } = this;\n // Check both react-hook-form's state AND the explicitly set flag\n if (\n form.formState.isSubmitSuccessful ||\n this.formPage._isSubmitSuccessful ||\n !this.isFormDirty\n ) {\n return;\n }\n event.preventDefault();\n this.bi.reportOnBeforeUnload();\n }),\n );\n\n initTask.runOnce(async () => {\n // The field renderers can't translate until this resolves, so the page\n // waits on it alongside the fetch. Idempotent.\n this.fieldsContainer?.init();\n\n const [data, loadedSchema] = await Promise.all([\n this.fetch(),\n this.schemaSource?.loadSchema(),\n container.initTask.status.promise,\n this.fieldsContainer?.initTask.status.promise,\n ]);\n\n this.setEntity(data.entity ?? null);\n // A fields card can mirror a newer value while these promises settle.\n if (loadedSchema && !this.loadedSchema) {\n this.setLoadedSchema(loadedSchema);\n }\n if (loadedSchema && !this.schema) {\n this.setSchema(loadedSchema.schema);\n }\n this.bi.appLoaded?.();\n });\n\n return () => {\n onBeforeUnloadSubscription?.remove();\n };\n }\n\n retryFetch() {\n this.formPage.retryFetch();\n }\n\n setEntity(newEntity: T | null) {\n this._entity = newEntity;\n }\n\n get entity(): T | null {\n return this._entity;\n }\n\n setSchema(schema: Schema | null) {\n this._schema = schema;\n }\n\n get schema(): Schema | null {\n return this._schema;\n }\n\n setActionsBarConfig(actionsBarConfig?: ActionsBarConfig) {\n this.actionsBarConfig = actionsBarConfig;\n }\n\n setLoadedSchema(loadedSchema: LoadedSchema<T> | null) {\n this._loadedSchema = loadedSchema;\n }\n\n get loadedSchema(): LoadedSchema<T> | null {\n return this._loadedSchema;\n }\n\n markFieldsChanged() {\n this._routerState?.markFieldsChanged();\n }\n\n get isFetching() {\n return this.formPage.isFetching;\n }\n\n get form() {\n return this.formPage.form;\n }\n\n set isSubmitSuccessful(flag: boolean) {\n this.formPage.isSubmitSuccessful = flag;\n }\n\n get isFormDirty() {\n return this.formPage.isDirty;\n }\n\n // backwards compatibility\n set _isFormDirty(val: boolean) {\n this.formPage._isFormDirty = val;\n }\n\n get _withinRouter() {\n return !!this._routerState;\n }\n\n onCancel() {\n this.bi.reportButtonClick({\n ctaName: 'Cancel',\n additionalInfo: this.actionsBarConfig?.cancelCta?.biAdditionalInfo,\n });\n this.navigateToParent();\n }\n\n get areFieldsReadOnly(): boolean {\n const loaded = this.loadedSchema;\n if (this.schemaSource && !loaded) {\n return true;\n }\n\n const permissions = (loaded?.schema ?? this.schema)?.itemPermissions;\n const { permitted, supported } = getItemAccess(\n permissions,\n loaded?.backend,\n );\n // A custom save doesn't go through the backend, so it needs no write method.\n const requiresBackendWrite = this._usesSourceSave && !!loaded;\n if (this._isExistingEntity) {\n return !permitted.update || (requiresBackendWrite && !supported.update);\n }\n\n return (\n !permitted.create ||\n (requiresBackendWrite && !supported.create) ||\n !!permissions?.isCreateItemDisabled?.().disabled\n );\n }\n\n /** `actionsBarConfig` with Save and its secondary actions disabled while the\n * fields are read-only. */\n get resolvedActionsBarConfig(): ActionsBarConfig | undefined {\n const config = this.actionsBarConfig;\n if (!this.areFieldsReadOnly) {\n return config;\n }\n\n return {\n ...config,\n saveCta: {\n ...config?.saveCta,\n disabled: true,\n secondaryActions: config?.saveCta?.secondaryActions?.map((item) => ({\n ...item,\n disabled: true,\n })),\n },\n };\n }\n\n private get _isExistingEntity(): boolean {\n const isNewEntity =\n typeof this._isNewEntity === 'function'\n ? this._isNewEntity()\n : this._isNewEntity;\n const isRouteKnown = isNewEntity !== undefined;\n return isRouteKnown ? !isNewEntity : !!this._entity;\n }\n\n navigateToParent(updatedEntity?: any) {\n const entityStringKey = this._isExistingEntity\n ? '_updatedEntity'\n : '_createdEntity';\n this.navigateToParentWithState({ [entityStringKey]: updatedEntity });\n }\n\n navigateToParentWithState(entityObject: Record<string, unknown>) {\n if (this._withinRouter) {\n this._routerState!.navigate(this._parentPath!, { state: entityObject });\n } else {\n this.container.navigateTo!({\n pageId: this._parentPageId!,\n ...(this._parentReferrer !== undefined && {\n referrer: this._parentReferrer,\n }),\n });\n }\n }\n\n _showErrorToast(err: any, e?: React.BaseSyntheticEvent) {\n const errorToast = this.saveErrorToast?.(err, {\n retry: () => this.handleSubmit(e),\n });\n const message =\n typeof errorToast === 'string' ? errorToast : errorToast?.message;\n const showTryAgain =\n typeof errorToast === 'string' ? true : errorToast?.tryAgain !== false;\n const action =\n typeof errorToast === 'string' ? undefined : errorToast?.action;\n\n this.container.showToast?.({\n type: 'ERROR',\n biName: 'cairo-entity-page-save-error-toast',\n message:\n message ??\n this.container.translate(\n err?.code === 'ERR_NETWORK'\n ? 'cairo.entityPage.saveError-offline.toast.description'\n : 'cairo.entityPage.saveError-technical.toast.description',\n ),\n action:\n action || showTryAgain\n ? {\n uiType: 'LINK',\n text:\n action?.text ?? this.container.translate('cairo.toast.retry'),\n onClick: () => {\n if (action?.onClick) {\n action.onClick();\n } else {\n this.bi.reportSaveTryAgain();\n this.handleSubmit(e);\n }\n },\n removeToastOnClick: true,\n }\n : undefined,\n });\n }\n\n _showSuccessToast() {\n const message =\n typeof this.saveSuccessToast === 'string'\n ? this.saveSuccessToast\n : this.saveSuccessToast?.message;\n\n this.container.showToast?.({\n type: 'SUCCESS',\n biName: 'cairo-entity-page-save-success-toast',\n message:\n message ?? this.container.translate('cairo.entityPage.success.toast'),\n });\n }\n\n private handleEntityDeleted(deletedCollectionItem: any) {\n this.isSubmitSuccessful = true;\n this.navigateToParentWithState({ _deletedEntity: deletedCollectionItem });\n }\n\n /**\n * Blocks `handleSubmit` until the returned release is called (idempotent).\n * For features whose form fields are not mounted yet — react-hook-form only\n * validates mounted controls, so a save in that window would skip their\n * required-field validation.\n */\n holdSave(): () => void {\n const hold = {};\n this._saveHolds.add(hold);\n return action(() => {\n this._saveHolds.delete(hold);\n });\n }\n\n get isSaveHeld(): boolean {\n return this._saveHolds.size > 0;\n }\n\n async handleSubmit(e?: React.BaseSyntheticEvent) {\n if (\n this.formPage.submitTask.status.isLoading ||\n this.isSaveHeld ||\n this.resolvedActionsBarConfig?.saveCta?.disabled\n ) {\n return;\n }\n\n this.events.emit('save');\n\n const { isValid, data: widgetsFormData } = await this.formPage.validate();\n\n if (!isValid) {\n this.bi.reportButtonClick({\n ctaName: 'Save',\n isValid: false,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n return;\n }\n\n const {\n form,\n formPage: { submitTask },\n bi,\n } = this;\n\n submitTask.run(async () => {\n let savedEntity: T | undefined;\n let submitSuccessful = false;\n\n await form.handleSubmit(\n async () => {\n // The permission can be revoked while the form validates.\n if (this.areFieldsReadOnly) {\n return;\n }\n bi.reportButtonClick({\n ctaName: 'Save',\n isValid: true,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n try {\n if (!this.isFetching) {\n const onSaveResult = await this.onSave({\n widgetsFormData,\n entity: this.entity,\n });\n savedEntity = onSaveResult?.updatedEntity;\n }\n this._showSuccessToast();\n submitSuccessful = true; // Mark as successful locally\n // Explicitly set isSubmitSuccessful to prevent onBeforeUnload from triggering\n this.isSubmitSuccessful = true;\n } catch (err) {\n this._showErrorToast(err, e);\n this.container.errorMonitor.captureException(err);\n this.events.emit('saveError', err);\n form.setError('root.serverError', {}); // https://react-hook-form.com/docs/useform/seterror\n }\n },\n () => {\n bi.reportButtonClick({\n ctaName: 'Save',\n isValid: false,\n additionalInfo: this.actionsBarConfig?.saveCta?.biAdditionalInfo,\n });\n }, // can be used to report validation errors\n )(e);\n\n if (!submitSuccessful) {\n return;\n }\n const transformedItem =\n savedEntity && this.transformEntityToCollectionItem\n ? this.transformEntityToCollectionItem(savedEntity)\n : savedEntity;\n this.navigateToParent(transformedItem);\n });\n await this.formPage.submitTask.status.promise;\n }\n\n get initTask() {\n return this.formPage.initTask;\n }\n\n get submitTask() {\n return this.formPage.submitTask;\n }\n\n private _checkPageParams() {\n if (this._withinRouter) {\n if (this._parentPath === undefined) {\n throw new Error('parentPath was not defined in useEntityPage');\n }\n } else {\n if (this._parentPageId === undefined) {\n throw new Error('parentPageId was not defined in useEntityPage');\n }\n\n if (!this.container.navigateTo) {\n throw new Error('navigateTo was not defined in Patterns Provider');\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.isSourceSave = isSourceSave;
5
+ exports.markSourceSave = markSourceSave;
6
+ // Save handlers that write through the source backend. Kept here, outside the
7
+ // public params, so consumers can't set or depend on it.
8
+ const sourceSaveHandlers = new WeakSet();
9
+ function markSourceSave(onSave) {
10
+ sourceSaveHandlers.add(onSave);
11
+ return onSave;
12
+ }
13
+ function isSourceSave(onSave) {
14
+ return sourceSaveHandlers.has(onSave);
15
+ }
16
+ //# sourceMappingURL=sourceSave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["sourceSaveHandlers","WeakSet","markSourceSave","onSave","add","isSourceSave","has"],"sources":["../../../../src/state/EntityPage/sourceSave.ts"],"sourcesContent":["// Save handlers that write through the source backend. Kept here, outside the\n// public params, so consumers can't set or depend on it.\nconst sourceSaveHandlers = new WeakSet<object>();\n\nexport function markSourceSave<F extends object>(onSave: F): F {\n sourceSaveHandlers.add(onSave);\n return onSave;\n}\n\nexport function isSourceSave(onSave: object): boolean {\n return sourceSaveHandlers.has(onSave);\n}\n"],"mappings":";;;;;AAAA;AACA;AACA,MAAMA,kBAAkB,GAAG,IAAIC,OAAO,CAAS,CAAC;AAEzC,SAASC,cAAcA,CAAmBC,MAAS,EAAK;EAC7DH,kBAAkB,CAACI,GAAG,CAACD,MAAM,CAAC;EAC9B,OAAOA,MAAM;AACf;AAEO,SAASE,YAAYA,CAACF,MAAc,EAAW;EACpD,OAAOH,kBAAkB,CAACM,GAAG,CAACH,MAAM,CAAC;AACvC","ignoreList":[]}