@wix/patterns 1.498.0 → 1.499.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 (428) 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/EntityPagePlain.st.css.js +2 -2
  86. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  87. package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js +3 -3
  88. package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js.map +1 -1
  89. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js +2 -2
  90. package/dist/cjs/components/EntityPageFields/EntityPageReferenceValue.st.css.js.map +1 -1
  91. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  92. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  93. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  94. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  95. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  96. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  97. package/dist/cjs/components/ImportButton/SchemaImportFieldEditor.js +2 -13
  98. package/dist/cjs/components/ImportButton/SchemaImportFieldEditor.js.map +1 -1
  99. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  100. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  101. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  102. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  103. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  104. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  105. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  106. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  107. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  108. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  109. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  110. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  111. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
  112. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  113. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  114. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  115. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  116. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  117. package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
  118. package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
  119. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
  120. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  121. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  122. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  123. package/dist/cjs/components/SchemaSource/schemaFieldActions.js.map +1 -1
  124. package/dist/cjs/components/SchemaSource/schemaFieldManagement.js.map +1 -1
  125. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  126. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  127. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +10 -10
  128. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  129. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  130. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  131. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
  132. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  133. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +6 -6
  134. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  135. package/dist/cjs/components/Table/NumberCell.st.css.js +2 -2
  136. package/dist/cjs/components/Table/NumberCell.st.css.js.map +1 -1
  137. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
  138. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  139. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  140. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  141. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  142. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  143. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  144. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  145. package/dist/cjs/components/common.st.css.js +4 -4
  146. package/dist/cjs/components/common.st.css.js.map +1 -1
  147. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +3 -3
  148. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  149. package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
  150. package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js.map +1 -1
  151. package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js +4 -4
  152. package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
  153. package/dist/cjs/state/EditableTable/CellValueState.js +154 -7
  154. package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
  155. package/dist/cjs/state/EditableTable/ClipboardState.js +30 -14
  156. package/dist/cjs/state/EditableTable/ClipboardState.js.map +1 -1
  157. package/dist/cjs/state/EditableTable/EditableTableState.js +1 -1
  158. package/dist/cjs/state/EditableTable/EditableTableState.js.map +1 -1
  159. package/dist/cjs/state/EditableTable/MutationState.js +31 -7
  160. package/dist/cjs/state/EditableTable/MutationState.js.map +1 -1
  161. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  162. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  163. package/dist/cjs/styles.global.css +2 -2
  164. package/dist/cjs/version.js +1 -1
  165. package/dist/cjs/version.js.map +1 -1
  166. package/dist/docs/Table.md +3 -1
  167. package/dist/dts-bundle/hooks/usePickerModal.d.ts +3 -0
  168. package/dist/dts-bundle/index.json +9 -9
  169. package/dist/dts-bundle/index.txt +2 -2
  170. package/dist/dts-bundle/types/CellType.d.ts +3 -0
  171. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  172. package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
  173. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
  174. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
  175. package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
  176. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  177. package/dist/esm/components/Collapse/Collapse.st.css.js.map +1 -1
  178. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  179. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  180. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  181. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  182. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  183. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js.map +1 -1
  184. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  185. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  186. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  187. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  188. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js.map +1 -1
  189. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  190. package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +2 -2
  191. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  192. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  193. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  194. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  195. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  196. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
  197. package/dist/esm/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +2 -2
  198. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
  199. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  200. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  201. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  202. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  203. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  204. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  205. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  206. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
  207. package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
  208. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
  209. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  210. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  211. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
  212. package/dist/esm/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js +2 -2
  213. package/dist/esm/components/EditableTable/cellTypes/mediaImage/Edit.st.css.js.map +1 -1
  214. package/dist/esm/components/EditableTable/cellTypes/multiDocument/Edit.st.css.js +2 -2
  215. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  216. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  217. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  218. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  219. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  220. package/dist/esm/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +2 -2
  221. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  222. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  223. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  224. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  225. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
  226. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  227. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  228. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  229. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  230. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  231. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  232. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  233. package/dist/esm/components/EntityPageFields/EntityPageField.st.css.js +2 -2
  234. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css.js +2 -2
  235. package/dist/esm/components/EntityPageFields/EntityPageReferenceValue.st.css.js.map +1 -1
  236. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  237. package/dist/esm/components/Fade/Fade.st.css.js.map +1 -1
  238. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  239. package/dist/esm/components/Heading/Heading.st.css.js.map +1 -1
  240. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  241. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  242. package/dist/esm/components/ImportButton/SchemaImportFieldEditor.js +2 -12
  243. package/dist/esm/components/ImportButton/SchemaImportFieldEditor.js.map +1 -1
  244. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  245. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  246. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  247. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  248. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  249. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  250. package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
  251. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
  252. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  253. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  254. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
  255. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  256. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  257. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  258. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  259. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  260. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  261. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  262. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  263. package/dist/esm/components/SchemaSource/schemaFieldActions.js +2 -1
  264. package/dist/esm/components/SchemaSource/schemaFieldActions.js.map +1 -1
  265. package/dist/esm/components/SchemaSource/schemaFieldManagement.js.map +1 -1
  266. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  267. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
  268. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  269. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  270. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
  271. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js +2 -2
  272. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  273. package/dist/esm/components/Table/NumberCell.st.css.js +2 -2
  274. package/dist/esm/components/Table/NumberCell.st.css.js.map +1 -1
  275. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
  276. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  277. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  278. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  279. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  280. package/dist/esm/components/common.st.css.js +2 -2
  281. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  282. package/dist/esm/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
  283. package/dist/esm/state/CollectionPage/TitleBadges.st.css.js +2 -2
  284. package/dist/esm/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
  285. package/dist/esm/state/EditableTable/CellValueState.js +146 -7
  286. package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
  287. package/dist/esm/state/EditableTable/ClipboardState.js +16 -15
  288. package/dist/esm/state/EditableTable/ClipboardState.js.map +1 -1
  289. package/dist/esm/state/EditableTable/EditableTableState.js +1 -1
  290. package/dist/esm/state/EditableTable/EditableTableState.js.map +1 -1
  291. package/dist/esm/state/EditableTable/MutationState.js +28 -7
  292. package/dist/esm/state/EditableTable/MutationState.js.map +1 -1
  293. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  294. package/dist/esm/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  295. package/dist/esm/styles.global.css +2 -2
  296. package/dist/esm/version.js +1 -1
  297. package/dist/examples/Table/mobile-columns.tsx +66 -98
  298. package/dist/types/components/CmsFieldManagement/CmsFieldModal.st.css.d.ts.map +1 -1
  299. package/dist/types/components/Collapse/Collapse.st.css.d.ts.map +1 -1
  300. package/dist/types/components/CollectionTable/CollectionTable.st.css.d.ts.map +1 -1
  301. package/dist/types/components/CollectionTable/CollectionTableWSRTable.st.css.d.ts.map +1 -1
  302. package/dist/types/components/CollectionToolbar/CollectionToolbar.st.css.d.ts.map +1 -1
  303. package/dist/types/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.d.ts.map +1 -1
  304. package/dist/types/components/EditableTable/HeaderActionsPopover.st.css.d.ts.map +1 -1
  305. package/dist/types/components/EditableTable/cellTypes/CellViewLayout.st.css.d.ts.map +1 -1
  306. package/dist/types/components/EditableTable/cellTypes/boolean/Edit.st.css.d.ts.map +1 -1
  307. package/dist/types/components/EditableTable/cellTypes/date/View.st.css.d.ts.map +1 -1
  308. package/dist/types/components/EditableTable/cellTypes/email/Edit.st.css.d.ts.map +1 -1
  309. package/dist/types/components/EditableTable/cellTypes/email/View.st.css.d.ts.map +1 -1
  310. package/dist/types/components/EditableTable/cellTypes/mediaImage/Edit.st.css.d.ts.map +1 -1
  311. package/dist/types/components/EditableTable/cellTypes/number/Edit.st.css.d.ts.map +1 -1
  312. package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts.map +1 -1
  313. package/dist/types/components/EditableTable/cellTypes/text/View.st.css.d.ts.map +1 -1
  314. package/dist/types/components/EditableTable/cellTypes/time/Edit.st.css.d.ts.map +1 -1
  315. package/dist/types/components/EditableTable/cellTypes/url/View.st.css.d.ts.map +1 -1
  316. package/dist/types/components/EntityPage/EntityPagePlain.st.css.d.ts.map +1 -1
  317. package/dist/types/components/EntityPageFields/EntityPageReferenceValue.st.css.d.ts.map +1 -1
  318. package/dist/types/components/Fade/Fade.st.css.d.ts.map +1 -1
  319. package/dist/types/components/Heading/Heading.st.css.d.ts.map +1 -1
  320. package/dist/types/components/ImportButton/ImportStepUpload.st.css.d.ts.map +1 -1
  321. package/dist/types/components/ImportButton/SchemaImportFieldEditor.d.ts.map +1 -1
  322. package/dist/types/components/InputOverflow/InputOverflow.st.css.d.ts.map +1 -1
  323. package/dist/types/components/LoadingRow/LoadingRow.st.css.d.ts.map +1 -1
  324. package/dist/types/components/MaxHeightText/MaxHeightText.st.css.d.ts.map +1 -1
  325. package/dist/types/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.d.ts.map +1 -1
  326. package/dist/types/components/NestedTable/NestedTableRow.st.css.d.ts.map +1 -1
  327. package/dist/types/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.d.ts.map +1 -1
  328. package/dist/types/components/PickerContent/PickerContentAdditionalStep.st.css.d.ts.map +1 -1
  329. package/dist/types/components/SchemaSource/schemaFieldActions.d.ts.map +1 -1
  330. package/dist/types/components/SchemaSource/schemaFieldManagement.d.ts.map +1 -1
  331. package/dist/types/components/SetupWidget/SetupWidget.st.css.d.ts.map +1 -1
  332. package/dist/types/components/Table/AddFieldColumnHeader.st.css.d.ts.map +1 -1
  333. package/dist/types/components/Table/NumberCell.st.css.d.ts.map +1 -1
  334. package/dist/types/components/ToolbarItem/ToolbarItem.st.css.d.ts.map +1 -1
  335. package/dist/types/state/CollectionPage/TitleBadges.st.css.d.ts.map +1 -1
  336. package/dist/types/state/EditableTable/CellValueState.d.ts +40 -6
  337. package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
  338. package/dist/types/state/EditableTable/ClipboardState.d.ts +1 -1
  339. package/dist/types/state/EditableTable/ClipboardState.d.ts.map +1 -1
  340. package/dist/types/state/EditableTable/MutationState.d.ts +18 -1
  341. package/dist/types/state/EditableTable/MutationState.d.ts.map +1 -1
  342. package/dist/types/state/FormPage/FormPageHeader.st.css.d.ts.map +1 -1
  343. package/dist/types/version.d.ts +1 -1
  344. package/package.json +7 -7
  345. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  346. package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
  347. package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
  348. package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
  349. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  350. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  351. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  352. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  353. package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
  354. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  355. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  356. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  357. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  358. package/src/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.ts +2 -2
  359. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  360. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  361. package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
  362. package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
  363. package/src/components/EditableTable/cellTypes/JsonInputEdit.st.css.ts +2 -2
  364. package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
  365. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  366. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  367. package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
  368. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  369. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  370. package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +2 -2
  371. package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
  372. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
  373. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
  374. package/src/components/EditableTable/cellTypes/mediaImage/Edit.st.css.ts +2 -2
  375. package/src/components/EditableTable/cellTypes/multiDocument/Edit.st.css.ts +2 -2
  376. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  377. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  378. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
  379. package/src/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.ts +2 -2
  380. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  381. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  382. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  383. package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
  384. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  385. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  386. package/src/components/EmptyState/EmptyStateBase.st.css.ts +2 -2
  387. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  388. package/src/components/EntityPageFields/EntityPageField.st.css.ts +2 -2
  389. package/src/components/EntityPageFields/EntityPageReferenceValue.st.css.ts +2 -2
  390. package/src/components/Fade/Fade.st.css.ts +2 -2
  391. package/src/components/Heading/Heading.st.css.ts +2 -2
  392. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  393. package/src/components/ImportButton/SchemaImportFieldEditor.tsx +1 -20
  394. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  395. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  396. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  397. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  398. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  399. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  400. package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
  401. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
  402. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
  403. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  404. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  405. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  406. package/src/components/SchemaSource/schemaFieldActions.ts +4 -1
  407. package/src/components/SchemaSource/schemaFieldManagement.ts +3 -1
  408. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  409. package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
  410. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  411. package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
  412. package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
  413. package/src/components/Table/NumberCell.st.css.ts +2 -2
  414. package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
  415. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  416. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  417. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  418. package/src/components/common.st.css.ts +2 -2
  419. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  420. package/src/state/CollectionPage/MobilePrimaryActionBar.st.css.ts +2 -2
  421. package/src/state/CollectionPage/TitleBadges.st.css.ts +2 -2
  422. package/src/state/EditableTable/CellValueState.ts +197 -8
  423. package/src/state/EditableTable/ClipboardState.ts +24 -22
  424. package/src/state/EditableTable/EditableTableState.ts +1 -1
  425. package/src/state/EditableTable/MutationState.ts +56 -7
  426. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  427. package/src/styles.global.css +2 -2
  428. package/src/version.ts +1 -1
