@wix/patterns 1.487.0 → 1.489.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 (594) 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 +3 -3
  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/CustomColumnsPanel/CustomColumnsPanel.uni.driver.js +3 -0
  28. package/dist/cjs/components/CustomColumnsPanel/CustomColumnsPanel.uni.driver.js.map +1 -1
  29. package/dist/cjs/components/CustomColumnsPanel/FieldIndications.js +11 -10
  30. package/dist/cjs/components/CustomColumnsPanel/FieldIndications.js.map +1 -1
  31. package/dist/cjs/components/CustomFieldModal/CustomFieldForm.js +37 -35
  32. package/dist/cjs/components/CustomFieldModal/CustomFieldForm.js.map +1 -1
  33. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.js +28 -19
  34. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.js.map +1 -1
  35. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +3 -3
  36. package/dist/cjs/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js.map +1 -1
  37. package/dist/cjs/components/DragHandle/DragHandle.st.css.js +2 -2
  38. package/dist/cjs/components/DragHandle/DragHandle.st.css.js.map +1 -1
  39. package/dist/cjs/components/EditableTable/EditableCell.st.css.js +3 -3
  40. package/dist/cjs/components/EditableTable/EditableCell.st.css.js.map +1 -1
  41. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  42. package/dist/cjs/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  43. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  44. package/dist/cjs/components/EditableTable/cellTypes/CellViewLayout.st.css.js.map +1 -1
  45. package/dist/cjs/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +3 -3
  46. package/dist/cjs/components/EditableTable/cellTypes/JsonInputEdit.st.css.js.map +1 -1
  47. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js +3 -3
  48. package/dist/cjs/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  49. package/dist/cjs/components/EditableTable/cellTypes/address/index.js +1 -0
  50. package/dist/cjs/components/EditableTable/cellTypes/address/index.js.map +1 -1
  51. package/dist/cjs/components/EditableTable/cellTypes/array/index.js +13 -2
  52. package/dist/cjs/components/EditableTable/cellTypes/array/index.js.map +1 -1
  53. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js +3 -3
  54. package/dist/cjs/components/EditableTable/cellTypes/boolean/Edit.st.css.js.map +1 -1
  55. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js +3 -3
  56. package/dist/cjs/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  57. package/dist/cjs/components/EditableTable/cellTypes/boolean/index.js +2 -0
  58. package/dist/cjs/components/EditableTable/cellTypes/boolean/index.js.map +1 -1
  59. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  60. package/dist/cjs/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  61. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js +3 -3
  62. package/dist/cjs/components/EditableTable/cellTypes/date/Edit.st.css.js.map +1 -1
  63. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  64. package/dist/cjs/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  65. package/dist/cjs/components/EditableTable/cellTypes/date/index.js +1 -0
  66. package/dist/cjs/components/EditableTable/cellTypes/date/index.js.map +1 -1
  67. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js +8 -8
  68. package/dist/cjs/components/EditableTable/cellTypes/datetime/Edit.st.css.js.map +1 -1
  69. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js +7 -7
  70. package/dist/cjs/components/EditableTable/cellTypes/datetime/View.st.css.js.map +1 -1
  71. package/dist/cjs/components/EditableTable/cellTypes/datetime/index.js +1 -0
  72. package/dist/cjs/components/EditableTable/cellTypes/datetime/index.js.map +1 -1
  73. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js +3 -3
  74. package/dist/cjs/components/EditableTable/cellTypes/email/Edit.st.css.js.map +1 -1
  75. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  76. package/dist/cjs/components/EditableTable/cellTypes/email/View.st.css.js.map +1 -1
  77. package/dist/cjs/components/EditableTable/cellTypes/multiReference/index.js +5 -7
  78. package/dist/cjs/components/EditableTable/cellTypes/multiReference/index.js.map +1 -1
  79. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js +3 -3
  80. package/dist/cjs/components/EditableTable/cellTypes/number/Edit.st.css.js.map +1 -1
  81. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js +3 -3
  82. package/dist/cjs/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  83. package/dist/cjs/components/EditableTable/cellTypes/number/index.js +1 -0
  84. package/dist/cjs/components/EditableTable/cellTypes/number/index.js.map +1 -1
  85. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  86. package/dist/cjs/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  87. package/dist/cjs/components/EditableTable/cellTypes/object/index.js +13 -2
  88. package/dist/cjs/components/EditableTable/cellTypes/object/index.js.map +1 -1
  89. package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +6 -6
  90. package/dist/cjs/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js.map +1 -1
  91. package/dist/cjs/components/EditableTable/cellTypes/reference/index.js +5 -7
  92. package/dist/cjs/components/EditableTable/cellTypes/reference/index.js.map +1 -1
  93. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js +3 -3
  94. package/dist/cjs/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  95. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js +4 -4
  96. package/dist/cjs/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  97. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  98. package/dist/cjs/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  99. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js +4 -4
  100. package/dist/cjs/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  101. package/dist/cjs/components/EditableTable/cellTypes/time/index.js +1 -0
  102. package/dist/cjs/components/EditableTable/cellTypes/time/index.js.map +1 -1
  103. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js +3 -3
  104. package/dist/cjs/components/EditableTable/cellTypes/url/Edit.st.css.js.map +1 -1
  105. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js +5 -5
  106. package/dist/cjs/components/EditableTable/cellTypes/url/View.st.css.js.map +1 -1
  107. package/dist/cjs/components/EditableTable/index.js +5 -2
  108. package/dist/cjs/components/EditableTable/index.js.map +1 -1
  109. package/dist/cjs/components/EditableTable/types.js.map +1 -1
  110. package/dist/cjs/components/EditableTable/useClearFocusOnBlur.js +12 -4
  111. package/dist/cjs/components/EditableTable/useClearFocusOnBlur.js.map +1 -1
  112. package/dist/cjs/components/EditableTable/useKeyboardNavigation.js +7 -0
  113. package/dist/cjs/components/EditableTable/useKeyboardNavigation.js.map +1 -1
  114. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  115. package/dist/cjs/components/EmptyState/EmptyStateBase.st.css.js.map +1 -1
  116. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  117. package/dist/cjs/components/EntityPage/EntityPagePlain.st.css.js.map +1 -1
  118. package/dist/cjs/components/EntityPageFields/EntityPageField.js +21 -14
  119. package/dist/cjs/components/EntityPageFields/EntityPageField.js.map +1 -1
  120. package/dist/cjs/components/EntityPageFields/EntityPageField.st.css +10 -0
  121. package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js +23 -0
  122. package/dist/cjs/components/EntityPageFields/EntityPageField.st.css.js.map +1 -0
  123. package/dist/cjs/components/Fade/Fade.st.css.js +2 -2
  124. package/dist/cjs/components/Fade/Fade.st.css.js.map +1 -1
  125. package/dist/cjs/components/FieldActions/FieldActions.js +28 -11
  126. package/dist/cjs/components/FieldActions/FieldActions.js.map +1 -1
  127. package/dist/cjs/components/Grid/Grid.uni.driver.js +6 -0
  128. package/dist/cjs/components/Grid/Grid.uni.driver.js.map +1 -1
  129. package/dist/cjs/components/Heading/Heading.st.css.js +2 -2
  130. package/dist/cjs/components/Heading/Heading.st.css.js.map +1 -1
  131. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js +3 -3
  132. package/dist/cjs/components/ImportButton/ImportStepUpload.st.css.js.map +1 -1
  133. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js +2 -2
  134. package/dist/cjs/components/InputOverflow/InputOverflow.st.css.js.map +1 -1
  135. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js +3 -3
  136. package/dist/cjs/components/LoadingRow/LoadingRow.st.css.js.map +1 -1
  137. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  138. package/dist/cjs/components/MaxHeightText/MaxHeightText.st.css.js.map +1 -1
  139. package/dist/cjs/components/MaxLines/MaxLines.st.css.js +2 -2
  140. package/dist/cjs/components/MaxLines/MaxLines.st.css.js.map +1 -1
  141. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +5 -5
  142. package/dist/cjs/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  143. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  144. package/dist/cjs/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js.map +1 -1
  145. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js +5 -5
  146. package/dist/cjs/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  147. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  148. package/dist/cjs/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js.map +1 -1
  149. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  150. package/dist/cjs/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js.map +1 -1
  151. package/dist/cjs/components/PickerContent/PickerContent.st.css.js +2 -2
  152. package/dist/cjs/components/PickerContent/PickerContent.st.css.js.map +1 -1
  153. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js +4 -4
  154. package/dist/cjs/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  155. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  156. package/dist/cjs/components/PickerTableListItem/PickerTableListItem.st.css.js.map +1 -1
  157. package/dist/cjs/components/SchemaSource/schemaFieldManagement.js +1 -0
  158. package/dist/cjs/components/SchemaSource/schemaFieldManagement.js.map +1 -1
  159. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  160. package/dist/cjs/components/ScrollableContent/ScrollableContent.st.css.js.map +1 -1
  161. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js +10 -10
  162. package/dist/cjs/components/SetupWidget/SetupWidget.st.css.js.map +1 -1
  163. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js +3 -3
  164. package/dist/cjs/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  165. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js +2 -2
  166. package/dist/cjs/components/SlidingModal/SlidingModal.st.css.js.map +1 -1
  167. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js +6 -6
  168. package/dist/cjs/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  169. package/dist/cjs/components/Table/NumberCell.st.css.js +2 -2
  170. package/dist/cjs/components/Table/NumberCell.st.css.js.map +1 -1
  171. package/dist/cjs/components/TableFolders/TableFoldersContent.js +9 -9
  172. package/dist/cjs/components/TableFolders/TableFoldersContent.js.map +1 -1
  173. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js +3 -3
  174. package/dist/cjs/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  175. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  176. package/dist/cjs/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js.map +1 -1
  177. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  178. package/dist/cjs/components/ToolbarItem/ToolbarItem.st.css.js.map +1 -1
  179. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  180. package/dist/cjs/components/ToolbarItemBox/ToolbarItemBox.st.css.js.map +1 -1
  181. package/dist/cjs/components/VirtualGridRepeater/VirtualGridRepeaterBase.js +3 -2
  182. package/dist/cjs/components/VirtualGridRepeater/VirtualGridRepeaterBase.js.map +1 -1
  183. package/dist/cjs/components/VirtualGridRepeater/VirtualGridRepeaterState.js +13 -0
  184. package/dist/cjs/components/VirtualGridRepeater/VirtualGridRepeaterState.js.map +1 -1
  185. package/dist/cjs/components/common.st.css.js +4 -4
  186. package/dist/cjs/components/common.st.css.js.map +1 -1
  187. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js +3 -3
  188. package/dist/cjs/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  189. package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
  190. package/dist/cjs/state/CollectionPage/MobilePrimaryActionBar.st.css.js.map +1 -1
  191. package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js +4 -4
  192. package/dist/cjs/state/CollectionPage/TitleBadges.st.css.js.map +1 -1
  193. package/dist/cjs/state/CustomColumnsState.js +20 -0
  194. package/dist/cjs/state/CustomColumnsState.js.map +1 -1
  195. package/dist/cjs/state/EditableTable/CellValueState.js +2 -1
  196. package/dist/cjs/state/EditableTable/CellValueState.js.map +1 -1
  197. package/dist/cjs/state/EditableTable/ClipboardState.js +18 -2
  198. package/dist/cjs/state/EditableTable/ClipboardState.js.map +1 -1
  199. package/dist/cjs/state/EditableTable/types.js.map +1 -1
  200. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js +2 -2
  201. package/dist/cjs/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  202. package/dist/cjs/state/GridBaseState.js +3 -1
  203. package/dist/cjs/state/GridBaseState.js.map +1 -1
  204. package/dist/cjs/state/buildEditableFieldColumns.js +20 -8
  205. package/dist/cjs/state/buildEditableFieldColumns.js.map +1 -1
  206. package/dist/cjs/styles.global.css +2 -2
  207. package/dist/cjs/version.js +1 -1
  208. package/dist/cjs/version.js.map +1 -1
  209. package/dist/docs/CustomFieldType.md +8 -3
  210. package/dist/docs/Page Templates.md +2 -0
  211. package/dist/docs/WixPatternsProvider.md +3 -3
  212. package/dist/docs/withDashboard.md +3 -3
  213. package/dist/dts-bundle/index.json +25 -25
  214. package/dist/dts-bundle/index.txt +3 -3
  215. package/dist/dts-bundle/types/CellType.d.ts +4 -0
  216. package/dist/dts-bundle/types/SchemaSource.d.ts +3 -0
  217. package/dist/dts-bundle/types/SchemaSourceInput.d.ts +2 -0
  218. package/dist/esm/components/CardContainer/CardContainer.st.css.js +2 -2
  219. package/dist/esm/components/CmsFieldManagement/CmsFieldForm.st.css.js +2 -2
  220. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js +2 -2
  221. package/dist/esm/components/CmsFieldManagement/CmsFieldModal.st.css.js.map +1 -1
  222. package/dist/esm/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.js +2 -2
  223. package/dist/esm/components/Collapse/Collapse.st.css.js +2 -2
  224. package/dist/esm/components/Collapse/Collapse.st.css.js.map +1 -1
  225. package/dist/esm/components/CollectionPageNew/CollectionPage.st.css.js +2 -2
  226. package/dist/esm/components/CollectionSectionHeader/CollectionSectionHeader.st.css.js +2 -2
  227. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js +2 -2
  228. package/dist/esm/components/CollectionTable/CollectionTable.st.css.js.map +1 -1
  229. package/dist/esm/components/CollectionTable/CollectionTableWSRTable.st.css.js +2 -2
  230. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js +2 -2
  231. package/dist/esm/components/CollectionToolbar/CollectionToolbar.st.css.js.map +1 -1
  232. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js +2 -2
  233. package/dist/esm/components/CollectionToolbar/SearchOrCustomFilter.st.css.js.map +1 -1
  234. package/dist/esm/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.js +2 -2
  235. package/dist/esm/components/CollectionViewsDropdown/ViewsDropdown.st.css.js +2 -2
  236. package/dist/esm/components/CustomColumnsPanel/CustomColumnsPanel.uni.driver.js +3 -0
  237. package/dist/esm/components/CustomColumnsPanel/CustomColumnsPanel.uni.driver.js.map +1 -1
  238. package/dist/esm/components/CustomColumnsPanel/FieldIndications.js +1 -1
  239. package/dist/esm/components/CustomColumnsPanel/FieldIndications.js.map +1 -1
  240. package/dist/esm/components/CustomFieldModal/CustomFieldForm.js +7 -5
  241. package/dist/esm/components/CustomFieldModal/CustomFieldForm.js.map +1 -1
  242. package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFields.js +17 -17
  243. package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFields.js.map +1 -1
  244. package/dist/esm/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.js +2 -2
  245. package/dist/esm/components/DragHandle/DragHandle.st.css.js +2 -2
  246. package/dist/esm/components/EditableTable/EditableCell.st.css.js +2 -2
  247. package/dist/esm/components/EditableTable/EditableCell.st.css.js.map +1 -1
  248. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js +2 -2
  249. package/dist/esm/components/EditableTable/HeaderActionsPopover.st.css.js.map +1 -1
  250. package/dist/esm/components/EditableTable/cellTypes/CellViewLayout.st.css.js +2 -2
  251. package/dist/esm/components/EditableTable/cellTypes/JsonInputEdit.st.css.js +2 -2
  252. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js +2 -2
  253. package/dist/esm/components/EditableTable/cellTypes/address/Edit.st.css.js.map +1 -1
  254. package/dist/esm/components/EditableTable/cellTypes/address/index.js +1 -0
  255. package/dist/esm/components/EditableTable/cellTypes/address/index.js.map +1 -1
  256. package/dist/esm/components/EditableTable/cellTypes/array/index.js +15 -3
  257. package/dist/esm/components/EditableTable/cellTypes/array/index.js.map +1 -1
  258. package/dist/esm/components/EditableTable/cellTypes/boolean/Edit.st.css.js +2 -2
  259. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js +2 -2
  260. package/dist/esm/components/EditableTable/cellTypes/boolean/View.st.css.js.map +1 -1
  261. package/dist/esm/components/EditableTable/cellTypes/boolean/index.js +4 -0
  262. package/dist/esm/components/EditableTable/cellTypes/boolean/index.js.map +1 -1
  263. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js +2 -2
  264. package/dist/esm/components/EditableTable/cellTypes/color/Edit.st.css.js.map +1 -1
  265. package/dist/esm/components/EditableTable/cellTypes/date/Edit.st.css.js +2 -2
  266. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js +2 -2
  267. package/dist/esm/components/EditableTable/cellTypes/date/View.st.css.js.map +1 -1
  268. package/dist/esm/components/EditableTable/cellTypes/date/index.js +1 -0
  269. package/dist/esm/components/EditableTable/cellTypes/date/index.js.map +1 -1
  270. package/dist/esm/components/EditableTable/cellTypes/datetime/Edit.st.css.js +2 -2
  271. package/dist/esm/components/EditableTable/cellTypes/datetime/View.st.css.js +2 -2
  272. package/dist/esm/components/EditableTable/cellTypes/datetime/index.js +1 -0
  273. package/dist/esm/components/EditableTable/cellTypes/datetime/index.js.map +1 -1
  274. package/dist/esm/components/EditableTable/cellTypes/email/Edit.st.css.js +2 -2
  275. package/dist/esm/components/EditableTable/cellTypes/email/View.st.css.js +2 -2
  276. package/dist/esm/components/EditableTable/cellTypes/multiReference/index.js +4 -7
  277. package/dist/esm/components/EditableTable/cellTypes/multiReference/index.js.map +1 -1
  278. package/dist/esm/components/EditableTable/cellTypes/number/Edit.st.css.js +2 -2
  279. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js +2 -2
  280. package/dist/esm/components/EditableTable/cellTypes/number/View.st.css.js.map +1 -1
  281. package/dist/esm/components/EditableTable/cellTypes/number/index.js +1 -0
  282. package/dist/esm/components/EditableTable/cellTypes/number/index.js.map +1 -1
  283. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js +2 -2
  284. package/dist/esm/components/EditableTable/cellTypes/object/View.st.css.js.map +1 -1
  285. package/dist/esm/components/EditableTable/cellTypes/object/index.js +17 -7
  286. package/dist/esm/components/EditableTable/cellTypes/object/index.js.map +1 -1
  287. package/dist/esm/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.js +2 -2
  288. package/dist/esm/components/EditableTable/cellTypes/reference/index.js +4 -7
  289. package/dist/esm/components/EditableTable/cellTypes/reference/index.js.map +1 -1
  290. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js +2 -2
  291. package/dist/esm/components/EditableTable/cellTypes/select/Edit.st.css.js.map +1 -1
  292. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js +2 -2
  293. package/dist/esm/components/EditableTable/cellTypes/text/Edit.st.css.js.map +1 -1
  294. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js +2 -2
  295. package/dist/esm/components/EditableTable/cellTypes/text/View.st.css.js.map +1 -1
  296. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js +2 -2
  297. package/dist/esm/components/EditableTable/cellTypes/time/Edit.st.css.js.map +1 -1
  298. package/dist/esm/components/EditableTable/cellTypes/time/index.js +1 -0
  299. package/dist/esm/components/EditableTable/cellTypes/time/index.js.map +1 -1
  300. package/dist/esm/components/EditableTable/cellTypes/url/Edit.st.css.js +2 -2
  301. package/dist/esm/components/EditableTable/cellTypes/url/View.st.css.js +2 -2
  302. package/dist/esm/components/EditableTable/index.js +1 -0
  303. package/dist/esm/components/EditableTable/index.js.map +1 -1
  304. package/dist/esm/components/EditableTable/types.js.map +1 -1
  305. package/dist/esm/components/EditableTable/useClearFocusOnBlur.js +14 -4
  306. package/dist/esm/components/EditableTable/useClearFocusOnBlur.js.map +1 -1
  307. package/dist/esm/components/EditableTable/useKeyboardNavigation.js +8 -0
  308. package/dist/esm/components/EditableTable/useKeyboardNavigation.js.map +1 -1
  309. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js +2 -2
  310. package/dist/esm/components/EmptyState/EmptyStateBase.st.css.js.map +1 -1
  311. package/dist/esm/components/EntityPage/EntityPagePlain.st.css.js +2 -2
  312. package/dist/esm/components/EntityPageFields/EntityPageField.js +13 -1
  313. package/dist/esm/components/EntityPageFields/EntityPageField.js.map +1 -1
  314. package/dist/esm/components/EntityPageFields/EntityPageField.st.css +10 -0
  315. package/dist/esm/components/EntityPageFields/EntityPageField.st.css.js +15 -0
  316. package/dist/esm/components/EntityPageFields/EntityPageField.st.css.js.map +1 -0
  317. package/dist/esm/components/Fade/Fade.st.css.js +2 -2
  318. package/dist/esm/components/Fade/Fade.st.css.js.map +1 -1
  319. package/dist/esm/components/FieldActions/FieldActions.js +4 -2
  320. package/dist/esm/components/FieldActions/FieldActions.js.map +1 -1
  321. package/dist/esm/components/Grid/Grid.uni.driver.js +5 -0
  322. package/dist/esm/components/Grid/Grid.uni.driver.js.map +1 -1
  323. package/dist/esm/components/Heading/Heading.st.css.js +2 -2
  324. package/dist/esm/components/ImportButton/ImportStepUpload.st.css.js +2 -2
  325. package/dist/esm/components/InputOverflow/InputOverflow.st.css.js +2 -2
  326. package/dist/esm/components/LoadingRow/LoadingRow.st.css.js +3 -3
  327. package/dist/esm/components/MaxHeightText/MaxHeightText.st.css.js +2 -2
  328. package/dist/esm/components/MaxLines/MaxLines.st.css.js +2 -2
  329. package/dist/esm/components/MaxLines/MaxLines.st.css.js.map +1 -1
  330. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js +2 -2
  331. package/dist/esm/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.js.map +1 -1
  332. package/dist/esm/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.js +2 -2
  333. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js +2 -2
  334. package/dist/esm/components/NestedTable/NestedTableRow.st.css.js.map +1 -1
  335. package/dist/esm/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.js +2 -2
  336. package/dist/esm/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.js +2 -2
  337. package/dist/esm/components/PickerContent/PickerContent.st.css.js +2 -2
  338. package/dist/esm/components/PickerContent/PickerContent.st.css.js.map +1 -1
  339. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js +2 -2
  340. package/dist/esm/components/PickerContent/PickerContentAdditionalStep.st.css.js.map +1 -1
  341. package/dist/esm/components/PickerTableListItem/PickerTableListItem.st.css.js +2 -2
  342. package/dist/esm/components/SchemaSource/schemaFieldManagement.js +1 -0
  343. package/dist/esm/components/SchemaSource/schemaFieldManagement.js.map +1 -1
  344. package/dist/esm/components/ScrollableContent/ScrollableContent.st.css.js +2 -2
  345. package/dist/esm/components/SetupWidget/SetupWidget.st.css.js +2 -2
  346. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js +2 -2
  347. package/dist/esm/components/SkeletonCard/SkeletonCard.st.css.js.map +1 -1
  348. package/dist/esm/components/SlidingModal/SlidingModal.st.css.js +2 -2
  349. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js +2 -2
  350. package/dist/esm/components/Table/AddFieldColumnHeader.st.css.js.map +1 -1
  351. package/dist/esm/components/Table/NumberCell.st.css.js +2 -2
  352. package/dist/esm/components/TableFolders/TableFoldersContent.js +4 -1
  353. package/dist/esm/components/TableFolders/TableFoldersContent.js.map +1 -1
  354. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js +2 -2
  355. package/dist/esm/components/TabsFilter/TabsFilter.st.css.js.map +1 -1
  356. package/dist/esm/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.js +2 -2
  357. package/dist/esm/components/ToolbarItem/ToolbarItem.st.css.js +2 -2
  358. package/dist/esm/components/ToolbarItemBox/ToolbarItemBox.st.css.js +2 -2
  359. package/dist/esm/components/VirtualGridRepeater/VirtualGridRepeaterBase.js +1 -0
  360. package/dist/esm/components/VirtualGridRepeater/VirtualGridRepeaterBase.js.map +1 -1
  361. package/dist/esm/components/VirtualGridRepeater/VirtualGridRepeaterState.js +7 -0
  362. package/dist/esm/components/VirtualGridRepeater/VirtualGridRepeaterState.js.map +1 -1
  363. package/dist/esm/components/common.st.css.js +2 -2
  364. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js +2 -2
  365. package/dist/esm/state/CollectionPage/CollectionPageHeader.st.css.js.map +1 -1
  366. package/dist/esm/state/CollectionPage/MobilePrimaryActionBar.st.css.js +2 -2
  367. package/dist/esm/state/CollectionPage/MobilePrimaryActionBar.st.css.js.map +1 -1
  368. package/dist/esm/state/CollectionPage/TitleBadges.st.css.js +2 -2
  369. package/dist/esm/state/CustomColumnsState.js +19 -1
  370. package/dist/esm/state/CustomColumnsState.js.map +1 -1
  371. package/dist/esm/state/EditableTable/CellValueState.js +3 -1
  372. package/dist/esm/state/EditableTable/CellValueState.js.map +1 -1
  373. package/dist/esm/state/EditableTable/ClipboardState.js +21 -2
  374. package/dist/esm/state/EditableTable/ClipboardState.js.map +1 -1
  375. package/dist/esm/state/FormPage/FormPageHeader.st.css.js +2 -2
  376. package/dist/esm/state/FormPage/FormPageHeader.st.css.js.map +1 -1
  377. package/dist/esm/state/GridBaseState.js +2 -1
  378. package/dist/esm/state/GridBaseState.js.map +1 -1
  379. package/dist/esm/state/buildEditableFieldColumns.js +22 -6
  380. package/dist/esm/state/buildEditableFieldColumns.js.map +1 -1
  381. package/dist/esm/styles.global.css +2 -2
  382. package/dist/esm/version.js +1 -1
  383. package/dist/examples/CustomFieldType/editable-cell.tsx +19 -17
  384. package/dist/templates/cms-collection-entity/page.tsx +5 -7
  385. package/dist/templates/collection-detail/page.tsx +5 -7
  386. package/dist/templates/collection-entity/page.tsx +5 -7
  387. package/dist/types/components/CmsFieldManagement/CmsFieldModal.st.css.d.ts.map +1 -1
  388. package/dist/types/components/Collapse/Collapse.st.css.d.ts.map +1 -1
  389. package/dist/types/components/CollectionTable/CollectionTable.st.css.d.ts.map +1 -1
  390. package/dist/types/components/CollectionTable/CollectionTable.uni.driver.d.ts +6 -0
  391. package/dist/types/components/CollectionTable/CollectionTable.uni.driver.d.ts.map +1 -1
  392. package/dist/types/components/CollectionToolbar/CollectionToolbar.st.css.d.ts.map +1 -1
  393. package/dist/types/components/CollectionToolbar/CollectionToolbar.uni.driver.d.ts +3 -0
  394. package/dist/types/components/CollectionToolbar/CollectionToolbar.uni.driver.d.ts.map +1 -1
  395. package/dist/types/components/CollectionToolbar/SearchOrCustomFilter.st.css.d.ts.map +1 -1
  396. package/dist/types/components/CustomColumnsPanel/CustomColumnsPanel.uni.driver.d.ts +3 -0
  397. package/dist/types/components/CustomColumnsPanel/CustomColumnsPanel.uni.driver.d.ts.map +1 -1
  398. package/dist/types/components/CustomColumnsPanel/FieldIndications.d.ts.map +1 -1
  399. package/dist/types/components/CustomFieldModal/CustomFieldForm.d.ts.map +1 -1
  400. package/dist/types/components/CustomFieldModal/CustomFieldFormPiiFields.d.ts.map +1 -1
  401. package/dist/types/components/EditableTable/EditableCell.st.css.d.ts.map +1 -1
  402. package/dist/types/components/EditableTable/EditableTable.uni.driver.d.ts +6 -0
  403. package/dist/types/components/EditableTable/EditableTable.uni.driver.d.ts.map +1 -1
  404. package/dist/types/components/EditableTable/HeaderActionsPopover.st.css.d.ts.map +1 -1
  405. package/dist/types/components/EditableTable/cellTypes/address/Edit.st.css.d.ts.map +1 -1
  406. package/dist/types/components/EditableTable/cellTypes/address/index.d.ts.map +1 -1
  407. package/dist/types/components/EditableTable/cellTypes/array/index.d.ts.map +1 -1
  408. package/dist/types/components/EditableTable/cellTypes/boolean/View.st.css.d.ts.map +1 -1
  409. package/dist/types/components/EditableTable/cellTypes/boolean/index.d.ts.map +1 -1
  410. package/dist/types/components/EditableTable/cellTypes/color/Edit.st.css.d.ts.map +1 -1
  411. package/dist/types/components/EditableTable/cellTypes/date/View.st.css.d.ts.map +1 -1
  412. package/dist/types/components/EditableTable/cellTypes/date/index.d.ts.map +1 -1
  413. package/dist/types/components/EditableTable/cellTypes/datetime/index.d.ts.map +1 -1
  414. package/dist/types/components/EditableTable/cellTypes/multiReference/index.d.ts.map +1 -1
  415. package/dist/types/components/EditableTable/cellTypes/number/View.st.css.d.ts.map +1 -1
  416. package/dist/types/components/EditableTable/cellTypes/number/index.d.ts.map +1 -1
  417. package/dist/types/components/EditableTable/cellTypes/object/View.st.css.d.ts.map +1 -1
  418. package/dist/types/components/EditableTable/cellTypes/object/index.d.ts.map +1 -1
  419. package/dist/types/components/EditableTable/cellTypes/reference/index.d.ts.map +1 -1
  420. package/dist/types/components/EditableTable/cellTypes/select/Edit.st.css.d.ts.map +1 -1
  421. package/dist/types/components/EditableTable/cellTypes/text/Edit.st.css.d.ts.map +1 -1
  422. package/dist/types/components/EditableTable/cellTypes/text/View.st.css.d.ts.map +1 -1
  423. package/dist/types/components/EditableTable/cellTypes/time/Edit.st.css.d.ts.map +1 -1
  424. package/dist/types/components/EditableTable/cellTypes/time/index.d.ts.map +1 -1
  425. package/dist/types/components/EditableTable/index.d.ts +1 -0
  426. package/dist/types/components/EditableTable/index.d.ts.map +1 -1
  427. package/dist/types/components/EditableTable/types.d.ts +1 -0
  428. package/dist/types/components/EditableTable/types.d.ts.map +1 -1
  429. package/dist/types/components/EditableTable/useClearFocusOnBlur.d.ts +1 -1
  430. package/dist/types/components/EditableTable/useClearFocusOnBlur.d.ts.map +1 -1
  431. package/dist/types/components/EditableTable/useKeyboardNavigation.d.ts.map +1 -1
  432. package/dist/types/components/EmptyState/EmptyStateBase.st.css.d.ts.map +1 -1
  433. package/dist/types/components/EntityPageFields/EntityPageField.d.ts.map +1 -1
  434. package/dist/types/components/EntityPageFields/EntityPageField.st.css.d.ts +14 -0
  435. package/dist/types/components/EntityPageFields/EntityPageField.st.css.d.ts.map +1 -0
  436. package/dist/types/components/Fade/Fade.st.css.d.ts.map +1 -1
  437. package/dist/types/components/FieldActions/FieldActions.d.ts.map +1 -1
  438. package/dist/types/components/Grid/Grid.uni.driver.d.ts +8 -0
  439. package/dist/types/components/Grid/Grid.uni.driver.d.ts.map +1 -1
  440. package/dist/types/components/Grid/GridFolders.uni.driver.d.ts +11 -0
  441. package/dist/types/components/Grid/GridFolders.uni.driver.d.ts.map +1 -1
  442. package/dist/types/components/Grid/GridFoldersSection.uni.driver.d.ts +4 -0
  443. package/dist/types/components/Grid/GridFoldersSection.uni.driver.d.ts.map +1 -1
  444. package/dist/types/components/Kanban/Kanban.uni.driver.d.ts +3 -0
  445. package/dist/types/components/Kanban/Kanban.uni.driver.d.ts.map +1 -1
  446. package/dist/types/components/MaxLines/MaxLines.st.css.d.ts.map +1 -1
  447. package/dist/types/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.d.ts.map +1 -1
  448. package/dist/types/components/NestedTable/NestedTable.uni.driver.d.ts +9 -0
  449. package/dist/types/components/NestedTable/NestedTable.uni.driver.d.ts.map +1 -1
  450. package/dist/types/components/NestedTable/NestedTableRow.st.css.d.ts.map +1 -1
  451. package/dist/types/components/PickerContent/PickerContent.st.css.d.ts.map +1 -1
  452. package/dist/types/components/PickerContent/PickerContentAdditionalStep.st.css.d.ts.map +1 -1
  453. package/dist/types/components/SchemaSource/schemaFieldManagement.d.ts.map +1 -1
  454. package/dist/types/components/SkeletonCard/SkeletonCard.st.css.d.ts.map +1 -1
  455. package/dist/types/components/Table/AddFieldColumnHeader.st.css.d.ts.map +1 -1
  456. package/dist/types/components/Table/Table.uni.driver.d.ts +6 -0
  457. package/dist/types/components/Table/Table.uni.driver.d.ts.map +1 -1
  458. package/dist/types/components/TableFolders/TableFolders.uni.driver.d.ts +9 -0
  459. package/dist/types/components/TableFolders/TableFolders.uni.driver.d.ts.map +1 -1
  460. package/dist/types/components/TableFolders/TableFoldersContent.d.ts.map +1 -1
  461. package/dist/types/components/TableGridSwitch/TableGridSwitch.uni.driver.d.ts +10 -0
  462. package/dist/types/components/TableGridSwitch/TableGridSwitch.uni.driver.d.ts.map +1 -1
  463. package/dist/types/components/TabsFilter/TabsFilter.st.css.d.ts.map +1 -1
  464. package/dist/types/components/VirtualGridRepeater/VirtualGridRepeaterBase.d.ts.map +1 -1
  465. package/dist/types/components/VirtualGridRepeater/VirtualGridRepeaterState.d.ts +4 -0
  466. package/dist/types/components/VirtualGridRepeater/VirtualGridRepeaterState.d.ts.map +1 -1
  467. package/dist/types/state/CollectionPage/CollectionPageHeader.st.css.d.ts.map +1 -1
  468. package/dist/types/state/CollectionPage/MobilePrimaryActionBar.st.css.d.ts.map +1 -1
  469. package/dist/types/state/CustomColumnsState.d.ts.map +1 -1
  470. package/dist/types/state/EditableTable/CellValueState.d.ts.map +1 -1
  471. package/dist/types/state/EditableTable/ClipboardState.d.ts +2 -0
  472. package/dist/types/state/EditableTable/ClipboardState.d.ts.map +1 -1
  473. package/dist/types/state/EditableTable/types.d.ts +4 -0
  474. package/dist/types/state/EditableTable/types.d.ts.map +1 -1
  475. package/dist/types/state/FormPage/FormPageHeader.st.css.d.ts.map +1 -1
  476. package/dist/types/state/GridBaseState.d.ts +1 -0
  477. package/dist/types/state/GridBaseState.d.ts.map +1 -1
  478. package/dist/types/state/buildEditableFieldColumns.d.ts.map +1 -1
  479. package/dist/types/testkit/enzyme.d.ts +49 -0
  480. package/dist/types/testkit/enzyme.d.ts.map +1 -1
  481. package/dist/types/testkit/jsdom.d.ts +58 -0
  482. package/dist/types/testkit/jsdom.d.ts.map +1 -1
  483. package/dist/types/testkit/playwright.d.ts +55 -0
  484. package/dist/types/testkit/playwright.d.ts.map +1 -1
  485. package/dist/types/testkit/puppeteer.d.ts +58 -0
  486. package/dist/types/testkit/puppeteer.d.ts.map +1 -1
  487. package/dist/types/version.d.ts +1 -1
  488. package/package.json +7 -7
  489. package/src/components/CardContainer/CardContainer.st.css.ts +2 -2
  490. package/src/components/CmsFieldManagement/CmsFieldForm.st.css.ts +2 -2
  491. package/src/components/CmsFieldManagement/CmsFieldModal.st.css.ts +2 -2
  492. package/src/components/CmsFieldManagement/Sections/ValidationAndDefaultsSection.st.css.ts +2 -2
  493. package/src/components/Collapse/Collapse.st.css.ts +2 -2
  494. package/src/components/CollectionPageNew/CollectionPage.st.css.ts +2 -2
  495. package/src/components/CollectionSectionHeader/CollectionSectionHeader.st.css.ts +2 -2
  496. package/src/components/CollectionTable/CollectionTable.st.css.ts +2 -2
  497. package/src/components/CollectionTable/CollectionTableWSRTable.st.css.ts +2 -2
  498. package/src/components/CollectionToolbar/CollectionToolbar.st.css.ts +2 -2
  499. package/src/components/CollectionToolbar/SearchOrCustomFilter.st.css.ts +2 -2
  500. package/src/components/CollectionViewsDropdown/AutoCompleteReadonly.st.css.ts +2 -2
  501. package/src/components/CollectionViewsDropdown/ViewsDropdown.st.css.ts +2 -2
  502. package/src/components/CustomColumnsPanel/CustomColumnsPanel.uni.driver.ts +6 -0
  503. package/src/components/CustomColumnsPanel/FieldIndications.tsx +6 -1
  504. package/src/components/CustomFieldModal/CustomFieldForm.tsx +46 -37
  505. package/src/components/CustomFieldModal/CustomFieldFormPiiFields.st.css.ts +2 -2
  506. package/src/components/CustomFieldModal/CustomFieldFormPiiFields.tsx +56 -56
  507. package/src/components/DragHandle/DragHandle.st.css.ts +2 -2
  508. package/src/components/EditableTable/EditableCell.st.css.ts +2 -2
  509. package/src/components/EditableTable/HeaderActionsPopover.st.css.ts +2 -2
  510. package/src/components/EditableTable/cellTypes/CellViewLayout.st.css.ts +2 -2
  511. package/src/components/EditableTable/cellTypes/JsonInputEdit.st.css.ts +2 -2
  512. package/src/components/EditableTable/cellTypes/address/Edit.st.css.ts +2 -2
  513. package/src/components/EditableTable/cellTypes/address/index.tsx +2 -0
  514. package/src/components/EditableTable/cellTypes/array/index.ts +14 -3
  515. package/src/components/EditableTable/cellTypes/boolean/Edit.st.css.ts +2 -2
  516. package/src/components/EditableTable/cellTypes/boolean/View.st.css.ts +2 -2
  517. package/src/components/EditableTable/cellTypes/boolean/index.ts +6 -0
  518. package/src/components/EditableTable/cellTypes/color/Edit.st.css.ts +2 -2
  519. package/src/components/EditableTable/cellTypes/date/Edit.st.css.ts +2 -2
  520. package/src/components/EditableTable/cellTypes/date/View.st.css.ts +2 -2
  521. package/src/components/EditableTable/cellTypes/date/index.ts +2 -0
  522. package/src/components/EditableTable/cellTypes/datetime/Edit.st.css.ts +2 -2
  523. package/src/components/EditableTable/cellTypes/datetime/View.st.css.ts +2 -2
  524. package/src/components/EditableTable/cellTypes/datetime/index.ts +2 -0
  525. package/src/components/EditableTable/cellTypes/email/Edit.st.css.ts +2 -2
  526. package/src/components/EditableTable/cellTypes/email/View.st.css.ts +2 -2
  527. package/src/components/EditableTable/cellTypes/multiReference/index.ts +5 -7
  528. package/src/components/EditableTable/cellTypes/number/Edit.st.css.ts +2 -2
  529. package/src/components/EditableTable/cellTypes/number/View.st.css.ts +2 -2
  530. package/src/components/EditableTable/cellTypes/number/index.ts +2 -0
  531. package/src/components/EditableTable/cellTypes/object/View.st.css.ts +2 -2
  532. package/src/components/EditableTable/cellTypes/object/index.ts +18 -7
  533. package/src/components/EditableTable/cellTypes/reference/EmptyReferenceView.st.css.ts +2 -2
  534. package/src/components/EditableTable/cellTypes/reference/index.ts +5 -7
  535. package/src/components/EditableTable/cellTypes/select/Edit.st.css.ts +2 -2
  536. package/src/components/EditableTable/cellTypes/text/Edit.st.css.ts +2 -2
  537. package/src/components/EditableTable/cellTypes/text/View.st.css.ts +2 -2
  538. package/src/components/EditableTable/cellTypes/time/Edit.st.css.ts +2 -2
  539. package/src/components/EditableTable/cellTypes/time/index.ts +2 -0
  540. package/src/components/EditableTable/cellTypes/url/Edit.st.css.ts +2 -2
  541. package/src/components/EditableTable/cellTypes/url/View.st.css.ts +2 -2
  542. package/src/components/EditableTable/index.ts +1 -0
  543. package/src/components/EditableTable/types.ts +1 -0
  544. package/src/components/EditableTable/useClearFocusOnBlur.ts +16 -4
  545. package/src/components/EditableTable/useKeyboardNavigation.ts +11 -0
  546. package/src/components/EmptyState/EmptyStateBase.st.css.ts +2 -2
  547. package/src/components/EntityPage/EntityPagePlain.st.css.ts +2 -2
  548. package/src/components/EntityPageFields/EntityPageField.st.css +10 -0
  549. package/src/components/EntityPageFields/EntityPageField.st.css.ts +25 -0
  550. package/src/components/EntityPageFields/EntityPageField.tsx +19 -1
  551. package/src/components/Fade/Fade.st.css.ts +2 -2
  552. package/src/components/FieldActions/FieldActions.tsx +11 -2
  553. package/src/components/Grid/Grid.uni.driver.ts +5 -0
  554. package/src/components/Heading/Heading.st.css.ts +2 -2
  555. package/src/components/ImportButton/ImportStepUpload.st.css.ts +2 -2
  556. package/src/components/InputOverflow/InputOverflow.st.css.ts +2 -2
  557. package/src/components/LoadingRow/LoadingRow.st.css.ts +3 -3
  558. package/src/components/MaxHeightText/MaxHeightText.st.css.ts +2 -2
  559. package/src/components/MaxLines/MaxLines.st.css.ts +2 -2
  560. package/src/components/MultiBulkActionToolbar/MultiBulkActionToolbar.st.css.ts +2 -2
  561. package/src/components/NestedTable/NestedTablePlaceholderStatesRow.st.css.ts +2 -2
  562. package/src/components/NestedTable/NestedTableRow.st.css.ts +2 -2
  563. package/src/components/NestedTableDragAndDrop/MultipleDragOverlayEffect.st.css.ts +2 -2
  564. package/src/components/NestedTableDragAndDrop/NestedTableDragAndDropRow.st.css.ts +2 -2
  565. package/src/components/PickerContent/PickerContent.st.css.ts +2 -2
  566. package/src/components/PickerContent/PickerContentAdditionalStep.st.css.ts +2 -2
  567. package/src/components/PickerTableListItem/PickerTableListItem.st.css.ts +2 -2
  568. package/src/components/SchemaSource/schemaFieldManagement.ts +1 -0
  569. package/src/components/ScrollableContent/ScrollableContent.st.css.ts +2 -2
  570. package/src/components/SetupWidget/SetupWidget.st.css.ts +2 -2
  571. package/src/components/SkeletonCard/SkeletonCard.st.css.ts +2 -2
  572. package/src/components/SlidingModal/SlidingModal.st.css.ts +2 -2
  573. package/src/components/Table/AddFieldColumnHeader.st.css.ts +2 -2
  574. package/src/components/Table/NumberCell.st.css.ts +2 -2
  575. package/src/components/TableFolders/TableFoldersContent.tsx +4 -1
  576. package/src/components/TabsFilter/TabsFilter.st.css.ts +2 -2
  577. package/src/components/Tags/ManageTags/ManageTagsModal/ManageTagsModal.st.css.ts +2 -2
  578. package/src/components/ToolbarItem/ToolbarItem.st.css.ts +2 -2
  579. package/src/components/ToolbarItemBox/ToolbarItemBox.st.css.ts +2 -2
  580. package/src/components/VirtualGridRepeater/VirtualGridRepeaterBase.tsx +1 -0
  581. package/src/components/VirtualGridRepeater/VirtualGridRepeaterState.ts +15 -0
  582. package/src/components/common.st.css.ts +2 -2
  583. package/src/state/CollectionPage/CollectionPageHeader.st.css.ts +2 -2
  584. package/src/state/CollectionPage/MobilePrimaryActionBar.st.css.ts +2 -2
  585. package/src/state/CollectionPage/TitleBadges.st.css.ts +2 -2
  586. package/src/state/CustomColumnsState.ts +35 -1
  587. package/src/state/EditableTable/CellValueState.ts +4 -3
  588. package/src/state/EditableTable/ClipboardState.ts +30 -2
  589. package/src/state/EditableTable/types.ts +5 -0
  590. package/src/state/FormPage/FormPageHeader.st.css.ts +2 -2
  591. package/src/state/GridBaseState.ts +2 -1
  592. package/src/state/buildEditableFieldColumns.ts +22 -6
  593. package/src/styles.global.css +2 -2
  594. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_cellTypes","_utils","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","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","runCellValidation","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","rawChanges","rowUpdates","_this$_parent$collect3","result","mutation","isLocalNewRow","rowUpdate","consumed","_consumeRowDrafts","changedFieldIds","Set","add","updates","Array","from","values","updateItems","_this$_parent$collect4","exceptRowKey","_flushRows","includeRow","invalidNewRows","_drafts","keys","_validateNewRow","rowKeys","entry","has","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 { runCellValidation, validResult } from './utils';\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<string, { value: any; errors: string[] }>();\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 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 runCellValidation(\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 return {\n value: rawValue,\n error: this._parent.collection?.translate(\n 'cairo.editableTable.cell.validation.notCompatible',\n ),\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, { value, errors: [error] });\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 = runCellValidation(\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 = runCellValidation(\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 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":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAIA,IAAAC,UAAA,GAAAD,OAAA;AAIA,IAAAE,MAAA,GAAAF,OAAA;AAEA,MAAMG,kBAAkB,GAAG,IAAIC,GAAG,CAChCC,2BAAgB,CAACC,GAAG,CAAEC,EAAE,IAAK,CAACA,EAAE,CAACC,IAAI,EAAED,EAAE,CAAC,CAC5C,CAAC;AAEM,MAAME,cAAc,CAA0B;EAcnDC,WAAWA,CACTC,MAAgC,EAChCC,cAAqC,GAAG,IAAIR,GAAG,CAAC,CAAC,EACjD;IAhBF;IAAA,IAAAS,gBAAA,CAAAC,OAAA,yBACyB,IAAIV,GAAG,CAA2C,CAAC;IAE5E;AACF;IADE,IAAAS,gBAAA,CAAAC,OAAA,uBAEuB,IAAIV,GAAG,CAG5B,CAAC;IAAA,IAAAS,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IASD,IAAI,CAACC,OAAO,GAAGJ,MAAM;IACrB,IAAI,CAACK,eAAe,GAAGJ,cAAc;IAErC,IAAAK,oBAAc,EAAC,IAAI,EAAE;MACnBC,aAAa,EAAEC,gBAAU;MACzBC,WAAW,EAAED,gBAAU;MACvBE,YAAY,EAAEC,cAAQ;MACtBC,UAAU,EAAEC,YAAM;MAClBC,UAAU,EAAED,YAAM;MAClBE,aAAa,EAAEF,YAAM;MACrBG,kBAAkB,EAAEH,YAAM;MAC1BI,eAAe,EAAEJ,YAAM;MACvBK,WAAW,EAAEL,YAAM;MACnBM,QAAQ,EAAEN,YAAM;MAChBO,gBAAgB,EAAEP;IACpB,CAAC,CAAC;EACJ;;EAEA;EACA;EACA;EACA,IAAIH,YAAYA,CAAA,EAA0B;IACxC,MAAMf,GAAG,GAAG,IAAIF,GAAG,CAAmB,CAAC;IACvC,KAAK,MAAM4B,GAAG,IAAI,IAAI,CAACjB,OAAO,CAACkB,UAAU,EAAE;MACzC,IAAID,GAAG,CAACE,QAAQ,KAAK,QAAQ,IAAIF,GAAG,CAACG,UAAU,EAAE;QAC/C7B,GAAG,CAAC8B,GAAG,CAACJ,GAAG,CAACK,EAAE,EAAE;UAAE7B,IAAI,EAAE,QAAQ;UAAE,GAAGwB,GAAG,CAACG;QAAW,CAAC,CAAC;MACxD,CAAC,MAAM;QACL7B,GAAG,CAAC8B,GAAG,CACLJ,GAAG,CAACK,EAAE,EACNlC,kBAAkB,CAACmC,GAAG,CAACN,GAAG,CAACE,QAAQ,CAAC,IAClC,IAAI,CAAClB,eAAe,CAACsB,GAAG,CAACN,GAAG,CAACE,QAAQ,CAAC,IACtCK,uBACJ,CAAC;MACH;IACF;IACA,OAAOjC,GAAG;EACZ;EAEAkC,yBAAyBA,CAACC,QAAgB,EAAY;IACpD,OAAO,IAAI,CAACpB,YAAY,CAACiB,GAAG,CAACG,QAAQ,CAAC,IAAIF,uBAAY;EACxD;EAEAG,mBAAmBA,CAACC,MAAc,EAAEF,QAAgB,EAAO;IACzD,MAAMG,OAAO,GAAG,IAAI,CAACC,eAAe,CAACF,MAAM,EAAEF,QAAQ,CAAC;IACtD,IAAIG,OAAO,EAAE;MACX,OAAOA,OAAO,CAACE,KAAK;IACtB;IACA,MAAMC,KAAK,GAAG,IAAI,CAACC,aAAa,CAACL,MAAM,EAAEF,QAAQ,CAAC;IAClD,IAAIM,KAAK,EAAE;MACT,OAAOA,KAAK,CAACD,KAAK;IACpB;IACA,MAAMG,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACG,QAAQ,CAAC;IACpD,MAAMU,SAAS,GAAG,IAAI,CAACpC,OAAO,CAACqC,aAAa,CAACT,MAAM,CAAC;IACpD,OAAOM,MAAM,IAAIE,SAAS,GAAGF,MAAM,CAACI,QAAQ,CAACF,SAAS,CAACG,IAAI,CAAC,GAAGC,SAAS;EAC1E;EAEAC,iBAAiBA,CAACb,MAAc,EAAEF,QAAgB,EAAoB;IACpE,MAAMG,OAAO,GAAG,IAAI,CAACC,eAAe,CAACF,MAAM,EAAEF,QAAQ,CAAC;IACtD,IAAIG,OAAO,EAAE;MACX,OAAO;QAAEa,KAAK,EAAE,KAAK;QAAEC,MAAM,EAAEd,OAAO,CAACc;MAAO,CAAC;IACjD;IACA,OAAOC,kBAAW;EACpB;;EAEA;AACF;AACA;EACEC,oBAAoBA,CAACnB,QAAgB,EAAEK,KAAU,EAAoB;IAAA,IAAAe,qBAAA;IACnE,MAAMZ,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACG,QAAQ,CAAC;IACpD,IAAI,CAACQ,MAAM,EAAE;MACX,OAAOU,kBAAW;IACpB;IACA,MAAMG,QAAQ,GAAG,IAAI,CAACtB,yBAAyB,CAACS,MAAM,CAACZ,EAAE,CAAC;IAC1D,MAAM0B,UAAU,GAAGD,QAAQ,CAACE,iBAAiB,GACzCF,QAAQ,CAACE,iBAAiB,CAAClB,KAAK,CAAC,GACjCA,KAAK;IACT,OAAO,IAAAmB,wBAAiB,EACtBF,UAAU,EACVd,MAAM,CAACiB,UAAU,EACjBJ,QAAQ,CAACK,QAAQ,GAAAN,qBAAA,GACjB,IAAI,CAAC9C,OAAO,CAACqD,UAAU,qBAAvBP,qBAAA,CAAyBQ,SAC3B,CAAC;EACH;EAEAC,cAAcA,CAAC3B,MAAc,EAAEF,QAAgB,EAAW;IACxD,MAAMQ,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACG,QAAQ,CAAC;IACpD,IAAI,CAACQ,MAAM,EAAE;MACX,OAAO,KAAK;IACd;IAEA,MAAMa,QAAQ,GAAG,IAAI,CAACtB,yBAAyB,CAACS,MAAM,CAACZ,EAAE,CAAC;IAC1D,IAAIyB,QAAQ,CAACS,QAAQ,KAAK,KAAK,IAAI,CAACT,QAAQ,CAACU,aAAa,EAAE;MAC1D,OAAO,KAAK;IACd;IACA,OAAO,IAAI,CAACC,gBAAgB,CAAC9B,MAAM,EAAEF,QAAQ,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEgC,gBAAgBA,CAAC9B,MAAc,EAAEF,QAAgB,EAAW;IAC1D,MAAMQ,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACG,QAAQ,CAAC;IACpD,IAAI,EAACQ,MAAM,YAANA,MAAM,CAAEyB,QAAQ,GAAE;MACrB,OAAO,KAAK;IACd;IAEA,IAAI,OAAOzB,MAAM,CAACsB,QAAQ,KAAK,UAAU,EAAE;MACzC,MAAMpB,SAAS,GAAG,IAAI,CAACpC,OAAO,CAACqC,aAAa,CAACT,MAAM,CAAC;MACpD,OAAOQ,SAAS,GAAGF,MAAM,CAACsB,QAAQ,CAACpB,SAAS,CAACG,IAAI,CAAC,GAAG,KAAK;IAC5D;IACA,OAAOL,MAAM,CAACsB,QAAQ,KAAK,KAAK;EAClC;EAEAI,4BAA4BA,CAC1BC,QAAuC,EACvCC,IAAU,EACU;IACpB,MAAM5B,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACuC,IAAI,CAACpC,QAAQ,CAAC;IACzD,IAAI,CAACQ,MAAM,EAAE;MACX,OAAOM,SAAS;IAClB;IAEA,MAAMuB,WAAW,GAAG,IAAI,CAACtC,yBAAyB,CAChDqC,IAAI,CAACpC,QACP,CAAC,CAACqC,WAAW;IACb,IAAI,CAACA,WAAW,EAAE;MAChB,OAAOvB,SAAS;IAClB;IAEA,MAAMwB,OAAO,GAAG;MACdjC,KAAK,EAAE,IAAI,CAACJ,mBAAmB,CAACmC,IAAI,CAAClC,MAAM,EAAEkC,IAAI,CAACpC,QAAQ,CAAC;MAC3DuC,KAAK,EAAE/B,MAAM,CAAC+B,KAAK;MACnBrC,MAAM,EAAEkC,IAAI,CAAClC,MAAM;MACnBF,QAAQ,EAAEoC,IAAI,CAACpC;IACjB,CAAC;IACD,MAAMwC,OAAO,GACXL,QAAQ,KAAK,KAAK,GACd,CAACE,WAAW,CAACI,GAAG,EAAEJ,WAAW,CAACK,IAAI,EAAEL,WAAW,CAACM,KAAK,CAAC,GACtD,CAACN,WAAW,CAACF,QAAQ,CAAC,CAAC;IAE7B,KAAK,MAAMS,MAAM,IAAIJ,OAAO,EAAE;MAC5B,MAAMK,OAAO,GAAGD,MAAM,oBAANA,MAAM,CAAEE,eAAe,CAACR,OAAO,CAAC;MAChD,IAAIO,OAAO,EAAE;QACX,OAAOA,OAAO;MAChB;IACF;IACA,OAAO/B,SAAS;EAClB;EAEAiC,kBAAkBA,CAChBZ,QAAuC,EACvCa,KAAa,EACL;IACR,OAAOA,KAAK,CAACC,MAAM,CAChBb,IAAI,IAAK,CAAC,IAAI,CAACF,4BAA4B,CAACC,QAAQ,EAAEC,IAAI,CAC7D,CAAC;EACH;EAEAc,6BAA6BA,CAC3Bf,QAAuC,EACvCa,KAAa,EACoC;IACjD,IAAIF,eAAmC;IAEvC,KAAK,MAAMV,IAAI,IAAIY,KAAK,EAAE;MACxB,MAAMH,OAAO,GAAG,IAAI,CAACX,4BAA4B,CAACC,QAAQ,EAAEC,IAAI,CAAC;MACjEU,eAAe,KAAfA,eAAe,GAAKD,OAAO;MAC3B,MAAMM,8BAA8B,GAClChB,QAAQ,KAAK,MAAM,IACnB,IAAI,CAACH,gBAAgB,CAACI,IAAI,CAAClC,MAAM,EAAEkC,IAAI,CAACpC,QAAQ,CAAC;MACnD,IAAImD,8BAA8B,IAAI,CAACN,OAAO,EAAE;QAC9C,OAAO;UAAEO,QAAQ,EAAE;QAAM,CAAC;MAC5B;IACF;IAEA,OAAO;MAAEA,QAAQ,EAAE,IAAI;MAAEN;IAAgB,CAAC;EAC5C;;EAEA;EACAO,kBAAkBA,CAACnD,MAAc,EAAEF,QAAgB,EAAU;IAC3D,MAAMQ,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACG,QAAQ,CAAC;IACpD,MAAMU,SAAS,GAAG,IAAI,CAACpC,OAAO,CAACqC,aAAa,CAACT,MAAM,CAAC;IACpD,IAAI,CAACM,MAAM,IAAI,CAACE,SAAS,EAAE;MACzB,OAAO,EAAE;IACX;IACA,MAAMW,QAAQ,GAAG,IAAI,CAACtB,yBAAyB,CAACS,MAAM,CAACZ,EAAE,CAAC;IAC1D,MAAMS,KAAK,GAAG,IAAI,CAACJ,mBAAmB,CAACC,MAAM,EAAEF,QAAQ,CAAC;IACxD,OAAOqB,QAAQ,CAACiC,SAAS,GAAGjC,QAAQ,CAACiC,SAAS,CAACjD,KAAK,CAAC,GAAGkD,MAAM,CAAClD,KAAK,IAAI,EAAE,CAAC;EAC7E;;EAEA;AACF;EACEvB,UAAUA,CAACkE,KAAa,EAAU;IAChC,MAAMQ,OAA2D,GAAG,EAAE;IAEtE,KAAK,MAAMpB,IAAI,IAAIY,KAAK,EAAE;MACxB,MAAMxC,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACuC,IAAI,CAACpC,QAAQ,CAAC;MACzD,IAAI,EAACQ,MAAM,YAANA,MAAM,CAAEyB,QAAQ,GAAE;QACrB;MACF;MACA,IAAI,CAAC,IAAI,CAACD,gBAAgB,CAACI,IAAI,CAAClC,MAAM,EAAEkC,IAAI,CAACpC,QAAQ,CAAC,EAAE;QACtD;MACF;MACA,IAAI,IAAI,CAACkC,4BAA4B,CAAC,OAAO,EAAEE,IAAI,CAAC,EAAE;QACpD;MACF;MAEA,MAAMqB,UAAU,GAAG,IAAI,CAACC,eAAe,CAACtB,IAAI,CAAClC,MAAM,EAAEkC,IAAI,CAACpC,QAAQ,CAAC;MACnE,IAAIyD,UAAU,EAAE;QACd,IAAI,CAAChF,aAAa,CAACkF,MAAM,CAACF,UAAU,CAAC;MACvC;MACAD,OAAO,CAACI,IAAI,CAAC;QACX1D,MAAM,EAAEkC,IAAI,CAAClC,MAAM;QACnBF,QAAQ,EAAEoC,IAAI,CAACpC,QAAQ;QACvBK,KAAK,EAAES;MACT,CAAC,CAAC;IACJ;IAEA,IAAI0C,OAAO,CAACK,MAAM,GAAG,CAAC,EAAE;MACtB,IAAI,CAAC1E,eAAe,CAACqE,OAAO,CAAC;IAC/B;IAEA,OAAOA,OAAO,CAAC3F,GAAG,CAAC,CAAC;MAAEqC,MAAM;MAAEF;IAAS,CAAC,MAAM;MAAEE,MAAM;MAAEF;IAAS,CAAC,CAAC,CAAC;EACtE;EAEAhB,UAAUA,CAACkB,MAAc,EAAEF,QAAgB,EAAE;IAC3C,MAAMQ,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACG,QAAQ,CAAC;IACpD,MAAMU,SAAS,GAAG,IAAI,CAACpC,OAAO,CAACqC,aAAa,CAACT,MAAM,CAAC;IACpD,IAAI,EAACM,MAAM,YAANA,MAAM,CAAEyB,QAAQ,KAAI,CAACvB,SAAS,EAAE;MACnC;IACF;IAEA,MAAMW,QAAQ,GAAG,IAAI,CAACtB,yBAAyB,CAACS,MAAM,CAACZ,EAAE,CAAC;IAC1D,IAAI,CAACyB,QAAQ,CAACyC,WAAW,EAAE;MACzB;IACF;IAEA,MAAMzD,KAAK,GAAG,IAAI,CAACJ,mBAAmB,CAACC,MAAM,EAAEF,QAAQ,CAAC;IACxD,MAAM+D,QAAQ,GAAG1C,QAAQ,CAACyC,WAAW,CAACzD,KAAK,CAAC;IAC5C,MAAM2D,eAAe,GAAG,CAACC,MAAM,CAACC,EAAE,CAAC7D,KAAK,EAAE0D,QAAQ,CAAC;IACnD,IAAI,CAACI,WAAW,CAACjE,MAAM,EAAEF,QAAQ,EAAE+D,QAAQ,CAAC;IAC5C;IACA;IACA,IAAI,CAACzF,OAAO,CAAC8F,EAAE,CAACC,iBAAiB,CAC/B;MAAEnE,MAAM;MAAEF;IAAS,CAAC,EACpB;MAAEsE,MAAM,EAAE,QAAQ;MAAEN;IAAgB,CACtC,CAAC;EACH;;EAEA;EACA/E,aAAaA,CAACsF,YAAiB,EAAEnC,IAAU,EAAE;IAC3C,IAAImC,YAAY,KAAKzD,SAAS,EAAE;MAC9B,MAAMO,QAAQ,GAAG,IAAI,CAACtB,yBAAyB,CAACqC,IAAI,CAACpC,QAAQ,CAAC;MAC9D,MAAMsB,UAAU,GAAGD,QAAQ,CAACE,iBAAiB,GACzCF,QAAQ,CAACE,iBAAiB,CAACgD,YAAY,CAAC,GACxCA,YAAY;MAChB,IAAI,CAACJ,WAAW,CAAC/B,IAAI,CAAClC,MAAM,EAAEkC,IAAI,CAACpC,QAAQ,EAAEsB,UAAU,CAAC;IAC1D;EACF;EAEQlB,eAAeA,CACrBF,MAAc,EACdF,QAAgB,EAC8B;IAC9C,MAAMwE,GAAG,GAAG,IAAI,CAACd,eAAe,CAACxD,MAAM,EAAEF,QAAQ,CAAC;IAClD,OAAOwE,GAAG,GAAG,IAAI,CAAC/F,aAAa,CAACoB,GAAG,CAAC2E,GAAG,CAAC,GAAG1D,SAAS;EACtD;EAEQP,aAAaA,CACnBL,MAAc,EACdF,QAAgB,EACY;IAC5B,MAAMwE,GAAG,GAAG,IAAI,CAACd,eAAe,CAACxD,MAAM,EAAEF,QAAQ,CAAC;IAClD,OAAOwE,GAAG,GAAG,IAAI,CAAC7F,WAAW,CAACkB,GAAG,CAAC2E,GAAG,CAAC,GAAG1D,SAAS;EACpD;EAEQ4C,eAAeA,CACrBxD,MAAc,EACdF,QAAgB,EACI;IACpB,MAAMU,SAAS,GAAG,IAAI,CAACpC,OAAO,CAACqC,aAAa,CAACT,MAAM,CAAC;IACpD,MAAMM,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACG,QAAQ,CAAC;IACpD,IAAI,CAACU,SAAS,IAAI,CAACF,MAAM,EAAE;MACzB,OAAOM,SAAS;IAClB;IACA,OAAO,GAAGJ,SAAS,CAAC8D,GAAG,IAAIhE,MAAM,CAACZ,EAAE,EAAE;EACxC;;EAEA;AACF;AACA;AACA;EACE6E,cAAcA,CACZzE,QAAgB,EAChB0E,QAAgB,EACgB;IAChC,MAAMlE,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACG,QAAQ,CAAC;IACpD,IAAI,CAACQ,MAAM,EAAE;MACX,OAAO;QAAEH,KAAK,EAAEqE;MAAS,CAAC;IAC5B;IACA,MAAMrD,QAAQ,GAAG,IAAI,CAACtB,yBAAyB,CAACS,MAAM,CAACZ,EAAE,CAAC;IAC1D,IAAI,CAACyB,QAAQ,CAACsD,WAAW,EAAE;MACzB,OAAO;QAAEtE,KAAK,EAAEqE;MAAS,CAAC;IAC5B;IACA,IAAI;MACF,OAAO;QAAErE,KAAK,EAAEgB,QAAQ,CAACsD,WAAW,CAACD,QAAQ;MAAE,CAAC;IAClD,CAAC,CAAC,MAAM;MAAA,IAAAE,sBAAA;MACN,OAAO;QACLvE,KAAK,EAAEqE,QAAQ;QACfG,KAAK,GAAAD,sBAAA,GAAE,IAAI,CAACtG,OAAO,CAACqD,UAAU,qBAAvBiD,sBAAA,CAAyBhD,SAAS,CACvC,mDACF;MACF,CAAC;IACH;EACF;;EAEA;AACF;AACA;AACA;EACE1C,kBAAkBA,CAChB4F,UAAoE,EACpE;IACA,MAAMtB,OAA2D,GAAG,EAAE;IACtE,KAAK,MAAM;MAAEtD,MAAM;MAAEF,QAAQ;MAAE0E;IAAS,CAAC,IAAII,UAAU,EAAE;MACvD,MAAM;QAAEzE,KAAK;QAAEwE;MAAM,CAAC,GAAG,IAAI,CAACJ,cAAc,CAACzE,QAAQ,EAAE0E,QAAQ,CAAC;MAChE,IAAIG,KAAK,EAAE;QACT,MAAMpB,UAAU,GAAG,IAAI,CAACC,eAAe,CAACxD,MAAM,EAAEF,QAAQ,CAAC;QACzD,IAAIyD,UAAU,EAAE;UACd,IAAI,CAAChF,aAAa,CAACkB,GAAG,CAAC8D,UAAU,EAAE;YAAEpD,KAAK;YAAEY,MAAM,EAAE,CAAC4D,KAAK;UAAE,CAAC,CAAC;QAChE;MACF,CAAC,MAAM;QACLrB,OAAO,CAACI,IAAI,CAAC;UAAE1D,MAAM;UAAEF,QAAQ;UAAEK;QAAM,CAAC,CAAC;MAC3C;IACF;IACA,IAAI,CAAClB,eAAe,CAACqE,OAAO,CAAC;EAC/B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACErE,eAAeA,CAACqE,OAA2D,EAAE;IAC3E,MAAMuB,UAAU,GAAG,IAAIpH,GAAG,CAGxB,CAAC;IAEH,KAAK,MAAM;MAAEuC,MAAM;MAAEF,QAAQ;MAAEK;IAAM,CAAC,IAAImD,OAAO,EAAE;MAAA,IAAAwB,sBAAA;MACjD,MAAMxE,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACG,QAAQ,CAAC;MACpD,MAAMU,SAAS,GAAG,IAAI,CAACpC,OAAO,CAACqC,aAAa,CAACT,MAAM,CAAC;MACpD,IACE,EAACM,MAAM,YAANA,MAAM,CAAEyB,QAAQ,KACjB,CAACvB,SAAS,IACV,CAAC,IAAI,CAACsB,gBAAgB,CAAC9B,MAAM,EAAEF,QAAQ,CAAC,EACxC;QACA;MACF;MAEA,MAAMqB,QAAQ,GAAG,IAAI,CAACtB,yBAAyB,CAACS,MAAM,CAACZ,EAAE,CAAC;MAC1D,MAAMqF,MAAM,GAAG,IAAAzD,wBAAiB,EAC9BnB,KAAK,EACLG,MAAM,CAACiB,UAAU,EACjBJ,QAAQ,CAACK,QAAQ,GAAAsD,sBAAA,GACjB,IAAI,CAAC1G,OAAO,CAACqD,UAAU,qBAAvBqD,sBAAA,CAAyBpD,SAC3B,CAAC;MACD,MAAM6B,UAAU,GAAG,IAAI,CAACC,eAAe,CAACxD,MAAM,EAAEF,QAAQ,CAAC;MAEzD,IAAIiF,MAAM,CAACjE,KAAK,EAAE;QAChB,IAAIyC,UAAU,EAAE;UACd,IAAI,CAAChF,aAAa,CAACkF,MAAM,CAACF,UAAU,CAAC;QACvC;QACA,IAAI,IAAI,CAACnF,OAAO,CAAC4G,QAAQ,CAACC,aAAa,CAACjF,MAAM,CAAC,EAAE;UAC/C;UACA;UACA;UACA,IAAIuD,UAAU,EAAE;YACd,IAAI,CAAC9E,WAAW,CAACgB,GAAG,CAAC8D,UAAU,EAAE;cAC/BvD,MAAM,EAAEQ,SAAS,CAAC8D,GAAG;cACrBxE,QAAQ,EAAEQ,MAAM,CAACZ,EAAE;cACnBS;YACF,CAAC,CAAC;UACJ;UACA;QACF;QACA,IAAI+E,SAAS,GAAGL,UAAU,CAAClF,GAAG,CAACK,MAAM,CAAC;QACtC,IAAI,CAACkF,SAAS,EAAE;UACd,MAAMC,QAAQ,GAAG,IAAI,CAACC,iBAAiB,CAACpF,MAAM,EAAEQ,SAAS,CAACG,IAAI,CAAC;UAC/DuE,SAAS,GAAG;YACVvE,IAAI,EAAEwE,QAAQ,CAACxE,IAAI;YACnB0E,eAAe,EAAE,IAAIC,GAAG,CAACH,QAAQ,CAACE,eAAe;UACnD,CAAC;UACDR,UAAU,CAACpF,GAAG,CAACO,MAAM,EAAEkF,SAAS,CAAC;QACnC;QACAA,SAAS,CAACvE,IAAI,GAAGL,MAAM,CAACyB,QAAQ,CAACmD,SAAS,CAACvE,IAAI,EAAER,KAAK,CAAC;QACvD+E,SAAS,CAACG,eAAe,CAACE,GAAG,CAACjF,MAAM,CAACZ,EAAE,CAAC;MAC1C,CAAC,MAAM,IAAI6D,UAAU,EAAE;QACrB,IAAI,CAAChF,aAAa,CAACkB,GAAG,CAAC8D,UAAU,EAAE;UACjCpD,KAAK;UACLY,MAAM,EAAEgE,MAAM,CAAChE,MAAM,IAAI;QAC3B,CAAC,CAAC;MACJ;IACF;IAEA,MAAMyE,OAAO,GAAGC,KAAK,CAACC,IAAI,CAACb,UAAU,CAACc,MAAM,CAAC,CAAC,CAAC;IAC/C,IAAI,CAACvH,OAAO,CAAC4G,QAAQ,CAACY,WAAW,CAC/BJ,OAAO,CAAC7H,GAAG,CAAC,CAAC;MAAEgD;IAAK,CAAC,KAAKA,IAAI,CAAC,EAC/B6E,OAAO,CAAC7H,GAAG,CAAC,CAAC;MAAE0H;IAAgB,CAAC,KAAKI,KAAK,CAACC,IAAI,CAACL,eAAe,CAAC,CAClE,CAAC;EACH;EAEQpB,WAAWA,CAACjE,MAAc,EAAEF,QAAgB,EAAEK,KAAU,EAAE;IAAA,IAAA0F,sBAAA;IAChE,MAAMvF,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAACG,QAAQ,CAAC;IACpD,MAAMU,SAAS,GAAG,IAAI,CAACpC,OAAO,CAACqC,aAAa,CAACT,MAAM,CAAC;IACpD,IAAI,EAACM,MAAM,YAANA,MAAM,CAAEyB,QAAQ,KAAI,CAACvB,SAAS,EAAE;MACnC;IACF;IAEA,MAAMW,QAAQ,GAAG,IAAI,CAACtB,yBAAyB,CAACS,MAAM,CAACZ,EAAE,CAAC;IAC1D,MAAMqF,MAAM,GAAG,IAAAzD,wBAAiB,EAC9BnB,KAAK,EACLG,MAAM,CAACiB,UAAU,EACjBJ,QAAQ,CAACK,QAAQ,GAAAqE,sBAAA,GACjB,IAAI,CAACzH,OAAO,CAACqD,UAAU,qBAAvBoE,sBAAA,CAAyBnE,SAC3B,CAAC;IACD,MAAM6B,UAAU,GAAG,IAAI,CAACC,eAAe,CAACxD,MAAM,EAAEF,QAAQ,CAAC;IAEzD,IAAIiF,MAAM,CAACjE,KAAK,IAAIyC,UAAU,EAAE;MAC9B,IAAI,CAAChF,aAAa,CAACkF,MAAM,CAACF,UAAU,CAAC;MACrC,IAAI,CAAC9E,WAAW,CAACgB,GAAG,CAAC8D,UAAU,EAAE;QAC/BvD,MAAM,EAAEQ,SAAS,CAAC8D,GAAG;QACrBxE,QAAQ,EAAEQ,MAAM,CAACZ,EAAE;QACnBS;MACF,CAAC,CAAC;IACJ,CAAC,MAAM,IAAIoD,UAAU,EAAE;MACrB,IAAI,CAAChF,aAAa,CAACkB,GAAG,CAAC8D,UAAU,EAAE;QACjCpD,KAAK;QACLY,MAAM,EAAEgE,MAAM,CAAChE,MAAM,IAAI;MAC3B,CAAC,CAAC;IACJ;EACF;EAEA7B,WAAWA,CAAC4G,YAAqB,EAAE;IACjC,IAAI,CAACC,UAAU,CAAE/F,MAAM,IAAKA,MAAM,KAAK8F,YAAY,CAAC;EACtD;;EAEA;EACA3G,QAAQA,CAACa,MAAc,EAAE;IACvB,IAAI,CAAC+F,UAAU,CAAEzB,GAAG,IAAKA,GAAG,KAAKtE,MAAM,CAAC;EAC1C;EAEQ+F,UAAUA,CAACC,UAAuC,EAAE;IAC1D,MAAMC,cAAc,GAAG,IAAIX,GAAG,CAAS,CAAC;IACxC,KAAK,MAAMtF,MAAM,IAAI,IAAI,CAAC5B,OAAO,CAAC4G,QAAQ,CAACkB,OAAO,CAACC,IAAI,CAAC,CAAC,EAAE;MACzD,IAAIH,UAAU,CAAChG,MAAM,CAAC,IAAI,CAAC,IAAI,CAACoG,eAAe,CAACpG,MAAM,CAAC,EAAE;QACvDiG,cAAc,CAACV,GAAG,CAACvF,MAAM,CAAC;MAC5B;IACF;IAEA,MAAMqG,OAAO,GAAG,IAAIf,GAAG,CAAS,CAAC;IACjC,KAAK,MAAMgB,KAAK,IAAI,IAAI,CAAC7H,WAAW,CAACkH,MAAM,CAAC,CAAC,EAAE;MAC7C,IAAIK,UAAU,CAACM,KAAK,CAACtG,MAAM,CAAC,EAAE;QAC5BqG,OAAO,CAACd,GAAG,CAACe,KAAK,CAACtG,MAAM,CAAC;MAC3B;IACF;IAEA,MAAMwF,OAAiD,GAAG,EAAE;IAC5D,KAAK,MAAMxF,MAAM,IAAIqG,OAAO,EAAE;MAC5B,MAAM7F,SAAS,GAAG,IAAI,CAACpC,OAAO,CAACqC,aAAa,CAACT,MAAM,CAAC;MACpD,IAAI,CAACQ,SAAS,EAAE;QACd,IAAI,CAACpB,gBAAgB,CAACY,MAAM,CAAC;MAC/B,CAAC,MAAM,IAAI,IAAI,CAAC5B,OAAO,CAAC4G,QAAQ,CAACC,aAAa,CAACjF,MAAM,CAAC,EAAE;QACtD,IAAI,CAACiG,cAAc,CAACM,GAAG,CAACvG,MAAM,CAAC,EAAE;UAC/B,MAAMmF,QAAQ,GAAG,IAAI,CAACC,iBAAiB,CAACpF,MAAM,EAAEQ,SAAS,CAACG,IAAI,CAAC;UAC/D,IAAI,CAACvC,OAAO,CAAC4G,QAAQ,CAACwB,YAAY,CAACxG,MAAM,EAAEmF,QAAQ,CAACxE,IAAI,CAAC;QAC3D;MACF,CAAC,MAAM;QACL,MAAMwE,QAAQ,GAAG,IAAI,CAACC,iBAAiB,CAACpF,MAAM,EAAEQ,SAAS,CAACG,IAAI,CAAC;QAC/D6E,OAAO,CAAC9B,IAAI,CAACyB,QAAQ,CAAC;MACxB;IACF;IACA,IAAIK,OAAO,CAAC7B,MAAM,GAAG,CAAC,EAAE;MACtB,IAAI,CAACvF,OAAO,CAAC4G,QAAQ,CAACY,WAAW,CAC/BJ,OAAO,CAAC7H,GAAG,CAAC,CAAC;QAAEgD;MAAK,CAAC,KAAKA,IAAI,CAAC,EAC/B6E,OAAO,CAAC7H,GAAG,CAAC,CAAC;QAAE0H;MAAgB,CAAC,KAAKA,eAAe,CACtD,CAAC;IACH;EACF;;EAEA;AACF;EACUe,eAAeA,CAACpG,MAAc,EAAW;IAC/C,IAAIc,KAAK,GAAG,IAAI;IAChB,KAAK,MAAMR,MAAM,IAAI,IAAI,CAAClC,OAAO,CAACkB,UAAU,EAAE;MAC5C,IAAI,CAAC,IAAI,CAACwC,gBAAgB,CAAC9B,MAAM,EAAEM,MAAM,CAACZ,EAAE,CAAC,EAAE;QAC7C;MACF;MACA;MACA;MACA;MACA,IAAI,IAAI,CAACQ,eAAe,CAACF,MAAM,EAAEM,MAAM,CAACZ,EAAE,CAAC,EAAE;QAC3CoB,KAAK,GAAG,KAAK;QACb;MACF;MACA,MAAMX,KAAK,GAAG,IAAI,CAACJ,mBAAmB,CAACC,MAAM,EAAEM,MAAM,CAACZ,EAAE,CAAC;MACzD,MAAMqF,MAAM,GAAG,IAAI,CAAC9D,oBAAoB,CAACX,MAAM,CAACZ,EAAE,EAAES,KAAK,CAAC;MAC1D,IAAI,CAAC4E,MAAM,CAACjE,KAAK,EAAE;QACjBA,KAAK,GAAG,KAAK;QACb,MAAMyC,UAAU,GAAG,IAAI,CAACC,eAAe,CAACxD,MAAM,EAAEM,MAAM,CAACZ,EAAE,CAAC;QAC1D,IAAI6D,UAAU,EAAE;UACd,IAAI,CAAChF,aAAa,CAACkB,GAAG,CAAC8D,UAAU,EAAE;YACjCpD,KAAK;YACLY,MAAM,EAAEgE,MAAM,CAAChE,MAAM,IAAI;UAC3B,CAAC,CAAC;QACJ;MACF;IACF;IACA,OAAOD,KAAK;EACd;EAEQsE,iBAAiBA,CACvBpF,MAAc,EACdW,IAAO,EACiC;IACxC,MAAM0E,eAAe,GAAG,IAAIC,GAAG,CAAS,CAAC;IACzC,KAAK,MAAM,CAAChB,GAAG,EAAEgC,KAAK,CAAC,IAAI,IAAI,CAAC7H,WAAW,EAAE;MAC3C,IAAI6H,KAAK,CAACtG,MAAM,KAAKA,MAAM,EAAE;QAC3B;MACF;MACA,MAAMM,MAAM,GAAG,IAAI,CAAClC,OAAO,CAACmC,UAAU,CAACZ,GAAG,CAAC2G,KAAK,CAACxG,QAAQ,CAAC;MAC1D,IAAIQ,MAAM,YAANA,MAAM,CAAEyB,QAAQ,EAAE;QACpBpB,IAAI,GAAGL,MAAM,CAACyB,QAAQ,CAACpB,IAAI,EAAE2F,KAAK,CAACnG,KAAK,CAAC;QACzCkF,eAAe,CAACE,GAAG,CAACjF,MAAM,CAACZ,EAAE,CAAC;MAChC;MACA,IAAI,CAACjB,WAAW,CAACgF,MAAM,CAACa,GAAG,CAAC;IAC9B;IACA,OAAO;MAAE3D,IAAI;MAAE0E,eAAe,EAAEI,KAAK,CAACC,IAAI,CAACL,eAAe;IAAE,CAAC;EAC/D;;EAEA;AACF;AACA;EACEjG,gBAAgBA,CAACY,MAAc,EAAE;IAC/B,KAAK,MAAM,CAACsE,GAAG,EAAEgC,KAAK,CAAC,IAAI,IAAI,CAAC7H,WAAW,EAAE;MAC3C,IAAI6H,KAAK,CAACtG,MAAM,KAAKA,MAAM,EAAE;QAC3B,IAAI,CAACvB,WAAW,CAACgF,MAAM,CAACa,GAAG,CAAC;MAC9B;IACF;IACA,MAAMmC,MAAM,GAAG,GAAGzG,MAAM,GAAG;IAC3B,KAAK,MAAMsE,GAAG,IAAI,IAAI,CAAC/F,aAAa,CAAC4H,IAAI,CAAC,CAAC,EAAE;MAC3C,IAAI7B,GAAG,CAACoC,UAAU,CAACD,MAAM,CAAC,EAAE;QAC1B,IAAI,CAAClI,aAAa,CAACkF,MAAM,CAACa,GAAG,CAAC;MAChC;IACF;EACF;AACF;AAACqC,OAAA,CAAA7I,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_cellTypes","_utils","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","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","runCellValidation","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","rowUpdates","_this$_parent$collect3","result","mutation","isLocalNewRow","rowUpdate","consumed","_consumeRowDrafts","changedFieldIds","Set","add","updates","Array","from","values","updateItems","_this$_parent$collect4","exceptRowKey","_flushRows","includeRow","invalidNewRows","_drafts","keys","_validateNewRow","rowKeys","entry","has","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 { runCellValidation, validResult } from './utils';\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<string, { value: any; errors: string[] }>();\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 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 runCellValidation(\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, { value, errors: [error] });\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 = runCellValidation(\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 = runCellValidation(\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 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":[]}
@@ -13,6 +13,7 @@ class ClipboardState {
13
13
  (0, _defineProperty2.default)(this, "isCut", false);
14
14
  (0, _defineProperty2.default)(this, "_copiedDataString", void 0);
15
15
  (0, _defineProperty2.default)(this, "_copiedValues", new Map());
16
+ (0, _defineProperty2.default)(this, "_copiedSerialized", new Map());
16
17
  (0, _defineProperty2.default)(this, "_copiedSourceKeys", new Map());
17
18
  (0, _defineProperty2.default)(this, "_parent", void 0);
18
19
  this._parent = parent;
@@ -110,7 +111,7 @@ class ClipboardState {
110
111
  }
111
112
  keptSourceKeys.add((0, _utils.cellKey)(dest.rowKey, dest.columnId));
112
113
  pasted.push(dest);
113
- if (useRichValues) {
114
+ if (useRichValues && this._isSameCellType(offset, dest.columnId, cellValue)) {
114
115
  richChanges.push({
115
116
  rowKey: dest.rowKey,
116
117
  columnId: dest.columnId,
@@ -120,7 +121,9 @@ class ClipboardState {
120
121
  rawChanges.push({
121
122
  rowKey: dest.rowKey,
122
123
  columnId: dest.columnId,
123
- rawValue: cols[c]
124
+ // A copied cell's text can contain tabs or newlines, which break the
125
+ // split of `rawData`, so read it from the copy-time map instead.
126
+ rawValue: useRichValues ? this._copiedSerialized.get(offset) ?? '' : cols[c]
124
127
  });
125
128
  }
126
129
  }
@@ -136,6 +139,17 @@ class ClipboardState {
136
139
  pasted
137
140
  };
138
141
  }
142
+
143
+ // A typed value pasted into a column of another cell type would skip that
144
+ // type's `deserialize`, so its rules would fail on the wrong JS type.
145
+ _isSameCellType(offset, destColumnId, cellValue) {
146
+ const sourceKey = this._copiedSourceKeys.get(offset);
147
+ const source = sourceKey ? (0, _utils.parseCellKey)(sourceKey) : null;
148
+ if (!source) {
149
+ return false;
150
+ }
151
+ return cellValue.resolveCellTypeByColumnId(source.columnId).type === cellValue.resolveCellTypeByColumnId(destColumnId).type;
152
+ }
139
153
  _clearCutSources(keptSourceKeys, cellValue) {
140
154
  const cells = [];
141
155
  for (const key of this.copiedCells) {
@@ -154,6 +168,7 @@ class ClipboardState {
154
168
  this.isCut = false;
155
169
  this._copiedDataString = undefined;
156
170
  this._copiedValues.clear();
171
+ this._copiedSerialized.clear();
157
172
  this._copiedSourceKeys.clear();
158
173
  }
159
174
  isCellCopied(rowKey, columnId) {
@@ -228,6 +243,7 @@ class ClipboardState {
228
243
  row.push(serialized);
229
244
  const offset = `${r - minRow}:${c - minCol}`;
230
245
  this._copiedValues.set(offset, cellValue.getCellDisplayValue(pos.rowKey, pos.columnId));
246
+ this._copiedSerialized.set(offset, serialized);
231
247
  this._copiedSourceKeys.set(offset, (0, _utils.cellKey)(pos.rowKey, pos.columnId));
232
248
  } else {
233
249
  row.push('');
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_EditableTableStateBIReporter","_utils","ClipboardState","constructor","parent","_defineProperty2","default","Set","Map","_parent","makeObservable","copiedCells","observable","isCut","hasCopiedCells","computed","copy","action","cut","paste","clear","origin","tsv","_storeCells","_reportStoredCells","data","size","rawData","cellValue","cellInteraction","target","focusedCell","getCellActionDisabledTooltip","targetPos","_toIndices","isInternal","_copiedDataString","undefined","keptSourceKeys","pasted","_pasteGrid","_clearCutSources","length","bi","clipboardAction","actionName","isExternalSource","clipboardCellCounts","useRichValues","richChanges","rawChanges","rows","split","filter","row","r","cols","c","offset","_copiedValues","has","dest","_toPosition","col","isColumnEditable","rowKey","columnId","sourceKey","_copiedSourceKeys","get","add","cellKey","push","value","rawValue","applyBulkValues","applyBulkRawValues","cells","key","pos","parseCellKey","clearCells","isCellCopied","getCopiedBorder","noBorder","isNeighborCopied","neighbor","top","bottom","left","right","map","cell","actionId","selectedCells","selectedCellsList","getActionableCells","indices","idx","minRow","Math","min","i","maxRow","max","minCol","maxCol","serialized","serializeCellValue","set","getCellDisplayValue","join","exports"],"sources":["../../../../src/state/EditableTable/ClipboardState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport type { Cell, CellBorder } from './types';\nimport type { EditableCellContextMenuAction, FiltersMap } from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport {\n clipboardCellCounts,\n type ClipboardOrigin,\n} from './EditableTableStateBIReporter';\nimport { cellKey, parseCellKey, noBorder } from './utils';\n\nexport class ClipboardState<T, F extends FiltersMap> {\n copiedCells = new Set<string>();\n isCut = false;\n private _copiedDataString?: string;\n private _copiedValues = new Map<string, any>();\n private _copiedSourceKeys = new Map<string, string>();\n private readonly _parent: EditableTableState<T, F>;\n\n constructor(parent: EditableTableState<T, F>) {\n this._parent = parent;\n makeObservable(this, {\n copiedCells: observable,\n isCut: observable,\n hasCopiedCells: computed,\n copy: action,\n cut: action,\n paste: action,\n clear: action,\n });\n }\n\n /**\n * Copy selected cells. Returns serialized TSV string for clipboard.\n */\n copy(origin: ClipboardOrigin = 'Keyboard'): string {\n this.clear();\n const tsv = this._storeCells('copy');\n this._reportStoredCells('copy', origin);\n return tsv;\n }\n\n /**\n * Cut selected cells. Returns serialized TSV string for clipboard.\n */\n cut(origin: ClipboardOrigin = 'Keyboard'): string {\n this.clear();\n const data = this._storeCells('cut');\n this.isCut = this.copiedCells.size > 0;\n this._reportStoredCells('cut', origin);\n return data;\n }\n\n /**\n * Paste data starting at target position.\n * If the clipboard text matches what we stored at copy time, uses the rich\n * typed values instead of deserializing from TSV (avoids lossy round-trip).\n */\n paste(rawData: string, origin: ClipboardOrigin = 'Keyboard') {\n const { cellValue, cellInteraction } = this._parent;\n const target = cellInteraction.focusedCell;\n if (!target) {\n return;\n }\n if (cellValue.getCellActionDisabledTooltip('paste', target)) {\n return;\n }\n const targetPos = this._parent._toIndices(target);\n if (!targetPos) {\n return;\n }\n\n const isInternal =\n this._copiedDataString !== undefined &&\n this._copiedDataString === rawData;\n\n const { keptSourceKeys, pasted } = this._pasteGrid(\n rawData,\n targetPos,\n isInternal,\n cellValue,\n );\n\n if (this.isCut && isInternal) {\n this._clearCutSources(keptSourceKeys, cellValue);\n }\n\n if (pasted.length > 0) {\n this._parent.bi.clipboardAction({\n actionName: 'paste',\n origin,\n isExternalSource: !isInternal,\n ...clipboardCellCounts(pasted),\n });\n }\n\n this.clear();\n }\n\n private _pasteGrid(\n rawData: string,\n targetPos: { row: number; col: number },\n useRichValues: boolean,\n cellValue: EditableTableState<T, F>['cellValue'],\n ): { keptSourceKeys: Set<string>; pasted: Cell[] } {\n const keptSourceKeys = new Set<string>();\n const pasted: Cell[] = [];\n const richChanges: { rowKey: string; columnId: string; value: any }[] = [];\n const rawChanges: { rowKey: string; columnId: string; rawValue: string }[] =\n [];\n const rows = rawData\n .split(/\\r?\\n/)\n .filter((row) => useRichValues || row.length > 0);\n\n for (let r = 0; r < rows.length; r++) {\n const cols = rows[r].split('\\t');\n for (let c = 0; c < cols.length; c++) {\n const offset = `${r}:${c}`;\n if (useRichValues && !this._copiedValues.has(offset)) {\n continue;\n }\n\n const dest = this._parent._toPosition(\n targetPos.row + r,\n targetPos.col + c,\n );\n if (\n !dest ||\n !cellValue.isColumnEditable(dest.rowKey, dest.columnId) ||\n cellValue.getCellActionDisabledTooltip('paste', dest)\n ) {\n const sourceKey = this._copiedSourceKeys.get(offset);\n if (sourceKey) {\n keptSourceKeys.add(sourceKey);\n }\n continue;\n }\n\n keptSourceKeys.add(cellKey(dest.rowKey, dest.columnId));\n pasted.push(dest);\n if (useRichValues) {\n richChanges.push({\n rowKey: dest.rowKey,\n columnId: dest.columnId,\n value: this._copiedValues.get(offset),\n });\n } else {\n rawChanges.push({\n rowKey: dest.rowKey,\n columnId: dest.columnId,\n rawValue: cols[c],\n });\n }\n }\n }\n\n if (richChanges.length > 0) {\n cellValue.applyBulkValues(richChanges);\n }\n if (rawChanges.length > 0) {\n cellValue.applyBulkRawValues(rawChanges);\n }\n\n return { keptSourceKeys, pasted };\n }\n\n private _clearCutSources(\n keptSourceKeys: Set<string>,\n cellValue: EditableTableState<T, F>['cellValue'],\n ) {\n const cells: Cell[] = [];\n for (const key of this.copiedCells) {\n if (keptSourceKeys.has(key)) {\n continue;\n }\n const pos = parseCellKey(key);\n if (pos) {\n cells.push(pos);\n }\n }\n\n cellValue.clearCells(cells);\n }\n\n clear() {\n this.copiedCells.clear();\n this.isCut = false;\n this._copiedDataString = undefined;\n this._copiedValues.clear();\n this._copiedSourceKeys.clear();\n }\n\n isCellCopied(rowKey: string, columnId: string): boolean {\n return this.copiedCells.has(cellKey(rowKey, columnId));\n }\n\n getCopiedBorder(rowKey: string, columnId: string): CellBorder {\n if (!this.isCellCopied(rowKey, columnId)) {\n return noBorder;\n }\n\n const pos = this._parent._toIndices({ rowKey, columnId });\n if (!pos) {\n return noBorder;\n }\n\n const isNeighborCopied = (row: number, col: number) => {\n const neighbor = this._parent._toPosition(row, col);\n return (\n neighbor !== null &&\n this.copiedCells.has(cellKey(neighbor.rowKey, neighbor.columnId))\n );\n };\n\n return {\n top: !isNeighborCopied(pos.row - 1, pos.col),\n bottom: !isNeighborCopied(pos.row + 1, pos.col),\n left: !isNeighborCopied(pos.row, pos.col - 1),\n right: !isNeighborCopied(pos.row, pos.col + 1),\n };\n }\n\n get hasCopiedCells(): boolean {\n return this.copiedCells.size > 0;\n }\n\n private _reportStoredCells(\n actionName: 'copy' | 'cut',\n origin: ClipboardOrigin,\n ) {\n const cells = [...this.copiedCells]\n .map((key) => parseCellKey(key))\n .filter((cell): cell is Cell => cell !== null);\n if (cells.length === 0) {\n return;\n }\n this._parent.bi.clipboardAction({\n actionName,\n origin,\n ...clipboardCellCounts(cells),\n });\n }\n\n private _storeCells(actionId: EditableCellContextMenuAction): string {\n const selectedCells = this._parent.cellInteraction.selectedCellsList;\n if (selectedCells.length === 0) {\n return '';\n }\n\n const { cellValue } = this._parent;\n const cells = cellValue.getActionableCells(actionId, selectedCells);\n if (cells.length === 0) {\n return '';\n }\n\n for (const cell of cells) {\n this.copiedCells.add(cellKey(cell.rowKey, cell.columnId));\n }\n\n const indices = selectedCells\n .map((c) => this._parent._toIndices(c))\n .filter((idx): idx is { row: number; col: number } => idx !== null);\n\n if (indices.length === 0) {\n return '';\n }\n\n const minRow = Math.min(...indices.map((i) => i.row));\n const maxRow = Math.max(...indices.map((i) => i.row));\n const minCol = Math.min(...indices.map((i) => i.col));\n const maxCol = Math.max(...indices.map((i) => i.col));\n\n const data: string[][] = [];\n for (let r = minRow; r <= maxRow; r++) {\n const row: string[] = [];\n for (let c = minCol; c <= maxCol; c++) {\n const pos = this._parent._toPosition(r, c);\n if (pos && this.copiedCells.has(cellKey(pos.rowKey, pos.columnId))) {\n const serialized = cellValue.serializeCellValue(\n pos.rowKey,\n pos.columnId,\n );\n row.push(serialized);\n const offset = `${r - minRow}:${c - minCol}`;\n this._copiedValues.set(\n offset,\n cellValue.getCellDisplayValue(pos.rowKey, pos.columnId),\n );\n this._copiedSourceKeys.set(offset, cellKey(pos.rowKey, pos.columnId));\n } else {\n row.push('');\n }\n }\n data.push(row);\n }\n\n const tsv = data.map((row) => row.join('\\t')).join('\\n');\n this._copiedDataString = tsv;\n return tsv;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_EditableTableStateBIReporter","_utils","ClipboardState","constructor","parent","_defineProperty2","default","Set","Map","_parent","makeObservable","copiedCells","observable","isCut","hasCopiedCells","computed","copy","action","cut","paste","clear","origin","tsv","_storeCells","_reportStoredCells","data","size","rawData","cellValue","cellInteraction","target","focusedCell","getCellActionDisabledTooltip","targetPos","_toIndices","isInternal","_copiedDataString","undefined","keptSourceKeys","pasted","_pasteGrid","_clearCutSources","length","bi","clipboardAction","actionName","isExternalSource","clipboardCellCounts","useRichValues","richChanges","rawChanges","rows","split","filter","row","r","cols","c","offset","_copiedValues","has","dest","_toPosition","col","isColumnEditable","rowKey","columnId","sourceKey","_copiedSourceKeys","get","add","cellKey","push","_isSameCellType","value","rawValue","_copiedSerialized","applyBulkValues","applyBulkRawValues","destColumnId","source","parseCellKey","resolveCellTypeByColumnId","type","cells","key","pos","clearCells","isCellCopied","getCopiedBorder","noBorder","isNeighborCopied","neighbor","top","bottom","left","right","map","cell","actionId","selectedCells","selectedCellsList","getActionableCells","indices","idx","minRow","Math","min","i","maxRow","max","minCol","maxCol","serialized","serializeCellValue","set","getCellDisplayValue","join","exports"],"sources":["../../../../src/state/EditableTable/ClipboardState.ts"],"sourcesContent":["import { action, computed, makeObservable, observable } from 'mobx';\nimport type { Cell, CellBorder } from './types';\nimport type { EditableCellContextMenuAction, FiltersMap } from '@wix/bex-core';\nimport type { EditableTableState } from './EditableTableState';\nimport {\n clipboardCellCounts,\n type ClipboardOrigin,\n} from './EditableTableStateBIReporter';\nimport { cellKey, parseCellKey, noBorder } from './utils';\n\nexport class ClipboardState<T, F extends FiltersMap> {\n copiedCells = new Set<string>();\n isCut = false;\n private _copiedDataString?: string;\n private _copiedValues = new Map<string, any>();\n private _copiedSerialized = new Map<string, string>();\n private _copiedSourceKeys = new Map<string, string>();\n private readonly _parent: EditableTableState<T, F>;\n\n constructor(parent: EditableTableState<T, F>) {\n this._parent = parent;\n makeObservable(this, {\n copiedCells: observable,\n isCut: observable,\n hasCopiedCells: computed,\n copy: action,\n cut: action,\n paste: action,\n clear: action,\n });\n }\n\n /**\n * Copy selected cells. Returns serialized TSV string for clipboard.\n */\n copy(origin: ClipboardOrigin = 'Keyboard'): string {\n this.clear();\n const tsv = this._storeCells('copy');\n this._reportStoredCells('copy', origin);\n return tsv;\n }\n\n /**\n * Cut selected cells. Returns serialized TSV string for clipboard.\n */\n cut(origin: ClipboardOrigin = 'Keyboard'): string {\n this.clear();\n const data = this._storeCells('cut');\n this.isCut = this.copiedCells.size > 0;\n this._reportStoredCells('cut', origin);\n return data;\n }\n\n /**\n * Paste data starting at target position.\n * If the clipboard text matches what we stored at copy time, uses the rich\n * typed values instead of deserializing from TSV (avoids lossy round-trip).\n */\n paste(rawData: string, origin: ClipboardOrigin = 'Keyboard') {\n const { cellValue, cellInteraction } = this._parent;\n const target = cellInteraction.focusedCell;\n if (!target) {\n return;\n }\n if (cellValue.getCellActionDisabledTooltip('paste', target)) {\n return;\n }\n const targetPos = this._parent._toIndices(target);\n if (!targetPos) {\n return;\n }\n\n const isInternal =\n this._copiedDataString !== undefined &&\n this._copiedDataString === rawData;\n\n const { keptSourceKeys, pasted } = this._pasteGrid(\n rawData,\n targetPos,\n isInternal,\n cellValue,\n );\n\n if (this.isCut && isInternal) {\n this._clearCutSources(keptSourceKeys, cellValue);\n }\n\n if (pasted.length > 0) {\n this._parent.bi.clipboardAction({\n actionName: 'paste',\n origin,\n isExternalSource: !isInternal,\n ...clipboardCellCounts(pasted),\n });\n }\n\n this.clear();\n }\n\n private _pasteGrid(\n rawData: string,\n targetPos: { row: number; col: number },\n useRichValues: boolean,\n cellValue: EditableTableState<T, F>['cellValue'],\n ): { keptSourceKeys: Set<string>; pasted: Cell[] } {\n const keptSourceKeys = new Set<string>();\n const pasted: Cell[] = [];\n const richChanges: { rowKey: string; columnId: string; value: any }[] = [];\n const rawChanges: { rowKey: string; columnId: string; rawValue: string }[] =\n [];\n const rows = rawData\n .split(/\\r?\\n/)\n .filter((row) => useRichValues || row.length > 0);\n\n for (let r = 0; r < rows.length; r++) {\n const cols = rows[r].split('\\t');\n for (let c = 0; c < cols.length; c++) {\n const offset = `${r}:${c}`;\n if (useRichValues && !this._copiedValues.has(offset)) {\n continue;\n }\n\n const dest = this._parent._toPosition(\n targetPos.row + r,\n targetPos.col + c,\n );\n if (\n !dest ||\n !cellValue.isColumnEditable(dest.rowKey, dest.columnId) ||\n cellValue.getCellActionDisabledTooltip('paste', dest)\n ) {\n const sourceKey = this._copiedSourceKeys.get(offset);\n if (sourceKey) {\n keptSourceKeys.add(sourceKey);\n }\n continue;\n }\n\n keptSourceKeys.add(cellKey(dest.rowKey, dest.columnId));\n pasted.push(dest);\n if (\n useRichValues &&\n this._isSameCellType(offset, dest.columnId, cellValue)\n ) {\n richChanges.push({\n rowKey: dest.rowKey,\n columnId: dest.columnId,\n value: this._copiedValues.get(offset),\n });\n } else {\n rawChanges.push({\n rowKey: dest.rowKey,\n columnId: dest.columnId,\n // A copied cell's text can contain tabs or newlines, which break the\n // split of `rawData`, so read it from the copy-time map instead.\n rawValue: useRichValues\n ? this._copiedSerialized.get(offset) ?? ''\n : cols[c],\n });\n }\n }\n }\n\n if (richChanges.length > 0) {\n cellValue.applyBulkValues(richChanges);\n }\n if (rawChanges.length > 0) {\n cellValue.applyBulkRawValues(rawChanges);\n }\n\n return { keptSourceKeys, pasted };\n }\n\n // A typed value pasted into a column of another cell type would skip that\n // type's `deserialize`, so its rules would fail on the wrong JS type.\n private _isSameCellType(\n offset: string,\n destColumnId: string,\n cellValue: EditableTableState<T, F>['cellValue'],\n ): boolean {\n const sourceKey = this._copiedSourceKeys.get(offset);\n const source = sourceKey ? parseCellKey(sourceKey) : null;\n if (!source) {\n return false;\n }\n return (\n cellValue.resolveCellTypeByColumnId(source.columnId).type ===\n cellValue.resolveCellTypeByColumnId(destColumnId).type\n );\n }\n\n private _clearCutSources(\n keptSourceKeys: Set<string>,\n cellValue: EditableTableState<T, F>['cellValue'],\n ) {\n const cells: Cell[] = [];\n for (const key of this.copiedCells) {\n if (keptSourceKeys.has(key)) {\n continue;\n }\n const pos = parseCellKey(key);\n if (pos) {\n cells.push(pos);\n }\n }\n\n cellValue.clearCells(cells);\n }\n\n clear() {\n this.copiedCells.clear();\n this.isCut = false;\n this._copiedDataString = undefined;\n this._copiedValues.clear();\n this._copiedSerialized.clear();\n this._copiedSourceKeys.clear();\n }\n\n isCellCopied(rowKey: string, columnId: string): boolean {\n return this.copiedCells.has(cellKey(rowKey, columnId));\n }\n\n getCopiedBorder(rowKey: string, columnId: string): CellBorder {\n if (!this.isCellCopied(rowKey, columnId)) {\n return noBorder;\n }\n\n const pos = this._parent._toIndices({ rowKey, columnId });\n if (!pos) {\n return noBorder;\n }\n\n const isNeighborCopied = (row: number, col: number) => {\n const neighbor = this._parent._toPosition(row, col);\n return (\n neighbor !== null &&\n this.copiedCells.has(cellKey(neighbor.rowKey, neighbor.columnId))\n );\n };\n\n return {\n top: !isNeighborCopied(pos.row - 1, pos.col),\n bottom: !isNeighborCopied(pos.row + 1, pos.col),\n left: !isNeighborCopied(pos.row, pos.col - 1),\n right: !isNeighborCopied(pos.row, pos.col + 1),\n };\n }\n\n get hasCopiedCells(): boolean {\n return this.copiedCells.size > 0;\n }\n\n private _reportStoredCells(\n actionName: 'copy' | 'cut',\n origin: ClipboardOrigin,\n ) {\n const cells = [...this.copiedCells]\n .map((key) => parseCellKey(key))\n .filter((cell): cell is Cell => cell !== null);\n if (cells.length === 0) {\n return;\n }\n this._parent.bi.clipboardAction({\n actionName,\n origin,\n ...clipboardCellCounts(cells),\n });\n }\n\n private _storeCells(actionId: EditableCellContextMenuAction): string {\n const selectedCells = this._parent.cellInteraction.selectedCellsList;\n if (selectedCells.length === 0) {\n return '';\n }\n\n const { cellValue } = this._parent;\n const cells = cellValue.getActionableCells(actionId, selectedCells);\n if (cells.length === 0) {\n return '';\n }\n\n for (const cell of cells) {\n this.copiedCells.add(cellKey(cell.rowKey, cell.columnId));\n }\n\n const indices = selectedCells\n .map((c) => this._parent._toIndices(c))\n .filter((idx): idx is { row: number; col: number } => idx !== null);\n\n if (indices.length === 0) {\n return '';\n }\n\n const minRow = Math.min(...indices.map((i) => i.row));\n const maxRow = Math.max(...indices.map((i) => i.row));\n const minCol = Math.min(...indices.map((i) => i.col));\n const maxCol = Math.max(...indices.map((i) => i.col));\n\n const data: string[][] = [];\n for (let r = minRow; r <= maxRow; r++) {\n const row: string[] = [];\n for (let c = minCol; c <= maxCol; c++) {\n const pos = this._parent._toPosition(r, c);\n if (pos && this.copiedCells.has(cellKey(pos.rowKey, pos.columnId))) {\n const serialized = cellValue.serializeCellValue(\n pos.rowKey,\n pos.columnId,\n );\n row.push(serialized);\n const offset = `${r - minRow}:${c - minCol}`;\n this._copiedValues.set(\n offset,\n cellValue.getCellDisplayValue(pos.rowKey, pos.columnId),\n );\n this._copiedSerialized.set(offset, serialized);\n this._copiedSourceKeys.set(offset, cellKey(pos.rowKey, pos.columnId));\n } else {\n row.push('');\n }\n }\n data.push(row);\n }\n\n const tsv = data.map((row) => row.join('\\t')).join('\\n');\n this._copiedDataString = tsv;\n return tsv;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../../src/state/EditableTable/types.ts"],"sourcesContent":["import type { ComponentType } from 'react';\nimport type {\n EditableCellConfig,\n Field,\n Translate,\n ValidationRule,\n} from '@wix/bex-core';\nimport type { RichTextStyleVariables } from '@wix/patterns-fields';\nimport type { TableColumn } from '../../model/tableColumn';\nimport type { ReferenceTypeConfig } from '../../components/EditableTable/cellTypes/reference/types';\nimport type { AddressCellTypeConfig } from '../../components/EditableTable/cellTypes/address';\nimport type {\n CellViewProps,\n CellEditProps,\n CellEditWrapperProps,\n} from '../../components/EditableTable/types';\n\nexport interface RichTextCellTypeConfig {\n textStyle?: RichTextStyleVariables;\n}\n\nexport interface Cell {\n rowKey: string;\n columnId: string;\n}\n\nexport interface CellBorder {\n top: boolean;\n bottom: boolean;\n left: boolean;\n right: boolean;\n}\n\nexport type { ValidationRule } from '@wix/bex-core';\n\nexport interface ValidationResult {\n valid: boolean;\n errors?: string[];\n}\n\nexport interface CellType {\n type: keyof CellTypeConfigMap;\n\n /** Render cell in view mode (read-only display) */\n ViewComponent: ComponentType<CellViewProps<any>>;\n\n /** Render cell in edit mode (inline editor). Optional — omit for view-only cells. */\n EditComponent?: ComponentType<CellEditProps<any>>;\n\n /** Serialize value to clipboard string */\n serialize?: (value: any) => string;\n\n /** Deserialize clipboard string to value */\n deserialize?: (raw: string) => any;\n\n /** Validate a cell value. Return null if valid, or error message string.\n * `translate` is optional so cell types whose validate doesn't need\n * localization (text/number/date/…) can keep their existing call sites.\n * Cell types that DO localize (array/object) must be called with a translator. */\n validate?: (\n value: any,\n rules?: ValidationRule[],\n translate?: Translate,\n ) => string | null;\n\n /** Can this cell type be edited? (default: true) */\n editable?: boolean;\n\n /** Availability of Cairo's built-in cell context-menu actions. */\n contextMenu?: EditableCellConfig<unknown>['contextMenu'];\n\n /** Toggle value on single click (e.g., boolean checkbox). Skips focus→edit flow. */\n toggleValue?: (value: any) => any;\n\n /** Enter edit mode on single click (e.g., image cell with no value). */\n editOnClick?: (value: any) => boolean;\n\n /** Show the EditComponent when the cell is focused, without entering edit mode.\n * Keyboard navigation remains active. Similar to toggleValue but without toggling. */\n showEditWhenFocused?: boolean;\n\n /** Optional wrapper component the cell type defines to own behavior that must\n * outlive the inline editor. EditableCell mounts it around the cell content\n * and keeps it mounted across the edit↔view transition (e.g. a reference cell\n * navigating to an overlay and refreshing the table on return). The wrapper\n * hands anything the editor needs down via its own context. */\n EditWrapper?: ComponentType<CellEditWrapperProps>;\n\n /** Cell content can grow past row height when focused (e.g. multi-document\n * wraps chips into multiple rows). The framework releases the bottom anchor\n * and lays an opaque base under the selection tint so the overflow doesn't\n * bleed adjacent rows through.\n * Only applies to showEditWhenFocused cells — others release the bottom\n * anchor via :editing already. */\n growable?: boolean;\n\n /** Called on type-to-edit. Return object with cleared value and/or prevent flag.\n * CMS-web pattern: text clears to '', number clears only for digits, date blocks non-digits.\n * Return undefined to block the key. Return {} to enter edit mode without changing the value. */\n onTypeToEdit?: (params: {\n key: string;\n validation?: ValidationRule[];\n }) => { value?: any } | undefined;\n\n /** Optional hook to normalize the committed value (e.g. auto-prepend https://).\n * Called before commitEdit() from EditableCell (blur/Enter) and useKeyboardNavigation (Tab).\n * The value is written back to editingValue via runInAction before committing. */\n normalizeOnCommit?: (value: any) => any;\n\n /** When true, type-to-edit flushes the edit-mode render synchronously and\n * focuses the input within the same keydown event, then lets the browser's\n * default action deliver the keystroke to the now-focused input naturally\n * (no preventDefault, no programmatic value injection).\n * Mirrors cms-web's `focusOnTyping` pattern. Use for cells that wrap a\n * controlled input whose value can't be seeded via props (e.g. WSR TimeInput). */\n nativeTypeToEdit?: boolean;\n}\n\nexport interface CellTypeConfigMap {\n text: never;\n number: never;\n boolean: never;\n url: never;\n email: never;\n color: never;\n date: never;\n time: never;\n datetime: never;\n object: never;\n array: never;\n image: never;\n document: never;\n multiDocument: never;\n richContent: never;\n video: never;\n audio: never;\n richText: RichTextCellTypeConfig;\n mediaGallery: never;\n reference: ReferenceTypeConfig;\n multiReference: ReferenceTypeConfig;\n address: AddressCellTypeConfig;\n /** An inline custom cell: the full cell contract minus the registry key.\n * Authorable directly on a column (`cellType: 'custom'` + `typeConfig`),\n * and also produced by the column builder when a schema field's type\n * definition (registered via the source's `fieldTypes`) has an\n * `editableTable` slot. */\n custom: Omit<CellType, 'type'>;\n}\n\ninterface EditableColumnBase<T> extends Omit<TableColumn<T>, 'render'> {\n id: string;\n /** Column type — maps to a CellType in the registry */\n cellType: keyof CellTypeConfigMap;\n\n /** Extract the cell value from the row data */\n getValue: (item: T) => any;\n\n /** Field metadata associated with the column, when available. */\n field?: Field;\n\n /** Return updated item with new cell value (immutable) */\n setValue?: (item: T, value: any) => T;\n\n /** Column-level validation rules */\n validation?: ValidationRule[];\n\n /** Is this column editable? (default: true if setValue exists) */\n editable?: boolean | ((item: T) => boolean);\n\n /** True if this column represents the schema's primary field. Drives header-action disable rules (e.g. blocks Delete, blocks Make Primary). */\n isPrimary?: boolean;\n\n /** True if this column represents a system field. Drives header-action disable rules (e.g. blocks Edit, Delete, Duplicate). */\n isSystem?: boolean;\n}\n\nexport type EditableColumn<\n T,\n C extends keyof CellTypeConfigMap = keyof CellTypeConfigMap,\n> = C extends C\n ? EditableColumnBase<T> & {\n cellType: C;\n typeConfig?: CellTypeConfigMap[C] extends never\n ? never\n : CellTypeConfigMap[C];\n }\n : never;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../../src/state/EditableTable/types.ts"],"sourcesContent":["import type { ComponentType } from 'react';\nimport type {\n EditableCellConfig,\n Field,\n Translate,\n ValidationRule,\n} from '@wix/bex-core';\nimport type { RichTextStyleVariables } from '@wix/patterns-fields';\nimport type { TableColumn } from '../../model/tableColumn';\nimport type { ReferenceTypeConfig } from '../../components/EditableTable/cellTypes/reference/types';\nimport type { AddressCellTypeConfig } from '../../components/EditableTable/cellTypes/address';\nimport type {\n CellViewProps,\n CellEditProps,\n CellEditWrapperProps,\n} from '../../components/EditableTable/types';\n\nexport interface RichTextCellTypeConfig {\n textStyle?: RichTextStyleVariables;\n}\n\nexport interface Cell {\n rowKey: string;\n columnId: string;\n}\n\nexport interface CellBorder {\n top: boolean;\n bottom: boolean;\n left: boolean;\n right: boolean;\n}\n\nexport type { ValidationRule } from '@wix/bex-core';\n\nexport interface ValidationResult {\n valid: boolean;\n errors?: string[];\n}\n\nexport interface CellType {\n type: keyof CellTypeConfigMap;\n\n /** Render cell in view mode (read-only display) */\n ViewComponent: ComponentType<CellViewProps<any>>;\n\n /** Render cell in edit mode (inline editor). Optional — omit for view-only cells. */\n EditComponent?: ComponentType<CellEditProps<any>>;\n\n /** Serialize value to clipboard string */\n serialize?: (value: any) => string;\n\n /** Deserialize clipboard string to value */\n deserialize?: (raw: string) => any;\n\n /** Validate a cell value. Return null if valid, or error message string.\n * `translate` is optional so cell types whose validate doesn't need\n * localization (text/number/date/…) can keep their existing call sites.\n * Cell types that DO localize (array/object) must be called with a translator. */\n validate?: (\n value: any,\n rules?: ValidationRule[],\n translate?: Translate,\n ) => string | null;\n\n /** Error message for pasted text that `deserialize` rejected. Receives the\n * raw text, not a typed value. Omit it to show the generic\n * \"not compatible\" message. */\n invalidInputMessage?: (raw: string, translate?: Translate) => string | null;\n\n /** Can this cell type be edited? (default: true) */\n editable?: boolean;\n\n /** Availability of Cairo's built-in cell context-menu actions. */\n contextMenu?: EditableCellConfig<unknown>['contextMenu'];\n\n /** Toggle value on single click (e.g., boolean checkbox). Skips focus→edit flow. */\n toggleValue?: (value: any) => any;\n\n /** Enter edit mode on single click (e.g., image cell with no value). */\n editOnClick?: (value: any) => boolean;\n\n /** Show the EditComponent when the cell is focused, without entering edit mode.\n * Keyboard navigation remains active. Similar to toggleValue but without toggling. */\n showEditWhenFocused?: boolean;\n\n /** Optional wrapper component the cell type defines to own behavior that must\n * outlive the inline editor. EditableCell mounts it around the cell content\n * and keeps it mounted across the edit↔view transition (e.g. a reference cell\n * navigating to an overlay and refreshing the table on return). The wrapper\n * hands anything the editor needs down via its own context. */\n EditWrapper?: ComponentType<CellEditWrapperProps>;\n\n /** Cell content can grow past row height when focused (e.g. multi-document\n * wraps chips into multiple rows). The framework releases the bottom anchor\n * and lays an opaque base under the selection tint so the overflow doesn't\n * bleed adjacent rows through.\n * Only applies to showEditWhenFocused cells — others release the bottom\n * anchor via :editing already. */\n growable?: boolean;\n\n /** Called on type-to-edit. Return object with cleared value and/or prevent flag.\n * CMS-web pattern: text clears to '', number clears only for digits, date blocks non-digits.\n * Return undefined to block the key. Return {} to enter edit mode without changing the value. */\n onTypeToEdit?: (params: {\n key: string;\n validation?: ValidationRule[];\n }) => { value?: any } | undefined;\n\n /** Optional hook to normalize the committed value (e.g. auto-prepend https://).\n * Called before commitEdit() from EditableCell (blur/Enter) and useKeyboardNavigation (Tab).\n * The value is written back to editingValue via runInAction before committing. */\n normalizeOnCommit?: (value: any) => any;\n\n /** When true, type-to-edit flushes the edit-mode render synchronously and\n * focuses the input within the same keydown event, then lets the browser's\n * default action deliver the keystroke to the now-focused input naturally\n * (no preventDefault, no programmatic value injection).\n * Mirrors cms-web's `focusOnTyping` pattern. Use for cells that wrap a\n * controlled input whose value can't be seeded via props (e.g. WSR TimeInput). */\n nativeTypeToEdit?: boolean;\n}\n\nexport interface CellTypeConfigMap {\n text: never;\n number: never;\n boolean: never;\n url: never;\n email: never;\n color: never;\n date: never;\n time: never;\n datetime: never;\n object: never;\n array: never;\n image: never;\n document: never;\n multiDocument: never;\n richContent: never;\n video: never;\n audio: never;\n richText: RichTextCellTypeConfig;\n mediaGallery: never;\n reference: ReferenceTypeConfig;\n multiReference: ReferenceTypeConfig;\n address: AddressCellTypeConfig;\n /** An inline custom cell: the full cell contract minus the registry key.\n * Authorable directly on a column (`cellType: 'custom'` + `typeConfig`),\n * and also produced by the column builder when a schema field's type\n * definition (registered via the source's `fieldTypes`) has an\n * `editableTable` slot. */\n custom: Omit<CellType, 'type'>;\n}\n\ninterface EditableColumnBase<T> extends Omit<TableColumn<T>, 'render'> {\n id: string;\n /** Column type — maps to a CellType in the registry */\n cellType: keyof CellTypeConfigMap;\n\n /** Extract the cell value from the row data */\n getValue: (item: T) => any;\n\n /** Field metadata associated with the column, when available. */\n field?: Field;\n\n /** Return updated item with new cell value (immutable) */\n setValue?: (item: T, value: any) => T;\n\n /** Column-level validation rules */\n validation?: ValidationRule[];\n\n /** Is this column editable? (default: true if setValue exists) */\n editable?: boolean | ((item: T) => boolean);\n\n /** True if this column represents the schema's primary field. Drives header-action disable rules (e.g. blocks Delete, blocks Make Primary). */\n isPrimary?: boolean;\n\n /** True if this column represents a system field. Drives header-action disable rules (e.g. blocks Edit, Delete, Duplicate). */\n isSystem?: boolean;\n}\n\nexport type EditableColumn<\n T,\n C extends keyof CellTypeConfigMap = keyof CellTypeConfigMap,\n> = C extends C\n ? EditableColumnBase<T> & {\n cellType: C;\n typeConfig?: CellTypeConfigMap[C] extends never\n ? never\n : CellTypeConfigMap[C];\n }\n : never;\n"],"mappings":"","ignoreList":[]}
@@ -5,14 +5,14 @@ exports.vars = exports.style = exports.stVars = exports.st = exports.namespace =
5
5
  var _stylableEsmRuntime = require("../../stylable-esm-runtime.js");
6
6
  // @ts-nocheck
7
7
 
8
- var _namespace_ = "FormPageHeader981342176";
8
+ var _namespace_ = "FormPageHeader2185920471";
9
9
  var _style_ = _stylableEsmRuntime.classesRuntime.bind(null, _namespace_);
10
10
  var cssStates = exports.cssStates = _stylableEsmRuntime.statesRuntime.bind(null, _namespace_);
11
11
  var style = exports.style = _style_;
12
12
  var st = exports.st = _style_;
13
13
  var namespace = exports.namespace = _namespace_;
14
14
  var classes = exports.classes = {
15
- "root": "FormPageHeader981342176__root"
15
+ "root": "FormPageHeader2185920471__root"
16
16
  };
17
17
  var keyframes = exports.keyframes = {};
18
18
  var layers = exports.layers = {};
@@ -1 +1 @@
1
- {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/FormPage/FormPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"FormPageHeader981342176\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"FormPageHeader981342176__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,yBAAyB;AAC3C,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC;AAA+B,CAAC;AACtD,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_stylableEsmRuntime","require","_namespace_","_style_","classesRuntime","bind","cssStates","exports","statesRuntime","style","st","namespace","classes","keyframes","layers","containers","stVars","vars"],"sources":["../../../../src/state/FormPage/FormPageHeader.st.css.ts"],"sourcesContent":["// @ts-nocheck\n\n\nimport { classesRuntime, statesRuntime } from \"../../stylable-esm-runtime.js\";\n\n\n\nvar _namespace_ = \"FormPageHeader2185920471\";\nvar _style_ = classesRuntime.bind(null, _namespace_);\n\nexport var cssStates = statesRuntime.bind(null, _namespace_);\nexport var style = _style_;\nexport var st: import(\"@stylable/runtime\").STFunction = _style_;\n\nexport var namespace = _namespace_;\nexport var classes = {\"root\":\"FormPageHeader2185920471__root\"};\nexport var keyframes = {}; \nexport var layers = {};\nexport var containers = {};\nexport var stVars = {}; \nexport var vars = {}; \n\n\n\n\n"],"mappings":";;;;AAGA,IAAAA,mBAAA,GAAAC,OAAA;AAHA;;AAOA,IAAIC,WAAW,GAAG,0BAA0B;AAC5C,IAAIC,OAAO,GAAGC,kCAAc,CAACC,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AAE7C,IAAII,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAGE,iCAAa,CAACH,IAAI,CAAC,IAAI,EAAEH,WAAW,CAAC;AACrD,IAAIO,KAAK,GAAAF,OAAA,CAAAE,KAAA,GAAGN,OAAO;AACnB,IAAIO,EAA0C,GAAAH,OAAA,CAAAG,EAAA,GAAGP,OAAO;AAExD,IAAIQ,SAAS,GAAAJ,OAAA,CAAAI,SAAA,GAAGT,WAAW;AAC3B,IAAIU,OAAO,GAAAL,OAAA,CAAAK,OAAA,GAAG;EAAC,MAAM,EAAC;AAAgC,CAAC;AACvD,IAAIC,SAAS,GAAAN,OAAA,CAAAM,SAAA,GAAG,CAAC,CAAC;AAClB,IAAIC,MAAM,GAAAP,OAAA,CAAAO,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,UAAU,GAAAR,OAAA,CAAAQ,UAAA,GAAG,CAAC,CAAC;AACnB,IAAIC,MAAM,GAAAT,OAAA,CAAAS,MAAA,GAAG,CAAC,CAAC;AACf,IAAIC,IAAI,GAAAV,OAAA,CAAAU,IAAA,GAAG,CAAC,CAAC","ignoreList":[]}
@@ -224,12 +224,14 @@ class GridBaseState {
224
224
  itemsContentHeight
225
225
  },
226
226
  _sizeProps: {
227
- rowHeightFixed
227
+ rowHeightFixed,
228
+ rowHeightIncludingGap
228
229
  }
229
230
  } = this;
230
231
  const overscanCount = Math.round(itemsContentHeight / rowHeightFixed * 1.5);
231
232
  return {
232
233
  ...this._sizeProps,
234
+ estimatedRowHeight: rowHeightIncludingGap(),
233
235
  overscanCount
234
236
  };
235
237
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_RectState","_ResponsiveColumnsState","GridBaseState","_dnd","_this$collectionDragA","collectionDragAndDropState","dnd","constructor","params","_params$range","_params$range2","_defineProperty2","default","undefined","origin","toolbar","toolbarBIReporter","onAddItemClick","items","onAddItemActionComplete","container","collection","parentState","layoutType","_containerRectState","RectState","_draggable","draggable","_responsiveColumnsState","ResponsiveColumnsState","gridState","minItemWidth","rectState","_sizePreset","sizePreset","_localLimit","range","length","_localStart","start","makeObservable","trailingItemsCount","observable","ref","forceRenderIndexes","preset","computed","itemsToRenderCount","itemsToRender","rowCount","isInteracting","calcGridProps","columnsCount","_sizeProps","itemKeyRecyclerOverride","itemsContentWidth","containerPaddingTop","gap","imagePlacement","contentPadding","aspectRatio","footerHeights","_this$_dnd","isDisabled","window","result","keyedItems","itemsCount","Math","min","fetchedLastPage","floor","reportBi","columnCount","containerRect","ceil","_this$_dnd2","_this$_dnd3","isActive","isDropping","Array","fill","getItemRenderTypeAt","index","indexInCollection","errorMonitor","responsiveColumnCount","width","widthWithLastColumnGap","widthWithoutGaps","columnWidth","cardFooterSize","cardFooterHeight","cardTopImageHeight","rowHeight","columnWidthIncludingGap","rowHeightIncludingGap","rowHeightFixed","itemsContentHeight","overscanCount","round","getCollectionSnapshot","_keyedItems$index","key","dragAndDropCategories","listAttributes","_this$_dnd4","nullAnnouncements","role","_subscribe","_subGrids","push","i","indexOf","splice","init","exports"],"sources":["../../../src/state/GridBaseState.ts"],"sourcesContent":["import {\n WixPatternsContainer,\n CollectionState,\n FiltersMap,\n} from '@wix/bex-core';\nimport { computed, makeObservable, observable } from 'mobx';\nimport {\n ToolbarCollectionState,\n ToolbarCollectionStateParamsInitParams,\n} from './ToolbarCollectionState';\nimport { CollectionDragAndDropState } from '../components/DragAndDrop';\nimport { RectState } from './RectState';\nimport { GridSizePreset } from './gridSizePresets';\nimport { ResponsiveColumnsState } from './ResponsiveColumnsState';\nimport { GridParentState } from './GridParentState';\nimport type { Preset } from '../components/Grid/Grid.types';\n\nexport type LayoutType = 'grid' | 'list';\n\nexport interface GridBaseStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar: ToolbarCollectionState<any, Partial<F>>;\n readonly sizePreset: GridSizePreset;\n readonly range?: { start: number; length: number };\n readonly layoutType: LayoutType | undefined;\n readonly parentState: GridParentState<T, F>;\n readonly draggable?: 'none' | 'draggable';\n}\n\nexport interface GridBaseStateInitParams\n extends ToolbarCollectionStateParamsInitParams {}\n\nexport class GridBaseState<T, F extends FiltersMap> {\n readonly toolbar;\n readonly container;\n readonly collection;\n readonly _containerRectState;\n readonly _responsiveColumnsState;\n readonly parentState;\n _sizePreset;\n layoutType;\n\n trailingItemsCount = 0;\n minItemWidth = 196;\n smallCardWidthThreshold = 200;\n preset: Preset = 'title';\n _draggable: 'none' | 'draggable' = 'none';\n _localLimit: number | null | undefined;\n _localStart: number;\n forceRenderIndexes: number[] | undefined = undefined;\n\n collectionDragAndDropState: CollectionDragAndDropState<T, F> | null = null;\n\n get _dnd() {\n return this.collectionDragAndDropState?.dnd;\n }\n\n constructor(params: GridBaseStateParams<T, F>) {\n this.container = params.container;\n this.collection = params.collection;\n this.parentState = params.parentState;\n this.layoutType = params.layoutType ?? 'grid';\n this._containerRectState = new RectState({\n container: this.container,\n });\n this._draggable = params.draggable ?? 'none';\n this.toolbar = params.toolbar as ToolbarCollectionState<\n unknown,\n Partial<F>\n >;\n this._responsiveColumnsState = new ResponsiveColumnsState({\n gridState: this,\n minItemWidth: this.minItemWidth,\n rectState: this._containerRectState,\n });\n this._sizePreset = params.sizePreset;\n this._localLimit = params.range?.length;\n this._localStart = params.range?.start ?? 0;\n\n makeObservable(this, {\n trailingItemsCount: observable.ref,\n forceRenderIndexes: observable.ref,\n preset: observable.ref,\n _draggable: observable.ref,\n draggable: computed,\n itemsToRenderCount: computed,\n itemsToRender: computed,\n rowCount: computed,\n isInteracting: computed,\n calcGridProps: computed,\n columnsCount: computed,\n _sizeProps: computed,\n itemKeyRecyclerOverride: computed,\n _localLimit: observable.ref,\n _localStart: observable.ref,\n itemsContentWidth: computed,\n containerPaddingTop: computed,\n gap: computed,\n _sizePreset: observable.ref,\n layoutType: observable.ref,\n });\n }\n\n get sizePreset() {\n return this.parentState._sizePreset ?? this._sizePreset;\n }\n\n get imagePlacement() {\n return this.sizePreset.imagePlacement;\n }\n\n get gap() {\n const { layoutType } = this;\n if (layoutType === 'list') {\n return 12;\n }\n\n return 24;\n }\n\n get containerPaddingTop() {\n const { layoutType } = this;\n if (layoutType === 'list') {\n return 0;\n }\n\n return this.toolbar.contentPadding;\n }\n\n get aspectRatio() {\n return this.sizePreset.aspectRatio;\n }\n\n get footerHeights() {\n return this.sizePreset.footerHeights;\n }\n\n get itemsContentWidth() {\n return this._responsiveColumnsState.itemsContentWidth;\n }\n\n get draggable() {\n if (this._dnd?.isDisabled) {\n return 'none' as const;\n }\n return this._draggable;\n }\n\n get window() {\n return this.container.window;\n }\n\n get itemsToRenderCount() {\n const { collection, trailingItemsCount, _localLimit, _localStart } = this;\n const {\n result: { keyedItems },\n } = collection;\n\n const itemsCount =\n _localLimit != null\n ? Math.min(_localLimit, keyedItems.length)\n : keyedItems.length;\n\n return collection.fetchedLastPage ||\n (_localLimit != null && _localStart + _localLimit < keyedItems.length)\n ? itemsCount + trailingItemsCount\n : itemsCount - Math.floor(itemsCount % this.columnsCount);\n }\n\n get reportBi() {\n return this.toolbar.reportBi;\n }\n\n get columnsCount() {\n return this.calcGridProps.columnCount;\n }\n\n get containerRect() {\n return this.toolbar.containerRect;\n }\n\n get rowCount() {\n const { itemsToRenderCount, columnsCount } = this;\n\n return Math.ceil(itemsToRenderCount / columnsCount);\n }\n\n get isInteracting() {\n return this._dnd?.isActive || this._dnd?.isDropping;\n }\n\n get itemsToRender(): null[] {\n const { itemsToRenderCount } = this;\n return new Array(itemsToRenderCount).fill(null);\n }\n\n getItemRenderTypeAt(index: number) {\n const { collection, itemsToRenderCount, _localStart } = this;\n const {\n result: { keyedItems },\n } = collection;\n\n if (index >= itemsToRenderCount) {\n return null;\n }\n\n const indexInCollection = index + _localStart;\n\n if (indexInCollection >= keyedItems.length) {\n return 'trailing';\n }\n\n return keyedItems[indexInCollection];\n }\n\n get errorMonitor() {\n return this.container.errorMonitor;\n }\n\n get _sizeProps() {\n const {\n aspectRatio,\n preset,\n draggable,\n _responsiveColumnsState: {\n gap,\n columnCount: responsiveColumnCount,\n itemsContentWidth: width,\n widthWithLastColumnGap,\n },\n layoutType,\n } = this;\n\n const columnCount = layoutType === 'list' ? 1 : responsiveColumnCount;\n\n const widthWithoutGaps = width - (columnCount - 1) * gap;\n const columnWidth = widthWithoutGaps / columnCount;\n\n const cardFooterSize = 'small' as const;\n\n const cardFooterHeight =\n this.footerHeights[preset][draggable][cardFooterSize];\n const cardTopImageHeight = columnWidth * aspectRatio;\n const rowHeight =\n cardTopImageHeight + (cardFooterHeight > 0 ? cardFooterHeight + 1 : 0);\n\n const columnWidthIncludingGap = widthWithLastColumnGap / columnCount;\n const rowHeightIncludingGap = rowHeight + gap;\n\n return {\n columnCount,\n columnWidth: () => columnWidth,\n columnWidthIncludingGap: () => columnWidthIncludingGap,\n rowHeight: () => rowHeight,\n rowHeightFixed: rowHeight,\n cardTopImageHeight,\n rowHeightIncludingGap: () => rowHeightIncludingGap,\n cardFooterHeight,\n cardFooterSize,\n };\n }\n\n get calcGridProps() {\n const {\n toolbar: { itemsContentHeight },\n _sizeProps: { rowHeightFixed },\n } = this;\n\n const overscanCount = Math.round(\n (itemsContentHeight / rowHeightFixed) * 1.5,\n );\n\n return {\n ...this._sizeProps,\n overscanCount,\n };\n }\n\n get getCollectionSnapshot() {\n return this.toolbar.getCollectionSnapshot;\n }\n\n onAddItemClick = (origin?: string) => {\n this.toolbar.toolbarBIReporter.onAddItemClick(origin);\n };\n\n onAddItemActionComplete = async (items: T[]) => {\n return this.toolbar.onAddItemActionComplete(items);\n };\n\n get itemKeyRecyclerOverride() {\n const { collection } = this;\n const {\n result: { keyedItems },\n } = collection;\n return (index: number) => {\n return keyedItems[index]?.key ?? index;\n };\n }\n\n get dragAndDropCategories() {\n return this.toolbar.dragAndDropCategories;\n }\n\n get listAttributes() {\n return {\n ...this._dnd?.nullAnnouncements.listAttributes?.(),\n role: 'list',\n };\n }\n\n _subscribe() {\n const {\n parentState: { _subGrids },\n } = this;\n\n if (!_subGrids) {\n return;\n }\n\n _subGrids.push(this);\n\n return () => {\n const i = _subGrids.indexOf(this);\n i !== -1 && _subGrids.splice(i, 1);\n };\n }\n\n init() {\n return this._subscribe();\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_RectState","_ResponsiveColumnsState","GridBaseState","_dnd","_this$collectionDragA","collectionDragAndDropState","dnd","constructor","params","_params$range","_params$range2","_defineProperty2","default","undefined","origin","toolbar","toolbarBIReporter","onAddItemClick","items","onAddItemActionComplete","container","collection","parentState","layoutType","_containerRectState","RectState","_draggable","draggable","_responsiveColumnsState","ResponsiveColumnsState","gridState","minItemWidth","rectState","_sizePreset","sizePreset","_localLimit","range","length","_localStart","start","makeObservable","trailingItemsCount","observable","ref","forceRenderIndexes","preset","computed","itemsToRenderCount","itemsToRender","rowCount","isInteracting","calcGridProps","columnsCount","_sizeProps","itemKeyRecyclerOverride","itemsContentWidth","containerPaddingTop","gap","imagePlacement","contentPadding","aspectRatio","footerHeights","_this$_dnd","isDisabled","window","result","keyedItems","itemsCount","Math","min","fetchedLastPage","floor","reportBi","columnCount","containerRect","ceil","_this$_dnd2","_this$_dnd3","isActive","isDropping","Array","fill","getItemRenderTypeAt","index","indexInCollection","errorMonitor","responsiveColumnCount","width","widthWithLastColumnGap","widthWithoutGaps","columnWidth","cardFooterSize","cardFooterHeight","cardTopImageHeight","rowHeight","columnWidthIncludingGap","rowHeightIncludingGap","rowHeightFixed","itemsContentHeight","overscanCount","round","estimatedRowHeight","getCollectionSnapshot","_keyedItems$index","key","dragAndDropCategories","listAttributes","_this$_dnd4","nullAnnouncements","role","_subscribe","_subGrids","push","i","indexOf","splice","init","exports"],"sources":["../../../src/state/GridBaseState.ts"],"sourcesContent":["import {\n WixPatternsContainer,\n CollectionState,\n FiltersMap,\n} from '@wix/bex-core';\nimport { computed, makeObservable, observable } from 'mobx';\nimport {\n ToolbarCollectionState,\n ToolbarCollectionStateParamsInitParams,\n} from './ToolbarCollectionState';\nimport { CollectionDragAndDropState } from '../components/DragAndDrop';\nimport { RectState } from './RectState';\nimport { GridSizePreset } from './gridSizePresets';\nimport { ResponsiveColumnsState } from './ResponsiveColumnsState';\nimport { GridParentState } from './GridParentState';\nimport type { Preset } from '../components/Grid/Grid.types';\n\nexport type LayoutType = 'grid' | 'list';\n\nexport interface GridBaseStateParams<T, F extends FiltersMap> {\n readonly collection: CollectionState<T, F>;\n readonly container: WixPatternsContainer;\n readonly toolbar: ToolbarCollectionState<any, Partial<F>>;\n readonly sizePreset: GridSizePreset;\n readonly range?: { start: number; length: number };\n readonly layoutType: LayoutType | undefined;\n readonly parentState: GridParentState<T, F>;\n readonly draggable?: 'none' | 'draggable';\n}\n\nexport interface GridBaseStateInitParams\n extends ToolbarCollectionStateParamsInitParams {}\n\nexport class GridBaseState<T, F extends FiltersMap> {\n readonly toolbar;\n readonly container;\n readonly collection;\n readonly _containerRectState;\n readonly _responsiveColumnsState;\n readonly parentState;\n _sizePreset;\n layoutType;\n\n trailingItemsCount = 0;\n minItemWidth = 196;\n smallCardWidthThreshold = 200;\n preset: Preset = 'title';\n _draggable: 'none' | 'draggable' = 'none';\n _localLimit: number | null | undefined;\n _localStart: number;\n forceRenderIndexes: number[] | undefined = undefined;\n\n collectionDragAndDropState: CollectionDragAndDropState<T, F> | null = null;\n\n get _dnd() {\n return this.collectionDragAndDropState?.dnd;\n }\n\n constructor(params: GridBaseStateParams<T, F>) {\n this.container = params.container;\n this.collection = params.collection;\n this.parentState = params.parentState;\n this.layoutType = params.layoutType ?? 'grid';\n this._containerRectState = new RectState({\n container: this.container,\n });\n this._draggable = params.draggable ?? 'none';\n this.toolbar = params.toolbar as ToolbarCollectionState<\n unknown,\n Partial<F>\n >;\n this._responsiveColumnsState = new ResponsiveColumnsState({\n gridState: this,\n minItemWidth: this.minItemWidth,\n rectState: this._containerRectState,\n });\n this._sizePreset = params.sizePreset;\n this._localLimit = params.range?.length;\n this._localStart = params.range?.start ?? 0;\n\n makeObservable(this, {\n trailingItemsCount: observable.ref,\n forceRenderIndexes: observable.ref,\n preset: observable.ref,\n _draggable: observable.ref,\n draggable: computed,\n itemsToRenderCount: computed,\n itemsToRender: computed,\n rowCount: computed,\n isInteracting: computed,\n calcGridProps: computed,\n columnsCount: computed,\n _sizeProps: computed,\n itemKeyRecyclerOverride: computed,\n _localLimit: observable.ref,\n _localStart: observable.ref,\n itemsContentWidth: computed,\n containerPaddingTop: computed,\n gap: computed,\n _sizePreset: observable.ref,\n layoutType: observable.ref,\n });\n }\n\n get sizePreset() {\n return this.parentState._sizePreset ?? this._sizePreset;\n }\n\n get imagePlacement() {\n return this.sizePreset.imagePlacement;\n }\n\n get gap() {\n const { layoutType } = this;\n if (layoutType === 'list') {\n return 12;\n }\n\n return 24;\n }\n\n get containerPaddingTop() {\n const { layoutType } = this;\n if (layoutType === 'list') {\n return 0;\n }\n\n return this.toolbar.contentPadding;\n }\n\n get aspectRatio() {\n return this.sizePreset.aspectRatio;\n }\n\n get footerHeights() {\n return this.sizePreset.footerHeights;\n }\n\n get itemsContentWidth() {\n return this._responsiveColumnsState.itemsContentWidth;\n }\n\n get draggable() {\n if (this._dnd?.isDisabled) {\n return 'none' as const;\n }\n return this._draggable;\n }\n\n get window() {\n return this.container.window;\n }\n\n get itemsToRenderCount() {\n const { collection, trailingItemsCount, _localLimit, _localStart } = this;\n const {\n result: { keyedItems },\n } = collection;\n\n const itemsCount =\n _localLimit != null\n ? Math.min(_localLimit, keyedItems.length)\n : keyedItems.length;\n\n return collection.fetchedLastPage ||\n (_localLimit != null && _localStart + _localLimit < keyedItems.length)\n ? itemsCount + trailingItemsCount\n : itemsCount - Math.floor(itemsCount % this.columnsCount);\n }\n\n get reportBi() {\n return this.toolbar.reportBi;\n }\n\n get columnsCount() {\n return this.calcGridProps.columnCount;\n }\n\n get containerRect() {\n return this.toolbar.containerRect;\n }\n\n get rowCount() {\n const { itemsToRenderCount, columnsCount } = this;\n\n return Math.ceil(itemsToRenderCount / columnsCount);\n }\n\n get isInteracting() {\n return this._dnd?.isActive || this._dnd?.isDropping;\n }\n\n get itemsToRender(): null[] {\n const { itemsToRenderCount } = this;\n return new Array(itemsToRenderCount).fill(null);\n }\n\n getItemRenderTypeAt(index: number) {\n const { collection, itemsToRenderCount, _localStart } = this;\n const {\n result: { keyedItems },\n } = collection;\n\n if (index >= itemsToRenderCount) {\n return null;\n }\n\n const indexInCollection = index + _localStart;\n\n if (indexInCollection >= keyedItems.length) {\n return 'trailing';\n }\n\n return keyedItems[indexInCollection];\n }\n\n get errorMonitor() {\n return this.container.errorMonitor;\n }\n\n get _sizeProps() {\n const {\n aspectRatio,\n preset,\n draggable,\n _responsiveColumnsState: {\n gap,\n columnCount: responsiveColumnCount,\n itemsContentWidth: width,\n widthWithLastColumnGap,\n },\n layoutType,\n } = this;\n\n const columnCount = layoutType === 'list' ? 1 : responsiveColumnCount;\n\n const widthWithoutGaps = width - (columnCount - 1) * gap;\n const columnWidth = widthWithoutGaps / columnCount;\n\n const cardFooterSize = 'small' as const;\n\n const cardFooterHeight =\n this.footerHeights[preset][draggable][cardFooterSize];\n const cardTopImageHeight = columnWidth * aspectRatio;\n const rowHeight =\n cardTopImageHeight + (cardFooterHeight > 0 ? cardFooterHeight + 1 : 0);\n\n const columnWidthIncludingGap = widthWithLastColumnGap / columnCount;\n const rowHeightIncludingGap = rowHeight + gap;\n\n return {\n columnCount,\n columnWidth: () => columnWidth,\n columnWidthIncludingGap: () => columnWidthIncludingGap,\n rowHeight: () => rowHeight,\n rowHeightFixed: rowHeight,\n cardTopImageHeight,\n rowHeightIncludingGap: () => rowHeightIncludingGap,\n cardFooterHeight,\n cardFooterSize,\n };\n }\n\n get calcGridProps() {\n const {\n toolbar: { itemsContentHeight },\n _sizeProps: { rowHeightFixed, rowHeightIncludingGap },\n } = this;\n\n const overscanCount = Math.round(\n (itemsContentHeight / rowHeightFixed) * 1.5,\n );\n\n return {\n ...this._sizeProps,\n estimatedRowHeight: rowHeightIncludingGap(),\n overscanCount,\n };\n }\n\n get getCollectionSnapshot() {\n return this.toolbar.getCollectionSnapshot;\n }\n\n onAddItemClick = (origin?: string) => {\n this.toolbar.toolbarBIReporter.onAddItemClick(origin);\n };\n\n onAddItemActionComplete = async (items: T[]) => {\n return this.toolbar.onAddItemActionComplete(items);\n };\n\n get itemKeyRecyclerOverride() {\n const { collection } = this;\n const {\n result: { keyedItems },\n } = collection;\n return (index: number) => {\n return keyedItems[index]?.key ?? index;\n };\n }\n\n get dragAndDropCategories() {\n return this.toolbar.dragAndDropCategories;\n }\n\n get listAttributes() {\n return {\n ...this._dnd?.nullAnnouncements.listAttributes?.(),\n role: 'list',\n };\n }\n\n _subscribe() {\n const {\n parentState: { _subGrids },\n } = this;\n\n if (!_subGrids) {\n return;\n }\n\n _subGrids.push(this);\n\n return () => {\n const i = _subGrids.indexOf(this);\n i !== -1 && _subGrids.splice(i, 1);\n };\n }\n\n init() {\n return this._subscribe();\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -41,31 +41,43 @@ function toValidationRules(field, translate) {
41
41
  });
42
42
  }
43
43
  if (((_v$numberRange = v.numberRange) == null ? void 0 : _v$numberRange.min) != null) {
44
+ const min = v.numberRange.min;
44
45
  rules.push({
45
46
  type: 'min',
46
- value: v.numberRange.min,
47
- message: ''
47
+ value: min,
48
+ message: translate('cairo.editableTable.field.validation.min', {
49
+ min
50
+ })
48
51
  });
49
52
  }
50
53
  if (((_v$numberRange2 = v.numberRange) == null ? void 0 : _v$numberRange2.max) != null) {
54
+ const max = v.numberRange.max;
51
55
  rules.push({
52
56
  type: 'max',
53
- value: v.numberRange.max,
54
- message: ''
57
+ value: max,
58
+ message: translate('cairo.editableTable.field.validation.max', {
59
+ max
60
+ })
55
61
  });
56
62
  }
57
63
  if (((_v$stringLengthRange = v.stringLengthRange) == null ? void 0 : _v$stringLengthRange.minLength) != null) {
64
+ const minLength = v.stringLengthRange.minLength;
58
65
  rules.push({
59
66
  type: 'minLength',
60
- value: v.stringLengthRange.minLength,
61
- message: ''
67
+ value: minLength,
68
+ message: translate('cairo.editableTable.field.validation.minLength', {
69
+ minLength
70
+ })
62
71
  });
63
72
  }
64
73
  if (((_v$stringLengthRange2 = v.stringLengthRange) == null ? void 0 : _v$stringLengthRange2.maxLength) != null) {
74
+ const maxLength = v.stringLengthRange.maxLength;
65
75
  rules.push({
66
76
  type: 'maxLength',
67
- value: v.stringLengthRange.maxLength,
68
- message: ''
77
+ value: maxLength,
78
+ message: translate('cairo.editableTable.field.validation.maxLength', {
79
+ maxLength
80
+ })
69
81
  });
70
82
  }
71
83
  // A pattern the platform refuses to run (uncompilable, over-long, or able to