@@ -16,6 +16,9 @@ class CellValueState {
16
16
  /** Valid committed values not yet saved, keyed by `${itemId}:${colId}`.
17
17
  * Each row's drafts are flushed as one update when focus leaves the row. */
18
18
  (0, _defineProperty2.default)(this, "_draftCells", new Map());
19
+ /** Local new rows not to create yet, with how many open paste toasts hold
20
+ * each. See `applyPastedValues`. */
21
+ (0, _defineProperty2.default)(this, "_heldNewRows", new Map());
19
22
  (0, _defineProperty2.default)(this, "_parent", void 0);
20
23
  (0, _defineProperty2.default)(this, "_extraCellTypes", void 0);
21
24
  this._parent = parent;
@@ -29,8 +32,10 @@ class CellValueState {
29
32
  commitHandler: _mobx.action,
30
33
  applyBulkRawValues: _mobx.action,
31
34
  applyBulkValues: _mobx.action,
35
+ applyPastedValues: _mobx.action,
32
36
  revalidatePendingCells: _mobx.action,
33
37
  flushDrafts: _mobx.action,
38
+ flushDraftsOnUnmount: _mobx.action,
34
39
  flushRow: _mobx.action,
35
40
  dropRowCellState: _mobx.action
36
41
  });
@@ -301,6 +306,12 @@ class CellValueState {
301
306
  * Handles conversion failures by storing them as pending cells.
302
307
  */
303
308
  applyBulkRawValues(rawChanges) {
309
+ this.applyBulkValues(this._deserializeRawValues(rawChanges));
310
+ }
311
+
312
+ /** Values that fail are stored as pending cells with their error and left
313
+ * out of the result. */
314
+ _deserializeRawValues(rawChanges) {
304
315
  const changes = [];
305
316
  for (const {
306
317
  rowKey,
@@ -328,7 +339,7 @@ class CellValueState {
328
339
  });
329
340
  }
330
341
  }
331
- this.applyBulkValues(changes);
342
+ return changes;
332
343
  }
333
344
 
334
345
  /**
@@ -338,7 +349,7 @@ class CellValueState {
338
349
  * checking isColumnEditable here — not just at the call sites — keeps
339
350
  * read-only cells protected regardless of entry point.
340
351
  */
341
- applyBulkValues(changes) {
352
+ applyBulkValues(changes, options) {
342
353
  const rowUpdates = new Map();
343
354
  for (const {
344
355
  rowKey,
@@ -394,7 +405,127 @@ class CellValueState {
394
405
  item
395
406
  }) => item), updates.map(({
396
407
  changedFieldIds
397
- }) => Array.from(changedFieldIds)));
408
+ }) => Array.from(changedFieldIds)), options);
409
+ }
410
+
411
+ /**
412
+ * Applies pasted values and shows `successToast` with Undo. The server call
413
+ * waits until the toast closes or times out. With `batchWait` the toast has
414
+ * no Undo (see `MutationState.updatesAreBatched`).
415
+ *
416
+ * Undo rolls back the saved rows, and puts back the unsaved state (invalid
417
+ * values and drafts) of the pasted cells and of the drafts in their rows,
418
+ * which the paste saves along with it. A cell changed again after the paste
419
+ * keeps its newer value.
420
+ *
421
+ * Local new rows the paste touched are not created while the toast is open.
422
+ * Otherwise the click on Undo, which takes focus out of the table, would
423
+ * create them with the pasted values first.
424
+ */
425
+ applyPastedValues(changes, rawChanges, successToast) {
426
+ if (this._parent.mutation.updatesAreBatched) {
427
+ this.applyBulkValues([...changes, ...this._deserializeRawValues(rawChanges)], {
428
+ successToast
429
+ });
430
+ return;
431
+ }
432
+ const pastedCells = [...changes, ...rawChanges];
433
+ const rowKeys = new Set(pastedCells.map(({
434
+ rowKey
435
+ }) => rowKey));
436
+ const affectedCellKeys = new Set();
437
+ for (const {
438
+ rowKey,
439
+ columnId
440
+ } of pastedCells) {
441
+ const key = this._pendingCellKey(rowKey, columnId);
442
+ if (key) {
443
+ affectedCellKeys.add(key);
444
+ }
445
+ }
446
+ for (const [key, draft] of this._draftCells) {
447
+ if (rowKeys.has(draft.rowKey)) {
448
+ affectedCellKeys.add(key);
449
+ }
450
+ }
451
+ const beforePaste = this._snapshotUnsavedCells(affectedCellKeys);
452
+ // Replaced right after the paste below. `onUndo` reads it, and core calls
453
+ // `onUndo` only on a click on the toast, after that.
454
+ let afterPaste = beforePaste;
455
+ const newRowKeys = new Set([...rowKeys].filter(rowKey => this._parent.mutation.isLocalNewRow(rowKey)));
456
+ for (const rowKey of newRowKeys) {
457
+ this._heldNewRows.set(rowKey, (this._heldNewRows.get(rowKey) ?? 0) + 1);
458
+ }
459
+ let toastOpen = true;
460
+ // Retry calls `onKept` again; only the first call counts.
461
+ const endUndoWindow = () => {
462
+ if (!toastOpen) {
463
+ return false;
464
+ }
465
+ toastOpen = false;
466
+ for (const rowKey of newRowKeys) {
467
+ const holds = (this._heldNewRows.get(rowKey) ?? 1) - 1;
468
+ if (holds > 0) {
469
+ this._heldNewRows.set(rowKey, holds);
470
+ } else {
471
+ this._heldNewRows.delete(rowKey);
472
+ }
473
+ }
474
+ return true;
475
+ };
476
+ this.applyBulkValues(
477
+ // After the snapshot: this writes invalid values into `_pendingCells`.
478
+ [...changes, ...this._deserializeRawValues(rawChanges)], {
479
+ successToast,
480
+ undo: {
481
+ onUndo: (0, _mobx.action)(() => {
482
+ const wasOpen = endUndoWindow();
483
+ if (!wasOpen) {
484
+ return;
485
+ }
486
+ const restoredDraftRows = new Set();
487
+ for (const key of affectedCellKeys) {
488
+ const pasted = afterPaste.get(key);
489
+ if (this._pendingCells.get(key) !== (pasted == null ? void 0 : pasted.pending) || this._draftCells.get(key) !== (pasted == null ? void 0 : pasted.draft)) {
490
+ continue;
491
+ }
492
+ const {
493
+ pending,
494
+ draft
495
+ } = beforePaste.get(key) ?? {};
496
+ setOrDelete(this._pendingCells, key, pending);
497
+ setOrDelete(this._draftCells, key, draft);
498
+ if (draft) {
499
+ restoredDraftRows.add(draft.rowKey);
500
+ }
501
+ }
502
+ // The click on Undo already flushed the table, before these drafts
503
+ // were back. No toast: nothing should confirm the Undo.
504
+ this._flushRowsWithoutFocus(restoredDraftRows, {
505
+ successToast: null
506
+ });
507
+ }),
508
+ onKept: (0, _mobx.action)(() => {
509
+ const wasOpen = endUndoWindow();
510
+ if (!wasOpen) {
511
+ return;
512
+ }
513
+ this._flushRowsWithoutFocus(newRowKeys);
514
+ })
515
+ }
516
+ });
517
+ afterPaste = this._snapshotUnsavedCells(affectedCellKeys);
518
+ }
519
+ _snapshotUnsavedCells(keys) {
520
+ return new Map([...keys].map(key => [key, {
521
+ pending: this._pendingCells.get(key),
522
+ draft: this._draftCells.get(key)
523
+ }]));
524
+ }
525
+ _flushRowsWithoutFocus(rowKeys, options) {
526
+ var _this$_parent$cellInt;
527
+ const focusedRowKey = (_this$_parent$cellInt = this._parent.cellInteraction.focusedCell) == null ? void 0 : _this$_parent$cellInt.rowKey;
528
+ this._flushRows(rowKey => rowKeys.has(rowKey) && rowKey !== focusedRowKey, options);
398
529
  }
399
530
  _applyValue(rowKey, columnId, value) {
400
531
  var _this$_parent$collect4;
@@ -442,20 +573,29 @@ class CellValueState {
442
573
  this._flushRows(rowKey => rowKey !== exceptRowKey);
443
574
  }
444
575
 
576
+ /** Like `flushDrafts()`, but also saves new rows held by an open paste
577
+ * toast: focus can stay on a held row on unmount, and the toast doesn't
578
+ * create a focused row. */
579
+ flushDraftsOnUnmount() {
580
+ this._heldNewRows.clear();
581
+ this.flushDrafts();
582
+ }
583
+
445
584
  /** Save one row's drafts now, leaving other rows' drafts buffered. */
446
585
  flushRow(rowKey) {
447
586
  this._flushRows(key => key === rowKey);
448
587
  }
449
- _flushRows(includeRow) {
588
+ _flushRows(includeRow, options) {
589
+ const include = rowKey => includeRow(rowKey) && !this._heldNewRows.has(rowKey);
450
590
  const invalidNewRows = new Set();
451
591
  for (const rowKey of this._parent.mutation._drafts.keys()) {
452
- if (includeRow(rowKey) && !this._validateNewRow(rowKey)) {
592
+ if (include(rowKey) && !this._validateNewRow(rowKey)) {
453
593
  invalidNewRows.add(rowKey);
454
594
  }
455
595
  }
456
596
  const rowKeys = new Set();
457
597
  for (const entry of this._draftCells.values()) {
458
- if (includeRow(entry.rowKey)) {
598
+ if (include(entry.rowKey)) {
459
599
  rowKeys.add(entry.rowKey);
460
600
  }
461
601
  }
@@ -479,7 +619,7 @@ class CellValueState {
479
619
  item
480
620
  }) => item), updates.map(({
481
621
  changedFieldIds
482
- }) => changedFieldIds));
622
+ }) => changedFieldIds), options);
483
623
  }
484
624
  }
485
625
 
@@ -550,4 +690,11 @@ class CellValueState {
550
690
  }
551
691
  }
552
692
  exports.CellValueState = CellValueState;
693
+ const setOrDelete = (map, key, value) => {
694
+ if (value === undefined) {
695
+ map.delete(key);
696
+ } else {
697
+ map.set(key, value);
698
+ }
699
+ };
553
700
  //# sourceMappingURL=CellValueState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_cellTypes","_utils","_fieldValidation","builtInCellTypeMap","Map","builtInCellTypes","map","ct","type","CellValueState","constructor","parent","extraCellTypes","_defineProperty2","default","_parent","_extraCellTypes","makeObservable","_pendingCells","observable","_draftCells","_cellTypeMap","computed","clearCells","action","toggleCell","commitHandler","applyBulkRawValues","applyBulkValues","revalidatePendingCells","flushDrafts","flushRow","dropRowCellState","col","allColumns","cellType","typeConfig","set","id","get","textCellType","resolveCellTypeByColumnId","columnId","getCellDisplayValue","rowKey","pending","_getPendingCell","value","draft","_getDraftCell","column","_columnMap","keyedItem","_getKeyedItem","getValue","item","undefined","getCellValidation","valid","errors","validResult","validateEditingValue","_this$_parent$collect","resolved","normalized","normalizeOnCommit","validateFieldValue","validation","validate","collection","translate","isCellEditable","editable","EditComponent","isColumnEditable","setValue","getCellActionDisabledTooltip","actionId","cell","contextMenu","context","field","configs","cut","copy","clear","config","tooltip","disabledTooltip","getActionableCells","cells","filter","getCellActionMenuAvailability","isAvailableWithoutCustomPolicy","disabled","serializeCellValue","serialize","String","changes","pendingKey","_pendingCellKey","delete","push","length","toggleValue","newValue","hasValueChanged","Object","is","_applyValue","bi","cellEditCommitted","origin","editingValue","key","tryDeserialize","rawValue","deserialize","_this$_parent$collect2","error","invalidInputMessage","rawChanges","isDeserializationError","rowUpdates","_this$_parent$collect3","result","mutation","isLocalNewRow","rowUpdate","consumed","_consumeRowDrafts","changedFieldIds","Set","add","updates","Array","from","values","updateItems","_this$_parent$collect4","rowsToSave","parseCellKey","has","cellInteraction","isRowActive","exceptRowKey","_flushRows","includeRow","invalidNewRows","_drafts","keys","_validateNewRow","rowKeys","entry","commitNewRow","prefix","startsWith","exports"],"sources":["../../../../src/state/EditableTable/CellValueState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport type { CellType, Cell, ValidationResult } from './types';\nimport type { EditableCellContextMenuAction, FiltersMap } from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport {\n builtInCellTypes,\n textCellType,\n} from '../../components/EditableTable/cellTypes';\nimport { parseCellKey } from './utils';\nimport { validateFieldValue, validResult } from '../../utils/fieldValidation';\n\nconst builtInCellTypeMap = new Map<string, CellType>(\n builtInCellTypes.map((ct) => [ct.type, ct]),\n);\n\nexport class CellValueState<T, F extends FiltersMap> {\n /** Pending invalid cell values, keyed by `${itemId}:${colId}`. */\n readonly _pendingCells = new Map<\n string,\n { value: any; errors: string[]; isDeserializationError?: boolean }\n >();\n\n /** Valid committed values not yet saved, keyed by `${itemId}:${colId}`.\n * Each row's drafts are flushed as one update when focus leaves the row. */\n readonly _draftCells = new Map<\n string,\n { rowKey: string; columnId: string; value: any }\n >();\n\n private readonly _parent: EditableTableState<T, F>;\n private readonly _extraCellTypes: Map<string, CellType>;\n\n constructor(\n parent: EditableTableState<T, F>,\n extraCellTypes: Map<string, CellType> = new Map(),\n ) {\n this._parent = parent;\n this._extraCellTypes = extraCellTypes;\n\n makeObservable(this, {\n _pendingCells: observable,\n _draftCells: observable,\n _cellTypeMap: computed,\n clearCells: action,\n toggleCell: action,\n commitHandler: action,\n applyBulkRawValues: action,\n applyBulkValues: action,\n revalidatePendingCells: action,\n flushDrafts: action,\n flushRow: action,\n dropRowCellState: action,\n });\n }\n\n // Cell-type config per column id, from the merged columns (consumer columns\n // plus the columns the wired source adds). A computed so source columns that\n // load after init still get their cell types registered, without a rebuild.\n get _cellTypeMap(): Map<string, CellType> {\n const map = new Map<string, CellType>();\n for (const col of this._parent.allColumns) {\n if (col.cellType === 'custom' && col.typeConfig) {\n map.set(col.id, { type: 'custom', ...col.typeConfig });\n } else {\n map.set(\n col.id,\n builtInCellTypeMap.get(col.cellType) ??\n this._extraCellTypes.get(col.cellType) ??\n textCellType,\n );\n }\n }\n return map;\n }\n\n resolveCellTypeByColumnId(columnId: string): CellType {\n return this._cellTypeMap.get(columnId) ?? textCellType;\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n const pending = this._getPendingCell(rowKey, columnId);\n if (pending) {\n return pending.value;\n }\n const draft = this._getDraftCell(rowKey, columnId);\n if (draft) {\n return draft.value;\n }\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n return column && keyedItem ? column.getValue(keyedItem.item) : undefined;\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n const pending = this._getPendingCell(rowKey, columnId);\n if (pending) {\n return { valid: false, errors: pending.errors };\n }\n return validResult;\n }\n\n /** Normalize like commitHandler does, then validate, so a value commit\n * would accept (`www.wix.com`) is never reported invalid before it has\n * been committed. */\n validateEditingValue(columnId: string, value: any): ValidationResult {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return validResult;\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const normalized = resolved.normalizeOnCommit\n ? resolved.normalizeOnCommit(value)\n : value;\n return validateFieldValue(\n normalized,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return false;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (resolved.editable === false || !resolved.EditComponent) {\n return false;\n }\n return this.isColumnEditable(rowKey, columnId);\n }\n\n /**\n * Whether `column.editable` permits writing this cell for this row,\n * independent of whether the cell type has an inline EditComponent. Gates\n * bulk/programmatic writes (clear, cut, paste) — narrower than\n * isCellEditable, which also requires an edit UI to exist.\n */\n isColumnEditable(rowKey: string, columnId: string): boolean {\n const column = this._parent._columnMap.get(columnId);\n if (!column?.setValue) {\n return false;\n }\n\n if (typeof column.editable === 'function') {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n return keyedItem ? column.editable(keyedItem.item) : false;\n }\n return column.editable !== false;\n }\n\n getCellActionDisabledTooltip(\n actionId: EditableCellContextMenuAction,\n cell: Cell,\n ): string | undefined {\n const column = this._parent._columnMap.get(cell.columnId);\n if (!column) {\n return undefined;\n }\n\n const contextMenu = this.resolveCellTypeByColumnId(\n cell.columnId,\n ).contextMenu;\n if (!contextMenu) {\n return undefined;\n }\n\n const context = {\n value: this.getCellDisplayValue(cell.rowKey, cell.columnId),\n field: column.field,\n rowKey: cell.rowKey,\n columnId: cell.columnId,\n };\n const configs =\n actionId === 'cut'\n ? [contextMenu.cut, contextMenu.copy, contextMenu.clear]\n : [contextMenu[actionId]];\n\n for (const config of configs) {\n const tooltip = config?.disabledTooltip(context);\n if (tooltip) {\n return tooltip;\n }\n }\n return undefined;\n }\n\n getActionableCells(\n actionId: EditableCellContextMenuAction,\n cells: Cell[],\n ): Cell[] {\n return cells.filter(\n (cell) => !this.getCellActionDisabledTooltip(actionId, cell),\n );\n }\n\n getCellActionMenuAvailability(\n actionId: EditableCellContextMenuAction,\n cells: Cell[],\n ): { disabled: boolean; disabledTooltip?: string } {\n let disabledTooltip: string | undefined;\n\n for (const cell of cells) {\n const tooltip = this.getCellActionDisabledTooltip(actionId, cell);\n disabledTooltip ??= tooltip;\n const isAvailableWithoutCustomPolicy =\n actionId === 'copy' ||\n this.isColumnEditable(cell.rowKey, cell.columnId);\n if (isAvailableWithoutCustomPolicy && !tooltip) {\n return { disabled: false };\n }\n }\n\n return { disabled: true, disabledTooltip };\n }\n\n /** Serialize a cell value to a string (for clipboard copy/cut). */\n serializeCellValue(rowKey: string, columnId: string): string {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column || !keyedItem) {\n return '';\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const value = this.getCellDisplayValue(rowKey, columnId);\n return resolved.serialize ? resolved.serialize(value) : String(value ?? '');\n }\n\n /** Clear selected cells (Delete/Backspace). Respects column.editable and contextMenu.clear.\n * Returns the cells that were actually cleared. */\n clearCells(cells: Cell[]): Cell[] {\n const changes: { rowKey: string; columnId: string; value: any }[] = [];\n\n for (const cell of cells) {\n const column = this._parent._columnMap.get(cell.columnId);\n if (!column?.setValue) {\n continue;\n }\n if (!this.isColumnEditable(cell.rowKey, cell.columnId)) {\n continue;\n }\n if (this.getCellActionDisabledTooltip('clear', cell)) {\n continue;\n }\n\n const pendingKey = this._pendingCellKey(cell.rowKey, cell.columnId);\n if (pendingKey) {\n this._pendingCells.delete(pendingKey);\n }\n changes.push({\n rowKey: cell.rowKey,\n columnId: cell.columnId,\n value: undefined,\n });\n }\n\n if (changes.length > 0) {\n this.applyBulkValues(changes);\n }\n\n return changes.map(({ rowKey, columnId }) => ({ rowKey, columnId }));\n }\n\n toggleCell(rowKey: string, columnId: string) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column?.setValue || !keyedItem) {\n return;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (!resolved.toggleValue) {\n return;\n }\n\n const value = this.getCellDisplayValue(rowKey, columnId);\n const newValue = resolved.toggleValue(value);\n const hasValueChanged = !Object.is(value, newValue);\n this._applyValue(rowKey, columnId, newValue);\n // isValid is read from the cell after the write, so it matches the value\n // that was just stored.\n this._parent.bi.cellEditCommitted(\n { rowKey, columnId },\n { origin: 'Toggle', hasValueChanged },\n );\n }\n\n /** Commit handler — used as callback for CellInteractionState. */\n commitHandler(editingValue: any, cell: Cell) {\n if (editingValue !== undefined) {\n const resolved = this.resolveCellTypeByColumnId(cell.columnId);\n const normalized = resolved.normalizeOnCommit\n ? resolved.normalizeOnCommit(editingValue)\n : editingValue;\n this._applyValue(cell.rowKey, cell.columnId, normalized);\n }\n }\n\n private _getPendingCell(\n rowKey: string,\n columnId: string,\n ): { value: any; errors: string[] } | undefined {\n const key = this._pendingCellKey(rowKey, columnId);\n return key ? this._pendingCells.get(key) : undefined;\n }\n\n private _getDraftCell(\n rowKey: string,\n columnId: string,\n ): { value: any } | undefined {\n const key = this._pendingCellKey(rowKey, columnId);\n return key ? this._draftCells.get(key) : undefined;\n }\n\n private _pendingCellKey(\n rowKey: string,\n columnId: string,\n ): string | undefined {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n const column = this._parent._columnMap.get(columnId);\n if (!keyedItem || !column) {\n return undefined;\n }\n return `${keyedItem.key}:${column.id}`;\n }\n\n /**\n * Deserialize a raw string to a typed value. Returns an error message\n * if the conversion fails\n */\n tryDeserialize(\n columnId: string,\n rawValue: string,\n ): { value: any; error?: string } {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return { value: rawValue };\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (!resolved.deserialize) {\n return { value: rawValue };\n }\n try {\n return { value: resolved.deserialize(rawValue) };\n } catch {\n const translate = this._parent.collection?.translate;\n return {\n value: rawValue,\n error:\n resolved.invalidInputMessage?.(rawValue, translate) ||\n translate?.('cairo.editableTable.cell.validation.notCompatible'),\n };\n }\n }\n\n /**\n * Deserialize and apply multiple raw string values in bulk.\n * Handles conversion failures by storing them as pending cells.\n */\n applyBulkRawValues(\n rawChanges: { rowKey: string; columnId: string; rawValue: string }[],\n ) {\n const changes: { rowKey: string; columnId: string; value: any }[] = [];\n for (const { rowKey, columnId, rawValue } of rawChanges) {\n const { value, error } = this.tryDeserialize(columnId, rawValue);\n if (error) {\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: [error],\n isDeserializationError: true,\n });\n }\n } else {\n changes.push({ rowKey, columnId, value });\n }\n }\n this.applyBulkValues(changes);\n }\n\n /**\n * Apply multiple cell values in bulk. Validates per cell, accumulates\n * changes per row, and submits all modified items in a single update.\n * Every mutation path (clear, paste, cut) funnels through here, so\n * checking isColumnEditable here — not just at the call sites — keeps\n * read-only cells protected regardless of entry point.\n */\n applyBulkValues(changes: { rowKey: string; columnId: string; value: any }[]) {\n const rowUpdates = new Map<\n string,\n { item: T; changedFieldIds: Set<string> }\n >();\n\n for (const { rowKey, columnId, value } of changes) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (\n !column?.setValue ||\n !keyedItem ||\n !this.isColumnEditable(rowKey, columnId)\n ) {\n continue;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const result = validateFieldValue(\n value,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n\n if (result.valid) {\n if (pendingKey) {\n this._pendingCells.delete(pendingKey);\n }\n if (this._parent.mutation.isLocalNewRow(rowKey)) {\n // A row not created on the server yet can't take an update —\n // buffer the value as a draft; it goes out with the row's\n // create when focus leaves the row.\n if (pendingKey) {\n this._draftCells.set(pendingKey, {\n rowKey: keyedItem.key,\n columnId: column.id,\n value,\n });\n }\n continue;\n }\n let rowUpdate = rowUpdates.get(rowKey);\n if (!rowUpdate) {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n rowUpdate = {\n item: consumed.item,\n changedFieldIds: new Set(consumed.changedFieldIds),\n };\n rowUpdates.set(rowKey, rowUpdate);\n }\n rowUpdate.item = column.setValue(rowUpdate.item, value);\n rowUpdate.changedFieldIds.add(column.id);\n } else if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: result.errors ?? [],\n });\n }\n }\n\n const updates = Array.from(rowUpdates.values());\n this._parent.mutation.updateItems(\n updates.map(({ item }) => item),\n updates.map(({ changedFieldIds }) => Array.from(changedFieldIds)),\n );\n }\n\n private _applyValue(rowKey: string, columnId: string, value: any) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column?.setValue || !keyedItem) {\n return;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const result = validateFieldValue(\n value,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n\n if (result.valid && pendingKey) {\n this._pendingCells.delete(pendingKey);\n this._draftCells.set(pendingKey, {\n rowKey: keyedItem.key,\n columnId: column.id,\n value,\n });\n } else if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: result.errors ?? [],\n });\n }\n }\n\n revalidatePendingCells() {\n const rowsToSave = new Set<string>();\n for (const [key, pending] of this._pendingCells) {\n const cell = parseCellKey(key);\n if (!cell || pending.isDeserializationError) {\n continue;\n }\n this._applyValue(cell.rowKey, cell.columnId, pending.value);\n if (!this._pendingCells.has(key)) {\n rowsToSave.add(cell.rowKey);\n }\n }\n for (const rowKey of rowsToSave) {\n if (!this._parent.cellInteraction.isRowActive(rowKey)) {\n this.flushRow(rowKey);\n }\n }\n }\n\n flushDrafts(exceptRowKey?: string) {\n this._flushRows((rowKey) => rowKey !== exceptRowKey);\n }\n\n /** Save one row's drafts now, leaving other rows' drafts buffered. */\n flushRow(rowKey: string) {\n this._flushRows((key) => key === rowKey);\n }\n\n private _flushRows(includeRow: (rowKey: string) => boolean) {\n const invalidNewRows = new Set<string>();\n for (const rowKey of this._parent.mutation._drafts.keys()) {\n if (includeRow(rowKey) && !this._validateNewRow(rowKey)) {\n invalidNewRows.add(rowKey);\n }\n }\n\n const rowKeys = new Set<string>();\n for (const entry of this._draftCells.values()) {\n if (includeRow(entry.rowKey)) {\n rowKeys.add(entry.rowKey);\n }\n }\n\n const updates: { item: T; changedFieldIds: string[] }[] = [];\n for (const rowKey of rowKeys) {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!keyedItem) {\n this.dropRowCellState(rowKey);\n } else if (this._parent.mutation.isLocalNewRow(rowKey)) {\n if (!invalidNewRows.has(rowKey)) {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n this._parent.mutation.commitNewRow(rowKey, consumed.item);\n }\n } else {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n updates.push(consumed);\n }\n }\n if (updates.length > 0) {\n this._parent.mutation.updateItems(\n updates.map(({ item }) => item),\n updates.map(({ changedFieldIds }) => changedFieldIds),\n );\n }\n }\n\n /** Validate all editable cells of a local new row, storing failures as\n * pending cells. Untouched cells validate their current display value. */\n private _validateNewRow(rowKey: string): boolean {\n let valid = true;\n for (const column of this._parent.allColumns) {\n if (!this.isColumnEditable(rowKey, column.id)) {\n continue;\n }\n // A cell already showing an error blocks the row even if re-validating\n // its value would pass. A failed paste keeps the raw string here, and a\n // cell type that only rejects on deserialize has no `validate` to fail.\n if (this._getPendingCell(rowKey, column.id)) {\n valid = false;\n continue;\n }\n const value = this.getCellDisplayValue(rowKey, column.id);\n const result = this.validateEditingValue(column.id, value);\n if (!result.valid) {\n valid = false;\n const pendingKey = this._pendingCellKey(rowKey, column.id);\n if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: result.errors ?? [],\n });\n }\n }\n }\n return valid;\n }\n\n private _consumeRowDrafts(\n rowKey: string,\n item: T,\n ): { item: T; changedFieldIds: string[] } {\n const changedFieldIds = new Set<string>();\n for (const [key, entry] of this._draftCells) {\n if (entry.rowKey !== rowKey) {\n continue;\n }\n const column = this._parent._columnMap.get(entry.columnId);\n if (column?.setValue) {\n item = column.setValue(item, entry.value);\n changedFieldIds.add(column.id);\n }\n this._draftCells.delete(key);\n }\n return { item, changedFieldIds: Array.from(changedFieldIds) };\n }\n\n /** Drop a row's buffered cell state without saving it (the row is gone).\n * Pending cells are keyed by row key, not tracked per entry, so they are\n * swept by prefix. */\n dropRowCellState(rowKey: string) {\n for (const [key, entry] of this._draftCells) {\n if (entry.rowKey === rowKey) {\n this._draftCells.delete(key);\n }\n }\n const prefix = `${rowKey}:`;\n for (const key of this._pendingCells.keys()) {\n if (key.startsWith(prefix)) {\n this._pendingCells.delete(key);\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_cellTypes","_utils","_fieldValidation","builtInCellTypeMap","Map","builtInCellTypes","map","ct","type","CellValueState","constructor","parent","extraCellTypes","_defineProperty2","default","_parent","_extraCellTypes","makeObservable","_pendingCells","observable","_draftCells","_cellTypeMap","computed","clearCells","action","toggleCell","commitHandler","applyBulkRawValues","applyBulkValues","applyPastedValues","revalidatePendingCells","flushDrafts","flushDraftsOnUnmount","flushRow","dropRowCellState","col","allColumns","cellType","typeConfig","set","id","get","textCellType","resolveCellTypeByColumnId","columnId","getCellDisplayValue","rowKey","pending","_getPendingCell","value","draft","_getDraftCell","column","_columnMap","keyedItem","_getKeyedItem","getValue","item","undefined","getCellValidation","valid","errors","validResult","validateEditingValue","_this$_parent$collect","resolved","normalized","normalizeOnCommit","validateFieldValue","validation","validate","collection","translate","isCellEditable","editable","EditComponent","isColumnEditable","setValue","getCellActionDisabledTooltip","actionId","cell","contextMenu","context","field","configs","cut","copy","clear","config","tooltip","disabledTooltip","getActionableCells","cells","filter","getCellActionMenuAvailability","isAvailableWithoutCustomPolicy","disabled","serializeCellValue","serialize","String","changes","pendingKey","_pendingCellKey","delete","push","length","toggleValue","newValue","hasValueChanged","Object","is","_applyValue","bi","cellEditCommitted","origin","editingValue","key","tryDeserialize","rawValue","deserialize","_this$_parent$collect2","error","invalidInputMessage","rawChanges","_deserializeRawValues","isDeserializationError","options","rowUpdates","_this$_parent$collect3","result","mutation","isLocalNewRow","rowUpdate","consumed","_consumeRowDrafts","changedFieldIds","Set","add","updates","Array","from","values","updateItems","successToast","updatesAreBatched","pastedCells","rowKeys","affectedCellKeys","has","beforePaste","_snapshotUnsavedCells","afterPaste","newRowKeys","_heldNewRows","toastOpen","endUndoWindow","holds","undo","onUndo","wasOpen","restoredDraftRows","pasted","setOrDelete","_flushRowsWithoutFocus","onKept","keys","_this$_parent$cellInt","focusedRowKey","cellInteraction","focusedCell","_flushRows","_this$_parent$collect4","rowsToSave","parseCellKey","isRowActive","exceptRowKey","includeRow","include","invalidNewRows","_drafts","_validateNewRow","entry","commitNewRow","prefix","startsWith","exports"],"sources":["../../../../src/state/EditableTable/CellValueState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport type { CellType, Cell, ValidationResult } from './types';\nimport type { EditableCellContextMenuAction, FiltersMap } from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport type { UpdateOptions } from './MutationState';\nimport {\n builtInCellTypes,\n textCellType,\n} from '../../components/EditableTable/cellTypes';\nimport { parseCellKey } from './utils';\nimport { validateFieldValue, validResult } from '../../utils/fieldValidation';\n\nconst builtInCellTypeMap = new Map<string, CellType>(\n builtInCellTypes.map((ct) => [ct.type, ct]),\n);\n\nexport class CellValueState<T, F extends FiltersMap> {\n /** Pending invalid cell values, keyed by `${itemId}:${colId}`. */\n readonly _pendingCells = new Map<\n string,\n { value: any; errors: string[]; isDeserializationError?: boolean }\n >();\n\n /** Valid committed values not yet saved, keyed by `${itemId}:${colId}`.\n * Each row's drafts are flushed as one update when focus leaves the row. */\n readonly _draftCells = new Map<\n string,\n { rowKey: string; columnId: string; value: any }\n >();\n\n /** Local new rows not to create yet, with how many open paste toasts hold\n * each. See `applyPastedValues`. */\n private readonly _heldNewRows = new Map<string, number>();\n\n private readonly _parent: EditableTableState<T, F>;\n private readonly _extraCellTypes: Map<string, CellType>;\n\n constructor(\n parent: EditableTableState<T, F>,\n extraCellTypes: Map<string, CellType> = new Map(),\n ) {\n this._parent = parent;\n this._extraCellTypes = extraCellTypes;\n\n makeObservable(this, {\n _pendingCells: observable,\n _draftCells: observable,\n _cellTypeMap: computed,\n clearCells: action,\n toggleCell: action,\n commitHandler: action,\n applyBulkRawValues: action,\n applyBulkValues: action,\n applyPastedValues: action,\n revalidatePendingCells: action,\n flushDrafts: action,\n flushDraftsOnUnmount: action,\n flushRow: action,\n dropRowCellState: action,\n });\n }\n\n // Cell-type config per column id, from the merged columns (consumer columns\n // plus the columns the wired source adds). A computed so source columns that\n // load after init still get their cell types registered, without a rebuild.\n get _cellTypeMap(): Map<string, CellType> {\n const map = new Map<string, CellType>();\n for (const col of this._parent.allColumns) {\n if (col.cellType === 'custom' && col.typeConfig) {\n map.set(col.id, { type: 'custom', ...col.typeConfig });\n } else {\n map.set(\n col.id,\n builtInCellTypeMap.get(col.cellType) ??\n this._extraCellTypes.get(col.cellType) ??\n textCellType,\n );\n }\n }\n return map;\n }\n\n resolveCellTypeByColumnId(columnId: string): CellType {\n return this._cellTypeMap.get(columnId) ?? textCellType;\n }\n\n getCellDisplayValue(rowKey: string, columnId: string): any {\n const pending = this._getPendingCell(rowKey, columnId);\n if (pending) {\n return pending.value;\n }\n const draft = this._getDraftCell(rowKey, columnId);\n if (draft) {\n return draft.value;\n }\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n return column && keyedItem ? column.getValue(keyedItem.item) : undefined;\n }\n\n getCellValidation(rowKey: string, columnId: string): ValidationResult {\n const pending = this._getPendingCell(rowKey, columnId);\n if (pending) {\n return { valid: false, errors: pending.errors };\n }\n return validResult;\n }\n\n /** Normalize like commitHandler does, then validate, so a value commit\n * would accept (`www.wix.com`) is never reported invalid before it has\n * been committed. */\n validateEditingValue(columnId: string, value: any): ValidationResult {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return validResult;\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const normalized = resolved.normalizeOnCommit\n ? resolved.normalizeOnCommit(value)\n : value;\n return validateFieldValue(\n normalized,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n }\n\n isCellEditable(rowKey: string, columnId: string): boolean {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return false;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (resolved.editable === false || !resolved.EditComponent) {\n return false;\n }\n return this.isColumnEditable(rowKey, columnId);\n }\n\n /**\n * Whether `column.editable` permits writing this cell for this row,\n * independent of whether the cell type has an inline EditComponent. Gates\n * bulk/programmatic writes (clear, cut, paste) — narrower than\n * isCellEditable, which also requires an edit UI to exist.\n */\n isColumnEditable(rowKey: string, columnId: string): boolean {\n const column = this._parent._columnMap.get(columnId);\n if (!column?.setValue) {\n return false;\n }\n\n if (typeof column.editable === 'function') {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n return keyedItem ? column.editable(keyedItem.item) : false;\n }\n return column.editable !== false;\n }\n\n getCellActionDisabledTooltip(\n actionId: EditableCellContextMenuAction,\n cell: Cell,\n ): string | undefined {\n const column = this._parent._columnMap.get(cell.columnId);\n if (!column) {\n return undefined;\n }\n\n const contextMenu = this.resolveCellTypeByColumnId(\n cell.columnId,\n ).contextMenu;\n if (!contextMenu) {\n return undefined;\n }\n\n const context = {\n value: this.getCellDisplayValue(cell.rowKey, cell.columnId),\n field: column.field,\n rowKey: cell.rowKey,\n columnId: cell.columnId,\n };\n const configs =\n actionId === 'cut'\n ? [contextMenu.cut, contextMenu.copy, contextMenu.clear]\n : [contextMenu[actionId]];\n\n for (const config of configs) {\n const tooltip = config?.disabledTooltip(context);\n if (tooltip) {\n return tooltip;\n }\n }\n return undefined;\n }\n\n getActionableCells(\n actionId: EditableCellContextMenuAction,\n cells: Cell[],\n ): Cell[] {\n return cells.filter(\n (cell) => !this.getCellActionDisabledTooltip(actionId, cell),\n );\n }\n\n getCellActionMenuAvailability(\n actionId: EditableCellContextMenuAction,\n cells: Cell[],\n ): { disabled: boolean; disabledTooltip?: string } {\n let disabledTooltip: string | undefined;\n\n for (const cell of cells) {\n const tooltip = this.getCellActionDisabledTooltip(actionId, cell);\n disabledTooltip ??= tooltip;\n const isAvailableWithoutCustomPolicy =\n actionId === 'copy' ||\n this.isColumnEditable(cell.rowKey, cell.columnId);\n if (isAvailableWithoutCustomPolicy && !tooltip) {\n return { disabled: false };\n }\n }\n\n return { disabled: true, disabledTooltip };\n }\n\n /** Serialize a cell value to a string (for clipboard copy/cut). */\n serializeCellValue(rowKey: string, columnId: string): string {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column || !keyedItem) {\n return '';\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const value = this.getCellDisplayValue(rowKey, columnId);\n return resolved.serialize ? resolved.serialize(value) : String(value ?? '');\n }\n\n /** Clear selected cells (Delete/Backspace). Respects column.editable and contextMenu.clear.\n * Returns the cells that were actually cleared. */\n clearCells(cells: Cell[]): Cell[] {\n const changes: { rowKey: string; columnId: string; value: any }[] = [];\n\n for (const cell of cells) {\n const column = this._parent._columnMap.get(cell.columnId);\n if (!column?.setValue) {\n continue;\n }\n if (!this.isColumnEditable(cell.rowKey, cell.columnId)) {\n continue;\n }\n if (this.getCellActionDisabledTooltip('clear', cell)) {\n continue;\n }\n\n const pendingKey = this._pendingCellKey(cell.rowKey, cell.columnId);\n if (pendingKey) {\n this._pendingCells.delete(pendingKey);\n }\n changes.push({\n rowKey: cell.rowKey,\n columnId: cell.columnId,\n value: undefined,\n });\n }\n\n if (changes.length > 0) {\n this.applyBulkValues(changes);\n }\n\n return changes.map(({ rowKey, columnId }) => ({ rowKey, columnId }));\n }\n\n toggleCell(rowKey: string, columnId: string) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column?.setValue || !keyedItem) {\n return;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (!resolved.toggleValue) {\n return;\n }\n\n const value = this.getCellDisplayValue(rowKey, columnId);\n const newValue = resolved.toggleValue(value);\n const hasValueChanged = !Object.is(value, newValue);\n this._applyValue(rowKey, columnId, newValue);\n // isValid is read from the cell after the write, so it matches the value\n // that was just stored.\n this._parent.bi.cellEditCommitted(\n { rowKey, columnId },\n { origin: 'Toggle', hasValueChanged },\n );\n }\n\n /** Commit handler — used as callback for CellInteractionState. */\n commitHandler(editingValue: any, cell: Cell) {\n if (editingValue !== undefined) {\n const resolved = this.resolveCellTypeByColumnId(cell.columnId);\n const normalized = resolved.normalizeOnCommit\n ? resolved.normalizeOnCommit(editingValue)\n : editingValue;\n this._applyValue(cell.rowKey, cell.columnId, normalized);\n }\n }\n\n private _getPendingCell(\n rowKey: string,\n columnId: string,\n ): { value: any; errors: string[] } | undefined {\n const key = this._pendingCellKey(rowKey, columnId);\n return key ? this._pendingCells.get(key) : undefined;\n }\n\n private _getDraftCell(\n rowKey: string,\n columnId: string,\n ): { value: any } | undefined {\n const key = this._pendingCellKey(rowKey, columnId);\n return key ? this._draftCells.get(key) : undefined;\n }\n\n private _pendingCellKey(\n rowKey: string,\n columnId: string,\n ): string | undefined {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n const column = this._parent._columnMap.get(columnId);\n if (!keyedItem || !column) {\n return undefined;\n }\n return `${keyedItem.key}:${column.id}`;\n }\n\n /**\n * Deserialize a raw string to a typed value. Returns an error message\n * if the conversion fails\n */\n tryDeserialize(\n columnId: string,\n rawValue: string,\n ): { value: any; error?: string } {\n const column = this._parent._columnMap.get(columnId);\n if (!column) {\n return { value: rawValue };\n }\n const resolved = this.resolveCellTypeByColumnId(column.id);\n if (!resolved.deserialize) {\n return { value: rawValue };\n }\n try {\n return { value: resolved.deserialize(rawValue) };\n } catch {\n const translate = this._parent.collection?.translate;\n return {\n value: rawValue,\n error:\n resolved.invalidInputMessage?.(rawValue, translate) ||\n translate?.('cairo.editableTable.cell.validation.notCompatible'),\n };\n }\n }\n\n /**\n * Deserialize and apply multiple raw string values in bulk.\n * Handles conversion failures by storing them as pending cells.\n */\n applyBulkRawValues(rawChanges: RawCellChange[]) {\n this.applyBulkValues(this._deserializeRawValues(rawChanges));\n }\n\n /** Values that fail are stored as pending cells with their error and left\n * out of the result. */\n private _deserializeRawValues(rawChanges: RawCellChange[]) {\n const changes: { rowKey: string; columnId: string; value: any }[] = [];\n for (const { rowKey, columnId, rawValue } of rawChanges) {\n const { value, error } = this.tryDeserialize(columnId, rawValue);\n if (error) {\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: [error],\n isDeserializationError: true,\n });\n }\n } else {\n changes.push({ rowKey, columnId, value });\n }\n }\n return changes;\n }\n\n /**\n * Apply multiple cell values in bulk. Validates per cell, accumulates\n * changes per row, and submits all modified items in a single update.\n * Every mutation path (clear, paste, cut) funnels through here, so\n * checking isColumnEditable here — not just at the call sites — keeps\n * read-only cells protected regardless of entry point.\n */\n applyBulkValues(\n changes: { rowKey: string; columnId: string; value: any }[],\n options?: UpdateOptions,\n ) {\n const rowUpdates = new Map<\n string,\n { item: T; changedFieldIds: Set<string> }\n >();\n\n for (const { rowKey, columnId, value } of changes) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (\n !column?.setValue ||\n !keyedItem ||\n !this.isColumnEditable(rowKey, columnId)\n ) {\n continue;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const result = validateFieldValue(\n value,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n\n if (result.valid) {\n if (pendingKey) {\n this._pendingCells.delete(pendingKey);\n }\n if (this._parent.mutation.isLocalNewRow(rowKey)) {\n // A row not created on the server yet can't take an update —\n // buffer the value as a draft; it goes out with the row's\n // create when focus leaves the row.\n if (pendingKey) {\n this._draftCells.set(pendingKey, {\n rowKey: keyedItem.key,\n columnId: column.id,\n value,\n });\n }\n continue;\n }\n let rowUpdate = rowUpdates.get(rowKey);\n if (!rowUpdate) {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n rowUpdate = {\n item: consumed.item,\n changedFieldIds: new Set(consumed.changedFieldIds),\n };\n rowUpdates.set(rowKey, rowUpdate);\n }\n rowUpdate.item = column.setValue(rowUpdate.item, value);\n rowUpdate.changedFieldIds.add(column.id);\n } else if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: result.errors ?? [],\n });\n }\n }\n\n const updates = Array.from(rowUpdates.values());\n this._parent.mutation.updateItems(\n updates.map(({ item }) => item),\n updates.map(({ changedFieldIds }) => Array.from(changedFieldIds)),\n options,\n );\n }\n\n /**\n * Applies pasted values and shows `successToast` with Undo. The server call\n * waits until the toast closes or times out. With `batchWait` the toast has\n * no Undo (see `MutationState.updatesAreBatched`).\n *\n * Undo rolls back the saved rows, and puts back the unsaved state (invalid\n * values and drafts) of the pasted cells and of the drafts in their rows,\n * which the paste saves along with it. A cell changed again after the paste\n * keeps its newer value.\n *\n * Local new rows the paste touched are not created while the toast is open.\n * Otherwise the click on Undo, which takes focus out of the table, would\n * create them with the pasted values first.\n */\n applyPastedValues(\n changes: { rowKey: string; columnId: string; value: any }[],\n rawChanges: RawCellChange[],\n successToast: string,\n ) {\n if (this._parent.mutation.updatesAreBatched) {\n this.applyBulkValues(\n [...changes, ...this._deserializeRawValues(rawChanges)],\n { successToast },\n );\n return;\n }\n\n const pastedCells = [...changes, ...rawChanges];\n const rowKeys = new Set(pastedCells.map(({ rowKey }) => rowKey));\n const affectedCellKeys = new Set<string>();\n for (const { rowKey, columnId } of pastedCells) {\n const key = this._pendingCellKey(rowKey, columnId);\n if (key) {\n affectedCellKeys.add(key);\n }\n }\n for (const [key, draft] of this._draftCells) {\n if (rowKeys.has(draft.rowKey)) {\n affectedCellKeys.add(key);\n }\n }\n const beforePaste = this._snapshotUnsavedCells(affectedCellKeys);\n // Replaced right after the paste below. `onUndo` reads it, and core calls\n // `onUndo` only on a click on the toast, after that.\n let afterPaste = beforePaste;\n\n const newRowKeys = new Set(\n [...rowKeys].filter((rowKey) =>\n this._parent.mutation.isLocalNewRow(rowKey),\n ),\n );\n for (const rowKey of newRowKeys) {\n this._heldNewRows.set(rowKey, (this._heldNewRows.get(rowKey) ?? 0) + 1);\n }\n let toastOpen = true;\n // Retry calls `onKept` again; only the first call counts.\n const endUndoWindow = () => {\n if (!toastOpen) {\n return false;\n }\n toastOpen = false;\n for (const rowKey of newRowKeys) {\n const holds = (this._heldNewRows.get(rowKey) ?? 1) - 1;\n if (holds > 0) {\n this._heldNewRows.set(rowKey, holds);\n } else {\n this._heldNewRows.delete(rowKey);\n }\n }\n return true;\n };\n\n this.applyBulkValues(\n // After the snapshot: this writes invalid values into `_pendingCells`.\n [...changes, ...this._deserializeRawValues(rawChanges)],\n {\n successToast,\n undo: {\n onUndo: action(() => {\n const wasOpen = endUndoWindow();\n if (!wasOpen) {\n return;\n }\n const restoredDraftRows = new Set<string>();\n for (const key of affectedCellKeys) {\n const pasted = afterPaste.get(key);\n if (\n this._pendingCells.get(key) !== pasted?.pending ||\n this._draftCells.get(key) !== pasted?.draft\n ) {\n continue;\n }\n const { pending, draft } = beforePaste.get(key) ?? {};\n setOrDelete(this._pendingCells, key, pending);\n setOrDelete(this._draftCells, key, draft);\n if (draft) {\n restoredDraftRows.add(draft.rowKey);\n }\n }\n // The click on Undo already flushed the table, before these drafts\n // were back. No toast: nothing should confirm the Undo.\n this._flushRowsWithoutFocus(restoredDraftRows, {\n successToast: null,\n });\n }),\n onKept: action(() => {\n const wasOpen = endUndoWindow();\n if (!wasOpen) {\n return;\n }\n this._flushRowsWithoutFocus(newRowKeys);\n }),\n },\n },\n );\n afterPaste = this._snapshotUnsavedCells(affectedCellKeys);\n }\n\n private _snapshotUnsavedCells(keys: Set<string>): UnsavedCellsSnapshot {\n return new Map(\n [...keys].map((key) => [\n key,\n {\n pending: this._pendingCells.get(key),\n draft: this._draftCells.get(key),\n },\n ]),\n );\n }\n\n private _flushRowsWithoutFocus(\n rowKeys: Set<string>,\n options?: UpdateOptions,\n ) {\n const focusedRowKey = this._parent.cellInteraction.focusedCell?.rowKey;\n this._flushRows(\n (rowKey) => rowKeys.has(rowKey) && rowKey !== focusedRowKey,\n options,\n );\n }\n\n private _applyValue(rowKey: string, columnId: string, value: any) {\n const column = this._parent._columnMap.get(columnId);\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!column?.setValue || !keyedItem) {\n return;\n }\n\n const resolved = this.resolveCellTypeByColumnId(column.id);\n const result = validateFieldValue(\n value,\n column.validation,\n resolved.validate,\n this._parent.collection?.translate,\n );\n const pendingKey = this._pendingCellKey(rowKey, columnId);\n\n if (result.valid && pendingKey) {\n this._pendingCells.delete(pendingKey);\n this._draftCells.set(pendingKey, {\n rowKey: keyedItem.key,\n columnId: column.id,\n value,\n });\n } else if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: result.errors ?? [],\n });\n }\n }\n\n revalidatePendingCells() {\n const rowsToSave = new Set<string>();\n for (const [key, pending] of this._pendingCells) {\n const cell = parseCellKey(key);\n if (!cell || pending.isDeserializationError) {\n continue;\n }\n this._applyValue(cell.rowKey, cell.columnId, pending.value);\n if (!this._pendingCells.has(key)) {\n rowsToSave.add(cell.rowKey);\n }\n }\n for (const rowKey of rowsToSave) {\n if (!this._parent.cellInteraction.isRowActive(rowKey)) {\n this.flushRow(rowKey);\n }\n }\n }\n\n flushDrafts(exceptRowKey?: string) {\n this._flushRows((rowKey) => rowKey !== exceptRowKey);\n }\n\n /** Like `flushDrafts()`, but also saves new rows held by an open paste\n * toast: focus can stay on a held row on unmount, and the toast doesn't\n * create a focused row. */\n flushDraftsOnUnmount() {\n this._heldNewRows.clear();\n this.flushDrafts();\n }\n\n /** Save one row's drafts now, leaving other rows' drafts buffered. */\n flushRow(rowKey: string) {\n this._flushRows((key) => key === rowKey);\n }\n\n private _flushRows(\n includeRow: (rowKey: string) => boolean,\n options?: UpdateOptions,\n ) {\n const include = (rowKey: string) =>\n includeRow(rowKey) && !this._heldNewRows.has(rowKey);\n\n const invalidNewRows = new Set<string>();\n for (const rowKey of this._parent.mutation._drafts.keys()) {\n if (include(rowKey) && !this._validateNewRow(rowKey)) {\n invalidNewRows.add(rowKey);\n }\n }\n\n const rowKeys = new Set<string>();\n for (const entry of this._draftCells.values()) {\n if (include(entry.rowKey)) {\n rowKeys.add(entry.rowKey);\n }\n }\n\n const updates: { item: T; changedFieldIds: string[] }[] = [];\n for (const rowKey of rowKeys) {\n const keyedItem = this._parent._getKeyedItem(rowKey);\n if (!keyedItem) {\n this.dropRowCellState(rowKey);\n } else if (this._parent.mutation.isLocalNewRow(rowKey)) {\n if (!invalidNewRows.has(rowKey)) {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n this._parent.mutation.commitNewRow(rowKey, consumed.item);\n }\n } else {\n const consumed = this._consumeRowDrafts(rowKey, keyedItem.item);\n updates.push(consumed);\n }\n }\n if (updates.length > 0) {\n this._parent.mutation.updateItems(\n updates.map(({ item }) => item),\n updates.map(({ changedFieldIds }) => changedFieldIds),\n options,\n );\n }\n }\n\n /** Validate all editable cells of a local new row, storing failures as\n * pending cells. Untouched cells validate their current display value. */\n private _validateNewRow(rowKey: string): boolean {\n let valid = true;\n for (const column of this._parent.allColumns) {\n if (!this.isColumnEditable(rowKey, column.id)) {\n continue;\n }\n // A cell already showing an error blocks the row even if re-validating\n // its value would pass. A failed paste keeps the raw string here, and a\n // cell type that only rejects on deserialize has no `validate` to fail.\n if (this._getPendingCell(rowKey, column.id)) {\n valid = false;\n continue;\n }\n const value = this.getCellDisplayValue(rowKey, column.id);\n const result = this.validateEditingValue(column.id, value);\n if (!result.valid) {\n valid = false;\n const pendingKey = this._pendingCellKey(rowKey, column.id);\n if (pendingKey) {\n this._pendingCells.set(pendingKey, {\n value,\n errors: result.errors ?? [],\n });\n }\n }\n }\n return valid;\n }\n\n private _consumeRowDrafts(\n rowKey: string,\n item: T,\n ): { item: T; changedFieldIds: string[] } {\n const changedFieldIds = new Set<string>();\n for (const [key, entry] of this._draftCells) {\n if (entry.rowKey !== rowKey) {\n continue;\n }\n const column = this._parent._columnMap.get(entry.columnId);\n if (column?.setValue) {\n item = column.setValue(item, entry.value);\n changedFieldIds.add(column.id);\n }\n this._draftCells.delete(key);\n }\n return { item, changedFieldIds: Array.from(changedFieldIds) };\n }\n\n /** Drop a row's buffered cell state without saving it (the row is gone).\n * Pending cells are keyed by row key, not tracked per entry, so they are\n * swept by prefix. */\n dropRowCellState(rowKey: string) {\n for (const [key, entry] of this._draftCells) {\n if (entry.rowKey === rowKey) {\n this._draftCells.delete(key);\n }\n }\n const prefix = `${rowKey}:`;\n for (const key of this._pendingCells.keys()) {\n if (key.startsWith(prefix)) {\n this._pendingCells.delete(key);\n }\n }\n }\n}\n\ntype RawCellChange = { rowKey: string; columnId: string; rawValue: string };\n\ntype UnsavedCellsSnapshot = Map<\n string,\n {\n pending?: { value: any; errors: string[] };\n draft?: { rowKey: string; columnId: string; value: any };\n }\n>;\n\nconst setOrDelete = <V>(map: Map<string, V>, key: string, value?: V) => {\n if (value === undefined) {\n map.delete(key);\n } else {\n map.set(key, value);\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -72,13 +72,21 @@ class ClipboardState {
72
72
  }
73
73
  const isInternal = this._copiedDataString !== undefined && this._copiedDataString === rawData;
74
74
  const {
75
+ richChanges,
76
+ rawChanges,
75
77
  keptSourceKeys,
76
78
  pasted
77
- } = this._pasteGrid(rawData, targetPos, isInternal, cellValue);
79
+ } = this._pasteGrid(rawData, targetPos, isInternal);
80
+
81
+ // Clearing the cut sources goes out in the same update as the paste, so
82
+ // one Undo restores both sides.
78
83
  if (this.isCut && isInternal) {
79
- this._clearCutSources(keptSourceKeys, cellValue);
84
+ richChanges.push(...this._cutSourceClears(keptSourceKeys));
80
85
  }
81
86
  if (pasted.length > 0) {
87
+ cellValue.applyPastedValues(richChanges, rawChanges, this._parent.collection.translate('cairo.editableTable.paste.success.toast', {
88
+ count: pasted.length
89
+ }));
82
90
  this._parent.bi.clipboardAction({
83
91
  actionName: 'paste',
84
92
  origin,
@@ -88,7 +96,10 @@ class ClipboardState {
88
96
  }
89
97
  this.clear();
90
98
  }
91
- _pasteGrid(rawData, targetPos, useRichValues, cellValue) {
99
+ _pasteGrid(rawData, targetPos, useRichValues) {
100
+ const {
101
+ cellValue
102
+ } = this._parent;
92
103
  const keptSourceKeys = new Set();
93
104
  const pasted = [];
94
105
  const richChanges = [];
@@ -128,13 +139,9 @@ class ClipboardState {
128
139
  }
129
140
  }
130
141
  }
131
- if (richChanges.length > 0) {
132
- cellValue.applyBulkValues(richChanges);
133
- }
134
- if (rawChanges.length > 0) {
135
- cellValue.applyBulkRawValues(rawChanges);
136
- }
137
142
  return {
143
+ richChanges,
144
+ rawChanges,
138
145
  keptSourceKeys,
139
146
  pasted
140
147
  };
@@ -150,18 +157,27 @@ class ClipboardState {
150
157
  }
151
158
  return cellValue.resolveCellTypeByColumnId(source.columnId).type === cellValue.resolveCellTypeByColumnId(destColumnId).type;
152
159
  }
153
- _clearCutSources(keptSourceKeys, cellValue) {
154
- const cells = [];
160
+
161
+ // The clear rule is checked again here because it can depend on row values
162
+ // that changed since the cut.
163
+ _cutSourceClears(keptSourceKeys) {
164
+ const {
165
+ cellValue
166
+ } = this._parent;
167
+ const clears = [];
155
168
  for (const key of this.copiedCells) {
156
169
  if (keptSourceKeys.has(key)) {
157
170
  continue;
158
171
  }
159
172
  const pos = (0, _utils.parseCellKey)(key);
160
- if (pos) {
161
- cells.push(pos);
173
+ if (pos && !cellValue.getCellActionDisabledTooltip('clear', pos)) {
174
+ clears.push({
175
+ ...pos,
176
+ value: undefined
177
+ });
162
178
  }
163
179
  }
164
- cellValue.clearCells(cells);
180
+ return clears;
165
181
  }
166
182
  clear() {
167
183
  this.copiedCells.clear();